diff --git a/browser-client-react/package-lock.json b/browser-client-react/package-lock.json index 4dbc398..19dd833 100644 --- a/browser-client-react/package-lock.json +++ b/browser-client-react/package-lock.json @@ -8,8 +8,8 @@ "name": "browser-client-react", "version": "3.2.0", "dependencies": { - "@interopio/browser": "^3.2.0", - "@interopio/react-hooks": "^3.2.0", + "@interopio/browser": "^3.3.1", + "@interopio/react-hooks": "^3.3.1", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -2212,115 +2212,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@glue42/gateway-web": { - "version": "3.0.19", - "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", - "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" - }, - "node_modules/@glue42/schemas": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@glue42/schemas/-/schemas-3.22.0.tgz", - "integrity": "sha512-4eC3oIci6o09DIPYwvGCHSaGHdNPqDDnqByh0XuiOw/lA6rlZii4HfamqbCYhytEZ58dqAdyTDqyqVNnEVBuQA==", - "dependencies": { - "ajv": "^6.12.6", - "ajv-keywords": "^3.4.1" - }, - "peerDependencies": { - "log4js": "^6.4.2" - }, - "peerDependenciesMeta": { - "log4js": { - "optional": true - } - } - }, - "node_modules/@glue42/server-api": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", - "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", - "dependencies": { - "@glue42/schemas": "^3.18.0", - "@types/request": "^2.48.8", - "axios": "^1.6.2", - "form-data": "^4.0.0", - "jwt-decode": "^3.1.2", - "rimraf": "^5.0.5", - "typescript": "^4.2.4" - } - }, - "node_modules/@glue42/server-api/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@glue42/server-api/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@glue42/server-api/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@glue42/server-api/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@glue42/server-api/node_modules/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "license": "Apache-2.0", @@ -2349,95 +2240,41 @@ "license": "BSD-3-Clause" }, "node_modules/@interopio/browser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", - "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.3.1.tgz", + "integrity": "sha512-emoQNOItICL9RFp3gpxKvpcCnM+lvlV9zxz1Adzo//uwcmwNJLGuEmQyqLYc3eSw65bdX/PjXJ+ZtQL482zElw==", "dependencies": { - "@interopio/core": "^6.2.0", + "@interopio/core": "^6.3.1", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.6.0", - "decoder-validate": "0.0.2", - "idb": "^7.1.1", - "nanoid": "^4.0.0", - "shortid": "^2.2.16" + "@interopio/search-api": "^2.3.1", + "@interopio/widget": "^1.0.1", + "@interopio/workspaces-api": "^3.3.1", + "callback-registry": "^2.7.2" } }, "node_modules/@interopio/browser-platform": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", - "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.3.1.tgz", + "integrity": "sha512-LMLVq4EWkqlxq4Z9BDEyoKizuKZbOAXfqMNCMTCkXjr46qZ/wGSo1L9NA+9L+A5xoXKkRv9aHhr1CGW3BWUeww==", "dependencies": { - "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.6.3", - "@interopio/browser": "^3.2.0", - "@interopio/core": "^6.2.0", - "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.7.1", - "decoder-validate": "0.0.2", - "deep-equal": "^2.1.0", - "deepmerge": "^4.2.2", - "fast-deep-equal": "^3.1.3", - "idb": "^7.1.1", - "jsrsasign": "^10.8.6", - "nanoid": "^4.0.0", - "shortid": "^2.2.16", - "ua-parser-js": "^1.0.35" - } - }, - "node_modules/@interopio/browser-platform/node_modules/nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^14 || ^16 || >=18" - } - }, - "node_modules/@interopio/browser/node_modules/nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^14 || ^16 || >=18" + "@interopio/browser": "^3.3.1", + "@interopio/core": "^6.3.1", + "@interopio/desktop": "^6.0.1" } }, "node_modules/@interopio/core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", - "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.3.1.tgz", + "integrity": "sha512-qTNZ7zMAi8uElLHy4V76ugP7PgrA/hAaNi9ic3ibs8rt3jzmh2cdBmQTIdGEajlunShFZSV7rJKmj/laHL7etw==", "dependencies": { "callback-registry": "^2.7.2", - "shortid": "^2.2.16", "ws": "^8.12.1" } }, "node_modules/@interopio/core/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "engines": { "node": ">=10.0.0" }, @@ -2455,24 +2292,24 @@ } }, "node_modules/@interopio/desktop": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", - "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.4.0.tgz", + "integrity": "sha512-dMBArfT1nVWkyFtdA9cSJHOU9EKyac6K+F/xEwqdjfIqlcNIWtf9XDDImZYiONNxMz7oCxrAGJHwNkR0ZYjwRA==", "dependencies": { - "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.1.0", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/core": "^6.2.1", + "@interopio/schemas": "^9.3.0", + "@interopio/workspaces-api": "^3.2.1", "callback-registry": "^2.7.1", "nanoid": "^3.3.7" } }, "node_modules/@interopio/react-hooks": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", - "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.3.1.tgz", + "integrity": "sha512-CXQJqSuqLbeajAH0uF3vKQJqcZfb0iEzV7Cg9yyu/XXOFQGbonUxijDvtRduV5dmxFn2gZRJNjsXEld3q8tUlQ==", "dependencies": { - "@interopio/browser": "^3.2.0", - "@interopio/browser-platform": "^3.2.0", + "@interopio/browser": "^3.3.1", + "@interopio/browser-platform": "^3.3.1", "@interopio/desktop": "^6.0.1", "prop-types": "^15.7.2" }, @@ -2489,69 +2326,40 @@ } } }, - "node_modules/@interopio/search-api": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", - "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", + "node_modules/@interopio/schemas": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@interopio/schemas/-/schemas-9.3.0.tgz", + "integrity": "sha512-LSZHxB4CZAeoPCywKpqzWHhiJQYHhmhhKYGnFibFOGx9ADlp4hRKOuX3q97DTBJ6/p1gNkByMH/NTjyDTDKjTg==", "dependencies": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" - } - }, - "node_modules/@interopio/search-api/node_modules/nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" + "ajv": "^6.12.6", + "ajv-keywords": "^3.4.1" }, - "engines": { - "node": "^14 || ^16 || >=18" + "peerDependencies": { + "log4js": "^6.4.2" + }, + "peerDependenciesMeta": { + "log4js": { + "optional": true + } } }, - "node_modules/@interopio/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", + "node_modules/@interopio/search-api": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.3.1.tgz", + "integrity": "sha512-z3Gc4VDnCi37wN0RwZT/0CfdrkUUy7rtOcwHErHQiYq209dRrMuYvM9RJkLwBslZ7h6zqCwfedu3uSAmG+Cjew==", "dependencies": { - "decoder-validate": "^0.0.2" + "@interopio/core": "^6.3.1" } }, - "node_modules/@interopio/workspaces-api": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", - "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", - "dependencies": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" - } + "node_modules/@interopio/widget": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@interopio/widget/-/widget-1.0.1.tgz", + "integrity": "sha512-TmQ2850w4jyjJ+dbhnzqs3HssFRH9LQQlXNebaUYMrdmZQYhPYbCrgdIrrN8BUhuV0/gxjKHfdAb1U1EthInLw==" }, - "node_modules/@interopio/workspaces-api/node_modules/nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^14 || ^16 || >=18" - } + "node_modules/@interopio/workspaces-api": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.3.1.tgz", + "integrity": "sha512-9huXU5MH71WkuHBOO3f6ttLtmQX6Q+/H9TO/LehKqynLmeA8R5ZUp508dKT8fa0Ek4CTQsmv0c4gpjNCFddmeg==" }, "node_modules/@isaacs/cliui": { "version": "8.0.2", @@ -4043,11 +3851,6 @@ "@types/node": "*" } }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, "node_modules/@types/connect": { "version": "3.4.38", "license": "MIT", @@ -4214,30 +4017,6 @@ "@types/react": "*" } }, - "node_modules/@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/request/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/@types/resolve": { "version": "1.17.1", "license": "MIT", @@ -4299,11 +4078,6 @@ "@types/jest": "*" } }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, "node_modules/@types/trusted-types": { "version": "2.0.7", "license": "MIT" @@ -5097,29 +4871,6 @@ "node": ">=4" } }, - "node_modules/axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", - "dependencies": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/axobject-query": { "version": "3.2.1", "license": "Apache-2.0", @@ -6389,11 +6140,6 @@ "version": "10.4.3", "license": "MIT" }, - "node_modules/decoder-validate": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/decoder-validate/-/decoder-validate-0.0.2.tgz", - "integrity": "sha512-9BsqAH9Zq6CvlxKHkSrZrH2iYlhuhHcrh6uTnDvcsa9P5YEweEzt1ci+X/9STgSCE7b9BA7/QIiwhfUDDWmjxw==" - }, "node_modules/dedent": { "version": "0.7.0", "license": "MIT" @@ -11255,14 +11001,6 @@ "node": ">=0.10.0" } }, - "node_modules/jsrsasign": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", - "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==", - "funding": { - "url": "https://github.com/kjur/jsrsasign#donations" - } - }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "license": "MIT", @@ -11276,11 +11014,6 @@ "node": ">=4.0" } }, - "node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, "node_modules/keyv": { "version": "4.5.4", "license": "MIT", @@ -13531,11 +13264,6 @@ "node": ">= 0.10" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "node_modules/psl": { "version": "1.9.0", "license": "MIT" @@ -14605,20 +14333,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shortid": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz", - "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dependencies": { - "nanoid": "^2.1.0" - } - }, - "node_modules/shortid/node_modules/nanoid": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", - "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" - }, "node_modules/side-channel": { "version": "1.0.4", "license": "MIT", @@ -15685,28 +15399,6 @@ "node": ">=4.2.0" } }, - "node_modules/ua-parser-js": { - "version": "1.0.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", - "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "engines": { - "node": "*" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "license": "MIT", @@ -18004,82 +17696,6 @@ "@eslint/js": { "version": "8.56.0" }, - "@glue42/gateway-web": { - "version": "3.0.19", - "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", - "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" - }, - "@glue42/schemas": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@glue42/schemas/-/schemas-3.22.0.tgz", - "integrity": "sha512-4eC3oIci6o09DIPYwvGCHSaGHdNPqDDnqByh0XuiOw/lA6rlZii4HfamqbCYhytEZ58dqAdyTDqyqVNnEVBuQA==", - "requires": { - "ajv": "^6.12.6", - "ajv-keywords": "^3.4.1" - } - }, - "@glue42/server-api": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", - "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", - "requires": { - "@glue42/schemas": "^3.18.0", - "@types/request": "^2.48.8", - "axios": "^1.6.2", - "form-data": "^4.0.0", - "jwt-decode": "^3.1.2", - "rimraf": "^5.0.5", - "typescript": "^4.2.4" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "requires": { - "glob": "^10.3.7" - } - } - } - }, "@humanwhocodes/config-array": { "version": "0.11.14", "requires": { @@ -18095,145 +17711,94 @@ "version": "2.0.2" }, "@interopio/browser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", - "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.3.1.tgz", + "integrity": "sha512-emoQNOItICL9RFp3gpxKvpcCnM+lvlV9zxz1Adzo//uwcmwNJLGuEmQyqLYc3eSw65bdX/PjXJ+ZtQL482zElw==", "requires": { - "@interopio/core": "^6.2.0", + "@interopio/core": "^6.3.1", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.6.0", - "decoder-validate": "0.0.2", - "idb": "^7.1.1", - "nanoid": "^4.0.0", - "shortid": "^2.2.16" - }, - "dependencies": { - "nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" - } + "@interopio/search-api": "^2.3.1", + "@interopio/widget": "^1.0.1", + "@interopio/workspaces-api": "^3.3.1", + "callback-registry": "^2.7.2" } }, "@interopio/browser-platform": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", - "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.3.1.tgz", + "integrity": "sha512-LMLVq4EWkqlxq4Z9BDEyoKizuKZbOAXfqMNCMTCkXjr46qZ/wGSo1L9NA+9L+A5xoXKkRv9aHhr1CGW3BWUeww==", "requires": { - "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.6.3", - "@interopio/browser": "^3.2.0", - "@interopio/core": "^6.2.0", - "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.7.1", - "decoder-validate": "0.0.2", - "deep-equal": "^2.1.0", - "deepmerge": "^4.2.2", - "fast-deep-equal": "^3.1.3", - "idb": "^7.1.1", - "jsrsasign": "^10.8.6", - "nanoid": "^4.0.0", - "shortid": "^2.2.16", - "ua-parser-js": "^1.0.35" - }, - "dependencies": { - "nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" - } + "@interopio/browser": "^3.3.1", + "@interopio/core": "^6.3.1", + "@interopio/desktop": "^6.0.1" } }, "@interopio/core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", - "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.3.1.tgz", + "integrity": "sha512-qTNZ7zMAi8uElLHy4V76ugP7PgrA/hAaNi9ic3ibs8rt3jzmh2cdBmQTIdGEajlunShFZSV7rJKmj/laHL7etw==", "requires": { "callback-registry": "^2.7.2", - "shortid": "^2.2.16", "ws": "^8.12.1" }, "dependencies": { "ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "requires": {} } } }, "@interopio/desktop": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", - "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.4.0.tgz", + "integrity": "sha512-dMBArfT1nVWkyFtdA9cSJHOU9EKyac6K+F/xEwqdjfIqlcNIWtf9XDDImZYiONNxMz7oCxrAGJHwNkR0ZYjwRA==", "requires": { - "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.1.0", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/core": "^6.2.1", + "@interopio/schemas": "^9.3.0", + "@interopio/workspaces-api": "^3.2.1", "callback-registry": "^2.7.1", "nanoid": "^3.3.7" } }, "@interopio/react-hooks": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", - "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.3.1.tgz", + "integrity": "sha512-CXQJqSuqLbeajAH0uF3vKQJqcZfb0iEzV7Cg9yyu/XXOFQGbonUxijDvtRduV5dmxFn2gZRJNjsXEld3q8tUlQ==", "requires": { - "@interopio/browser": "^3.2.0", - "@interopio/browser-platform": "^3.2.0", + "@interopio/browser": "^3.3.1", + "@interopio/browser-platform": "^3.3.1", "@interopio/desktop": "^6.0.1", "prop-types": "^15.7.2" } }, - "@interopio/search-api": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", - "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", + "@interopio/schemas": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@interopio/schemas/-/schemas-9.3.0.tgz", + "integrity": "sha512-LSZHxB4CZAeoPCywKpqzWHhiJQYHhmhhKYGnFibFOGx9ADlp4hRKOuX3q97DTBJ6/p1gNkByMH/NTjyDTDKjTg==", "requires": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" - }, - "dependencies": { - "nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" - } + "ajv": "^6.12.6", + "ajv-keywords": "^3.4.1" } }, - "@interopio/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", + "@interopio/search-api": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.3.1.tgz", + "integrity": "sha512-z3Gc4VDnCi37wN0RwZT/0CfdrkUUy7rtOcwHErHQiYq209dRrMuYvM9RJkLwBslZ7h6zqCwfedu3uSAmG+Cjew==", "requires": { - "decoder-validate": "^0.0.2" + "@interopio/core": "^6.3.1" } }, + "@interopio/widget": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@interopio/widget/-/widget-1.0.1.tgz", + "integrity": "sha512-TmQ2850w4jyjJ+dbhnzqs3HssFRH9LQQlXNebaUYMrdmZQYhPYbCrgdIrrN8BUhuV0/gxjKHfdAb1U1EthInLw==" + }, "@interopio/workspaces-api": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", - "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", - "requires": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" - }, - "dependencies": { - "nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" - } - } + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.3.1.tgz", + "integrity": "sha512-9huXU5MH71WkuHBOO3f6ttLtmQX6Q+/H9TO/LehKqynLmeA8R5ZUp508dKT8fa0Ek4CTQsmv0c4gpjNCFddmeg==" }, "@isaacs/cliui": { "version": "8.0.2", @@ -19119,11 +18684,6 @@ "@types/node": "*" } }, - "@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, "@types/connect": { "version": "3.4.38", "requires": { @@ -19262,29 +18822,6 @@ "@types/react": "*" } }, - "@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "requires": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - }, - "dependencies": { - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - } - } - }, "@types/resolve": { "version": "1.17.1", "requires": { @@ -19336,11 +18873,6 @@ "@types/jest": "*" } }, - "@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, "@types/trusted-types": { "version": "2.0.7" }, @@ -19811,28 +19343,6 @@ "axe-core": { "version": "4.7.0" }, - "axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", - "requires": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - }, - "dependencies": { - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } - } - }, "axobject-query": { "version": "3.2.1", "requires": { @@ -20587,11 +20097,6 @@ "decimal.js": { "version": "10.4.3" }, - "decoder-validate": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/decoder-validate/-/decoder-validate-0.0.2.tgz", - "integrity": "sha512-9BsqAH9Zq6CvlxKHkSrZrH2iYlhuhHcrh6uTnDvcsa9P5YEweEzt1ci+X/9STgSCE7b9BA7/QIiwhfUDDWmjxw==" - }, "dedent": { "version": "0.7.0" }, @@ -23517,11 +23022,6 @@ "jsonpointer": { "version": "5.0.1" }, - "jsrsasign": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", - "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==" - }, "jsx-ast-utils": { "version": "3.3.5", "requires": { @@ -23531,11 +23031,6 @@ "object.values": "^1.1.6" } }, - "jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, "keyv": { "version": "4.5.4", "requires": { @@ -24709,11 +24204,6 @@ } } }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "psl": { "version": "1.9.0" }, @@ -25361,21 +24851,6 @@ "shell-quote": { "version": "1.8.1" }, - "shortid": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz", - "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==", - "requires": { - "nanoid": "^2.1.0" - }, - "dependencies": { - "nanoid": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", - "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" - } - } - }, "side-channel": { "version": "1.0.4", "requires": { @@ -26038,11 +25513,6 @@ "typescript": { "version": "4.9.5" }, - "ua-parser-js": { - "version": "1.0.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", - "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==" - }, "unbox-primitive": { "version": "1.0.2", "requires": { diff --git a/browser-client-react/package.json b/browser-client-react/package.json index dbb7076..f87ef1a 100644 --- a/browser-client-react/package.json +++ b/browser-client-react/package.json @@ -1,10 +1,10 @@ { "name": "browser-client-react", - "version": "3.2.0", + "version": "3.3.0", "private": true, "dependencies": { - "@interopio/browser": "^3.2.0", - "@interopio/react-hooks": "^3.2.0", + "@interopio/browser": "^3.3.1", + "@interopio/react-hooks": "^3.3.1", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", diff --git a/browser-client-vanilla-js/package.json b/browser-client-vanilla-js/package.json index 4b052ef..b744b1b 100644 --- a/browser-client-vanilla-js/package.json +++ b/browser-client-vanilla-js/package.json @@ -1,6 +1,6 @@ { "name": "browser-client-vanilla-js", - "version": "3.2.0", + "version": "3.3.0", "description": "", "main": "index.js", "scripts": { diff --git a/browser-client-vanilla-js/public/libs/browser.es.js b/browser-client-vanilla-js/public/libs/browser.es.js index 15e6bd3..8bff937 100644 --- a/browser-client-vanilla-js/public/libs/browser.es.js +++ b/browser-client-vanilla-js/public/libs/browser.es.js @@ -1,40 +1,3 @@ -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - -function __rest$2(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; -} - -function __awaiter$1(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - const defaultConfig = { logger: "info", gateway: { webPlatform: {} }, @@ -42,11 +5,10 @@ const defaultConfig = { exposeAPI: true }; const parseConfig = (config) => { - var _a, _b, _c; - const isPlatformInternal = !!((_b = (_a = config === null || config === void 0 ? void 0 : config.gateway) === null || _a === void 0 ? void 0 : _a.webPlatform) === null || _b === void 0 ? void 0 : _b.port); + const isPlatformInternal = !!config?.gateway?.webPlatform?.port; const combined = Object.assign({}, defaultConfig, config, { isPlatformInternal }); if (combined.systemLogger) { - combined.logger = (_c = combined.systemLogger.level) !== null && _c !== void 0 ? _c : "info"; + combined.logger = combined.systemLogger.level ?? "info"; } return combined; }; @@ -64,14 +26,13 @@ const checkSingleton = () => { }; const enterprise = (config) => { - var _a, _b, _c; const enterpriseConfig = { windows: true, layouts: "full", appManager: "full", channels: true, - libraries: (_a = config === null || config === void 0 ? void 0 : config.libraries) !== null && _a !== void 0 ? _a : [], - logger: (_c = (_b = config === null || config === void 0 ? void 0 : config.systemLogger) === null || _b === void 0 ? void 0 : _b.level) !== null && _c !== void 0 ? _c : "warn" + libraries: config?.libraries ?? [], + logger: config?.systemLogger?.level ?? "warn" }; const injectedFactory = window.IODesktop || window.Glue; return injectedFactory(enterpriseConfig); @@ -183,15 +144,15 @@ PERFORMANCE OF THIS SOFTWARE. -var __assign$2 = function() { - __assign$2 = Object.assign || function __assign(t) { +var __assign$1 = function() { + __assign$1 = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; - return __assign$2.apply(this, arguments); + return __assign$1.apply(this, arguments); }; function __rest$1(s, e) { @@ -287,7 +248,7 @@ var printPath$1 = function (paths) { }; var prependAt$1 = function (newAt, _a) { var at = _a.at, rest = __rest$1(_a, ["at"]); - return (__assign$2({ at: newAt + (at || '') }, rest)); + return (__assign$1({ at: newAt + (at || '') }, rest)); }; /** * Decoders transform json objects with unknown structure into known and @@ -967,15 +928,15 @@ PERFORMANCE OF THIS SOFTWARE. -var __assign$1 = function() { - __assign$1 = Object.assign || function __assign(t) { +var __assign = function() { + __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; - return __assign$1.apply(this, arguments); + return __assign.apply(this, arguments); }; function __rest(s, e) { @@ -1071,7 +1032,7 @@ var printPath = function (paths) { }; var prependAt = function (newAt, _a) { var at = _a.at, rest = __rest(_a, ["at"]); - return (__assign$1({ at: newAt + (at || '') }, rest)); + return (__assign({ at: newAt + (at || '') }, rest)); }; /** * Decoders transform json objects with unknown structure into known and @@ -1711,7 +1672,8 @@ const glue42HostManifestsBrowserDecoder = object({ hidden: optional(boolean()) }); const hostManifestsBrowserDecoder = oneOf(object({ - "Glue42": oneOf(glue42HostManifestsBrowserDecoder, anyJson()) + "ioConnect": optional(oneOf(glue42HostManifestsBrowserDecoder, anyJson())), + "Glue42": optional(oneOf(glue42HostManifestsBrowserDecoder, anyJson())) }), anyJson()); const v1DefinitionDecoder = object({ name: nonEmptyStringDecoder$1, @@ -1779,15 +1741,13 @@ const parseDecoderErrorToStringMessage = (error) => { }; class FDC3Service { - constructor() { - this.fdc3ToDesktopDefinitionType = { - web: "window", - native: "exe", - citrix: "citrix", - onlineNative: "clickonce", - other: "window" - }; - } + fdc3ToDesktopDefinitionType = { + web: "window", + native: "exe", + citrix: "citrix", + onlineNative: "clickonce", + other: "window" + }; toApi() { return { isFdc3Definition: this.isFdc3Definition.bind(this), @@ -1809,7 +1769,6 @@ class FDC3Service { return { isFdc3: false, reason: "The passed definition is not FDC3" }; } parseToBrowserBaseAppData(definition) { - var _a; const { isFdc3, version } = this.isFdc3Definition(definition); if (!isFdc3) { throw new Error("The passed definition is not FDC3"); @@ -1820,33 +1779,37 @@ class FDC3Service { } const userProperties = this.getUserPropertiesFromDefinition(definition, version); const createOptions = { url: this.getUrl(definition, version) }; - let baseApplicationData = { + const baseApplicationData = { name: definition.appId, type: "window", createOptions, - userProperties: Object.assign(Object.assign({}, userProperties), { intents: version === "1.2" + userProperties: { + ...userProperties, + intents: version === "1.2" ? userProperties.intents - : this.getIntentsFromV2AppDefinition(definition), details: createOptions }), + : this.getIntentsFromV2AppDefinition(definition), + details: createOptions + }, title: definition.title, version: definition.version, icon: this.getIconFromDefinition(definition, version), caption: definition.description, - fdc3: version === "2.0" ? Object.assign(Object.assign({}, definition), { definitionVersion: "2.0" }) : undefined, + fdc3: version === "2.0" ? { ...definition, definitionVersion: "2.0" } : undefined, }; - if ((_a = definition.hostManifests) === null || _a === void 0 ? void 0 : _a["Glue42"]) { - const decodeRes = glue42HostManifestsBrowserDecoder.run(definition.hostManifests["Glue42"]); - if (!decodeRes.ok) { - throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`); - } - if (!Object.keys(decodeRes.result).length) { - throw new Error("Invalid 'hostManifests['Glue42]' key"); - } - baseApplicationData = this.mergeBaseAppDataWithGlueManifest(baseApplicationData, decodeRes.result); + const ioConnectDefinition = definition.hostManifests?.ioConnect || definition.hostManifests?.["Glue42"]; + if (!ioConnectDefinition) { + return baseApplicationData; + } + const ioDefinitionDecodeRes = glue42HostManifestsBrowserDecoder.run(ioConnectDefinition); + if (!ioDefinitionDecodeRes.ok) { + throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(ioDefinitionDecodeRes.error)}`); + } + if (!Object.keys(ioDefinitionDecodeRes.result).length) { + return baseApplicationData; } - return baseApplicationData; + return this.mergeBaseAppDataWithGlueManifest(baseApplicationData, ioDefinitionDecodeRes.result); } parseToDesktopAppConfig(definition) { - var _a, _b, _c; const { isFdc3, version } = this.isFdc3Definition(definition); if (!isFdc3) { throw new Error("The passed definition is not FDC3"); @@ -1867,7 +1830,7 @@ class FDC3Service { title: fdc3v1Definition.title, tooltip: fdc3v1Definition.tooltip, caption: fdc3v1Definition.description, - icon: (_a = fdc3v1Definition.icons) === null || _a === void 0 ? void 0 : _a[0].icon, + icon: fdc3v1Definition.icons?.[0].icon, intents: fdc3v1Definition.intents, customProperties: { manifestType: fdc3v1Definition.manifestType, @@ -1881,7 +1844,7 @@ class FDC3Service { }; } const fdc3v2Definition = definition; - let desktopDefinition = { + const desktopDefinition = { name: fdc3v2Definition.appId, type: this.fdc3ToDesktopDefinitionType[fdc3v2Definition.type], details: fdc3v2Definition.details, @@ -1891,15 +1854,16 @@ class FDC3Service { caption: fdc3v2Definition.description, icon: this.getIconFromDefinition(fdc3v2Definition, "2.0"), intents: this.getIntentsFromV2AppDefinition(fdc3v2Definition), - fdc3: Object.assign(Object.assign({}, fdc3v2Definition), { definitionVersion: "2.0" }) + fdc3: { ...fdc3v2Definition, definitionVersion: "2.0" } }; - if ((_b = fdc3v2Definition.hostManifests) === null || _b === void 0 ? void 0 : _b["Glue42"]) { - if (typeof fdc3v2Definition.hostManifests["Glue42"] !== "object" || Array.isArray(fdc3v2Definition.hostManifests["Glue42"])) { - throw new Error("Invalid 'hostManifests['Glue42]' key"); - } - desktopDefinition = this.mergeDesktopConfigWithGlueManifest(desktopDefinition, (_c = fdc3v2Definition.hostManifests) === null || _c === void 0 ? void 0 : _c["Glue42"]); + const ioConnectDefinition = definition.hostManifests?.ioConnect || definition.hostManifests?.["Glue42"]; + if (!ioConnectDefinition) { + return desktopDefinition; + } + if (typeof ioConnectDefinition !== "object" || Array.isArray(ioConnectDefinition)) { + throw new Error(`Invalid '${definition.hostManifests.ioConnect ? "hostManifests.ioConnect" : "hostManifests['Glue42']"}' key`); } - return desktopDefinition; + return this.mergeDesktopConfigWithGlueManifest(desktopDefinition, ioConnectDefinition); } getUserPropertiesFromDefinition(definition, version) { if (version === "1.2") { @@ -1908,14 +1872,13 @@ class FDC3Service { return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key) && !fdc3v2AppProps.includes(key))); } getUrl(definition, version) { - var _a, _b; let url; if (version === "1.2") { const parsedManifest = JSON.parse(definition.manifest); - url = ((_a = parsedManifest.details) === null || _a === void 0 ? void 0 : _a.url) || parsedManifest.url; + url = parsedManifest.details?.url || parsedManifest.url; } else { - url = (_b = definition.details) === null || _b === void 0 ? void 0 : _b.url; + url = definition.details?.url; } if (!url || typeof url !== "string") { throw new Error(`Invalid FDC3 ${version} definition. Provide valid 'url' under '${version === "1.2" ? "manifest" : "details"}' key`); @@ -1923,41 +1886,42 @@ class FDC3Service { return url; } getIntentsFromV2AppDefinition(definition) { - var _a, _b; - const fdc3Intents = (_b = (_a = definition.interop) === null || _a === void 0 ? void 0 : _a.intents) === null || _b === void 0 ? void 0 : _b.listensFor; + const fdc3Intents = definition.interop?.intents?.listensFor; if (!fdc3Intents) { return; } const intents = Object.entries(fdc3Intents).map((fdc3Intent) => { const [intentName, intentData] = fdc3Intent; - return Object.assign({ name: intentName }, intentData); + return { + name: intentName, + ...intentData + }; }); return intents; } getIconFromDefinition(definition, version) { - var _a, _b, _c, _d; if (version === "1.2") { - return ((_b = (_a = definition.icons) === null || _a === void 0 ? void 0 : _a.find((iconDef) => iconDef.icon)) === null || _b === void 0 ? void 0 : _b.icon) || undefined; + return definition.icons?.find((iconDef) => iconDef.icon)?.icon || undefined; } - return ((_d = (_c = definition.icons) === null || _c === void 0 ? void 0 : _c.find((iconDef) => iconDef.src)) === null || _d === void 0 ? void 0 : _d.src) || undefined; + return definition.icons?.find((iconDef) => iconDef.src)?.src || undefined; } mergeBaseAppDataWithGlueManifest(baseAppData, hostManifestDefinition) { let baseApplicationDefinition = baseAppData; if (hostManifestDefinition.details) { - const details = Object.assign(Object.assign({}, baseAppData.createOptions), hostManifestDefinition.details); + const details = { ...baseAppData.createOptions, ...hostManifestDefinition.details }; baseApplicationDefinition.createOptions = details; baseApplicationDefinition.userProperties.details = details; } if (Array.isArray(hostManifestDefinition.intents)) { baseApplicationDefinition.userProperties.intents = (baseApplicationDefinition.userProperties.intents || []).concat(hostManifestDefinition.intents); } - baseApplicationDefinition = Object.assign(Object.assign({}, baseApplicationDefinition), hostManifestDefinition); + baseApplicationDefinition = { ...baseApplicationDefinition, ...hostManifestDefinition }; delete baseApplicationDefinition.details; delete baseApplicationDefinition.intents; return baseApplicationDefinition; } mergeDesktopConfigWithGlueManifest(config, desktopDefinition) { - const appConfig = Object.assign({}, config, desktopDefinition, { details: Object.assign(Object.assign({}, config.details), desktopDefinition.details) }); + const appConfig = Object.assign({}, config, desktopDefinition, { details: { ...config.details, ...desktopDefinition.details } }); if (Array.isArray(desktopDefinition.intents)) { appConfig.intents = (config.intents || []).concat(desktopDefinition.intents); } @@ -1993,12 +1957,11 @@ var INTENTS_ERRORS; })(INTENTS_ERRORS || (INTENTS_ERRORS = {})); let IoC$1 = class IoC { - constructor() { - this._decoders = decoders$1; - this._errors = { - intents: INTENTS_ERRORS - }; - } + _fdc3; + _decoders = decoders$1; + _errors = { + intents: INTENTS_ERRORS + }; get fdc3() { if (!this._fdc3) { this._fdc3 = new FDC3Service().toApi(); @@ -2024,7 +1987,7 @@ const optionalNonEmptyStringDecoder = optional$1(nonEmptyStringDecoder); const libDomainDecoder = oneOf$1(constant$1("system"), constant$1("windows"), constant$1("appManager"), constant$1("layouts"), constant$1("intents"), constant$1("notifications"), constant$1("channels"), constant$1("extension"), constant$1("themes"), constant$1("prefs")); const windowOperationTypesDecoder = oneOf$1(constant$1("openWindow"), constant$1("windowHello"), constant$1("windowAdded"), constant$1("windowRemoved"), constant$1("getBounds"), constant$1("getFrameBounds"), constant$1("getUrl"), constant$1("moveResize"), constant$1("focus"), constant$1("close"), constant$1("getTitle"), constant$1("setTitle"), constant$1("focusChange"), constant$1("getChannel")); const appManagerOperationTypesDecoder = oneOf$1(constant$1("appHello"), constant$1("appDirectoryStateChange"), constant$1("instanceStarted"), constant$1("instanceStopped"), constant$1("applicationStart"), constant$1("instanceStop"), constant$1("clear")); -const layoutsOperationTypesDecoder = oneOf$1(constant$1("layoutAdded"), constant$1("layoutChanged"), constant$1("layoutRemoved"), constant$1("get"), constant$1("getAll"), constant$1("export"), constant$1("import"), constant$1("remove"), constant$1("clientSaveRequest"), constant$1("getGlobalPermissionState"), constant$1("checkGlobalActivated"), constant$1("requestGlobalPermission"), constant$1("getDefaultGlobal"), constant$1("setDefaultGlobal"), constant$1("clearDefaultGlobal")); +const layoutsOperationTypesDecoder = oneOf$1(constant$1("layoutAdded"), constant$1("layoutChanged"), constant$1("layoutRemoved"), constant$1("layoutRenamed"), constant$1("get"), constant$1("getAll"), constant$1("export"), constant$1("import"), constant$1("remove"), constant$1("rename"), constant$1("clientSaveRequest"), constant$1("getGlobalPermissionState"), constant$1("checkGlobalActivated"), constant$1("requestGlobalPermission"), constant$1("getDefaultGlobal"), constant$1("setDefaultGlobal"), constant$1("clearDefaultGlobal"), constant$1("updateMetadata")); const notificationsOperationTypesDecoder = oneOf$1(constant$1("raiseNotification"), constant$1("requestPermission"), constant$1("notificationShow"), constant$1("notificationClick"), constant$1("getPermission"), constant$1("list"), constant$1("notificationRaised"), constant$1("notificationClosed"), constant$1("click"), constant$1("clear"), constant$1("clearAll"), constant$1("configure"), constant$1("getConfiguration"), constant$1("configurationChanged"), constant$1("setState"), constant$1("clearOld"), constant$1("activeCountChange"), constant$1("stateChange")); const systemOperationTypesDecoder = oneOf$1(constant$1("getEnvironment"), constant$1("getBase"), constant$1("platformShutdown")); const windowRelativeDirectionDecoder = oneOf$1(constant$1("top"), constant$1("left"), constant$1("right"), constant$1("bottom")); @@ -2325,6 +2288,16 @@ const simpleLayoutConfigDecoder = object$1({ const saveLayoutConfigDecoder = object$1({ layout: newLayoutOptionsDecoder }); +const renameLayoutConfigDecoder = object$1({ + layout: glueLayoutDecoder, + newName: nonEmptyStringDecoder +}); +const layoutResultDecoder = object$1({ + status: nonEmptyStringDecoder +}); +const updateLayoutMetadataConfigDecoder = object$1({ + layout: glueLayoutDecoder, +}); const restoreLayoutConfigDecoder = object$1({ layout: restoreOptionsDecoder }); @@ -2338,7 +2311,7 @@ const importModeDecoder = oneOf$1(constant$1("replace"), constant$1("merge")); const layoutsImportConfigDecoder = object$1({ layouts: array$1(glueLayoutDecoder), mode: importModeDecoder, - isManagerOperation: optional$1(boolean$1()) + skipManagerRequest: optional$1(boolean$1()) }); const allLayoutsSummariesResultDecoder = object$1({ summaries: array$1(layoutSummaryDecoder) @@ -2526,6 +2499,38 @@ const channelContextDecoder = object$1({ }), data: optional$1(object$1()), }); +const removeChannelDataDecoder = object$1({ + name: nonEmptyStringDecoder +}); +const channelRestrictionsDecoder = object$1({ + name: nonEmptyStringDecoder, + read: boolean$1(), + write: boolean$1(), + windowId: optional$1(nonEmptyStringDecoder) +}); +const channelRestrictionConfigWithWindowIdDecoder = object$1({ + name: nonEmptyStringDecoder, + read: boolean$1(), + write: boolean$1(), + windowId: nonEmptyStringDecoder +}); +const restrictionConfigDataDecoder = object$1({ + config: channelRestrictionConfigWithWindowIdDecoder +}); +const restrictionsDecoder = object$1({ + channels: array$1(channelRestrictionsDecoder) +}); +const getRestrictionsDataDecoder = object$1({ + windowId: nonEmptyStringDecoder +}); +const restrictionsConfigDecoder = object$1({ + read: boolean$1(), + write: boolean$1(), + windowId: optional$1(nonEmptyStringDecoder) +}); +const restrictAllDataDecoder = object$1({ + restrictions: restrictionsConfigDecoder +}); const raiseNotificationDecoder = object$1({ settings: glue42NotificationOptionsDecoder, id: nonEmptyStringDecoder @@ -2644,7 +2649,7 @@ const getWindowIdsOnChannelDataDecoder = object$1({ const getWindowIdsOnChannelResultDecoder = object$1({ windowIds: array$1(nonEmptyStringDecoder) }); -const channelsOperationTypesDecoder = oneOf$1(constant$1("addChannel"), constant$1("getMyChannel"), constant$1("getWindowIdsOnChannel"), constant$1("getWindowIdsWithChannels"), constant$1("joinChannel")); +const channelsOperationTypesDecoder = oneOf$1(constant$1("addChannel"), constant$1("getMyChannel"), constant$1("getWindowIdsOnChannel"), constant$1("getWindowIdsWithChannels"), constant$1("joinChannel"), constant$1("restrict"), constant$1("getRestrictions"), constant$1("restrictAll")); const getMyChanelResultDecoder = object$1({ channel: optional$1(nonEmptyStringDecoder) }); @@ -2843,14 +2848,23 @@ function createRegistry$1(options) { }; } createRegistry$1.default = createRegistry$1; -var lib$3 = createRegistry$1; +var lib$1 = createRegistry$1; + + +var CallbackRegistryFactory$1 = /*@__PURE__*/getDefaultExportFromCjs$1(lib$1); class WebWindowModel { + _id; + _name; + _bridge; + registry = CallbackRegistryFactory$1(); + myCtxKey; + ctxUnsubscribe; + me; constructor(_id, _name, _bridge) { this._id = _id; this._name = _name; this._bridge = _bridge; - this.registry = lib$3(); this.myCtxKey = `___window___${this.id}`; } get id() { @@ -2868,37 +2882,33 @@ class WebWindowModel { this.me.isFocused = hasFocus; this.registry.execute("focus-change", this.me); } - toApi() { - return __awaiter$1(this, void 0, void 0, function* () { - this.ctxUnsubscribe = yield this._bridge.contextLib.subscribe(this.myCtxKey, (data) => this.registry.execute("context-updated", data)); - this.me = { - id: this.id, - name: this.name, - isFocused: false, - getURL: this.getURL.bind(this), - moveResize: this.moveResize.bind(this), - resizeTo: this.resizeTo.bind(this), - moveTo: this.moveTo.bind(this), - focus: this.focus.bind(this), - close: this.close.bind(this), - getTitle: this.getTitle.bind(this), - setTitle: this.setTitle.bind(this), - getBounds: this.getBounds.bind(this), - getContext: this.getContext.bind(this), - updateContext: this.updateContext.bind(this), - setContext: this.setContext.bind(this), - onContextUpdated: this.onContextUpdated.bind(this), - onFocusChanged: this.onFocusChanged.bind(this), - getChannel: this.getChannel.bind(this), - }; - return this.me; - }); + async toApi() { + this.ctxUnsubscribe = await this._bridge.contextLib.subscribe(this.myCtxKey, (data) => this.registry.execute("context-updated", data)); + this.me = { + id: this.id, + name: this.name, + isFocused: false, + getURL: this.getURL.bind(this), + moveResize: this.moveResize.bind(this), + resizeTo: this.resizeTo.bind(this), + moveTo: this.moveTo.bind(this), + focus: this.focus.bind(this), + close: this.close.bind(this), + getTitle: this.getTitle.bind(this), + setTitle: this.setTitle.bind(this), + getBounds: this.getBounds.bind(this), + getContext: this.getContext.bind(this), + updateContext: this.updateContext.bind(this), + setContext: this.setContext.bind(this), + onContextUpdated: this.onContextUpdated.bind(this), + onFocusChanged: this.onFocusChanged.bind(this), + getChannel: this.getChannel.bind(this), + }; + return this.me; } - getURL() { - return __awaiter$1(this, void 0, void 0, function* () { - const result = yield this._bridge.send("windows", operations$9.getUrl, { windowId: this.id }); - return result.url; - }); + async getURL() { + const result = await this._bridge.send("windows", operations$9.getUrl, { windowId: this.id }); + return result.url; } onFocusChanged(callback) { if (typeof callback !== "function") { @@ -2906,116 +2916,96 @@ class WebWindowModel { } return this.registry.add("focus-change", callback); } - moveResize(dimension) { - return __awaiter$1(this, void 0, void 0, function* () { - const targetBounds = boundsDecoder.runWithException(dimension); - const commandArgs = Object.assign({}, targetBounds, { windowId: this.id, relative: false }); - yield this._bridge.send("windows", operations$9.moveResize, commandArgs); - return this.me; - }); + async moveResize(dimension) { + const targetBounds = boundsDecoder.runWithException(dimension); + const commandArgs = Object.assign({}, targetBounds, { windowId: this.id, relative: false }); + await this._bridge.send("windows", operations$9.moveResize, commandArgs); + return this.me; } - resizeTo(width, height) { - return __awaiter$1(this, void 0, void 0, function* () { - if (typeof width === "undefined" && typeof height === "undefined") { - return this.me; - } - if (typeof width !== "undefined") { - nonNegativeNumberDecoder.runWithException(width); - } - if (typeof height !== "undefined") { - nonNegativeNumberDecoder.runWithException(height); - } - const commandArgs = Object.assign({}, { width, height }, { windowId: this.id, relative: true }); - yield this._bridge.send("windows", operations$9.moveResize, commandArgs); + async resizeTo(width, height) { + if (typeof width === "undefined" && typeof height === "undefined") { return this.me; - }); + } + if (typeof width !== "undefined") { + nonNegativeNumberDecoder.runWithException(width); + } + if (typeof height !== "undefined") { + nonNegativeNumberDecoder.runWithException(height); + } + const commandArgs = Object.assign({}, { width, height }, { windowId: this.id, relative: true }); + await this._bridge.send("windows", operations$9.moveResize, commandArgs); + return this.me; } - moveTo(top, left) { - return __awaiter$1(this, void 0, void 0, function* () { - if (typeof top === "undefined" && typeof left === "undefined") { - return this.me; - } - if (typeof top !== "undefined") { - number$1().runWithException(top); - } - if (typeof left !== "undefined") { - number$1().runWithException(left); - } - const commandArgs = Object.assign({}, { top, left }, { windowId: this.id, relative: true }); - yield this._bridge.send("windows", operations$9.moveResize, commandArgs); + async moveTo(top, left) { + if (typeof top === "undefined" && typeof left === "undefined") { return this.me; - }); + } + if (typeof top !== "undefined") { + number$1().runWithException(top); + } + if (typeof left !== "undefined") { + number$1().runWithException(left); + } + const commandArgs = Object.assign({}, { top, left }, { windowId: this.id, relative: true }); + await this._bridge.send("windows", operations$9.moveResize, commandArgs); + return this.me; } - focus() { - return __awaiter$1(this, void 0, void 0, function* () { - if (this.name === "Platform") { - window.open(undefined, this.id); - } - else { - yield this._bridge.send("windows", operations$9.focus, { windowId: this.id }); - } - return this.me; - }); + async focus() { + if (this.name === "Platform") { + window.open(undefined, this.id); + } + else { + await this._bridge.send("windows", operations$9.focus, { windowId: this.id }); + } + return this.me; } - close() { - return __awaiter$1(this, void 0, void 0, function* () { - yield this._bridge.send("windows", operations$9.close, { windowId: this.id }); - return this.me; - }); + async close() { + await this._bridge.send("windows", operations$9.close, { windowId: this.id }); + return this.me; } - getTitle() { - return __awaiter$1(this, void 0, void 0, function* () { - const result = yield this._bridge.send("windows", operations$9.getTitle, { windowId: this.id }); - return result.title; - }); + async getTitle() { + const result = await this._bridge.send("windows", operations$9.getTitle, { windowId: this.id }); + return result.title; } - setTitle(title) { - return __awaiter$1(this, void 0, void 0, function* () { - const ttl = nonEmptyStringDecoder.runWithException(title); - yield this._bridge.send("windows", operations$9.setTitle, { windowId: this.id, title: ttl }); - return this.me; - }); + async setTitle(title) { + const ttl = nonEmptyStringDecoder.runWithException(title); + await this._bridge.send("windows", operations$9.setTitle, { windowId: this.id, title: ttl }); + return this.me; } - getBounds() { - return __awaiter$1(this, void 0, void 0, function* () { - const result = yield this._bridge.send("windows", operations$9.getBounds, { windowId: this.id }); - return result.bounds; - }); + async getBounds() { + const result = await this._bridge.send("windows", operations$9.getBounds, { windowId: this.id }); + return result.bounds; } - getContext() { - return __awaiter$1(this, void 0, void 0, function* () { - const ctx = yield this._bridge.contextLib.get(this.myCtxKey); - return ctx; - }); + async getContext() { + const ctx = await this._bridge.contextLib.get(this.myCtxKey); + const { ___io___, ...rest } = ctx; + return rest; } - updateContext(context) { - return __awaiter$1(this, void 0, void 0, function* () { - const ctx = anyDecoder.runWithException(context); - yield this._bridge.contextLib.update(this.myCtxKey, ctx); - return this.me; - }); + async updateContext(context) { + const ctx = anyDecoder.runWithException(context); + await this._bridge.contextLib.update(this.myCtxKey, ctx); + return this.me; } - setContext(context) { - return __awaiter$1(this, void 0, void 0, function* () { - const ctx = anyDecoder.runWithException(context); - yield this._bridge.contextLib.set(this.myCtxKey, ctx); - return this.me; - }); + async setContext(context) { + const ctx = anyDecoder.runWithException(context); + const current = await this._bridge.contextLib.get(this.myCtxKey); + const newCtx = current.___io___ ? { ...ctx, ___io___: current.___io___ } : ctx; + await this._bridge.contextLib.set(this.myCtxKey, newCtx); + return this.me; } onContextUpdated(callback) { if (typeof callback !== "function") { throw new Error("Cannot subscribe to context changes, because the provided callback is not a function!"); } const wrappedCallback = (data) => { - callback(data, this.me); + const { ___io___, ...rest } = data; + callback(rest, this.me); }; return this.registry.add("context-updated", wrappedCallback); } - getChannel() { - return __awaiter$1(this, void 0, void 0, function* () { - const result = yield this._bridge.send("windows", operations$9.getChannel, { windowId: this.id }, undefined, { includeOperationCheck: true }); - return result.channel; - }); + async getChannel() { + const result = await this._bridge.send("windows", operations$9.getChannel, { windowId: this.id }, undefined, { includeOperationCheck: true }); + return result.channel; } } @@ -3074,28 +3064,34 @@ const PromisePlus$1 = (executor, timeoutMilliseconds, timeoutMessage) => { }; class WindowsController { - constructor() { - this.registry = lib$3(); - this.allWindowProjections = []; - } - start(coreGlue, ioc) { - return __awaiter$1(this, void 0, void 0, function* () { - this.logger = coreGlue.logger.subLogger("windows.controller.web"); - this.logger.trace("starting the web windows controller"); - this.publicWindowId = ioc.publicWindowId; - this.addWindowOperationExecutors(); - this.ioc = ioc; - this.bridge = ioc.bridge; - this.instanceId = coreGlue.interop.instance.instance; - this.channelsController = ioc.channelsController; - this.logger.trace(`set the public window id: ${this.publicWindowId}, set the bridge operations and ioc, registering with the platform now`); - this.platformRegistration = this.registerWithPlatform(); - yield this.platformRegistration; - yield this.initializeFocusTracking(); - this.logger.trace("registration with the platform successful, attaching the windows property to glue and returning"); - const api = this.toApi(); - coreGlue.windows = api; - }); + focusEventHandler; + registry = CallbackRegistryFactory$1(); + platformRegistration; + ioc; + bridge; + publicWindowId; + allWindowProjections = []; + me; + logger; + isWorkspaceFrame; + instanceId; + channelsController; + async start(coreGlue, ioc) { + this.logger = coreGlue.logger.subLogger("windows.controller.web"); + this.logger.trace("starting the web windows controller"); + this.publicWindowId = ioc.publicWindowId; + this.addWindowOperationExecutors(); + this.ioc = ioc; + this.bridge = ioc.bridge; + this.instanceId = coreGlue.interop.instance.instance; + this.channelsController = ioc.channelsController; + this.logger.trace(`set the public window id: ${this.publicWindowId}, set the bridge operations and ioc, registering with the platform now`); + this.platformRegistration = this.registerWithPlatform(); + await this.platformRegistration; + await this.initializeFocusTracking(); + this.logger.trace("registration with the platform successful, attaching the windows property to glue and returning"); + const api = this.toApi(); + coreGlue.windows = api; } handlePlatformShutdown() { this.registry.clear(); @@ -3107,37 +3103,32 @@ class WindowsController { window.removeEventListener("focus", this.focusEventHandler); window.removeEventListener("blur", this.focusEventHandler); } - handleBridgeMessage(args) { - return __awaiter$1(this, void 0, void 0, function* () { - yield this.platformRegistration; - const operationName = windowOperationTypesDecoder.runWithException(args.operation); - const operation = operations$9[operationName]; - if (!operation.execute) { - return; - } - let operationData = args.data; - if (operation.dataDecoder) { - operationData = operation.dataDecoder.runWithException(args.data); - } - return yield operation.execute(operationData); - }); + async handleBridgeMessage(args) { + await this.platformRegistration; + const operationName = windowOperationTypesDecoder.runWithException(args.operation); + const operation = operations$9[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return await operation.execute(operationData); } - open(name, url, options) { - return __awaiter$1(this, void 0, void 0, function* () { - nonEmptyStringDecoder.runWithException(name); - nonEmptyStringDecoder.runWithException(url); - const settings = windowOpenSettingsDecoder.runWithException(options); - const windowSuccess = yield this.bridge.send("windows", operations$9.openWindow, { name, url, options: settings }); - return this.waitForWindowAdded(windowSuccess.windowId); - }); + async open(name, url, options) { + nonEmptyStringDecoder.runWithException(name); + nonEmptyStringDecoder.runWithException(url); + const settings = windowOpenSettingsDecoder.runWithException(options); + const windowSuccess = await this.bridge.send("windows", operations$9.openWindow, { name, url, options: settings }); + return this.waitForWindowAdded(windowSuccess.windowId); } list() { return this.allWindowProjections.map((projection) => projection.api); } findById(id) { - var _a; nonEmptyStringDecoder.runWithException(id); - return (_a = this.allWindowProjections.find((projection) => projection.id === id)) === null || _a === void 0 ? void 0 : _a.api; + return this.allWindowProjections.find((projection) => projection.id === id)?.api; } toApi() { return { @@ -3190,145 +3181,123 @@ class WindowsController { } return this.registry.add("window-lost-focus", callback); } - sayHello() { - return __awaiter$1(this, void 0, void 0, function* () { - const helloSuccess = yield this.bridge.send("windows", operations$9.windowHello, { windowId: this.publicWindowId }); - return helloSuccess; - }); - } - registerWithPlatform() { - return __awaiter$1(this, void 0, void 0, function* () { - const { windows, isWorkspaceFrame } = yield this.sayHello(); - this.isWorkspaceFrame = isWorkspaceFrame; - this.logger.trace("the platform responded to the hello message"); - if (!this.isWorkspaceFrame && this.publicWindowId) { - this.logger.trace("i am not treated as a workspace frame, setting my window"); - const myWindow = windows.find((w) => w.windowId === this.publicWindowId); - if (!myWindow) { - throw new Error("Cannot initialize the window library, because I received no information about me from the platform"); - } - const myProjection = yield this.ioc.buildWebWindow(this.publicWindowId, myWindow.name); - this.me = myProjection.api; - this.allWindowProjections.push(myProjection); - } - const currentWindows = yield Promise.all(windows - .filter((w) => w.windowId !== this.publicWindowId) - .map((w) => this.ioc.buildWebWindow(w.windowId, w.name))); - this.logger.trace("all windows projections are completed, building the list collection"); - this.allWindowProjections.push(...currentWindows); - }); - } - handleFocusChangeEvent(focusData) { - return __awaiter$1(this, void 0, void 0, function* () { - const foundProjection = this.allWindowProjections.find((projection) => projection.id === focusData.windowId); - if (!foundProjection) { - return; - } - foundProjection.model.processSelfFocusEvent(focusData.hasFocus); - const keyToExecute = focusData.hasFocus ? "window-got-focus" : "window-lost-focus"; - this.registry.execute(keyToExecute, foundProjection.api); - }); - } - handleWindowAdded(data) { - return __awaiter$1(this, void 0, void 0, function* () { - if (this.allWindowProjections.some((projection) => projection.id === data.windowId)) { - return; - } - const webWindowProjection = yield this.ioc.buildWebWindow(data.windowId, data.name); - this.allWindowProjections.push(webWindowProjection); - this.registry.execute("window-added", webWindowProjection.api); - }); - } - handleWindowRemoved(data) { - return __awaiter$1(this, void 0, void 0, function* () { - const removed = this.allWindowProjections.find((w) => w.id === data.windowId); - if (!removed) { - return; - } - this.allWindowProjections = this.allWindowProjections.filter((w) => w.id !== data.windowId); - removed.model.clean(); - this.registry.execute("window-removed", removed.api); - }); + async sayHello() { + const helloSuccess = await this.bridge.send("windows", operations$9.windowHello, { windowId: this.publicWindowId }); + return helloSuccess; + } + async registerWithPlatform() { + const { windows, isWorkspaceFrame } = await this.sayHello(); + this.isWorkspaceFrame = isWorkspaceFrame; + this.logger.trace("the platform responded to the hello message"); + if (!this.isWorkspaceFrame && this.publicWindowId) { + this.logger.trace("i am not treated as a workspace frame, setting my window"); + const myWindow = windows.find((w) => w.windowId === this.publicWindowId); + if (!myWindow) { + throw new Error("Cannot initialize the window library, because I received no information about me from the platform"); + } + const myProjection = await this.ioc.buildWebWindow(this.publicWindowId, myWindow.name); + this.me = myProjection.api; + this.allWindowProjections.push(myProjection); + } + const currentWindows = await Promise.all(windows + .filter((w) => w.windowId !== this.publicWindowId) + .map((w) => this.ioc.buildWebWindow(w.windowId, w.name))); + this.logger.trace("all windows projections are completed, building the list collection"); + this.allWindowProjections.push(...currentWindows); + } + async handleFocusChangeEvent(focusData) { + const foundProjection = this.allWindowProjections.find((projection) => projection.id === focusData.windowId); + if (!foundProjection) { + return; + } + foundProjection.model.processSelfFocusEvent(focusData.hasFocus); + const keyToExecute = focusData.hasFocus ? "window-got-focus" : "window-lost-focus"; + this.registry.execute(keyToExecute, foundProjection.api); } - handleGetBounds() { - return __awaiter$1(this, void 0, void 0, function* () { - if (!this.me && !this.isWorkspaceFrame) { - throw new Error("This window cannot report it's bounds, because it is not a Glue Window, most likely because it is an iframe"); - } - return { - windowId: this.isWorkspaceFrame ? "noop" : this.me.id, - bounds: { - top: window.screenTop, - left: window.screenLeft, - width: window.innerWidth, - height: window.innerHeight - } - }; - }); + async handleWindowAdded(data) { + if (this.allWindowProjections.some((projection) => projection.id === data.windowId)) { + return; + } + const webWindowProjection = await this.ioc.buildWebWindow(data.windowId, data.name); + this.allWindowProjections.push(webWindowProjection); + this.registry.execute("window-added", webWindowProjection.api); } - handleGetTitle() { - return __awaiter$1(this, void 0, void 0, function* () { - if (!this.me) { - throw new Error("This window cannot report it's title, because it is not a Glue Window, most likely because it is an iframe"); - } - return { - windowId: this.me.id, - title: document.title - }; - }); + async handleWindowRemoved(data) { + const removed = this.allWindowProjections.find((w) => w.id === data.windowId); + if (!removed) { + return; + } + this.allWindowProjections = this.allWindowProjections.filter((w) => w.id !== data.windowId); + removed.model.clean(); + this.registry.execute("window-removed", removed.api); } - handleGetUrl() { - return __awaiter$1(this, void 0, void 0, function* () { - if (!this.me) { - throw new Error("This window cannot report it's url, because it is not a Glue Window, most likely because it is an iframe"); + async handleGetBounds() { + if (!this.me && !this.isWorkspaceFrame) { + throw new Error("This window cannot report it's bounds, because it is not a Glue Window, most likely because it is an iframe"); + } + return { + windowId: this.isWorkspaceFrame ? "noop" : this.me.id, + bounds: { + top: window.screenTop, + left: window.screenLeft, + width: window.innerWidth, + height: window.innerHeight } - return { - windowId: this.me.id, - url: window.location.href - }; - }); + }; } - handleMoveResize(config) { - return __awaiter$1(this, void 0, void 0, function* () { - const targetTop = typeof config.top === "number" ? config.top : - config.relative ? 0 : window.screenTop; - const targetLeft = typeof config.left === "number" ? config.left : - config.relative ? 0 : window.screenLeft; - const targetHeight = typeof config.height === "number" ? config.height : - config.relative ? 0 : window.innerHeight; - const targetWidth = typeof config.width === "number" ? config.width : - config.relative ? 0 : window.innerWidth; - const moveMethod = config.relative ? window.moveBy : window.moveTo; - const resizeMethod = config.relative ? window.resizeBy : window.resizeTo; - moveMethod(targetLeft, targetTop); - resizeMethod(targetWidth, targetHeight); - }); + async handleGetTitle() { + if (!this.me) { + throw new Error("This window cannot report it's title, because it is not a Glue Window, most likely because it is an iframe"); + } + return { + windowId: this.me.id, + title: document.title + }; } - handleSetTitle(config) { - return __awaiter$1(this, void 0, void 0, function* () { - document.title = config.title; - }); + async handleGetUrl() { + if (!this.me) { + throw new Error("This window cannot report it's url, because it is not a Glue Window, most likely because it is an iframe"); + } + return { + windowId: this.me.id, + url: window.location.href + }; } - initializeFocusTracking() { - return __awaiter$1(this, void 0, void 0, function* () { - if (this.isWorkspaceFrame) { - this.logger.trace("Ignoring the focus tracking, because this client is a workspace frame"); - return; - } - try { - yield this.bridge.send("windows", systemOperations.operationCheck, { operation: "focusChange" }); - } - catch (error) { - this.logger.warn("The platform of this client is outdated and does not support focus tracking, disabling focus events for this client."); - return; - } - const hasFocus = document.hasFocus(); - yield this.transmitFocusChange(true); - if (!hasFocus) { - yield this.transmitFocusChange(false); - } - this.defineEventListeners(); - }); + async handleMoveResize(config) { + const targetTop = typeof config.top === "number" ? config.top : + config.relative ? 0 : window.screenTop; + const targetLeft = typeof config.left === "number" ? config.left : + config.relative ? 0 : window.screenLeft; + const targetHeight = typeof config.height === "number" ? config.height : + config.relative ? 0 : window.innerHeight; + const targetWidth = typeof config.width === "number" ? config.width : + config.relative ? 0 : window.innerWidth; + const moveMethod = config.relative ? window.moveBy : window.moveTo; + const resizeMethod = config.relative ? window.resizeBy : window.resizeTo; + moveMethod(targetLeft, targetTop); + resizeMethod(targetWidth, targetHeight); + } + async handleSetTitle(config) { + document.title = config.title; + } + async initializeFocusTracking() { + if (this.isWorkspaceFrame) { + this.logger.trace("Ignoring the focus tracking, because this client is a workspace frame"); + return; + } + try { + await this.bridge.send("windows", systemOperations.operationCheck, { operation: "focusChange" }); + } + catch (error) { + this.logger.warn("The platform of this client is outdated and does not support focus tracking, disabling focus events for this client."); + return; + } + const hasFocus = document.hasFocus(); + await this.transmitFocusChange(true); + if (!hasFocus) { + await this.transmitFocusChange(false); + } + this.defineEventListeners(); } processFocusEvent() { const hasFocus = document.hasFocus(); @@ -3348,18 +3317,15 @@ class WindowsController { }); }, 30000, `Timed out waiting for ${windowId} to be announced`); } - transmitFocusChange(hasFocus) { - var _a; - return __awaiter$1(this, void 0, void 0, function* () { - const eventData = { - windowId: ((_a = this.me) === null || _a === void 0 ? void 0 : _a.id) || `iframe-${this.instanceId}`, - hasFocus - }; - if (this.me) { - this.me.isFocused = hasFocus; - } - yield this.bridge.send("windows", operations$9.focusChange, eventData); - }); + async transmitFocusChange(hasFocus) { + const eventData = { + windowId: this.me?.id || `iframe-${this.instanceId}`, + hasFocus + }; + if (this.me) { + this.me.isFocused = hasFocus; + } + await this.bridge.send("windows", operations$9.focusChange, eventData); } defineEventListeners() { this.focusEventHandler = this.processFocusEvent.bind(this); @@ -3367,14 +3333,14 @@ class WindowsController { window.addEventListener("focus", this.focusEventHandler); window.addEventListener("blur", this.focusEventHandler); } - handleGetChannel() { - return __awaiter$1(this, void 0, void 0, function* () { - if (!this.me) { - throw new Error("This window cannot report it's channel, because it is not a Glue Window, most likely because it is an iframe"); - } - const channel = this.channelsController.my(); - return Object.assign({}, (channel ? { channel } : {})); - }); + async handleGetChannel() { + if (!this.me) { + throw new Error("This window cannot report it's channel, because it is not a Glue Window, most likely because it is an iframe"); + } + const channel = this.channelsController.my(); + return { + ...(channel ? { channel } : {}), + }; } } @@ -3384,10 +3350,15 @@ const GlueClientControlName = "T42.Web.Client.Control"; const GlueCorePlusThemesStream = "T42.Core.Plus.Themes.Stream"; class GlueBridge { + coreGlue; + communicationId; + platformMethodTimeoutMs = 10000; + controllers; + sub; + running; constructor(coreGlue, communicationId) { this.coreGlue = coreGlue; this.communicationId = communicationId; - this.platformMethodTimeoutMs = 10000; } get contextLib() { return this.coreGlue.contexts; @@ -3395,90 +3366,80 @@ class GlueBridge { get interopInstance() { return this.coreGlue.interop.instance.instance; } - stop() { - return __awaiter$1(this, void 0, void 0, function* () { - this.running = false; - this.sub.close(); - yield this.coreGlue.interop.unregister(GlueClientControlName); - }); - } - start(controllers) { - return __awaiter$1(this, void 0, void 0, function* () { - this.running = true; - this.controllers = controllers; - yield Promise.all([ - this.checkWaitMethod(GlueWebPlatformControlName), - this.checkWaitMethod(GlueWebPlatformStreamName) - ]); - const systemId = this.communicationId; - const [sub] = yield Promise.all([ - this.coreGlue.interop.subscribe(GlueWebPlatformStreamName, systemId ? { target: { instance: this.communicationId } } : undefined), - this.coreGlue.interop.registerAsync(GlueClientControlName, (args, _, success, error) => this.passMessageController(args, success, error)) - ]); - this.sub = sub; - this.sub.onData((pkg) => this.passMessageController(pkg.data)); - }); + async stop() { + this.running = false; + this.sub.close(); + await this.coreGlue.interop.unregister(GlueClientControlName); + } + async start(controllers) { + this.running = true; + this.controllers = controllers; + await Promise.all([ + this.checkWaitMethod(GlueWebPlatformControlName), + this.checkWaitMethod(GlueWebPlatformStreamName) + ]); + const systemId = this.communicationId; + const [sub] = await Promise.all([ + this.coreGlue.interop.subscribe(GlueWebPlatformStreamName, systemId ? { target: { instance: this.communicationId } } : undefined), + this.coreGlue.interop.registerAsync(GlueClientControlName, (args, _, success, error) => this.passMessageController(args, success, error)) + ]); + this.sub = sub; + this.sub.onData((pkg) => this.passMessageController(pkg.data)); } getInteropInstance(windowId) { const result = this.coreGlue.interop.servers().find((s) => s.windowId && s.windowId === windowId); return { - application: result === null || result === void 0 ? void 0 : result.application, - applicationName: result === null || result === void 0 ? void 0 : result.applicationName, - peerId: result === null || result === void 0 ? void 0 : result.peerId, - instance: result === null || result === void 0 ? void 0 : result.instance, - windowId: result === null || result === void 0 ? void 0 : result.windowId + application: result?.application, + applicationName: result?.applicationName, + peerId: result?.peerId, + instance: result?.instance, + windowId: result?.windowId }; } - send(domain, operation, operationData, options, webOptions) { - return __awaiter$1(this, void 0, void 0, function* () { - if (operation.dataDecoder) { - try { - operation.dataDecoder.runWithException(operationData); - } - catch (error) { - throw new Error(`Unexpected Web->Platform outgoing validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`); - } - } - const operationSupported = (webOptions === null || webOptions === void 0 ? void 0 : webOptions.includeOperationCheck) ? - (yield this.checkOperationSupported(domain, operation)).isSupported : - true; - if (!operationSupported) { - throw new Error(`Cannot complete operation: ${operation.name} for domain: ${domain} because this client is connected to a platform which does not support it`); - } + async send(domain, operation, operationData, options, webOptions) { + if (operation.dataDecoder) { try { - const operationResult = yield this.transmitMessage(domain, operation, operationData, options); - if (operation.resultDecoder) { - operation.resultDecoder.runWithException(operationResult); - } - return operationResult; + operation.dataDecoder.runWithException(operationData); } catch (error) { - if (error.kind) { - throw new Error(`Unexpected Web<-Platform incoming validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`); - } - throw new Error(error.message); - } - }); - } - createNotificationsSteam() { - return __awaiter$1(this, void 0, void 0, function* () { - const streamExists = this.coreGlue.interop.methods().some((method) => method.name === GlueCorePlusThemesStream); - if (!streamExists) { - throw new Error("Cannot subscribe to theme changes, because the underlying interop stream does not exist. Most likely this is the case when this client is not connected to Core Plus."); + throw new Error(`Unexpected Web->Platform outgoing validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`); } - return this.coreGlue.interop.subscribe(GlueCorePlusThemesStream, this.communicationId ? { target: { instance: this.communicationId } } : undefined); - }); - } - checkOperationSupported(domain, operation) { - return __awaiter$1(this, void 0, void 0, function* () { - try { - const result = yield this.send(domain, systemOperations.operationCheck, { operation: operation.name }); - return result; + } + const operationSupported = webOptions?.includeOperationCheck ? + (await this.checkOperationSupported(domain, operation)).isSupported : + true; + if (!operationSupported) { + throw new Error(`Cannot complete operation: ${operation.name} for domain: ${domain} because this client is connected to a platform which does not support it`); + } + try { + const operationResult = await this.transmitMessage(domain, operation, operationData, options); + if (operation.resultDecoder) { + operation.resultDecoder.runWithException(operationResult); } - catch (error) { - return { isSupported: false }; + return operationResult; + } + catch (error) { + if (error.kind) { + throw new Error(`Unexpected Web<-Platform incoming validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`); } - }); + throw new Error(error.message); + } + } + async createNotificationsSteam() { + const streamExists = this.coreGlue.interop.methods().some((method) => method.name === GlueCorePlusThemesStream); + if (!streamExists) { + throw new Error("Cannot subscribe to theme changes, because the underlying interop stream does not exist. Most likely this is the case when this client is not connected to Core Plus."); + } + return this.coreGlue.interop.subscribe(GlueCorePlusThemesStream, this.communicationId ? { target: { instance: this.communicationId } } : undefined); + } + async checkOperationSupported(domain, operation) { + try { + const result = await this.send(domain, systemOperations.operationCheck, { operation: operation.name }); + return result; + } + catch (error) { + return { isSupported: false }; + } } checkWaitMethod(name) { return PromisePlus$1((resolve) => { @@ -3528,33 +3489,31 @@ class GlueBridge { console.warn(err); }); } - transmitMessage(domain, operation, data, options) { - return __awaiter$1(this, void 0, void 0, function* () { - const messageData = { domain, data, operation: operation.name }; - let invocationResult; - const baseErrorMessage = `Internal Platform Communication Error. Attempted operation: ${JSON.stringify(operation.name)} with data: ${JSON.stringify(data)}. `; - const systemId = this.communicationId; - try { - if (!this.running) { - throw new Error("Cannot send a control message, because the platform shut down"); - } - invocationResult = yield this.coreGlue.interop.invoke(GlueWebPlatformControlName, messageData, systemId ? { instance: this.communicationId } : undefined, options); - if (!invocationResult) { - throw new Error("Received unsupported result from the platform - empty result"); - } - if (!Array.isArray(invocationResult.all_return_values) || invocationResult.all_return_values.length === 0) { - throw new Error("Received unsupported result from the platform - empty values collection"); - } + async transmitMessage(domain, operation, data, options) { + const messageData = { domain, data, operation: operation.name }; + let invocationResult; + const baseErrorMessage = `Internal Platform Communication Error. Attempted operation: ${JSON.stringify(operation.name)} with data: ${JSON.stringify(data)}. `; + const systemId = this.communicationId; + try { + if (!this.running) { + throw new Error("Cannot send a control message, because the platform shut down"); } - catch (error) { - if (error && error.all_errors && error.all_errors.length) { - const invocationErrorMessage = error.all_errors[0].message; - throw new Error(`${baseErrorMessage} -> Inner message: ${invocationErrorMessage}`); - } - throw new Error(`${baseErrorMessage} -> Inner message: ${error.message}`); + invocationResult = await this.coreGlue.interop.invoke(GlueWebPlatformControlName, messageData, systemId ? { instance: this.communicationId } : undefined, options); + if (!invocationResult) { + throw new Error("Received unsupported result from the platform - empty result"); } - return invocationResult.all_return_values[0].returned; - }); + if (!Array.isArray(invocationResult.all_return_values) || invocationResult.all_return_values.length === 0) { + throw new Error("Received unsupported result from the platform - empty values collection"); + } + } + catch (error) { + if (error && error.all_errors && error.all_errors.length) { + const invocationErrorMessage = error.all_errors[0].message; + throw new Error(`${baseErrorMessage} -> Inner message: ${invocationErrorMessage}`); + } + throw new Error(`${baseErrorMessage} -> Inner message: ${error.message}`); + } + return invocationResult.all_return_values[0].returned; } } @@ -3572,50 +3531,52 @@ const operations$8 = { }; class AppManagerController { - constructor() { - this.baseApplicationsTimeoutMS = 60000; - this.appImportTimeoutMS = 20; - this.registry = lib$3(); - this.applications = []; - this.instances = []; - } + me; + baseApplicationsTimeoutMS = 60000; + appImportTimeoutMS = 20; + registry = CallbackRegistryFactory$1(); + ioc; + bridge; + publicWindowId; + applications = []; + instances = []; + platformRegistration; + logger; + channelsController; + sessionController; handlePlatformShutdown() { this.registry.clear(); this.applications = []; this.instances = []; delete this.me; } - start(coreGlue, ioc) { - return __awaiter$1(this, void 0, void 0, function* () { - this.logger = coreGlue.logger.subLogger("appManger.controller.web"); - this.logger.trace("starting the web appManager controller"); - this.publicWindowId = ioc.publicWindowId; - this.addOperationsExecutors(); - this.ioc = ioc; - this.bridge = ioc.bridge; - this.channelsController = ioc.channelsController; - this.sessionController = ioc.sessionController; - this.platformRegistration = this.registerWithPlatform(); - yield this.platformRegistration; - this.logger.trace("registration with the platform successful, attaching the appManager property to glue and returning"); - const api = this.toApi(); - coreGlue.appManager = api; - }); - } - handleBridgeMessage(args) { - return __awaiter$1(this, void 0, void 0, function* () { - yield this.platformRegistration; - const operationName = appManagerOperationTypesDecoder.runWithException(args.operation); - const operation = operations$8[operationName]; - if (!operation.execute) { - return; - } - let operationData = args.data; - if (operation.dataDecoder) { - operationData = operation.dataDecoder.runWithException(args.data); - } - return yield operation.execute(operationData); - }); + async start(coreGlue, ioc) { + this.logger = coreGlue.logger.subLogger("appManger.controller.web"); + this.logger.trace("starting the web appManager controller"); + this.publicWindowId = ioc.publicWindowId; + this.addOperationsExecutors(); + this.ioc = ioc; + this.bridge = ioc.bridge; + this.channelsController = ioc.channelsController; + this.sessionController = ioc.sessionController; + this.platformRegistration = this.registerWithPlatform(); + await this.platformRegistration; + this.logger.trace("registration with the platform successful, attaching the appManager property to glue and returning"); + const api = this.toApi(); + coreGlue.appManager = api; + } + async handleBridgeMessage(args) { + await this.platformRegistration; + const operationName = appManagerOperationTypesDecoder.runWithException(args.operation); + const operation = operations$8[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return await operation.execute(operationData); } onInstanceStarted(callback) { if (typeof callback !== "function") { @@ -3629,32 +3590,29 @@ class AppManagerController { } return this.registry.add("instance-stopped", callback); } - startApplication(appName, context, options) { - var _a; - return __awaiter$1(this, void 0, void 0, function* () { - const channels = yield this.channelsController.all(); - if ((options === null || options === void 0 ? void 0 : options.channelId) && !channels.includes(options.channelId)) { - throw new Error(`The channel with name "${options.channelId}" doesn't exist!`); - } - const startOptions = { - name: appName, - waitForAGMReady: (_a = options === null || options === void 0 ? void 0 : options.waitForAGMReady) !== null && _a !== void 0 ? _a : true, - context, - top: options === null || options === void 0 ? void 0 : options.top, - left: options === null || options === void 0 ? void 0 : options.left, - width: options === null || options === void 0 ? void 0 : options.width, - height: options === null || options === void 0 ? void 0 : options.height, - relativeTo: options === null || options === void 0 ? void 0 : options.relativeTo, - relativeDirection: options === null || options === void 0 ? void 0 : options.relativeDirection, - id: options === null || options === void 0 ? void 0 : options.reuseId, - forceChromeTab: options === null || options === void 0 ? void 0 : options.forceTab, - layoutComponentId: options === null || options === void 0 ? void 0 : options.layoutComponentId, - channelId: options === null || options === void 0 ? void 0 : options.channelId - }; - const openResult = yield this.bridge.send("appManager", operations$8.applicationStart, startOptions); - const app = this.applications.find((a) => a.name === openResult.applicationName); - return this.ioc.buildInstance(openResult, app); - }); + async startApplication(appName, context, options) { + const channels = await this.channelsController.all(); + if (options?.channelId && !channels.includes(options.channelId)) { + throw new Error(`The channel with name "${options.channelId}" doesn't exist!`); + } + const startOptions = { + name: appName, + waitForAGMReady: options?.waitForAGMReady ?? true, + context, + top: options?.top, + left: options?.left, + width: options?.width, + height: options?.height, + relativeTo: options?.relativeTo, + relativeDirection: options?.relativeDirection, + id: options?.reuseId, + forceChromeTab: options?.forceTab, + layoutComponentId: options?.layoutComponentId, + channelId: options?.channelId + }; + const openResult = await this.bridge.send("appManager", operations$8.applicationStart, startOptions); + const app = this.applications.find((a) => a.name === openResult.applicationName); + return this.ioc.buildInstance(openResult, app); } getApplication(name) { const verifiedName = nonEmptyStringDecoder.runWithException(name); @@ -3688,12 +3646,10 @@ class AppManagerController { operations$8.instanceStarted.execute = this.handleInstanceStartedMessage.bind(this); operations$8.instanceStopped.execute = this.handleInstanceStoppedMessage.bind(this); } - handleAppDirectoryStateChange(data) { - return __awaiter$1(this, void 0, void 0, function* () { - data.appsAdded.forEach(this.handleApplicationAddedMessage.bind(this)); - data.appsChanged.forEach(this.handleApplicationChangedMessage.bind(this)); - data.appsRemoved.forEach(this.handleApplicationRemovedMessage.bind(this)); - }); + async handleAppDirectoryStateChange(data) { + data.appsAdded.forEach(this.handleApplicationAddedMessage.bind(this)); + data.appsChanged.forEach(this.handleApplicationChangedMessage.bind(this)); + data.appsRemoved.forEach(this.handleApplicationRemovedMessage.bind(this)); } onAppAdded(callback) { if (typeof callback !== "function") { @@ -3713,150 +3669,128 @@ class AppManagerController { } return this.registry.add("application-changed", callback); } - handleApplicationAddedMessage(appData) { - return __awaiter$1(this, void 0, void 0, function* () { - if (this.applications.some((app) => app.name === appData.name)) { - return; - } - const app = yield this.ioc.buildApplication(appData, []); - const instances = this.instances.filter((instance) => instance.application.name === app.name); - app.instances.push(...instances); - this.applications.push(app); - this.registry.execute("application-added", app); - }); + async handleApplicationAddedMessage(appData) { + if (this.applications.some((app) => app.name === appData.name)) { + return; + } + const app = await this.ioc.buildApplication(appData, []); + const instances = this.instances.filter((instance) => instance.application.name === app.name); + app.instances.push(...instances); + this.applications.push(app); + this.registry.execute("application-added", app); } - handleApplicationRemovedMessage(appData) { - return __awaiter$1(this, void 0, void 0, function* () { - const appIndex = this.applications.findIndex((app) => app.name === appData.name); - if (appIndex < 0) { - return; - } - const app = this.applications[appIndex]; - this.applications.splice(appIndex, 1); - this.registry.execute("application-removed", app); - }); + async handleApplicationRemovedMessage(appData) { + const appIndex = this.applications.findIndex((app) => app.name === appData.name); + if (appIndex < 0) { + return; + } + const app = this.applications[appIndex]; + this.applications.splice(appIndex, 1); + this.registry.execute("application-removed", app); } - handleApplicationChangedMessage(appData) { - return __awaiter$1(this, void 0, void 0, function* () { - const app = this.applications.find((app) => app.name === appData.name); - if (!app) { - return this.handleApplicationAddedMessage(appData); - } - app.title = appData.title; - app.version = appData.version; - app.icon = appData.icon; - app.caption = appData.caption; - app.userProperties = appData.userProperties; - this.registry.execute("application-changed", app); - }); + async handleApplicationChangedMessage(appData) { + const app = this.applications.find((app) => app.name === appData.name); + if (!app) { + return this.handleApplicationAddedMessage(appData); + } + app.title = appData.title; + app.version = appData.version; + app.icon = appData.icon; + app.caption = appData.caption; + app.userProperties = appData.userProperties; + this.registry.execute("application-changed", app); } - handleInstanceStartedMessage(instanceData) { - return __awaiter$1(this, void 0, void 0, function* () { - if (this.instances.some((instance) => instance.id === instanceData.id)) { - return; - } - const application = this.applications.find((app) => app.name === instanceData.applicationName); - if (!application) { - throw new Error(`Cannot add instance: ${instanceData.id}, because there is no application definition associated with it`); - } - const instance = this.ioc.buildInstance(instanceData, application); - this.instances.push(instance); - application.instances.push(instance); - this.registry.execute("instance-started", instance); - }); + async handleInstanceStartedMessage(instanceData) { + if (this.instances.some((instance) => instance.id === instanceData.id)) { + return; + } + const application = this.applications.find((app) => app.name === instanceData.applicationName); + if (!application) { + throw new Error(`Cannot add instance: ${instanceData.id}, because there is no application definition associated with it`); + } + const instance = this.ioc.buildInstance(instanceData, application); + this.instances.push(instance); + application.instances.push(instance); + this.registry.execute("instance-started", instance); } - handleInstanceStoppedMessage(instanceData) { - return __awaiter$1(this, void 0, void 0, function* () { - const instance = this.instances.find((i) => i.id === instanceData.id); - if (instance) { - const instIdx = this.instances.findIndex((inst) => inst.id === instanceData.id); - this.instances.splice(instIdx, 1); - } - const application = this.applications.find((app) => app.instances.some((inst) => inst.id === instanceData.id)); - if (application) { - const instIdxApps = application.instances.findIndex((inst) => inst.id === instanceData.id); - application.instances.splice(instIdxApps, 1); - } - if (!instance) { - return; - } - this.registry.execute("instance-stopped", instance); - }); + async handleInstanceStoppedMessage(instanceData) { + const instance = this.instances.find((i) => i.id === instanceData.id); + if (instance) { + const instIdx = this.instances.findIndex((inst) => inst.id === instanceData.id); + this.instances.splice(instIdx, 1); + } + const application = this.applications.find((app) => app.instances.some((inst) => inst.id === instanceData.id)); + if (application) { + const instIdxApps = application.instances.findIndex((inst) => inst.id === instanceData.id); + application.instances.splice(instIdxApps, 1); + } + if (!instance) { + return; + } + this.registry.execute("instance-stopped", instance); } - import(definitions, mode = "replace") { - return __awaiter$1(this, void 0, void 0, function* () { - importModeDecoder.runWithException(mode); - if (!Array.isArray(definitions)) { - throw new Error("Import must be called with an array of definitions"); + async import(definitions, mode = "replace") { + importModeDecoder.runWithException(mode); + if (!Array.isArray(definitions)) { + throw new Error("Import must be called with an array of definitions"); + } + if (definitions.length > 10000) { + throw new Error("Cannot import more than 10000 app definitions in Glue42 Core."); + } + const parseResult = definitions.reduce((soFar, definition) => { + const decodeResult = allApplicationDefinitionsDecoder.run(definition); + if (!decodeResult.ok) { + soFar.invalid.push({ app: definition?.name, error: JSON.stringify(decodeResult.error) }); } - if (definitions.length > 10000) { - throw new Error("Cannot import more than 10000 app definitions in Glue42 Core."); + else { + soFar.valid.push(definition); } - const parseResult = definitions.reduce((soFar, definition) => { - const decodeResult = allApplicationDefinitionsDecoder.run(definition); - if (!decodeResult.ok) { - soFar.invalid.push({ app: definition === null || definition === void 0 ? void 0 : definition.name, error: JSON.stringify(decodeResult.error) }); - } - else { - soFar.valid.push(definition); - } - return soFar; - }, { valid: [], invalid: [] }); - const responseTimeout = this.baseApplicationsTimeoutMS + this.appImportTimeoutMS * parseResult.valid.length; - yield this.bridge.send("appManager", operations$8.import, { definitions: parseResult.valid, mode }, { methodResponseTimeoutMs: responseTimeout }); - return { - imported: parseResult.valid.map((valid) => valid.name), - errors: parseResult.invalid - }; - }); + return soFar; + }, { valid: [], invalid: [] }); + const responseTimeout = this.baseApplicationsTimeoutMS + this.appImportTimeoutMS * parseResult.valid.length; + await this.bridge.send("appManager", operations$8.import, { definitions: parseResult.valid, mode }, { methodResponseTimeoutMs: responseTimeout }); + return { + imported: parseResult.valid.map((valid) => valid.name), + errors: parseResult.invalid + }; } - remove(name) { - return __awaiter$1(this, void 0, void 0, function* () { - nonEmptyStringDecoder.runWithException(name); - yield this.bridge.send("appManager", operations$8.remove, { name }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); - }); + async remove(name) { + nonEmptyStringDecoder.runWithException(name); + await this.bridge.send("appManager", operations$8.remove, { name }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); } - clear() { - return __awaiter$1(this, void 0, void 0, function* () { - yield this.bridge.send("appManager", operations$8.clear, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); - }); + async clear() { + await this.bridge.send("appManager", operations$8.clear, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); } - export() { - return __awaiter$1(this, void 0, void 0, function* () { - const response = yield this.bridge.send("appManager", operations$8.export, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); - return response.definitions; - }); + async export() { + const response = await this.bridge.send("appManager", operations$8.export, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); + return response.definitions; } getApplications() { return this.applications.slice(); } - joinInitialChannel(initialChannelId) { - return __awaiter$1(this, void 0, void 0, function* () { - try { - yield this.channelsController.join(initialChannelId); - } - catch (error) { - this.logger.warn(`Application instance ${this.me} was unable to join the ${initialChannelId} channel. Reason: ${JSON.stringify(error)}`); - } - }); + async joinInitialChannel(initialChannelId) { + try { + await this.channelsController.join(initialChannelId); + } + catch (error) { + this.logger.warn(`Application instance ${this.me} was unable to join the ${initialChannelId} channel. Reason: ${JSON.stringify(error)}`); + } } - registerWithPlatform() { - return __awaiter$1(this, void 0, void 0, function* () { - const result = yield this.bridge.send("appManager", operations$8.appHello, { windowId: this.publicWindowId }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); - this.logger.trace("the platform responded to the hello message with a full list of apps"); - this.applications = yield Promise.all(result.apps.map((app) => this.ioc.buildApplication(app, app.instances))); - this.instances = this.applications.reduce((instancesSoFar, app) => { - instancesSoFar.push(...app.instances); - return instancesSoFar; - }, []); - this.me = this.findMyInstance(); - this.logger.trace(`all applications were parsed and saved. I am ${this.me ? "NOT a" : "a"} valid instance`); - const { channels: channelsStorageData } = this.sessionController.getWindowData(); - const channel = channelsStorageData ? channelsStorageData.currentName : result.initialChannelId; - if (channel) { - yield this.joinInitialChannel(channel); - } - }); + async registerWithPlatform() { + const result = await this.bridge.send("appManager", operations$8.appHello, { windowId: this.publicWindowId }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); + this.logger.trace("the platform responded to the hello message with a full list of apps"); + this.applications = await Promise.all(result.apps.map((app) => this.ioc.buildApplication(app, app.instances))); + this.instances = this.applications.reduce((instancesSoFar, app) => { + instancesSoFar.push(...app.instances); + return instancesSoFar; + }, []); + this.me = this.findMyInstance(); + this.logger.trace(`all applications were parsed and saved. I am ${this.me ? "NOT a" : "a"} valid instance`); + const { channels: channelsStorageData } = this.sessionController.getWindowData(); + const channel = channelsStorageData ? channelsStorageData.currentName : result.initialChannelId; + if (channel) { + await this.joinInitialChannel(channel); + } } findMyInstance() { for (const app of this.applications) { @@ -3870,6 +3804,11 @@ class AppManagerController { } class InstanceModel { + data; + bridge; + application; + me; + myCtxKey; constructor(data, bridge, application) { this.data = data; this.bridge = bridge; @@ -3888,19 +3827,19 @@ class InstanceModel { this.me = Object.freeze(api); return this.me; } - getContext() { - return __awaiter$1(this, void 0, void 0, function* () { - return this.bridge.contextLib.get(this.myCtxKey); - }); + async getContext() { + return this.bridge.contextLib.get(this.myCtxKey); } - stop() { - return __awaiter$1(this, void 0, void 0, function* () { - yield this.bridge.send("appManager", operations$8.instanceStop, { id: this.data.id }); - }); + async stop() { + await this.bridge.send("appManager", operations$8.instanceStop, { id: this.data.id }); } } class ApplicationModel { + data; + instances; + controller; + me; constructor(data, instances, controller) { this.data = data; this.instances = instances; @@ -3942,12 +3881,10 @@ class ApplicationModel { } }); } - start(context, options) { - return __awaiter$1(this, void 0, void 0, function* () { - const verifiedContext = startApplicationContextDecoder.runWithException(context); - const verifiedOptions = startApplicationOptionsDecoder.runWithException(options); - return this.controller.startApplication(this.data.name, verifiedContext, verifiedOptions); - }); + async start(context, options) { + const verifiedContext = startApplicationContextDecoder.runWithException(context); + const verifiedOptions = startApplicationOptionsDecoder.runWithException(options); + return this.controller.startApplication(this.data.name, verifiedContext, verifiedOptions); } } @@ -3955,11 +3892,13 @@ const operations$7 = { layoutAdded: { name: "layoutAdded", dataDecoder: glueLayoutDecoder }, layoutChanged: { name: "layoutChanged", dataDecoder: glueLayoutDecoder }, layoutRemoved: { name: "layoutRemoved", dataDecoder: glueLayoutDecoder }, + layoutRenamed: { name: "layoutRenamed", dataDecoder: glueLayoutDecoder }, get: { name: "get", dataDecoder: simpleLayoutConfigDecoder, resultDecoder: optionalSimpleLayoutResult }, getAll: { name: "getAll", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsSummariesResultDecoder }, export: { name: "export", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsFullConfigDecoder }, import: { name: "import", dataDecoder: layoutsImportConfigDecoder }, remove: { name: "remove", dataDecoder: simpleLayoutConfigDecoder }, + rename: { name: "rename", dataDecoder: renameLayoutConfigDecoder, resultDecoder: layoutResultDecoder }, save: { name: "save", dataDecoder: saveLayoutConfigDecoder, resultDecoder: simpleLayoutResultDecoder }, restore: { name: "restore", dataDecoder: restoreLayoutConfigDecoder }, clientSaveRequest: { name: "clientSaveRequest", dataDecoder: platformSaveRequestConfigDecoder, resultDecoder: saveRequestClientResponseDecoder }, @@ -3968,42 +3907,41 @@ const operations$7 = { checkGlobalActivated: { name: "checkGlobalActivated", resultDecoder: simpleAvailabilityResultDecoder }, getDefaultGlobal: { name: "getDefaultGlobal", resultDecoder: optionalSimpleLayoutResult }, setDefaultGlobal: { name: "setDefaultGlobal", dataDecoder: setDefaultGlobalConfigDecoder }, - clearDefaultGlobal: { name: "clearDefaultGlobal" } + clearDefaultGlobal: { name: "clearDefaultGlobal" }, + updateMetadata: { name: "updateMetadata", dataDecoder: updateLayoutMetadataConfigDecoder } }; class LayoutsController { - constructor() { - this.defaultLayoutRestoreTimeoutMS = 120000; - this.registry = lib$3(); - } + defaultLayoutRestoreTimeoutMS = 120000; + registry = CallbackRegistryFactory$1(); + bridge; + logger; + windowsController; + saveRequestSubscription; handlePlatformShutdown() { this.registry.clear(); } - start(coreGlue, ioc) { - return __awaiter$1(this, void 0, void 0, function* () { - this.logger = coreGlue.logger.subLogger("layouts.controller.web"); - this.logger.trace("starting the web layouts controller"); - this.bridge = ioc.bridge; - this.windowsController = ioc.windowsController; - this.addOperationsExecutors(); - const api = this.toApi(); - this.logger.trace("no need for platform registration, attaching the layouts property to glue and returning"); - coreGlue.layouts = api; - }); - } - handleBridgeMessage(args) { - return __awaiter$1(this, void 0, void 0, function* () { - const operationName = layoutsOperationTypesDecoder.runWithException(args.operation); - const operation = operations$7[operationName]; - if (!operation.execute) { - return; - } - let operationData = args.data; - if (operation.dataDecoder) { - operationData = operation.dataDecoder.runWithException(args.data); - } - return yield operation.execute(operationData); - }); + async start(coreGlue, ioc) { + this.logger = coreGlue.logger.subLogger("layouts.controller.web"); + this.logger.trace("starting the web layouts controller"); + this.bridge = ioc.bridge; + this.windowsController = ioc.windowsController; + this.addOperationsExecutors(); + const api = this.toApi(); + this.logger.trace("no need for platform registration, attaching the layouts property to glue and returning"); + coreGlue.layouts = api; + } + async handleBridgeMessage(args) { + const operationName = layoutsOperationTypesDecoder.runWithException(args.operation); + const operation = operations$7[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return await operation.execute(operationData); } toApi() { const api = { @@ -4023,7 +3961,10 @@ class LayoutsController { getGlobalTypeState: this.checkGlobalActivated.bind(this), getDefaultGlobal: this.getDefaultGlobal.bind(this), setDefaultGlobal: this.setDefaultGlobal.bind(this), - clearDefaultGlobal: this.clearDefaultGlobal.bind(this) + clearDefaultGlobal: this.clearDefaultGlobal.bind(this), + rename: this.rename.bind(this), + onRenamed: this.onRenamed.bind(this), + updateMetadata: this.updateMetadata.bind(this) }; return Object.freeze(api); } @@ -4031,136 +3972,119 @@ class LayoutsController { operations$7.layoutAdded.execute = this.handleOnAdded.bind(this); operations$7.layoutChanged.execute = this.handleOnChanged.bind(this); operations$7.layoutRemoved.execute = this.handleOnRemoved.bind(this); + operations$7.layoutRenamed.execute = this.handleOnRenamed.bind(this); operations$7.clientSaveRequest.execute = this.handleSaveRequest.bind(this); } - get(name, type) { - return __awaiter$1(this, void 0, void 0, function* () { - nonEmptyStringDecoder.runWithException(name); - layoutTypeDecoder.runWithException(type); - const result = yield this.bridge.send("layouts", operations$7.get, { name, type }); - return result.layout; - }); + async get(name, type) { + nonEmptyStringDecoder.runWithException(name); + layoutTypeDecoder.runWithException(type); + const result = await this.bridge.send("layouts", operations$7.get, { name, type }); + return result.layout; } - getAll(type) { - return __awaiter$1(this, void 0, void 0, function* () { - layoutTypeDecoder.runWithException(type); - const result = yield this.bridge.send("layouts", operations$7.getAll, { type }); - return result.summaries; - }); + async getAll(type) { + layoutTypeDecoder.runWithException(type); + const result = await this.bridge.send("layouts", operations$7.getAll, { type }); + return result.summaries; } - export(type) { - return __awaiter$1(this, void 0, void 0, function* () { - layoutTypeDecoder.runWithException(type); - const result = yield this.bridge.send("layouts", operations$7.export, { type }); - return result.layouts; - }); + async export(type) { + layoutTypeDecoder.runWithException(type); + const result = await this.bridge.send("layouts", operations$7.export, { type }); + return result.layouts; } - import(layouts, mode = "replace") { - return __awaiter$1(this, void 0, void 0, function* () { - importModeDecoder.runWithException(mode); - if (!Array.isArray(layouts)) { - throw new Error("Import must be called with an array of layouts"); + async import(layouts, mode = "replace") { + importModeDecoder.runWithException(mode); + if (!Array.isArray(layouts)) { + throw new Error("Import must be called with an array of layouts"); + } + if (layouts.length > 1000) { + throw new Error("Cannot import more than 1000 layouts at once in Glue42 Core."); + } + const parseResult = layouts.reduce((soFar, layout) => { + const decodeResult = glueLayoutDecoder.run(layout); + if (decodeResult.ok) { + soFar.valid.push(layout); } - if (layouts.length > 1000) { - throw new Error("Cannot import more than 1000 layouts at once in Glue42 Core."); + else { + this.logger.warn(`A layout with name: ${layout.name} was not imported, because of error: ${JSON.stringify(decodeResult.error)}`); + } + return soFar; + }, { valid: [] }); + const layoutsToImport = layouts.filter((layout) => parseResult.valid.some((validLayout) => validLayout.name === layout.name)); + await this.bridge.send("layouts", operations$7.import, { layouts: layoutsToImport, mode }); + } + async save(layout) { + newLayoutOptionsDecoder.runWithException(layout); + const saveResult = await this.bridge.send("layouts", operations$7.save, { layout }); + return saveResult.layout; + } + async restore(options) { + restoreOptionsDecoder.runWithException(options); + const invocationTimeout = options.timeout ? options.timeout * 2 : this.defaultLayoutRestoreTimeoutMS; + await this.bridge.send("layouts", operations$7.restore, { layout: options }, { methodResponseTimeoutMs: invocationTimeout }); + } + async remove(type, name) { + layoutTypeDecoder.runWithException(type); + nonEmptyStringDecoder.runWithException(name); + await this.bridge.send("layouts", operations$7.remove, { type, name }); + } + async handleSaveRequest(config) { + const response = {}; + if (this.saveRequestSubscription) { + try { + const onSaveRequestResponse = this.saveRequestSubscription(config); + response.windowContext = onSaveRequestResponse?.windowContext; } - const parseResult = layouts.reduce((soFar, layout) => { - const decodeResult = glueLayoutDecoder.run(layout); - if (decodeResult.ok) { - soFar.valid.push(layout); - } - else { - this.logger.warn(`A layout with name: ${layout.name} was not imported, because of error: ${JSON.stringify(decodeResult.error)}`); - } - return soFar; - }, { valid: [] }); - const layoutsToImport = layouts.filter((layout) => parseResult.valid.some((validLayout) => validLayout.name === layout.name)); - yield this.bridge.send("layouts", operations$7.import, { layouts: layoutsToImport, mode }); - }); - } - save(layout) { - return __awaiter$1(this, void 0, void 0, function* () { - newLayoutOptionsDecoder.runWithException(layout); - const saveResult = yield this.bridge.send("layouts", operations$7.save, { layout }); - return saveResult.layout; - }); - } - restore(options) { - return __awaiter$1(this, void 0, void 0, function* () { - restoreOptionsDecoder.runWithException(options); - const invocationTimeout = options.timeout ? options.timeout * 2 : this.defaultLayoutRestoreTimeoutMS; - yield this.bridge.send("layouts", operations$7.restore, { layout: options }, { methodResponseTimeoutMs: invocationTimeout }); - }); + catch (error) { + this.logger.warn(`An error was thrown by the onSaveRequested callback, ignoring the callback: ${JSON.stringify(error)}`); + } + } + return response; } - remove(type, name) { - return __awaiter$1(this, void 0, void 0, function* () { - layoutTypeDecoder.runWithException(type); - nonEmptyStringDecoder.runWithException(name); - yield this.bridge.send("layouts", operations$7.remove, { type, name }); - }); + async getGlobalPermissionState() { + const requestResult = await this.bridge.send("layouts", operations$7.getGlobalPermissionState, undefined); + return requestResult; } - handleSaveRequest(config) { - return __awaiter$1(this, void 0, void 0, function* () { - const response = {}; - if (this.saveRequestSubscription) { - try { - const onSaveRequestResponse = this.saveRequestSubscription(config); - response.windowContext = onSaveRequestResponse === null || onSaveRequestResponse === void 0 ? void 0 : onSaveRequestResponse.windowContext; - } - catch (error) { - this.logger.warn(`An error was thrown by the onSaveRequested callback, ignoring the callback: ${JSON.stringify(error)}`); - } - } - return response; - }); + async requestGlobalPermission() { + const currentState = (await this.getGlobalPermissionState()).state; + if (currentState === "denied") { + return { permissionGranted: false }; + } + if (currentState === "granted") { + return { permissionGranted: true }; + } + const myWindow = this.windowsController.my(); + const globalNamespace = window.glue42core || window.iobrowser; + const amIWorkspaceFrame = globalNamespace.isPlatformFrame; + if (myWindow.name !== "Platform" && !amIWorkspaceFrame) { + throw new Error("Cannot request permission for multi-window placement from any app other than the Platform."); + } + const requestResult = await this.bridge.send("layouts", operations$7.requestGlobalPermission, undefined, { methodResponseTimeoutMs: 180000 }); + return { permissionGranted: requestResult.isAvailable }; } - getGlobalPermissionState() { - return __awaiter$1(this, void 0, void 0, function* () { - const requestResult = yield this.bridge.send("layouts", operations$7.getGlobalPermissionState, undefined); - return requestResult; - }); + async checkGlobalActivated() { + const requestResult = await this.bridge.send("layouts", operations$7.checkGlobalActivated, undefined); + return { activated: requestResult.isAvailable }; } - requestGlobalPermission() { - return __awaiter$1(this, void 0, void 0, function* () { - const currentState = (yield this.getGlobalPermissionState()).state; - if (currentState === "denied") { - return { permissionGranted: false }; - } - if (currentState === "granted") { - return { permissionGranted: true }; - } - const myWindow = this.windowsController.my(); - const globalNamespace = window.glue42core || window.iobrowser; - const amIWorkspaceFrame = globalNamespace.isPlatformFrame; - if (myWindow.name !== "Platform" && !amIWorkspaceFrame) { - throw new Error("Cannot request permission for multi-window placement from any app other than the Platform."); - } - const requestResult = yield this.bridge.send("layouts", operations$7.requestGlobalPermission, undefined, { methodResponseTimeoutMs: 180000 }); - return { permissionGranted: requestResult.isAvailable }; - }); + async getDefaultGlobal() { + const requestResult = await this.bridge.send("layouts", operations$7.getDefaultGlobal, undefined, undefined, { includeOperationCheck: true }); + return requestResult.layout; } - checkGlobalActivated() { - return __awaiter$1(this, void 0, void 0, function* () { - const requestResult = yield this.bridge.send("layouts", operations$7.checkGlobalActivated, undefined); - return { activated: requestResult.isAvailable }; - }); + async setDefaultGlobal(name) { + nonEmptyStringDecoder.runWithException(name); + await this.bridge.send("layouts", operations$7.setDefaultGlobal, { name }, undefined, { includeOperationCheck: true }); } - getDefaultGlobal() { - return __awaiter$1(this, void 0, void 0, function* () { - const requestResult = yield this.bridge.send("layouts", operations$7.getDefaultGlobal, undefined, undefined, { includeOperationCheck: true }); - return requestResult.layout; - }); + async clearDefaultGlobal() { + await this.bridge.send("layouts", operations$7.clearDefaultGlobal, undefined, undefined, { includeOperationCheck: true }); } - setDefaultGlobal(name) { - return __awaiter$1(this, void 0, void 0, function* () { - nonEmptyStringDecoder.runWithException(name); - yield this.bridge.send("layouts", operations$7.setDefaultGlobal, { name }, undefined, { includeOperationCheck: true }); - }); + async rename(layout, newName) { + glueLayoutDecoder.runWithException(layout); + nonEmptyStringDecoder.runWithException(newName); + const result = await this.bridge.send("layouts", operations$7.rename, { layout, newName }, undefined, { includeOperationCheck: true }); + return result; } - clearDefaultGlobal() { - return __awaiter$1(this, void 0, void 0, function* () { - yield this.bridge.send("layouts", operations$7.clearDefaultGlobal, undefined, undefined, { includeOperationCheck: true }); - }); + async updateMetadata(layout) { + glueLayoutDecoder.runWithException(layout); + await this.bridge.send("layouts", operations$7.updateMetadata, { layout }, undefined, { includeOperationCheck: true }); } onAdded(callback) { this.export("Global").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => { }); @@ -4173,6 +4097,12 @@ class LayoutsController { onRemoved(callback) { return this.registry.add(operations$7.layoutRemoved.name, callback); } + onRenamed(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to onRenamed, because the provided callback is not a function!"); + } + return this.registry.add(operations$7.layoutRenamed.name, callback); + } subscribeOnSaveRequested(callback) { if (typeof callback !== "function") { throw new Error("Cannot subscribe to onSaveRequested, because the provided argument is not a valid callback function."); @@ -4185,20 +4115,17 @@ class LayoutsController { delete this.saveRequestSubscription; }; } - handleOnAdded(layout) { - return __awaiter$1(this, void 0, void 0, function* () { - this.registry.execute(operations$7.layoutAdded.name, layout); - }); + async handleOnAdded(layout) { + this.registry.execute(operations$7.layoutAdded.name, layout); } - handleOnChanged(layout) { - return __awaiter$1(this, void 0, void 0, function* () { - this.registry.execute(operations$7.layoutChanged.name, layout); - }); + async handleOnChanged(layout) { + this.registry.execute(operations$7.layoutChanged.name, layout); } - handleOnRemoved(layout) { - return __awaiter$1(this, void 0, void 0, function* () { - this.registry.execute(operations$7.layoutRemoved.name, layout); - }); + async handleOnRemoved(layout) { + this.registry.execute(operations$7.layoutRemoved.name, layout); + } + async handleOnRenamed(layout) { + this.registry.execute(operations$7.layoutRenamed.name, layout); } } @@ -4223,516 +4150,153 @@ const operations$6 = { stateChange: { name: "stateChange", resultDecoder: notificationSetStateRequestDecoder } }; -var shortidExports$1 = {}; -var shortid$3 = { - get exports(){ return shortidExports$1; }, - set exports(v){ shortidExports$1 = v; }, -}; - -var libExports$1 = {}; -var lib$2 = { - get exports(){ return libExports$1; }, - set exports(v){ libExports$1 = v; }, -}; - -// Found this seed-based random generator somewhere -// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu) - -var seed$1 = 1; +const urlAlphabet$1 = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'; -/** - * return a random number based on a seed - * @param seed - * @returns {number} - */ -function getNextValue$1() { - seed$1 = (seed$1 * 9301 + 49297) % 233280; - return seed$1/(233280.0); -} - -function setSeed$3(_seed_) { - seed$1 = _seed_; -} - -var randomFromSeed$3 = { - nextValue: getNextValue$1, - seed: setSeed$3 +let nanoid$1 = (size = 21) => { + let id = ''; + let bytes = crypto.getRandomValues(new Uint8Array(size)); + while (size--) { + id += urlAlphabet$1[bytes[size] & 63]; + } + return id }; -var randomFromSeed$2 = randomFromSeed$3; - -var ORIGINAL$1 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-'; -var alphabet$5; -var previousSeed$1; - -var shuffled$1; - -function reset$1() { - shuffled$1 = false; -} - -function setCharacters$1(_alphabet_) { - if (!_alphabet_) { - if (alphabet$5 !== ORIGINAL$1) { - alphabet$5 = ORIGINAL$1; - reset$1(); +class NotificationsController { + registry = CallbackRegistryFactory$1(); + logger; + bridge; + notificationsSettings; + notifications = {}; + coreGlue; + buildNotificationFunc; + handlePlatformShutdown() { + this.notifications = {}; + this.registry.clear(); + } + async start(coreGlue, ioc) { + this.logger = coreGlue.logger.subLogger("notifications.controller.web"); + this.logger.trace("starting the web notifications controller"); + this.bridge = ioc.bridge; + this.coreGlue = coreGlue; + this.notificationsSettings = ioc.config.notifications; + this.buildNotificationFunc = ioc.buildNotification; + const api = this.toApi(); + this.addOperationExecutors(); + coreGlue.notifications = api; + this.logger.trace("notifications are ready"); + } + async handleBridgeMessage(args) { + const operationName = notificationsOperationTypesDecoder.runWithException(args.operation); + const operation = operations$6[operationName]; + if (!operation.execute) { + return; } - return; + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return await operation.execute(operationData); } - - if (_alphabet_ === alphabet$5) { - return; + toApi() { + const api = { + raise: this.raise.bind(this), + requestPermission: this.requestPermission.bind(this), + getPermission: this.getPermission.bind(this), + list: this.list.bind(this), + onRaised: this.onRaised.bind(this), + onClosed: this.onClosed.bind(this), + click: this.click.bind(this), + clear: this.clear.bind(this), + clearAll: this.clearAll.bind(this), + clearOld: this.clearOld.bind(this), + configure: this.configure.bind(this), + getConfiguration: this.getConfiguration.bind(this), + getFilter: this.getFilter.bind(this), + setFilter: this.setFilter.bind(this), + setState: this.setState.bind(this), + onConfigurationChanged: this.onConfigurationChanged.bind(this), + onActiveCountChanged: this.onActiveCountChanged.bind(this), + onStateChanged: this.onStateChanged.bind(this) + }; + return Object.freeze(api); } - - if (_alphabet_.length !== ORIGINAL$1.length) { - throw new Error('Custom alphabet for shortid must be ' + ORIGINAL$1.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_); + async getPermission() { + const queryResult = await this.bridge.send("notifications", operations$6.getPermission, undefined); + return queryResult.permission; } - - var unique = _alphabet_.split('').filter(function(item, ind, arr){ - return ind !== arr.lastIndexOf(item); - }); - - if (unique.length) { - throw new Error('Custom alphabet for shortid must be ' + ORIGINAL$1.length + ' unique characters. These characters were not unique: ' + unique.join(', ')); + async requestPermission() { + const permissionResult = await this.bridge.send("notifications", operations$6.requestPermission, undefined); + return permissionResult.permissionGranted; } - - alphabet$5 = _alphabet_; - reset$1(); -} - -function characters$1(_alphabet_) { - setCharacters$1(_alphabet_); - return alphabet$5; -} - -function setSeed$2(seed) { - randomFromSeed$2.seed(seed); - if (previousSeed$1 !== seed) { - reset$1(); - previousSeed$1 = seed; + async raise(options) { + const settings = glue42NotificationOptionsDecoder.runWithException(options); + settings.showToast = typeof settings.showToast === "boolean" ? settings.showToast : true; + settings.showInPanel = typeof settings.showInPanel === "boolean" ? settings.showInPanel : true; + const permissionGranted = await this.requestPermission(); + if (!permissionGranted) { + throw new Error("Cannot raise the notification, because the user has declined the permission request"); + } + const id = nanoid$1(10); + const raiseResult = await this.bridge.send("notifications", operations$6.raiseNotification, { settings, id }); + const notification = this.buildNotificationFunc(raiseResult.settings, id); + this.notifications[id] = notification; + return notification; } -} - -function shuffle$1() { - if (!alphabet$5) { - setCharacters$1(ORIGINAL$1); + async list() { + const bridgeResponse = await this.bridge.send("notifications", operations$6.list, undefined, undefined, { includeOperationCheck: true }); + return bridgeResponse.notifications; } - - var sourceArray = alphabet$5.split(''); - var targetArray = []; - var r = randomFromSeed$2.nextValue(); - var characterIndex; - - while (sourceArray.length > 0) { - r = randomFromSeed$2.nextValue(); - characterIndex = Math.floor(r * sourceArray.length); - targetArray.push(sourceArray.splice(characterIndex, 1)[0]); + onRaised(callback) { + if (typeof callback !== "function") { + throw new Error("onRaised expects a callback of type function"); + } + return this.registry.add("notification-raised", callback); } - return targetArray.join(''); -} - -function getShuffled$1() { - if (shuffled$1) { - return shuffled$1; + onClosed(callback) { + if (typeof callback !== "function") { + throw new Error("onRaised expects a callback of type function"); + } + return this.registry.add("notification-closed", callback); } - shuffled$1 = shuffle$1(); - return shuffled$1; -} - -/** - * lookup shuffled letter - * @param index - * @returns {string} - */ -function lookup$1(index) { - var alphabetShuffled = getShuffled$1(); - return alphabetShuffled[index]; -} - -function get$1 () { - return alphabet$5 || ORIGINAL$1; -} - -var alphabet_1$1 = { - get: get$1, - characters: characters$1, - seed: setSeed$2, - lookup: lookup$1, - shuffled: getShuffled$1 -}; - -var crypto$1 = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto - -var randomByte$1; - -if (!crypto$1 || !crypto$1.getRandomValues) { - randomByte$1 = function(size) { - var bytes = []; - for (var i = 0; i < size; i++) { - bytes.push(Math.floor(Math.random() * 256)); + async click(id, action) { + nonEmptyStringDecoder.runWithException(id); + if (action) { + nonEmptyStringDecoder.runWithException(action); } - return bytes; - }; -} else { - randomByte$1 = function(size) { - return crypto$1.getRandomValues(new Uint8Array(size)); - }; -} - -var randomByteBrowser$1 = randomByte$1; - -// This file replaces `format.js` in bundlers like webpack or Rollup, -// according to `browser` config in `package.json`. - -var format_browser$1 = function (random, alphabet, size) { - // We can’t use bytes bigger than the alphabet. To make bytes values closer - // to the alphabet, we apply bitmask on them. We look for the closest - // `2 ** x - 1` number, which will be bigger than alphabet size. If we have - // 30 symbols in the alphabet, we will take 31 (00011111). - // We do not use faster Math.clz32, because it is not available in browsers. - var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1; - // Bitmask is not a perfect solution (in our example it will pass 31 bytes, - // which is bigger than the alphabet). As a result, we will need more bytes, - // than ID size, because we will refuse bytes bigger than the alphabet. - - // Every hardware random generator call is costly, - // because we need to wait for entropy collection. This is why often it will - // be faster to ask for few extra bytes in advance, to avoid additional calls. - - // Here we calculate how many random bytes should we call in advance. - // It depends on ID length, mask / alphabet size and magic number 1.6 - // (which was selected according benchmarks). - - // -~f => Math.ceil(f) if n is float number - // -~i => i + 1 if n is integer number - var step = -~(1.6 * mask * size / alphabet.length); - var id = ''; - - while (true) { - var bytes = random(step); - // Compact alternative for `for (var i = 0; i < step; i++)` - var i = step; - while (i--) { - // If random byte is bigger than alphabet even after bitmask, - // we refuse it by `|| ''`. - id += alphabet[bytes[i] & mask] || ''; - // More compact than `id.length + 1 === size` - if (id.length === +size) return id + await this.bridge.send("notifications", operations$6.click, { id, action }, undefined, { includeOperationCheck: true }); } - } -}; - -var alphabet$4 = alphabet_1$1; -var random$1 = randomByteBrowser$1; -var format$1 = format_browser$1; - -function generate$3(number) { - var loopCounter = 0; - var done; - - var str = ''; - - while (!done) { - str = str + format$1(random$1, alphabet$4.get(), 1); - done = number < (Math.pow(16, loopCounter + 1 ) ); - loopCounter++; + async clear(id) { + nonEmptyStringDecoder.runWithException(id); + await this.bridge.send("notifications", operations$6.clear, { id }, undefined, { includeOperationCheck: true }); } - return str; -} - -var generate_1$1 = generate$3; - -var generate$2 = generate_1$1; - -// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness. -// This number should be updated every year or so to keep the generated id short. -// To regenerate `new Date() - 0` and bump the version. Always bump the version! -var REDUCE_TIME$1 = 1567752802062; - -// don't change unless we change the algos or REDUCE_TIME -// must be an integer and less than 16 -var version$3 = 7; - -// Counter is used when shortid is called multiple times in one second. -var counter$1; - -// Remember the last time shortid was called in case counter is needed. -var previousSeconds$1; - -/** - * Generate unique id - * Returns string id - */ -function build$1(clusterWorkerId) { - var str = ''; - - var seconds = Math.floor((Date.now() - REDUCE_TIME$1) * 0.001); - - if (seconds === previousSeconds$1) { - counter$1++; - } else { - counter$1 = 0; - previousSeconds$1 = seconds; + async clearAll() { + await this.bridge.send("notifications", operations$6.clearAll, undefined, undefined, { includeOperationCheck: true }); } - - str = str + generate$2(version$3); - str = str + generate$2(clusterWorkerId); - if (counter$1 > 0) { - str = str + generate$2(counter$1); + async clearOld() { + await this.bridge.send("notifications", operations$6.clearOld, undefined, undefined, { includeOperationCheck: true }); } - str = str + generate$2(seconds); - return str; -} - -var build_1$1 = build$1; - -var alphabet$3 = alphabet_1$1; - -function isShortId$1(id) { - if (!id || typeof id !== 'string' || id.length < 6 ) { - return false; + async configure(config) { + const verifiedConfig = notificationsConfigurationDecoder.runWithException(config); + await this.bridge.send("notifications", operations$6.configure, { configuration: verifiedConfig }, undefined, { includeOperationCheck: true }); } - - var nonAlphabetic = new RegExp('[^' + - alphabet$3.get().replace(/[|\\{}()[\]^$+*?.-]/g, '\\$&') + - ']'); - return !nonAlphabetic.test(id); -} - -var isValid$1 = isShortId$1; - -(function (module) { - - var alphabet = alphabet_1$1; - var build = build_1$1; - var isValid = isValid$1; - - // if you are using cluster or multiple servers use this to make each instance - // has a unique value for worker - // Note: I don't know if this is automatically set when using third - // party cluster solutions such as pm2. - var clusterWorkerId = 0; - - /** - * Set the seed. - * Highly recommended if you don't want people to try to figure out your id schema. - * exposed as shortid.seed(int) - * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps. - */ - function seed(seedValue) { - alphabet.seed(seedValue); - return module.exports; - } - - /** - * Set the cluster worker or machine id - * exposed as shortid.worker(int) - * @param workerId worker must be positive integer. Number less than 16 is recommended. - * returns shortid module so it can be chained. - */ - function worker(workerId) { - clusterWorkerId = workerId; - return module.exports; - } - - /** - * - * sets new characters to use in the alphabet - * returns the shuffled alphabet - */ - function characters(newCharacters) { - if (newCharacters !== undefined) { - alphabet.characters(newCharacters); - } - - return alphabet.shuffled(); - } - - /** - * Generate unique id - * Returns string id - */ - function generate() { - return build(clusterWorkerId); - } - - // Export all other functions as properties of the generate function - module.exports = generate; - module.exports.generate = generate; - module.exports.seed = seed; - module.exports.worker = worker; - module.exports.characters = characters; - module.exports.isValid = isValid; -} (lib$2)); - -(function (module) { - module.exports = libExports$1; -} (shortid$3)); - -var shortid$2 = /*@__PURE__*/getDefaultExportFromCjs$1(shortidExports$1); - -class NotificationsController { - constructor() { - this.registry = lib$3(); - this.notifications = {}; - } - handlePlatformShutdown() { - this.notifications = {}; - this.registry.clear(); - } - start(coreGlue, ioc) { - return __awaiter$1(this, void 0, void 0, function* () { - this.logger = coreGlue.logger.subLogger("notifications.controller.web"); - this.logger.trace("starting the web notifications controller"); - this.bridge = ioc.bridge; - this.coreGlue = coreGlue; - this.notificationsSettings = ioc.config.notifications; - this.buildNotificationFunc = ioc.buildNotification; - const api = this.toApi(); - this.addOperationExecutors(); - coreGlue.notifications = api; - this.logger.trace("notifications are ready"); - }); - } - handleBridgeMessage(args) { - return __awaiter$1(this, void 0, void 0, function* () { - const operationName = notificationsOperationTypesDecoder.runWithException(args.operation); - const operation = operations$6[operationName]; - if (!operation.execute) { - return; - } - let operationData = args.data; - if (operation.dataDecoder) { - operationData = operation.dataDecoder.runWithException(args.data); - } - return yield operation.execute(operationData); - }); - } - toApi() { - const api = { - raise: this.raise.bind(this), - requestPermission: this.requestPermission.bind(this), - getPermission: this.getPermission.bind(this), - list: this.list.bind(this), - onRaised: this.onRaised.bind(this), - onClosed: this.onClosed.bind(this), - click: this.click.bind(this), - clear: this.clear.bind(this), - clearAll: this.clearAll.bind(this), - clearOld: this.clearOld.bind(this), - configure: this.configure.bind(this), - getConfiguration: this.getConfiguration.bind(this), - getFilter: this.getFilter.bind(this), - setFilter: this.setFilter.bind(this), - setState: this.setState.bind(this), - onConfigurationChanged: this.onConfigurationChanged.bind(this), - onActiveCountChanged: this.onActiveCountChanged.bind(this), - onStateChanged: this.onStateChanged.bind(this) - }; - return Object.freeze(api); - } - getPermission() { - return __awaiter$1(this, void 0, void 0, function* () { - const queryResult = yield this.bridge.send("notifications", operations$6.getPermission, undefined); - return queryResult.permission; - }); - } - requestPermission() { - return __awaiter$1(this, void 0, void 0, function* () { - const permissionResult = yield this.bridge.send("notifications", operations$6.requestPermission, undefined); - return permissionResult.permissionGranted; - }); - } - raise(options) { - return __awaiter$1(this, void 0, void 0, function* () { - const settings = glue42NotificationOptionsDecoder.runWithException(options); - settings.showToast = typeof settings.showToast === "boolean" ? settings.showToast : true; - settings.showInPanel = typeof settings.showInPanel === "boolean" ? settings.showInPanel : true; - const permissionGranted = yield this.requestPermission(); - if (!permissionGranted) { - throw new Error("Cannot raise the notification, because the user has declined the permission request"); - } - const id = shortidExports$1.generate(); - const raiseResult = yield this.bridge.send("notifications", operations$6.raiseNotification, { settings, id }); - const notification = this.buildNotificationFunc(raiseResult.settings, id); - this.notifications[id] = notification; - return notification; - }); + async getConfiguration() { + const response = await this.bridge.send("notifications", operations$6.getConfiguration, undefined, undefined, { includeOperationCheck: true }); + return response.configuration; } - list() { - return __awaiter$1(this, void 0, void 0, function* () { - const bridgeResponse = yield this.bridge.send("notifications", operations$6.list, undefined, undefined, { includeOperationCheck: true }); - return bridgeResponse.notifications; - }); - } - onRaised(callback) { - if (typeof callback !== "function") { - throw new Error("onRaised expects a callback of type function"); - } - return this.registry.add("notification-raised", callback); - } - onClosed(callback) { - if (typeof callback !== "function") { - throw new Error("onRaised expects a callback of type function"); - } - return this.registry.add("notification-closed", callback); - } - click(id, action) { - return __awaiter$1(this, void 0, void 0, function* () { - nonEmptyStringDecoder.runWithException(id); - if (action) { - nonEmptyStringDecoder.runWithException(action); - } - yield this.bridge.send("notifications", operations$6.click, { id, action }, undefined, { includeOperationCheck: true }); - }); - } - clear(id) { - return __awaiter$1(this, void 0, void 0, function* () { - nonEmptyStringDecoder.runWithException(id); - yield this.bridge.send("notifications", operations$6.clear, { id }, undefined, { includeOperationCheck: true }); - }); - } - clearAll() { - return __awaiter$1(this, void 0, void 0, function* () { - yield this.bridge.send("notifications", operations$6.clearAll, undefined, undefined, { includeOperationCheck: true }); - }); - } - clearOld() { - return __awaiter$1(this, void 0, void 0, function* () { - yield this.bridge.send("notifications", operations$6.clearOld, undefined, undefined, { includeOperationCheck: true }); - }); - } - configure(config) { - return __awaiter$1(this, void 0, void 0, function* () { - const verifiedConfig = notificationsConfigurationDecoder.runWithException(config); - yield this.bridge.send("notifications", operations$6.configure, { configuration: verifiedConfig }, undefined, { includeOperationCheck: true }); - }); - } - getConfiguration() { - return __awaiter$1(this, void 0, void 0, function* () { - const response = yield this.bridge.send("notifications", operations$6.getConfiguration, undefined, undefined, { includeOperationCheck: true }); - return response.configuration; - }); + async getFilter() { + const response = await this.bridge.send("notifications", operations$6.getConfiguration, undefined, undefined, { includeOperationCheck: true }); + return response.configuration.sourceFilter; } - getFilter() { - return __awaiter$1(this, void 0, void 0, function* () { - const response = yield this.bridge.send("notifications", operations$6.getConfiguration, undefined, undefined, { includeOperationCheck: true }); - return response.configuration.sourceFilter; - }); - } - setFilter(filter) { - return __awaiter$1(this, void 0, void 0, function* () { - const verifiedFilter = notificationFilterDecoder.runWithException(filter); - yield this.bridge.send("notifications", operations$6.configure, { configuration: { sourceFilter: verifiedFilter } }, undefined, { includeOperationCheck: true }); - return verifiedFilter; - }); + async setFilter(filter) { + const verifiedFilter = notificationFilterDecoder.runWithException(filter); + await this.bridge.send("notifications", operations$6.configure, { configuration: { sourceFilter: verifiedFilter } }, undefined, { includeOperationCheck: true }); + return verifiedFilter; } - setState(id, state) { - return __awaiter$1(this, void 0, void 0, function* () { - nonEmptyStringDecoder.runWithException(id); - notificationStateDecoder.runWithException(state); - yield this.bridge.send("notifications", operations$6.setState, { id, state }, undefined, { includeOperationCheck: true }); - }); + async setState(id, state) { + nonEmptyStringDecoder.runWithException(id); + notificationStateDecoder.runWithException(state); + await this.bridge.send("notifications", operations$6.setState, { id, state }, undefined, { includeOperationCheck: true }); } onConfigurationChanged(callback) { if (typeof callback !== "function") { @@ -4761,61 +4325,46 @@ class NotificationsController { operations$6.activeCountChange.execute = this.handleActiveCountChanged.bind(this); operations$6.stateChange.execute = this.handleNotificationStateChanged.bind(this); } - handleConfigurationChanged(data) { - return __awaiter$1(this, void 0, void 0, function* () { - this.registry.execute("notifications-config-changed", data.configuration); - }); + async handleConfigurationChanged(data) { + this.registry.execute("notifications-config-changed", data.configuration); } - handleActiveCountChanged(data) { - return __awaiter$1(this, void 0, void 0, function* () { - this.registry.execute("notifications-active-count-changed", data); - }); + async handleActiveCountChanged(data) { + this.registry.execute("notifications-active-count-changed", data); } - handleNotificationStateChanged(data) { - return __awaiter$1(this, void 0, void 0, function* () { - this.registry.execute("notification-state-changed", { id: data.id }, data.state); - }); + async handleNotificationStateChanged(data) { + this.registry.execute("notification-state-changed", { id: data.id }, data.state); } - handleNotificationShow(data) { - return __awaiter$1(this, void 0, void 0, function* () { - if (!data.id) { - return; - } - const notification = this.notifications[data.id]; - if (notification && notification.onshow) { - notification.onshow(); - } - }); + async handleNotificationShow(data) { + if (!data.id) { + return; + } + const notification = this.notifications[data.id]; + if (notification && notification.onshow) { + notification.onshow(); + } } - handleNotificationClick(data) { - var _a, _b, _c, _d, _e; - return __awaiter$1(this, void 0, void 0, function* () { - if (!data.action && ((_a = this.notificationsSettings) === null || _a === void 0 ? void 0 : _a.defaultClick)) { - this.notificationsSettings.defaultClick(this.coreGlue, data.definition); - } - if (data.action && ((_c = (_b = this.notificationsSettings) === null || _b === void 0 ? void 0 : _b.actionClicks) === null || _c === void 0 ? void 0 : _c.some((actionDef) => actionDef.action === data.action))) { - const foundHandler = (_e = (_d = this.notificationsSettings) === null || _d === void 0 ? void 0 : _d.actionClicks) === null || _e === void 0 ? void 0 : _e.find((actionDef) => actionDef.action === data.action); - foundHandler.handler(this.coreGlue, data.definition); - } - if (!data.id) { - return; - } - const notification = this.notifications[data.id]; - if (notification && notification.onclick) { - notification.onclick(); - delete this.notifications[data.id]; - } - }); + async handleNotificationClick(data) { + if (!data.action && this.notificationsSettings?.defaultClick) { + this.notificationsSettings.defaultClick(this.coreGlue, data.definition); + } + if (data.action && this.notificationsSettings?.actionClicks?.some((actionDef) => actionDef.action === data.action)) { + const foundHandler = this.notificationsSettings?.actionClicks?.find((actionDef) => actionDef.action === data.action); + foundHandler.handler(this.coreGlue, data.definition); + } + if (!data.id) { + return; + } + const notification = this.notifications[data.id]; + if (notification && notification.onclick) { + notification.onclick(); + delete this.notifications[data.id]; + } } - handleNotificationRaised(data) { - return __awaiter$1(this, void 0, void 0, function* () { - this.registry.execute("notification-raised", data.notification); - }); + async handleNotificationRaised(data) { + this.registry.execute("notification-raised", data.notification); } - handleNotificationClosed(data) { - return __awaiter$1(this, void 0, void 0, function* () { - this.registry.execute("notification-closed", data); - }); + async handleNotificationClosed(data) { + this.registry.execute("notification-closed", data); } } @@ -4839,41 +4388,41 @@ const MAX_SET_TIMEOUT_DELAY = 2147483647; const DEFAULT_PICK_HANDLER_BY_TIMEOUT = 90 * 1000; class IntentsController { - constructor() { - this.myIntents = new Set(); - this.useIntentsResolverUI = true; - this.unregisterIntentPromises = []; - } - start(coreGlue, ioc) { - return __awaiter$1(this, void 0, void 0, function* () { - this.logger = coreGlue.logger.subLogger("intents.controller.web"); - this.logger.trace("starting the web intents controller"); - this.bridge = ioc.bridge; - this.interop = coreGlue.interop; - this.legacyIntentsController = ioc.legacyIntentsHelper; - this.checkIfIntentsResolverIsEnabled(ioc.config); - const api = this.toApi(); - this.logger.trace("no need for platform registration, attaching the intents property to glue and returning"); - coreGlue.intents = api; - }); + bridge; + logger; + interop; + legacyIntentsController; + myIntents = new Set(); + useIntentsResolverUI = true; + intentsResolverAppName; + intentResolverResponseTimeout; + unregisterIntentPromises = []; + async start(coreGlue, ioc) { + this.logger = coreGlue.logger.subLogger("intents.controller.web"); + this.logger.trace("starting the web intents controller"); + this.bridge = ioc.bridge; + this.interop = coreGlue.interop; + this.legacyIntentsController = ioc.legacyIntentsHelper; + this.checkIfIntentsResolverIsEnabled(ioc.config); + const api = this.toApi(); + this.logger.trace("no need for platform registration, attaching the intents property to glue and returning"); + coreGlue.intents = api; } handlePlatformShutdown() { this.myIntents = new Set(); this.unregisterIntentPromises = []; } - handleBridgeMessage(args) { - return __awaiter$1(this, void 0, void 0, function* () { - const operationName = intentsOperationTypesDecoder.runWithException(args.operation); - const operation = operations$5[operationName]; - if (!operation.execute) { - return; - } - let operationData = args.data; - if (operation.dataDecoder) { - operationData = operation.dataDecoder.runWithException(args.data); - } - return yield operation.execute(operationData); - }); + async handleBridgeMessage(args) { + const operationName = intentsOperationTypesDecoder.runWithException(args.operation); + const operation = operations$5[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return await operation.execute(operationData); } toApi() { const api = { @@ -4887,66 +4436,59 @@ class IntentsController { }; return api; } - raise(request) { - return __awaiter$1(this, void 0, void 0, function* () { - const validatedIntentRequest = raiseRequestDecoder.runWithException(request); - const intentRequest = typeof validatedIntentRequest === "string" - ? { intent: validatedIntentRequest } - : validatedIntentRequest; - yield Promise.all(this.unregisterIntentPromises); - const requestWithResolverInfo = { intentRequest, resolverConfig: this.getResolverConfigByRequest({ intentRequest }) }; - const isRaiseOperationSupported = yield this.isRaiseOperationSupported(); - if (!isRaiseOperationSupported.supported) { - this.logger.warn(`${isRaiseOperationSupported.reason}. Invoking legacy raise method`); - return this.legacyIntentsController.raise(requestWithResolverInfo, this.find.bind(this)); - } - this.logger.trace(`Sending raise request to the platform: ${JSON.stringify(request)} and method response timeout of ${this.intentResolverResponseTimeout}ms`); - const methodResponseTimeoutMs = intentRequest.waitUserResponseIndefinitely - ? MAX_SET_TIMEOUT_DELAY - : (intentRequest.timeout || this.intentResolverResponseTimeout) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT; - const response = yield this.bridge.send("intents", operations$5.raise, requestWithResolverInfo, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }); - return response; - }); + async raise(request) { + const validatedIntentRequest = raiseRequestDecoder.runWithException(request); + const intentRequest = typeof validatedIntentRequest === "string" + ? { intent: validatedIntentRequest } + : validatedIntentRequest; + await Promise.all(this.unregisterIntentPromises); + const requestWithResolverInfo = { intentRequest, resolverConfig: this.getResolverConfigByRequest({ intentRequest }) }; + const isRaiseOperationSupported = await this.isRaiseOperationSupported(); + if (!isRaiseOperationSupported.supported) { + this.logger.warn(`${isRaiseOperationSupported.reason}. Invoking legacy raise method`); + return this.legacyIntentsController.raise(requestWithResolverInfo, this.find.bind(this)); + } + this.logger.trace(`Sending raise request to the platform: ${JSON.stringify(request)} and method response timeout of ${this.intentResolverResponseTimeout}ms`); + const methodResponseTimeoutMs = intentRequest.waitUserResponseIndefinitely + ? MAX_SET_TIMEOUT_DELAY + : (intentRequest.timeout || this.intentResolverResponseTimeout) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT; + const response = await this.bridge.send("intents", operations$5.raise, requestWithResolverInfo, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }); + return response; } getResolverConfigByRequest(filter) { - var _a, _b, _c, _d; if (filter.handlerFilter) { return { - enabled: typeof ((_a = filter.handlerFilter) === null || _a === void 0 ? void 0 : _a.openResolver) === "boolean" ? (_b = filter.handlerFilter) === null || _b === void 0 ? void 0 : _b.openResolver : this.useIntentsResolverUI, + enabled: typeof filter.handlerFilter?.openResolver === "boolean" ? filter.handlerFilter?.openResolver : this.useIntentsResolverUI, appName: this.intentsResolverAppName, - waitResponseTimeout: ((_c = filter.handlerFilter) === null || _c === void 0 ? void 0 : _c.timeout) || DEFAULT_PICK_HANDLER_BY_TIMEOUT + waitResponseTimeout: filter.handlerFilter?.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT }; } - const waitResponseTimeout = ((_d = filter.intentRequest) === null || _d === void 0 ? void 0 : _d.waitUserResponseIndefinitely) ? MAX_SET_TIMEOUT_DELAY : this.intentResolverResponseTimeout; + const waitResponseTimeout = filter.intentRequest?.waitUserResponseIndefinitely ? MAX_SET_TIMEOUT_DELAY : this.intentResolverResponseTimeout; return { enabled: this.useIntentsResolverUI, appName: this.intentsResolverAppName, waitResponseTimeout }; } - isRaiseOperationSupported() { - return __awaiter$1(this, void 0, void 0, function* () { - try { - const { isSupported } = yield this.bridge.send("intents", systemOperations.operationCheck, { operation: "raise" }); - return { - supported: isSupported, - reason: isSupported ? "" : "The platform of this client is outdated and does not support \"raise\" operation" - }; - } - catch (error) { - return { - supported: false, - reason: "The platform of this client is outdated and does not support \"operationCheck\" command" - }; - } - }); + async isRaiseOperationSupported() { + try { + const { isSupported } = await this.bridge.send("intents", systemOperations.operationCheck, { operation: "raise" }); + return { + supported: isSupported, + reason: isSupported ? "" : "The platform of this client is outdated and does not support \"raise\" operation" + }; + } + catch (error) { + return { + supported: false, + reason: "The platform of this client is outdated and does not support \"operationCheck\" command" + }; + } } - all() { - return __awaiter$1(this, void 0, void 0, function* () { - yield Promise.all(this.unregisterIntentPromises); - const result = yield this.bridge.send("intents", operations$5.getIntents, undefined); - return result.intents; - }); + async all() { + await Promise.all(this.unregisterIntentPromises); + const result = await this.bridge.send("intents", operations$5.getIntents, undefined); + return result.intents; } addIntentListener(intent, handler) { AddIntentListenerDecoder.runWithException(intent); @@ -4971,12 +4513,12 @@ class IntentsController { }; let intentFlag = {}; if (typeof intent === "object") { - const rest = __rest$2(intent, ["intent"]); + const { intent: removed, ...rest } = intent; intentFlag = rest; } registerPromise = this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args) => { if (this.myIntents.has(intentName)) { - const rest = __rest$2(args, ["_initialCallerId"]); + const { _initialCallerId, ...rest } = args; return handler(rest); } }); @@ -4986,73 +4528,68 @@ class IntentsController { }); return result; } - register(intent, handler) { - return __awaiter$1(this, void 0, void 0, function* () { - AddIntentListenerDecoder.runWithException(intent); - if (typeof handler !== "function") { - throw new Error("Cannot add intent listener, because the provided handler is not a function!"); - } - yield Promise.all(this.unregisterIntentPromises); - const intentName = typeof intent === "string" ? intent : intent.intent; - const methodName = this.buildInteropMethodName(intentName); - const alreadyRegistered = this.myIntents.has(intentName); - if (alreadyRegistered) { - throw new Error(`Intent listener for intent ${intentName} already registered!`); - } - this.myIntents.add(intentName); - let intentFlag = {}; - if (typeof intent === "object") { - const rest = __rest$2(intent, ["intent"]); - intentFlag = rest; - } - try { - yield this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args) => { - if (this.myIntents.has(intentName)) { - const { _initialCallerId } = args, rest = __rest$2(args, ["_initialCallerId"]); - const caller = this.interop.servers().find((server) => server.instance === _initialCallerId); - return handler(rest, caller); + async register(intent, handler) { + AddIntentListenerDecoder.runWithException(intent); + if (typeof handler !== "function") { + throw new Error("Cannot add intent listener, because the provided handler is not a function!"); + } + await Promise.all(this.unregisterIntentPromises); + const intentName = typeof intent === "string" ? intent : intent.intent; + const methodName = this.buildInteropMethodName(intentName); + const alreadyRegistered = this.myIntents.has(intentName); + if (alreadyRegistered) { + throw new Error(`Intent listener for intent ${intentName} already registered!`); + } + this.myIntents.add(intentName); + let intentFlag = {}; + if (typeof intent === "object") { + const { intent: removed, ...rest } = intent; + intentFlag = rest; + } + try { + await this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args) => { + if (this.myIntents.has(intentName)) { + const { _initialCallerId, ...rest } = args; + const caller = this.interop.servers().find((server) => server.instance === _initialCallerId); + return handler(rest, caller); + } + }); + } + catch (err) { + this.myIntents.delete(intentName); + throw new Error(`Registration of a method with name ${methodName} failed with reason: ${JSON.stringify(err)}`); + } + return { + unsubscribe: () => this.unsubscribeIntent(intentName) + }; + } + async find(intentFilter) { + let data = undefined; + if (typeof intentFilter !== "undefined") { + const intentFilterObj = findFilterDecoder.runWithException(intentFilter); + if (typeof intentFilterObj === "string") { + data = { + filter: { + name: intentFilterObj } - }); - } - catch (err) { - this.myIntents.delete(intentName); - throw new Error(`Registration of a method with name ${methodName} failed with reason: ${JSON.stringify(err)}`); + }; } - return { - unsubscribe: () => this.unsubscribeIntent(intentName) - }; - }); - } - find(intentFilter) { - return __awaiter$1(this, void 0, void 0, function* () { - let data = undefined; - if (typeof intentFilter !== "undefined") { - const intentFilterObj = findFilterDecoder.runWithException(intentFilter); - if (typeof intentFilterObj === "string") { - data = { - filter: { - name: intentFilterObj - } - }; - } - else if (typeof intentFilterObj === "object") { - data = { - filter: intentFilterObj - }; - } + else if (typeof intentFilterObj === "object") { + data = { + filter: intentFilterObj + }; } - yield Promise.all(this.unregisterIntentPromises); - const result = yield this.bridge.send("intents", operations$5.findIntent, data); - return result.intents; - }); + } + await Promise.all(this.unregisterIntentPromises); + const result = await this.bridge.send("intents", operations$5.findIntent, data); + return result.intents; } checkIfIntentsResolverIsEnabled(options) { - var _a, _b, _c, _d, _e; - this.useIntentsResolverUI = typeof ((_a = options.intents) === null || _a === void 0 ? void 0 : _a.enableIntentsResolverUI) === "boolean" + this.useIntentsResolverUI = typeof options.intents?.enableIntentsResolverUI === "boolean" ? options.intents.enableIntentsResolverUI : true; - this.intentsResolverAppName = (_c = (_b = options.intents) === null || _b === void 0 ? void 0 : _b.intentsResolverAppName) !== null && _c !== void 0 ? _c : INTENTS_RESOLVER_APP_NAME; - this.intentResolverResponseTimeout = (_e = (_d = options.intents) === null || _d === void 0 ? void 0 : _d.methodResponseTimeoutMs) !== null && _e !== void 0 ? _e : DEFAULT_RESOLVER_RESPONSE_TIMEOUT; + this.intentsResolverAppName = options.intents?.intentsResolverAppName ?? INTENTS_RESOLVER_APP_NAME; + this.intentResolverResponseTimeout = options.intents?.methodResponseTimeoutMs ?? DEFAULT_RESOLVER_RESPONSE_TIMEOUT; } clearUnregistrationPromise(promiseToRemove) { this.unregisterIntentPromises = this.unregisterIntentPromises.filter(promise => promise !== promiseToRemove); @@ -5074,18 +4611,16 @@ class IntentsController { this.clearUnregistrationPromise(unregisterPromise); }); } - filterHandlers(handlerFilter) { - return __awaiter$1(this, void 0, void 0, function* () { - handlersFilterDecoder.runWithException(handlerFilter); - this.checkIfAtLeastOneFilterIsPresent(handlerFilter); - if (handlerFilter.openResolver && !this.useIntentsResolverUI) { - throw new Error("Cannot resolve 'filterHandlers' request using Intents Resolver UI because it's globally disabled"); - } - const methodResponseTimeoutMs = (handlerFilter.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT; - const filterHandlersRequestWithResolverConfig = { filterHandlersRequest: handlerFilter, resolverConfig: this.getResolverConfigByRequest({ handlerFilter }) }; - const result = yield this.bridge.send("intents", operations$5.filterHandlers, filterHandlersRequestWithResolverConfig, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }, { includeOperationCheck: true }); - return result; - }); + async filterHandlers(handlerFilter) { + handlersFilterDecoder.runWithException(handlerFilter); + this.checkIfAtLeastOneFilterIsPresent(handlerFilter); + if (handlerFilter.openResolver && !this.useIntentsResolverUI) { + throw new Error("Cannot resolve 'filterHandlers' request using Intents Resolver UI because it's globally disabled"); + } + const methodResponseTimeoutMs = (handlerFilter.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT; + const filterHandlersRequestWithResolverConfig = { filterHandlersRequest: handlerFilter, resolverConfig: this.getResolverConfigByRequest({ handlerFilter }) }; + const result = await this.bridge.send("intents", operations$5.filterHandlers, filterHandlersRequestWithResolverConfig, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }, { includeOperationCheck: true }); + return result; } checkIfAtLeastOneFilterIsPresent(filter) { const errorMsg = "Provide at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'"; @@ -5093,18 +4628,16 @@ class IntentsController { throw new Error(errorMsg); } const { intent, resultType, contextTypes, applicationNames } = filter; - const existingValidContextTypes = contextTypes === null || contextTypes === void 0 ? void 0 : contextTypes.length; - const existingValidApplicationNames = applicationNames === null || applicationNames === void 0 ? void 0 : applicationNames.length; + const existingValidContextTypes = contextTypes?.length; + const existingValidApplicationNames = applicationNames?.length; if (!intent && !resultType && !existingValidContextTypes && !existingValidApplicationNames) { throw new Error(errorMsg); } } - getIntentsByHandler(handler) { - return __awaiter$1(this, void 0, void 0, function* () { - intentHandlerDecoder.runWithException(handler); - const result = yield this.bridge.send("intents", operations$5.getIntentsByHandler, handler, undefined, { includeOperationCheck: true }); - return result; - }); + async getIntentsByHandler(handler) { + intentHandlerDecoder.runWithException(handler); + const result = await this.bridge.send("intents", operations$5.getIntentsByHandler, handler, undefined, { includeOperationCheck: true }); + return result; } } @@ -5124,100 +4657,84 @@ const latestFDC3Type = "latest_fdc3_type"; const operations$4 = { addChannel: { name: "addChannel", dataDecoder: channelContextDecoder }, + removeChannel: { name: "removeChannel", dataDecoder: removeChannelDataDecoder }, getMyChannel: { name: "getMyChannel", resultDecoder: getMyChanelResultDecoder }, getWindowIdsOnChannel: { name: "getWindowIdsOnChannel", dataDecoder: getWindowIdsOnChannelDataDecoder, resultDecoder: getWindowIdsOnChannelResultDecoder }, getWindowIdsWithChannels: { name: "getWindowIdsWithChannels", dataDecoder: wrappedWindowWithChannelFilterDecoder, resultDecoder: getWindowIdsWithChannelsResultDecoder }, joinChannel: { name: "joinChannel", dataDecoder: joinChannelDataDecoder }, + restrict: { name: "restrict", dataDecoder: restrictionConfigDataDecoder }, + getRestrictions: { name: "getRestrictions", dataDecoder: getRestrictionsDataDecoder, resultDecoder: restrictionsDecoder }, + restrictAll: { name: "restrictAll", dataDecoder: restrictAllDataDecoder } }; class ChannelsController { - constructor() { - this.registry = lib$3(); - this.GlueWebChannelsPrefix = "___channel___"; - this.SubsKey = "subs"; - this.ChangedKey = "changed"; - this.replaySubscribe = (callback, channelId) => { - this.get(channelId) - .then((channelContext) => { - if (typeof channelContext.data === "object" && Object.keys(channelContext.data).length) { - const contextName = this.createContextName(channelContext.name); - return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => { - callback(context.data, context, extraData === null || extraData === void 0 ? void 0 : extraData.updaterId); - }); - } - return undefined; - }) - .then((un) => { - if (un && typeof un === "function") { - un(); - } - }) - .catch(err => this.logger.trace(err)); - }; - } + registry = CallbackRegistryFactory$1(); + logger; + contexts; + bridge; + currentChannelName; + windowsController; + sessionController; + unsubscribeFunc; + GlueWebChannelsPrefix = "___channel___"; + SubsKey = "subs"; + ChangedKey = "changed"; handlePlatformShutdown() { this.registry.clear(); } addOperationsExecutors() { operations$4.getMyChannel.execute = this.handleGetMyChannel.bind(this); operations$4.joinChannel.execute = this.handleJoinChannel.bind(this); + operations$4.restrict.execute = ({ config }) => this.restrict(config); + operations$4.getRestrictions.execute = ({ windowId }) => this.getRestrictions(windowId); + operations$4.restrictAll.execute = ({ restrictions }) => this.restrictAll(restrictions); + } + async start(coreGlue, ioc) { + this.logger = coreGlue.logger.subLogger("channels.controller.web"); + this.logger.trace("starting the web channels controller"); + this.contexts = coreGlue.contexts; + this.addOperationsExecutors(); + this.bridge = ioc.bridge; + this.windowsController = ioc.windowsController; + this.sessionController = ioc.sessionController; + this.logger.trace("no need for platform registration, attaching the channels property to glue and returning"); + const api = this.toApi(); + coreGlue.channels = api; + } + async handleBridgeMessage(args) { + const operationName = channelsOperationTypesDecoder.runWithException(args.operation); + const operation = operations$4[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return await operation.execute(operationData); } - start(coreGlue, ioc) { - return __awaiter$1(this, void 0, void 0, function* () { - this.logger = coreGlue.logger.subLogger("channels.controller.web"); - this.logger.trace("starting the web channels controller"); - this.contexts = coreGlue.contexts; - this.addOperationsExecutors(); - this.bridge = ioc.bridge; - this.windowsController = ioc.windowsController; - this.sessionController = ioc.sessionController; - this.logger.trace("no need for platform registration, attaching the channels property to glue and returning"); - const api = this.toApi(); - coreGlue.channels = api; - }); - } - handleBridgeMessage(args) { - return __awaiter$1(this, void 0, void 0, function* () { - const operationName = channelsOperationTypesDecoder.runWithException(args.operation); - const operation = operations$4[operationName]; - if (!operation.execute) { - return; - } - let operationData = args.data; - if (operation.dataDecoder) { - operationData = operation.dataDecoder.runWithException(args.data); - } - return yield operation.execute(operationData); - }); - } - list() { - return __awaiter$1(this, void 0, void 0, function* () { - const channelNames = this.getAllChannelNames(); - const channelContexts = yield Promise.all(channelNames.map((channelName) => this.get(channelName))); - return channelContexts; - }); + async list() { + const channelNames = this.getAllChannelNames(); + const channelContexts = await Promise.all(channelNames.map((channelName) => this.get(channelName))); + return channelContexts; } my() { return this.current(); } - handleGetMyChannel() { - return __awaiter$1(this, void 0, void 0, function* () { - const channel = this.my(); - return channel ? { channel } : {}; - }); + async handleGetMyChannel() { + const channel = this.my(); + return channel ? { channel } : {}; } - join(name, windowId) { - return __awaiter$1(this, void 0, void 0, function* () { - const channelNames = this.getAllChannelNames(); - channelNameDecoder(channelNames).runWithException(name); - optionalNonEmptyStringDecoder.runWithException(windowId); - if (!windowId || windowId === this.windowsController.my().id) { - yield this.switchToChannel(name); - } - else { - yield this.bridge.send("channels", operations$4.joinChannel, { channel: name, windowId }, undefined, { includeOperationCheck: true }); - } - }); + async join(name, windowId) { + const channelNames = this.getAllChannelNames(); + channelNameDecoder(channelNames).runWithException(name); + optionalNonEmptyStringDecoder.runWithException(windowId); + if (!windowId || windowId === this.windowsController.my().id) { + await this.switchToChannel(name); + } + else { + await this.bridge.send("channels", operations$4.joinChannel, { channel: name, windowId }, undefined, { includeOperationCheck: true }); + } } handleJoinChannel({ channel, windowId }) { return this.join(channel, windowId); @@ -5225,10 +4742,8 @@ class ChannelsController { onChanged(callback) { return this.changed(callback); } - leave() { - return __awaiter$1(this, void 0, void 0, function* () { - yield this.switchToChannel(); - }); + async leave() { + await this.switchToChannel(); } toApi() { const api = { @@ -5245,9 +4760,13 @@ class ChannelsController { changed: this.changed.bind(this), onChanged: this.onChanged.bind(this), add: this.add.bind(this), + remove: this.remove.bind(this), getMy: this.getMy.bind(this), getWindowsOnChannel: this.getWindowsOnChannel.bind(this), getWindowsWithChannels: this.getWindowsWithChannels.bind(this), + restrict: this.restrict.bind(this), + getRestrictions: this.getRestrictions.bind(this), + restrictAll: this.restrictAll.bind(this) }; return Object.freeze(api); } @@ -5266,43 +4785,39 @@ class ChannelsController { this.unsubscribeFunc = undefined; } } - switchToChannel(name) { - return __awaiter$1(this, void 0, void 0, function* () { - this.unsubscribe(); - this.currentChannelName = name; - if (typeof name !== "undefined") { - const contextName = this.createContextName(name); - this.unsubscribeFunc = yield this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => { - this.registry.execute(this.SubsKey, context.data, context, extraData === null || extraData === void 0 ? void 0 : extraData.updaterId); - }); - } - this.registry.execute(this.ChangedKey, name); - this.sessionController.setWindowData({ currentName: name }, "channels"); - }); - } - updateData(name, data) { - return __awaiter$1(this, void 0, void 0, function* () { + async switchToChannel(name) { + this.unsubscribe(); + this.currentChannelName = name; + if (typeof name !== "undefined") { const contextName = this.createContextName(name); - const fdc3Type = this.getFDC3Type(data); - if (this.contexts.setPathSupported) { - const pathValues = Object.keys(data).map((key) => { - return { - path: `data.${key}`, - value: data[key] - }; - }); - if (fdc3Type) { - pathValues.push({ path: latestFDC3Type, value: fdc3Type }); - } - yield this.contexts.setPaths(contextName, pathValues); + this.unsubscribeFunc = await this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => { + this.registry.execute(this.SubsKey, context.data, context, extraData?.updaterId); + }); + } + this.registry.execute(this.ChangedKey, name); + this.sessionController.setWindowData({ currentName: name }, "channels"); + } + async updateData(name, data) { + const contextName = this.createContextName(name); + const fdc3Type = this.getFDC3Type(data); + if (this.contexts.setPathSupported) { + const pathValues = Object.keys(data).map((key) => { + return { + path: `data.${key}`, + value: data[key] + }; + }); + if (fdc3Type) { + pathValues.push({ path: latestFDC3Type, value: fdc3Type }); } - else { - if (fdc3Type) { - data[latestFDC3Type] = fdc3Type; - } - yield this.contexts.update(contextName, { data }); + await this.contexts.setPaths(contextName, pathValues); + } + else { + if (fdc3Type) { + data[latestFDC3Type] = fdc3Type; } - }); + await this.contexts.update(contextName, { data }); + } } getFDC3Type(data) { const fdc3PropsArr = Object.keys(data).filter((key) => key.indexOf("fdc3_") === 0); @@ -5319,22 +4834,22 @@ class ChannelsController { throw new Error("Cannot subscribe to channels, because the provided callback is not a function!"); } const currentChannel = this.current(); + const wrappedCallback = this.getWrappedCallbackWithPermissionCheck(callback); if (currentChannel) { - this.replaySubscribe(callback, currentChannel); + this.replaySubscribe(wrappedCallback, currentChannel); } - return this.registry.add(this.SubsKey, callback); + return this.registry.add(this.SubsKey, wrappedCallback); } - subscribeFor(name, callback) { - return __awaiter$1(this, void 0, void 0, function* () { - const channelNames = this.getAllChannelNames(); - channelNameDecoder(channelNames).runWithException(name); - if (typeof callback !== "function") { - throw new Error(`Cannot subscribe to channel ${name}, because the provided callback is not a function!`); - } - const contextName = this.createContextName(name); - return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => { - callback(context.data, context, extraData === null || extraData === void 0 ? void 0 : extraData.updaterId); - }); + async subscribeFor(name, callback) { + const channelNames = this.getAllChannelNames(); + channelNameDecoder(channelNames).runWithException(name); + if (typeof callback !== "function") { + throw new Error(`Cannot subscribe to channel ${name}, because the provided callback is not a function!`); + } + const contextName = this.createContextName(name); + const wrappedCallback = this.getWrappedCallbackWithPermissionCheck(callback); + return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => { + wrappedCallback(context.data, context, extraData?.updaterId); }); } publish(data, name) { @@ -5344,31 +4859,31 @@ class ChannelsController { if (typeof name !== "undefined") { const channelNames = this.getAllChannelNames(); channelNameDecoder(channelNames).runWithException(name); - return this.updateData(name, data); } - if (typeof this.currentChannelName === "undefined") { + const channelName = name || this.currentChannelName; + if (!channelName) { throw new Error("Cannot publish to channel, because not joined to a channel!"); } - return this.updateData(this.currentChannelName, data); + const canPublish = this.isAllowedByRestrictions(channelName, "write"); + if (!canPublish) { + throw new Error(`Cannot publish on channel ${channelName} due to restrictions`); + } + return this.updateData(channelName, data); } - all() { - return __awaiter$1(this, void 0, void 0, function* () { - const channelNames = this.getAllChannelNames(); - return channelNames; - }); + async all() { + const channelNames = this.getAllChannelNames(); + return channelNames; } - get(name) { - return __awaiter$1(this, void 0, void 0, function* () { - const channelNames = this.getAllChannelNames(); - channelNameDecoder(channelNames).runWithException(name); - const contextName = this.createContextName(name); - const channelContext = yield this.contexts.get(contextName); - if (channelContext.latest_fdc3_type) { - const rest = __rest$2(channelContext, ["latest_fdc3_type"]); - return Object.assign({}, rest); - } - return channelContext; - }); + async get(name) { + const channelNames = this.getAllChannelNames(); + channelNameDecoder(channelNames).runWithException(name); + const contextName = this.createContextName(name); + const channelContext = await this.contexts.get(contextName); + if (channelContext.latest_fdc3_type) { + const { latest_fdc3_type, ...rest } = channelContext; + return { ...rest }; + } + return channelContext; } current() { return this.currentChannelName; @@ -5379,49 +4894,154 @@ class ChannelsController { } return this.registry.add(this.ChangedKey, callback); } - add(info) { - return __awaiter$1(this, void 0, void 0, function* () { - const channelContext = channelContextDecoder.runWithException(info); - const channelWithSuchNameExists = this.getAllChannelNames().includes(channelContext.name); - if (channelWithSuchNameExists) { - throw new Error("There's an already existing channel with such name"); + async add(info) { + const channelContext = channelContextDecoder.runWithException(info); + const channelWithSuchNameExists = this.getAllChannelNames().includes(channelContext.name); + if (channelWithSuchNameExists) { + throw new Error("There's an already existing channel with such name"); + } + await this.bridge.send("channels", operations$4.addChannel, channelContext); + return channelContext; + } + async remove(name) { + nonEmptyStringDecoder.runWithException(name); + const channelWithSuchNameExists = this.getAllChannelNames().includes(name); + if (!channelWithSuchNameExists) { + throw new Error("There's no channel with such name"); + } + await this.bridge.send("channels", operations$4.removeChannel, { name }, undefined, { includeOperationCheck: true }); + } + replaySubscribe = (callback, channelId) => { + this.get(channelId) + .then((channelContext) => { + if (typeof channelContext.data === "object" && Object.keys(channelContext.data).length) { + const contextName = this.createContextName(channelContext.name); + return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => { + callback(context.data, context, extraData?.updaterId); + }); + } + return undefined; + }) + .then((un) => { + if (un && typeof un === "function") { + un(); } - yield this.bridge.send("channels", operations$4.addChannel, channelContext); - return channelContext; + }) + .catch(err => this.logger.trace(err)); + }; + async getMy() { + if (!this.currentChannelName) { + return; + } + return this.get(this.currentChannelName); + } + async getWindowsOnChannel(channel) { + const channelNames = this.getAllChannelNames(); + channelNameDecoder(channelNames).runWithException(channel); + const { windowIds } = await this.bridge.send("channels", operations$4.getWindowIdsOnChannel, { channel }, undefined, { includeOperationCheck: true }); + const result = windowIds.reduce((windows, windowId) => { + const window = this.windowsController.findById(windowId); + return window ? [...windows, window] : windows; + }, []); + return result; + } + async getWindowsWithChannels(filter) { + const operationData = filter !== undefined + ? { filter: windowWithChannelFilterDecoder.runWithException(filter) } + : {}; + const { windowIdsWithChannels } = await this.bridge.send("channels", operations$4.getWindowIdsWithChannels, operationData, undefined, { includeOperationCheck: true }); + const result = windowIdsWithChannels.reduce((windowsWithChannels, { application, channel, windowId }) => { + const window = this.windowsController.findById(windowId); + return window ? [...windowsWithChannels, { application, channel, window }] : windowsWithChannels; + }, []); + return result; + } + async restrict(config) { + channelRestrictionsDecoder.runWithException(config); + const channelNames = this.getAllChannelNames(); + channelNameDecoder(channelNames).runWithException(config.name); + const forAnotherClient = config.windowId && config.windowId !== this.windowsController.my().id; + if (forAnotherClient) { + return this.bridge.send("channels", operations$4.restrict, { config }, undefined, { includeOperationCheck: true }); + } + const sessionStorageData = this.sessionController.getWindowData(); + const restrictions = sessionStorageData?.restrictions ? { ...sessionStorageData.restrictions, [config.name]: config } : { [config.name]: config }; + const currentChannel = await this.getMy(); + const prevReadAllowed = this.checkPreviousReadAllowed(currentChannel?.name); + this.sessionController.setWindowData(restrictions, "restrictions"); + if (!currentChannel || prevReadAllowed || !config.read || currentChannel.name !== config.name) { + return; + } + this.replaySubscribeCallback(config.name); + } + async getRestrictions(windowId) { + optionalNonEmptyStringDecoder.runWithException(windowId); + if (!windowId || windowId === this.windowsController.my().id) { + return this.getMyRestrictions(); + } + return this.bridge.send("channels", operations$4.getRestrictions, { windowId }, undefined, { includeOperationCheck: true }); + } + async restrictAll(restrictions) { + restrictionsConfigDecoder.runWithException(restrictions); + const allChannelNames = this.getAllChannelNames(); + const forAnotherClient = restrictions.windowId && restrictions.windowId !== this.windowsController.my().id; + if (forAnotherClient) { + return this.bridge.send("channels", operations$4.restrictAll, { restrictions }, undefined, { includeOperationCheck: true }); + } + const allRestrictions = {}; + allChannelNames.forEach((name) => { + allRestrictions[name] = { ...restrictions, name }; }); + const currentChannel = await this.getMy(); + const prevReadAllowed = this.checkPreviousReadAllowed(currentChannel?.name); + this.sessionController.setWindowData(allRestrictions, "restrictions"); + if (!currentChannel || prevReadAllowed || !restrictions.read) { + return; + } + this.replaySubscribeCallback(currentChannel.name); + } + isAllowedByRestrictions(channelName, action) { + const { channels } = this.getMyRestrictions(); + if (!channels?.length) { + return true; + } + const restriction = channels.find((restriction) => restriction.name === channelName); + return restriction ? restriction[action] : true; } - getMy() { - return __awaiter$1(this, void 0, void 0, function* () { - if (!this.currentChannelName) { + getMyRestrictions() { + const sessionStorageData = this.sessionController.getWindowData(); + const restrictions = Object.values(sessionStorageData?.restrictions || {}); + return { channels: restrictions }; + } + getWrappedCallbackWithPermissionCheck(callback) { + const wrappedCallback = (data, context, updaterId) => { + const canRead = this.isAllowedByRestrictions(context.name, "read"); + if (!canRead) { return; } - return this.get(this.currentChannelName); - }); + callback(data, context, updaterId); + }; + return wrappedCallback; } - getWindowsOnChannel(channel) { - return __awaiter$1(this, void 0, void 0, function* () { - const channelNames = this.getAllChannelNames(); - channelNameDecoder(channelNames).runWithException(channel); - const { windowIds } = yield this.bridge.send("channels", operations$4.getWindowIdsOnChannel, { channel }, undefined, { includeOperationCheck: true }); - const result = windowIds.reduce((windows, windowId) => { - const window = this.windowsController.findById(windowId); - return window ? [...windows, window] : windows; - }, []); - return result; - }); + replaySubscribeCallback(channelName) { + const contextName = this.createContextName(channelName); + this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => { + this.registry.execute(this.SubsKey, context.data, context, extraData?.updaterId); + }).then((unsub) => { + if (unsub && typeof unsub === "function") { + unsub(); + } + }).catch(err => this.logger.error(err)); } - getWindowsWithChannels(filter) { - return __awaiter$1(this, void 0, void 0, function* () { - const operationData = filter !== undefined - ? { filter: windowWithChannelFilterDecoder.runWithException(filter) } - : {}; - const { windowIdsWithChannels } = yield this.bridge.send("channels", operations$4.getWindowIdsWithChannels, operationData, undefined, { includeOperationCheck: true }); - const result = windowIdsWithChannels.reduce((windowsWithChannels, { application, channel, windowId }) => { - const window = this.windowsController.findById(windowId); - return window ? [...windowsWithChannels, { application, channel, window }] : windowsWithChannels; - }, []); - return result; - }); + checkPreviousReadAllowed(channelName) { + if (!channelName) { + return true; + } + const prevRestrictions = this.sessionController.getWindowData().restrictions; + if (!prevRestrictions?.[channelName]) { + return true; + } + return prevRestrictions[channelName].read; } } @@ -5432,45 +5052,39 @@ const operations$3 = { }; class SystemController { - start(coreGlue, ioc) { - return __awaiter$1(this, void 0, void 0, function* () { - this.bridge = ioc.bridge; - this.ioc = ioc; - this.addOperationsExecutors(); - yield this.setEnvironment(); - }); - } - handleBridgeMessage(args) { - return __awaiter$1(this, void 0, void 0, function* () { - const operationName = systemOperationTypesDecoder.runWithException(args.operation); - const operation = operations$3[operationName]; - if (!operation.execute) { - return; - } - let operationData = args.data; - if (operation.dataDecoder) { - operationData = operation.dataDecoder.runWithException(args.data); - } - return yield operation.execute(operationData); - }); + bridge; + ioc; + async start(coreGlue, ioc) { + this.bridge = ioc.bridge; + this.ioc = ioc; + this.addOperationsExecutors(); + await this.setEnvironment(); + } + async handleBridgeMessage(args) { + const operationName = systemOperationTypesDecoder.runWithException(args.operation); + const operation = operations$3[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return await operation.execute(operationData); } - processPlatformShutdown() { - return __awaiter$1(this, void 0, void 0, function* () { - Object.values(this.ioc.controllers).forEach((controller) => controller.handlePlatformShutdown ? controller.handlePlatformShutdown() : null); - this.ioc.preferredConnectionController.stop(); - this.ioc.eventsDispatcher.stop(); - yield this.bridge.stop(); - }); + async processPlatformShutdown() { + Object.values(this.ioc.controllers).forEach((controller) => controller.handlePlatformShutdown ? controller.handlePlatformShutdown() : null); + this.ioc.preferredConnectionController.stop(); + this.ioc.eventsDispatcher.stop(); + await this.bridge.stop(); } - setEnvironment() { - return __awaiter$1(this, void 0, void 0, function* () { - const environment = yield this.bridge.send("system", operations$3.getEnvironment, undefined); - const base = yield this.bridge.send("system", operations$3.getBase, undefined); - const globalNamespace = window.glue42core || window.iobrowser; - const globalNamespaceName = window.glue42core ? "glue42core" : "iobrowser"; - const globalObj = Object.assign({}, globalNamespace, base, { environment }); - window[globalNamespaceName] = Object.freeze(globalObj); - }); + async setEnvironment() { + const environment = await this.bridge.send("system", operations$3.getEnvironment, undefined); + const base = await this.bridge.send("system", operations$3.getBase, undefined); + const globalNamespace = window.glue42core || window.iobrowser; + const globalNamespaceName = window.glue42core ? "glue42core" : "iobrowser"; + const globalObj = Object.assign({}, globalNamespace, base, { environment }); + window[globalNamespaceName] = Object.freeze(globalObj); } addOperationsExecutors() { operations$3.platformShutdown.execute = this.processPlatformShutdown.bind(this); @@ -5478,9 +5092,31 @@ class SystemController { } class Notification { + onclick = () => { }; + onshow = () => { }; + id; + title; + badge; + body; + data; + dir; + icon; + image; + lang; + renotify; + requireInteraction; + silent; + tag; + timestamp; + vibrate; + clickInterop; + actions; + focusPlatformOnDefaultClick; + severity; + showToast; + showInPanel; + state; constructor(config, id) { - this.onclick = () => { }; - this.onshow = () => { }; this.id = id; this.badge = config.badge; this.body = config.body; @@ -5518,45 +5154,45 @@ const operations$2 = { }; class ExtController { - constructor() { - this.channels = []; - this.unsubFuncs = []; - this.contentCommands = { - widgetVisualizationPermission: { name: "widgetVisualizationPermission", handle: this.handleWidgetVisualizationPermission.bind(this) }, - changeChannel: { name: "changeChannel", handle: this.handleChangeChannel.bind(this) } - }; - } + windowId; + logger; + bridge; + eventsDispatcher; + channelsController; + config; + channels = []; + unsubFuncs = []; + contentCommands = { + widgetVisualizationPermission: { name: "widgetVisualizationPermission", handle: this.handleWidgetVisualizationPermission.bind(this) }, + changeChannel: { name: "changeChannel", handle: this.handleChangeChannel.bind(this) } + }; handlePlatformShutdown() { this.unsubFuncs.forEach((unsub) => unsub()); this.channels = []; this.unsubFuncs = []; } - start(coreGlue, ioc) { - return __awaiter$1(this, void 0, void 0, function* () { - this.logger = coreGlue.logger.subLogger("extension.controller.web"); - this.windowId = ioc.publicWindowId; - this.logger.trace("starting the extension web controller"); - this.bridge = ioc.bridge; - this.channelsController = ioc.channelsController; - this.eventsDispatcher = ioc.eventsDispatcher; - try { - yield this.registerWithPlatform(); - } - catch (error) { - return; - } - this.channels = yield this.channelsController.list(); - const unsubDispatcher = this.eventsDispatcher.onContentMessage(this.handleContentMessage.bind(this)); - const unsubChannels = this.channelsController.onChanged((channel) => { - this.eventsDispatcher.sendContentMessage({ command: "channelChange", newChannel: channel }); - }); - this.unsubFuncs.push(unsubDispatcher); - this.unsubFuncs.push(unsubChannels); + async start(coreGlue, ioc) { + this.logger = coreGlue.logger.subLogger("extension.controller.web"); + this.windowId = ioc.publicWindowId; + this.logger.trace("starting the extension web controller"); + this.bridge = ioc.bridge; + this.channelsController = ioc.channelsController; + this.eventsDispatcher = ioc.eventsDispatcher; + try { + await this.registerWithPlatform(); + } + catch (error) { + return; + } + this.channels = await this.channelsController.list(); + const unsubDispatcher = this.eventsDispatcher.onContentMessage(this.handleContentMessage.bind(this)); + const unsubChannels = this.channelsController.onChanged((channel) => { + this.eventsDispatcher.sendContentMessage({ command: "channelChange", newChannel: channel }); }); + this.unsubFuncs.push(unsubDispatcher); + this.unsubFuncs.push(unsubChannels); } - handleBridgeMessage(_) { - return __awaiter$1(this, void 0, void 0, function* () { - }); + async handleBridgeMessage(_) { } handleContentMessage(message) { if (!message || typeof message.command !== "string") { @@ -5568,45 +5204,41 @@ class ExtController { } foundHandler.handle(message); } - registerWithPlatform() { - return __awaiter$1(this, void 0, void 0, function* () { - this.logger.trace("registering with the platform"); - this.config = yield this.bridge.send("extension", operations$2.clientHello, { windowId: this.windowId }); - this.logger.trace("the platform responded to the hello message with a valid extension config"); - }); + async registerWithPlatform() { + this.logger.trace("registering with the platform"); + this.config = await this.bridge.send("extension", operations$2.clientHello, { windowId: this.windowId }); + this.logger.trace("the platform responded to the hello message with a valid extension config"); } - handleWidgetVisualizationPermission() { - var _a; - return __awaiter$1(this, void 0, void 0, function* () { - if (!((_a = this.config) === null || _a === void 0 ? void 0 : _a.widget.inject)) { - return this.eventsDispatcher.sendContentMessage({ command: "permissionResponse", allowed: false }); - } - const currentChannel = this.channels.find((channel) => channel.name === this.channelsController.my()); - this.eventsDispatcher.sendContentMessage({ command: "permissionResponse", allowed: true, channels: this.channels, currentChannel }); - }); + async handleWidgetVisualizationPermission() { + if (!this.config?.widget.inject) { + return this.eventsDispatcher.sendContentMessage({ command: "permissionResponse", allowed: false }); + } + const currentChannel = this.channels.find((channel) => channel.name === this.channelsController.my()); + this.eventsDispatcher.sendContentMessage({ command: "permissionResponse", allowed: true, channels: this.channels, currentChannel }); } - handleChangeChannel(message) { - return __awaiter$1(this, void 0, void 0, function* () { - if (message.name === "no-channel") { - yield this.channelsController.leave(); - return; - } - yield this.channelsController.join(message.name); - }); + async handleChangeChannel(message) { + if (message.name === "no-channel") { + await this.channelsController.leave(); + return; + } + await this.channelsController.join(message.name); } } class EventsDispatcher { + config; + glue; + registry = CallbackRegistryFactory$1(); + glue42EventName = "Glue42"; + _handleMessage; constructor(config) { this.config = config; - this.registry = lib$3(); - this.glue42EventName = "Glue42"; - this.events = { - notifyStarted: { name: "notifyStarted", handle: this.handleNotifyStarted.bind(this) }, - contentInc: { name: "contentInc", handle: this.handleContentInc.bind(this) }, - requestGlue: { name: "requestGlue", handle: this.handleRequestGlue.bind(this) } - }; } + events = { + notifyStarted: { name: "notifyStarted", handle: this.handleNotifyStarted.bind(this) }, + contentInc: { name: "contentInc", handle: this.handleContentInc.bind(this) }, + requestGlue: { name: "requestGlue", handle: this.handleRequestGlue.bind(this) } + }; stop() { window.removeEventListener(this.glue42EventName, this._handleMessage); } @@ -5626,9 +5258,8 @@ class EventsDispatcher { window.addEventListener(this.glue42EventName, this._handleMessage); } handleMessage(event) { - var _a; const data = event.detail; - const namespace = (_a = data === null || data === void 0 ? void 0 : data.glue42) !== null && _a !== void 0 ? _a : data === null || data === void 0 ? void 0 : data.glue42core; + const namespace = data?.glue42 ?? data?.glue42core; if (!namespace) { return; } @@ -5664,11 +5295,15 @@ class EventsDispatcher { } class PreferredConnectionController { + coreGlue; + transactionTimeout = 15000; + transactionLocks = {}; + webPlatformTransport; + webPlatformMessagesUnsubscribe; + reconnectCounter = 0; + logger; constructor(coreGlue) { this.coreGlue = coreGlue; - this.transactionTimeout = 15000; - this.transactionLocks = {}; - this.reconnectCounter = 0; this.logger = this.coreGlue.logger.subLogger("web.preferred.connection.controller"); } stop() { @@ -5677,25 +5312,23 @@ class PreferredConnectionController { } this.webPlatformMessagesUnsubscribe(); } - start(coreConfig) { - return __awaiter$1(this, void 0, void 0, function* () { - if (coreConfig.isPlatformInternal) { - this.logger.trace("This is an internal client to the platform, skipping all client preferred communication logic."); - return; - } - const isConnectedToPlatform = this.coreGlue.connection.transport.name() === webPlatformTransportName; - if (!isConnectedToPlatform) { - throw new Error("Cannot initiate the Glue Web Bridge, because the initial connection was not handled by a Web Platform transport."); - } - if (!this.coreGlue.connection.transport.isPreferredActivated) { - this.logger.trace("The platform of this client was configured without a preferred connection, skipping the rest of the initialization."); - return; - } - this.webPlatformTransport = this.coreGlue.connection.transport; - this.webPlatformMessagesUnsubscribe = this.webPlatformTransport.onMessage(this.handleWebPlatformMessage.bind(this)); - const transportState = yield this.getCurrentPlatformTransportState(); - yield this.checkSwitchTransport(transportState); - }); + async start(coreConfig) { + if (coreConfig.isPlatformInternal) { + this.logger.trace("This is an internal client to the platform, skipping all client preferred communication logic."); + return; + } + const isConnectedToPlatform = this.coreGlue.connection.transport.name() === webPlatformTransportName; + if (!isConnectedToPlatform) { + throw new Error("Cannot initiate the Glue Web Bridge, because the initial connection was not handled by a Web Platform transport."); + } + if (!this.coreGlue.connection.transport.isPreferredActivated) { + this.logger.trace("The platform of this client was configured without a preferred connection, skipping the rest of the initialization."); + return; + } + this.webPlatformTransport = this.coreGlue.connection.transport; + this.webPlatformMessagesUnsubscribe = this.webPlatformTransport.onMessage(this.handleWebPlatformMessage.bind(this)); + const transportState = await this.getCurrentPlatformTransportState(); + await this.checkSwitchTransport(transportState); } handleWebPlatformMessage(msg) { if (typeof msg === "string") { @@ -5721,52 +5354,46 @@ class PreferredConnectionController { return this.handleCheckPreferredConnection(args, transactionId); } } - reEstablishPlatformPort() { - return __awaiter$1(this, void 0, void 0, function* () { - try { - yield this.webPlatformTransport.connect(); - } - catch (error) { - this.logger.trace(`Error when re-establishing port connection to the platform: ${JSON.stringify(error)}`); - --this.reconnectCounter; - if (this.reconnectCounter > 0) { - return this.reEstablishPlatformPort(); - } - this.logger.warn("This client lost connection to the platform while connected to a preferred GW and was not able to re-connect to the platform."); - } - this.logger.trace("The connection to the platform was re-established, closing the connection to the web gateway."); - this.reconnectCounter = 0; - this.webPlatformTransport.close(); - const transportState = yield this.getCurrentPlatformTransportState(); - yield this.checkSwitchTransport(transportState); - }); - } - checkSwitchTransport(config) { - return __awaiter$1(this, void 0, void 0, function* () { - const myCurrentTransportName = this.coreGlue.connection.transport.name(); - if (myCurrentTransportName === config.transportName) { - this.logger.trace("A check switch was requested, but the platform transport and my transport are identical, no switch is necessary"); - return; + async reEstablishPlatformPort() { + try { + await this.webPlatformTransport.connect(); + } + catch (error) { + this.logger.trace(`Error when re-establishing port connection to the platform: ${JSON.stringify(error)}`); + --this.reconnectCounter; + if (this.reconnectCounter > 0) { + return this.reEstablishPlatformPort(); } - this.logger.trace(`A check switch was requested and a transport switch is necessary, because this client is now on ${myCurrentTransportName}, but it should reconnect to ${JSON.stringify(config)}`); - const result = yield this.coreGlue.connection.switchTransport(config); - this.setConnected(); - this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`); - }); + this.logger.warn("This client lost connection to the platform while connected to a preferred GW and was not able to re-connect to the platform."); + } + this.logger.trace("The connection to the platform was re-established, closing the connection to the web gateway."); + this.reconnectCounter = 0; + this.webPlatformTransport.close(); + const transportState = await this.getCurrentPlatformTransportState(); + await this.checkSwitchTransport(transportState); + } + async checkSwitchTransport(config) { + const myCurrentTransportName = this.coreGlue.connection.transport.name(); + if (myCurrentTransportName === config.transportName) { + this.logger.trace("A check switch was requested, but the platform transport and my transport are identical, no switch is necessary"); + return; + } + this.logger.trace(`A check switch was requested and a transport switch is necessary, because this client is now on ${myCurrentTransportName}, but it should reconnect to ${JSON.stringify(config)}`); + const result = await this.coreGlue.connection.switchTransport(config); + this.setConnected(); + this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`); } - getCurrentPlatformTransportState() { - return __awaiter$1(this, void 0, void 0, function* () { - this.logger.trace("Requesting the current transport state of the platform."); - const transaction = this.setTransaction(Glue42CoreMessageTypes.getCurrentTransport.name); - this.sendPlatformMessage(Glue42CoreMessageTypes.getCurrentTransport.name, transaction.id); - const transportState = yield transaction.lock; - this.logger.trace(`The platform responded with transport state: ${JSON.stringify(transportState)}`); - return transportState; - }); + async getCurrentPlatformTransportState() { + this.logger.trace("Requesting the current transport state of the platform."); + const transaction = this.setTransaction(Glue42CoreMessageTypes.getCurrentTransport.name); + this.sendPlatformMessage(Glue42CoreMessageTypes.getCurrentTransport.name, transaction.id); + const transportState = await transaction.lock; + this.logger.trace(`The platform responded with transport state: ${JSON.stringify(transportState)}`); + return transportState; } setTransaction(operation) { const transaction = {}; - const transactionId = shortidExports$1.generate(); + const transactionId = nanoid$1(10); const transactionLock = new Promise((resolve, reject) => { let transactionLive = true; transaction.lift = (args) => { @@ -5822,7 +5449,7 @@ class PreferredConnectionController { this.logger.trace(`Got a current transport response from the platform with id: ${transactionId} and data: ${JSON.stringify(args)}`); const transportState = args.transportState; const transaction = this.transactionLocks[transactionId]; - transaction === null || transaction === void 0 ? void 0 : transaction.lift(transportState); + transaction?.lift(transportState); } handleCheckPreferredLogic(transactionId) { setTimeout(() => this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredLogicResponse.name, transactionId), 0); @@ -5856,99 +5483,90 @@ class PreferredConnectionController { } class LegacyIntentsHelper { + bridge; + interop; + appManagerController; + windowsController; + logger; + intentsResolverResponsePromises = {}; constructor(logger, bridge, interop, appManagerController, windowsController) { this.bridge = bridge; this.interop = interop; this.appManagerController = appManagerController; this.windowsController = windowsController; - this.intentsResolverResponsePromises = {}; this.logger = this.configureLogger(logger); } - raise(requestWithResolverInfo, findIntentFn) { - var _a; - return __awaiter$1(this, void 0, void 0, function* () { - const { intentRequest, resolverConfig } = requestWithResolverInfo; - const intent = (yield findIntentFn(intentRequest.intent)).find(intent => intent.name === intentRequest.intent); - if (!intent) { - throw new Error(`Intent with name ${intentRequest.intent} not found`); - } - const { open, reason } = this.checkIfResolverShouldBeOpened(intent, intentRequest, resolverConfig); - if (!open) { - (_a = this.logger) === null || _a === void 0 ? void 0 : _a.trace(`Intent Resolver UI won't be used. Reason: ${reason}`); - return this.invokeRaiseIntent(intentRequest); - } - const intentResult = yield this.raiseIntentWithResolverApp(requestWithResolverInfo); - return intentResult; - }); + async raise(requestWithResolverInfo, findIntentFn) { + const { intentRequest, resolverConfig } = requestWithResolverInfo; + const intent = (await findIntentFn(intentRequest.intent)).find(intent => intent.name === intentRequest.intent); + if (!intent) { + throw new Error(`Intent with name ${intentRequest.intent} not found`); + } + const { open, reason } = this.checkIfResolverShouldBeOpened(intent, intentRequest, resolverConfig); + if (!open) { + this.logger?.trace(`Intent Resolver UI won't be used. Reason: ${reason}`); + return this.invokeRaiseIntent(intentRequest); + } + const intentResult = await this.raiseIntentWithResolverApp(requestWithResolverInfo); + return intentResult; } configureLogger(loggerInst) { return loggerInst.subLogger("intents.legacy.helper.web"); } - raiseIntentWithResolverApp(requestWithResolverInfo) { - return __awaiter$1(this, void 0, void 0, function* () { - const { intentRequest, resolverConfig } = requestWithResolverInfo; - this.logger.trace(`Intents Resolver UI with app name ${resolverConfig.appName} will be used`); - const responseMethodName = yield this.registerResponseMethod(); - this.logger.trace(`Registered interop method ${responseMethodName}`); - const resolverInstance = yield this.openIntentResolverApplication(requestWithResolverInfo, responseMethodName); - this.logger.trace(`Intents Resolver Instance with id ${resolverInstance.id} opened`); - const handler = yield this.handleInstanceResponse(resolverInstance.id); - const target = handler.type === "app" - ? { app: handler.applicationName } - : { instance: handler.instanceId }; - this.logger.trace(`Intent handler chosen by the user: ${JSON.stringify(target)}`); - const intentResult = yield this.invokeRaiseIntent(Object.assign(Object.assign({}, intentRequest), { target })); - return intentResult; - }); - } - handleInstanceResponse(instanceId) { - var _a; - return __awaiter$1(this, void 0, void 0, function* () { - try { - const { handler, intent } = yield this.intentsResolverResponsePromises[instanceId].promise; - (_a = this.logger) === null || _a === void 0 ? void 0 : _a.trace(`Intent handler chosen for intent ${intent}: ${JSON.stringify(handler)}`); - this.stopResolverInstance(instanceId); - return handler; - } - catch (error) { - this.stopResolverInstance(instanceId); - throw new Error(error); - } - }); + async raiseIntentWithResolverApp(requestWithResolverInfo) { + const { intentRequest, resolverConfig } = requestWithResolverInfo; + this.logger.trace(`Intents Resolver UI with app name ${resolverConfig.appName} will be used`); + const responseMethodName = await this.registerResponseMethod(); + this.logger.trace(`Registered interop method ${responseMethodName}`); + const resolverInstance = await this.openIntentResolverApplication(requestWithResolverInfo, responseMethodName); + this.logger.trace(`Intents Resolver Instance with id ${resolverInstance.id} opened`); + const handler = await this.handleInstanceResponse(resolverInstance.id); + const target = handler.type === "app" + ? { app: handler.applicationName } + : { instance: handler.instanceId }; + this.logger.trace(`Intent handler chosen by the user: ${JSON.stringify(target)}`); + const intentResult = await this.invokeRaiseIntent({ ...intentRequest, target }); + return intentResult; + } + async handleInstanceResponse(instanceId) { + try { + const { handler, intent } = await this.intentsResolverResponsePromises[instanceId].promise; + this.logger?.trace(`Intent handler chosen for intent ${intent}: ${JSON.stringify(handler)}`); + this.stopResolverInstance(instanceId); + return handler; + } + catch (error) { + this.stopResolverInstance(instanceId); + throw new Error(error); + } } invokeRaiseIntent(requestObj) { return this.bridge.send("intents", operations$5.raiseIntent, requestObj); } - registerResponseMethod() { - return __awaiter$1(this, void 0, void 0, function* () { - const methodName = INTENTS_RESOLVER_INTEROP_PREFIX + shortid$2(); - yield this.interop.register(methodName, this.resolverResponseHandler.bind(this)); - return methodName; - }); - } - openIntentResolverApplication(requestWithResolverInfo, methodName) { - return __awaiter$1(this, void 0, void 0, function* () { - const { intentRequest, resolverConfig } = requestWithResolverInfo; - const startContext = this.buildStartContext(intentRequest, methodName); - const startOptions = yield this.buildStartOptions(); - this.logger.trace(`Starting Intents Resolver UI with context: ${JSON.stringify(startContext)} and options: ${startOptions}`); - const instance = yield this.appManagerController.getApplication(resolverConfig.appName).start(startContext, startOptions); - this.logger.trace(`Intents Resolver instance with id ${instance.id} opened`); - this.subscribeOnInstanceStopped(instance); - this.createResponsePromise(intentRequest.intent, instance.id, methodName, resolverConfig.waitResponseTimeout); - return instance; - }); - } - cleanUpIntentResolverPromise(instanceId) { - return __awaiter$1(this, void 0, void 0, function* () { - const intentPromise = this.intentsResolverResponsePromises[instanceId]; - if (!intentPromise) { - return; - } - const unregisterPromise = this.interop.unregister(intentPromise.methodName); - unregisterPromise.catch((error) => this.logger.warn(error)); - delete this.intentsResolverResponsePromises[instanceId]; - }); + async registerResponseMethod() { + const methodName = INTENTS_RESOLVER_INTEROP_PREFIX + nanoid$1(10); + await this.interop.register(methodName, this.resolverResponseHandler.bind(this)); + return methodName; + } + async openIntentResolverApplication(requestWithResolverInfo, methodName) { + const { intentRequest, resolverConfig } = requestWithResolverInfo; + const startContext = this.buildStartContext(intentRequest, methodName); + const startOptions = await this.buildStartOptions(); + this.logger.trace(`Starting Intents Resolver UI with context: ${JSON.stringify(startContext)} and options: ${startOptions}`); + const instance = await this.appManagerController.getApplication(resolverConfig.appName).start(startContext, startOptions); + this.logger.trace(`Intents Resolver instance with id ${instance.id} opened`); + this.subscribeOnInstanceStopped(instance); + this.createResponsePromise(intentRequest.intent, instance.id, methodName, resolverConfig.waitResponseTimeout); + return instance; + } + async cleanUpIntentResolverPromise(instanceId) { + const intentPromise = this.intentsResolverResponsePromises[instanceId]; + if (!intentPromise) { + return; + } + const unregisterPromise = this.interop.unregister(intentPromise.methodName); + unregisterPromise.catch((error) => this.logger.warn(error)); + delete this.intentsResolverResponsePromises[instanceId]; } buildStartContext(requestObj, methodName) { return { @@ -5957,61 +5575,53 @@ class LegacyIntentsHelper { methodName }; } - buildStartOptions() { - return __awaiter$1(this, void 0, void 0, function* () { - const bounds = yield this.getTargetBounds(); - return { - top: (bounds.height - INTENTS_RESOLVER_HEIGHT) / 2 + bounds.top, - left: (bounds.width - INTENTS_RESOLVER_WIDTH) / 2 + bounds.left, - width: INTENTS_RESOLVER_WIDTH, - height: INTENTS_RESOLVER_HEIGHT - }; - }); + async buildStartOptions() { + const bounds = await this.getTargetBounds(); + return { + top: (bounds.height - INTENTS_RESOLVER_HEIGHT) / 2 + bounds.top, + left: (bounds.width - INTENTS_RESOLVER_WIDTH) / 2 + bounds.left, + width: INTENTS_RESOLVER_WIDTH, + height: INTENTS_RESOLVER_HEIGHT + }; } - getTargetBounds() { - return __awaiter$1(this, void 0, void 0, function* () { - const bounds = (yield this.tryGetWindowBasedBounds()) || (yield this.tryGetWorkspaceBasedBounds()); - if (bounds) { - this.logger.trace(`Opening Intents Resolver UI with bounds: ${JSON.stringify(bounds)}`); - return bounds; - } - const defaultBounds = { - top: window.screen.availTop || 0, - left: window.screen.availLeft || 0, - width: window.screen.width, - height: window.screen.height - }; - this.logger.trace(`Opening Intents Resolver UI relative to my screen bounds: ${JSON.stringify(defaultBounds)}`); - return defaultBounds; - }); + async getTargetBounds() { + const bounds = await this.tryGetWindowBasedBounds() || await this.tryGetWorkspaceBasedBounds(); + if (bounds) { + this.logger.trace(`Opening Intents Resolver UI with bounds: ${JSON.stringify(bounds)}`); + return bounds; + } + const defaultBounds = { + top: window.screen.availTop || 0, + left: window.screen.availLeft || 0, + width: window.screen.width, + height: window.screen.height + }; + this.logger.trace(`Opening Intents Resolver UI relative to my screen bounds: ${JSON.stringify(defaultBounds)}`); + return defaultBounds; } - tryGetWindowBasedBounds() { - return __awaiter$1(this, void 0, void 0, function* () { - try { - const myWindowBounds = yield this.windowsController.my().getBounds(); - this.logger.trace(`Opening the resolver UI relative to my window bounds: ${JSON.stringify(myWindowBounds)}`); - return myWindowBounds; - } - catch (error) { - this.logger.trace(`Failure to get my window bounds: ${JSON.stringify(error)}`); - } - return undefined; - }); + async tryGetWindowBasedBounds() { + try { + const myWindowBounds = await this.windowsController.my().getBounds(); + this.logger.trace(`Opening the resolver UI relative to my window bounds: ${JSON.stringify(myWindowBounds)}`); + return myWindowBounds; + } + catch (error) { + this.logger.trace(`Failure to get my window bounds: ${JSON.stringify(error)}`); + } + return undefined; } - tryGetWorkspaceBasedBounds() { - return __awaiter$1(this, void 0, void 0, function* () { - try { - yield this.bridge.send("workspaces", systemOperations.operationCheck, { operation: "getWorkspaceWindowFrameBounds" }); - const bridgeResponse = yield this.bridge.send("workspaces", systemOperations.getWorkspaceWindowFrameBounds, { itemId: this.windowsController.my().id }); - const myWorkspaceBounds = bridgeResponse.bounds; - this.logger.trace(`Opening the resolver UI relative to my workspace frame window bounds: ${JSON.stringify(myWorkspaceBounds)}`); - return myWorkspaceBounds; - } - catch (error) { - this.logger.trace(`Failure to get my workspace frame window bounds: ${JSON.stringify(error)}`); - } - return undefined; - }); + async tryGetWorkspaceBasedBounds() { + try { + await this.bridge.send("workspaces", systemOperations.operationCheck, { operation: "getWorkspaceWindowFrameBounds" }); + const bridgeResponse = await this.bridge.send("workspaces", systemOperations.getWorkspaceWindowFrameBounds, { itemId: this.windowsController.my().id }); + const myWorkspaceBounds = bridgeResponse.bounds; + this.logger.trace(`Opening the resolver UI relative to my workspace frame window bounds: ${JSON.stringify(myWorkspaceBounds)}`); + return myWorkspaceBounds; + } + catch (error) { + this.logger.trace(`Failure to get my workspace frame window bounds: ${JSON.stringify(error)}`); + } + return undefined; } subscribeOnInstanceStopped(instance) { const { application } = instance; @@ -6084,30 +5694,26 @@ const operations$1 = { }; class ThemesController { - constructor() { - this.registry = lib$3(); - this.activeThemeSubs = 0; - } - start(coreGlue, ioc) { - return __awaiter$1(this, void 0, void 0, function* () { - this.logger = coreGlue.logger.subLogger("themes.controller.web"); - this.logger.trace("starting the web themes controller"); - this.bridge = ioc.bridge; - const api = this.toApi(); - coreGlue.themes = api; - this.logger.trace("themes are ready"); - }); + logger; + bridge; + registry = CallbackRegistryFactory$1(); + themesSubscription; + activeThemeSubs = 0; + async start(coreGlue, ioc) { + this.logger = coreGlue.logger.subLogger("themes.controller.web"); + this.logger.trace("starting the web themes controller"); + this.bridge = ioc.bridge; + const api = this.toApi(); + coreGlue.themes = api; + this.logger.trace("themes are ready"); } handlePlatformShutdown() { - var _a; this.registry.clear(); this.activeThemeSubs = 0; - (_a = this.themesSubscription) === null || _a === void 0 ? void 0 : _a.close(); + this.themesSubscription?.close(); delete this.themesSubscription; } - handleBridgeMessage() { - return __awaiter$1(this, void 0, void 0, function* () { - }); + async handleBridgeMessage() { } toApi() { const api = { @@ -6118,78 +5724,66 @@ class ThemesController { }; return Object.freeze(api); } - getCurrent() { - return __awaiter$1(this, void 0, void 0, function* () { - const bridgeResponse = yield this.bridge.send("themes", operations$1.getCurrent, undefined, undefined, { includeOperationCheck: true }); - return bridgeResponse.theme; - }); - } - list() { - return __awaiter$1(this, void 0, void 0, function* () { - const bridgeResponse = yield this.bridge.send("themes", operations$1.list, undefined, undefined, { includeOperationCheck: true }); - return bridgeResponse.themes; - }); + async getCurrent() { + const bridgeResponse = await this.bridge.send("themes", operations$1.getCurrent, undefined, undefined, { includeOperationCheck: true }); + return bridgeResponse.theme; } - select(name) { - return __awaiter$1(this, void 0, void 0, function* () { - nonEmptyStringDecoder.runWithException(name); - yield this.bridge.send("themes", operations$1.select, { name }, undefined, { includeOperationCheck: true }); - }); + async list() { + const bridgeResponse = await this.bridge.send("themes", operations$1.list, undefined, undefined, { includeOperationCheck: true }); + return bridgeResponse.themes; } - onChanged(callback) { - return __awaiter$1(this, void 0, void 0, function* () { - if (typeof callback !== "function") { - throw new Error("onChanged requires a callback of type function"); - } - const subReady = this.themesSubscription ? - Promise.resolve() : - this.configureThemeSubscription(); - yield subReady; - ++this.activeThemeSubs; - const unsubFunc = this.registry.add("on-theme-change", callback); - return () => this.themeUnsub(unsubFunc); - }); + async select(name) { + nonEmptyStringDecoder.runWithException(name); + await this.bridge.send("themes", operations$1.select, { name }, undefined, { includeOperationCheck: true }); } - configureThemeSubscription() { - return __awaiter$1(this, void 0, void 0, function* () { - if (this.themesSubscription) { + async onChanged(callback) { + if (typeof callback !== "function") { + throw new Error("onChanged requires a callback of type function"); + } + const subReady = this.themesSubscription ? + Promise.resolve() : + this.configureThemeSubscription(); + await subReady; + ++this.activeThemeSubs; + const unsubFunc = this.registry.add("on-theme-change", callback); + return () => this.themeUnsub(unsubFunc); + } + async configureThemeSubscription() { + if (this.themesSubscription) { + return; + } + this.themesSubscription = await this.bridge.createNotificationsSteam(); + this.themesSubscription.onData((data) => { + const eventData = data.data; + const validation = simpleThemeResponseDecoder.run(eventData); + if (!validation.ok) { + this.logger.warn(`Received invalid theme data on the theme event stream: ${JSON.stringify(validation.error)}`); return; } - this.themesSubscription = yield this.bridge.createNotificationsSteam(); - this.themesSubscription.onData((data) => { - const eventData = data.data; - const validation = simpleThemeResponseDecoder.run(eventData); - if (!validation.ok) { - this.logger.warn(`Received invalid theme data on the theme event stream: ${JSON.stringify(validation.error)}`); - return; - } - const themeChanged = validation.result; - this.registry.execute("on-theme-change", themeChanged.theme); - }); - this.themesSubscription.onClosed(() => { - this.logger.warn("The Themes interop stream was closed, no theme changes notifications will be received"); - this.registry.clear(); - this.activeThemeSubs = 0; - delete this.themesSubscription; - }); + const themeChanged = validation.result; + this.registry.execute("on-theme-change", themeChanged.theme); + }); + this.themesSubscription.onClosed(() => { + this.logger.warn("The Themes interop stream was closed, no theme changes notifications will be received"); + this.registry.clear(); + this.activeThemeSubs = 0; + delete this.themesSubscription; }); } themeUnsub(registryUnsub) { - var _a; registryUnsub(); --this.activeThemeSubs; if (this.activeThemeSubs) { return; } - (_a = this.themesSubscription) === null || _a === void 0 ? void 0 : _a.close(); + this.themesSubscription?.close(); delete this.themesSubscription; } } class SessionStorageController { - constructor() { - this.sessionStorage = window.sessionStorage; - } + sessionStorage = window.sessionStorage; + windowId; get allNamespaces() { return [{ namespace: this.windowNamespace, defaultValue: {} }]; } @@ -6227,46 +5821,45 @@ const operations = { }; class PrefsController { - constructor() { - this.registry = lib$3(); - } + bridge; + config; + logger; + appManagerController; + platformAppName; + registry = CallbackRegistryFactory$1(); handlePlatformShutdown() { this.registry.clear(); } - start(coreGlue, ioc) { - return __awaiter$1(this, void 0, void 0, function* () { - this.logger = coreGlue.logger.subLogger("prefs.controller.web"); - this.logger.trace("starting the web prefs controller"); - this.addOperationsExecutors(); - this.bridge = ioc.bridge; - this.config = ioc.config; - this.appManagerController = ioc.appManagerController; - try { - const prefsHelloSuccess = yield this.bridge.send("prefs", operations.prefsHello, undefined, undefined, { includeOperationCheck: true }); - this.platformAppName = prefsHelloSuccess.platform.app; - } - catch (error) { - this.logger.warn("The platform of this client is outdated and does not support Prefs API."); - return; - } - this.logger.trace("no need for platform registration, attaching the prefs property to glue and returning"); - const api = this.toApi(); - coreGlue.prefs = api; - }); + async start(coreGlue, ioc) { + this.logger = coreGlue.logger.subLogger("prefs.controller.web"); + this.logger.trace("starting the web prefs controller"); + this.addOperationsExecutors(); + this.bridge = ioc.bridge; + this.config = ioc.config; + this.appManagerController = ioc.appManagerController; + try { + const prefsHelloSuccess = await this.bridge.send("prefs", operations.prefsHello, undefined, undefined, { includeOperationCheck: true }); + this.platformAppName = prefsHelloSuccess.platform.app; + } + catch (error) { + this.logger.warn("The platform of this client is outdated and does not support Prefs API."); + return; + } + this.logger.trace("no need for platform registration, attaching the prefs property to glue and returning"); + const api = this.toApi(); + coreGlue.prefs = api; } - handleBridgeMessage(args) { - return __awaiter$1(this, void 0, void 0, function* () { - const operationName = prefsOperationTypesDecoder.runWithException(args.operation); - const operation = operations[operationName]; - if (!operation.execute) { - return; - } - let operationData = args.data; - if (operation.dataDecoder) { - operationData = operation.dataDecoder.runWithException(args.data); - } - return yield operation.execute(operationData); - }); + async handleBridgeMessage(args) { + const operationName = prefsOperationTypesDecoder.runWithException(args.operation); + const operation = operations[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return await operation.execute(operationData); } addOperationsExecutors() { operations.prefsChanged.execute = this.handleOnChanged.bind(this); @@ -6287,50 +5880,35 @@ class PrefsController { }; return api; } - clear() { - return __awaiter$1(this, void 0, void 0, function* () { - const app = this.getMyAppName(); - yield this.clearFor(app); - }); + async clear() { + const app = this.getMyAppName(); + await this.clearFor(app); } - clearAll() { - return __awaiter$1(this, void 0, void 0, function* () { - yield this.bridge.send("prefs", operations.clearAll, undefined, undefined, { includeOperationCheck: true }); - }); + async clearAll() { + await this.bridge.send("prefs", operations.clearAll, undefined, undefined, { includeOperationCheck: true }); } - clearFor(app) { - return __awaiter$1(this, void 0, void 0, function* () { - const verifiedApp = nonEmptyStringDecoder.runWithException(app); - yield this.bridge.send("prefs", operations.clear, { app: verifiedApp }, undefined, { includeOperationCheck: true }); - }); + async clearFor(app) { + const verifiedApp = nonEmptyStringDecoder.runWithException(app); + await this.bridge.send("prefs", operations.clear, { app: verifiedApp }, undefined, { includeOperationCheck: true }); } - get(app) { - return __awaiter$1(this, void 0, void 0, function* () { - const verifiedApp = app === undefined || app === null ? this.getMyAppName() : nonEmptyStringDecoder.runWithException(app); - const { prefs } = yield this.bridge.send("prefs", operations.get, { app: verifiedApp }, undefined, { includeOperationCheck: true }); - return prefs; - }); + async get(app) { + const verifiedApp = app === undefined || app === null ? this.getMyAppName() : nonEmptyStringDecoder.runWithException(app); + const { prefs } = await this.bridge.send("prefs", operations.get, { app: verifiedApp }, undefined, { includeOperationCheck: true }); + return prefs; } - getAll() { - return __awaiter$1(this, void 0, void 0, function* () { - const result = yield this.bridge.send("prefs", operations.getAll, undefined, undefined, { includeOperationCheck: true }); - return result; - }); + async getAll() { + const result = await this.bridge.send("prefs", operations.getAll, undefined, undefined, { includeOperationCheck: true }); + return result; } - set(data, options) { - var _a; - return __awaiter$1(this, void 0, void 0, function* () { - const verifiedOptions = optional$1(basePrefsConfigDecoder).runWithException(options); - const app = (_a = verifiedOptions === null || verifiedOptions === void 0 ? void 0 : verifiedOptions.app) !== null && _a !== void 0 ? _a : this.getMyAppName(); - yield this.setFor(app, data); - }); + async set(data, options) { + const verifiedOptions = optional$1(basePrefsConfigDecoder).runWithException(options); + const app = verifiedOptions?.app ?? this.getMyAppName(); + await this.setFor(app, data); } - setFor(app, data) { - return __awaiter$1(this, void 0, void 0, function* () { - const verifiedApp = nonEmptyStringDecoder.runWithException(app); - const verifiedData = object$1().runWithException(data); - yield this.bridge.send("prefs", operations.set, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true }); - }); + async setFor(app, data) { + const verifiedApp = nonEmptyStringDecoder.runWithException(app); + const verifiedData = object$1().runWithException(data); + await this.bridge.send("prefs", operations.set, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true }); } subscribe(callback) { const app = this.getMyAppName(); @@ -6350,24 +5928,18 @@ class PrefsController { this.get(verifiedApp).then(callback); return this.registry.add(subscriptionKey, callback); } - update(data, options) { - var _a; - return __awaiter$1(this, void 0, void 0, function* () { - const verifiedOptions = optional$1(basePrefsConfigDecoder).runWithException(options); - const app = (_a = verifiedOptions === null || verifiedOptions === void 0 ? void 0 : verifiedOptions.app) !== null && _a !== void 0 ? _a : this.getMyAppName(); - yield this.updateFor(app, data); - }); + async update(data, options) { + const verifiedOptions = optional$1(basePrefsConfigDecoder).runWithException(options); + const app = verifiedOptions?.app ?? this.getMyAppName(); + await this.updateFor(app, data); } - updateFor(app, data) { - return __awaiter$1(this, void 0, void 0, function* () { - const verifiedApp = nonEmptyStringDecoder.runWithException(app); - const verifiedData = object$1().runWithException(data); - yield this.bridge.send("prefs", operations.update, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true }); - }); + async updateFor(app, data) { + const verifiedApp = nonEmptyStringDecoder.runWithException(app); + const verifiedData = object$1().runWithException(data); + await this.bridge.send("prefs", operations.update, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true }); } getMyAppName() { - var _a; - const myAppName = this.config.isPlatformInternal ? this.platformAppName : (_a = this.appManagerController.me) === null || _a === void 0 ? void 0 : _a.application.name; + const myAppName = this.config.isPlatformInternal ? this.platformAppName : this.appManagerController.me?.application.name; if (!myAppName) { throw new Error("App Preferences operations can not be executed for windows that do not have app!"); } @@ -6376,29 +5948,44 @@ class PrefsController { getSubscriptionKey(app) { return `prefs-changed-${app}`; } - handleOnChanged({ prefs }) { - return __awaiter$1(this, void 0, void 0, function* () { - const subscriptionKey = this.getSubscriptionKey(prefs.app); - this.registry.execute(subscriptionKey, prefs); - }); + async handleOnChanged({ prefs }) { + const subscriptionKey = this.getSubscriptionKey(prefs.app); + this.registry.execute(subscriptionKey, prefs); } } class IoC { - constructor() { - this.controllers = { - windows: this.windowsController, - appManager: this.appManagerController, - layouts: this.layoutsController, - notifications: this.notificationsController, - intents: this.intentsController, - channels: this.channelsController, - system: this.systemController, - extension: this.extensionController, - themes: this.themesController, - prefs: this.prefsController - }; - } + _coreGlue; + _communicationId; + _publicWindowId; + _webConfig; + _windowsControllerInstance; + _appManagerControllerInstance; + _layoutsControllerInstance; + _notificationsControllerInstance; + _intentsControllerInstance; + _legacyIntentsHelperInstance; + _channelsControllerInstance; + _themesControllerInstance; + _extensionController; + _systemControllerInstance; + _bridgeInstance; + _eventsDispatcher; + _preferredConnectionController; + _sessionController; + _prefsControllerInstance; + controllers = { + windows: this.windowsController, + appManager: this.appManagerController, + layouts: this.layoutsController, + notifications: this.notificationsController, + intents: this.intentsController, + channels: this.channelsController, + system: this.systemController, + extension: this.extensionController, + themes: this.themesController, + prefs: this.prefsController + }; get communicationId() { return this._communicationId; } @@ -6507,153 +6094,59 @@ class IoC { defineConfig(config) { this._webConfig = config; } - buildWebWindow(id, name) { - return __awaiter$1(this, void 0, void 0, function* () { - const model = new WebWindowModel(id, name, this.bridge); - const api = yield model.toApi(); - return { id, model, api }; - }); + async buildWebWindow(id, name) { + const model = new WebWindowModel(id, name, this.bridge); + const api = await model.toApi(); + return { id, model, api }; } buildNotification(config, id) { return new Notification(config, id); } - buildApplication(app, applicationInstances) { - return __awaiter$1(this, void 0, void 0, function* () { - const application = (new ApplicationModel(app, [], this.appManagerController)).toApi(); - const instances = applicationInstances.map((instanceData) => this.buildInstance(instanceData, application)); - application.instances.push(...instances); - return application; - }); + async buildApplication(app, applicationInstances) { + const application = (new ApplicationModel(app, [], this.appManagerController)).toApi(); + const instances = applicationInstances.map((instanceData) => this.buildInstance(instanceData, application)); + application.instances.push(...instances); + return application; } buildInstance(instanceData, app) { return (new InstanceModel(instanceData, this.bridge, app)).toApi(); } } -var version$2 = "3.2.0"; +var version$1 = "3.3.1"; const createFactoryFunction = (coreFactoryFunction) => { - return (userConfig) => __awaiter$1(void 0, void 0, void 0, function* () { + return async (userConfig) => { if (window.glue42gd || window.iodesktop) { return enterprise(userConfig); } const ioc = new IoC(); const config = parseConfig(userConfig); checkSingleton(); - const glue = yield PromiseWrap(() => coreFactoryFunction(config, { version: version$2 }), 30000, "Glue Web initialization timed out, because core didn't resolve"); + const glue = await PromiseWrap(() => coreFactoryFunction(config, { version: version$1 }), 30000, "Glue Web initialization timed out, because core didn't resolve"); const logger = glue.logger.subLogger("web.main.controller"); ioc.defineGlue(glue); ioc.sessionController.configure({ windowId: glue.interop.instance.instance }); - yield ioc.preferredConnectionController.start(config); - yield ioc.bridge.start(ioc.controllers); + await ioc.preferredConnectionController.start(config); + await ioc.bridge.start(ioc.controllers); ioc.defineConfig(config); logger.trace("the bridge has been started, initializing all controllers"); - yield Promise.all(Object.values(ioc.controllers).map((controller) => controller.start(glue, ioc))); + await Promise.all(Object.values(ioc.controllers).map((controller) => controller.start(glue, ioc))); logger.trace("all controllers reported started, starting all additional libraries"); - yield Promise.all(config.libraries.map((lib) => lib(glue, config))); + await Promise.all(config.libraries.map((lib) => lib(glue, config))); logger.trace("all libraries were started"); ioc.eventsDispatcher.start(glue); logger.trace("start event dispatched, glue is ready, returning it"); return glue; - }); + }; }; -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; - -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -function __spreadArray(to, from, pack) { - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); -} - -var MetricTypes = { - STRING: 1, - NUMBER: 2, - TIMESTAMP: 3, - OBJECT: 4 -}; +var MetricTypes = { + STRING: 1, + NUMBER: 2, + TIMESTAMP: 3, + OBJECT: 4 +}; function getMetricTypeByValue(metric) { if (metric.type === MetricTypes.TIMESTAMP) { @@ -6688,18 +6181,18 @@ function getTypeByValue(value) { } } function serializeMetric(metric) { - var serializedMetrics = {}; - var type = getMetricTypeByValue(metric); + const serializedMetrics = {}; + const type = getMetricTypeByValue(metric); if (type === "object") { - var values = Object.keys(metric.value).reduce(function (memo, key) { - var innerType = getTypeByValue(metric.value[key]); + const values = Object.keys(metric.value).reduce((memo, key) => { + const innerType = getTypeByValue(metric.value[key]); if (innerType === "object") { - var composite = defineNestedComposite(metric.value[key]); + const composite = defineNestedComposite(metric.value[key]); memo[key] = { type: "object", description: "", context: {}, - composite: composite, + composite, }; } else { @@ -6720,8 +6213,8 @@ function serializeMetric(metric) { return serializedMetrics; } function defineNestedComposite(values) { - return Object.keys(values).reduce(function (memo, key) { - var type = getTypeByValue(values[key]); + return Object.keys(values).reduce((memo, key) => { + const type = getTypeByValue(values[key]); if (type === "object") { memo[key] = { type: "object", @@ -6732,7 +6225,7 @@ function defineNestedComposite(values) { } else { memo[key] = { - type: type, + type, description: "", context: {}, }; @@ -6749,7 +6242,7 @@ function normalizeMetricName(name) { } } function getMetricValueByType(metric) { - var type = getMetricTypeByValue(metric); + const type = getMetricTypeByValue(metric); if (type === "timestamp") { return Date.now(); } @@ -6761,8 +6254,8 @@ function publishNestedComposite(values) { if (typeof values !== "object") { return values; } - return Object.keys(values).reduce(function (memo, key) { - var value = values[key]; + return Object.keys(values).reduce((memo, key) => { + const value = values[key]; if (typeof value === "object" && value.constructor !== Date) { memo[key] = publishNestedComposite(value); } @@ -6779,12 +6272,12 @@ function publishNestedComposite(values) { }, {}); } function flatten(arr) { - return arr.reduce(function (flat, toFlatten) { + return arr.reduce((flat, toFlatten) => { return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten); }, []); } function getHighestState(arr) { - return arr.sort(function (a, b) { + return arr.sort((a, b) => { if (!a.state) { return 1; } @@ -6795,9 +6288,9 @@ function getHighestState(arr) { })[0]; } function aggregateDescription(arr) { - var msg = ""; - arr.forEach(function (m, idx, a) { - var path = m.path.join("."); + let msg = ""; + arr.forEach((m, idx, a) => { + const path = m.path.join("."); if (idx === a.length - 1) { msg += path + "." + m.name + ": " + m.description; } @@ -6813,10 +6306,10 @@ function aggregateDescription(arr) { } } function composeMsgForRootStateMetric(system) { - var aggregatedState = system.root.getAggregateState(); - var merged = flatten(aggregatedState); - var highestState = getHighestState(merged); - var aggregateDesc = aggregateDescription(merged); + const aggregatedState = system.root.getAggregateState(); + const merged = flatten(aggregatedState); + const highestState = getHighestState(merged); + const aggregateDesc = aggregateDescription(merged); return { description: aggregateDesc, value: highestState.state, @@ -6824,24 +6317,23 @@ function composeMsgForRootStateMetric(system) { } function gw3 (connection, config) { - var _this = this; if (!connection || typeof connection !== "object") { throw new Error("Connection is required parameter"); } - var joinPromise; - var session; - var init = function (repo) { - var resolveReadyPromise; - joinPromise = new Promise(function (resolve) { + let joinPromise; + let session; + const init = (repo) => { + let resolveReadyPromise; + joinPromise = new Promise((resolve) => { resolveReadyPromise = resolve; }); session = connection.domain("metrics"); - session.onJoined(function (reconnect) { + session.onJoined((reconnect) => { if (!reconnect && resolveReadyPromise) { resolveReadyPromise(); resolveReadyPromise = undefined; } - var rootStateMetric = { + const rootStateMetric = { name: "/State", type: "object", composite: { @@ -6857,7 +6349,7 @@ function gw3 (connection, config) { description: "System state", context: {}, }; - var defineRootMetricsMsg = { + const defineRootMetricsMsg = { type: "define", metrics: [rootStateMetric], }; @@ -6872,135 +6364,100 @@ function gw3 (connection, config) { instance: config.instance }); }; - var replayRepo = function (repo) { + const replayRepo = (repo) => { replaySystem(repo.root); }; - var replaySystem = function (system) { + const replaySystem = (system) => { createSystem(system); - system.metrics.forEach(function (m) { + system.metrics.forEach((m) => { createMetric(m); }); - system.subSystems.forEach(function (ss) { + system.subSystems.forEach((ss) => { replaySystem(ss); }); }; - var createSystem = function (system) { return __awaiter(_this, void 0, void 0, function () { - var metric, createMetricsMsg; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (system.parent === undefined) { - return [2]; - } - return [4, joinPromise]; - case 1: - _a.sent(); - metric = { - name: normalizeMetricName(system.path.join("/") + "/" + system.name + "/State"), - type: "object", - composite: { - Description: { - type: "string", - description: "", - }, - Value: { - type: "number", - description: "", - }, - }, - description: "System state", - context: {}, - }; - createMetricsMsg = { - type: "define", - metrics: [metric], - }; - session.send(createMetricsMsg); - return [2]; - } - }); - }); }; - var updateSystem = function (system, state) { return __awaiter(_this, void 0, void 0, function () { - var shadowedUpdateMetric, stateObj, rootMetric; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, joinPromise]; - case 1: - _a.sent(); - shadowedUpdateMetric = { - type: "publish", - values: [{ - name: normalizeMetricName(system.path.join("/") + "/" + system.name + "/State"), - value: { - Description: state.description, - Value: state.state, - }, - timestamp: Date.now(), - }], - }; - session.send(shadowedUpdateMetric); - stateObj = composeMsgForRootStateMetric(system); - rootMetric = { - type: "publish", - peer_id: connection.peerId, - values: [{ - name: "/State", - value: { - Description: stateObj.description, - Value: stateObj.value, - }, - timestamp: Date.now(), - }], - }; - session.send(rootMetric); - return [2]; - } - }); - }); }; - var createMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () { - var metricClone, m, createMetricsMsg; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - metricClone = cloneMetric(metric); - return [4, joinPromise]; - case 1: - _a.sent(); - m = serializeMetric(metricClone); - createMetricsMsg = { - type: "define", - metrics: [m], - }; - session.send(createMetricsMsg); - if (typeof metricClone.value !== "undefined") { - updateMetricCore(metricClone); - } - return [2]; - } - }); - }); }; - var updateMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () { - var metricClone; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - metricClone = cloneMetric(metric); - return [4, joinPromise]; - case 1: - _a.sent(); - updateMetricCore(metricClone); - return [2]; - } - }); - }); }; - var updateMetricCore = function (metric) { + const createSystem = async (system) => { + if (system.parent === undefined) { + return; + } + await joinPromise; + const metric = { + name: normalizeMetricName(system.path.join("/") + "/" + system.name + "/State"), + type: "object", + composite: { + Description: { + type: "string", + description: "", + }, + Value: { + type: "number", + description: "", + }, + }, + description: "System state", + context: {}, + }; + const createMetricsMsg = { + type: "define", + metrics: [metric], + }; + session.send(createMetricsMsg); + }; + const updateSystem = async (system, state) => { + await joinPromise; + const shadowedUpdateMetric = { + type: "publish", + values: [{ + name: normalizeMetricName(system.path.join("/") + "/" + system.name + "/State"), + value: { + Description: state.description, + Value: state.state, + }, + timestamp: Date.now(), + }], + }; + session.send(shadowedUpdateMetric); + const stateObj = composeMsgForRootStateMetric(system); + const rootMetric = { + type: "publish", + peer_id: connection.peerId, + values: [{ + name: "/State", + value: { + Description: stateObj.description, + Value: stateObj.value, + }, + timestamp: Date.now(), + }], + }; + session.send(rootMetric); + }; + const createMetric = async (metric) => { + const metricClone = cloneMetric(metric); + await joinPromise; + const m = serializeMetric(metricClone); + const createMetricsMsg = { + type: "define", + metrics: [m], + }; + session.send(createMetricsMsg); + if (typeof metricClone.value !== "undefined") { + updateMetricCore(metricClone); + } + }; + const updateMetric = async (metric) => { + const metricClone = cloneMetric(metric); + await joinPromise; + updateMetricCore(metricClone); + }; + const updateMetricCore = (metric) => { if (canUpdate()) { - var value = getMetricValueByType(metric); - var publishMetricsMsg = { + const value = getMetricValueByType(metric); + const publishMetricsMsg = { type: "publish", values: [{ name: normalizeMetricName(metric.path.join("/") + "/" + metric.name), - value: value, + value, timestamp: Date.now(), }], }; @@ -7008,34 +6465,33 @@ function gw3 (connection, config) { } return Promise.resolve(); }; - var cloneMetric = function (metric) { - var metricClone = __assign({}, metric); + const cloneMetric = (metric) => { + const metricClone = { ...metric }; if (typeof metric.value === "object" && metric.value !== null) { - metricClone.value = __assign({}, metric.value); + metricClone.value = { ...metric.value }; } return metricClone; }; - var canUpdate = function () { - var _a; + const canUpdate = () => { try { - var func = (_a = config.canUpdateMetric) !== null && _a !== void 0 ? _a : (function () { return true; }); + const func = config.canUpdateMetric ?? (() => true); return func(); } - catch (_b) { + catch { return true; } }; return { - init: init, - createSystem: createSystem, - updateSystem: updateSystem, - createMetric: createMetric, - updateMetric: updateMetric, + init, + createSystem, + updateSystem, + createMetric, + updateMetric, }; } var Helpers = { - validate: function (definition, parent, transport) { + validate: (definition, parent, transport) => { if (definition === null || typeof definition !== "object") { throw new Error("Missing definition"); } @@ -7048,14 +6504,25 @@ var Helpers = { }, }; -var BaseMetric = (function () { - function BaseMetric(definition, system, transport, value, type) { +class BaseMetric { + definition; + system; + transport; + value; + type; + path = []; + name; + description; + get repo() { + return this.system?.repo; + } + get id() { return `${this.system.path}/${name}`; } + constructor(definition, system, transport, value, type) { this.definition = definition; this.system = system; this.transport = transport; this.value = value; this.type = type; - this.path = []; Helpers.validate(definition, system, transport); this.path = system.path.slice(0); this.path.push(system.name); @@ -7063,84 +6530,61 @@ var BaseMetric = (function () { this.description = definition.description; transport.createMetric(this); } - Object.defineProperty(BaseMetric.prototype, "repo", { - get: function () { - var _a; - return (_a = this.system) === null || _a === void 0 ? void 0 : _a.repo; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(BaseMetric.prototype, "id", { - get: function () { return "".concat(this.system.path, "/").concat(name); }, - enumerable: false, - configurable: true - }); - BaseMetric.prototype.update = function (newValue) { + update(newValue) { this.value = newValue; return this.transport.updateMetric(this); - }; - return BaseMetric; -}()); + } +} -var NumberMetric = (function (_super) { - __extends(NumberMetric, _super); - function NumberMetric(definition, system, transport, value) { - return _super.call(this, definition, system, transport, value, MetricTypes.NUMBER) || this; +class NumberMetric extends BaseMetric { + constructor(definition, system, transport, value) { + super(definition, system, transport, value, MetricTypes.NUMBER); } - NumberMetric.prototype.incrementBy = function (num) { + incrementBy(num) { this.update(this.value + num); - }; - NumberMetric.prototype.increment = function () { + } + increment() { this.incrementBy(1); - }; - NumberMetric.prototype.decrement = function () { + } + decrement() { this.incrementBy(-1); - }; - NumberMetric.prototype.decrementBy = function (num) { + } + decrementBy(num) { this.incrementBy(num * -1); - }; - return NumberMetric; -}(BaseMetric)); + } +} -var ObjectMetric = (function (_super) { - __extends(ObjectMetric, _super); - function ObjectMetric(definition, system, transport, value) { - return _super.call(this, definition, system, transport, value, MetricTypes.OBJECT) || this; +class ObjectMetric extends BaseMetric { + constructor(definition, system, transport, value) { + super(definition, system, transport, value, MetricTypes.OBJECT); } - ObjectMetric.prototype.update = function (newValue) { + update(newValue) { this.mergeValues(newValue); return this.transport.updateMetric(this); - }; - ObjectMetric.prototype.mergeValues = function (values) { - var _this = this; - return Object.keys(this.value).forEach(function (k) { + } + mergeValues(values) { + return Object.keys(this.value).forEach((k) => { if (typeof values[k] !== "undefined") { - _this.value[k] = values[k]; + this.value[k] = values[k]; } }); - }; - return ObjectMetric; -}(BaseMetric)); + } +} -var StringMetric = (function (_super) { - __extends(StringMetric, _super); - function StringMetric(definition, system, transport, value) { - return _super.call(this, definition, system, transport, value, MetricTypes.STRING) || this; +class StringMetric extends BaseMetric { + constructor(definition, system, transport, value) { + super(definition, system, transport, value, MetricTypes.STRING); } - return StringMetric; -}(BaseMetric)); +} -var TimestampMetric = (function (_super) { - __extends(TimestampMetric, _super); - function TimestampMetric(definition, system, transport, value) { - return _super.call(this, definition, system, transport, value, MetricTypes.TIMESTAMP) || this; +class TimestampMetric extends BaseMetric { + constructor(definition, system, transport, value) { + super(definition, system, transport, value, MetricTypes.TIMESTAMP); } - TimestampMetric.prototype.now = function () { + now() { this.update(new Date()); - }; - return TimestampMetric; -}(BaseMetric)); + } +} function system(name, repo, protocol, parent, description) { if (!repo) { @@ -7149,67 +6593,67 @@ function system(name, repo, protocol, parent, description) { if (!protocol) { throw new Error("Transport is required"); } - var _transport = protocol; - var _name = name; - var _description = description || ""; - var _repo = repo; - var _parent = parent; - var _path = _buildPath(parent); - var _state = {}; - var id = _arrayToString(_path, "/") + name; - var root = repo.root; - var _subSystems = []; - var _metrics = []; + const _transport = protocol; + const _name = name; + const _description = description || ""; + const _repo = repo; + const _parent = parent; + const _path = _buildPath(parent); + let _state = {}; + const id = _arrayToString(_path, "/") + name; + const root = repo.root; + const _subSystems = []; + const _metrics = []; function subSystem(nameSystem, descriptionSystem) { if (!nameSystem || nameSystem.length === 0) { throw new Error("name is required"); } - var match = _subSystems.filter(function (s) { return s.name === nameSystem; }); + const match = _subSystems.filter((s) => s.name === nameSystem); if (match.length > 0) { return match[0]; } - var _system = system(nameSystem, _repo, _transport, me, descriptionSystem); + const _system = system(nameSystem, _repo, _transport, me, descriptionSystem); _subSystems.push(_system); return _system; } function setState(state, stateDescription) { - _state = { state: state, description: stateDescription }; + _state = { state, description: stateDescription }; _transport.updateSystem(me, _state); } function stringMetric(definition, value) { - return _getOrCreateMetric(definition, MetricTypes.STRING, value, function (metricDef) { return new StringMetric(metricDef, me, _transport, value); }); + return _getOrCreateMetric(definition, MetricTypes.STRING, value, (metricDef) => new StringMetric(metricDef, me, _transport, value)); } function numberMetric(definition, value) { - return _getOrCreateMetric(definition, MetricTypes.NUMBER, value, function (metricDef) { return new NumberMetric(metricDef, me, _transport, value); }); + return _getOrCreateMetric(definition, MetricTypes.NUMBER, value, (metricDef) => new NumberMetric(metricDef, me, _transport, value)); } function objectMetric(definition, value) { - return _getOrCreateMetric(definition, MetricTypes.OBJECT, value, function (metricDef) { return new ObjectMetric(metricDef, me, _transport, value); }); + return _getOrCreateMetric(definition, MetricTypes.OBJECT, value, (metricDef) => new ObjectMetric(metricDef, me, _transport, value)); } function timestampMetric(definition, value) { - return _getOrCreateMetric(definition, MetricTypes.TIMESTAMP, value, function (metricDef) { return new TimestampMetric(metricDef, me, _transport, value); }); + return _getOrCreateMetric(definition, MetricTypes.TIMESTAMP, value, (metricDef) => new TimestampMetric(metricDef, me, _transport, value)); } function _getOrCreateMetric(metricObject, expectedType, value, createMetric) { - var metricDef = { name: "" }; + let metricDef = { name: "" }; if (typeof metricObject === "string") { metricDef = { name: metricObject }; } else { metricDef = metricObject; } - var matching = _metrics.filter(function (shadowedMetric) { return shadowedMetric.name === metricDef.name; }); + const matching = _metrics.filter((shadowedMetric) => shadowedMetric.name === metricDef.name); if (matching.length > 0) { - var existing = matching[0]; + const existing = matching[0]; if (existing.type !== expectedType) { - throw new Error("A metric named ".concat(metricDef.name, " is already defined with different type.")); + throw new Error(`A metric named ${metricDef.name} is already defined with different type.`); } if (typeof value !== "undefined") { existing .update(value) - .catch(function () { }); + .catch(() => { }); } return existing; } - var metric = createMetric(metricDef); + const metric = createMetric(metricDef); _metrics.push(metric); return metric; } @@ -7217,7 +6661,7 @@ function system(name, repo, protocol, parent, description) { if (!shadowedSystem || !shadowedSystem.parent) { return []; } - var path = _buildPath(shadowedSystem.parent); + const path = _buildPath(shadowedSystem.parent); path.push(shadowedSystem.name); return path; } @@ -7225,7 +6669,7 @@ function system(name, repo, protocol, parent, description) { return ((path && path.length > 0) ? path.join(separator) : ""); } function getAggregateState() { - var aggState = []; + const aggState = []; if (Object.keys(_state).length > 0) { aggState.push({ name: _name, @@ -7234,15 +6678,15 @@ function system(name, repo, protocol, parent, description) { description: _state.description, }); } - _subSystems.forEach(function (shadowedSubSystem) { - var result = shadowedSubSystem.getAggregateState(); + _subSystems.forEach((shadowedSubSystem) => { + const result = shadowedSubSystem.getAggregateState(); if (result.length > 0) { - aggState.push.apply(aggState, result); + aggState.push(...result); } }); return aggState; } - var me = { + const me = { get name() { return _name; }, @@ -7256,60 +6700,60 @@ function system(name, repo, protocol, parent, description) { return _parent; }, path: _path, - id: id, - root: root, + id, + root, get subSystems() { return _subSystems; }, get metrics() { return _metrics; }, - subSystem: subSystem, - getState: function () { + subSystem, + getState: () => { return _state; }, - setState: setState, - stringMetric: stringMetric, - timestampMetric: timestampMetric, - objectMetric: objectMetric, - numberMetric: numberMetric, - getAggregateState: getAggregateState, + setState, + stringMetric, + timestampMetric, + objectMetric, + numberMetric, + getAggregateState, }; _transport.createSystem(me); return me; } -var Repository = (function () { - function Repository(options, protocol) { +class Repository { + root; + constructor(options, protocol) { protocol.init(this); this.root = system("", this, protocol); this.addSystemMetrics(this.root, options.clickStream || options.clickStream === undefined); } - Repository.prototype.addSystemMetrics = function (rootSystem, useClickStream) { + addSystemMetrics(rootSystem, useClickStream) { if (typeof navigator !== "undefined") { rootSystem.stringMetric("UserAgent", navigator.userAgent); } if (useClickStream && typeof document !== "undefined") { - var clickStream_1 = rootSystem.subSystem("ClickStream"); - var documentClickHandler = function (e) { - var _a; + const clickStream = rootSystem.subSystem("ClickStream"); + const documentClickHandler = (e) => { if (!e.target) { return; } - var target = e.target; - var className = target ? (_a = target.getAttribute("class")) !== null && _a !== void 0 ? _a : "" : ""; - clickStream_1.objectMetric("LastBrowserEvent", { + const target = e.target; + const className = target ? target.getAttribute("class") ?? "" : ""; + clickStream.objectMetric("LastBrowserEvent", { type: "click", timestamp: new Date(), target: { - className: className, + className, id: target.id, type: "<" + target.tagName.toLowerCase() + ">", href: target.href || "", }, }); }; - clickStream_1.objectMetric("Page", { + clickStream.objectMetric("Page", { title: document.title, page: window.location.href, }); @@ -7321,125 +6765,120 @@ var Repository = (function () { } } rootSystem.stringMetric("StartTime", (new Date()).toString()); - var urlMetric = rootSystem.stringMetric("StartURL", ""); - var appNameMetric = rootSystem.stringMetric("AppName", ""); + const urlMetric = rootSystem.stringMetric("StartURL", ""); + const appNameMetric = rootSystem.stringMetric("AppName", ""); if (typeof window !== "undefined") { if (typeof window.location !== "undefined") { - var startUrl = window.location.href; + const startUrl = window.location.href; urlMetric.update(startUrl); } if (typeof window.glue42gd !== "undefined") { appNameMetric.update(window.glue42gd.appName); } } - }; - return Repository; -}()); + } +} -var NullProtocol = (function () { - function NullProtocol() { +class NullProtocol { + init(repo) { } - NullProtocol.prototype.init = function (repo) { - }; - NullProtocol.prototype.createSystem = function (system) { + createSystem(system) { return Promise.resolve(); - }; - NullProtocol.prototype.updateSystem = function (metric, state) { + } + updateSystem(metric, state) { return Promise.resolve(); - }; - NullProtocol.prototype.createMetric = function (metric) { + } + createMetric(metric) { return Promise.resolve(); - }; - NullProtocol.prototype.updateMetric = function (metric) { + } + updateMetric(metric) { return Promise.resolve(); - }; - return NullProtocol; -}()); + } +} -var PerfTracker = (function () { - function PerfTracker(api, initialPublishTimeout, publishInterval) { +class PerfTracker { + api; + lastCount = 0; + initialPublishTimeout = 10 * 1000; + publishInterval = 60 * 1000; + system; + constructor(api, initialPublishTimeout, publishInterval) { this.api = api; - this.lastCount = 0; - this.initialPublishTimeout = 10 * 1000; - this.publishInterval = 60 * 1000; - this.initialPublishTimeout = initialPublishTimeout !== null && initialPublishTimeout !== void 0 ? initialPublishTimeout : this.initialPublishTimeout; - this.publishInterval = publishInterval !== null && publishInterval !== void 0 ? publishInterval : this.publishInterval; + this.initialPublishTimeout = initialPublishTimeout ?? this.initialPublishTimeout; + this.publishInterval = publishInterval ?? this.publishInterval; this.scheduleCollection(); this.system = this.api.subSystem("performance", "Performance data published by the web application"); } - PerfTracker.prototype.scheduleCollection = function () { - var _this = this; - setTimeout(function () { - _this.collect(); - setInterval(function () { - _this.collect(); - }, _this.publishInterval); + scheduleCollection() { + setTimeout(() => { + this.collect(); + setInterval(() => { + this.collect(); + }, this.publishInterval); }, this.initialPublishTimeout); - }; - PerfTracker.prototype.collect = function () { + } + collect() { try { this.collectMemory(); this.collectEntries(); } - catch (_a) { + catch { } - }; - PerfTracker.prototype.collectMemory = function () { - var memory = window.performance.memory; + } + collectMemory() { + const memory = window.performance.memory; this.system.stringMetric("memory", JSON.stringify({ totalJSHeapSize: memory.totalJSHeapSize, usedJSHeapSize: memory.usedJSHeapSize })); - }; - PerfTracker.prototype.collectEntries = function () { - var allEntries = window.performance.getEntries(); + } + collectEntries() { + const allEntries = window.performance.getEntries(); if (allEntries.length <= this.lastCount) { return; } this.lastCount = allEntries.length; - var jsonfiedEntries = allEntries.map(function (i) { return i.toJSON(); }); + const jsonfiedEntries = allEntries.map((i) => i.toJSON()); this.system.stringMetric("entries", JSON.stringify(jsonfiedEntries)); - }; - return PerfTracker; -}()); + } +} -var metrics = (function (options) { - var protocol; +var metrics = (options) => { + let protocol; if (!options.connection || typeof options.connection !== "object") { protocol = new NullProtocol(); } else { protocol = gw3(options.connection, options); } - var repo = new Repository(options, protocol); - var rootSystem = repo.root; + const repo = new Repository(options, protocol); + let rootSystem = repo.root; if (!options.disableAutoAppSystem) { rootSystem = rootSystem.subSystem("App"); } - var api = addFAVSupport(rootSystem); + const api = addFAVSupport(rootSystem); initPerf(api, options.pagePerformanceMetrics); return api; -}); +}; function initPerf(api, config) { - var _a, _b; if (typeof window === "undefined") { return; } - var perfConfig = (_b = (_a = window === null || window === void 0 ? void 0 : window.glue42gd) === null || _a === void 0 ? void 0 : _a.metrics) === null || _b === void 0 ? void 0 : _b.pagePerformanceMetrics; + const perfConfig = window?.glue42gd?.metrics?.pagePerformanceMetrics; if (perfConfig) { config = perfConfig; } - if (config === null || config === void 0 ? void 0 : config.enabled) { + if (config?.enabled) { new PerfTracker(api, config.initialPublishTimeout, config.publishInterval); } } function addFAVSupport(system) { - var reportingSystem = system.subSystem("reporting"); - var def = { + const reportingSystem = system.subSystem("reporting"); + const def = { name: "features" }; - var featureMetric; - var featureMetricFunc = function (name, action, payload) { + let featureMetric; + const featureMetricFunc = (name, action, payload) => { if (typeof name === "undefined" || name === "") { throw new Error("name is mandatory"); } @@ -7450,13 +6889,13 @@ function addFAVSupport(system) { throw new Error("payload is mandatory"); } if (!featureMetric) { - featureMetric = reportingSystem.objectMetric(def, { name: name, action: action, payload: payload }); + featureMetric = reportingSystem.objectMetric(def, { name, action, payload }); } else { featureMetric.update({ - name: name, - action: action, - payload: payload + name, + action, + payload }); } }; @@ -7585,116 +7024,109 @@ function createRegistry(options) { }; } createRegistry.default = createRegistry; -var lib$1 = createRegistry; +var lib = createRegistry; -var InProcTransport = (function () { - function InProcTransport(settings, logger) { - var _this = this; - this.registry = lib$1(); + +var CallbackRegistryFactory = /*@__PURE__*/getDefaultExportFromCjs(lib); + +class InProcTransport { + gw; + registry = CallbackRegistryFactory(); + client; + constructor(settings, logger) { this.gw = settings.facade; - this.gw.connect(function (_client, message) { - _this.messageHandler(message); - }).then(function (client) { - _this.client = client; + this.gw.connect((_client, message) => { + this.messageHandler(message); + }).then((client) => { + this.client = client; }); } - Object.defineProperty(InProcTransport.prototype, "isObjectBasedTransport", { - get: function () { - return true; - }, - enumerable: false, - configurable: true - }); - InProcTransport.prototype.sendObject = function (msg) { + get isObjectBasedTransport() { + return true; + } + sendObject(msg) { if (this.client) { this.client.send(msg); return Promise.resolve(undefined); } else { - return Promise.reject("not connected"); + return Promise.reject(`not connected`); } - }; - InProcTransport.prototype.send = function (_msg) { + } + send(_msg) { return Promise.reject("not supported"); - }; - InProcTransport.prototype.onMessage = function (callback) { + } + onMessage(callback) { return this.registry.add("onMessage", callback); - }; - InProcTransport.prototype.onConnectedChanged = function (callback) { + } + onConnectedChanged(callback) { callback(true); - return function () { }; - }; - InProcTransport.prototype.close = function () { + return () => { }; + } + close() { return Promise.resolve(); - }; - InProcTransport.prototype.open = function () { + } + open() { return Promise.resolve(); - }; - InProcTransport.prototype.name = function () { + } + name() { return "in-memory"; - }; - InProcTransport.prototype.reconnect = function () { + } + reconnect() { return Promise.resolve(); - }; - InProcTransport.prototype.messageHandler = function (msg) { + } + messageHandler(msg) { this.registry.execute("onMessage", msg); - }; - return InProcTransport; -}()); + } +} -var SharedWorkerTransport = (function () { - function SharedWorkerTransport(workerFile, logger) { - var _this = this; +class SharedWorkerTransport { + logger; + worker; + registry = CallbackRegistryFactory(); + constructor(workerFile, logger) { this.logger = logger; - this.registry = lib$1(); this.worker = new SharedWorker(workerFile); - this.worker.port.onmessage = function (e) { - _this.messageHandler(e.data); + this.worker.port.onmessage = (e) => { + this.messageHandler(e.data); }; } - Object.defineProperty(SharedWorkerTransport.prototype, "isObjectBasedTransport", { - get: function () { - return true; - }, - enumerable: false, - configurable: true - }); - SharedWorkerTransport.prototype.sendObject = function (msg) { + get isObjectBasedTransport() { + return true; + } + sendObject(msg) { this.worker.port.postMessage(msg); return Promise.resolve(); - }; - SharedWorkerTransport.prototype.send = function (_msg) { + } + send(_msg) { return Promise.reject("not supported"); - }; - SharedWorkerTransport.prototype.onMessage = function (callback) { + } + onMessage(callback) { return this.registry.add("onMessage", callback); - }; - SharedWorkerTransport.prototype.onConnectedChanged = function (callback) { + } + onConnectedChanged(callback) { callback(true); - return function () { }; - }; - SharedWorkerTransport.prototype.close = function () { + return () => { }; + } + close() { return Promise.resolve(); - }; - SharedWorkerTransport.prototype.open = function () { + } + open() { return Promise.resolve(); - }; - SharedWorkerTransport.prototype.name = function () { + } + name() { return "shared-worker"; - }; - SharedWorkerTransport.prototype.reconnect = function () { + } + reconnect() { return Promise.resolve(); - }; - SharedWorkerTransport.prototype.messageHandler = function (msg) { + } + messageHandler(msg) { this.registry.execute("onMessage", msg); - }; - return SharedWorkerTransport; -}()); - -var Utils = (function () { - function Utils() { } - Utils.isNode = function () { +} + +class Utils { + static isNode() { if (typeof Utils._isNode !== "undefined") { return Utils._isNode; } @@ -7709,56 +7141,53 @@ var Utils = (function () { Utils._isNode = false; } return Utils._isNode; - }; - return Utils; -}()); + } + static _isNode; +} -var PromiseWrapper = (function () { - function PromiseWrapper() { - var _this = this; - this.rejected = false; - this.resolved = false; - this.promise = new Promise(function (resolve, reject) { - _this.resolve = function (t) { - _this.resolved = true; +class PromiseWrapper { + static delay(time) { + return new Promise((resolve) => setTimeout(resolve, time)); + } + resolve; + reject; + promise; + rejected = false; + resolved = false; + get ended() { + return this.rejected || this.resolved; + } + constructor() { + this.promise = new Promise((resolve, reject) => { + this.resolve = (t) => { + this.resolved = true; resolve(t); }; - _this.reject = function (err) { - _this.rejected = true; + this.reject = (err) => { + this.rejected = true; reject(err); }; }); } - PromiseWrapper.delay = function (time) { - return new Promise(function (resolve) { return setTimeout(resolve, time); }); - }; - Object.defineProperty(PromiseWrapper.prototype, "ended", { - get: function () { - return this.rejected || this.resolved; - }, - enumerable: false, - configurable: true - }); - return PromiseWrapper; -}()); +} -var timers = {}; +const timers = {}; function getAllTimers() { return timers; } function timer (timerName) { - var existing = timers[timerName]; + const existing = timers[timerName]; if (existing) { return existing; } - var marks = []; + const marks = []; function now() { return new Date().getTime(); } - var startTime = now(); + const startTime = now(); mark("start", startTime); - var endTime; - var period; + let endTime; + let period; function stop() { endTime = now(); mark("end", endTime); @@ -7766,14 +7195,14 @@ function timer (timerName) { return period; } function mark(name, time) { - var currentTime = time !== null && time !== void 0 ? time : now(); - var diff = 0; + const currentTime = time ?? now(); + let diff = 0; if (marks.length > 0) { diff = currentTime - marks[marks.length - 1].time; } - marks.push({ name: name, time: currentTime, diff: diff }); + marks.push({ name, time: currentTime, diff }); } - var timerObj = { + const timerObj = { get startTime() { return startTime; }, @@ -7783,37 +7212,38 @@ function timer (timerName) { get period() { return period; }, - stop: stop, - mark: mark, - marks: marks + stop, + mark, + marks }; timers[timerName] = timerObj; return timerObj; } -var WebSocketConstructor = Utils.isNode() ? require("ws") : window.WebSocket; -var WS = (function () { - function WS(settings, logger) { - this.startupTimer = timer("connection"); - this._running = true; - this._registry = lib$1(); - this.wsRequests = []; +const WebSocketConstructor = Utils.isNode() ? require("ws") : window.WebSocket; +class WS { + ws; + logger; + settings; + startupTimer = timer("connection"); + _running = true; + _registry = CallbackRegistryFactory(); + wsRequests = []; + constructor(settings, logger) { this.settings = settings; this.logger = logger; if (!this.settings.ws) { throw new Error("ws is missing"); } } - WS.prototype.onMessage = function (callback) { + onMessage(callback) { return this._registry.add("onMessage", callback); - }; - WS.prototype.send = function (msg, options) { - var _this = this; - return new Promise(function (resolve, reject) { - _this.waitForSocketConnection(function () { - var _a; + } + send(msg, options) { + return new Promise((resolve, reject) => { + this.waitForSocketConnection(() => { try { - (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.send(msg); + this.ws?.send(msg); resolve(); } catch (e) { @@ -7821,140 +7251,123 @@ var WS = (function () { } }, reject); }); - }; - WS.prototype.open = function () { - var _this = this; + } + open() { this.logger.info("opening ws..."); this._running = true; - return new Promise(function (resolve, reject) { - _this.waitForSocketConnection(resolve, reject); + return new Promise((resolve, reject) => { + this.waitForSocketConnection(resolve, reject); }); - }; - WS.prototype.close = function () { + } + close() { this._running = false; if (this.ws) { this.ws.close(); } return Promise.resolve(); - }; - WS.prototype.onConnectedChanged = function (callback) { + } + onConnectedChanged(callback) { return this._registry.add("onConnectedChanged", callback); - }; - WS.prototype.name = function () { + } + name() { return this.settings.ws; - }; - WS.prototype.reconnect = function () { - var _a; - (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close(); - var pw = new PromiseWrapper(); - this.waitForSocketConnection(function () { + } + reconnect() { + this.ws?.close(); + const pw = new PromiseWrapper(); + this.waitForSocketConnection(() => { pw.resolve(); }); return pw.promise; - }; - WS.prototype.waitForSocketConnection = function (callback, failed) { - var _a; - failed = failed !== null && failed !== void 0 ? failed : (function () { }); + } + waitForSocketConnection(callback, failed) { + failed = failed ?? (() => { }); if (!this._running) { - failed("wait for socket on ".concat(this.settings.ws, " failed - socket closed by user")); + failed(`wait for socket on ${this.settings.ws} failed - socket closed by user`); return; } - if (((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === 1) { + if (this.ws?.readyState === 1) { callback(); return; } - this.wsRequests.push({ callback: callback, failed: failed }); + this.wsRequests.push({ callback, failed }); if (this.wsRequests.length > 1) { return; } this.openSocket(); - }; - WS.prototype.openSocket = function (retryInterval, retriesLeft) { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - this.startupTimer.mark("opening-socket"); - if (retryInterval === undefined) { - retryInterval = this.settings.reconnectInterval; - } - if (typeof retriesLeft === "undefined") { - retriesLeft = this.settings.reconnectAttempts; - } - if (retriesLeft !== undefined) { - if (retriesLeft === 0) { - this.notifyForSocketState("wait for socket on ".concat(this.settings.ws, " failed - no more retries left")); - return [2]; - } - this.logger.debug("will retry ".concat(retriesLeft, " more times (every ").concat(retryInterval, " ms)")); - } - _b.label = 1; - case 1: - _b.trys.push([1, 3, , 4]); - return [4, this.initiateSocket()]; - case 2: - _b.sent(); - this.startupTimer.mark("socket-initiated"); - this.notifyForSocketState(); - return [3, 4]; - case 3: - _b.sent(); - setTimeout(function () { - var retries = retriesLeft === undefined ? undefined : retriesLeft - 1; - _this.openSocket(retryInterval, retries); - }, retryInterval); - return [3, 4]; - case 4: return [2]; - } - }); - }); - }; - WS.prototype.initiateSocket = function () { - var _this = this; - var pw = new PromiseWrapper(); - this.logger.debug("initiating ws to ".concat(this.settings.ws, "...")); - this.ws = new WebSocketConstructor(this.settings.ws || ""); - this.ws.onerror = function (err) { - var reason = ""; + } + async openSocket(retryInterval, retriesLeft) { + this.logger.info(`opening ws to ${this.settings.ws}, retryInterval: ${retryInterval}, retriesLeft: ${retriesLeft}...`); + this.startupTimer.mark("opening-socket"); + if (retryInterval === undefined) { + retryInterval = this.settings.reconnectInterval; + } + if (typeof retriesLeft === "undefined") { + retriesLeft = this.settings.reconnectAttempts; + } + if (retriesLeft !== undefined) { + if (retriesLeft === 0) { + this.notifyForSocketState(`wait for socket on ${this.settings.ws} failed - no more retries left`); + return; + } + this.logger.debug(`will retry ${retriesLeft} more times (every ${retryInterval} ms)`); + } + try { + await this.initiateSocket(); + this.startupTimer.mark("socket-initiated"); + this.notifyForSocketState(); + } + catch { + setTimeout(() => { + const retries = retriesLeft === undefined ? undefined : retriesLeft - 1; + this.openSocket(retryInterval, retries); + }, retryInterval); + } + } + initiateSocket() { + const pw = new PromiseWrapper(); + this.logger.debug(`initiating ws to ${this.settings.ws}...`); + this.ws = new WebSocketConstructor(this.settings.ws ?? ""); + this.ws.onerror = (err) => { + let reason = ""; try { reason = JSON.stringify(err); } catch (error) { - var seen_1 = new WeakSet(); - var replacer = function (key, value) { + const seen = new WeakSet(); + const replacer = (key, value) => { if (typeof value === "object" && value !== null) { - if (seen_1.has(value)) { + if (seen.has(value)) { return; } - seen_1.add(value); + seen.add(value); } return value; }; reason = JSON.stringify(err, replacer); } + this.logger.info(`ws error - reason: ${reason}`); pw.reject("error"); - _this.notifyStatusChanged(false, reason); + this.notifyStatusChanged(false, reason); }; - this.ws.onclose = function (err) { - _this.logger.info("ws closed ".concat(err)); + this.ws.onclose = (err) => { + this.logger.info(`ws closed - code: ${err?.code} reason: ${err?.reason}`); pw.reject("closed"); - _this.notifyStatusChanged(false); + this.notifyStatusChanged(false); }; - this.ws.onopen = function () { - var _a; - _this.startupTimer.mark("ws-opened"); - _this.logger.info("ws opened ".concat((_a = _this.settings.identity) === null || _a === void 0 ? void 0 : _a.application)); + this.ws.onopen = () => { + this.startupTimer.mark("ws-opened"); + this.logger.info(`ws opened ${this.settings.identity?.application}`); pw.resolve(); - _this.notifyStatusChanged(true); + this.notifyStatusChanged(true); }; - this.ws.onmessage = function (message) { - _this._registry.execute("onMessage", message.data); + this.ws.onmessage = (message) => { + this._registry.execute("onMessage", message.data); }; return pw.promise; - }; - WS.prototype.notifyForSocketState = function (error) { - this.wsRequests.forEach(function (wsRequest) { + } + notifyForSocketState(error) { + this.wsRequests.forEach((wsRequest) => { if (error) { if (wsRequest.failed) { wsRequest.failed(error); @@ -7965,965 +7378,66 @@ var WS = (function () { } }); this.wsRequests = []; - }; - WS.prototype.notifyStatusChanged = function (status, reason) { + } + notifyStatusChanged(status, reason) { this._registry.execute("onConnectedChanged", status, reason); - }; - return WS; -}()); - -var shortidExports = {}; -var shortid$1 = { - get exports(){ return shortidExports; }, - set exports(v){ shortidExports = v; }, -}; - -var libExports = {}; -var lib = { - get exports(){ return libExports; }, - set exports(v){ libExports = v; }, -}; - -// Found this seed-based random generator somewhere -// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu) - -var seed = 1; - -/** - * return a random number based on a seed - * @param seed - * @returns {number} - */ -function getNextValue() { - seed = (seed * 9301 + 49297) % 233280; - return seed/(233280.0); -} - -function setSeed$1(_seed_) { - seed = _seed_; + } } -var randomFromSeed$1 = { - nextValue: getNextValue, - seed: setSeed$1 -}; - -var randomFromSeed = randomFromSeed$1; - -var ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-'; -var alphabet$2; -var previousSeed; - -var shuffled; - -function reset() { - shuffled = false; -} - -function setCharacters(_alphabet_) { - if (!_alphabet_) { - if (alphabet$2 !== ORIGINAL) { - alphabet$2 = ORIGINAL; - reset(); - } - return; - } - - if (_alphabet_ === alphabet$2) { - return; - } - - if (_alphabet_.length !== ORIGINAL.length) { - throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_); - } - - var unique = _alphabet_.split('').filter(function(item, ind, arr){ - return ind !== arr.lastIndexOf(item); - }); - - if (unique.length) { - throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', ')); - } - - alphabet$2 = _alphabet_; - reset(); -} - -function characters(_alphabet_) { - setCharacters(_alphabet_); - return alphabet$2; -} - -function setSeed(seed) { - randomFromSeed.seed(seed); - if (previousSeed !== seed) { - reset(); - previousSeed = seed; - } -} - -function shuffle() { - if (!alphabet$2) { - setCharacters(ORIGINAL); - } - - var sourceArray = alphabet$2.split(''); - var targetArray = []; - var r = randomFromSeed.nextValue(); - var characterIndex; - - while (sourceArray.length > 0) { - r = randomFromSeed.nextValue(); - characterIndex = Math.floor(r * sourceArray.length); - targetArray.push(sourceArray.splice(characterIndex, 1)[0]); - } - return targetArray.join(''); -} - -function getShuffled() { - if (shuffled) { - return shuffled; - } - shuffled = shuffle(); - return shuffled; -} - -/** - * lookup shuffled letter - * @param index - * @returns {string} - */ -function lookup(index) { - var alphabetShuffled = getShuffled(); - return alphabetShuffled[index]; -} - -function get () { - return alphabet$2 || ORIGINAL; -} - -var alphabet_1 = { - get: get, - characters: characters, - seed: setSeed, - lookup: lookup, - shuffled: getShuffled -}; - -var crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto - -var randomByte; - -if (!crypto || !crypto.getRandomValues) { - randomByte = function(size) { - var bytes = []; - for (var i = 0; i < size; i++) { - bytes.push(Math.floor(Math.random() * 256)); - } - return bytes; - }; -} else { - randomByte = function(size) { - return crypto.getRandomValues(new Uint8Array(size)); - }; -} - -var randomByteBrowser = randomByte; - -// This file replaces `format.js` in bundlers like webpack or Rollup, -// according to `browser` config in `package.json`. - -var format_browser = function (random, alphabet, size) { - // We can’t use bytes bigger than the alphabet. To make bytes values closer - // to the alphabet, we apply bitmask on them. We look for the closest - // `2 ** x - 1` number, which will be bigger than alphabet size. If we have - // 30 symbols in the alphabet, we will take 31 (00011111). - // We do not use faster Math.clz32, because it is not available in browsers. - var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1; - // Bitmask is not a perfect solution (in our example it will pass 31 bytes, - // which is bigger than the alphabet). As a result, we will need more bytes, - // than ID size, because we will refuse bytes bigger than the alphabet. - - // Every hardware random generator call is costly, - // because we need to wait for entropy collection. This is why often it will - // be faster to ask for few extra bytes in advance, to avoid additional calls. - - // Here we calculate how many random bytes should we call in advance. - // It depends on ID length, mask / alphabet size and magic number 1.6 - // (which was selected according benchmarks). - - // -~f => Math.ceil(f) if n is float number - // -~i => i + 1 if n is integer number - var step = -~(1.6 * mask * size / alphabet.length); - var id = ''; - - while (true) { - var bytes = random(step); - // Compact alternative for `for (var i = 0; i < step; i++)` - var i = step; - while (i--) { - // If random byte is bigger than alphabet even after bitmask, - // we refuse it by `|| ''`. - id += alphabet[bytes[i] & mask] || ''; - // More compact than `id.length + 1 === size` - if (id.length === +size) return id - } - } -}; - -var alphabet$1 = alphabet_1; -var random = randomByteBrowser; -var format = format_browser; - -function generate$1(number) { - var loopCounter = 0; - var done; - - var str = ''; - - while (!done) { - str = str + format(random, alphabet$1.get(), 1); - done = number < (Math.pow(16, loopCounter + 1 ) ); - loopCounter++; - } - return str; -} - -var generate_1 = generate$1; - -var generate = generate_1; - -// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness. -// This number should be updated every year or so to keep the generated id short. -// To regenerate `new Date() - 0` and bump the version. Always bump the version! -var REDUCE_TIME = 1567752802062; - -// don't change unless we change the algos or REDUCE_TIME -// must be an integer and less than 16 -var version$1 = 7; - -// Counter is used when shortid is called multiple times in one second. -var counter; - -// Remember the last time shortid was called in case counter is needed. -var previousSeconds; - -/** - * Generate unique id - * Returns string id - */ -function build(clusterWorkerId) { - var str = ''; - - var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001); - - if (seconds === previousSeconds) { - counter++; - } else { - counter = 0; - previousSeconds = seconds; - } - - str = str + generate(version$1); - str = str + generate(clusterWorkerId); - if (counter > 0) { - str = str + generate(counter); - } - str = str + generate(seconds); - return str; -} - -var build_1 = build; - -var alphabet = alphabet_1; - -function isShortId(id) { - if (!id || typeof id !== 'string' || id.length < 6 ) { - return false; - } - - var nonAlphabetic = new RegExp('[^' + - alphabet.get().replace(/[|\\{}()[\]^$+*?.-]/g, '\\$&') + - ']'); - return !nonAlphabetic.test(id); -} - -var isValid = isShortId; - -(function (module) { - - var alphabet = alphabet_1; - var build = build_1; - var isValid$1 = isValid; - - // if you are using cluster or multiple servers use this to make each instance - // has a unique value for worker - // Note: I don't know if this is automatically set when using third - // party cluster solutions such as pm2. - var clusterWorkerId = 0; - - /** - * Set the seed. - * Highly recommended if you don't want people to try to figure out your id schema. - * exposed as shortid.seed(int) - * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps. - */ - function seed(seedValue) { - alphabet.seed(seedValue); - return module.exports; - } - - /** - * Set the cluster worker or machine id - * exposed as shortid.worker(int) - * @param workerId worker must be positive integer. Number less than 16 is recommended. - * returns shortid module so it can be chained. - */ - function worker(workerId) { - clusterWorkerId = workerId; - return module.exports; - } - - /** - * - * sets new characters to use in the alphabet - * returns the shuffled alphabet - */ - function characters(newCharacters) { - if (newCharacters !== undefined) { - alphabet.characters(newCharacters); - } - - return alphabet.shuffled(); - } - - /** - * Generate unique id - * Returns string id - */ - function generate() { - return build(clusterWorkerId); - } - - // Export all other functions as properties of the generate function - module.exports = generate; - module.exports.generate = generate; - module.exports.seed = seed; - module.exports.worker = worker; - module.exports.characters = characters; - module.exports.isValid = isValid$1; -} (lib)); - -(function (module) { - module.exports = libExports; -} (shortid$1)); - -var shortid = /*@__PURE__*/getDefaultExportFromCjs(shortidExports); - -function domainSession (domain, connection, logger, successMessages, errorMessages) { - if (domain == null) { - domain = "global"; - } - successMessages = successMessages || ["success"]; - errorMessages = errorMessages || ["error"]; - var isJoined = false; - var tryReconnecting = false; - var _latestOptions; - var _connectionOn = false; - var callbacks = lib$1(); - connection.disconnected(handleConnectionDisconnected); - connection.loggedIn(handleConnectionLoggedIn); - connection.on("success", function (msg) { return handleSuccessMessage(msg); }); - connection.on("error", function (msg) { return handleErrorMessage(msg); }); - connection.on("result", function (msg) { return handleSuccessMessage(msg); }); - if (successMessages) { - successMessages.forEach(function (sm) { - connection.on(sm, function (msg) { return handleSuccessMessage(msg); }); - }); - } - if (errorMessages) { - errorMessages.forEach(function (sm) { - connection.on(sm, function (msg) { return handleErrorMessage(msg); }); - }); - } - var requestsMap = {}; - function join(options) { - _latestOptions = options; - return new Promise(function (resolve, reject) { - if (isJoined) { - resolve({}); - return; - } - var joinPromise; - if (domain === "global") { - joinPromise = _connectionOn ? Promise.resolve({}) : Promise.reject("not connected to gateway"); - } - else { - logger.debug("joining domain ".concat(domain)); - var joinMsg = { - type: "join", - destination: domain, - domain: "global", - options: options, - }; - joinPromise = send(joinMsg); - } - joinPromise - .then(function () { - handleJoined(); - resolve({}); - }) - .catch(function (err) { - logger.debug("error joining " + domain + " domain: " + JSON.stringify(err)); - reject(err); - }); - }); - } - function leave() { - if (domain === "global") { - return Promise.resolve(); - } - logger.debug("stopping session " + domain + "..."); - var leaveMsg = { - type: "leave", - destination: domain, - domain: "global", - }; - tryReconnecting = false; - return send(leaveMsg) - .then(function () { - isJoined = false; - callbacks.execute("onLeft"); - }) - .catch(function () { - isJoined = false; - callbacks.execute("onLeft"); - }); - } - function handleJoined() { - logger.debug("did join " + domain); - isJoined = true; - var wasReconnect = tryReconnecting; - tryReconnecting = false; - callbacks.execute("onJoined", wasReconnect); - } - function handleConnectionDisconnected() { - _connectionOn = false; - logger.debug("connection is down"); - isJoined = false; - tryReconnecting = true; - callbacks.execute("onLeft", { disconnected: true }); - } - function handleConnectionLoggedIn() { - _connectionOn = true; - if (tryReconnecting) { - logger.debug("connection is now up - trying to reconnect..."); - join(_latestOptions); - } - } - function onJoined(callback) { - if (isJoined) { - callback(false); - } - return callbacks.add("onJoined", callback); - } - function onLeft(callback) { - if (!isJoined) { - callback(); - } - return callbacks.add("onLeft", callback); - } - function handleErrorMessage(msg) { - if (domain !== msg.domain) { - return; - } - var requestId = msg.request_id; - if (!requestId) { - return; - } - var entry = requestsMap[requestId]; - if (!entry) { - return; - } - entry.error(msg); - } - function handleSuccessMessage(msg) { - if (msg.domain !== domain) { - return; - } - var requestId = msg.request_id; - if (!requestId) { - return; - } - var entry = requestsMap[requestId]; - if (!entry) { - return; - } - entry.success(msg); - } - function getNextRequestId() { - return shortid(); - } - function send(msg, tag, options) { - options = options || {}; - msg.request_id = msg.request_id || getNextRequestId(); - msg.domain = msg.domain || domain; - if (!options.skipPeerId) { - msg.peer_id = connection.peerId; - } - var requestId = msg.request_id; - return new Promise(function (resolve, reject) { - requestsMap[requestId] = { - success: function (successMsg) { - delete requestsMap[requestId]; - successMsg._tag = tag; - resolve(successMsg); - }, - error: function (errorMsg) { - logger.warn("GW error - ".concat(JSON.stringify(errorMsg), " for request ").concat(JSON.stringify(msg))); - delete requestsMap[requestId]; - errorMsg._tag = tag; - reject(errorMsg); - }, - }; - connection - .send(msg, options) - .catch(function (err) { - requestsMap[requestId].error({ err: err }); - }); - }); - } - function sendFireAndForget(msg) { - msg.request_id = msg.request_id ? msg.request_id : getNextRequestId(); - msg.domain = msg.domain || domain; - msg.peer_id = connection.peerId; - return connection.send(msg); - } - return { - join: join, - leave: leave, - onJoined: onJoined, - onLeft: onLeft, - send: send, - sendFireAndForget: sendFireAndForget, - on: function (type, callback) { - connection.on(type, function (msg) { - if (msg.domain !== domain) { - return; - } - try { - callback(msg); - } - catch (e) { - logger.error("Callback failed: ".concat(e, " \n ").concat(e.stack, " \n msg was: ").concat(JSON.stringify(msg)), e); - } - }); - }, - loggedIn: function (callback) { return connection.loggedIn(callback); }, - connected: function (callback) { return connection.connected(callback); }, - disconnected: function (callback) { return connection.disconnected(callback); }, - get peerId() { - return connection.peerId; - }, - get domain() { - return domain; - }, - }; -} - -var GW3ProtocolImpl = (function () { - function GW3ProtocolImpl(connection, settings, logger) { - var _this = this; - this.connection = connection; - this.settings = settings; - this.logger = logger; - this.protocolVersion = 3; - this.datePrefix = "#T42_DATE#"; - this.datePrefixLen = this.datePrefix.length; - this.dateMinLen = this.datePrefixLen + 1; - this.datePrefixFirstChar = this.datePrefix[0]; - this.registry = lib$1(); - this._isLoggedIn = false; - this.shouldTryLogin = true; - this.initialLogin = true; - this.initialLoginAttempts = 3; - this.sessions = []; - connection.disconnected(function () { - _this.handleDisconnected(); - }); - this.ping(); - } - Object.defineProperty(GW3ProtocolImpl.prototype, "isLoggedIn", { - get: function () { - return this._isLoggedIn; - }, - enumerable: false, - configurable: true - }); - GW3ProtocolImpl.prototype.processStringMessage = function (message) { - var _this = this; - var msg = JSON.parse(message, function (key, value) { - if (typeof value !== "string") { - return value; - } - if (value.length < _this.dateMinLen) { - return value; - } - if (value[0] !== _this.datePrefixFirstChar) { - return value; - } - if (value.substring(0, _this.datePrefixLen) !== _this.datePrefix) { - return value; - } - try { - var milliseconds = parseInt(value.substring(_this.datePrefixLen, value.length), 10); - if (isNaN(milliseconds)) { - return value; - } - return new Date(milliseconds); - } - catch (ex) { - return value; - } - }); - return { - msg: msg, - msgType: msg.type, - }; - }; - GW3ProtocolImpl.prototype.createStringMessage = function (message) { - var oldToJson = Date.prototype.toJSON; - try { - var datePrefix_1 = this.datePrefix; - Date.prototype.toJSON = function () { - return datePrefix_1 + this.getTime(); - }; - var result = JSON.stringify(message); - return result; - } - finally { - Date.prototype.toJSON = oldToJson; - } - }; - GW3ProtocolImpl.prototype.processObjectMessage = function (message) { - if (!message.type) { - throw new Error("Object should have type property"); - } - return { - msg: message, - msgType: message.type, - }; - }; - GW3ProtocolImpl.prototype.createObjectMessage = function (message) { - return message; - }; - GW3ProtocolImpl.prototype.login = function (config, reconnect) { - return __awaiter(this, void 0, void 0, function () { - var authentication, token, e_1, _a, helloMsg, sendOptions, welcomeMsg, msg, token, _b, err_1; - return __generator(this, function (_c) { - switch (_c.label) { - case 0: - this.logger.debug("logging in..."); - this.loginConfig = config; - if (!this.loginConfig) { - this.loginConfig = { username: "", password: "" }; - } - this.shouldTryLogin = true; - authentication = {}; - this.connection.gatewayToken = config.gatewayToken; - if (!config.gatewayToken) return [3, 5]; - if (!reconnect) return [3, 4]; - _c.label = 1; - case 1: - _c.trys.push([1, 3, , 4]); - return [4, this.getNewGWToken()]; - case 2: - token = _c.sent(); - config.gatewayToken = token; - return [3, 4]; - case 3: - e_1 = _c.sent(); - this.logger.warn("failed to get GW token when reconnecting ".concat((e_1 === null || e_1 === void 0 ? void 0 : e_1.message) || e_1)); - return [3, 4]; - case 4: - authentication.method = "gateway-token"; - authentication.token = config.gatewayToken; - this.connection.gatewayToken = config.gatewayToken; - return [3, 10]; - case 5: - if (!(config.flowName === "sspi")) return [3, 9]; - authentication.provider = "win"; - authentication.method = "access-token"; - if (!(config.flowCallback && config.sessionId)) return [3, 7]; - _a = authentication; - return [4, config.flowCallback(config.sessionId, null)]; - case 6: - _a.token = - (_c.sent()) - .data - .toString("base64"); - return [3, 8]; - case 7: throw new Error("Invalid SSPI config"); - case 8: return [3, 10]; - case 9: - if (config.token) { - authentication.method = "access-token"; - authentication.token = config.token; - } - else if (config.username) { - authentication.method = "secret"; - authentication.login = config.username; - authentication.secret = config.password; - } - else if (config.provider) { - authentication.provider = config.provider; - authentication.providerContext = config.providerContext; - } - else { - throw new Error("invalid auth message" + JSON.stringify(config)); - } - _c.label = 10; - case 10: - helloMsg = { - type: "hello", - identity: this.settings.identity, - authentication: authentication - }; - if (config.sessionId) { - helloMsg.request_id = config.sessionId; - } - this.globalDomain = domainSession("global", this.connection, this.logger.subLogger("global-domain"), [ - "welcome", - "token", - "authentication-request" - ]); - sendOptions = { skipPeerId: true }; - if (this.initialLogin) { - sendOptions.retryInterval = this.settings.reconnectInterval; - sendOptions.maxRetries = this.settings.reconnectAttempts; - } - _c.label = 11; - case 11: - _c.trys.push([11, 19, 20, 21]); - welcomeMsg = void 0; - _c.label = 12; - case 12: - return [4, this.globalDomain.send(helloMsg, undefined, sendOptions)]; - case 13: - msg = _c.sent(); - if (!(msg.type === "authentication-request")) return [3, 16]; - token = Buffer.from(msg.authentication.token, "base64"); - if (!(config.flowCallback && config.sessionId)) return [3, 15]; - _b = helloMsg.authentication; - return [4, config.flowCallback(config.sessionId, token)]; - case 14: - _b.token = - (_c.sent()) - .data - .toString("base64"); - _c.label = 15; - case 15: - helloMsg.request_id = config.sessionId; - return [3, 12]; - case 16: - if (msg.type === "welcome") { - welcomeMsg = msg; - return [3, 18]; - } - else if (msg.type === "error") { - throw new Error("Authentication failed: " + msg.reason); - } - else { - throw new Error("Unexpected message type during authentication: " + msg.type); - } - case 17: return [3, 12]; - case 18: - this.initialLogin = false; - this.logger.debug("login successful with peerId " + welcomeMsg.peer_id); - this.connection.peerId = welcomeMsg.peer_id; - this.connection.resolvedIdentity = welcomeMsg.resolved_identity; - this.connection.availableDomains = welcomeMsg.available_domains; - if (welcomeMsg.options) { - this.connection.token = welcomeMsg.options.access_token; - this.connection.info = welcomeMsg.options.info; - } - this.setLoggedIn(true); - return [2, welcomeMsg.resolved_identity]; - case 19: - err_1 = _c.sent(); - this.logger.error("error sending hello message - " + (err_1.message || err_1.msg || err_1.reason || err_1), err_1); - throw err_1; - case 20: - if (config && config.flowCallback && config.sessionId) { - config.flowCallback(config.sessionId, null); - } - return [7]; - case 21: return [2]; - } - }); - }); - }; - GW3ProtocolImpl.prototype.logout = function () { - return __awaiter(this, void 0, void 0, function () { - var promises; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - this.logger.debug("logging out..."); - this.shouldTryLogin = false; - if (this.pingTimer) { - clearTimeout(this.pingTimer); - } - promises = this.sessions.map(function (session) { - session.leave(); - }); - return [4, Promise.all(promises)]; - case 1: - _a.sent(); - return [2]; - } - }); - }); - }; - GW3ProtocolImpl.prototype.loggedIn = function (callback) { - if (this._isLoggedIn) { - callback(); - } - return this.registry.add("onLoggedIn", callback); - }; - GW3ProtocolImpl.prototype.domain = function (domainName, domainLogger, successMessages, errorMessages) { - var session = this.sessions.filter(function (s) { return s.domain === domainName; })[0]; - if (!session) { - session = domainSession(domainName, this.connection, domainLogger, successMessages, errorMessages); - this.sessions.push(session); - } - return session; - }; - GW3ProtocolImpl.prototype.handleDisconnected = function () { - var _this = this; - this.setLoggedIn(false); - var tryToLogin = this.shouldTryLogin; - if (tryToLogin && this.initialLogin) { - if (this.initialLoginAttempts <= 0) { - return; - } - this.initialLoginAttempts--; - } - this.logger.debug("disconnected - will try new login?" + this.shouldTryLogin); - if (this.shouldTryLogin) { - if (!this.loginConfig) { - throw new Error("no login info"); - } - this.connection.login(this.loginConfig, true) - .catch(function () { - setTimeout(_this.handleDisconnected.bind(_this), _this.settings.reconnectInterval || 1000); - }); - } - }; - GW3ProtocolImpl.prototype.setLoggedIn = function (value) { - this._isLoggedIn = value; - if (this._isLoggedIn) { - this.registry.execute("onLoggedIn"); - } - }; - GW3ProtocolImpl.prototype.ping = function () { - var _this = this; - if (!this.shouldTryLogin) { - return; - } - if (this._isLoggedIn) { - this.connection.send({ type: "ping" }); - } - this.pingTimer = setTimeout(function () { - _this.ping(); - }, 30 * 1000); - }; - GW3ProtocolImpl.prototype.authToken = function () { - var createTokenReq = { - type: "create-token" - }; - if (!this.globalDomain) { - return Promise.reject(new Error("no global domain session")); - } - return this.globalDomain.send(createTokenReq) - .then(function (res) { - return res.token; - }); - }; - GW3ProtocolImpl.prototype.getNewGWToken = function () { - if (typeof window !== "undefined") { - var glue42gd = window.glue42gd; - if (glue42gd) { - return glue42gd.getGWToken(); - } - } - return Promise.reject(new Error("not running in GD")); - }; - return GW3ProtocolImpl; -}()); - -var MessageReplayerImpl = (function () { - function MessageReplayerImpl(specs) { - this.specsNames = []; - this.messages = {}; - this.subs = {}; - this.subsRefCount = {}; +class MessageReplayerImpl { + specs; + specsNames = []; + messages = {}; + isDone; + subs = {}; + subsRefCount = {}; + connection; + constructor(specs) { this.specs = {}; - for (var _i = 0, specs_1 = specs; _i < specs_1.length; _i++) { - var spec = specs_1[_i]; + for (const spec of specs) { this.specs[spec.name] = spec; this.specsNames.push(spec.name); } } - MessageReplayerImpl.prototype.init = function (connection) { - var _this = this; + init(connection) { this.connection = connection; - for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) { - var name_1 = _a[_i]; - var _loop_1 = function (type) { - var refCount = this_1.subsRefCount[type]; + for (const name of this.specsNames) { + for (const type of this.specs[name].types) { + let refCount = this.subsRefCount[type]; if (!refCount) { refCount = 0; } refCount += 1; - this_1.subsRefCount[type] = refCount; + this.subsRefCount[type] = refCount; if (refCount > 1) { - return "continue"; + continue; } - var sub = connection.on(type, function (msg) { return _this.processMessage(type, msg); }); - this_1.subs[type] = sub; - }; - var this_1 = this; - for (var _b = 0, _c = this.specs[name_1].types; _b < _c.length; _b++) { - var type = _c[_b]; - _loop_1(type); + const sub = connection.on(type, (msg) => this.processMessage(type, msg)); + this.subs[type] = sub; } } - }; - MessageReplayerImpl.prototype.processMessage = function (type, msg) { + } + processMessage(type, msg) { if (this.isDone || !msg) { return; } - for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) { - var name_2 = _a[_i]; - if (this.specs[name_2].types.indexOf(type) !== -1) { - var messages = this.messages[name_2] || []; - this.messages[name_2] = messages; + for (const name of this.specsNames) { + if (this.specs[name].types.indexOf(type) !== -1) { + const messages = this.messages[name] || []; + this.messages[name] = messages; messages.push(msg); } } - }; - MessageReplayerImpl.prototype.drain = function (name, callback) { - var _a; + } + drain(name, callback) { if (callback) { (this.messages[name] || []).forEach(callback); } delete this.messages[name]; - for (var _i = 0, _b = this.specs[name].types; _i < _b.length; _i++) { - var type = _b[_i]; + for (const type of this.specs[name].types) { this.subsRefCount[type] -= 1; if (this.subsRefCount[type] <= 0) { - (_a = this.connection) === null || _a === void 0 ? void 0 : _a.off(this.subs[type]); + this.connection?.off(this.subs[type]); delete this.subs[type]; delete this.subsRefCount[type]; } @@ -8932,304 +7446,280 @@ var MessageReplayerImpl = (function () { if (!this.specs.length) { this.isDone = true; } - }; - return MessageReplayerImpl; -}()); + } +} + +const urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'; -var PromisePlus = function (executor, timeoutMilliseconds, timeoutMessage) { - return new Promise(function (resolve, reject) { - var timeout = setTimeout(function () { - var message = timeoutMessage || "Promise timeout hit: ".concat(timeoutMilliseconds); +let nanoid = (size = 21) => { + let id = ''; + let bytes = crypto.getRandomValues(new Uint8Array(size)); + while (size--) { + id += urlAlphabet[bytes[size] & 63]; + } + return id +}; + +const PromisePlus = (executor, timeoutMilliseconds, timeoutMessage) => { + return new Promise((resolve, reject) => { + const timeout = setTimeout(() => { + const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`; reject(message); }, timeoutMilliseconds); - var providedPromise = new Promise(executor); + const providedPromise = new Promise(executor); providedPromise - .then(function (result) { + .then((result) => { clearTimeout(timeout); resolve(result); }) - .catch(function (error) { + .catch((error) => { clearTimeout(timeout); reject(error); }); }); }; -var WebPlatformTransport = (function () { - function WebPlatformTransport(settings, logger, identity) { +class WebPlatformTransport { + settings; + logger; + identity; + isPreferredActivated; + _communicationId; + publicWindowId; + selfAssignedWindowId; + iAmConnected = false; + parentReady = false; + rejected = false; + parentPingResolve; + parentPingInterval; + connectionResolve; + extConnectionResolve; + extConnectionReject; + connectionReject; + port; + myClientId; + children = []; + extContentAvailable = false; + extContentConnecting = false; + extContentConnected = false; + parentWindowId; + parentInExtMode = false; + webNamespace = "g42_core_web"; + parent; + parentType; + parentPingTimeout = 5000; + connectionRequestTimeout = 7000; + defaultTargetString = "*"; + registry = CallbackRegistryFactory(); + messages = { + connectionAccepted: { name: "connectionAccepted", handle: this.handleConnectionAccepted.bind(this) }, + connectionRejected: { name: "connectionRejected", handle: this.handleConnectionRejected.bind(this) }, + connectionRequest: { name: "connectionRequest", handle: this.handleConnectionRequest.bind(this) }, + parentReady: { + name: "parentReady", handle: () => { + } + }, + parentPing: { name: "parentPing", handle: this.handleParentPing.bind(this) }, + platformPing: { name: "platformPing", handle: this.handlePlatformPing.bind(this) }, + platformReady: { name: "platformReady", handle: this.handlePlatformReady.bind(this) }, + clientUnload: { name: "clientUnload", handle: this.handleClientUnload.bind(this) }, + manualUnload: { name: "manualUnload", handle: this.handleManualUnload.bind(this) }, + extConnectionResponse: { name: "extConnectionResponse", handle: this.handleExtConnectionResponse.bind(this) }, + extSetupRequest: { name: "extSetupRequest", handle: this.handleExtSetupRequest.bind(this) }, + gatewayDisconnect: { name: "gatewayDisconnect", handle: this.handleGatewayDisconnect.bind(this) }, + gatewayInternalConnect: { name: "gatewayInternalConnect", handle: this.handleGatewayInternalConnect.bind(this) } + }; + constructor(settings, logger, identity) { this.settings = settings; this.logger = logger; this.identity = identity; - this.iAmConnected = false; - this.parentReady = false; - this.rejected = false; - this.children = []; - this.extContentAvailable = false; - this.extContentConnecting = false; - this.extContentConnected = false; - this.parentInExtMode = false; - this.webNamespace = "g42_core_web"; - this.parentPingTimeout = 5000; - this.connectionRequestTimeout = 7000; - this.defaultTargetString = "*"; - this.registry = lib$1(); - this.messages = { - connectionAccepted: { name: "connectionAccepted", handle: this.handleConnectionAccepted.bind(this) }, - connectionRejected: { name: "connectionRejected", handle: this.handleConnectionRejected.bind(this) }, - connectionRequest: { name: "connectionRequest", handle: this.handleConnectionRequest.bind(this) }, - parentReady: { - name: "parentReady", handle: function () { - } - }, - parentPing: { name: "parentPing", handle: this.handleParentPing.bind(this) }, - platformPing: { name: "platformPing", handle: this.handlePlatformPing.bind(this) }, - platformReady: { name: "platformReady", handle: this.handlePlatformReady.bind(this) }, - clientUnload: { name: "clientUnload", handle: this.handleClientUnload.bind(this) }, - manualUnload: { name: "manualUnload", handle: this.handleManualUnload.bind(this) }, - extConnectionResponse: { name: "extConnectionResponse", handle: this.handleExtConnectionResponse.bind(this) }, - extSetupRequest: { name: "extSetupRequest", handle: this.handleExtSetupRequest.bind(this) }, - gatewayDisconnect: { name: "gatewayDisconnect", handle: this.handleGatewayDisconnect.bind(this) }, - gatewayInternalConnect: { name: "gatewayInternalConnect", handle: this.handleGatewayInternalConnect.bind(this) } - }; this.extContentAvailable = !!window.glue42ext; this.setUpMessageListener(); this.setUpUnload(); this.setupPlatformUnloadListener(); this.parentType = window.name.includes("#wsp") ? "workspace" : undefined; } - WebPlatformTransport.prototype.manualSetReadyState = function () { + manualSetReadyState() { this.iAmConnected = true; this.parentReady = true; - }; - Object.defineProperty(WebPlatformTransport.prototype, "transportWindowId", { - get: function () { - return this.publicWindowId; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(WebPlatformTransport.prototype, "communicationId", { - get: function () { - return this._communicationId; - }, - enumerable: false, - configurable: true - }); - WebPlatformTransport.prototype.sendObject = function (msg) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - if (this.extContentConnected) { - return [2, window.postMessage({ glue42ExtOut: msg }, this.defaultTargetString)]; - } - if (!this.port) { - throw new Error("Cannot send message, because the port was not opened yet"); - } - this.port.postMessage(msg); - return [2]; - }); - }); - }; - Object.defineProperty(WebPlatformTransport.prototype, "isObjectBasedTransport", { - get: function () { - return true; - }, - enumerable: false, - configurable: true - }); - WebPlatformTransport.prototype.onMessage = function (callback) { + } + get transportWindowId() { + return this.publicWindowId; + } + get communicationId() { + return this._communicationId; + } + async sendObject(msg) { + if (this.extContentConnected) { + return window.postMessage({ glue42ExtOut: msg }, this.defaultTargetString); + } + if (!this.port) { + throw new Error("Cannot send message, because the port was not opened yet"); + } + this.port.postMessage(msg); + } + get isObjectBasedTransport() { + return true; + } + onMessage(callback) { return this.registry.add("onMessage", callback); - }; - WebPlatformTransport.prototype.send = function () { + } + send() { return Promise.reject("not supported"); - }; - WebPlatformTransport.prototype.onConnectedChanged = function (callback) { + } + onConnectedChanged(callback) { return this.registry.add("onConnectedChanged", callback); - }; - WebPlatformTransport.prototype.open = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - this.logger.debug("opening a connection to the web platform gateway."); - return [4, this.connect()]; - case 1: - _a.sent(); - this.notifyStatusChanged(true); - return [2]; - } - }); - }); - }; - WebPlatformTransport.prototype.close = function () { - var _a, _b; - var message = { + } + async open() { + this.logger.debug("opening a connection to the web platform gateway."); + await this.connect(); + this.notifyStatusChanged(true); + } + close() { + const message = { glue42core: { type: this.messages.gatewayDisconnect.name, data: { clientId: this.myClientId, - ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId + ownWindowId: this.identity?.windowId } } }; - (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message); + this.port?.postMessage(message); this.parentReady = false; this.notifyStatusChanged(false, "manual reconnection"); return Promise.resolve(); - }; - WebPlatformTransport.prototype.name = function () { + } + name() { return "web-platform"; - }; - WebPlatformTransport.prototype.reconnect = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, this.close()]; - case 1: - _a.sent(); - return [2, Promise.resolve()]; - } - }); - }); - }; - WebPlatformTransport.prototype.initiateInternalConnection = function () { - var _this = this; - return new Promise(function (resolve, reject) { - _this.logger.debug("opening an internal web platform connection"); - _this.port = _this.settings.port; - if (_this.iAmConnected) { - _this.logger.warn("cannot open a new connection, because this client is currently connected"); + } + async reconnect() { + await this.close(); + return Promise.resolve(); + } + initiateInternalConnection() { + return new Promise((resolve, reject) => { + this.logger.debug("opening an internal web platform connection"); + this.port = this.settings.port; + if (this.iAmConnected) { + this.logger.warn("cannot open a new connection, because this client is currently connected"); return; } - _this.port.onmessage = function (event) { - var _a, _b; - if (_this.iAmConnected && !((_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core)) { - _this.registry.execute("onMessage", event.data); + this.port.onmessage = (event) => { + if (this.iAmConnected && !event.data?.glue42core) { + this.registry.execute("onMessage", event.data); return; } - var data = (_b = event.data) === null || _b === void 0 ? void 0 : _b.glue42core; + const data = event.data?.glue42core; if (!data) { return; } - if (data.type === _this.messages.gatewayInternalConnect.name && data.success) { - _this.publicWindowId = _this.settings.windowId; - if (_this.identity && _this.publicWindowId) { - _this.identity.windowId = _this.publicWindowId; - _this.identity.instance = _this.publicWindowId; + if (data.type === this.messages.gatewayInternalConnect.name && data.success) { + this.publicWindowId = this.settings.windowId; + if (this.identity && this.publicWindowId) { + this.identity.windowId = this.publicWindowId; + this.identity.instance = this.publicWindowId; } resolve(); } - if (data.type === _this.messages.gatewayInternalConnect.name && data.error) { + if (data.type === this.messages.gatewayInternalConnect.name && data.error) { reject(data.error); } }; - _this.port.postMessage({ + this.port.postMessage({ glue42core: { - type: _this.messages.gatewayInternalConnect.name + type: this.messages.gatewayInternalConnect.name } }); }); - }; - WebPlatformTransport.prototype.initiateRemoteConnection = function (target) { - var _this = this; - return PromisePlus(function (resolve, reject) { - var _a; - _this.connectionResolve = resolve; - _this.connectionReject = reject; - _this.myClientId = (_a = _this.myClientId) !== null && _a !== void 0 ? _a : shortid(); - var bridgeInstanceId = _this.getMyWindowId() || shortid(); - var request = { + } + initiateRemoteConnection(target) { + return PromisePlus((resolve, reject) => { + this.connectionResolve = resolve; + this.connectionReject = reject; + this.myClientId = this.myClientId ?? nanoid(10); + const bridgeInstanceId = this.getMyWindowId() || nanoid(10); + const request = { glue42core: { - type: _this.messages.connectionRequest.name, - clientId: _this.myClientId, + type: this.messages.connectionRequest.name, + clientId: this.myClientId, clientType: "child", - bridgeInstanceId: bridgeInstanceId, - selfAssignedWindowId: _this.selfAssignedWindowId + bridgeInstanceId, + selfAssignedWindowId: this.selfAssignedWindowId } }; - _this.logger.debug("sending connection request"); - if (_this.extContentConnecting) { + this.logger.debug("sending connection request"); + if (this.extContentConnecting) { request.glue42core.clientType = "child"; - request.glue42core.bridgeInstanceId = _this.myClientId; - request.glue42core.parentWindowId = _this.parentWindowId; - return window.postMessage(request, _this.defaultTargetString); + request.glue42core.bridgeInstanceId = this.myClientId; + request.glue42core.parentWindowId = this.parentWindowId; + return window.postMessage(request, this.defaultTargetString); } if (!target) { throw new Error("Cannot send a connection request, because no glue target was specified!"); } - target.postMessage(request, _this.defaultTargetString); + target.postMessage(request, this.defaultTargetString); }, this.connectionRequestTimeout, "The connection to the target glue window timed out"); - }; - WebPlatformTransport.prototype.isParentCheckSuccess = function (parentCheck) { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - _a.trys.push([0, 2, , 3]); - return [4, parentCheck]; - case 1: - _a.sent(); - return [2, { success: true }]; - case 2: - _a.sent(); - return [2, { success: false }]; - case 3: return [2]; - } - }); - }); - }; - WebPlatformTransport.prototype.setUpMessageListener = function () { - var _this = this; + } + async isParentCheckSuccess(parentCheck) { + try { + await parentCheck; + return { success: true }; + } + catch (error) { + return { success: false }; + } + } + setUpMessageListener() { if (this.settings.port) { this.logger.debug("skipping generic message listener, because this is an internal client"); return; } - window.addEventListener("message", function (event) { - var _a; - var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core; - if (!data || _this.rejected) { + window.addEventListener("message", (event) => { + const data = event.data?.glue42core; + if (!data || this.rejected) { return; } - var allowedOrigins = _this.settings.allowedOrigins || []; + const allowedOrigins = this.settings.allowedOrigins || []; if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) { - _this.logger.warn("received a message from an origin which is not in the allowed list: ".concat(event.origin)); + this.logger.warn(`received a message from an origin which is not in the allowed list: ${event.origin}`); return; } - if (!_this.checkMessageTypeValid(data.type)) { - _this.logger.error("cannot handle the incoming glue42 core message, because the type is invalid: ".concat(data.type)); + if (!this.checkMessageTypeValid(data.type)) { + this.logger.error(`cannot handle the incoming glue42 core message, because the type is invalid: ${data.type}`); return; } - var messageType = data.type; - _this.logger.debug("received valid glue42core message of type: ".concat(messageType)); - _this.messages[messageType].handle(event); + const messageType = data.type; + this.logger.debug(`received valid glue42core message of type: ${messageType}`); + this.messages[messageType].handle(event); }); - }; - WebPlatformTransport.prototype.setUpUnload = function () { - var _this = this; + } + setUpUnload() { if (this.settings.port) { this.logger.debug("skipping unload event listener, because this is an internal client"); return; } - window.addEventListener("beforeunload", function () { - var _a, _b; - if (_this.extContentConnected) { + window.addEventListener("beforeunload", () => { + if (this.extContentConnected) { return; } - var message = { + const message = { glue42core: { - type: _this.messages.clientUnload.name, + type: this.messages.clientUnload.name, data: { - clientId: _this.myClientId, - ownWindowId: (_a = _this.identity) === null || _a === void 0 ? void 0 : _a.windowId + clientId: this.myClientId, + ownWindowId: this.identity?.windowId } } }; - if (_this.parent) { - _this.parent.postMessage(message, _this.defaultTargetString); + if (this.parent) { + this.parent.postMessage(message, this.defaultTargetString); } - (_b = _this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message); + this.port?.postMessage(message); }); - }; - WebPlatformTransport.prototype.handlePlatformReady = function (event) { + } + handlePlatformReady(event) { this.logger.debug("the web platform gave the ready signal"); this.parentReady = true; if (this.parentPingResolve) { @@ -9242,17 +7732,15 @@ var WebPlatformTransport = (function () { } this.parent = event.source; this.parentType = window.name.includes("#wsp") ? "workspace" : "window"; - }; - WebPlatformTransport.prototype.handleConnectionAccepted = function (event) { - var _a; - var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core; + } + handleConnectionAccepted(event) { + const data = event.data?.glue42core; if (this.myClientId === data.clientId) { return this.handleAcceptanceOfMyRequest(data); } return this.handleAcceptanceOfGrandChildRequest(data, event); - }; - WebPlatformTransport.prototype.handleAcceptanceOfMyRequest = function (data) { - var _this = this; + } + handleAcceptanceOfMyRequest(data) { this.logger.debug("handling a connection accepted signal targeted at me."); this.isPreferredActivated = data.isPreferredActivated; if (this.extContentConnecting) { @@ -9265,7 +7753,7 @@ var WebPlatformTransport = (function () { this.publicWindowId = this.getMyWindowId(); if (this.identity) { this.identity.windowId = this.publicWindowId; - this.identity.instance = this.identity.instance ? this.identity.instance : this.publicWindowId || shortid(); + this.identity.instance = this.identity.instance ? this.identity.instance : this.publicWindowId || nanoid(10); } if (this.identity && data.appName) { this.identity.application = data.appName; @@ -9273,7 +7761,7 @@ var WebPlatformTransport = (function () { } this._communicationId = data.communicationId; this.port = data.port; - this.port.onmessage = function (e) { return _this.registry.execute("onMessage", e.data); }; + this.port.onmessage = (e) => this.registry.execute("onMessage", e.data); if (this.connectionResolve) { this.logger.debug("my connection is set up, calling the connection resolve."); this.connectionResolve(); @@ -9281,9 +7769,8 @@ var WebPlatformTransport = (function () { return; } this.logger.error("unable to call the connection resolve, because no connection promise was found"); - }; - WebPlatformTransport.prototype.processExtContentConnection = function (data) { - var _this = this; + } + processExtContentConnection(data) { this.logger.debug("handling a connection accepted signal targeted at me for extension content connection."); this.extContentConnecting = false; this.extContentConnected = true; @@ -9295,18 +7782,17 @@ var WebPlatformTransport = (function () { this.identity.application = data.appName; this.identity.applicationName = data.appName; } - window.addEventListener("message", function (event) { - var _a; - var extData = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42ExtInc; + window.addEventListener("message", (event) => { + const extData = event.data?.glue42ExtInc; if (!extData) { return; } - var allowedOrigins = _this.settings.allowedOrigins || []; + const allowedOrigins = this.settings.allowedOrigins || []; if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) { - _this.logger.warn("received a message from an origin which is not in the allowed list: ".concat(event.origin)); + this.logger.warn(`received a message from an origin which is not in the allowed list: ${event.origin}`); return; } - _this.registry.execute("onMessage", extData); + this.registry.execute("onMessage", extData); }); if (this.connectionResolve) { this.logger.debug("my connection is set up, calling the connection resolve."); @@ -9314,38 +7800,38 @@ var WebPlatformTransport = (function () { delete this.connectionResolve; return; } - }; - WebPlatformTransport.prototype.handleAcceptanceOfGrandChildRequest = function (data, event) { + } + handleAcceptanceOfGrandChildRequest(data, event) { if (this.extContentConnecting || this.extContentConnected) { this.logger.debug("cannot process acceptance of a grandchild, because I am connected to a content script"); return; } - this.logger.debug("handling a connection accepted signal targeted at a grandchild: ".concat(data.clientId)); - var child = this.children.find(function (c) { return c.grandChildId === data.clientId; }); + this.logger.debug(`handling a connection accepted signal targeted at a grandchild: ${data.clientId}`); + const child = this.children.find((c) => c.grandChildId === data.clientId); if (!child) { - this.logger.error("cannot handle connection accepted for grandchild: ".concat(data.clientId, ", because there is no grandchild with this id")); + this.logger.error(`cannot handle connection accepted for grandchild: ${data.clientId}, because there is no grandchild with this id`); return; } child.connected = true; - this.logger.debug("the grandchild connection for ".concat(data.clientId, " is set up, forwarding the success message and the gateway port")); + this.logger.debug(`the grandchild connection for ${data.clientId} is set up, forwarding the success message and the gateway port`); data.parentWindowId = this.publicWindowId; child.source.postMessage(event.data, child.origin, [data.port]); return; - }; - WebPlatformTransport.prototype.handleConnectionRejected = function () { + } + handleConnectionRejected() { this.logger.debug("handling a connection rejection. Most likely the reason is that this window was not created by a glue API call"); if (this.connectionReject) { this.connectionReject("The platform connection was rejected. Most likely because this window was not created by a glue API call"); delete this.connectionReject; } - }; - WebPlatformTransport.prototype.handleConnectionRequest = function (event) { + } + handleConnectionRequest(event) { if (this.extContentConnecting) { this.logger.debug("This connection request event is targeted at the extension content"); return; } - var source = event.source; - var data = event.data.glue42core; + const source = event.source; + const data = event.data.glue42core; if (!data.clientType || data.clientType !== "grandChild") { return this.rejectConnectionRequest(source, event.origin, "rejecting a connection request, because the source was not opened by a glue API call"); } @@ -9355,12 +7841,12 @@ var WebPlatformTransport = (function () { if (!this.parent) { return this.rejectConnectionRequest(source, event.origin, "Cannot forward the connection request, because no direct connection to the platform was found"); } - this.logger.debug("handling a connection request for a grandchild: ".concat(data.clientId)); - this.children.push({ grandChildId: data.clientId, source: source, connected: false, origin: event.origin }); - this.logger.debug("grandchild: ".concat(data.clientId, " is prepared, forwarding connection request to the platform")); + this.logger.debug(`handling a connection request for a grandchild: ${data.clientId}`); + this.children.push({ grandChildId: data.clientId, source, connected: false, origin: event.origin }); + this.logger.debug(`grandchild: ${data.clientId} is prepared, forwarding connection request to the platform`); this.parent.postMessage(event.data, this.defaultTargetString); - }; - WebPlatformTransport.prototype.handleParentPing = function (event) { + } + handleParentPing(event) { if (!this.parentReady) { this.logger.debug("my parent is not ready, I am ignoring the parent ping"); return; @@ -9369,7 +7855,7 @@ var WebPlatformTransport = (function () { this.logger.debug("i am not fully connected yet, I am ignoring the parent ping"); return; } - var message = { + const message = { glue42core: { type: this.messages.parentReady.name } @@ -9377,89 +7863,85 @@ var WebPlatformTransport = (function () { if (this.extContentConnected) { message.glue42core.extMode = { windowId: this.myClientId }; } - var source = event.source; + const source = event.source; this.logger.debug("responding to a parent ping with a ready message"); source.postMessage(message, event.origin); - }; - WebPlatformTransport.prototype.setupPlatformUnloadListener = function () { - var _this = this; - this.onMessage(function (msg) { + } + setupPlatformUnloadListener() { + this.onMessage((msg) => { if (msg.type === "platformUnload") { - _this.logger.debug("detected a web platform unload"); - _this.parentReady = false; - _this.notifyStatusChanged(false, "Gateway unloaded"); + this.logger.debug("detected a web platform unload"); + this.parentReady = false; + this.notifyStatusChanged(false, "Gateway unloaded"); } }); - }; - WebPlatformTransport.prototype.handleManualUnload = function () { - var _a, _b; - var message = { + } + handleManualUnload() { + const message = { glue42core: { type: this.messages.clientUnload.name, data: { clientId: this.myClientId, - ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId + ownWindowId: this.identity?.windowId } } }; if (this.extContentConnected) { return window.postMessage({ glue42ExtOut: message }, this.defaultTargetString); } - (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message); - }; - WebPlatformTransport.prototype.handleClientUnload = function (event) { - var data = event.data.glue42core; - var clientId = data === null || data === void 0 ? void 0 : data.data.clientId; + this.port?.postMessage(message); + } + handleClientUnload(event) { + const data = event.data.glue42core; + const clientId = data?.data.clientId; if (!clientId) { this.logger.warn("cannot process grand child unload, because the provided id was not valid"); return; } - var foundChild = this.children.find(function (child) { return child.grandChildId === clientId; }); + const foundChild = this.children.find((child) => child.grandChildId === clientId); if (!foundChild) { this.logger.warn("cannot process grand child unload, because this client is unaware of this grandchild"); return; } - this.logger.debug("handling grandchild unload for id: ".concat(clientId)); - this.children = this.children.filter(function (child) { return child.grandChildId !== clientId; }); - }; - WebPlatformTransport.prototype.handlePlatformPing = function () { + this.logger.debug(`handling grandchild unload for id: ${clientId}`); + this.children = this.children.filter((child) => child.grandChildId !== clientId); + } + handlePlatformPing() { return; - }; - WebPlatformTransport.prototype.notifyStatusChanged = function (status, reason) { + } + notifyStatusChanged(status, reason) { this.iAmConnected = status; this.registry.execute("onConnectedChanged", status, reason); - }; - WebPlatformTransport.prototype.checkMessageTypeValid = function (typeToValidate) { + } + checkMessageTypeValid(typeToValidate) { return typeof typeToValidate === "string" && !!this.messages[typeToValidate]; - }; - WebPlatformTransport.prototype.rejectConnectionRequest = function (source, origin, reason) { + } + rejectConnectionRequest(source, origin, reason) { this.rejected = true; this.logger.error(reason); - var rejection = { + const rejection = { glue42core: { type: this.messages.connectionRejected.name } }; source.postMessage(rejection, origin); - }; - WebPlatformTransport.prototype.requestConnectionPermissionFromExt = function () { - var _this = this; + } + requestConnectionPermissionFromExt() { return this.waitForContentScript() - .then(function () { return PromisePlus(function (resolve, reject) { - _this.extConnectionResolve = resolve; - _this.extConnectionReject = reject; - var message = { + .then(() => PromisePlus((resolve, reject) => { + this.extConnectionResolve = resolve; + this.extConnectionReject = reject; + const message = { glue42core: { type: "extSetupRequest" } }; - _this.logger.debug("permission request to the extension content script was sent"); - window.postMessage(message, _this.defaultTargetString); - }, _this.parentPingTimeout, "Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out"); }); - }; - WebPlatformTransport.prototype.handleExtConnectionResponse = function (event) { - var _a; - var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core; + this.logger.debug("permission request to the extension content script was sent"); + window.postMessage(message, this.defaultTargetString); + }, this.parentPingTimeout, "Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out")); + } + handleExtConnectionResponse(event) { + const data = event.data?.glue42core; if (!data.approved) { return this.extConnectionReject ? this.extConnectionReject("Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection was rejected") : undefined; } @@ -9470,225 +7952,430 @@ var WebPlatformTransport = (function () { this.extContentConnecting = true; this.parentType = "extension"; this.logger.debug("The extension connection was approved, proceeding."); - }; - WebPlatformTransport.prototype.handleExtSetupRequest = function () { + } + handleExtSetupRequest() { return; - }; - WebPlatformTransport.prototype.handleGatewayDisconnect = function () { + } + handleGatewayDisconnect() { return; - }; - WebPlatformTransport.prototype.handleGatewayInternalConnect = function () { + } + handleGatewayInternalConnect() { return; - }; - WebPlatformTransport.prototype.waitForContentScript = function () { - var _a; - var contentReady = !!((_a = window.glue42ext) === null || _a === void 0 ? void 0 : _a.content); + } + waitForContentScript() { + const contentReady = !!window.glue42ext?.content; if (contentReady) { return Promise.resolve(); } - return PromisePlus(function (resolve) { - window.addEventListener("Glue42EXTReady", function () { + return PromisePlus((resolve) => { + window.addEventListener("Glue42EXTReady", () => { resolve(); }); }, this.connectionRequestTimeout, "The content script was available, but was never heard to be ready"); - }; - WebPlatformTransport.prototype.connect = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (!this.settings.port) return [3, 2]; - return [4, this.initiateInternalConnection()]; - case 1: - _a.sent(); - this.logger.debug("internal web platform connection completed"); - return [2]; - case 2: - this.logger.debug("opening a client web platform connection"); - return [4, this.findParent()]; - case 3: - _a.sent(); - return [4, this.initiateRemoteConnection(this.parent)]; - case 4: - _a.sent(); - this.logger.debug("the client is connected"); - return [2]; - } - }); - }); - }; - WebPlatformTransport.prototype.findParent = function () { - var _a; - return __awaiter(this, void 0, void 0, function () { - var connectionNotPossibleMsg, myInsideParents, myOutsideParents, uniqueParents, defaultParentCheck; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - connectionNotPossibleMsg = "Cannot initiate glue, because this window was not opened or created by a glue client"; - myInsideParents = this.getPossibleParentsInWindow(window); - myOutsideParents = this.getPossibleParentsOutsideWindow((_a = window.top) === null || _a === void 0 ? void 0 : _a.opener, window.top); - uniqueParents = new Set(__spreadArray(__spreadArray([], myInsideParents, true), myOutsideParents, true)); - if (!uniqueParents.size && !this.extContentAvailable) { - throw new Error(connectionNotPossibleMsg); - } - if (!(!uniqueParents.size && this.extContentAvailable)) return [3, 2]; - return [4, this.requestConnectionPermissionFromExt()]; - case 1: - _b.sent(); - return [2]; - case 2: return [4, this.isParentCheckSuccess(this.confirmParent(Array.from(uniqueParents)))]; - case 3: - defaultParentCheck = _b.sent(); - if (defaultParentCheck.success) { - this.logger.debug("The default parent was found!"); - return [2]; - } - if (!this.extContentAvailable) { - throw new Error(connectionNotPossibleMsg); - } - return [4, this.requestConnectionPermissionFromExt()]; - case 4: - _b.sent(); - return [2]; - } - }); - }); - }; - WebPlatformTransport.prototype.getPossibleParentsInWindow = function (currentWindow) { - return (!currentWindow || currentWindow === currentWindow.top) ? [] : __spreadArray([currentWindow.parent], this.getPossibleParentsInWindow(currentWindow.parent), true); - }; - WebPlatformTransport.prototype.getPossibleParentsOutsideWindow = function (opener, current) { - return (!opener || !current || opener === current) ? [] : __spreadArray(__spreadArray([opener], this.getPossibleParentsInWindow(opener), true), this.getPossibleParentsOutsideWindow(opener.opener, opener), true); - }; - WebPlatformTransport.prototype.confirmParent = function (targets) { - var _this = this; - var connectionNotPossibleMsg = "Cannot initiate glue, because this window was not opened or created by a glue client"; - var parentCheck = PromisePlus(function (resolve) { - _this.parentPingResolve = resolve; - var message = { + } + async connect() { + if (this.settings.port) { + await this.initiateInternalConnection(); + this.logger.debug("internal web platform connection completed"); + return; + } + this.logger.debug("opening a client web platform connection"); + await this.findParent(); + await this.initiateRemoteConnection(this.parent); + this.logger.debug("the client is connected"); + } + async findParent() { + const connectionNotPossibleMsg = "Cannot initiate glue, because this window was not opened or created by a glue client"; + const myInsideParents = this.getPossibleParentsInWindow(window); + const myOutsideParents = this.getPossibleParentsOutsideWindow(window.top?.opener, window.top); + const uniqueParents = new Set([...myInsideParents, ...myOutsideParents]); + if (!uniqueParents.size && !this.extContentAvailable) { + throw new Error(connectionNotPossibleMsg); + } + if (!uniqueParents.size && this.extContentAvailable) { + await this.requestConnectionPermissionFromExt(); + return; + } + const defaultParentCheck = await this.isParentCheckSuccess(this.confirmParent(Array.from(uniqueParents))); + if (defaultParentCheck.success) { + this.logger.debug("The default parent was found!"); + return; + } + if (!this.extContentAvailable) { + throw new Error(connectionNotPossibleMsg); + } + await this.requestConnectionPermissionFromExt(); + } + getPossibleParentsInWindow(currentWindow) { + return (!currentWindow || currentWindow === currentWindow.top) ? [] : [currentWindow.parent, ...this.getPossibleParentsInWindow(currentWindow.parent)]; + } + getPossibleParentsOutsideWindow(opener, current) { + return (!opener || !current || opener === current) ? [] : [opener, ...this.getPossibleParentsInWindow(opener), ...this.getPossibleParentsOutsideWindow(opener.opener, opener)]; + } + confirmParent(targets) { + const connectionNotPossibleMsg = "Cannot initiate glue, because this window was not opened or created by a glue client"; + const parentCheck = PromisePlus((resolve) => { + this.parentPingResolve = resolve; + const message = { glue42core: { - type: _this.messages.platformPing.name + type: this.messages.platformPing.name } }; - _this.parentPingInterval = setInterval(function () { - targets.forEach(function (target) { - target.postMessage(message, _this.defaultTargetString); + this.parentPingInterval = setInterval(() => { + targets.forEach((target) => { + target.postMessage(message, this.defaultTargetString); }); }, 1000); }, this.parentPingTimeout, connectionNotPossibleMsg); - parentCheck.catch(function () { - if (_this.parentPingInterval) { - clearInterval(_this.parentPingInterval); - delete _this.parentPingInterval; + parentCheck.catch(() => { + if (this.parentPingInterval) { + clearInterval(this.parentPingInterval); + delete this.parentPingInterval; } }); return parentCheck; - }; - WebPlatformTransport.prototype.getMyWindowId = function () { - var _a; + } + getMyWindowId() { if (this.parentType === "workspace") { return window.name.substring(0, window.name.indexOf("#wsp")); } if (window !== window.top) { return; } - if ((_a = window.name) === null || _a === void 0 ? void 0 : _a.includes("g42")) { + if (window.name?.includes("g42")) { return window.name; } - this.selfAssignedWindowId = this.selfAssignedWindowId || "g42-".concat(shortid()); + this.selfAssignedWindowId = this.selfAssignedWindowId || `g42-${nanoid(10)}`; return this.selfAssignedWindowId; - }; - return WebPlatformTransport; -}()); + } +} -var waitForInvocations = function (invocations, callback) { - var left = invocations; - return function () { +const waitForInvocations = (invocations, callback) => { + let left = invocations; + return () => { left--; if (left === 0) { callback(); } - }; -}; - -var AsyncSequelizer = (function () { - function AsyncSequelizer(minSequenceInterval) { - if (minSequenceInterval === void 0) { minSequenceInterval = 0; } - this.minSequenceInterval = minSequenceInterval; - this.queue = []; - this.isExecutingQueue = false; + }; +}; + +class AsyncSequelizer { + minSequenceInterval; + queue = []; + isExecutingQueue = false; + constructor(minSequenceInterval = 0) { + this.minSequenceInterval = minSequenceInterval; + } + enqueue(action) { + return new Promise((resolve, reject) => { + this.queue.push({ action, resolve, reject }); + this.executeQueue(); + }); + } + async executeQueue() { + if (this.isExecutingQueue) { + return; + } + this.isExecutingQueue = true; + while (this.queue.length) { + const operation = this.queue.shift(); + if (!operation) { + this.isExecutingQueue = false; + return; + } + try { + const actionResult = await operation.action(); + operation.resolve(actionResult); + } + catch (error) { + operation.reject(error); + } + await this.intervalBreak(); + } + this.isExecutingQueue = false; + } + intervalBreak() { + return new Promise((res) => setTimeout(res, this.minSequenceInterval)); + } +} + +function domainSession (domain, connection, logger, successMessages, errorMessages) { + if (domain == null) { + domain = "global"; + } + successMessages = successMessages ?? ["success"]; + errorMessages = errorMessages ?? ["error"]; + let isJoined = domain === "global"; + let tryReconnecting = false; + let _latestOptions; + let _connectionOn = false; + const callbacks = CallbackRegistryFactory(); + connection.disconnected(handleConnectionDisconnected); + connection.loggedIn(handleConnectionLoggedIn); + connection.on("success", (msg) => handleSuccessMessage(msg)); + connection.on("error", (msg) => handleErrorMessage(msg)); + connection.on("result", (msg) => handleSuccessMessage(msg)); + if (successMessages) { + successMessages.forEach((sm) => { + connection.on(sm, (msg) => handleSuccessMessage(msg)); + }); + } + if (errorMessages) { + errorMessages.forEach((sm) => { + connection.on(sm, (msg) => handleErrorMessage(msg)); + }); + } + const requestsMap = {}; + function join(options) { + _latestOptions = options; + return new Promise((resolve, reject) => { + if (isJoined) { + resolve({}); + return; + } + let joinPromise; + if (domain === "global") { + joinPromise = _connectionOn ? Promise.resolve({}) : Promise.reject("not connected to gateway"); + } + else { + logger.debug(`joining domain ${domain}`); + const joinMsg = { + type: "join", + destination: domain, + domain: "global", + options, + }; + joinPromise = send(joinMsg); + } + joinPromise + .then(() => { + handleJoined(); + resolve({}); + }) + .catch((err) => { + logger.debug("error joining " + domain + " domain: " + JSON.stringify(err)); + reject(err); + }); + }); + } + function leave() { + if (domain === "global") { + return Promise.resolve(); + } + logger.debug("stopping session " + domain + "..."); + const leaveMsg = { + type: "leave", + destination: domain, + domain: "global", + }; + tryReconnecting = false; + return send(leaveMsg) + .then(() => { + isJoined = false; + callbacks.execute("onLeft"); + }) + .catch(() => { + isJoined = false; + callbacks.execute("onLeft"); + }); + } + function handleJoined() { + logger.debug("did join " + domain); + isJoined = true; + const wasReconnect = tryReconnecting; + tryReconnecting = false; + callbacks.execute("onJoined", wasReconnect); + } + function handleConnectionDisconnected() { + _connectionOn = false; + logger.debug("connection is down"); + isJoined = false; + tryReconnecting = true; + callbacks.execute("onLeft", { disconnected: true }); + } + function handleConnectionLoggedIn() { + _connectionOn = true; + if (tryReconnecting) { + logger.debug("connection is now up - trying to reconnect..."); + join(_latestOptions); + } + } + function onJoined(callback) { + if (isJoined) { + callback(false); + } + return callbacks.add("onJoined", callback); + } + function onLeft(callback) { + if (!isJoined) { + callback(); + } + return callbacks.add("onLeft", callback); + } + function handleErrorMessage(msg) { + if (domain !== msg.domain) { + return; + } + const requestId = msg.request_id; + if (!requestId) { + return; + } + const entry = requestsMap[requestId]; + if (!entry) { + return; + } + entry.error(msg); + } + function handleSuccessMessage(msg) { + if (msg.domain !== domain) { + return; + } + const requestId = msg.request_id; + if (!requestId) { + return; + } + const entry = requestsMap[requestId]; + if (!entry) { + return; + } + entry.success(msg); } - AsyncSequelizer.prototype.enqueue = function (action) { - var _this = this; - return new Promise(function (resolve, reject) { - _this.queue.push({ action: action, resolve: resolve, reject: reject }); - _this.executeQueue(); - }); - }; - AsyncSequelizer.prototype.executeQueue = function () { - return __awaiter(this, void 0, void 0, function () { - var operation, actionResult, error_1; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (this.isExecutingQueue) { - return [2]; - } - this.isExecutingQueue = true; - _a.label = 1; - case 1: - if (!this.queue.length) return [3, 7]; - operation = this.queue.shift(); - if (!operation) { - this.isExecutingQueue = false; - return [2]; - } - _a.label = 2; - case 2: - _a.trys.push([2, 4, , 5]); - return [4, operation.action()]; - case 3: - actionResult = _a.sent(); - operation.resolve(actionResult); - return [3, 5]; - case 4: - error_1 = _a.sent(); - operation.reject(error_1); - return [3, 5]; - case 5: return [4, this.intervalBreak()]; - case 6: - _a.sent(); - return [3, 1]; - case 7: - this.isExecutingQueue = false; - return [2]; + function getNextRequestId() { + return nanoid(10); + } + let queuedCalls = []; + function send(msg, tag, options) { + const ignore = ["hello", "join"]; + if (msg.type && ignore.indexOf(msg.type) === -1) { + if (!isJoined) { + console.warn(`trying to send a message (${msg.domain} ${msg.type}) but not connected, will queue`); + const pw = new PromiseWrapper(); + queuedCalls.push({ msg, tag, options, pw }); + if (queuedCalls.length === 1) { + const unsubscribe = onJoined(() => { + logger.info(`joined - will now send queued messages (${queuedCalls.length} -> [${queuedCalls.map((m) => m.msg.type)}])`); + queuedCalls.forEach((qm) => { + send(qm.msg, qm.tag, qm.options) + .then((t) => qm.pw.resolve(t)) + .catch((e) => qm.pw.reject(e)); + }); + queuedCalls = []; + unsubscribe(); + }); } + return pw.promise; + } + } + options = options ?? {}; + msg.request_id = msg.request_id ?? getNextRequestId(); + msg.domain = msg.domain ?? domain; + if (!options.skipPeerId) { + msg.peer_id = connection.peerId; + } + const requestId = msg.request_id; + return new Promise((resolve, reject) => { + requestsMap[requestId] = { + success: (successMsg) => { + delete requestsMap[requestId]; + successMsg._tag = tag; + resolve(successMsg); + }, + error: (errorMsg) => { + logger.warn(`Gateway error - ${JSON.stringify(errorMsg)}`); + delete requestsMap[requestId]; + errorMsg._tag = tag; + reject(errorMsg); + }, + }; + connection + .send(msg, options) + .catch((err) => { + requestsMap[requestId].error({ err }); }); }); + } + function sendFireAndForget(msg) { + msg.request_id = msg.request_id ? msg.request_id : getNextRequestId(); + msg.domain = msg.domain ?? domain; + msg.peer_id = connection.peerId; + return connection.send(msg); + } + return { + join, + leave, + onJoined, + onLeft, + send, + sendFireAndForget, + on: (type, callback) => { + connection.on(type, (msg) => { + if (msg.domain !== domain) { + return; + } + try { + callback(msg); + } + catch (e) { + logger.error(`Callback failed: ${e} \n ${e.stack} \n msg was: ${JSON.stringify(msg)}`, e); + } + }); + }, + loggedIn: (callback) => connection.loggedIn(callback), + connected: (callback) => connection.connected(callback), + disconnected: (callback) => connection.disconnected(callback), + get peerId() { + return connection.peerId; + }, + get domain() { + return domain; + }, }; - AsyncSequelizer.prototype.intervalBreak = function () { - var _this = this; - return new Promise(function (res) { return setTimeout(res, _this.minSequenceInterval); }); - }; - return AsyncSequelizer; -}()); +} -var Connection = (function () { - function Connection(settings, logger) { +class Connection { + settings; + logger; + protocolVersion = 3; + peerId; + token; + info; + resolvedIdentity; + availableDomains; + gatewayToken; + replayer; + messageHandlers = {}; + ids = 1; + registry = CallbackRegistryFactory(); + _connected = false; + isTrace = false; + transport; + _defaultTransport; + _defaultAuth; + _targetTransport; + _targetAuth; + _swapTransport = false; + _switchInProgress = false; + _transportSubscriptions = []; + datePrefix = "#T42_DATE#"; + datePrefixLen = this.datePrefix.length; + dateMinLen = this.datePrefixLen + 1; + datePrefixFirstChar = this.datePrefix[0]; + _sequelizer = new AsyncSequelizer(); + _isLoggedIn = false; + shouldTryLogin = true; + pingTimer; + sessions = []; + globalDomain; + initialLogin = true; + initialLoginAttempts = 3; + loginConfig; + constructor(settings, logger) { this.settings = settings; this.logger = logger; - this.messageHandlers = {}; - this.ids = 1; - this.registry = lib$1(); - this._connected = false; - this.isTrace = false; - this._swapTransport = false; - this._switchInProgress = false; - this._transportSubscriptions = []; - this._sequelizer = new AsyncSequelizer(); settings = settings || {}; - settings.reconnectAttempts = settings.reconnectAttempts || 10; - settings.reconnectInterval = settings.reconnectInterval || 1000; + settings.reconnectAttempts = settings.reconnectAttempts ?? 10; + settings.reconnectInterval = settings.reconnectInterval ?? 1000; if (settings.inproc) { this.transport = new InProcTransport(settings.inproc, logger.subLogger("inMemory")); } @@ -9705,207 +8392,175 @@ var Connection = (function () { throw new Error("No connection information specified"); } this.isTrace = logger.canPublish("trace"); - logger.debug("starting with ".concat(this.transport.name(), " transport")); - this.protocol = new GW3ProtocolImpl(this, settings, logger.subLogger("protocol")); - var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)); - var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this)); + logger.debug(`starting with ${this.transport.name()} transport`); + const unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)); + const unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this)); this._transportSubscriptions.push(unsubConnectionChanged); this._transportSubscriptions.push(unsubOnMessage); this._defaultTransport = this.transport; + this.ping(); } - Object.defineProperty(Connection.prototype, "protocolVersion", { - get: function () { - var _a; - return (_a = this.protocol) === null || _a === void 0 ? void 0 : _a.protocolVersion; - }, - enumerable: false, - configurable: true - }); - Connection.prototype.switchTransport = function (settings) { - return __awaiter(this, void 0, void 0, function () { - var _this = this; - return __generator(this, function (_a) { - return [2, this._sequelizer.enqueue(function () { return __awaiter(_this, void 0, void 0, function () { - var switchTargetTransport, verifyPromise, isSwitchSuccess; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (!settings || typeof settings !== "object") { - throw new Error("Cannot switch transports, because the settings are missing or invalid."); - } - if (typeof settings.type === "undefined") { - throw new Error("Cannot switch the transport, because the type is not defined"); - } - this.logger.trace("Starting transport switch with settings: ".concat(JSON.stringify(settings))); - switchTargetTransport = settings.type === "secondary" ? this.getNewSecondaryTransport(settings) : this._defaultTransport; - this._targetTransport = switchTargetTransport; - this._targetAuth = settings.type === "secondary" ? this.getNewSecondaryAuth(settings) : this._defaultAuth; - verifyPromise = this.verifyConnection(); - this._swapTransport = true; - this._switchInProgress = true; - this.logger.trace("The new transport has been set, closing the current transport"); - return [4, this.transport.close()]; - case 1: - _a.sent(); - _a.label = 2; - case 2: - _a.trys.push([2, 4, , 5]); - return [4, verifyPromise]; - case 3: - _a.sent(); - isSwitchSuccess = this.transport === switchTargetTransport; - this.logger.info("The reconnection after the switch was completed. Was the switch a success: ".concat(isSwitchSuccess)); - this._switchInProgress = false; - return [2, { success: isSwitchSuccess }]; - case 4: - _a.sent(); - this.logger.info("The reconnection after the switch timed out, reverting back to the default transport."); - this.switchTransport({ type: "default" }); - this._switchInProgress = false; - return [2, { success: false }]; - case 5: return [2]; - } - }); - }); })]; - }); + async switchTransport(settings) { + return this._sequelizer.enqueue(async () => { + if (!settings || typeof settings !== "object") { + throw new Error("Cannot switch transports, because the settings are missing or invalid."); + } + if (typeof settings.type === "undefined") { + throw new Error("Cannot switch the transport, because the type is not defined"); + } + this.logger.trace(`Starting transport switch with settings: ${JSON.stringify(settings)}`); + const switchTargetTransport = settings.type === "secondary" ? this.getNewSecondaryTransport(settings) : this._defaultTransport; + this._targetTransport = switchTargetTransport; + this._targetAuth = settings.type === "secondary" ? this.getNewSecondaryAuth(settings) : this._defaultAuth; + const verifyPromise = this.verifyConnection(); + this._swapTransport = true; + this._switchInProgress = true; + this.logger.trace("The new transport has been set, closing the current transport"); + await this.transport.close(); + try { + await verifyPromise; + const isSwitchSuccess = this.transport === switchTargetTransport; + this.logger.info(`The reconnection after the switch was completed. Was the switch a success: ${isSwitchSuccess}`); + this._switchInProgress = false; + return { success: isSwitchSuccess }; + } + catch (error) { + this.logger.info("The reconnection after the switch timed out, reverting back to the default transport."); + this.switchTransport({ type: "default" }); + this._switchInProgress = false; + return { success: false }; + } }); - }; - Connection.prototype.onLibReAnnounced = function (callback) { + } + onLibReAnnounced(callback) { return this.registry.add("libReAnnounced", callback); - }; - Connection.prototype.setLibReAnnounced = function (lib) { + } + setLibReAnnounced(lib) { this.registry.execute("libReAnnounced", lib); - }; - Connection.prototype.send = function (message, options) { + } + send(message, options) { if (this.transport.sendObject && this.transport.isObjectBasedTransport) { - var msg = this.protocol.createObjectMessage(message); + const msg = this.createObjectMessage(message); if (this.isTrace) { - this.logger.trace(">> ".concat(JSON.stringify(msg))); + this.logger.trace(`>> ${JSON.stringify(msg)}`); } return this.transport.sendObject(msg, options); } else { - var strMessage = this.protocol.createStringMessage(message); + const strMessage = this.createStringMessage(message); if (this.isTrace) { - this.logger.trace(">> ".concat(strMessage)); + this.logger.trace(`>> ${strMessage}`); } return this.transport.send(strMessage, options); } - }; - Connection.prototype.on = function (type, messageHandler) { + } + on(type, messageHandler) { type = type.toLowerCase(); if (this.messageHandlers[type] === undefined) { this.messageHandlers[type] = {}; } - var id = this.ids++; + const id = this.ids++; this.messageHandlers[type][id] = messageHandler; return { - type: type, - id: id, + type, + id, }; - }; - Connection.prototype.off = function (info) { + } + off(info) { delete this.messageHandlers[info.type.toLowerCase()][info.id]; - }; - Object.defineProperty(Connection.prototype, "isConnected", { - get: function () { - return this.protocol.isLoggedIn; - }, - enumerable: false, - configurable: true - }); - Connection.prototype.connected = function (callback) { - var _this = this; - return this.protocol.loggedIn(function () { - var currentServer = _this.transport.name(); + } + get isConnected() { + return this._isLoggedIn; + } + connected(callback) { + return this.loggedIn(() => { + const currentServer = this.transport.name(); callback(currentServer); }); - }; - Connection.prototype.disconnected = function (callback) { + } + disconnected(callback) { return this.registry.add("disconnected", callback); - }; - Connection.prototype.login = function (authRequest, reconnect) { - return __awaiter(this, void 0, void 0, function () { - var newAuth, identity, error_2; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (!this._defaultAuth) { - this._defaultAuth = authRequest; - } - if (this._swapTransport) { - this.logger.trace("Detected a transport swap, swapping transports"); - newAuth = this.transportSwap(); - authRequest = newAuth !== null && newAuth !== void 0 ? newAuth : authRequest; - } - this.logger.trace("Starting login for transport: ".concat(this.transport.name(), " and auth ").concat(JSON.stringify(authRequest))); - _a.label = 1; - case 1: - _a.trys.push([1, 4, , 5]); - return [4, this.transport.open()]; - case 2: - _a.sent(); - this.logger.trace("Transport: ".concat(this.transport.name(), " opened, logging in")); - timer("connection").mark("transport-opened"); - return [4, this.protocol.login(authRequest, reconnect)]; - case 3: - identity = _a.sent(); - this.logger.trace("Logged in with identity: ".concat(JSON.stringify(identity))); - timer("connection").mark("protocol-logged-in"); - return [2, identity]; - case 4: - error_2 = _a.sent(); - if (this._switchInProgress) { - this.logger.trace("An error while logging in after a transport swap, preparing a default swap."); - this.prepareDefaultSwap(); - } - throw new Error(error_2); - case 5: return [2]; - } - }); - }); - }; - Connection.prototype.logout = function () { - return __awaiter(this, void 0, void 0, function () { - return __generator(this, function (_a) { - switch (_a.label) { - case 0: return [4, this.protocol.logout()]; - case 1: - _a.sent(); - return [4, this.transport.close()]; - case 2: - _a.sent(); - return [2]; - } - }); + } + async login(authRequest, reconnect) { + if (!this._defaultAuth) { + this._defaultAuth = authRequest; + } + if (this._swapTransport) { + this.logger.trace("Detected a transport swap, swapping transports"); + const newAuth = this.transportSwap(); + authRequest = newAuth ?? authRequest; + } + this.logger.trace(`Starting login for transport: ${this.transport.name()} and auth ${JSON.stringify(authRequest)}`); + try { + await this.transport.open(); + this.logger.trace(`Transport: ${this.transport.name()} opened, logging in`); + timer("connection").mark("transport-opened"); + const identity = await this.loginCore(authRequest, reconnect); + this.logger.trace(`Logged in with identity: ${JSON.stringify(identity)}`); + timer("connection").mark("protocol-logged-in"); + return identity; + } + catch (error) { + if (this._switchInProgress) { + this.logger.trace("An error while logging in after a transport swap, preparing a default swap."); + this.prepareDefaultSwap(); + } + throw new Error(error); + } + } + async logout() { + await this.logoutCore(); + await this.transport.close(); + } + loggedIn(callback) { + if (this._isLoggedIn) { + callback(); + } + return this.registry.add("onLoggedIn", callback); + } + domain(domain, successMessages, errorMessages) { + let session = this.sessions.find((s) => s.domain === domain); + if (!session) { + session = domainSession(domain, this, this.logger.subLogger(`domain=${domain}`), successMessages, errorMessages); + this.sessions.push(session); + } + return session; + } + authToken() { + const createTokenReq = { + domain: "global", + type: "create-token" + }; + if (!this.globalDomain) { + return Promise.reject(new Error("no global domain session")); + } + return this.globalDomain.send(createTokenReq) + .then((res) => { + return res.token; }); - }; - Connection.prototype.loggedIn = function (callback) { - return this.protocol.loggedIn(callback); - }; - Connection.prototype.domain = function (domain, successMessages, errorMessages) { - return this.protocol.domain(domain, this.logger.subLogger("domain=".concat(domain)), successMessages, errorMessages); - }; - Connection.prototype.authToken = function () { - return this.protocol.authToken(); - }; - Connection.prototype.reconnect = function () { + } + reconnect() { return this.transport.reconnect(); - }; - Connection.prototype.distributeMessage = function (message, type) { - var _this = this; - var handlers = this.messageHandlers[type.toLowerCase()]; + } + setLoggedIn(value) { + this._isLoggedIn = value; + if (this._isLoggedIn) { + this.registry.execute("onLoggedIn"); + } + } + distributeMessage(message, type) { + const handlers = this.messageHandlers[type.toLowerCase()]; if (handlers !== undefined) { - Object.keys(handlers).forEach(function (handlerId) { - var handler = handlers[handlerId]; + Object.keys(handlers).forEach((handlerId) => { + const handler = handlers[handlerId]; if (handler !== undefined) { try { handler(message); } catch (error) { try { - _this.logger.error("Message handler failed with ".concat(error.stack), error); + this.logger.error(`Message handler failed with ${error.stack}`, error); } catch (loggerError) { console.log("Message handler failed", error); @@ -9914,176 +8569,411 @@ var Connection = (function () { } }); } - }; - Connection.prototype.handleConnectionChanged = function (connected) { + } + handleConnectionChanged(connected) { if (this._connected === connected) { return; } this._connected = connected; if (connected) { - if (this.settings.replaySpecs && this.settings.replaySpecs.length) { + if (this.settings?.replaySpecs?.length) { this.replayer = new MessageReplayerImpl(this.settings.replaySpecs); this.replayer.init(this); } this.registry.execute("connected"); } else { + this.handleDisconnected(); this.registry.execute("disconnected"); } - }; - Connection.prototype.handleTransportMessage = function (msg) { - var msgObj; + } + handleDisconnected() { + this.setLoggedIn(false); + const tryToLogin = this.shouldTryLogin; + if (tryToLogin && this.initialLogin) { + if (this.initialLoginAttempts <= 0) { + return; + } + this.initialLoginAttempts--; + } + this.logger.debug("disconnected - will try new login?" + this.shouldTryLogin); + if (this.shouldTryLogin) { + if (!this.loginConfig) { + throw new Error("no login info"); + } + this.login(this.loginConfig, true) + .catch(() => { + setTimeout(this.handleDisconnected.bind(this), this.settings.reconnectInterval || 1000); + }); + } + } + handleTransportMessage(msg) { + let msgObj; if (typeof msg === "string") { - msgObj = this.protocol.processStringMessage(msg); + msgObj = this.processStringMessage(msg); } else { - msgObj = this.protocol.processObjectMessage(msg); + msgObj = this.processObjectMessage(msg); } if (this.isTrace) { - this.logger.trace("<< ".concat(JSON.stringify(msgObj))); + this.logger.trace(`<< ${JSON.stringify(msgObj)}`); } this.distributeMessage(msgObj.msg, msgObj.msgType); - }; - Connection.prototype.verifyConnection = function () { - var _this = this; - return PromisePlus(function (resolve) { - var unsub; - var ready = waitForInvocations(2, function () { + } + verifyConnection() { + return PromisePlus((resolve) => { + let unsub; + const ready = waitForInvocations(2, () => { if (unsub) { unsub(); } resolve(); }); - unsub = _this.onLibReAnnounced(function (lib) { + unsub = this.onLibReAnnounced((lib) => { if (lib.name === "interop") { return ready(); } - if (lib.name === "contexts") { - return ready(); + if (lib.name === "contexts") { + return ready(); + } + }); + }, 10000, "Transport switch timed out waiting for all libraries to be re-announced"); + } + getNewSecondaryTransport(settings) { + if (!settings.transportConfig?.url) { + throw new Error("Missing secondary transport URL."); + } + return new WS(Object.assign({}, this.settings, { ws: settings.transportConfig.url, reconnectAttempts: 1 }), this.logger.subLogger("ws-secondary")); + } + getNewSecondaryAuth(settings) { + if (!settings.transportConfig?.auth) { + throw new Error("Missing secondary transport auth information."); + } + return settings.transportConfig.auth; + } + transportSwap() { + this._swapTransport = false; + if (!this._targetTransport || !this._targetAuth) { + this.logger.warn(`Error while switching transports - either the target transport or auth is not defined: transport defined -> ${!!this._defaultTransport}, auth defined -> ${!!this._targetAuth}. Staying on the current one.`); + return; + } + this._transportSubscriptions.forEach((unsub) => unsub()); + this._transportSubscriptions = []; + this.transport = this._targetTransport; + const unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)); + const unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this)); + this._transportSubscriptions.push(unsubConnectionChanged); + this._transportSubscriptions.push(unsubOnMessage); + return this._targetAuth; + } + prepareDefaultSwap() { + this._transportSubscriptions.forEach((unsub) => unsub()); + this._transportSubscriptions = []; + this.transport.close().catch((error) => this.logger.warn(`Error closing the ${this.transport.name()} transport after a failed connection attempt: ${JSON.stringify(error)}`)); + this._targetTransport = this._defaultTransport; + this._targetAuth = this._defaultAuth; + this._swapTransport = true; + } + processStringMessage(message) { + const msg = JSON.parse(message, (key, value) => { + if (typeof value !== "string") { + return value; + } + if (value.length < this.dateMinLen) { + return value; + } + if (!value.startsWith(this.datePrefixFirstChar)) { + return value; + } + if (value.substring(0, this.datePrefixLen) !== this.datePrefix) { + return value; + } + try { + const milliseconds = parseInt(value.substring(this.datePrefixLen, value.length), 10); + if (isNaN(milliseconds)) { + return value; + } + return new Date(milliseconds); + } + catch (ex) { + return value; + } + }); + return { + msg, + msgType: msg.type, + }; + } + createStringMessage(message) { + const oldToJson = Date.prototype.toJSON; + try { + const datePrefix = this.datePrefix; + Date.prototype.toJSON = function () { + return datePrefix + this.getTime(); + }; + const result = JSON.stringify(message); + return result; + } + finally { + Date.prototype.toJSON = oldToJson; + } + } + processObjectMessage(message) { + if (!message.type) { + throw new Error("Object should have type property"); + } + return { + msg: message, + msgType: message.type, + }; + } + createObjectMessage(message) { + return message; + } + async loginCore(config, reconnect) { + this.logger.info("logging in..."); + this.loginConfig = config; + if (!this.loginConfig) { + this.loginConfig = { username: "", password: "" }; + } + this.shouldTryLogin = true; + const authentication = await this.setupAuthConfig(config, reconnect); + const helloMsg = { + type: "hello", + identity: this.settings.identity, + authentication + }; + if (config.sessionId) { + helloMsg.request_id = config.sessionId; + } + this.globalDomain = domainSession("global", this, this.logger.subLogger("global-domain"), [ + "welcome", + "token", + "authentication-request" + ]); + const sendOptions = { skipPeerId: true }; + if (this.initialLogin) { + sendOptions.retryInterval = this.settings.reconnectInterval; + sendOptions.maxRetries = this.settings.reconnectAttempts; + } + try { + const welcomeMsg = await this.tryAuthenticate(this.globalDomain, helloMsg, sendOptions, config); + this.initialLogin = false; + this.logger.info("login successful with peerId " + welcomeMsg.peer_id); + this.peerId = welcomeMsg.peer_id; + this.resolvedIdentity = welcomeMsg.resolved_identity; + this.availableDomains = welcomeMsg.available_domains; + if (welcomeMsg.options) { + this.token = welcomeMsg.options.access_token; + this.info = welcomeMsg.options.info; + } + this.setLoggedIn(true); + return welcomeMsg.resolved_identity; + } + catch (err) { + this.logger.error("error sending hello message - " + (err.message || err.msg || err.reason || err), err); + throw err; + } + finally { + if (config?.flowCallback && config.sessionId) { + config.flowCallback(config.sessionId, null); + } + } + } + async tryAuthenticate(globalDomain, helloMsg, sendOptions, config) { + let welcomeMsg; + while (true) { + const msg = await globalDomain.send(helloMsg, undefined, sendOptions); + if (msg.type === "authentication-request") { + const token = Buffer.from(msg.authentication.token, "base64"); + if (config.flowCallback && config.sessionId) { + helloMsg.authentication.token = + (await config.flowCallback(config.sessionId, token)) + .data + .toString("base64"); + } + helloMsg.request_id = config.sessionId; + } + else if (msg.type === "welcome") { + welcomeMsg = msg; + break; + } + else if (msg.type === "error") { + throw new Error("Authentication failed: " + msg.reason); + } + else { + throw new Error("Unexpected message type during authentication: " + msg.type); + } + } + return welcomeMsg; + } + async setupAuthConfig(config, reconnect) { + const authentication = {}; + this.gatewayToken = config.gatewayToken; + if (config.gatewayToken) { + if (reconnect) { + try { + config.gatewayToken = await this.getNewGWToken(); + } + catch (e) { + this.logger.warn(`failed to get GW token when reconnecting ${e?.message || e}`); } - }); - }, 10000, "Transport switch timed out waiting for all libraries to be re-announced"); - }; - Connection.prototype.getNewSecondaryTransport = function (settings) { - var _a; - if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.url)) { - throw new Error("Missing secondary transport URL."); + } + authentication.method = "gateway-token"; + authentication.token = config.gatewayToken; + this.gatewayToken = config.gatewayToken; } - return new WS(Object.assign({}, this.settings, { ws: settings.transportConfig.url, reconnectAttempts: 1 }), this.logger.subLogger("ws-secondary")); - }; - Connection.prototype.getNewSecondaryAuth = function (settings) { - var _a; - if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.auth)) { - throw new Error("Missing secondary transport auth information."); + else if (config.flowName === "sspi") { + authentication.provider = "win"; + authentication.method = "access-token"; + if (config.flowCallback && config.sessionId) { + authentication.token = + (await config.flowCallback(config.sessionId, null)) + .data + .toString("base64"); + } + else { + throw new Error("Invalid SSPI config"); + } } - return settings.transportConfig.auth; - }; - Connection.prototype.transportSwap = function () { - this._swapTransport = false; - if (!this._targetTransport || !this._targetAuth) { - this.logger.warn("Error while switching transports - either the target transport or auth is not defined: transport defined -> ".concat(!!this._defaultTransport, ", auth defined -> ").concat(!!this._targetAuth, ". Staying on the current one.")); + else if (config.token) { + authentication.method = "access-token"; + authentication.token = config.token; + } + else if (config.username) { + authentication.method = "secret"; + authentication.login = config.username; + authentication.secret = config.password; + } + else if (config.provider) { + authentication.provider = config.provider; + authentication.providerContext = config.providerContext; + } + else { + throw new Error("invalid auth message" + JSON.stringify(config)); + } + return authentication; + } + async logoutCore() { + this.logger.debug("logging out..."); + this.shouldTryLogin = false; + if (this.pingTimer) { + clearTimeout(this.pingTimer); + } + const promises = this.sessions.map((session) => { + session.leave(); + }); + await Promise.all(promises); + } + getNewGWToken() { + if (typeof window !== "undefined") { + const glue42gd = window.glue42gd; + if (glue42gd) { + return glue42gd.getGWToken(); + } + } + return Promise.reject(new Error("not running in GD")); + } + ping() { + if (!this.shouldTryLogin) { return; } - this._transportSubscriptions.forEach(function (unsub) { return unsub(); }); - this._transportSubscriptions = []; - this.transport = this._targetTransport; - var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)); - var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this)); - this._transportSubscriptions.push(unsubConnectionChanged); - this._transportSubscriptions.push(unsubOnMessage); - return this._targetAuth; - }; - Connection.prototype.prepareDefaultSwap = function () { - var _this = this; - this._transportSubscriptions.forEach(function (unsub) { return unsub(); }); - this._transportSubscriptions = []; - this.transport.close().catch(function (error) { return _this.logger.warn("Error closing the ".concat(_this.transport.name(), " transport after a failed connection attempt: ").concat(JSON.stringify(error))); }); - this._targetTransport = this._defaultTransport; - this._targetAuth = this._defaultAuth; - this._swapTransport = true; - }; - return Connection; -}()); + if (this._isLoggedIn) { + this.send({ type: "ping" }); + } + this.pingTimer = setTimeout(() => { + this.ping(); + }, 30 * 1000); + } +} -var order = ["trace", "debug", "info", "warn", "error", "off"]; -var Logger = (function () { - function Logger(name, parent, logFn) { +const order = ["trace", "debug", "info", "warn", "error", "off"]; +class Logger { + name; + parent; + static Interop; + static InteropMethodName = "T42.AppLogger.Log"; + static Instance; + path; + subLoggers = []; + _consoleLevel; + _publishLevel; + loggerFullName; + includeTimeAndLevel; + logFn = console; + customLogFn = false; + constructor(name, parent, logFn) { this.name = name; this.parent = parent; - this.subLoggers = []; - this.logFn = console; - this.customLogFn = false; this.name = name; if (parent) { - this.path = "".concat(parent.path, ".").concat(name); + this.path = `${parent.path}.${name}`; } else { this.path = name; } - this.loggerFullName = "[".concat(this.path, "]"); + this.loggerFullName = `[${this.path}]`; this.includeTimeAndLevel = !logFn; if (logFn) { this.logFn = logFn; this.customLogFn = true; } } - Logger.prototype.subLogger = function (name) { - var existingSub = this.subLoggers.filter(function (subLogger) { + subLogger(name) { + const existingSub = this.subLoggers.filter((subLogger) => { return subLogger.name === name; })[0]; if (existingSub !== undefined) { return existingSub; } - Object.keys(this).forEach(function (key) { + Object.keys(this).forEach((key) => { if (key === name) { throw new Error("This sub logger name is not allowed."); } }); - var sub = new Logger(name, this, this.customLogFn ? this.logFn : undefined); + const sub = new Logger(name, this, this.customLogFn ? this.logFn : undefined); this.subLoggers.push(sub); return sub; - }; - Logger.prototype.publishLevel = function (level) { - var _a; + } + publishLevel(level) { if (level) { this._publishLevel = level; } - return this._publishLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.publishLevel()); - }; - Logger.prototype.consoleLevel = function (level) { - var _a; + return this._publishLevel || this.parent?.publishLevel(); + } + consoleLevel(level) { if (level) { this._consoleLevel = level; } - return this._consoleLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.consoleLevel()); - }; - Logger.prototype.log = function (message, level, error) { + return this._consoleLevel || this.parent?.consoleLevel(); + } + log(message, level, error) { this.publishMessage(level || "info", message, error); - }; - Logger.prototype.trace = function (message) { + } + trace(message) { this.log(message, "trace"); - }; - Logger.prototype.debug = function (message) { + } + debug(message) { this.log(message, "debug"); - }; - Logger.prototype.info = function (message) { + } + info(message) { this.log(message, "info"); - }; - Logger.prototype.warn = function (message) { + } + warn(message) { this.log(message, "warn"); - }; - Logger.prototype.error = function (message, err) { + } + error(message, err) { this.log(message, "error"); - }; - Logger.prototype.canPublish = function (level, compareWith) { - var levelIdx = order.indexOf(level); - var restrictionIdx = order.indexOf(compareWith || this.consoleLevel() || "trace"); + } + canPublish(level, compareWith) { + const levelIdx = order.indexOf(level); + const restrictionIdx = order.indexOf(compareWith || this.consoleLevel() || "trace"); return levelIdx >= restrictionIdx; - }; - Logger.prototype.publishMessage = function (level, message, error) { - var loggerName = this.loggerFullName; + } + publishMessage(level, message, error) { + const loggerName = this.loggerFullName; if (level === "error" && !error) { - var e = new Error(); + const e = new Error(); if (e.stack) { message = message + @@ -10095,29 +8985,29 @@ var Logger = (function () { } } if (this.canPublish(level, this.publishLevel())) { - var interop = Logger.Interop; + const interop = Logger.Interop; if (interop) { try { if (interop.methods({ name: Logger.InteropMethodName }).length > 0) { interop.invoke(Logger.InteropMethodName, { - msg: "".concat(message), + msg: `${message}`, logger: loggerName, - level: level + level }); } } - catch (_a) { + catch { } } } if (this.canPublish(level)) { - var prefix = ""; + let prefix = ""; if (this.includeTimeAndLevel) { - var date = new Date(); - var time = "".concat(date.getHours(), ":").concat(date.getMinutes(), ":").concat(date.getSeconds(), ":").concat(date.getMilliseconds()); - prefix = "[".concat(time, "] [").concat(level, "] "); + const date = new Date(); + const time = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}:${date.getMilliseconds()}`; + prefix = `[${time}] [${level}] `; } - var toPrint = "".concat(prefix).concat(loggerName, ": ").concat(message); + const toPrint = `${prefix}${loggerName}: ${message}`; switch (level) { case "trace": this.logFn.debug(toPrint); @@ -10141,26 +9031,24 @@ var Logger = (function () { break; } } - }; - Logger.InteropMethodName = "T42.AppLogger.Log"; - return Logger; -}()); + } +} -var GW_MESSAGE_CREATE_CONTEXT = "create-context"; -var GW_MESSAGE_ACTIVITY_CREATED = "created"; -var GW_MESSAGE_ACTIVITY_DESTROYED = "destroyed"; -var GW_MESSAGE_CONTEXT_CREATED = "context-created"; -var GW_MESSAGE_CONTEXT_ADDED = "context-added"; -var GW_MESSAGE_SUBSCRIBE_CONTEXT = "subscribe-context"; -var GW_MESSAGE_SUBSCRIBED_CONTEXT = "subscribed-context"; -var GW_MESSAGE_UNSUBSCRIBE_CONTEXT = "unsubscribe-context"; -var GW_MESSAGE_DESTROY_CONTEXT = "destroy-context"; -var GW_MESSAGE_CONTEXT_DESTROYED = "context-destroyed"; -var GW_MESSAGE_UPDATE_CONTEXT = "update-context"; -var GW_MESSAGE_CONTEXT_UPDATED = "context-updated"; -var GW_MESSAGE_JOINED_ACTIVITY = "joined"; - -var ContextMessageReplaySpec = { +const GW_MESSAGE_CREATE_CONTEXT = "create-context"; +const GW_MESSAGE_ACTIVITY_CREATED = "created"; +const GW_MESSAGE_ACTIVITY_DESTROYED = "destroyed"; +const GW_MESSAGE_CONTEXT_CREATED = "context-created"; +const GW_MESSAGE_CONTEXT_ADDED = "context-added"; +const GW_MESSAGE_SUBSCRIBE_CONTEXT = "subscribe-context"; +const GW_MESSAGE_SUBSCRIBED_CONTEXT = "subscribed-context"; +const GW_MESSAGE_UNSUBSCRIBE_CONTEXT = "unsubscribe-context"; +const GW_MESSAGE_DESTROY_CONTEXT = "destroy-context"; +const GW_MESSAGE_CONTEXT_DESTROYED = "context-destroyed"; +const GW_MESSAGE_UPDATE_CONTEXT = "update-context"; +const GW_MESSAGE_CONTEXT_UPDATED = "context-updated"; +const GW_MESSAGE_JOINED_ACTIVITY = "joined"; + +const ContextMessageReplaySpec = { get name() { return "context"; }, @@ -10183,32 +9071,30 @@ var ContextMessageReplaySpec = { } }; -var version = "6.2.0"; +var version = "6.3.1"; function prepareConfig (configuration, ext, glue42gd) { - var _a, _b, _c, _d; - var nodeStartingContext; + let nodeStartingContext; if (Utils.isNode()) { - var startingContextString = process.env._GD_STARTING_CONTEXT_; + const startingContextString = process.env._GD_STARTING_CONTEXT_; if (startingContextString) { try { nodeStartingContext = JSON.parse(startingContextString); } - catch (_e) { + catch { } } } function getConnection() { - var _a, _b, _c, _d, _e, _f; - var gwConfig = configuration.gateway; - var protocolVersion = (_a = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.protocolVersion) !== null && _a !== void 0 ? _a : 3; - var reconnectInterval = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectInterval; - var reconnectAttempts = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectAttempts; - var defaultWs = "ws://localhost:8385"; - var ws = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.ws; - var sharedWorker = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.sharedWorker; - var inproc = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.inproc; - var webPlatform = (_b = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.webPlatform) !== null && _b !== void 0 ? _b : undefined; + const gwConfig = configuration.gateway; + const protocolVersion = gwConfig?.protocolVersion ?? 3; + const reconnectInterval = gwConfig?.reconnectInterval; + const reconnectAttempts = gwConfig?.reconnectAttempts; + const defaultWs = "ws://localhost:8385"; + let ws = gwConfig?.ws; + const sharedWorker = gwConfig?.sharedWorker; + const inproc = gwConfig?.inproc; + const webPlatform = gwConfig?.webPlatform ?? undefined; if (glue42gd) { ws = glue42gd.gwURL; } @@ -10218,13 +9104,13 @@ function prepareConfig (configuration, ext, glue42gd) { if (!ws && !sharedWorker && !inproc) { ws = defaultWs; } - var instanceId; - var windowId; - var pid; - var environment; - var region; - var appName = getApplication(); - var uniqueAppName = appName; + let instanceId; + let windowId; + let pid; + let environment; + let region; + const appName = getApplication(); + let uniqueAppName = appName; if (typeof glue42gd !== "undefined") { windowId = glue42gd.windowId; pid = glue42gd.pid; @@ -10232,7 +9118,7 @@ function prepareConfig (configuration, ext, glue42gd) { environment = glue42gd.env.env; region = glue42gd.env.region; } - uniqueAppName = (_c = glue42gd.application) !== null && _c !== void 0 ? _c : "glue-app"; + uniqueAppName = glue42gd.application ?? "glue-app"; instanceId = glue42gd.appInstanceId; } else if (Utils.isNode()) { @@ -10243,40 +9129,40 @@ function prepareConfig (configuration, ext, glue42gd) { instanceId = nodeStartingContext.instanceId; } } - else if (typeof (window === null || window === void 0 ? void 0 : window.glue42electron) !== "undefined") { - windowId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId; - pid = window === null || window === void 0 ? void 0 : window.glue42electron.pid; - environment = window === null || window === void 0 ? void 0 : window.glue42electron.env; - region = window === null || window === void 0 ? void 0 : window.glue42electron.region; - uniqueAppName = (_d = window === null || window === void 0 ? void 0 : window.glue42electron.application) !== null && _d !== void 0 ? _d : "glue-app"; - instanceId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId; + else if (typeof window?.glue42electron !== "undefined") { + windowId = window?.glue42electron.instanceId; + pid = window?.glue42electron.pid; + environment = window?.glue42electron.env; + region = window?.glue42electron.region; + uniqueAppName = window?.glue42electron.application ?? "glue-app"; + instanceId = window?.glue42electron.instanceId; } else ; - var replaySpecs = (_f = (_e = configuration.gateway) === null || _e === void 0 ? void 0 : _e.replaySpecs) !== null && _f !== void 0 ? _f : []; + const replaySpecs = configuration.gateway?.replaySpecs ?? []; replaySpecs.push(ContextMessageReplaySpec); - var identity = { + let identity = { application: uniqueAppName, applicationName: appName, - windowId: windowId, + windowId, instance: instanceId, process: pid, - region: region, - environment: environment, + region, + environment, api: ext.version || version }; if (configuration.identity) { identity = Object.assign(identity, configuration.identity); } return { - identity: identity, - reconnectInterval: reconnectInterval, - ws: ws, - sharedWorker: sharedWorker, - webPlatform: webPlatform, - inproc: inproc, - protocolVersion: protocolVersion, - reconnectAttempts: reconnectAttempts, - replaySpecs: replaySpecs, + identity, + reconnectInterval, + ws, + sharedWorker, + webPlatform, + inproc, + protocolVersion, + reconnectAttempts, + replaySpecs, }; } function getContexts() { @@ -10301,7 +9187,7 @@ function prepareConfig (configuration, ext, glue42gd) { if (typeof window !== "undefined" && typeof window.glue42electron !== "undefined") { return window.glue42electron.application; } - var uid = shortid(); + const uid = nanoid(10); if (Utils.isNode()) { if (nodeStartingContext) { return nodeStartingContext.applicationConfig.name; @@ -10309,12 +9195,11 @@ function prepareConfig (configuration, ext, glue42gd) { return "NodeJS" + uid; } if (typeof window !== "undefined" && typeof document !== "undefined") { - return document.title + " (".concat(uid, ")"); + return document.title + ` (${uid})`; } return uid; } function getAuth() { - var _a, _b, _c; if (typeof configuration.auth === "string") { return { token: configuration.auth @@ -10328,69 +9213,76 @@ function prepareConfig (configuration, ext, glue42gd) { gatewayToken: nodeStartingContext.gwToken }; } - if (((_a = configuration.gateway) === null || _a === void 0 ? void 0 : _a.webPlatform) || ((_b = configuration.gateway) === null || _b === void 0 ? void 0 : _b.inproc) || ((_c = configuration.gateway) === null || _c === void 0 ? void 0 : _c.sharedWorker)) { + if (configuration.gateway?.webPlatform || configuration.gateway?.inproc || configuration.gateway?.sharedWorker) { return { username: "glue42", password: "glue42" }; } } function getLogger() { - var _a, _b; - var config = configuration.logger; - var defaultLevel = "warn"; + let config = configuration.logger; + const defaultLevel = "warn"; if (!config) { config = defaultLevel; } - var gdConsoleLevel; + let gdConsoleLevel; if (glue42gd) { gdConsoleLevel = glue42gd.consoleLogLevel; } if (typeof config === "string") { - return { console: gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config, publish: defaultLevel }; + return { console: gdConsoleLevel ?? config, publish: defaultLevel }; } return { - console: (_a = gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config.console) !== null && _a !== void 0 ? _a : defaultLevel, - publish: (_b = config.publish) !== null && _b !== void 0 ? _b : defaultLevel + console: gdConsoleLevel ?? config.console ?? defaultLevel, + publish: config.publish ?? defaultLevel }; } - var connection = getConnection(); - var application = getApplication(); + const connection = getConnection(); + let application = getApplication(); if (typeof window !== "undefined") { - var windowAsAny = window; - var containerApplication = windowAsAny.htmlContainer ? - "".concat(windowAsAny.htmlContainer.containerName, ".").concat(windowAsAny.htmlContainer.application) : - (_a = windowAsAny === null || windowAsAny === void 0 ? void 0 : windowAsAny.glue42gd) === null || _a === void 0 ? void 0 : _a.application; + const windowAsAny = window; + const containerApplication = windowAsAny.htmlContainer ? + `${windowAsAny.htmlContainer.containerName}.${windowAsAny.htmlContainer.application}` : + windowAsAny?.glue42gd?.application; if (containerApplication) { application = containerApplication; } } return { - bus: (_b = configuration.bus) !== null && _b !== void 0 ? _b : false, - application: application, + bus: configuration.bus ?? false, + application, auth: getAuth(), logger: getLogger(), - connection: connection, - metrics: (_c = configuration.metrics) !== null && _c !== void 0 ? _c : true, + connection, + metrics: configuration.metrics ?? true, contexts: getContexts(), version: ext.version || version, - libs: (_d = ext.libs) !== null && _d !== void 0 ? _d : [], + libs: ext.libs ?? [], customLogger: configuration.customLogger }; } -var GW3ContextData = (function () { - function GW3ContextData(contextId, name, isAnnounced, activityId) { - this.updateCallbacks = {}; +class GW3ContextData { + name; + contextId; + context; + isAnnounced; + joinedActivity; + updateCallbacks = {}; + activityId; + sentExplicitSubscription; + hasReceivedSnapshot; + constructor(contextId, name, isAnnounced, activityId) { this.contextId = contextId; this.name = name; this.isAnnounced = isAnnounced; this.activityId = activityId; this.context = {}; } - GW3ContextData.prototype.hasCallbacks = function () { + hasCallbacks() { return Object.keys(this.updateCallbacks).length > 0; - }; - GW3ContextData.prototype.getState = function () { + } + getState() { if (this.isAnnounced && this.hasCallbacks()) { return 3; } @@ -10401,15 +9293,10 @@ var GW3ContextData = (function () { return 1; } return 0; - }; - return GW3ContextData; -}()); + } +} -var lodash_clonedeepExports = {}; -var lodash_clonedeep = { - get exports(){ return lodash_clonedeepExports; }, - set exports(v){ lodash_clonedeepExports = v; }, -}; +var lodash_clonedeep = {exports: {}}; /** * lodash (Custom Build) @@ -10419,6 +9306,7 @@ var lodash_clonedeep = { * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors */ +lodash_clonedeep.exports; (function (module, exports) { /** Used as the size to enable large array optimizations. */ @@ -12159,27 +11047,27 @@ var lodash_clonedeep = { return false; } - module.exports = cloneDeep; -} (lodash_clonedeep, lodash_clonedeepExports)); + module.exports = cloneDeep; +} (lodash_clonedeep, lodash_clonedeep.exports)); -var cloneDeep = lodash_clonedeepExports; +var lodash_clonedeepExports = lodash_clonedeep.exports; +var cloneDeep = /*@__PURE__*/getDefaultExportFromCjs(lodash_clonedeepExports); function applyContextDelta(context, delta, logger) { try { - if (logger === null || logger === void 0 ? void 0 : logger.canPublish("trace")) { - logger === null || logger === void 0 ? void 0 : logger.trace("applying context delta ".concat(JSON.stringify(delta), " on context ").concat(JSON.stringify(context))); + if (logger?.canPublish("trace")) { + logger?.trace(`applying context delta ${JSON.stringify(delta)} on context ${JSON.stringify(context)}`); } if (!delta) { return context; } if (delta.reset) { - context = __assign({}, delta.reset); + context = { ...delta.reset }; return context; } context = deepClone(context, undefined); if (delta.commands) { - for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) { - var command = _a[_i]; + for (const command of delta.commands) { if (command.type === "remove") { deletePath(context, command.path); } @@ -12189,40 +11077,40 @@ function applyContextDelta(context, delta, logger) { } return context; } - var added_1 = delta.added; - var updated_1 = delta.updated; - var removed = delta.removed; - if (added_1) { - Object.keys(added_1).forEach(function (key) { - context[key] = added_1[key]; + const added = delta.added; + const updated = delta.updated; + const removed = delta.removed; + if (added) { + Object.keys(added).forEach((key) => { + context[key] = added[key]; }); } - if (updated_1) { - Object.keys(updated_1).forEach(function (key) { - mergeObjectsProperties(key, context, updated_1); + if (updated) { + Object.keys(updated).forEach((key) => { + mergeObjectsProperties(key, context, updated); }); } if (removed) { - removed.forEach(function (key) { + removed.forEach((key) => { delete context[key]; }); } return context; } catch (e) { - logger === null || logger === void 0 ? void 0 : logger.error("error applying context delta ".concat(JSON.stringify(delta), " on context ").concat(JSON.stringify(context)), e); + logger?.error(`error applying context delta ${JSON.stringify(delta)} on context ${JSON.stringify(context)}`, e); return context; } } function deepClone(obj, hash) { return cloneDeep(obj); } -var mergeObjectsProperties = function (key, what, withWhat) { - var right = withWhat[key]; +const mergeObjectsProperties = (key, what, withWhat) => { + const right = withWhat[key]; if (right === undefined) { return what; } - var left = what[key]; + const left = what[key]; if (!left || !right) { what[key] = right; return what; @@ -12251,7 +11139,7 @@ function deepEqual(x, y) { if (x.constructor !== y.constructor) { return false; } - for (var p in x) { + for (const p in x) { if (!x.hasOwnProperty(p)) { continue; } @@ -12268,7 +11156,7 @@ function deepEqual(x, y) { return false; } } - for (var p in y) { + for (const p in y) { if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) { return false; } @@ -12276,8 +11164,8 @@ function deepEqual(x, y) { return true; } function setValueToPath(obj, value, path) { - var pathArr = path.split("."); - var i; + const pathArr = path.split("."); + let i; for (i = 0; i < pathArr.length - 1; i++) { if (!obj[pathArr[i]]) { obj[pathArr[i]] = {}; @@ -12290,16 +11178,16 @@ function setValueToPath(obj, value, path) { obj[pathArr[i]] = value; } function isSubset(superObj, subObj) { - return Object.keys(subObj).every(function (ele) { + return Object.keys(subObj).every((ele) => { if (typeof subObj[ele] === "object") { - return isSubset((superObj === null || superObj === void 0 ? void 0 : superObj[ele]) || {}, subObj[ele] || {}); + return isSubset(superObj?.[ele] || {}, subObj[ele] || {}); } - return subObj[ele] === (superObj === null || superObj === void 0 ? void 0 : superObj[ele]); + return subObj[ele] === superObj?.[ele]; }); } function deletePath(obj, path) { - var pathArr = path.split("."); - var i; + const pathArr = path.split("."); + let i; for (i = 0; i < pathArr.length - 1; i++) { if (!obj[pathArr[i]]) { return; @@ -12309,19 +11197,33 @@ function deletePath(obj, path) { delete obj[pathArr[i]]; } -var GW3Bridge = (function () { - function GW3Bridge(config) { - var _this = this; - var _a; - this._contextNameToData = {}; - this._gw3Subscriptions = []; - this._nextCallbackSubscriptionNumber = 0; - this._creationPromises = {}; - this._contextNameToId = {}; - this._contextIdToName = {}; - this._protocolVersion = undefined; - this._contextsTempCache = {}; - this._contextsSubscriptionsCache = []; +class GW3Bridge { + _logger; + _connection; + _trackAllContexts; + _reAnnounceKnownContexts; + _gw3Session; + _contextNameToData = {}; + _gw3Subscriptions = []; + _nextCallbackSubscriptionNumber = 0; + _creationPromises = {}; + _contextNameToId = {}; + _contextIdToName = {}; + _protocolVersion = undefined; + _contextsTempCache = {}; + _contextsSubscriptionsCache = []; + _systemContextsSubKey; + get protocolVersion() { + if (!this._protocolVersion) { + const contextsDomainInfo = this._connection.availableDomains.find((d) => d.uri === "context"); + this._protocolVersion = contextsDomainInfo?.version ?? 1; + } + return this._protocolVersion; + } + get setPathSupported() { + return this.protocolVersion >= 2; + } + constructor(config) { this._connection = config.connection; this._logger = config.logger; this._trackAllContexts = config.trackAllContexts; @@ -12333,72 +11235,51 @@ var GW3Bridge = (function () { GW_MESSAGE_CONTEXT_UPDATED, ]); this._gw3Session.disconnected(this.resetState.bind(this)); - this._gw3Session.onJoined(function (wasReconnect) { + this._gw3Session.onJoined((wasReconnect) => { if (!wasReconnect) { return; } - if (!_this._reAnnounceKnownContexts) { - return _this._connection.setLibReAnnounced({ name: "contexts" }); + if (!this._reAnnounceKnownContexts) { + return this._connection.setLibReAnnounced({ name: "contexts" }); } - _this.reInitiateState().then(function () { return _this._connection.setLibReAnnounced({ name: "contexts" }); }); + this.reInitiateState().then(() => this._connection.setLibReAnnounced({ name: "contexts" })); }); this.subscribeToContextCreatedMessages(); this.subscribeToContextUpdatedMessages(); this.subscribeToContextDestroyedMessages(); - (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) { - var type = message.type; + this._connection.replayer?.drain(ContextMessageReplaySpec.name, (message) => { + const type = message.type; if (!type) { return; } if (type === GW_MESSAGE_CONTEXT_CREATED || type === GW_MESSAGE_CONTEXT_ADDED || type === GW_MESSAGE_ACTIVITY_CREATED) { - _this.handleContextCreatedMessage(message); + this.handleContextCreatedMessage(message); } else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT || type === GW_MESSAGE_CONTEXT_UPDATED || type === GW_MESSAGE_JOINED_ACTIVITY) { - _this.handleContextUpdatedMessage(message); + this.handleContextUpdatedMessage(message); } else if (type === GW_MESSAGE_CONTEXT_DESTROYED || type === GW_MESSAGE_ACTIVITY_DESTROYED) { - _this.handleContextDestroyedMessage(message); + this.handleContextDestroyedMessage(message); } }); } - Object.defineProperty(GW3Bridge.prototype, "protocolVersion", { - get: function () { - var _a; - if (!this._protocolVersion) { - var contextsDomainInfo = this._connection.availableDomains.find(function (d) { return d.uri === "context"; }); - this._protocolVersion = (_a = contextsDomainInfo === null || contextsDomainInfo === void 0 ? void 0 : contextsDomainInfo.version) !== null && _a !== void 0 ? _a : 1; - } - return this._protocolVersion; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(GW3Bridge.prototype, "setPathSupported", { - get: function () { - return this.protocolVersion >= 2; - }, - enumerable: false, - configurable: true - }); - GW3Bridge.prototype.dispose = function () { - for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) { - var sub = _a[_i]; + dispose() { + for (const sub of this._gw3Subscriptions) { this._connection.off(sub); } this._gw3Subscriptions.length = 0; - for (var contextName in this._contextNameToData) { + for (const contextName in this._contextNameToData) { if (this._contextNameToId.hasOwnProperty(contextName)) { delete this._contextNameToData[contextName]; } } - }; - GW3Bridge.prototype.createContext = function (name, data) { - var _this = this; + } + createContext(name, data) { if (name in this._creationPromises) { return this._creationPromises[name]; } @@ -12407,354 +11288,272 @@ var GW3Bridge = (function () { .send({ type: GW_MESSAGE_CREATE_CONTEXT, domain: "global", - name: name, - data: data, + name, + data, lifetime: "retained", }) - .then(function (createContextMsg) { - _this._contextNameToId[name] = createContextMsg.context_id; - _this._contextIdToName[createContextMsg.context_id] = name; - var contextData = _this._contextNameToData[name] || new GW3ContextData(createContextMsg.context_id, name, true, undefined); + .then((createContextMsg) => { + this._contextNameToId[name] = createContextMsg.context_id; + this._contextIdToName[createContextMsg.context_id] = name; + const contextData = this._contextNameToData[name] || new GW3ContextData(createContextMsg.context_id, name, true, undefined); contextData.isAnnounced = true; contextData.name = name; contextData.contextId = createContextMsg.context_id; contextData.context = createContextMsg.data || deepClone(data); contextData.hasReceivedSnapshot = true; - _this._contextNameToData[name] = contextData; - delete _this._creationPromises[name]; + this._contextNameToData[name] = contextData; + delete this._creationPromises[name]; return createContextMsg.context_id; }); return this._creationPromises[name]; - }; - GW3Bridge.prototype.all = function () { - var _this = this; + } + all() { return Object.keys(this._contextNameToData) - .filter(function (name) { return _this._contextNameToData[name].isAnnounced; }); - }; - GW3Bridge.prototype.update = function (name, delta) { - var _a; - return __awaiter(this, void 0, void 0, function () { - var contextData, currentContext, calculatedDelta; - var _this = this; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - if (delta) { - delta = deepClone(delta); - } - if (!(name in this._creationPromises)) return [3, 2]; - return [4, this._creationPromises[name]]; - case 1: - _b.sent(); - _b.label = 2; - case 2: - contextData = this._contextNameToData[name]; - if (!contextData || !contextData.isAnnounced) { - return [2, this.createContext(name, delta)]; - } - currentContext = contextData.context; - if (!!contextData.hasCallbacks()) return [3, 4]; - return [4, this.get(contextData.name)]; - case 3: - currentContext = _b.sent(); - _b.label = 4; - case 4: - calculatedDelta = this.setPathSupported ? - this.calculateContextDeltaV2(currentContext, delta) : - this.calculateContextDeltaV1(currentContext, delta); - if (!Object.keys(calculatedDelta.added).length - && !Object.keys(calculatedDelta.updated).length - && !calculatedDelta.removed.length - && !((_a = calculatedDelta.commands) === null || _a === void 0 ? void 0 : _a.length)) { - return [2, Promise.resolve()]; - } - return [2, this._gw3Session - .send({ - type: GW_MESSAGE_UPDATE_CONTEXT, - domain: "global", - context_id: contextData.contextId, - delta: calculatedDelta, - }, {}, { skipPeerId: false }) - .then(function (gwResponse) { - _this.handleUpdated(contextData, calculatedDelta, { - updaterId: gwResponse.peer_id - }); - })]; - } + .filter((name) => this._contextNameToData[name].isAnnounced); + } + async update(name, delta) { + if (delta) { + delta = deepClone(delta); + } + if (name in this._creationPromises) { + await this._creationPromises[name]; + } + const contextData = this._contextNameToData[name]; + if (!contextData || !contextData.isAnnounced) { + return this.createContext(name, delta); + } + let currentContext = contextData.context; + if (!contextData.hasCallbacks()) { + currentContext = await this.get(contextData.name); + } + const calculatedDelta = this.setPathSupported ? + this.calculateContextDeltaV2(currentContext, delta) : + this.calculateContextDeltaV1(currentContext, delta); + if (!Object.keys(calculatedDelta.added).length + && !Object.keys(calculatedDelta.updated).length + && !calculatedDelta.removed.length + && !calculatedDelta.commands?.length) { + return Promise.resolve(); + } + return this._gw3Session + .send({ + type: GW_MESSAGE_UPDATE_CONTEXT, + domain: "global", + context_id: contextData.contextId, + delta: calculatedDelta, + }, {}, { skipPeerId: false }) + .then((gwResponse) => { + this.handleUpdated(contextData, calculatedDelta, { + updaterId: gwResponse.peer_id }); }); - }; - GW3Bridge.prototype.set = function (name, data) { - return __awaiter(this, void 0, void 0, function () { - var contextData; - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (data) { - data = deepClone(data); - } - if (!(name in this._creationPromises)) return [3, 2]; - return [4, this._creationPromises[name]]; - case 1: - _a.sent(); - _a.label = 2; - case 2: - contextData = this._contextNameToData[name]; - if (!contextData || !contextData.isAnnounced) { - return [2, this.createContext(name, data)]; - } - return [2, this._gw3Session - .send({ - type: GW_MESSAGE_UPDATE_CONTEXT, - domain: "global", - context_id: contextData.contextId, - delta: { reset: data }, - }, {}, { skipPeerId: false }) - .then(function (gwResponse) { - _this.handleUpdated(contextData, { - reset: data, - added: {}, - removed: [], - updated: {} - }, { - updaterId: gwResponse.peer_id - }); - })]; - } + } + async set(name, data) { + if (data) { + data = deepClone(data); + } + if (name in this._creationPromises) { + await this._creationPromises[name]; + } + const contextData = this._contextNameToData[name]; + if (!contextData || !contextData.isAnnounced) { + return this.createContext(name, data); + } + return this._gw3Session + .send({ + type: GW_MESSAGE_UPDATE_CONTEXT, + domain: "global", + context_id: contextData.contextId, + delta: { reset: data }, + }, {}, { skipPeerId: false }) + .then((gwResponse) => { + this.handleUpdated(contextData, { + reset: data, + added: {}, + removed: [], + updated: {} + }, { + updaterId: gwResponse.peer_id }); }); - }; - GW3Bridge.prototype.setPath = function (name, path, value) { + } + setPath(name, path, value) { if (!this.setPathSupported) { return Promise.reject("glue.contexts.setPath operation is not supported, use Glue42 3.10 or later"); } - return this.setPaths(name, [{ path: path, value: value }]); - }; - GW3Bridge.prototype.setPaths = function (name, pathValues) { - return __awaiter(this, void 0, void 0, function () { - var contextData, obj, _i, pathValues_1, pathValue, commands, _a, pathValues_2, pathValue; - var _this = this; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - if (!this.setPathSupported) { - return [2, Promise.reject("glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later")]; - } - if (pathValues) { - pathValues = deepClone(pathValues); - } - if (!(name in this._creationPromises)) return [3, 2]; - return [4, this._creationPromises[name]]; - case 1: - _b.sent(); - _b.label = 2; - case 2: - contextData = this._contextNameToData[name]; - if (!contextData || !contextData.isAnnounced) { - obj = {}; - for (_i = 0, pathValues_1 = pathValues; _i < pathValues_1.length; _i++) { - pathValue = pathValues_1[_i]; - setValueToPath(obj, pathValue.value, pathValue.path); - } - return [2, this.createContext(name, obj)]; - } - commands = []; - for (_a = 0, pathValues_2 = pathValues; _a < pathValues_2.length; _a++) { - pathValue = pathValues_2[_a]; - if (pathValue.value === null) { - commands.push({ type: "remove", path: pathValue.path }); - } - else { - commands.push({ type: "set", path: pathValue.path, value: pathValue.value }); - } - } - return [2, this._gw3Session - .send({ - type: GW_MESSAGE_UPDATE_CONTEXT, - domain: "global", - context_id: contextData.contextId, - delta: { commands: commands } - }, {}, { skipPeerId: false }) - .then(function (gwResponse) { - _this.handleUpdated(contextData, { - added: {}, - removed: [], - updated: {}, - commands: commands - }, { - updaterId: gwResponse.peer_id - }); - })]; - } + return this.setPaths(name, [{ path, value }]); + } + async setPaths(name, pathValues) { + if (!this.setPathSupported) { + return Promise.reject("glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later"); + } + if (pathValues) { + pathValues = deepClone(pathValues); + } + if (name in this._creationPromises) { + await this._creationPromises[name]; + } + const contextData = this._contextNameToData[name]; + if (!contextData || !contextData.isAnnounced) { + const obj = {}; + for (const pathValue of pathValues) { + setValueToPath(obj, pathValue.value, pathValue.path); + } + return this.createContext(name, obj); + } + const commands = []; + for (const pathValue of pathValues) { + if (pathValue.value === null) { + commands.push({ type: "remove", path: pathValue.path }); + } + else { + commands.push({ type: "set", path: pathValue.path, value: pathValue.value }); + } + } + return this._gw3Session + .send({ + type: GW_MESSAGE_UPDATE_CONTEXT, + domain: "global", + context_id: contextData.contextId, + delta: { commands } + }, {}, { skipPeerId: false }) + .then((gwResponse) => { + this.handleUpdated(contextData, { + added: {}, + removed: [], + updated: {}, + commands + }, { + updaterId: gwResponse.peer_id }); }); - }; - GW3Bridge.prototype.get = function (name) { - var _a; - return __awaiter(this, void 0, void 0, function () { - var contextData, context; - var _this = this; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - if (!(name in this._creationPromises)) return [3, 2]; - return [4, this._creationPromises[name]]; - case 1: - _b.sent(); - _b.label = 2; - case 2: - contextData = this._contextNameToData[name]; - if (!contextData || !contextData.isAnnounced) { - return [2, Promise.resolve({})]; - } - if (contextData && (!contextData.hasCallbacks() || !contextData.hasReceivedSnapshot)) { - return [2, new Promise(function (resolve) { - _this.subscribe(name, function (data, _d, _r, un) { - _this.unsubscribe(un); - resolve(data); - }); - })]; - } - context = (_a = contextData === null || contextData === void 0 ? void 0 : contextData.context) !== null && _a !== void 0 ? _a : {}; - return [2, Promise.resolve(deepClone(context))]; - } + } + async get(name) { + if (name in this._creationPromises) { + await this._creationPromises[name]; + } + const contextData = this._contextNameToData[name]; + if (!contextData || !contextData.isAnnounced) { + return Promise.resolve({}); + } + if (contextData && (!contextData.hasCallbacks() || !contextData.hasReceivedSnapshot)) { + return new Promise((resolve) => { + this.subscribe(name, (data, _d, _r, un) => { + this.unsubscribe(un); + resolve(data); + }); }); - }); - }; - GW3Bridge.prototype.subscribe = function (name, callback, subscriptionKey) { - return __awaiter(this, void 0, void 0, function () { - var thisCallbackSubscriptionNumber, contextData, hadCallbacks, clone, clone, clone; - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (!(name in this._creationPromises)) return [3, 2]; - return [4, this._creationPromises[name]]; - case 1: - _a.sent(); - _a.label = 2; - case 2: - thisCallbackSubscriptionNumber = typeof subscriptionKey === "undefined" ? this._nextCallbackSubscriptionNumber : subscriptionKey; - if (typeof subscriptionKey === "undefined") { - this._nextCallbackSubscriptionNumber += 1; - } - if (this._contextsSubscriptionsCache.every(function (subscription) { return subscription.subKey !== _this._nextCallbackSubscriptionNumber; })) { - this._contextsSubscriptionsCache.push({ contextName: name, subKey: thisCallbackSubscriptionNumber, callback: callback }); - } - contextData = this._contextNameToData[name]; - if (!contextData || - !contextData.isAnnounced) { - contextData = contextData || new GW3ContextData(undefined, name, false, undefined); - this._contextNameToData[name] = contextData; - contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback; - return [2, Promise.resolve(thisCallbackSubscriptionNumber)]; - } - hadCallbacks = contextData.hasCallbacks(); - contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback; - if (!hadCallbacks) { - if (!contextData.joinedActivity) { - if (contextData.context && contextData.sentExplicitSubscription) { - if (contextData.hasReceivedSnapshot) { - clone = deepClone(contextData.context); - callback(clone, clone, [], thisCallbackSubscriptionNumber); - } - return [2, Promise.resolve(thisCallbackSubscriptionNumber)]; - } - return [2, this.sendSubscribe(contextData) - .then(function () { return thisCallbackSubscriptionNumber; })]; - } - else { - if (contextData.hasReceivedSnapshot) { - clone = deepClone(contextData.context); - callback(clone, clone, [], thisCallbackSubscriptionNumber); - } - return [2, Promise.resolve(thisCallbackSubscriptionNumber)]; - } - } - else { - if (contextData.hasReceivedSnapshot) { - clone = deepClone(contextData.context); - callback(clone, clone, [], thisCallbackSubscriptionNumber); - } - return [2, Promise.resolve(thisCallbackSubscriptionNumber)]; - } + } + const context = contextData?.context ?? {}; + return Promise.resolve(deepClone(context)); + } + async subscribe(name, callback, subscriptionKey) { + if (name in this._creationPromises) { + await this._creationPromises[name]; + } + const thisCallbackSubscriptionNumber = typeof subscriptionKey === "undefined" ? this._nextCallbackSubscriptionNumber : subscriptionKey; + if (typeof subscriptionKey === "undefined") { + this._nextCallbackSubscriptionNumber += 1; + } + if (this._contextsSubscriptionsCache.every((subscription) => subscription.subKey !== this._nextCallbackSubscriptionNumber)) { + this._contextsSubscriptionsCache.push({ contextName: name, subKey: thisCallbackSubscriptionNumber, callback }); + } + let contextData = this._contextNameToData[name]; + if (!contextData || + !contextData.isAnnounced) { + contextData = contextData || new GW3ContextData(undefined, name, false, undefined); + this._contextNameToData[name] = contextData; + contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback; + return Promise.resolve(thisCallbackSubscriptionNumber); + } + const hadCallbacks = contextData.hasCallbacks(); + contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback; + if (!hadCallbacks) { + if (!contextData.joinedActivity) { + if (contextData.context && contextData.sentExplicitSubscription) { + if (contextData.hasReceivedSnapshot) { + const clone = deepClone(contextData.context); + callback(clone, clone, [], thisCallbackSubscriptionNumber); + } + return Promise.resolve(thisCallbackSubscriptionNumber); } - }); - }); - }; - GW3Bridge.prototype.unsubscribe = function (subscriptionKey) { - this._contextsSubscriptionsCache = this._contextsSubscriptionsCache.filter(function (subscription) { return subscription.subKey !== subscriptionKey; }); - for (var _i = 0, _a = Object.keys(this._contextNameToData); _i < _a.length; _i++) { - var name_1 = _a[_i]; - var contextData = this._contextNameToData[name_1]; + return this.sendSubscribe(contextData) + .then(() => thisCallbackSubscriptionNumber); + } + else { + if (contextData.hasReceivedSnapshot) { + const clone = deepClone(contextData.context); + callback(clone, clone, [], thisCallbackSubscriptionNumber); + } + return Promise.resolve(thisCallbackSubscriptionNumber); + } + } + else { + if (contextData.hasReceivedSnapshot) { + const clone = deepClone(contextData.context); + callback(clone, clone, [], thisCallbackSubscriptionNumber); + } + return Promise.resolve(thisCallbackSubscriptionNumber); + } + } + unsubscribe(subscriptionKey) { + this._contextsSubscriptionsCache = this._contextsSubscriptionsCache.filter((subscription) => subscription.subKey !== subscriptionKey); + for (const name of Object.keys(this._contextNameToData)) { + const contextData = this._contextNameToData[name]; if (!contextData) { return; } - var hadCallbacks = contextData.hasCallbacks(); + const hadCallbacks = contextData.hasCallbacks(); delete contextData.updateCallbacks[subscriptionKey]; if (contextData.isAnnounced && hadCallbacks && !contextData.hasCallbacks() && contextData.sentExplicitSubscription) { - this.sendUnsubscribe(contextData); + this.sendUnsubscribe(contextData).catch(() => { }); } if (!contextData.isAnnounced && !contextData.hasCallbacks()) { - delete this._contextNameToData[name_1]; + delete this._contextNameToData[name]; } } - }; - GW3Bridge.prototype.destroy = function (name) { - return __awaiter(this, void 0, void 0, function () { - var contextData; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (!(name in this._creationPromises)) return [3, 2]; - return [4, this._creationPromises[name]]; - case 1: - _a.sent(); - _a.label = 2; - case 2: - contextData = this._contextNameToData[name]; - if (!contextData) { - return [2, Promise.reject("context with ".concat(name, " does not exist"))]; - } - return [2, this._gw3Session - .send({ - type: GW_MESSAGE_DESTROY_CONTEXT, - domain: "global", - context_id: contextData.contextId, - }).then(function (_) { return undefined; })]; - } - }); - }); - }; - GW3Bridge.prototype.handleUpdated = function (contextData, delta, extraData) { - var oldContext = contextData.context; + } + async destroy(name) { + if (name in this._creationPromises) { + await this._creationPromises[name]; + } + const contextData = this._contextNameToData[name]; + if (!contextData) { + return Promise.reject(`context with ${name} does not exist`); + } + return this._gw3Session + .send({ + type: GW_MESSAGE_DESTROY_CONTEXT, + domain: "global", + context_id: contextData.contextId, + }).then((_) => undefined); + } + handleUpdated(contextData, delta, extraData) { + const oldContext = contextData.context; contextData.context = applyContextDelta(contextData.context, delta, this._logger); contextData.hasReceivedSnapshot = true; if (this._contextNameToData[contextData.name] === contextData && !deepEqual(oldContext, contextData.context)) { this.invokeUpdateCallbacks(contextData, delta, extraData); } - }; - GW3Bridge.prototype.subscribeToContextCreatedMessages = function () { - var createdMessageTypes = [ + } + subscribeToContextCreatedMessages() { + const createdMessageTypes = [ GW_MESSAGE_CONTEXT_ADDED, GW_MESSAGE_CONTEXT_CREATED, GW_MESSAGE_ACTIVITY_CREATED, ]; - for (var _i = 0, createdMessageTypes_1 = createdMessageTypes; _i < createdMessageTypes_1.length; _i++) { - var createdMessageType = createdMessageTypes_1[_i]; - var sub = this._connection.on(createdMessageType, this.handleContextCreatedMessage.bind(this)); + for (const createdMessageType of createdMessageTypes) { + const sub = this._connection.on(createdMessageType, this.handleContextCreatedMessage.bind(this)); this._gw3Subscriptions.push(sub); } - }; - GW3Bridge.prototype.handleContextCreatedMessage = function (contextCreatedMsg) { - var _this = this; - var createdMessageType = contextCreatedMsg.type; + } + handleContextCreatedMessage(contextCreatedMsg) { + const createdMessageType = contextCreatedMsg.type; if (createdMessageType === GW_MESSAGE_ACTIVITY_CREATED) { this._contextNameToId[contextCreatedMsg.activity_id] = contextCreatedMsg.context_id; this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.activity_id; @@ -12764,14 +11563,14 @@ var GW3Bridge = (function () { this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.name; } else ; - var name = this._contextIdToName[contextCreatedMsg.context_id]; + const name = this._contextIdToName[contextCreatedMsg.context_id]; if (!name) { throw new Error("Received created event for context with unknown name: " + contextCreatedMsg.context_id); } if (!this._contextNameToId[name]) { throw new Error("Received created event for context with unknown id: " + contextCreatedMsg.context_id); } - var contextData = this._contextNameToData[name]; + let contextData = this._contextNameToData[name]; if (contextData) { if (contextData.isAnnounced) { return; @@ -12792,27 +11591,26 @@ var GW3Bridge = (function () { this._contextNameToData[name] = contextData = new GW3ContextData(contextCreatedMsg.context_id, name, true, contextCreatedMsg.activity_id); if (this._trackAllContexts) { - this.subscribe(name, function () { }).then(function (subKey) { return _this._systemContextsSubKey = subKey; }); + this.subscribe(name, () => { }).then((subKey) => this._systemContextsSubKey = subKey); } } - }; - GW3Bridge.prototype.subscribeToContextUpdatedMessages = function () { - var updatedMessageTypes = [ + } + subscribeToContextUpdatedMessages() { + const updatedMessageTypes = [ GW_MESSAGE_CONTEXT_UPDATED, GW_MESSAGE_SUBSCRIBED_CONTEXT, GW_MESSAGE_JOINED_ACTIVITY, ]; - for (var _i = 0, updatedMessageTypes_1 = updatedMessageTypes; _i < updatedMessageTypes_1.length; _i++) { - var updatedMessageType = updatedMessageTypes_1[_i]; - var sub = this._connection.on(updatedMessageType, this.handleContextUpdatedMessage.bind(this)); + for (const updatedMessageType of updatedMessageTypes) { + const sub = this._connection.on(updatedMessageType, this.handleContextUpdatedMessage.bind(this)); this._gw3Subscriptions.push(sub); } - }; - GW3Bridge.prototype.handleContextUpdatedMessage = function (contextUpdatedMsg) { - var updatedMessageType = contextUpdatedMsg.type; - var contextId = contextUpdatedMsg.context_id; - var contextData = this._contextNameToData[this._contextIdToName[contextId]]; - var justSeen = !contextData || !contextData.isAnnounced; + } + handleContextUpdatedMessage(contextUpdatedMsg) { + const updatedMessageType = contextUpdatedMsg.type; + const contextId = contextUpdatedMsg.context_id; + let contextData = this._contextNameToData[this._contextIdToName[contextId]]; + const justSeen = !contextData || !contextData.isAnnounced; if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) { if (!contextData) { contextData = @@ -12837,12 +11635,12 @@ var GW3Bridge = (function () { this._contextNameToId[contextUpdatedMsg.name] = contextId; } else { - this._logger.error("Received 'update' for unknown context: ".concat(contextId)); + this._logger.error(`Received 'update' for unknown context: ${contextId}`); } return; } } - var oldContext = contextData.context; + const oldContext = contextData.context; contextData.hasReceivedSnapshot = true; if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) { contextData.context = contextUpdatedMsg.data || {}; @@ -12861,14 +11659,13 @@ var GW3Bridge = (function () { updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) { this.invokeUpdateCallbacks(contextData, contextUpdatedMsg.delta, { updaterId: contextUpdatedMsg.updater_id }); } - }; - GW3Bridge.prototype.invokeUpdateCallbacks = function (contextData, delta, extraData) { + } + invokeUpdateCallbacks(contextData, delta, extraData) { delta = delta || { added: {}, updated: {}, reset: {}, removed: [] }; if (delta.commands) { delta.added = delta.updated = delta.reset = {}; delta.removed = []; - for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) { - var command = _a[_i]; + for (const command of delta.commands) { if (command.type === "remove") { if (command.path.indexOf(".") === -1) { delta.removed.push(command.path); @@ -12880,10 +11677,10 @@ var GW3Bridge = (function () { } } } - for (var updateCallbackIndex in contextData.updateCallbacks) { + for (const updateCallbackIndex in contextData.updateCallbacks) { if (contextData.updateCallbacks.hasOwnProperty(updateCallbackIndex)) { try { - var updateCallback = contextData.updateCallbacks[updateCallbackIndex]; + const updateCallback = contextData.updateCallbacks[updateCallbackIndex]; updateCallback(deepClone(contextData.context), deepClone(Object.assign({}, delta.added || {}, delta.updated || {}, delta.reset || {})), delta.removed, parseInt(updateCallbackIndex, 10), extraData); } catch (err) { @@ -12891,27 +11688,26 @@ var GW3Bridge = (function () { } } } - }; - GW3Bridge.prototype.subscribeToContextDestroyedMessages = function () { - var destroyedMessageTypes = [ + } + subscribeToContextDestroyedMessages() { + const destroyedMessageTypes = [ GW_MESSAGE_CONTEXT_DESTROYED, GW_MESSAGE_ACTIVITY_DESTROYED, ]; - for (var _i = 0, destroyedMessageTypes_1 = destroyedMessageTypes; _i < destroyedMessageTypes_1.length; _i++) { - var destroyedMessageType = destroyedMessageTypes_1[_i]; - var sub = this._connection.on(destroyedMessageType, this.handleContextDestroyedMessage.bind(this)); + for (const destroyedMessageType of destroyedMessageTypes) { + const sub = this._connection.on(destroyedMessageType, this.handleContextDestroyedMessage.bind(this)); this._gw3Subscriptions.push(sub); } - }; - GW3Bridge.prototype.handleContextDestroyedMessage = function (destroyedMsg) { - var destroyedMessageType = destroyedMsg.type; - var contextId; - var name; + } + handleContextDestroyedMessage(destroyedMsg) { + const destroyedMessageType = destroyedMsg.type; + let contextId; + let name; if (destroyedMessageType === GW_MESSAGE_ACTIVITY_DESTROYED) { name = destroyedMsg.activity_id; contextId = this._contextNameToId[name]; if (!contextId) { - this._logger.error("Received 'destroyed' for unknown activity: ".concat(destroyedMsg.activity_id)); + this._logger.error(`Received 'destroyed' for unknown activity: ${destroyedMsg.activity_id}`); return; } } @@ -12919,42 +11715,41 @@ var GW3Bridge = (function () { contextId = destroyedMsg.context_id; name = this._contextIdToName[contextId]; if (!name) { - this._logger.error("Received 'destroyed' for unknown context: ".concat(destroyedMsg.context_id)); + this._logger.error(`Received 'destroyed' for unknown context: ${destroyedMsg.context_id}`); return; } } delete this._contextIdToName[contextId]; delete this._contextNameToId[name]; - var contextData = this._contextNameToData[name]; + const contextData = this._contextNameToData[name]; delete this._contextNameToData[name]; if (!contextData || !contextData.isAnnounced) { - this._logger.error("Received 'destroyed' for unknown context: ".concat(contextId)); + this._logger.error(`Received 'destroyed' for unknown context: ${contextId}`); return; } - }; - GW3Bridge.prototype.sendSubscribe = function (contextData) { + } + sendSubscribe(contextData) { contextData.sentExplicitSubscription = true; return this._gw3Session .send({ type: GW_MESSAGE_SUBSCRIBE_CONTEXT, domain: "global", context_id: contextData.contextId, - }).then(function (_) { return undefined; }); - }; - GW3Bridge.prototype.sendUnsubscribe = function (contextData) { + }).then((_) => undefined); + } + sendUnsubscribe(contextData) { contextData.sentExplicitSubscription = false; return this._gw3Session .send({ type: GW_MESSAGE_UNSUBSCRIBE_CONTEXT, domain: "global", context_id: contextData.contextId, - }).then(function (_) { return undefined; }); - }; - GW3Bridge.prototype.calculateContextDeltaV1 = function (from, to) { - var delta = { added: {}, updated: {}, removed: [], reset: undefined }; + }).then((_) => undefined); + } + calculateContextDeltaV1(from, to) { + const delta = { added: {}, updated: {}, removed: [], reset: undefined }; if (from) { - for (var _i = 0, _a = Object.keys(from); _i < _a.length; _i++) { - var x = _a[_i]; + for (const x of Object.keys(from)) { if (Object.keys(to).indexOf(x) !== -1 && to[x] !== null && !deepEqual(from[x], to[x])) { @@ -12962,8 +11757,7 @@ var GW3Bridge = (function () { } } } - for (var _b = 0, _c = Object.keys(to); _b < _c.length; _b++) { - var x = _c[_b]; + for (const x of Object.keys(to)) { if (!from || (Object.keys(from).indexOf(x) === -1)) { if (to[x] !== null) { delta.added[x] = to[x]; @@ -12974,28 +11768,24 @@ var GW3Bridge = (function () { } } return delta; - }; - GW3Bridge.prototype.calculateContextDeltaV2 = function (from, to) { - var _a, _b; - var delta = { added: {}, updated: {}, removed: [], reset: undefined, commands: [] }; - for (var _i = 0, _c = Object.keys(to); _i < _c.length; _i++) { - var x = _c[_i]; + } + calculateContextDeltaV2(from, to) { + const delta = { added: {}, updated: {}, removed: [], reset: undefined, commands: [] }; + for (const x of Object.keys(to)) { if (to[x] !== null) { - var fromX = from ? from[x] : null; + const fromX = from ? from[x] : null; if (!deepEqual(fromX, to[x])) { - (_a = delta.commands) === null || _a === void 0 ? void 0 : _a.push({ type: "set", path: x, value: to[x] }); + delta.commands?.push({ type: "set", path: x, value: to[x] }); } } else { - (_b = delta.commands) === null || _b === void 0 ? void 0 : _b.push({ type: "remove", path: x }); + delta.commands?.push({ type: "remove", path: x }); } } return delta; - }; - GW3Bridge.prototype.resetState = function () { - var _this = this; - for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) { - var sub = _a[_i]; + } + resetState() { + for (const sub of this._gw3Subscriptions) { this._connection.off(sub); } if (this._systemContextsSubKey) { @@ -13005,212 +11795,172 @@ var GW3Bridge = (function () { this._gw3Subscriptions = []; this._contextNameToId = {}; this._contextIdToName = {}; - delete this._protocolVersion; - this._contextsTempCache = Object.keys(this._contextNameToData).reduce(function (cacheSoFar, ctxName) { - cacheSoFar[ctxName] = _this._contextNameToData[ctxName].context; - return cacheSoFar; - }, {}); - this._contextNameToData = {}; - }; - GW3Bridge.prototype.reInitiateState = function () { - var _a; - return __awaiter(this, void 0, void 0, function () { - var _b, _c, _e, _i, ctxName, lastKnownData; - var _this = this; - return __generator(this, function (_f) { - switch (_f.label) { - case 0: - this.subscribeToContextCreatedMessages(); - this.subscribeToContextUpdatedMessages(); - this.subscribeToContextDestroyedMessages(); - (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) { - var type = message.type; - if (!type) { - return; - } - if (type === GW_MESSAGE_CONTEXT_CREATED || - type === GW_MESSAGE_CONTEXT_ADDED || - type === GW_MESSAGE_ACTIVITY_CREATED) { - _this.handleContextCreatedMessage(message); - } - else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT || - type === GW_MESSAGE_CONTEXT_UPDATED || - type === GW_MESSAGE_JOINED_ACTIVITY) { - _this.handleContextUpdatedMessage(message); - } - else if (type === GW_MESSAGE_CONTEXT_DESTROYED || - type === GW_MESSAGE_ACTIVITY_DESTROYED) { - _this.handleContextDestroyedMessage(message); - } - }); - return [4, Promise.all(this._contextsSubscriptionsCache.map(function (subscription) { return _this.subscribe(subscription.contextName, subscription.callback, subscription.subKey); }))]; - case 1: - _f.sent(); - return [4, this.flushQueue()]; - case 2: - _f.sent(); - _b = this._contextsTempCache; - _c = []; - for (_e in _b) - _c.push(_e); - _i = 0; - _f.label = 3; - case 3: - if (!(_i < _c.length)) return [3, 7]; - _e = _c[_i]; - if (!(_e in _b)) return [3, 6]; - ctxName = _e; - if (typeof this._contextsTempCache[ctxName] !== "object" || Object.keys(this._contextsTempCache[ctxName]).length === 0) { - return [3, 6]; - } - lastKnownData = this._contextsTempCache[ctxName]; - this._logger.info("Re-announcing known context: ".concat(ctxName)); - return [4, this.flushQueue()]; - case 4: - _f.sent(); - return [4, this.update(ctxName, lastKnownData)]; - case 5: - _f.sent(); - _f.label = 6; - case 6: - _i++; - return [3, 3]; - case 7: - this._contextsTempCache = {}; - this._logger.info("Contexts are re-announced"); - return [2]; - } - }); + delete this._protocolVersion; + this._contextsTempCache = Object.keys(this._contextNameToData).reduce((cacheSoFar, ctxName) => { + cacheSoFar[ctxName] = this._contextNameToData[ctxName].context; + return cacheSoFar; + }, {}); + this._contextNameToData = {}; + } + async reInitiateState() { + this.subscribeToContextCreatedMessages(); + this.subscribeToContextUpdatedMessages(); + this.subscribeToContextDestroyedMessages(); + this._connection.replayer?.drain(ContextMessageReplaySpec.name, (message) => { + const type = message.type; + if (!type) { + return; + } + if (type === GW_MESSAGE_CONTEXT_CREATED || + type === GW_MESSAGE_CONTEXT_ADDED || + type === GW_MESSAGE_ACTIVITY_CREATED) { + this.handleContextCreatedMessage(message); + } + else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT || + type === GW_MESSAGE_CONTEXT_UPDATED || + type === GW_MESSAGE_JOINED_ACTIVITY) { + this.handleContextUpdatedMessage(message); + } + else if (type === GW_MESSAGE_CONTEXT_DESTROYED || + type === GW_MESSAGE_ACTIVITY_DESTROYED) { + this.handleContextDestroyedMessage(message); + } }); - }; - GW3Bridge.prototype.flushQueue = function () { - return new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 0); }); - }; - return GW3Bridge; -}()); + await Promise.all(this._contextsSubscriptionsCache.map((subscription) => this.subscribe(subscription.contextName, subscription.callback, subscription.subKey))); + await this.flushQueue(); + for (const ctxName in this._contextsTempCache) { + if (typeof this._contextsTempCache[ctxName] !== "object" || Object.keys(this._contextsTempCache[ctxName]).length === 0) { + continue; + } + const lastKnownData = this._contextsTempCache[ctxName]; + this._logger.info(`Re-announcing known context: ${ctxName}`); + await this.flushQueue(); + await this.update(ctxName, lastKnownData); + } + this._contextsTempCache = {}; + this._logger.info("Contexts are re-announced"); + } + flushQueue() { + return new Promise((resolve) => setTimeout(() => resolve(), 0)); + } +} -var ContextsModule = (function () { - function ContextsModule(config) { +class ContextsModule { + initTime; + initStartTime; + initEndTime; + _bridge; + constructor(config) { this._bridge = new GW3Bridge(config); } - ContextsModule.prototype.all = function () { + all() { return this._bridge.all(); - }; - ContextsModule.prototype.update = function (name, data) { + } + update(name, data) { this.checkName(name); this.checkData(data); return this._bridge.update(name, data); - }; - ContextsModule.prototype.set = function (name, data) { + } + set(name, data) { this.checkName(name); this.checkData(data); return this._bridge.set(name, data); - }; - ContextsModule.prototype.setPath = function (name, path, data) { + } + setPath(name, path, data) { this.checkName(name); this.checkPath(path); - var isTopLevelPath = path === ""; + const isTopLevelPath = path === ""; if (isTopLevelPath) { this.checkData(data); return this.set(name, data); } return this._bridge.setPath(name, path, data); - }; - ContextsModule.prototype.setPaths = function (name, paths) { + } + setPaths(name, paths) { this.checkName(name); if (!Array.isArray(paths)) { throw new Error("Please provide the paths as an array of PathValues!"); } - for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) { - var _a = paths_1[_i], path = _a.path, value = _a.value; + for (const { path, value } of paths) { this.checkPath(path); - var isTopLevelPath = path === ""; + const isTopLevelPath = path === ""; if (isTopLevelPath) { this.checkData(value); } } return this._bridge.setPaths(name, paths); - }; - ContextsModule.prototype.subscribe = function (name, callback) { - var _this = this; + } + subscribe(name, callback) { this.checkName(name); if (typeof callback !== "function") { throw new Error("Please provide the callback as a function!"); } return this._bridge - .subscribe(name, function (data, delta, removed, key, extraData) { return callback(data, delta, removed, function () { return _this._bridge.unsubscribe(key); }, extraData); }) - .then(function (key) { - return function () { - _this._bridge.unsubscribe(key); - }; + .subscribe(name, (data, delta, removed, key, extraData) => callback(data, delta, removed, () => this._bridge.unsubscribe(key), extraData)) + .then((key) => () => { + this._bridge.unsubscribe(key); }); - }; - ContextsModule.prototype.get = function (name) { + } + get(name) { this.checkName(name); return this._bridge.get(name); - }; - ContextsModule.prototype.ready = function () { + } + ready() { return Promise.resolve(this); - }; - ContextsModule.prototype.destroy = function (name) { + } + destroy(name) { this.checkName(name); return this._bridge.destroy(name); - }; - Object.defineProperty(ContextsModule.prototype, "setPathSupported", { - get: function () { - return this._bridge.setPathSupported; - }, - enumerable: false, - configurable: true - }); - ContextsModule.prototype.checkName = function (name) { + } + get setPathSupported() { + return this._bridge.setPathSupported; + } + checkName(name) { if (typeof name !== "string" || name === "") { throw new Error("Please provide the name as a non-empty string!"); } - }; - ContextsModule.prototype.checkPath = function (path) { + } + checkPath(path) { if (typeof path !== "string") { throw new Error("Please provide the path as a dot delimited string!"); } - }; - ContextsModule.prototype.checkData = function (data) { + } + checkData(data) { if (typeof data !== "object") { throw new Error("Please provide the data as an object!"); } - }; - return ContextsModule; -}()); + } +} function promisify (promise, successCallback, errorCallback) { if (typeof successCallback !== "function" && typeof errorCallback !== "function") { return promise; } if (typeof successCallback !== "function") { - successCallback = function () { }; + successCallback = () => { }; } else if (typeof errorCallback !== "function") { - errorCallback = function () { }; + errorCallback = () => { }; } return promise.then(successCallback, errorCallback); } -function rejectAfter(ms, promise, error) { - if (ms === void 0) { ms = 0; } - var timeout; - var clearTimeoutIfThere = function () { +function rejectAfter(ms = 0, promise, error) { + let timeout; + const clearTimeoutIfThere = () => { if (timeout) { clearTimeout(timeout); } }; promise - .then(function () { + .then(() => { clearTimeoutIfThere(); }) - .catch(function () { + .catch(() => { clearTimeoutIfThere(); }); - return new Promise(function (resolve, reject) { - timeout = setTimeout(function () { return reject(error); }, ms); + return new Promise((resolve, reject) => { + timeout = setTimeout(() => reject(error), ms); }); } @@ -13219,32 +11969,34 @@ var InvokeStatus; InvokeStatus[InvokeStatus["Success"] = 0] = "Success"; InvokeStatus[InvokeStatus["Error"] = 1] = "Error"; })(InvokeStatus || (InvokeStatus = {})); -var Client = (function () { - function Client(protocol, repo, instance, configuration) { +class Client { + protocol; + repo; + instance; + configuration; + constructor(protocol, repo, instance, configuration) { this.protocol = protocol; this.repo = repo; this.instance = instance; this.configuration = configuration; } - Client.prototype.subscribe = function (method, options, successCallback, errorCallback, existingSub) { - var _this = this; - var callProtocolSubscribe = function (targetServers, stream, successProxy, errorProxy) { - var _a; - options.methodResponseTimeout = (_a = options.methodResponseTimeout) !== null && _a !== void 0 ? _a : options.waitTimeoutMs; - _this.protocol.client.subscribe(stream, options, targetServers, successProxy, errorProxy, existingSub); + subscribe(method, options, successCallback, errorCallback, existingSub) { + const callProtocolSubscribe = (targetServers, stream, successProxy, errorProxy) => { + options.methodResponseTimeout = options.methodResponseTimeout ?? options.waitTimeoutMs; + this.protocol.client.subscribe(stream, options, targetServers, successProxy, errorProxy, existingSub); }; - var promise = new Promise(function (resolve, reject) { - var successProxy = function (sub) { + const promise = new Promise((resolve, reject) => { + const successProxy = (sub) => { resolve(sub); }; - var errorProxy = function (err) { + const errorProxy = (err) => { reject(err); }; if (!method) { - reject("Method definition is required. Please, provide either a unique string for a method name or a \u201CmethodDefinition\u201D object with a required \u201Cname\u201D property."); + reject(`Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.`); return; } - var methodDef; + let methodDef; if (typeof method === "string") { methodDef = { name: method }; } @@ -13252,265 +12004,253 @@ var Client = (function () { methodDef = method; } if (!methodDef.name) { - reject("Method definition is required. Please, provide either a unique string for a method name or a \u201CmethodDefinition\u201D object with a required \u201Cname\u201D property."); + reject(`Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.`); return; } if (options === undefined) { options = {}; } - var target = options.target; + let target = options.target; if (target === undefined) { target = "best"; } if (typeof target === "string" && target !== "all" && target !== "best") { - reject(new Error("\"".concat(target, "\" is not a valid target. Valid targets are \"all\", \"best\", or an instance."))); + reject(new Error(`"${target}" is not a valid target. Valid targets are "all", "best", or an instance.`)); return; } if (options.methodResponseTimeout === undefined) { options.methodResponseTimeout = options.method_response_timeout; if (options.methodResponseTimeout === undefined) { - options.methodResponseTimeout = _this.configuration.methodResponseTimeout; + options.methodResponseTimeout = this.configuration.methodResponseTimeout; } } if (options.waitTimeoutMs === undefined) { options.waitTimeoutMs = options.wait_for_method_timeout; if (options.waitTimeoutMs === undefined) { - options.waitTimeoutMs = _this.configuration.waitTimeoutMs; + options.waitTimeoutMs = this.configuration.waitTimeoutMs; } } - var delayStep = 500; - var delayTillNow = 0; - var currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target); + const delayStep = 500; + let delayTillNow = 0; + let currentServers = this.getServerMethodsByFilterAndTarget(methodDef, target); if (currentServers.length > 0) { callProtocolSubscribe(currentServers, currentServers[0].methods[0], successProxy, errorProxy); } else { - var retry_1 = function () { + const retry = () => { if (!target || !(options.waitTimeoutMs)) { return; } delayTillNow += delayStep; - currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target); + currentServers = this.getServerMethodsByFilterAndTarget(methodDef, target); if (currentServers.length > 0) { - var streamInfo = currentServers[0].methods[0]; + const streamInfo = currentServers[0].methods[0]; callProtocolSubscribe(currentServers, streamInfo, successProxy, errorProxy); } else if (delayTillNow >= options.waitTimeoutMs) { - var def = typeof method === "string" ? { name: method } : method; + const def = typeof method === "string" ? { name: method } : method; callProtocolSubscribe(currentServers, def, successProxy, errorProxy); } else { - setTimeout(retry_1, delayStep); + setTimeout(retry, delayStep); } }; - setTimeout(retry_1, delayStep); + setTimeout(retry, delayStep); } }); return promisify(promise, successCallback, errorCallback); - }; - Client.prototype.servers = function (methodFilter) { - var filterCopy = methodFilter === undefined + } + servers(methodFilter) { + const filterCopy = methodFilter === undefined ? undefined - : __assign({}, methodFilter); - return this.getServers(filterCopy).map(function (serverMethodMap) { + : { ...methodFilter }; + return this.getServers(filterCopy).map((serverMethodMap) => { return serverMethodMap.server.instance; }); - }; - Client.prototype.methods = function (methodFilter) { + } + methods(methodFilter) { if (typeof methodFilter === "string") { methodFilter = { name: methodFilter }; } else { - methodFilter = __assign({}, methodFilter); + methodFilter = { ...methodFilter }; } return this.getMethods(methodFilter); - }; - Client.prototype.methodsForInstance = function (instance) { + } + methodsForInstance(instance) { return this.getMethodsForInstance(instance); - }; - Client.prototype.methodAdded = function (callback) { + } + methodAdded(callback) { return this.repo.onMethodAdded(callback); - }; - Client.prototype.methodRemoved = function (callback) { + } + methodRemoved(callback) { return this.repo.onMethodRemoved(callback); - }; - Client.prototype.serverAdded = function (callback) { + } + serverAdded(callback) { return this.repo.onServerAdded(callback); - }; - Client.prototype.serverRemoved = function (callback) { - return this.repo.onServerRemoved(function (server, reason) { + } + serverRemoved(callback) { + return this.repo.onServerRemoved((server, reason) => { callback(server, reason); }); - }; - Client.prototype.serverMethodAdded = function (callback) { - return this.repo.onServerMethodAdded(function (server, method) { - callback({ server: server, method: method }); + } + serverMethodAdded(callback) { + return this.repo.onServerMethodAdded((server, method) => { + callback({ server, method }); }); - }; - Client.prototype.serverMethodRemoved = function (callback) { - return this.repo.onServerMethodRemoved(function (server, method) { - callback({ server: server, method: method }); + } + serverMethodRemoved(callback) { + return this.repo.onServerMethodRemoved((server, method) => { + callback({ server, method }); }); - }; - Client.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) { - return __awaiter(this, void 0, void 0, function () { - var getInvokePromise; - var _this = this; - return __generator(this, function (_a) { - getInvokePromise = function () { return __awaiter(_this, void 0, void 0, function () { - var methodDefinition, serversMethodMap, method, errorObj, timeout, additionalOptionsCopy, invokePromises, invocationMessages, results, allRejected; - var _this = this; - var _a, _b, _c; - return __generator(this, function (_d) { - switch (_d.label) { - case 0: - if (typeof methodFilter === "string") { - methodDefinition = { name: methodFilter }; - } - else { - methodDefinition = __assign({}, methodFilter); - } - if (!methodDefinition.name) { - return [2, Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a \u201CmethodDefinition\u201D object with a required \u201Cname\u201D property.")]; - } - if (!argumentObj) { - argumentObj = {}; - } - if (!target) { - target = "best"; - } - if (typeof target === "string" && target !== "all" && target !== "best" && target !== "skipMine") { - return [2, Promise.reject(new Error("\"".concat(target, "\" is not a valid target. Valid targets are \"all\" and \"best\".")))]; - } - if (!additionalOptions) { - additionalOptions = {}; - } - if (additionalOptions.methodResponseTimeoutMs === undefined) { - additionalOptions.methodResponseTimeoutMs = additionalOptions.method_response_timeout; - if (additionalOptions.methodResponseTimeoutMs === undefined) { - additionalOptions.methodResponseTimeoutMs = this.configuration.methodResponseTimeout; - } - } - if (additionalOptions.waitTimeoutMs === undefined) { - additionalOptions.waitTimeoutMs = additionalOptions.wait_for_method_timeout; - if (additionalOptions.waitTimeoutMs === undefined) { - additionalOptions.waitTimeoutMs = this.configuration.waitTimeoutMs; - } - } - if (additionalOptions.waitTimeoutMs !== undefined && typeof additionalOptions.waitTimeoutMs !== "number") { - return [2, Promise.reject(new Error("\"".concat(additionalOptions.waitTimeoutMs, "\" is not a valid number for \"waitTimeoutMs\" ")))]; - } - if (typeof argumentObj !== "object") { - return [2, Promise.reject(new Error("The method arguments must be an object. method: ".concat(methodDefinition.name)))]; - } - serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target); - if (!(serversMethodMap.length === 0)) return [3, 4]; - _d.label = 1; - case 1: - _d.trys.push([1, 3, , 4]); - return [4, this.tryToAwaitForMethods(methodDefinition, target, additionalOptions)]; - case 2: - serversMethodMap = _d.sent(); - return [3, 4]; - case 3: - _d.sent(); - method = __assign(__assign({}, methodDefinition), { getServers: function () { return []; }, supportsStreaming: false, objectTypes: (_a = methodDefinition.objectTypes) !== null && _a !== void 0 ? _a : [], flags: (_c = (_b = methodDefinition.flags) === null || _b === void 0 ? void 0 : _b.metadata) !== null && _c !== void 0 ? _c : {} }); - errorObj = { - method: method, - called_with: argumentObj, - message: "Can not find a method matching ".concat(JSON.stringify(methodFilter), " with server filter ").concat(JSON.stringify(target)), - executed_by: undefined, - returned: undefined, - status: undefined, - }; - return [2, Promise.reject(errorObj)]; - case 4: - timeout = additionalOptions.methodResponseTimeoutMs; - additionalOptionsCopy = additionalOptions; - invokePromises = serversMethodMap.map(function (serversMethodPair) { - var invId = shortid(); - var method = serversMethodPair.methods[0]; - var server = serversMethodPair.server; - var invokePromise = _this.protocol.client.invoke(invId, method, argumentObj, server, additionalOptionsCopy); - return Promise.race([ - invokePromise, - rejectAfter(timeout, invokePromise, { - invocationId: invId, - message: "Invocation timeout (".concat(timeout, " ms) reached for method name: ").concat(method === null || method === void 0 ? void 0 : method.name, ", target instance: ").concat(JSON.stringify(server.instance), ", options: ").concat(JSON.stringify(additionalOptionsCopy)), - status: InvokeStatus.Error, - }) - ]); - }); - return [4, Promise.all(invokePromises)]; - case 5: - invocationMessages = _d.sent(); - results = this.getInvocationResultObj(invocationMessages, methodDefinition, argumentObj); - allRejected = invocationMessages.every(function (result) { return result.status === InvokeStatus.Error; }); - if (allRejected) { - return [2, Promise.reject(results)]; - } - return [2, results]; - } - }); - }); }; - return [2, promisify(getInvokePromise(), success, error)]; + } + async invoke(methodFilter, argumentObj, target, additionalOptions, success, error) { + const getInvokePromise = async () => { + let methodDefinition; + if (typeof methodFilter === "string") { + methodDefinition = { name: methodFilter }; + } + else { + methodDefinition = { ...methodFilter }; + } + if (!methodDefinition.name) { + return Promise.reject(`Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.`); + } + if (!argumentObj) { + argumentObj = {}; + } + if (!target) { + target = "best"; + } + if (typeof target === "string" && target !== "all" && target !== "best" && target !== "skipMine") { + return Promise.reject(new Error(`"${target}" is not a valid target. Valid targets are "all" and "best".`)); + } + if (!additionalOptions) { + additionalOptions = {}; + } + if (additionalOptions.methodResponseTimeoutMs === undefined) { + additionalOptions.methodResponseTimeoutMs = additionalOptions.method_response_timeout; + if (additionalOptions.methodResponseTimeoutMs === undefined) { + additionalOptions.methodResponseTimeoutMs = this.configuration.methodResponseTimeout; + } + } + if (additionalOptions.waitTimeoutMs === undefined) { + additionalOptions.waitTimeoutMs = additionalOptions.wait_for_method_timeout; + if (additionalOptions.waitTimeoutMs === undefined) { + additionalOptions.waitTimeoutMs = this.configuration.waitTimeoutMs; + } + } + if (additionalOptions.waitTimeoutMs !== undefined && typeof additionalOptions.waitTimeoutMs !== "number") { + return Promise.reject(new Error(`"${additionalOptions.waitTimeoutMs}" is not a valid number for "waitTimeoutMs" `)); + } + if (typeof argumentObj !== "object") { + return Promise.reject(new Error(`The method arguments must be an object. method: ${methodDefinition.name}`)); + } + let serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target); + if (serversMethodMap.length === 0) { + try { + serversMethodMap = await this.tryToAwaitForMethods(methodDefinition, target, additionalOptions); + } + catch (err) { + const method = { + ...methodDefinition, + getServers: () => [], + supportsStreaming: false, + objectTypes: methodDefinition.objectTypes ?? [], + flags: methodDefinition.flags?.metadata ?? {} + }; + const errorObj = { + method, + called_with: argumentObj, + message: `Can not find a method matching ${JSON.stringify(methodFilter)} with server filter ${JSON.stringify(target)}`, + executed_by: undefined, + returned: undefined, + status: undefined, + }; + return Promise.reject(errorObj); + } + } + const timeout = additionalOptions.methodResponseTimeoutMs; + const additionalOptionsCopy = additionalOptions; + const invokePromises = serversMethodMap.map((serversMethodPair) => { + const invId = nanoid(10); + const method = serversMethodPair.methods[0]; + const server = serversMethodPair.server; + const invokePromise = this.protocol.client.invoke(invId, method, argumentObj, server, additionalOptionsCopy); + return Promise.race([ + invokePromise, + rejectAfter(timeout, invokePromise, { + invocationId: invId, + message: `Invocation timeout (${timeout} ms) reached for method name: ${method?.name}, target instance: ${JSON.stringify(server.instance)}, options: ${JSON.stringify(additionalOptionsCopy)}`, + status: InvokeStatus.Error, + }) + ]); }); - }); - }; - Client.prototype.getInvocationResultObj = function (invocationResults, method, calledWith) { - var all_return_values = invocationResults - .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Success; }) - .reduce(function (allValues, currentValue) { - allValues = __spreadArray(__spreadArray([], allValues, true), [ + const invocationMessages = await Promise.all(invokePromises); + const results = this.getInvocationResultObj(invocationMessages, methodDefinition, argumentObj); + const allRejected = invocationMessages.every((result) => result.status === InvokeStatus.Error); + if (allRejected) { + return Promise.reject(results); + } + return results; + }; + return promisify(getInvokePromise(), success, error); + } + getInvocationResultObj(invocationResults, method, calledWith) { + const all_return_values = invocationResults + .filter((invokeMessage) => invokeMessage.status === InvokeStatus.Success) + .reduce((allValues, currentValue) => { + allValues = [ + ...allValues, { executed_by: currentValue.instance, returned: currentValue.result, called_with: calledWith, - method: method, + method, message: currentValue.message, status: currentValue.status, } - ], false); + ]; return allValues; }, []); - var all_errors = invocationResults - .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Error; }) - .reduce(function (allErrors, currError) { - allErrors = __spreadArray(__spreadArray([], allErrors, true), [ + const all_errors = invocationResults + .filter((invokeMessage) => invokeMessage.status === InvokeStatus.Error) + .reduce((allErrors, currError) => { + allErrors = [ + ...allErrors, { executed_by: currError.instance, called_with: calledWith, name: method.name, message: currError.message, } - ], false); + ]; return allErrors; }, []); - var invResult = invocationResults[0]; - var result = { - method: method, + const invResult = invocationResults[0]; + const result = { + method, called_with: calledWith, returned: invResult.result, executed_by: invResult.instance, - all_return_values: all_return_values, - all_errors: all_errors, + all_return_values, + all_errors, message: invResult.message, status: invResult.status }; return result; - }; - Client.prototype.tryToAwaitForMethods = function (methodDefinition, target, additionalOptions) { - var _this = this; - return new Promise(function (resolve, reject) { + } + tryToAwaitForMethods(methodDefinition, target, additionalOptions) { + return new Promise((resolve, reject) => { if (additionalOptions.waitTimeoutMs === 0) { reject(); return; } - var delayStep = 500; - var delayTillNow = 0; - var retry = function () { + const delayStep = 500; + let delayTillNow = 0; + const retry = () => { delayTillNow += delayStep; - var serversMethodMap = _this.getServerMethodsByFilterAndTarget(methodDefinition, target); + const serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target); if (serversMethodMap.length > 0) { clearInterval(interval); resolve(serversMethodMap); @@ -13521,18 +12261,17 @@ var Client = (function () { return; } }; - var interval = setInterval(retry, delayStep); + const interval = setInterval(retry, delayStep); }); - }; - Client.prototype.filterByTarget = function (target, serverMethodMap) { - var _this = this; + } + filterByTarget(target, serverMethodMap) { if (typeof target === "string") { if (target === "all") { - return __spreadArray([], serverMethodMap, true); + return [...serverMethodMap]; } else if (target === "best") { - var localMachine = serverMethodMap - .find(function (s) { return s.server.instance.isLocal; }); + const localMachine = serverMethodMap + .find((s) => s.server.instance.isLocal); if (localMachine) { return [localMachine]; } @@ -13541,39 +12280,36 @@ var Client = (function () { } } else if (target === "skipMine") { - return serverMethodMap.filter(function (_a) { - var server = _a.server; - return server.instance.peerId !== _this.instance.peerId; - }); + return serverMethodMap.filter(({ server }) => server.instance.peerId !== this.instance.peerId); } } else { - var targetArray = void 0; + let targetArray; if (!Array.isArray(target)) { targetArray = [target]; } else { targetArray = target; } - var allServersMatching = targetArray.reduce(function (matches, filter) { - var myMatches = serverMethodMap.filter(function (serverMethodPair) { - return _this.instanceMatch(filter, serverMethodPair.server.instance); + const allServersMatching = targetArray.reduce((matches, filter) => { + const myMatches = serverMethodMap.filter((serverMethodPair) => { + return this.instanceMatch(filter, serverMethodPair.server.instance); }); return matches.concat(myMatches); }, []); return allServersMatching; } return []; - }; - Client.prototype.instanceMatch = function (instanceFilter, instanceDefinition) { + } + instanceMatch(instanceFilter, instanceDefinition) { return this.containsProps(instanceFilter, instanceDefinition); - }; - Client.prototype.methodMatch = function (methodFilter, methodDefinition) { + } + methodMatch(methodFilter, methodDefinition) { return this.containsProps(methodFilter, methodDefinition); - }; - Client.prototype.containsProps = function (filter, repoMethod) { - var filterProps = Object.keys(filter) - .filter(function (prop) { + } + containsProps(filter, repoMethod) { + const filterProps = Object.keys(filter) + .filter((prop) => { return filter[prop] !== undefined && filter[prop] !== null && typeof filter[prop] !== "function" @@ -13584,13 +12320,13 @@ var Client = (function () { && prop !== "identifier" && prop[0] !== "_"; }); - return filterProps.every(function (prop) { - var isMatch; - var filterValue = filter[prop]; - var repoMethodValue = repoMethod[prop]; + return filterProps.every((prop) => { + let isMatch; + const filterValue = filter[prop]; + const repoMethodValue = repoMethod[prop]; switch (prop) { case "objectTypes": - isMatch = (filterValue || []).every(function (filterValueEl) { + isMatch = (filterValue || []).every((filterValueEl) => { return (repoMethodValue || []).includes(filterValueEl); }); break; @@ -13602,205 +12338,195 @@ var Client = (function () { } return isMatch; }); - }; - Client.prototype.getMethods = function (methodFilter) { - var _this = this; + } + getMethods(methodFilter) { if (methodFilter === undefined) { return this.repo.getMethods(); } - var methods = this.repo.getMethods().filter(function (method) { - return _this.methodMatch(methodFilter, method); + const methods = this.repo.getMethods().filter((method) => { + return this.methodMatch(methodFilter, method); }); return methods; - }; - Client.prototype.getMethodsForInstance = function (instanceFilter) { - var _this = this; - var allServers = this.repo.getServers(); - var matchingServers = allServers.filter(function (server) { - return _this.instanceMatch(instanceFilter, server.instance); + } + getMethodsForInstance(instanceFilter) { + const allServers = this.repo.getServers(); + const matchingServers = allServers.filter((server) => { + return this.instanceMatch(instanceFilter, server.instance); }); if (matchingServers.length === 0) { return []; } - var resultMethodsObject = {}; + let resultMethodsObject = {}; if (matchingServers.length === 1) { resultMethodsObject = matchingServers[0].methods; } else { - matchingServers.forEach(function (server) { - Object.keys(server.methods).forEach(function (methodKey) { - var method = server.methods[methodKey]; + matchingServers.forEach((server) => { + Object.keys(server.methods).forEach((methodKey) => { + const method = server.methods[methodKey]; resultMethodsObject[method.identifier] = method; }); }); } return Object.keys(resultMethodsObject) - .map(function (key) { + .map((key) => { return resultMethodsObject[key]; }); - }; - Client.prototype.getServers = function (methodFilter) { - var _this = this; - var servers = this.repo.getServers(); + } + getServers(methodFilter) { + const servers = this.repo.getServers(); if (methodFilter === undefined) { - return servers.map(function (server) { - return { server: server, methods: [] }; + return servers.map((server) => { + return { server, methods: [] }; }); } - return servers.reduce(function (prev, current) { - var methodsForServer = Object.values(current.methods); - var matchingMethods = methodsForServer.filter(function (method) { - return _this.methodMatch(methodFilter, method); + return servers.reduce((prev, current) => { + const methodsForServer = Object.values(current.methods); + const matchingMethods = methodsForServer.filter((method) => { + return this.methodMatch(methodFilter, method); }); if (matchingMethods.length > 0) { prev.push({ server: current, methods: matchingMethods }); } return prev; }, []); - }; - Client.prototype.getServerMethodsByFilterAndTarget = function (methodFilter, target) { - var serversMethodMap = this.getServers(methodFilter); + } + getServerMethodsByFilterAndTarget(methodFilter, target) { + const serversMethodMap = this.getServers(methodFilter); return this.filterByTarget(target, serversMethodMap); - }; - return Client; -}()); + } +} -var ServerSubscription = (function () { - function ServerSubscription(protocol, repoMethod, subscription) { +class ServerSubscription { + protocol; + repoMethod; + subscription; + constructor(protocol, repoMethod, subscription) { this.protocol = protocol; this.repoMethod = repoMethod; this.subscription = subscription; } - Object.defineProperty(ServerSubscription.prototype, "stream", { - get: function () { - if (!this.repoMethod.stream) { - throw new Error("no stream"); - } - return this.repoMethod.stream; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(ServerSubscription.prototype, "arguments", { - get: function () { return this.subscription.arguments || {}; }, - enumerable: false, - configurable: true - }); - Object.defineProperty(ServerSubscription.prototype, "branchKey", { - get: function () { return this.subscription.branchKey; }, - enumerable: false, - configurable: true - }); - Object.defineProperty(ServerSubscription.prototype, "instance", { - get: function () { - if (!this.subscription.instance) { - throw new Error("no instance"); - } - return this.subscription.instance; - }, - enumerable: false, - configurable: true - }); - ServerSubscription.prototype.close = function () { + get stream() { + if (!this.repoMethod.stream) { + throw new Error("no stream"); + } + return this.repoMethod.stream; + } + get arguments() { return this.subscription.arguments || {}; } + get branchKey() { return this.subscription.branchKey; } + get instance() { + if (!this.subscription.instance) { + throw new Error("no instance"); + } + return this.subscription.instance; + } + close() { this.protocol.server.closeSingleSubscription(this.repoMethod, this.subscription); - }; - ServerSubscription.prototype.push = function (data) { + } + push(data) { this.protocol.server.pushDataToSingle(this.repoMethod, this.subscription, data); - }; - return ServerSubscription; -}()); + } +} -var Request = (function () { - function Request(protocol, repoMethod, requestContext) { +class Request { + protocol; + repoMethod; + requestContext; + arguments; + instance; + constructor(protocol, repoMethod, requestContext) { this.protocol = protocol; this.repoMethod = repoMethod; this.requestContext = requestContext; this.arguments = requestContext.arguments; this.instance = requestContext.instance; } - Request.prototype.accept = function () { + accept() { this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, ""); - }; - Request.prototype.acceptOnBranch = function (branch) { + } + acceptOnBranch(branch) { this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, branch); - }; - Request.prototype.reject = function (reason) { + } + reject(reason) { this.protocol.server.rejectRequest(this.requestContext, this.repoMethod, reason); - }; - return Request; -}()); + } +} -var ServerStreaming$1 = (function () { - function ServerStreaming(protocol, server) { - var _this = this; +let ServerStreaming$1 = class ServerStreaming { + protocol; + server; + constructor(protocol, server) { this.protocol = protocol; this.server = server; - protocol.server.onSubRequest(function (rc, rm) { return _this.handleSubRequest(rc, rm); }); - protocol.server.onSubAdded(function (sub, rm) { return _this.handleSubAdded(sub, rm); }); - protocol.server.onSubRemoved(function (sub, rm) { return _this.handleSubRemoved(sub, rm); }); + protocol.server.onSubRequest((rc, rm) => this.handleSubRequest(rc, rm)); + protocol.server.onSubAdded((sub, rm) => this.handleSubAdded(sub, rm)); + protocol.server.onSubRemoved((sub, rm) => this.handleSubRemoved(sub, rm)); } - ServerStreaming.prototype.handleSubRequest = function (requestContext, repoMethod) { + handleSubRequest(requestContext, repoMethod) { if (!(repoMethod && repoMethod.streamCallbacks && typeof repoMethod.streamCallbacks.subscriptionRequestHandler === "function")) { return; } - var request = new Request(this.protocol, repoMethod, requestContext); + const request = new Request(this.protocol, repoMethod, requestContext); repoMethod.streamCallbacks.subscriptionRequestHandler(request); - }; - ServerStreaming.prototype.handleSubAdded = function (subscription, repoMethod) { + } + handleSubAdded(subscription, repoMethod) { if (!(repoMethod && repoMethod.streamCallbacks && typeof repoMethod.streamCallbacks.subscriptionAddedHandler === "function")) { return; } - var sub = new ServerSubscription(this.protocol, repoMethod, subscription); + const sub = new ServerSubscription(this.protocol, repoMethod, subscription); repoMethod.streamCallbacks.subscriptionAddedHandler(sub); - }; - ServerStreaming.prototype.handleSubRemoved = function (subscription, repoMethod) { + } + handleSubRemoved(subscription, repoMethod) { if (!(repoMethod && repoMethod.streamCallbacks && typeof repoMethod.streamCallbacks.subscriptionRemovedHandler === "function")) { return; } - var sub = new ServerSubscription(this.protocol, repoMethod, subscription); + const sub = new ServerSubscription(this.protocol, repoMethod, subscription); repoMethod.streamCallbacks.subscriptionRemovedHandler(sub); - }; - return ServerStreaming; -}()); + } +}; -var ServerBranch = (function () { - function ServerBranch(key, protocol, repoMethod) { +class ServerBranch { + key; + protocol; + repoMethod; + constructor(key, protocol, repoMethod) { this.key = key; this.protocol = protocol; this.repoMethod = repoMethod; } - ServerBranch.prototype.subscriptions = function () { - var _this = this; - var subList = this.protocol.server.getSubscriptionList(this.repoMethod, this.key); - return subList.map(function (sub) { - return new ServerSubscription(_this.protocol, _this.repoMethod, sub); + subscriptions() { + const subList = this.protocol.server.getSubscriptionList(this.repoMethod, this.key); + return subList.map((sub) => { + return new ServerSubscription(this.protocol, this.repoMethod, sub); }); - }; - ServerBranch.prototype.close = function () { + } + close() { this.protocol.server.closeAllSubscriptions(this.repoMethod, this.key); - }; - ServerBranch.prototype.push = function (data) { + } + push(data) { this.protocol.server.pushData(this.repoMethod, data, [this.key]); - }; - return ServerBranch; -}()); + } +} -var ServerStream = (function () { - function ServerStream(_protocol, _repoMethod, _server) { +class ServerStream { + _protocol; + _repoMethod; + _server; + name; + constructor(_protocol, _repoMethod, _server) { this._protocol = _protocol; this._repoMethod = _repoMethod; this._server = _server; this.name = this._repoMethod.definition.name; } - ServerStream.prototype.branches = function (key) { - var _this = this; - var bList = this._protocol.server.getBranchList(this._repoMethod); + branches(key) { + const bList = this._protocol.server.getBranchList(this._repoMethod); if (key) { if (bList.indexOf(key) > -1) { return new ServerBranch(key, this._protocol, this._repoMethod); @@ -13808,44 +12534,38 @@ var ServerStream = (function () { return undefined; } else { - return bList.map(function (branchKey) { - return new ServerBranch(branchKey, _this._protocol, _this._repoMethod); + return bList.map((branchKey) => { + return new ServerBranch(branchKey, this._protocol, this._repoMethod); }); } - }; - ServerStream.prototype.branch = function (key) { + } + branch(key) { return this.branches(key); - }; - ServerStream.prototype.subscriptions = function () { - var _this = this; - var subList = this._protocol.server.getSubscriptionList(this._repoMethod); - return subList.map(function (sub) { - return new ServerSubscription(_this._protocol, _this._repoMethod, sub); + } + subscriptions() { + const subList = this._protocol.server.getSubscriptionList(this._repoMethod); + return subList.map((sub) => { + return new ServerSubscription(this._protocol, this._repoMethod, sub); }); - }; - Object.defineProperty(ServerStream.prototype, "definition", { - get: function () { - var _a; - var def2 = this._repoMethod.definition; - return { - accepts: def2.accepts, - description: def2.description, - displayName: def2.displayName, - name: def2.name, - objectTypes: def2.objectTypes, - returns: def2.returns, - supportsStreaming: def2.supportsStreaming, - flags: (_a = def2.flags) === null || _a === void 0 ? void 0 : _a.metadata, - }; - }, - enumerable: false, - configurable: true - }); - ServerStream.prototype.close = function () { + } + get definition() { + const def2 = this._repoMethod.definition; + return { + accepts: def2.accepts, + description: def2.description, + displayName: def2.displayName, + name: def2.name, + objectTypes: def2.objectTypes, + returns: def2.returns, + supportsStreaming: def2.supportsStreaming, + flags: def2.flags?.metadata, + }; + } + close() { this._protocol.server.closeAllSubscriptions(this._repoMethod); this._server.unregister(this._repoMethod.definition, true); - }; - ServerStream.prototype.push = function (data, branches) { + } + push(data, branches) { if (typeof branches !== "string" && !Array.isArray(branches) && branches !== undefined) { throw new Error("invalid branches should be string or string array"); } @@ -13853,303 +12573,242 @@ var ServerStream = (function () { throw new Error("Invalid arguments. Data must be an object."); } this._protocol.server.pushData(this._repoMethod, data, branches); - }; - ServerStream.prototype.updateRepoMethod = function (repoMethod) { + } + updateRepoMethod(repoMethod) { this._repoMethod = repoMethod; - }; - return ServerStream; -}()); + } +} -var Server = (function () { - function Server(protocol, serverRepository) { +class Server { + protocol; + serverRepository; + streaming; + invocations = 0; + currentlyUnregistering = {}; + constructor(protocol, serverRepository) { this.protocol = protocol; this.serverRepository = serverRepository; - this.invocations = 0; - this.currentlyUnregistering = {}; this.streaming = new ServerStreaming$1(protocol, this); this.protocol.server.onInvoked(this.onMethodInvoked.bind(this)); } - Server.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback, existingStream) { - var _this = this; - var promise = new Promise(function (resolve, reject) { + createStream(streamDef, callbacks, successCallback, errorCallback, existingStream) { + const promise = new Promise((resolve, reject) => { if (!streamDef) { reject("The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream."); return; } - var streamMethodDefinition; + let streamMethodDefinition; if (typeof streamDef === "string") { streamMethodDefinition = { name: "" + streamDef }; } else { - streamMethodDefinition = __assign({}, streamDef); + streamMethodDefinition = { ...streamDef }; } if (!streamMethodDefinition.name) { - return reject("The \u201Cname\u201D property is required for the \u201CstreamDefinition\u201D object and must be unique. Stream definition: ".concat(JSON.stringify(streamMethodDefinition))); + return reject(`The “name” property is required for the “streamDefinition” object and must be unique. Stream definition: ${JSON.stringify(streamMethodDefinition)}`); } - var nameAlreadyExists = _this.serverRepository.getList() - .some(function (serverMethod) { return serverMethod.definition.name === streamMethodDefinition.name; }); + const nameAlreadyExists = this.serverRepository.getList() + .some((serverMethod) => serverMethod.definition.name === streamMethodDefinition.name); if (nameAlreadyExists) { - return reject("A stream with the name \"".concat(streamMethodDefinition.name, "\" already exists! Please, provide a unique name for the stream.")); + return reject(`A stream with the name "${streamMethodDefinition.name}" already exists! Please, provide a unique name for the stream.`); } streamMethodDefinition.supportsStreaming = true; if (!callbacks) { callbacks = {}; } if (typeof callbacks.subscriptionRequestHandler !== "function") { - callbacks.subscriptionRequestHandler = function (request) { + callbacks.subscriptionRequestHandler = (request) => { request.accept(); }; } - var repoMethod = _this.serverRepository.add({ + const repoMethod = this.serverRepository.add({ definition: streamMethodDefinition, streamCallbacks: callbacks, protocolState: {}, }); - _this.protocol.server.createStream(repoMethod) - .then(function () { - var streamUserObject; + this.protocol.server.createStream(repoMethod) + .then(() => { + let streamUserObject; if (existingStream) { streamUserObject = existingStream; existingStream.updateRepoMethod(repoMethod); } else { - streamUserObject = new ServerStream(_this.protocol, repoMethod, _this); + streamUserObject = new ServerStream(this.protocol, repoMethod, this); } repoMethod.stream = streamUserObject; resolve(streamUserObject); }) - .catch(function (err) { + .catch((err) => { if (repoMethod.repoId) { - _this.serverRepository.remove(repoMethod.repoId); + this.serverRepository.remove(repoMethod.repoId); } reject(err); }); }); return promisify(promise, successCallback, errorCallback); - }; - Server.prototype.register = function (methodDefinition, callback) { - var _this = this; + } + register(methodDefinition, callback) { if (!methodDefinition) { return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property."); } if (typeof callback !== "function") { - return Promise.reject("The second parameter must be a callback function. Method: ".concat(typeof methodDefinition === "string" ? methodDefinition : methodDefinition.name)); - } - var wrappedCallbackFunction = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () { - var result, resultValue, e_1; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - _a.trys.push([0, 4, , 5]); - result = callback(context.args, context.instance); - if (!(result && typeof result.then === "function")) return [3, 2]; - return [4, result]; - case 1: - resultValue = _a.sent(); - resultCallback(undefined, resultValue); - return [3, 3]; - case 2: - resultCallback(undefined, result); - _a.label = 3; - case 3: return [3, 5]; - case 4: - e_1 = _a.sent(); - resultCallback(e_1 !== null && e_1 !== void 0 ? e_1 : "", e_1 !== null && e_1 !== void 0 ? e_1 : ""); - return [3, 5]; - case 5: return [2]; + return Promise.reject(`The second parameter must be a callback function. Method: ${typeof methodDefinition === "string" ? methodDefinition : methodDefinition.name}`); + } + const wrappedCallbackFunction = async (context, resultCallback) => { + try { + const result = callback(context.args, context.instance); + if (result && typeof result.then === "function") { + const resultValue = await result; + resultCallback(undefined, resultValue); } - }); - }); }; + else { + resultCallback(undefined, result); + } + } + catch (e) { + resultCallback(e ?? "", e ?? ""); + } + }; wrappedCallbackFunction.userCallback = callback; return this.registerCore(methodDefinition, wrappedCallbackFunction); - }; - Server.prototype.registerAsync = function (methodDefinition, callback) { - var _this = this; + } + registerAsync(methodDefinition, callback) { if (!methodDefinition) { return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property."); } if (typeof callback !== "function") { - return Promise.reject("The second parameter must be a callback function. Method: ".concat(typeof methodDefinition === "string" ? methodDefinition : methodDefinition.name)); - } - var wrappedCallback = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () { - var resultCalled_1, success, error, methodResult; - return __generator(this, function (_a) { - try { - resultCalled_1 = false; - success = function (result) { - if (!resultCalled_1) { - resultCallback(undefined, result); - } - resultCalled_1 = true; - }; - error = function (e) { - if (!resultCalled_1) { - if (!e) { - e = ""; - } - resultCallback(e, e); - } - resultCalled_1 = true; - }; - methodResult = callback(context.args, context.instance, success, error); - if (methodResult && typeof methodResult.then === "function") { - methodResult - .then(success) - .catch(error); - } - } - catch (e) { - resultCallback(e, undefined); - } - return [2]; - }); - }); }; - wrappedCallback.userCallbackAsync = callback; - return this.registerCore(methodDefinition, wrappedCallback); - }; - Server.prototype.unregister = function (methodFilter, forStream) { - if (forStream === void 0) { forStream = false; } - return __awaiter(this, void 0, void 0, function () { - var methodDefinition, methodToBeRemoved; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (methodFilter === undefined) { - return [2, Promise.reject("Please, provide either a unique string for a name or an object containing a “name” property.")]; - } - if (!(typeof methodFilter === "function")) return [3, 2]; - return [4, this.unregisterWithPredicate(methodFilter, forStream)]; - case 1: - _a.sent(); - return [2]; - case 2: - if (typeof methodFilter === "string") { - methodDefinition = { name: methodFilter }; - } - else { - methodDefinition = methodFilter; - } - if (methodDefinition.name === undefined) { - return [2, Promise.reject("Method name is required. Cannot find a method if the method name is undefined!")]; - } - methodToBeRemoved = this.serverRepository.getList().find(function (serverMethod) { - return serverMethod.definition.name === methodDefinition.name - && (serverMethod.definition.supportsStreaming || false) === forStream; - }); - if (!methodToBeRemoved) { - return [2, Promise.reject("Method with a name \"".concat(methodDefinition.name, "\" does not exist or is not registered by your application!"))]; - } - return [4, this.removeMethodsOrStreams([methodToBeRemoved])]; - case 3: - _a.sent(); - return [2]; - } - }); - }); - }; - Server.prototype.unregisterWithPredicate = function (filterPredicate, forStream) { - return __awaiter(this, void 0, void 0, function () { - var methodsOrStreamsToRemove; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - methodsOrStreamsToRemove = this.serverRepository.getList() - .filter(function (sm) { return filterPredicate(sm.definition); }) - .filter(function (serverMethod) { - return (serverMethod.definition.supportsStreaming || false) === forStream; - }); - if (!methodsOrStreamsToRemove || methodsOrStreamsToRemove.length === 0) { - return [2, Promise.reject("Could not find a ".concat(forStream ? "stream" : "method", " matching the specified condition!"))]; + return Promise.reject(`The second parameter must be a callback function. Method: ${typeof methodDefinition === "string" ? methodDefinition : methodDefinition.name}`); + } + const wrappedCallback = async (context, resultCallback) => { + try { + let resultCalled = false; + const success = (result) => { + if (!resultCalled) { + resultCallback(undefined, result); + } + resultCalled = true; + }; + const error = (e) => { + if (!resultCalled) { + if (!e) { + e = ""; } - return [4, this.removeMethodsOrStreams(methodsOrStreamsToRemove)]; - case 1: - _a.sent(); - return [2]; + resultCallback(e, e); + } + resultCalled = true; + }; + const methodResult = callback(context.args, context.instance, success, error); + if (methodResult && typeof methodResult.then === "function") { + methodResult + .then(success) + .catch(error); } - }); + } + catch (e) { + resultCallback(e, undefined); + } + }; + wrappedCallback.userCallbackAsync = callback; + return this.registerCore(methodDefinition, wrappedCallback); + } + async unregister(methodFilter, forStream = false) { + if (methodFilter === undefined) { + return Promise.reject("Please, provide either a unique string for a name or an object containing a “name” property."); + } + if (typeof methodFilter === "function") { + await this.unregisterWithPredicate(methodFilter, forStream); + return; + } + let methodDefinition; + if (typeof methodFilter === "string") { + methodDefinition = { name: methodFilter }; + } + else { + methodDefinition = methodFilter; + } + if (methodDefinition.name === undefined) { + return Promise.reject("Method name is required. Cannot find a method if the method name is undefined!"); + } + const methodToBeRemoved = this.serverRepository.getList().find((serverMethod) => { + return serverMethod.definition.name === methodDefinition.name + && (serverMethod.definition.supportsStreaming || false) === forStream; }); - }; - Server.prototype.removeMethodsOrStreams = function (methodsToRemove) { - var _this = this; - var methodUnregPromises = []; - methodsToRemove.forEach(function (method) { - var promise = _this.protocol.server.unregister(method) - .then(function () { + if (!methodToBeRemoved) { + return Promise.reject(`Method with a name "${methodDefinition.name}" does not exist or is not registered by your application!`); + } + await this.removeMethodsOrStreams([methodToBeRemoved]); + } + async unregisterWithPredicate(filterPredicate, forStream) { + const methodsOrStreamsToRemove = this.serverRepository.getList() + .filter((sm) => filterPredicate(sm.definition)) + .filter((serverMethod) => (serverMethod.definition.supportsStreaming || false) === forStream); + if (!methodsOrStreamsToRemove || methodsOrStreamsToRemove.length === 0) { + return Promise.reject(`Could not find a ${forStream ? "stream" : "method"} matching the specified condition!`); + } + await this.removeMethodsOrStreams(methodsOrStreamsToRemove); + } + removeMethodsOrStreams(methodsToRemove) { + const methodUnregPromises = []; + methodsToRemove.forEach((method) => { + const promise = this.protocol.server.unregister(method) + .then(() => { if (method.repoId) { - _this.serverRepository.remove(method.repoId); + this.serverRepository.remove(method.repoId); } }); methodUnregPromises.push(promise); - _this.addAsCurrentlyUnregistering(method.definition.name, promise); + this.addAsCurrentlyUnregistering(method.definition.name, promise); }); return Promise.all(methodUnregPromises); - }; - Server.prototype.addAsCurrentlyUnregistering = function (methodName, promise) { - return __awaiter(this, void 0, void 0, function () { - var timeout; - var _this = this; - return __generator(this, function (_a) { - timeout = new Promise(function (resolve) { return setTimeout(resolve, 5000); }); - this.currentlyUnregistering[methodName] = Promise.race([promise, timeout]).then(function () { - delete _this.currentlyUnregistering[methodName]; - }); - return [2]; - }); + } + async addAsCurrentlyUnregistering(methodName, promise) { + const timeout = new Promise((resolve) => setTimeout(resolve, 5000)); + this.currentlyUnregistering[methodName] = Promise.race([promise, timeout]).then(() => { + delete this.currentlyUnregistering[methodName]; }); - }; - Server.prototype.registerCore = function (method, theFunction) { - return __awaiter(this, void 0, void 0, function () { - var methodDefinition, unregisterInProgress, nameAlreadyExists, repoMethod; - var _this = this; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - if (typeof method === "string") { - methodDefinition = { name: "" + method }; - } - else { - methodDefinition = __assign({}, method); - } - if (!methodDefinition.name) { - return [2, Promise.reject("Please, provide a (unique) string value for the \u201Cname\u201D property in the \u201CmethodDefinition\u201D object: ".concat(JSON.stringify(method)))]; - } - unregisterInProgress = this.currentlyUnregistering[methodDefinition.name]; - if (!(typeof unregisterInProgress !== "undefined")) return [3, 2]; - return [4, unregisterInProgress]; - case 1: - _a.sent(); - _a.label = 2; - case 2: - nameAlreadyExists = this.serverRepository.getList() - .some(function (serverMethod) { return serverMethod.definition.name === methodDefinition.name; }); - if (nameAlreadyExists) { - return [2, Promise.reject("A method with the name \"".concat(methodDefinition.name, "\" already exists! Please, provide a unique name for the method."))]; - } - if (methodDefinition.supportsStreaming) { - return [2, Promise.reject("When you create methods with \u201Cglue.interop.register()\u201D or \u201Cglue.interop.registerAsync()\u201D the property \u201CsupportsStreaming\u201D cannot be \u201Ctrue\u201D. If you want \u201C".concat(methodDefinition.name, "\u201D to be a stream, please use the \u201Cglue.interop.createStream()\u201D method."))]; - } - repoMethod = this.serverRepository.add({ - definition: methodDefinition, - theFunction: theFunction, - protocolState: {}, - }); - return [2, this.protocol.server.register(repoMethod) - .catch(function (err) { - if (repoMethod === null || repoMethod === void 0 ? void 0 : repoMethod.repoId) { - _this.serverRepository.remove(repoMethod.repoId); - } - throw err; - })]; - } - }); + } + async registerCore(method, theFunction) { + let methodDefinition; + if (typeof method === "string") { + methodDefinition = { name: "" + method }; + } + else { + methodDefinition = { ...method }; + } + if (!methodDefinition.name) { + return Promise.reject(`Please, provide a (unique) string value for the “name” property in the “methodDefinition” object: ${JSON.stringify(method)}`); + } + const unregisterInProgress = this.currentlyUnregistering[methodDefinition.name]; + if (typeof unregisterInProgress !== "undefined") { + await unregisterInProgress; + } + const nameAlreadyExists = this.serverRepository.getList() + .some((serverMethod) => serverMethod.definition.name === methodDefinition.name); + if (nameAlreadyExists) { + return Promise.reject(`A method with the name "${methodDefinition.name}" already exists! Please, provide a unique name for the method.`); + } + if (methodDefinition.supportsStreaming) { + return Promise.reject(`When you create methods with “glue.interop.register()” or “glue.interop.registerAsync()” the property “supportsStreaming” cannot be “true”. If you want “${methodDefinition.name}” to be a stream, please use the “glue.interop.createStream()” method.`); + } + const repoMethod = this.serverRepository.add({ + definition: methodDefinition, + theFunction, + protocolState: {}, }); - }; - Server.prototype.onMethodInvoked = function (methodToExecute, invocationId, invocationArgs) { - var _this = this; + return this.protocol.server.register(repoMethod) + .catch((err) => { + if (repoMethod?.repoId) { + this.serverRepository.remove(repoMethod.repoId); + } + throw err; + }); + } + onMethodInvoked(methodToExecute, invocationId, invocationArgs) { if (!methodToExecute || !methodToExecute.theFunction) { return; } - methodToExecute.theFunction(invocationArgs, function (err, result) { + methodToExecute.theFunction(invocationArgs, (err, result) => { if (err !== undefined && err !== null) { if (err.message && typeof err.message === "string") { err = err.message; @@ -14159,7 +12818,7 @@ var Server = (function () { err = JSON.stringify(err); } catch (unStrException) { - err = "un-stringifyable error in onMethodInvoked! Top level prop names: ".concat(Object.keys(err)); + err = `un-stringifyable error in onMethodInvoked! Top level prop names: ${Object.keys(err)}`; } } } @@ -14169,77 +12828,78 @@ var Server = (function () { else if (typeof result !== "object" || Array.isArray(result)) { result = { _value: result }; } - _this.protocol.server.methodInvocationResult(methodToExecute, invocationId, err, result); + this.protocol.server.methodInvocationResult(methodToExecute, invocationId, err, result); }); - }; - return Server; -}()); + } +} -var InstanceWrapper = (function () { - function InstanceWrapper(API, instance, connection) { - var _this = this; - this.wrapped = {}; +class InstanceWrapper { + wrapped = {}; + constructor(API, instance, connection) { this.wrapped.getMethods = function () { return API.methodsForInstance(this); }; this.wrapped.getStreams = function () { - return API.methodsForInstance(this).filter(function (m) { return m.supportsStreaming; }); + return API.methodsForInstance(this).filter((m) => m.supportsStreaming); }; if (instance) { this.refreshWrappedObject(instance); } if (connection) { - connection.loggedIn(function () { - _this.refresh(connection); + connection.loggedIn(() => { + this.refresh(connection); }); this.refresh(connection); } } - InstanceWrapper.prototype.unwrap = function () { + unwrap() { return this.wrapped; - }; - InstanceWrapper.prototype.refresh = function (connection) { + } + refresh(connection) { if (!connection) { return; } - var resolvedIdentity = connection === null || connection === void 0 ? void 0 : connection.resolvedIdentity; - var instance = Object.assign({}, resolvedIdentity !== null && resolvedIdentity !== void 0 ? resolvedIdentity : {}, { peerId: connection === null || connection === void 0 ? void 0 : connection.peerId }); + const resolvedIdentity = connection?.resolvedIdentity; + const instance = Object.assign({}, resolvedIdentity ?? {}, { peerId: connection?.peerId }); this.refreshWrappedObject(instance); - }; - InstanceWrapper.prototype.refreshWrappedObject = function (resolvedIdentity) { - var _this = this; - var _a, _b, _c, _d; - Object.keys(resolvedIdentity).forEach(function (key) { - _this.wrapped[key] = resolvedIdentity[key]; + } + refreshWrappedObject(resolvedIdentity) { + Object.keys(resolvedIdentity).forEach((key) => { + this.wrapped[key] = resolvedIdentity[key]; }); this.wrapped.user = resolvedIdentity.user; this.wrapped.instance = resolvedIdentity.instance; - this.wrapped.application = (_a = resolvedIdentity.application) !== null && _a !== void 0 ? _a : shortid(); + this.wrapped.application = resolvedIdentity.application ?? nanoid(10); this.wrapped.applicationName = resolvedIdentity.applicationName; - this.wrapped.pid = (_c = (_b = resolvedIdentity.pid) !== null && _b !== void 0 ? _b : resolvedIdentity.process) !== null && _c !== void 0 ? _c : Math.floor(Math.random() * 10000000000); + this.wrapped.pid = resolvedIdentity.pid ?? resolvedIdentity.process ?? Math.floor(Math.random() * 10000000000); this.wrapped.machine = resolvedIdentity.machine; this.wrapped.environment = resolvedIdentity.environment; this.wrapped.region = resolvedIdentity.region; this.wrapped.windowId = resolvedIdentity.windowId; - this.wrapped.isLocal = (_d = resolvedIdentity.isLocal) !== null && _d !== void 0 ? _d : true; + this.wrapped.isLocal = resolvedIdentity.isLocal ?? true; this.wrapped.api = resolvedIdentity.api; this.wrapped.service = resolvedIdentity.service; this.wrapped.peerId = resolvedIdentity.peerId; - }; - return InstanceWrapper; -}()); + } +} -var hideMethodSystemFlags = function (method) { - return __assign(__assign({}, method), { flags: method.flags.metadata || {} }); +const hideMethodSystemFlags = (method) => { + return { + ...method, + flags: method.flags.metadata || {} + }; }; -var ClientRepository = (function () { - function ClientRepository(logger, API) { +class ClientRepository { + logger; + API; + servers = {}; + myServer; + methodsCount = {}; + callbacks = CallbackRegistryFactory(); + constructor(logger, API) { this.logger = logger; this.API = API; - this.servers = {}; - this.methodsCount = {}; - this.callbacks = lib$1(); - var peerId = this.API.instance.peerId; + const peerId = this.API.instance.peerId; this.myServer = { id: peerId, methods: {}, @@ -14248,52 +12908,50 @@ var ClientRepository = (function () { }; this.servers[peerId] = this.myServer; } - ClientRepository.prototype.addServer = function (info, serverId) { - this.logger.debug("adding server ".concat(serverId)); - var current = this.servers[serverId]; + addServer(info, serverId) { + this.logger.debug(`adding server ${serverId}`); + const current = this.servers[serverId]; if (current) { return current.id; } - var wrapper = new InstanceWrapper(this.API, info); - var serverEntry = { + const wrapper = new InstanceWrapper(this.API, info); + const serverEntry = { id: serverId, methods: {}, instance: wrapper.unwrap(), - wrapper: wrapper, + wrapper, }; this.servers[serverId] = serverEntry; this.callbacks.execute("onServerAdded", serverEntry.instance); return serverId; - }; - ClientRepository.prototype.removeServerById = function (id, reason) { - var _this = this; - var server = this.servers[id]; + } + removeServerById(id, reason) { + const server = this.servers[id]; if (!server) { - this.logger.warn("not aware of server ".concat(id, ", my state ").concat(JSON.stringify(Object.keys(this.servers)))); + this.logger.warn(`not aware of server ${id}, my state ${JSON.stringify(Object.keys(this.servers))}`); return; } else { - this.logger.debug("removing server ".concat(id)); + this.logger.debug(`removing server ${id}`); } - Object.keys(server.methods).forEach(function (methodId) { - _this.removeServerMethod(id, methodId); + Object.keys(server.methods).forEach((methodId) => { + this.removeServerMethod(id, methodId); }); delete this.servers[id]; this.callbacks.execute("onServerRemoved", server.instance, reason); - }; - ClientRepository.prototype.addServerMethod = function (serverId, method) { - var _a; - var server = this.servers[serverId]; + } + addServerMethod(serverId, method) { + const server = this.servers[serverId]; if (!server) { throw new Error("server does not exists"); } if (server.methods[method.id]) { return; } - var identifier = this.createMethodIdentifier(method); - var that = this; - var methodDefinition = { - identifier: identifier, + const identifier = this.createMethodIdentifier(method); + const that = this; + const methodDefinition = { + identifier, gatewayId: method.id, name: method.name, displayName: method.display_name, @@ -14303,8 +12961,8 @@ var ClientRepository = (function () { accepts: method.input_signature, returns: method.result_signature, supportsStreaming: typeof method.flags !== "undefined" ? method.flags.streaming : false, - flags: (_a = method.flags) !== null && _a !== void 0 ? _a : {}, - getServers: function () { + flags: method.flags ?? {}, + getServers: () => { return that.getServersByMethod(identifier); } }; @@ -14312,7 +12970,7 @@ var ClientRepository = (function () { methodDefinition.display_name = methodDefinition.displayName; methodDefinition.version = methodDefinition.version; server.methods[method.id] = methodDefinition; - var clientMethodDefinition = hideMethodSystemFlags(methodDefinition); + const clientMethodDefinition = hideMethodSystemFlags(methodDefinition); if (!this.methodsCount[identifier]) { this.methodsCount[identifier] = 0; this.callbacks.execute("onMethodAdded", clientMethodDefinition); @@ -14320,189 +12978,186 @@ var ClientRepository = (function () { this.methodsCount[identifier] = this.methodsCount[identifier] + 1; this.callbacks.execute("onServerMethodAdded", server.instance, clientMethodDefinition); return methodDefinition; - }; - ClientRepository.prototype.removeServerMethod = function (serverId, methodId) { - var server = this.servers[serverId]; + } + removeServerMethod(serverId, methodId) { + const server = this.servers[serverId]; if (!server) { throw new Error("server does not exists"); } - var method = server.methods[methodId]; + const method = server.methods[methodId]; delete server.methods[methodId]; - var clientMethodDefinition = hideMethodSystemFlags(method); + const clientMethodDefinition = hideMethodSystemFlags(method); this.methodsCount[method.identifier] = this.methodsCount[method.identifier] - 1; if (this.methodsCount[method.identifier] === 0) { this.callbacks.execute("onMethodRemoved", clientMethodDefinition); } this.callbacks.execute("onServerMethodRemoved", server.instance, clientMethodDefinition); - }; - ClientRepository.prototype.getMethods = function () { + } + getMethods() { return this.extractMethodsFromServers(Object.values(this.servers)).map(hideMethodSystemFlags); - }; - ClientRepository.prototype.getServers = function () { + } + getServers() { return Object.values(this.servers).map(this.hideServerMethodSystemFlags); - }; - ClientRepository.prototype.onServerAdded = function (callback) { - var unsubscribeFunc = this.callbacks.add("onServerAdded", callback); - var serversWithMethodsToReplay = this.getServers().map(function (s) { return s.instance; }); + } + onServerAdded(callback) { + const unsubscribeFunc = this.callbacks.add("onServerAdded", callback); + const serversWithMethodsToReplay = this.getServers().map((s) => s.instance); return this.returnUnsubWithDelayedReplay(unsubscribeFunc, serversWithMethodsToReplay, callback); - }; - ClientRepository.prototype.onMethodAdded = function (callback) { - var unsubscribeFunc = this.callbacks.add("onMethodAdded", callback); - var methodsToReplay = this.getMethods(); + } + onMethodAdded(callback) { + const unsubscribeFunc = this.callbacks.add("onMethodAdded", callback); + const methodsToReplay = this.getMethods(); return this.returnUnsubWithDelayedReplay(unsubscribeFunc, methodsToReplay, callback); - }; - ClientRepository.prototype.onServerMethodAdded = function (callback) { - var unsubscribeFunc = this.callbacks.add("onServerMethodAdded", callback); - var unsubCalled = false; - var servers = this.getServers(); - setTimeout(function () { - servers.forEach(function (server) { - var methods = server.methods; - Object.keys(methods).forEach(function (methodId) { + } + onServerMethodAdded(callback) { + const unsubscribeFunc = this.callbacks.add("onServerMethodAdded", callback); + let unsubCalled = false; + const servers = this.getServers(); + setTimeout(() => { + servers.forEach((server) => { + const methods = server.methods; + Object.keys(methods).forEach((methodId) => { if (!unsubCalled) { callback(server.instance, methods[methodId]); } }); }); }, 0); - return function () { + return () => { unsubCalled = true; unsubscribeFunc(); }; - }; - ClientRepository.prototype.onMethodRemoved = function (callback) { - var unsubscribeFunc = this.callbacks.add("onMethodRemoved", callback); + } + onMethodRemoved(callback) { + const unsubscribeFunc = this.callbacks.add("onMethodRemoved", callback); return unsubscribeFunc; - }; - ClientRepository.prototype.onServerRemoved = function (callback) { - var unsubscribeFunc = this.callbacks.add("onServerRemoved", callback); + } + onServerRemoved(callback) { + const unsubscribeFunc = this.callbacks.add("onServerRemoved", callback); return unsubscribeFunc; - }; - ClientRepository.prototype.onServerMethodRemoved = function (callback) { - var unsubscribeFunc = this.callbacks.add("onServerMethodRemoved", callback); + } + onServerMethodRemoved(callback) { + const unsubscribeFunc = this.callbacks.add("onServerMethodRemoved", callback); return unsubscribeFunc; - }; - ClientRepository.prototype.getServerById = function (id) { + } + getServerById(id) { return this.hideServerMethodSystemFlags(this.servers[id]); - }; - ClientRepository.prototype.reset = function () { - var _a; - var _this = this; - Object.keys(this.servers).forEach(function (key) { - _this.removeServerById(key, "reset"); + } + reset() { + Object.keys(this.servers).forEach((key) => { + this.removeServerById(key, "reset"); }); - this.servers = (_a = {}, - _a[this.myServer.id] = this.myServer, - _a); + this.servers = { + [this.myServer.id]: this.myServer + }; this.methodsCount = {}; - }; - ClientRepository.prototype.createMethodIdentifier = function (methodInfo) { - var _a, _b; - var accepts = (_a = methodInfo.input_signature) !== null && _a !== void 0 ? _a : ""; - var returns = (_b = methodInfo.result_signature) !== null && _b !== void 0 ? _b : ""; + } + createMethodIdentifier(methodInfo) { + const accepts = methodInfo.input_signature ?? ""; + const returns = methodInfo.result_signature ?? ""; return (methodInfo.name + accepts + returns).toLowerCase(); - }; - ClientRepository.prototype.getServersByMethod = function (identifier) { - var allServers = []; - Object.values(this.servers).forEach(function (server) { - Object.values(server.methods).forEach(function (method) { + } + getServersByMethod(identifier) { + const allServers = []; + Object.values(this.servers).forEach((server) => { + Object.values(server.methods).forEach((method) => { if (method.identifier === identifier) { allServers.push(server.instance); } }); }); return allServers; - }; - ClientRepository.prototype.returnUnsubWithDelayedReplay = function (unsubscribeFunc, collectionToReplay, callback) { - var unsubCalled = false; - setTimeout(function () { - collectionToReplay.forEach(function (item) { + } + returnUnsubWithDelayedReplay(unsubscribeFunc, collectionToReplay, callback) { + let unsubCalled = false; + setTimeout(() => { + collectionToReplay.forEach((item) => { if (!unsubCalled) { callback(item); } }); }, 0); - return function () { + return () => { unsubCalled = true; unsubscribeFunc(); }; - }; - ClientRepository.prototype.hideServerMethodSystemFlags = function (server) { - var clientMethods = {}; - Object.entries(server.methods).forEach(function (_a) { - var name = _a[0], method = _a[1]; + } + hideServerMethodSystemFlags(server) { + const clientMethods = {}; + Object.entries(server.methods).forEach(([name, method]) => { clientMethods[name] = hideMethodSystemFlags(method); }); - return __assign(__assign({}, server), { methods: clientMethods }); - }; - ClientRepository.prototype.extractMethodsFromServers = function (servers) { - var methods = Object.values(servers).reduce(function (clientMethods, server) { - return __spreadArray(__spreadArray([], clientMethods, true), Object.values(server.methods), true); + return { + ...server, + methods: clientMethods + }; + } + extractMethodsFromServers(servers) { + const methods = Object.values(servers).reduce((clientMethods, server) => { + return [...clientMethods, ...Object.values(server.methods)]; }, []); return methods; - }; - return ClientRepository; -}()); - -var ServerRepository = (function () { - function ServerRepository() { - this.nextId = 0; - this.methods = []; } - ServerRepository.prototype.add = function (method) { +} + +class ServerRepository { + nextId = 0; + methods = []; + add(method) { method.repoId = String(this.nextId); this.nextId += 1; this.methods.push(method); return method; - }; - ServerRepository.prototype.remove = function (repoId) { + } + remove(repoId) { if (typeof repoId !== "string") { return new TypeError("Expecting a string"); } - this.methods = this.methods.filter(function (m) { + this.methods = this.methods.filter((m) => { return m.repoId !== repoId; }); - }; - ServerRepository.prototype.getById = function (id) { + } + getById(id) { if (typeof id !== "string") { return undefined; } - return this.methods.find(function (m) { + return this.methods.find((m) => { return m.repoId === id; }); - }; - ServerRepository.prototype.getList = function () { - return this.methods.map(function (m) { return m; }); - }; - ServerRepository.prototype.length = function () { + } + getList() { + return this.methods.map((m) => m); + } + length() { return this.methods.length; - }; - ServerRepository.prototype.reset = function () { + } + reset() { this.methods = []; - }; - return ServerRepository; -}()); + } +} -var SUBSCRIPTION_REQUEST = "onSubscriptionRequest"; -var SUBSCRIPTION_ADDED = "onSubscriptionAdded"; -var SUBSCRIPTION_REMOVED = "onSubscriptionRemoved"; -var ServerStreaming = (function () { - function ServerStreaming(session, repository, serverRepository) { - var _this = this; +const SUBSCRIPTION_REQUEST = "onSubscriptionRequest"; +const SUBSCRIPTION_ADDED = "onSubscriptionAdded"; +const SUBSCRIPTION_REMOVED = "onSubscriptionRemoved"; +class ServerStreaming { + session; + repository; + serverRepository; + ERR_URI_SUBSCRIPTION_FAILED = "com.tick42.agm.errors.subscription.failure"; + callbacks = CallbackRegistryFactory(); + nextStreamId = 0; + constructor(session, repository, serverRepository) { this.session = session; this.repository = repository; this.serverRepository = serverRepository; - this.ERR_URI_SUBSCRIPTION_FAILED = "com.tick42.agm.errors.subscription.failure"; - this.callbacks = lib$1(); - this.nextStreamId = 0; - session.on("add-interest", function (msg) { - _this.handleAddInterest(msg); + session.on("add-interest", (msg) => { + this.handleAddInterest(msg); }); - session.on("remove-interest", function (msg) { - _this.handleRemoveInterest(msg); + session.on("remove-interest", (msg) => { + this.handleRemoveInterest(msg); }); } - ServerStreaming.prototype.acceptRequestOnBranch = function (requestContext, streamingMethod, branch) { + acceptRequestOnBranch(requestContext, streamingMethod, branch) { if (typeof branch !== "string") { branch = ""; } @@ -14512,14 +13167,14 @@ var ServerStreaming = (function () { if (!Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) { throw new TypeError("The streaming method is missing its branches."); } - var streamId = this.getStreamId(streamingMethod, branch); - var key = requestContext.msg.subscription_id; - var subscription = { + const streamId = this.getStreamId(streamingMethod, branch); + const key = requestContext.msg.subscription_id; + const subscription = { id: key, arguments: requestContext.arguments, instance: requestContext.instance, branchKey: branch, - streamId: streamId, + streamId, subscribeMsg: requestContext.msg, }; streamingMethod.protocolState.subscriptionsMap[key] = subscription; @@ -14529,15 +13184,14 @@ var ServerStreaming = (function () { stream_id: streamId, }); this.callbacks.execute(SUBSCRIPTION_ADDED, subscription, streamingMethod); - }; - ServerStreaming.prototype.rejectRequest = function (requestContext, streamingMethod, reason) { + } + rejectRequest(requestContext, streamingMethod, reason) { if (typeof reason !== "string") { reason = ""; } this.sendSubscriptionFailed("Subscription rejected by user. " + reason, requestContext.msg.subscription_id); - }; - ServerStreaming.prototype.pushData = function (streamingMethod, data, branches) { - var _this = this; + } + pushData(streamingMethod, data, branches) { if (typeof streamingMethod !== "object" || !Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) { return; } @@ -14550,40 +13204,40 @@ var ServerStreaming = (function () { else if (!Array.isArray(branches) || branches.length <= 0) { branches = []; } - var streamIdList = streamingMethod.protocolState.branchKeyToStreamIdMap - .filter(function (br) { + const streamIdList = streamingMethod.protocolState.branchKeyToStreamIdMap + .filter((br) => { if (!branches || branches.length === 0) { return true; } return branches.indexOf(br.key) >= 0; - }).map(function (br) { + }).map((br) => { return br.streamId; }); - streamIdList.forEach(function (streamId) { - var publishMessage = { + streamIdList.forEach((streamId) => { + const publishMessage = { type: "publish", stream_id: streamId, - data: data, + data, }; - _this.session.sendFireAndForget(publishMessage); + this.session.sendFireAndForget(publishMessage); }); - }; - ServerStreaming.prototype.pushDataToSingle = function (method, subscription, data) { + } + pushDataToSingle(method, subscription, data) { if (typeof data !== "object") { throw new Error("Invalid arguments. Data must be an object."); } - var postMessage = { + const postMessage = { type: "post", subscription_id: subscription.id, - data: data, + data, }; this.session.sendFireAndForget(postMessage); - }; - ServerStreaming.prototype.closeSingleSubscription = function (streamingMethod, subscription) { + } + closeSingleSubscription(streamingMethod, subscription) { if (streamingMethod.protocolState.subscriptionsMap) { delete streamingMethod.protocolState.subscriptionsMap[subscription.id]; } - var dropSubscriptionMessage = { + const dropSubscriptionMessage = { type: "drop-subscription", subscription_id: subscription.id, reason: "Server dropping a single subscription", @@ -14591,73 +13245,72 @@ var ServerStreaming = (function () { this.session.sendFireAndForget(dropSubscriptionMessage); subscription.instance; this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod); - }; - ServerStreaming.prototype.closeMultipleSubscriptions = function (streamingMethod, branchKey) { - var _this = this; + } + closeMultipleSubscriptions(streamingMethod, branchKey) { if (typeof streamingMethod !== "object" || typeof streamingMethod.protocolState.subscriptionsMap !== "object") { return; } if (!streamingMethod.protocolState.subscriptionsMap) { return; } - var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap; - var subscriptionsToClose = Object.keys(subscriptionsMap) - .map(function (key) { + const subscriptionsMap = streamingMethod.protocolState.subscriptionsMap; + let subscriptionsToClose = Object.keys(subscriptionsMap) + .map((key) => { return subscriptionsMap[key]; }); if (typeof branchKey === "string") { - subscriptionsToClose = subscriptionsToClose.filter(function (sub) { + subscriptionsToClose = subscriptionsToClose.filter((sub) => { return sub.branchKey === branchKey; }); } - subscriptionsToClose.forEach(function (subscription) { + subscriptionsToClose.forEach((subscription) => { delete subscriptionsMap[subscription.id]; - var drop = { + const drop = { type: "drop-subscription", subscription_id: subscription.id, reason: "Server dropping all subscriptions on stream_id: " + subscription.streamId, }; - _this.session.sendFireAndForget(drop); + this.session.sendFireAndForget(drop); }); - }; - ServerStreaming.prototype.getSubscriptionList = function (streamingMethod, branchKey) { + } + getSubscriptionList(streamingMethod, branchKey) { if (typeof streamingMethod !== "object") { return []; } - var subscriptions = []; + let subscriptions = []; if (!streamingMethod.protocolState.subscriptionsMap) { return []; } - var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap; - var allSubscriptions = Object.keys(subscriptionsMap) - .map(function (key) { + const subscriptionsMap = streamingMethod.protocolState.subscriptionsMap; + const allSubscriptions = Object.keys(subscriptionsMap) + .map((key) => { return subscriptionsMap[key]; }); if (typeof branchKey !== "string") { subscriptions = allSubscriptions; } else { - subscriptions = allSubscriptions.filter(function (sub) { + subscriptions = allSubscriptions.filter((sub) => { return sub.branchKey === branchKey; }); } return subscriptions; - }; - ServerStreaming.prototype.getBranchList = function (streamingMethod) { + } + getBranchList(streamingMethod) { if (typeof streamingMethod !== "object") { return []; } if (!streamingMethod.protocolState.subscriptionsMap) { return []; } - var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap; - var allSubscriptions = Object.keys(subscriptionsMap) - .map(function (key) { + const subscriptionsMap = streamingMethod.protocolState.subscriptionsMap; + const allSubscriptions = Object.keys(subscriptionsMap) + .map((key) => { return subscriptionsMap[key]; }); - var result = []; - allSubscriptions.forEach(function (sub) { - var branch = ""; + const result = []; + allSubscriptions.forEach((sub) => { + let branch = ""; if (typeof sub === "object" && typeof sub.branchKey === "string") { branch = sub.branchKey; } @@ -14666,18 +13319,18 @@ var ServerStreaming = (function () { } }); return result; - }; - ServerStreaming.prototype.onSubAdded = function (callback) { + } + onSubAdded(callback) { this.onSubscriptionLifetimeEvent(SUBSCRIPTION_ADDED, callback); - }; - ServerStreaming.prototype.onSubRequest = function (callback) { + } + onSubRequest(callback) { this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REQUEST, callback); - }; - ServerStreaming.prototype.onSubRemoved = function (callback) { + } + onSubRemoved(callback) { this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REMOVED, callback); - }; - ServerStreaming.prototype.handleRemoveInterest = function (msg) { - var streamingMethod = this.serverRepository.getById(msg.method_id); + } + handleRemoveInterest(msg) { + const streamingMethod = this.serverRepository.getById(msg.method_id); if (typeof msg.subscription_id !== "string" || typeof streamingMethod !== "object") { return; @@ -14688,27 +13341,27 @@ var ServerStreaming = (function () { if (typeof streamingMethod.protocolState.subscriptionsMap[msg.subscription_id] !== "object") { return; } - var subscription = streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]; + const subscription = streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]; delete streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]; this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod); - }; - ServerStreaming.prototype.onSubscriptionLifetimeEvent = function (eventName, handlerFunc) { + } + onSubscriptionLifetimeEvent(eventName, handlerFunc) { this.callbacks.add(eventName, handlerFunc); - }; - ServerStreaming.prototype.getNextStreamId = function () { + } + getNextStreamId() { return this.nextStreamId++ + ""; - }; - ServerStreaming.prototype.handleAddInterest = function (msg) { - var caller = this.repository.getServerById(msg.caller_id); - var instance = caller.instance; - var requestContext = { - msg: msg, + } + handleAddInterest(msg) { + const caller = this.repository.getServerById(msg.caller_id); + const instance = caller.instance; + const requestContext = { + msg, arguments: msg.arguments_kv || {}, - instance: instance, + instance, }; - var streamingMethod = this.serverRepository.getById(msg.method_id); + const streamingMethod = this.serverRepository.getById(msg.method_id); if (streamingMethod === undefined) { - var errorMsg = "No method with id " + msg.method_id + " on this server."; + const errorMsg = "No method with id " + msg.method_id + " on this server."; this.sendSubscriptionFailed(errorMsg, msg.subscription_id); return; } @@ -14718,58 +13371,59 @@ var ServerStreaming = (function () { return; } this.callbacks.execute(SUBSCRIPTION_REQUEST, requestContext, streamingMethod); - }; - ServerStreaming.prototype.sendSubscriptionFailed = function (reason, subscriptionId) { - var errorMessage = { + } + sendSubscriptionFailed(reason, subscriptionId) { + const errorMessage = { type: "error", reason_uri: this.ERR_URI_SUBSCRIPTION_FAILED, - reason: reason, + reason, request_id: subscriptionId, }; this.session.sendFireAndForget(errorMessage); - }; - ServerStreaming.prototype.getStreamId = function (streamingMethod, branchKey) { + } + getStreamId(streamingMethod, branchKey) { if (typeof branchKey !== "string") { branchKey = ""; } if (!streamingMethod.protocolState.branchKeyToStreamIdMap) { - throw new Error("streaming ".concat(streamingMethod.definition.name, " method without protocol state")); + throw new Error(`streaming ${streamingMethod.definition.name} method without protocol state`); } - var needleBranch = streamingMethod.protocolState.branchKeyToStreamIdMap.filter(function (branch) { + const needleBranch = streamingMethod.protocolState.branchKeyToStreamIdMap.filter((branch) => { return branch.key === branchKey; })[0]; - var streamId = (needleBranch ? needleBranch.streamId : undefined); + let streamId = (needleBranch ? needleBranch.streamId : undefined); if (typeof streamId !== "string" || streamId === "") { streamId = this.getNextStreamId(); - streamingMethod.protocolState.branchKeyToStreamIdMap.push({ key: branchKey, streamId: streamId }); + streamingMethod.protocolState.branchKeyToStreamIdMap.push({ key: branchKey, streamId }); } return streamId; - }; - return ServerStreaming; -}()); + } +} -var ServerProtocol = (function () { - function ServerProtocol(session, clientRepository, serverRepository, logger) { - var _this = this; +class ServerProtocol { + session; + clientRepository; + serverRepository; + logger; + callbacks = CallbackRegistryFactory(); + streaming; + constructor(session, clientRepository, serverRepository, logger) { this.session = session; this.clientRepository = clientRepository; this.serverRepository = serverRepository; this.logger = logger; - this.callbacks = lib$1(); this.streaming = new ServerStreaming(session, clientRepository, serverRepository); - this.session.on("invoke", function (msg) { return _this.handleInvokeMessage(msg); }); + this.session.on("invoke", (msg) => this.handleInvokeMessage(msg)); } - ServerProtocol.prototype.createStream = function (repoMethod) { + createStream(repoMethod) { repoMethod.protocolState.subscriptionsMap = {}; repoMethod.protocolState.branchKeyToStreamIdMap = []; return this.register(repoMethod, true); - }; - ServerProtocol.prototype.register = function (repoMethod, isStreaming) { - var _this = this; - var _a; - var methodDef = repoMethod.definition; - var flags = Object.assign({}, { metadata: (_a = methodDef.flags) !== null && _a !== void 0 ? _a : {} }, { streaming: isStreaming || false }); - var registerMsg = { + } + register(repoMethod, isStreaming) { + const methodDef = repoMethod.definition; + const flags = Object.assign({}, { metadata: methodDef.flags ?? {} }, { streaming: isStreaming || false }); + const registerMsg = { type: "register", methods: [{ id: repoMethod.repoId, @@ -14777,7 +13431,7 @@ var ServerProtocol = (function () { display_name: methodDef.displayName, description: methodDef.description, version: methodDef.version, - flags: flags, + flags, object_types: methodDef.objectTypes || methodDef.object_types, input_signature: methodDef.accepts, result_signature: methodDef.returns, @@ -14785,19 +13439,19 @@ var ServerProtocol = (function () { }], }; return this.session.send(registerMsg, { methodId: repoMethod.repoId }) - .then(function () { - _this.logger.debug("registered method " + repoMethod.definition.name + " with id " + repoMethod.repoId); + .then(() => { + this.logger.debug("registered method " + repoMethod.definition.name + " with id " + repoMethod.repoId); }) - .catch(function (msg) { - _this.logger.warn("failed to register method ".concat(repoMethod.definition.name, " with id ").concat(repoMethod.repoId, " - ").concat(JSON.stringify(msg))); + .catch((msg) => { + this.logger.warn(`failed to register method ${repoMethod.definition.name} with id ${repoMethod.repoId} - ${JSON.stringify(msg)}`); throw msg; }); - }; - ServerProtocol.prototype.onInvoked = function (callback) { + } + onInvoked(callback) { this.callbacks.add("onInvoked", callback); - }; - ServerProtocol.prototype.methodInvocationResult = function (method, invocationId, err, result) { - var msg; + } + methodInvocationResult(method, invocationId, err, result) { + let msg; if (err || err === "") { msg = { type: "error", @@ -14813,344 +13467,175 @@ var ServerProtocol = (function () { type: "yield", invocation_id: invocationId, peer_id: this.session.peerId, - result: result, + result, request_id: undefined, }; } this.session.sendFireAndForget(msg); - }; - ServerProtocol.prototype.unregister = function (method) { - return __awaiter(this, void 0, void 0, function () { - var msg; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - msg = { - type: "unregister", - methods: [method.repoId], - }; - return [4, this.session.send(msg)]; - case 1: - _a.sent(); - return [2]; - } - }); - }); - }; - ServerProtocol.prototype.getBranchList = function (method) { + } + async unregister(method) { + const msg = { + type: "unregister", + methods: [method.repoId], + }; + await this.session.send(msg); + } + getBranchList(method) { return this.streaming.getBranchList(method); - }; - ServerProtocol.prototype.getSubscriptionList = function (method, branchKey) { + } + getSubscriptionList(method, branchKey) { return this.streaming.getSubscriptionList(method, branchKey); - }; - ServerProtocol.prototype.closeAllSubscriptions = function (method, branchKey) { + } + closeAllSubscriptions(method, branchKey) { this.streaming.closeMultipleSubscriptions(method, branchKey); - }; - ServerProtocol.prototype.pushData = function (method, data, branches) { + } + pushData(method, data, branches) { this.streaming.pushData(method, data, branches); - }; - ServerProtocol.prototype.pushDataToSingle = function (method, subscription, data) { + } + pushDataToSingle(method, subscription, data) { this.streaming.pushDataToSingle(method, subscription, data); - }; - ServerProtocol.prototype.closeSingleSubscription = function (method, subscription) { + } + closeSingleSubscription(method, subscription) { this.streaming.closeSingleSubscription(method, subscription); - }; - ServerProtocol.prototype.acceptRequestOnBranch = function (requestContext, method, branch) { + } + acceptRequestOnBranch(requestContext, method, branch) { this.streaming.acceptRequestOnBranch(requestContext, method, branch); - }; - ServerProtocol.prototype.rejectRequest = function (requestContext, method, reason) { + } + rejectRequest(requestContext, method, reason) { this.streaming.rejectRequest(requestContext, method, reason); - }; - ServerProtocol.prototype.onSubRequest = function (callback) { + } + onSubRequest(callback) { this.streaming.onSubRequest(callback); - }; - ServerProtocol.prototype.onSubAdded = function (callback) { + } + onSubAdded(callback) { this.streaming.onSubAdded(callback); - }; - ServerProtocol.prototype.onSubRemoved = function (callback) { + } + onSubRemoved(callback) { this.streaming.onSubRemoved(callback); - }; - ServerProtocol.prototype.handleInvokeMessage = function (msg) { - var invocationId = msg.invocation_id; - var callerId = msg.caller_id; - var methodId = msg.method_id; - var args = msg.arguments_kv; - var methodList = this.serverRepository.getList(); - var method = methodList.filter(function (m) { + } + handleInvokeMessage(msg) { + const invocationId = msg.invocation_id; + const callerId = msg.caller_id; + const methodId = msg.method_id; + const args = msg.arguments_kv; + const methodList = this.serverRepository.getList(); + const method = methodList.filter((m) => { return m.repoId === methodId; })[0]; if (method === undefined) { return; } - var client = this.clientRepository.getServerById(callerId).instance; - var invocationArgs = { args: args, instance: client }; + const client = this.clientRepository.getServerById(callerId).instance; + const invocationArgs = { args, instance: client }; this.callbacks.execute("onInvoked", method, invocationId, invocationArgs); - }; - return ServerProtocol; -}()); + } +} -var UserSubscription = (function () { - function UserSubscription(repository, subscriptionData) { +class UserSubscription { + repository; + subscriptionData; + get requestArguments() { + return this.subscriptionData.params.arguments || {}; + } + get servers() { + return this.subscriptionData.trackedServers + .filter((pair) => pair.subscriptionId) + .map((pair) => this.repository.getServerById(pair.serverId).instance); + } + get serverInstance() { + return this.servers[0]; + } + get stream() { + return this.subscriptionData.method; + } + constructor(repository, subscriptionData) { this.repository = repository; this.subscriptionData = subscriptionData; } - Object.defineProperty(UserSubscription.prototype, "requestArguments", { - get: function () { - return this.subscriptionData.params.arguments || {}; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(UserSubscription.prototype, "servers", { - get: function () { - var _this = this; - return this.subscriptionData.trackedServers - .filter(function (pair) { return pair.subscriptionId; }) - .map(function (pair) { return _this.repository.getServerById(pair.serverId).instance; }); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(UserSubscription.prototype, "serverInstance", { - get: function () { - return this.servers[0]; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(UserSubscription.prototype, "stream", { - get: function () { - return this.subscriptionData.method; - }, - enumerable: false, - configurable: true - }); - UserSubscription.prototype.onData = function (dataCallback) { + onData(dataCallback) { if (typeof dataCallback !== "function") { throw new TypeError("The data callback must be a function."); } this.subscriptionData.handlers.onData.push(dataCallback); if (this.subscriptionData.handlers.onData.length === 1 && this.subscriptionData.queued.data.length > 0) { - this.subscriptionData.queued.data.forEach(function (dataItem) { + this.subscriptionData.queued.data.forEach((dataItem) => { dataCallback(dataItem); }); } - }; - UserSubscription.prototype.onClosed = function (closedCallback) { + } + onClosed(closedCallback) { if (typeof closedCallback !== "function") { throw new TypeError("The callback must be a function."); } this.subscriptionData.handlers.onClosed.push(closedCallback); - }; - UserSubscription.prototype.onFailed = function (callback) { - }; - UserSubscription.prototype.onConnected = function (callback) { + } + onFailed(callback) { + } + onConnected(callback) { if (typeof callback !== "function") { throw new TypeError("The callback must be a function."); } this.subscriptionData.handlers.onConnected.push(callback); - }; - UserSubscription.prototype.close = function () { + } + close() { this.subscriptionData.close(); - }; - UserSubscription.prototype.setNewSubscription = function (newSub) { + } + setNewSubscription(newSub) { this.subscriptionData = newSub; - }; - return UserSubscription; -}()); + } +} -var TimedCache = (function () { - function TimedCache(config) { +class TimedCache { + config; + cache = []; + timeoutIds = []; + constructor(config) { this.config = config; - this.cache = []; - this.timeoutIds = []; } - TimedCache.prototype.add = function (element) { - var _this = this; - var id = shortid(); - this.cache.push({ id: id, element: element }); - var timeoutId = setTimeout(function () { - var elementIdx = _this.cache.findIndex(function (entry) { return entry.id === id; }); + add(element) { + const id = nanoid(10); + this.cache.push({ id, element }); + const timeoutId = setTimeout(() => { + const elementIdx = this.cache.findIndex((entry) => entry.id === id); if (elementIdx < 0) { return; } - _this.cache.splice(elementIdx, 1); + this.cache.splice(elementIdx, 1); }, this.config.ELEMENT_TTL_MS); this.timeoutIds.push(timeoutId); - }; - TimedCache.prototype.flush = function () { - var elements = this.cache.map(function (entry) { return entry.element; }); - this.timeoutIds.forEach(function (id) { return clearInterval(id); }); + } + flush() { + const elements = this.cache.map((entry) => entry.element); + this.timeoutIds.forEach((id) => clearInterval(id)); this.cache = []; this.timeoutIds = []; return elements; - }; - return TimedCache; -}()); + } +} -var STATUS_AWAITING_ACCEPT = "awaitingAccept"; -var STATUS_SUBSCRIBED = "subscribed"; -var ERR_MSG_SUB_FAILED = "Subscription failed."; -var ERR_MSG_SUB_REJECTED = "Subscription rejected."; -var ON_CLOSE_MSG_SERVER_INIT = "ServerInitiated"; -var ON_CLOSE_MSG_CLIENT_INIT = "ClientInitiated"; -var ClientStreaming = (function () { - function ClientStreaming(session, repository, logger) { - var _this = this; +const STATUS_AWAITING_ACCEPT = "awaitingAccept"; +const STATUS_SUBSCRIBED = "subscribed"; +const ERR_MSG_SUB_FAILED = "Subscription failed."; +const ERR_MSG_SUB_REJECTED = "Subscription rejected."; +const ON_CLOSE_MSG_SERVER_INIT = "ServerInitiated"; +const ON_CLOSE_MSG_CLIENT_INIT = "ClientInitiated"; +class ClientStreaming { + session; + repository; + logger; + subscriptionsList = {}; + timedCache = new TimedCache({ ELEMENT_TTL_MS: 10000 }); + subscriptionIdToLocalKeyMap = {}; + nextSubLocalKey = 0; + constructor(session, repository, logger) { this.session = session; this.repository = repository; this.logger = logger; - this.subscriptionsList = {}; - this.timedCache = new TimedCache({ ELEMENT_TTL_MS: 10000 }); - this.subscriptionIdToLocalKeyMap = {}; - this.nextSubLocalKey = 0; - this.handleErrorSubscribing = function (errorResponse) { - var tag = errorResponse._tag; - var subLocalKey = tag.subLocalKey; - var pendingSub = _this.subscriptionsList[subLocalKey]; - if (typeof pendingSub !== "object") { - return; - } - pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) { - return server.serverId !== tag.serverId; - }); - if (pendingSub.trackedServers.length <= 0) { - clearTimeout(pendingSub.timeoutId); - if (pendingSub.status === STATUS_AWAITING_ACCEPT) { - var reason = (typeof errorResponse.reason === "string" && errorResponse.reason !== "") ? - ' Publisher said "' + errorResponse.reason + '".' : - " No reason given."; - var callArgs = typeof pendingSub.params.arguments === "object" ? - JSON.stringify(pendingSub.params.arguments) : - "{}"; - pendingSub.error({ - message: ERR_MSG_SUB_REJECTED + reason + " Called with:" + callArgs, - called_with: pendingSub.params.arguments, - method: pendingSub.method, - }); - } - else if (pendingSub.status === STATUS_SUBSCRIBED) { - _this.callOnClosedHandlers(pendingSub); - } - delete _this.subscriptionsList[subLocalKey]; - } - }; - this.handleSubscribed = function (msg) { - var subLocalKey = msg._tag.subLocalKey; - var pendingSub = _this.subscriptionsList[subLocalKey]; - if (typeof pendingSub !== "object") { - return; - } - var serverId = msg._tag.serverId; - var acceptingServer = pendingSub.trackedServers - .filter(function (server) { - return server.serverId === serverId; - })[0]; - if (typeof acceptingServer !== "object") { - return; - } - acceptingServer.subscriptionId = msg.subscription_id; - _this.subscriptionIdToLocalKeyMap[msg.subscription_id] = subLocalKey; - var isFirstResponse = (pendingSub.status === STATUS_AWAITING_ACCEPT); - pendingSub.status = STATUS_SUBSCRIBED; - if (isFirstResponse) { - var reconnect = false; - var sub = pendingSub.subscription; - if (sub) { - sub.setNewSubscription(pendingSub); - pendingSub.success(sub); - reconnect = true; - } - else { - sub = new UserSubscription(_this.repository, pendingSub); - pendingSub.subscription = sub; - pendingSub.success(sub); - } - for (var _i = 0, _a = pendingSub.handlers.onConnected; _i < _a.length; _i++) { - var handler = _a[_i]; - try { - handler(sub.serverInstance, reconnect); - } - catch (e) { - } - } - } - }; - this.handleEventData = function (msg) { - var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id]; - if (typeof subLocalKey === "undefined") { - return; - } - var subscription = _this.subscriptionsList[subLocalKey]; - if (typeof subscription !== "object") { - return; - } - var trackedServersFound = subscription.trackedServers.filter(function (server) { - return server.subscriptionId === msg.subscription_id; - }); - if (trackedServersFound.length !== 1) { - return; - } - var isPrivateData = msg.oob; - var sendingServerId = trackedServersFound[0].serverId; - var receivedStreamData = function () { - return { - data: msg.data, - server: _this.repository.getServerById(sendingServerId).instance, - requestArguments: subscription.params.arguments, - message: undefined, - private: isPrivateData, - }; - }; - var onDataHandlers = subscription.handlers.onData; - var queuedData = subscription.queued.data; - if (onDataHandlers.length > 0) { - onDataHandlers.forEach(function (callback) { - if (typeof callback === "function") { - callback(receivedStreamData()); - } - }); - } - else { - queuedData.push(receivedStreamData()); - } - }; - this.handleSubscriptionCancelled = function (msg) { - var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id]; - if (typeof subLocalKey === "undefined") { - return; - } - var subscription = _this.subscriptionsList[subLocalKey]; - if (typeof subscription !== "object") { - return; - } - var expectedNewLength = subscription.trackedServers.length - 1; - subscription.trackedServers = subscription.trackedServers.filter(function (server) { - if (server.subscriptionId === msg.subscription_id) { - subscription.queued.closers.push(server.serverId); - return false; - } - else { - return true; - } - }); - if (subscription.trackedServers.length !== expectedNewLength) { - return; - } - if (subscription.trackedServers.length <= 0) { - _this.timedCache.add(subscription); - clearTimeout(subscription.timeoutId); - _this.callOnClosedHandlers(subscription); - delete _this.subscriptionsList[subLocalKey]; - } - delete _this.subscriptionIdToLocalKeyMap[msg.subscription_id]; - }; session.on("subscribed", this.handleSubscribed); session.on("event", this.handleEventData); session.on("subscription-cancelled", this.handleSubscriptionCancelled); } - ClientStreaming.prototype.subscribe = function (streamingMethod, params, targetServers, success, error, existingSub) { - var _this = this; + subscribe(streamingMethod, params, targetServers, success, error, existingSub) { if (targetServers.length === 0) { error({ method: streamingMethod, @@ -15159,8 +13644,8 @@ var ClientStreaming = (function () { }); return; } - var subLocalKey = this.getNextSubscriptionLocalKey(); - var pendingSub = this.registerSubscription(subLocalKey, streamingMethod, params, success, error, params.methodResponseTimeout || 10000, existingSub); + const subLocalKey = this.getNextSubscriptionLocalKey(); + const pendingSub = this.registerSubscription(subLocalKey, streamingMethod, params, success, error, params.methodResponseTimeout || 10000, existingSub); if (typeof pendingSub !== "object") { error({ method: streamingMethod, @@ -15169,64 +13654,63 @@ var ClientStreaming = (function () { }); return; } - targetServers.forEach(function (target) { - var serverId = target.server.id; - var method = target.methods.find(function (m) { return m.name === streamingMethod.name; }); + targetServers.forEach((target) => { + const serverId = target.server.id; + const method = target.methods.find((m) => m.name === streamingMethod.name); if (!method) { - _this.logger.error("can not find method ".concat(streamingMethod.name, " for target ").concat(target.server.id)); + this.logger.error(`can not find method ${streamingMethod.name} for target ${target.server.id}`); return; } pendingSub.trackedServers.push({ - serverId: serverId, + serverId, subscriptionId: undefined, }); - var msg = { + const msg = { type: "subscribe", server_id: serverId, method_id: method.gatewayId, arguments_kv: params.arguments, }; - _this.session.send(msg, { serverId: serverId, subLocalKey: subLocalKey }) - .then(function (m) { return _this.handleSubscribed(m); }) - .catch(function (err) { return _this.handleErrorSubscribing(err); }); + this.session.send(msg, { serverId, subLocalKey }) + .then((m) => this.handleSubscribed(m)) + .catch((err) => this.handleErrorSubscribing(err)); }); - }; - ClientStreaming.prototype.drainSubscriptions = function () { - var existing = Object.values(this.subscriptionsList); + } + drainSubscriptions() { + const existing = Object.values(this.subscriptionsList); this.subscriptionsList = {}; this.subscriptionIdToLocalKeyMap = {}; return existing; - }; - ClientStreaming.prototype.drainSubscriptionsCache = function () { + } + drainSubscriptionsCache() { return this.timedCache.flush(); - }; - ClientStreaming.prototype.getNextSubscriptionLocalKey = function () { - var current = this.nextSubLocalKey; + } + getNextSubscriptionLocalKey() { + const current = this.nextSubLocalKey; this.nextSubLocalKey += 1; return current; - }; - ClientStreaming.prototype.registerSubscription = function (subLocalKey, method, params, success, error, timeout, existingSub) { - var _this = this; - var subsInfo = { + } + registerSubscription(subLocalKey, method, params, success, error, timeout, existingSub) { + const subsInfo = { localKey: subLocalKey, status: STATUS_AWAITING_ACCEPT, - method: method, - params: params, - success: success, - error: error, + method, + params, + success, + error, trackedServers: [], handlers: { - onData: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onData) || [], - onClosed: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onClosed) || [], - onConnected: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onConnected) || [], + onData: existingSub?.handlers.onData || [], + onClosed: existingSub?.handlers.onClosed || [], + onConnected: existingSub?.handlers.onConnected || [], }, queued: { data: [], closers: [], }, timeoutId: undefined, - close: function () { return _this.closeSubscription(subLocalKey); }, - subscription: existingSub === null || existingSub === void 0 ? void 0 : existingSub.subscription + close: () => this.closeSubscription(subLocalKey), + subscription: existingSub?.subscription }; if (!existingSub) { if (params.onData) { @@ -15240,40 +13724,180 @@ var ClientStreaming = (function () { } } this.subscriptionsList[subLocalKey] = subsInfo; - subsInfo.timeoutId = setTimeout(function () { - if (_this.subscriptionsList[subLocalKey] === undefined) { + subsInfo.timeoutId = setTimeout(() => { + if (this.subscriptionsList[subLocalKey] === undefined) { return; } - var pendingSub = _this.subscriptionsList[subLocalKey]; + const pendingSub = this.subscriptionsList[subLocalKey]; if (pendingSub.status === STATUS_AWAITING_ACCEPT) { error({ - method: method, + method, called_with: params.arguments, message: ERR_MSG_SUB_FAILED + " Subscription attempt timed out after " + timeout + " ms.", }); - delete _this.subscriptionsList[subLocalKey]; + delete this.subscriptionsList[subLocalKey]; } else if (pendingSub.status === STATUS_SUBSCRIBED && pendingSub.trackedServers.length > 0) { - pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) { + pendingSub.trackedServers = pendingSub.trackedServers.filter((server) => { return (typeof server.subscriptionId !== "undefined"); }); delete pendingSub.timeoutId; if (pendingSub.trackedServers.length <= 0) { - _this.callOnClosedHandlers(pendingSub); - delete _this.subscriptionsList[subLocalKey]; + this.callOnClosedHandlers(pendingSub); + delete this.subscriptionsList[subLocalKey]; } } }, timeout); return subsInfo; + } + handleErrorSubscribing = (errorResponse) => { + const tag = errorResponse._tag; + const subLocalKey = tag.subLocalKey; + const pendingSub = this.subscriptionsList[subLocalKey]; + if (typeof pendingSub !== "object") { + return; + } + pendingSub.trackedServers = pendingSub.trackedServers.filter((server) => { + return server.serverId !== tag.serverId; + }); + if (pendingSub.trackedServers.length <= 0) { + clearTimeout(pendingSub.timeoutId); + if (pendingSub.status === STATUS_AWAITING_ACCEPT) { + const reason = (typeof errorResponse.reason === "string" && errorResponse.reason !== "") ? + ' Publisher said "' + errorResponse.reason + '".' : + " No reason given."; + const callArgs = typeof pendingSub.params.arguments === "object" ? + JSON.stringify(pendingSub.params.arguments) : + "{}"; + pendingSub.error({ + message: ERR_MSG_SUB_REJECTED + reason + " Called with:" + callArgs, + called_with: pendingSub.params.arguments, + method: pendingSub.method, + }); + } + else if (pendingSub.status === STATUS_SUBSCRIBED) { + this.callOnClosedHandlers(pendingSub); + } + delete this.subscriptionsList[subLocalKey]; + } + }; + handleSubscribed = (msg) => { + const subLocalKey = msg._tag.subLocalKey; + const pendingSub = this.subscriptionsList[subLocalKey]; + if (typeof pendingSub !== "object") { + return; + } + const serverId = msg._tag.serverId; + const acceptingServer = pendingSub.trackedServers + .filter((server) => { + return server.serverId === serverId; + })[0]; + if (typeof acceptingServer !== "object") { + return; + } + acceptingServer.subscriptionId = msg.subscription_id; + this.subscriptionIdToLocalKeyMap[msg.subscription_id] = subLocalKey; + const isFirstResponse = (pendingSub.status === STATUS_AWAITING_ACCEPT); + pendingSub.status = STATUS_SUBSCRIBED; + if (isFirstResponse) { + let reconnect = false; + let sub = pendingSub.subscription; + if (sub) { + sub.setNewSubscription(pendingSub); + pendingSub.success(sub); + reconnect = true; + } + else { + sub = new UserSubscription(this.repository, pendingSub); + pendingSub.subscription = sub; + pendingSub.success(sub); + } + for (const handler of pendingSub.handlers.onConnected) { + try { + handler(sub.serverInstance, reconnect); + } + catch (e) { + } + } + } + }; + handleEventData = (msg) => { + const subLocalKey = this.subscriptionIdToLocalKeyMap[msg.subscription_id]; + if (typeof subLocalKey === "undefined") { + return; + } + const subscription = this.subscriptionsList[subLocalKey]; + if (typeof subscription !== "object") { + return; + } + const trackedServersFound = subscription.trackedServers.filter((server) => { + return server.subscriptionId === msg.subscription_id; + }); + if (trackedServersFound.length !== 1) { + return; + } + const isPrivateData = msg.oob; + const sendingServerId = trackedServersFound[0].serverId; + const receivedStreamData = () => { + return { + data: msg.data, + server: this.repository.getServerById(sendingServerId).instance, + requestArguments: subscription.params.arguments, + message: undefined, + private: isPrivateData, + }; + }; + const onDataHandlers = subscription.handlers.onData; + const queuedData = subscription.queued.data; + if (onDataHandlers.length > 0) { + onDataHandlers.forEach((callback) => { + if (typeof callback === "function") { + callback(receivedStreamData()); + } + }); + } + else { + queuedData.push(receivedStreamData()); + } + }; + handleSubscriptionCancelled = (msg) => { + const subLocalKey = this.subscriptionIdToLocalKeyMap[msg.subscription_id]; + if (typeof subLocalKey === "undefined") { + return; + } + const subscription = this.subscriptionsList[subLocalKey]; + if (typeof subscription !== "object") { + return; + } + const expectedNewLength = subscription.trackedServers.length - 1; + subscription.trackedServers = subscription.trackedServers.filter((server) => { + if (server.subscriptionId === msg.subscription_id) { + subscription.queued.closers.push(server.serverId); + return false; + } + else { + return true; + } + }); + if (subscription.trackedServers.length !== expectedNewLength) { + return; + } + if (subscription.trackedServers.length <= 0) { + this.timedCache.add(subscription); + clearTimeout(subscription.timeoutId); + this.callOnClosedHandlers(subscription); + delete this.subscriptionsList[subLocalKey]; + } + delete this.subscriptionIdToLocalKeyMap[msg.subscription_id]; }; - ClientStreaming.prototype.callOnClosedHandlers = function (subscription, reason) { - var closersCount = subscription.queued.closers.length; - var closingServerId = (closersCount > 0) ? subscription.queued.closers[closersCount - 1] : null; - var closingServer; + callOnClosedHandlers(subscription, reason) { + const closersCount = subscription.queued.closers.length; + const closingServerId = (closersCount > 0) ? subscription.queued.closers[closersCount - 1] : null; + let closingServer; if (closingServerId !== undefined && typeof closingServerId === "string") { closingServer = this.repository.getServerById(closingServerId).instance; } - subscription.handlers.onClosed.forEach(function (callback) { + subscription.handlers.onClosed.forEach((callback) => { if (typeof callback !== "function") { return; } @@ -15284,74 +13908,74 @@ var ClientStreaming = (function () { stream: subscription.method, }); }); - }; - ClientStreaming.prototype.closeSubscription = function (subLocalKey) { - var _this = this; - var subscription = this.subscriptionsList[subLocalKey]; + } + closeSubscription(subLocalKey) { + const subscription = this.subscriptionsList[subLocalKey]; if (typeof subscription !== "object") { return; } - subscription.trackedServers.forEach(function (server) { + subscription.trackedServers.forEach((server) => { if (typeof server.subscriptionId === "undefined") { return; } subscription.queued.closers.push(server.serverId); - _this.session.sendFireAndForget({ + this.session.sendFireAndForget({ type: "unsubscribe", subscription_id: server.subscriptionId, reason_uri: "", reason: ON_CLOSE_MSG_CLIENT_INIT, }); - delete _this.subscriptionIdToLocalKeyMap[server.subscriptionId]; + delete this.subscriptionIdToLocalKeyMap[server.subscriptionId]; }); subscription.trackedServers = []; this.callOnClosedHandlers(subscription, ON_CLOSE_MSG_CLIENT_INIT); delete this.subscriptionsList[subLocalKey]; - }; - return ClientStreaming; -}()); + } +} -var ClientProtocol = (function () { - function ClientProtocol(session, repository, logger) { - var _this = this; +class ClientProtocol { + session; + repository; + logger; + streaming; + constructor(session, repository, logger) { this.session = session; this.repository = repository; this.logger = logger; - session.on("peer-added", function (msg) { return _this.handlePeerAdded(msg); }); - session.on("peer-removed", function (msg) { return _this.handlePeerRemoved(msg); }); - session.on("methods-added", function (msg) { return _this.handleMethodsAddedMessage(msg); }); - session.on("methods-removed", function (msg) { return _this.handleMethodsRemovedMessage(msg); }); + session.on("peer-added", (msg) => this.handlePeerAdded(msg)); + session.on("peer-removed", (msg) => this.handlePeerRemoved(msg)); + session.on("methods-added", (msg) => this.handleMethodsAddedMessage(msg)); + session.on("methods-removed", (msg) => this.handleMethodsRemovedMessage(msg)); this.streaming = new ClientStreaming(session, repository, logger); } - ClientProtocol.prototype.subscribe = function (stream, options, targetServers, success, error, existingSub) { + subscribe(stream, options, targetServers, success, error, existingSub) { this.streaming.subscribe(stream, options, targetServers, success, error, existingSub); - }; - ClientProtocol.prototype.invoke = function (id, method, args, target) { - var _this = this; - var serverId = target.id; - var methodId = method.gatewayId; - var msg = { + } + invoke(id, method, args, target) { + const serverId = target.id; + const methodId = method.gatewayId; + const msg = { type: "call", server_id: serverId, method_id: methodId, arguments_kv: args, }; - return this.session.send(msg, { invocationId: id, serverId: serverId }) - .then(function (m) { return _this.handleResultMessage(m); }) - .catch(function (err) { return _this.handleInvocationError(err); }); - }; - ClientProtocol.prototype.drainSubscriptions = function () { + return this.session.send(msg, { invocationId: id, serverId }) + .then((m) => this.handleResultMessage(m)) + .catch((err) => this.handleInvocationError(err)); + } + drainSubscriptions() { return this.streaming.drainSubscriptions(); - }; - ClientProtocol.prototype.drainSubscriptionsCache = function () { + } + drainSubscriptionsCache() { return this.streaming.drainSubscriptionsCache(); - }; - ClientProtocol.prototype.handlePeerAdded = function (msg) { - var newPeerId = msg.new_peer_id; - var remoteId = msg.identity; - var isLocal = msg.meta ? msg.meta.local : true; - var pid = Number(remoteId.process); - var serverInfo = { + } + handlePeerAdded(msg) { + const newPeerId = msg.new_peer_id; + const remoteId = msg.identity; + const isLocal = msg.meta ? msg.meta.local : true; + const pid = Number(remoteId.process); + const serverInfo = { machine: remoteId.machine, pid: isNaN(pid) ? remoteId.process : pid, instance: remoteId.instance, @@ -15363,63 +13987,61 @@ var ClientProtocol = (function () { windowId: remoteId.windowId, peerId: newPeerId, api: remoteId.api, - isLocal: isLocal + isLocal }; this.repository.addServer(serverInfo, newPeerId); - }; - ClientProtocol.prototype.handlePeerRemoved = function (msg) { - var removedPeerId = msg.removed_id; - var reason = msg.reason; + } + handlePeerRemoved(msg) { + const removedPeerId = msg.removed_id; + const reason = msg.reason; this.repository.removeServerById(removedPeerId, reason); - }; - ClientProtocol.prototype.handleMethodsAddedMessage = function (msg) { - var _this = this; - var serverId = msg.server_id; - var methods = msg.methods; - methods.forEach(function (method) { - _this.repository.addServerMethod(serverId, method); + } + handleMethodsAddedMessage(msg) { + const serverId = msg.server_id; + const methods = msg.methods; + methods.forEach((method) => { + this.repository.addServerMethod(serverId, method); }); - }; - ClientProtocol.prototype.handleMethodsRemovedMessage = function (msg) { - var _this = this; - var serverId = msg.server_id; - var methodIdList = msg.methods; - var server = this.repository.getServerById(serverId); - var serverMethodKeys = Object.keys(server.methods); - serverMethodKeys.forEach(function (methodKey) { - var method = server.methods[methodKey]; + } + handleMethodsRemovedMessage(msg) { + const serverId = msg.server_id; + const methodIdList = msg.methods; + const server = this.repository.getServerById(serverId); + const serverMethodKeys = Object.keys(server.methods); + serverMethodKeys.forEach((methodKey) => { + const method = server.methods[methodKey]; if (methodIdList.indexOf(method.gatewayId) > -1) { - _this.repository.removeServerMethod(serverId, methodKey); + this.repository.removeServerMethod(serverId, methodKey); } }); - }; - ClientProtocol.prototype.handleResultMessage = function (msg) { - var invocationId = msg._tag.invocationId; - var result = msg.result; - var serverId = msg._tag.serverId; - var server = this.repository.getServerById(serverId); + } + handleResultMessage(msg) { + const invocationId = msg._tag.invocationId; + const result = msg.result; + const serverId = msg._tag.serverId; + const server = this.repository.getServerById(serverId); return { - invocationId: invocationId, - result: result, + invocationId, + result, instance: server.instance, status: InvokeStatus.Success, message: "" }; - }; - ClientProtocol.prototype.handleInvocationError = function (msg) { - this.logger.debug("handle invocation error ".concat(JSON.stringify(msg))); + } + handleInvocationError(msg) { + this.logger.debug(`handle invocation error ${JSON.stringify(msg)}`); if ("_tag" in msg) { - var invocationId = msg._tag.invocationId; - var serverId = msg._tag.serverId; - var server = this.repository.getServerById(serverId); - var message = msg.reason; - var context_1 = msg.context; + const invocationId = msg._tag.invocationId; + const serverId = msg._tag.serverId; + const server = this.repository.getServerById(serverId); + const message = msg.reason; + const context = msg.context; return { - invocationId: invocationId, - result: context_1, + invocationId, + result: context, instance: server.instance, status: InvokeStatus.Error, - message: message + message }; } else { @@ -15430,108 +14052,99 @@ var ClientProtocol = (function () { error: msg }; } - }; - return ClientProtocol; -}()); + } +} function gW3ProtocolFactory (instance, connection, clientRepository, serverRepository, libConfig, interop) { - var logger = libConfig.logger.subLogger("gw3-protocol"); - var resolveReadyPromise; - var readyPromise = new Promise(function (resolve) { + const logger = libConfig.logger.subLogger("gw3-protocol"); + let resolveReadyPromise; + const readyPromise = new Promise((resolve) => { resolveReadyPromise = resolve; }); - var session = connection.domain("agm", ["subscribed"]); - var server = new ServerProtocol(session, clientRepository, serverRepository, logger.subLogger("server")); - var client = new ClientProtocol(session, clientRepository, logger.subLogger("client")); - function handleReconnect() { - return __awaiter(this, void 0, void 0, function () { - var reconnectionPromises, existingSubscriptions, _loop_1, _i, existingSubscriptions_1, sub, registeredMethods, _loop_2, _a, registeredMethods_1, method; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - logger.info("reconnected - will replay registered methods and subscriptions"); - client.drainSubscriptionsCache().forEach(function (sub) { - var methodInfo = sub.method; - var params = Object.assign({}, sub.params); - logger.info("trying to soft-re-subscribe to method ".concat(methodInfo.name, ", with params: ").concat(JSON.stringify(params))); - interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info("soft-subscribing to method ".concat(methodInfo.name, " DONE")); }).catch(function (error) { return logger.warn("subscribing to method ".concat(methodInfo.name, " failed: ").concat(JSON.stringify(error), "}")); }); - }); - reconnectionPromises = []; - existingSubscriptions = client.drainSubscriptions(); - _loop_1 = function (sub) { - var methodInfo = sub.method; - var params = Object.assign({}, sub.params); - logger.info("trying to re-subscribe to method ".concat(methodInfo.name, ", with params: ").concat(JSON.stringify(params))); - reconnectionPromises.push(interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info("subscribing to method ".concat(methodInfo.name, " DONE")); })); - }; - for (_i = 0, existingSubscriptions_1 = existingSubscriptions; _i < existingSubscriptions_1.length; _i++) { - sub = existingSubscriptions_1[_i]; - _loop_1(sub); - } - registeredMethods = serverRepository.getList(); - serverRepository.reset(); - _loop_2 = function (method) { - var def = method.definition; - logger.info("re-publishing method ".concat(def.name)); - if (method.stream) { - reconnectionPromises.push(interop.server.createStream(def, method.streamCallbacks, undefined, undefined, method.stream).then(function () { return logger.info("subscribing to method ".concat(def.name, " DONE")); })); - } - else if (method.theFunction && method.theFunction.userCallback) { - reconnectionPromises.push(interop.register(def, method.theFunction.userCallback).then(function () { return logger.info("subscribing to method ".concat(def.name, " DONE")); })); - } - else if (method.theFunction && method.theFunction.userCallbackAsync) { - reconnectionPromises.push(interop.registerAsync(def, method.theFunction.userCallbackAsync).then(function () { return logger.info("subscribing to method ".concat(def.name, " DONE")); })); - } - logger.info("re-publishing method ".concat(def.name, " DONE")); - }; - for (_a = 0, registeredMethods_1 = registeredMethods; _a < registeredMethods_1.length; _a++) { - method = registeredMethods_1[_a]; - _loop_2(method); - } - return [4, Promise.all(reconnectionPromises)]; - case 1: - _b.sent(); - logger.info("Interop is re-announced"); - return [2]; - } - }); - }); + const session = connection.domain("agm", ["subscribed"]); + const server = new ServerProtocol(session, clientRepository, serverRepository, logger.subLogger("server")); + const client = new ClientProtocol(session, clientRepository, logger.subLogger("client")); + async function handleReconnect() { + logger.info("reconnected - will replay registered methods and subscriptions"); + client.drainSubscriptionsCache().forEach((sub) => { + const methodInfo = sub.method; + const params = Object.assign({}, sub.params); + logger.info(`trying to soft-re-subscribe to method ${methodInfo.name}, with params: ${JSON.stringify(params)}`); + interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(() => logger.info(`soft-subscribing to method ${methodInfo.name} DONE`)).catch((error) => logger.warn(`subscribing to method ${methodInfo.name} failed: ${JSON.stringify(error)}}`)); + }); + const reconnectionPromises = []; + const existingSubscriptions = client.drainSubscriptions(); + for (const sub of existingSubscriptions) { + const methodInfo = sub.method; + const params = Object.assign({}, sub.params); + logger.info(`trying to re-subscribe to method ${methodInfo.name}, with params: ${JSON.stringify(params)}`); + reconnectionPromises.push(interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(() => logger.info(`subscribing to method ${methodInfo.name} DONE`))); + } + const registeredMethods = serverRepository.getList(); + serverRepository.reset(); + for (const method of registeredMethods) { + const def = method.definition; + if (method.stream) { + reconnectionPromises.push(interop.server.createStream(def, method.streamCallbacks, undefined, undefined, method.stream) + .then(() => logger.info(`subscribing to method ${def.name} DONE`)) + .catch(() => logger.warn(`subscribing to method ${def.name} FAILED`))); + } + else if (method?.theFunction?.userCallback) { + reconnectionPromises.push(interop.register(def, method.theFunction.userCallback) + .then(() => logger.info(`registering method ${def.name} DONE`)) + .catch(() => logger.warn(`registering method ${def.name} FAILED`))); + } + else if (method?.theFunction?.userCallbackAsync) { + reconnectionPromises.push(interop.registerAsync(def, method.theFunction.userCallbackAsync) + .then(() => logger.info(`registering method ${def.name} DONE`)) + .catch(() => logger.warn(`registering method ${def.name} FAILED`))); + } + } + await Promise.all(reconnectionPromises); + logger.info("Interop is re-announced"); } function handleInitialJoin() { if (resolveReadyPromise) { resolveReadyPromise({ - client: client, - server: server, + client, + server, }); resolveReadyPromise = undefined; } } - session.onJoined(function (reconnect) { + session.onJoined((reconnect) => { clientRepository.addServer(instance, connection.peerId); if (reconnect) { - handleReconnect().then(function () { return connection.setLibReAnnounced({ name: "interop" }); }).catch(function (error) { return logger.warn("Error while re-announcing interop: ".concat(JSON.stringify(error))); }); + handleReconnect().then(() => connection.setLibReAnnounced({ name: "interop" })).catch((error) => logger.warn(`Error while re-announcing interop: ${JSON.stringify(error)}`)); } else { handleInitialJoin(); } }); - session.onLeft(function () { + session.onLeft(() => { clientRepository.reset(); }); session.join(); return readyPromise; } -var Interop = (function () { - function Interop(configuration) { - var _this = this; +class Interop { + instance; + readyPromise; + client; + server; + unwrappedInstance; + protocol; + clientRepository; + serverRepository; + constructor(configuration) { if (typeof configuration === "undefined") { throw new Error("configuration is required"); } if (typeof configuration.connection === "undefined") { throw new Error("configuration.connections is required"); } - var connection = configuration.connection; + const connection = configuration.connection; if (typeof configuration.methodResponseTimeout !== "number") { configuration.methodResponseTimeout = 30 * 1000; } @@ -15542,206 +14155,208 @@ var Interop = (function () { this.instance = this.unwrappedInstance.unwrap(); this.clientRepository = new ClientRepository(configuration.logger.subLogger("cRep"), this); this.serverRepository = new ServerRepository(); - var protocolPromise; + let protocolPromise; if (connection.protocolVersion === 3) { protocolPromise = gW3ProtocolFactory(this.instance, connection, this.clientRepository, this.serverRepository, configuration, this); } else { - throw new Error("protocol ".concat(connection.protocolVersion, " not supported")); + throw new Error(`protocol ${connection.protocolVersion} not supported`); } - this.readyPromise = protocolPromise.then(function (protocol) { - _this.protocol = protocol; - _this.client = new Client(_this.protocol, _this.clientRepository, _this.instance, configuration); - _this.server = new Server(_this.protocol, _this.serverRepository); - return _this; + this.readyPromise = protocolPromise.then((protocol) => { + this.protocol = protocol; + this.client = new Client(this.protocol, this.clientRepository, this.instance, configuration); + this.server = new Server(this.protocol, this.serverRepository); + return this; }); } - Interop.prototype.ready = function () { + ready() { return this.readyPromise; - }; - Interop.prototype.serverRemoved = function (callback) { + } + serverRemoved(callback) { return this.client.serverRemoved(callback); - }; - Interop.prototype.serverAdded = function (callback) { + } + serverAdded(callback) { return this.client.serverAdded(callback); - }; - Interop.prototype.serverMethodRemoved = function (callback) { + } + serverMethodRemoved(callback) { return this.client.serverMethodRemoved(callback); - }; - Interop.prototype.serverMethodAdded = function (callback) { + } + serverMethodAdded(callback) { return this.client.serverMethodAdded(callback); - }; - Interop.prototype.methodRemoved = function (callback) { + } + methodRemoved(callback) { return this.client.methodRemoved(callback); - }; - Interop.prototype.methodAdded = function (callback) { + } + methodAdded(callback) { return this.client.methodAdded(callback); - }; - Interop.prototype.methodsForInstance = function (instance) { + } + methodsForInstance(instance) { return this.client.methodsForInstance(instance); - }; - Interop.prototype.methods = function (methodFilter) { + } + methods(methodFilter) { return this.client.methods(methodFilter); - }; - Interop.prototype.servers = function (methodFilter) { + } + servers(methodFilter) { return this.client.servers(methodFilter); - }; - Interop.prototype.subscribe = function (method, options, successCallback, errorCallback) { + } + subscribe(method, options, successCallback, errorCallback) { return this.client.subscribe(method, options, successCallback, errorCallback); - }; - Interop.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback) { + } + createStream(streamDef, callbacks, successCallback, errorCallback) { return this.server.createStream(streamDef, callbacks, successCallback, errorCallback); - }; - Interop.prototype.unregister = function (methodFilter) { + } + unregister(methodFilter) { return this.server.unregister(methodFilter); - }; - Interop.prototype.registerAsync = function (methodDefinition, callback) { + } + registerAsync(methodDefinition, callback) { return this.server.registerAsync(methodDefinition, callback); - }; - Interop.prototype.register = function (methodDefinition, callback) { + } + register(methodDefinition, callback) { return this.server.register(methodDefinition, callback); - }; - Interop.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) { + } + invoke(methodFilter, argumentObj, target, additionalOptions, success, error) { return this.client.invoke(methodFilter, argumentObj, target, additionalOptions, success, error); - }; - Interop.prototype.waitForMethod = function (name) { - var pw = new PromiseWrapper(); - var unsubscribe = this.client.methodAdded(function (m) { + } + waitForMethod(name) { + const pw = new PromiseWrapper(); + const unsubscribe = this.client.methodAdded((m) => { if (m.name === name) { unsubscribe(); pw.resolve(m); } }); return pw.promise; - }; - return Interop; -}()); + } +} -var successMessages = ["subscribed", "success"]; -var MessageBus = (function () { - function MessageBus(connection, logger) { - var _this = this; - this.publish = function (topic, data, options) { - var _a = options || {}, routingKey = _a.routingKey, target = _a.target; - var args = _this.removeEmptyValues({ - type: "publish", - topic: topic, - data: data, - peer_id: _this.peerId, - routing_key: routingKey, - target_identity: target - }); - _this.session.send(args); - }; - this.subscribe = function (topic, callback, options) { - return new Promise(function (resolve, reject) { - var _a = options || {}, routingKey = _a.routingKey, target = _a.target; - var args = _this.removeEmptyValues({ - type: "subscribe", - topic: topic, - peer_id: _this.peerId, - routing_key: routingKey, - source: target - }); - _this.session.send(args) - .then(function (response) { - var subscription_id = response.subscription_id; - _this.subscriptions.push({ subscription_id: subscription_id, topic: topic, callback: callback, source: target }); - resolve({ - unsubscribe: function () { - _this.session.send({ type: "unsubscribe", subscription_id: subscription_id, peer_id: _this.peerId }); - _this.subscriptions = _this.subscriptions.filter(function (s) { return s.subscription_id !== subscription_id; }); - return Promise.resolve(); - } - }); - }) - .catch(function (error) { return reject(error); }); - }); - }; - this.watchOnEvent = function () { - _this.session.on("event", function (args) { - var data = args.data, subscription_id = args.subscription_id; - var source = args["publisher-identity"]; - var subscription = _this.subscriptions.find(function (s) { return s.subscription_id === subscription_id; }); - if (subscription) { - if (!subscription.source) { - subscription.callback(data, subscription.topic, source); - } - else { - if (_this.keysMatch(subscription.source, source)) { - subscription.callback(data, subscription.topic, source); - } - } - } - }); - }; +const successMessages = ["subscribed", "success"]; +class MessageBus { + connection; + logger; + peerId; + session; + subscriptions; + readyPromise; + constructor(connection, logger) { this.connection = connection; this.logger = logger; this.peerId = connection.peerId; this.subscriptions = []; this.session = connection.domain("bus", successMessages); this.readyPromise = this.session.join(); - this.readyPromise.then(function () { - _this.watchOnEvent(); + this.readyPromise.then(() => { + this.watchOnEvent(); }); } - MessageBus.prototype.ready = function () { + ready() { return this.readyPromise; + } + publish = (topic, data, options) => { + const { routingKey, target } = options || {}; + const args = this.removeEmptyValues({ + type: "publish", + topic, + data, + peer_id: this.peerId, + routing_key: routingKey, + target_identity: target + }); + this.session.send(args); + }; + subscribe = (topic, callback, options) => { + return new Promise((resolve, reject) => { + const { routingKey, target } = options || {}; + const args = this.removeEmptyValues({ + type: "subscribe", + topic, + peer_id: this.peerId, + routing_key: routingKey, + source: target + }); + this.session.send(args) + .then((response) => { + const { subscription_id } = response; + this.subscriptions.push({ subscription_id, topic, callback, source: target }); + resolve({ + unsubscribe: () => { + this.session.send({ type: "unsubscribe", subscription_id, peer_id: this.peerId }); + this.subscriptions = this.subscriptions.filter((s) => s.subscription_id !== subscription_id); + return Promise.resolve(); + } + }); + }) + .catch((error) => reject(error)); + }); + }; + watchOnEvent = () => { + this.session.on("event", (args) => { + const { data, subscription_id } = args; + const source = args["publisher-identity"]; + const subscription = this.subscriptions.find((s) => s.subscription_id === subscription_id); + if (subscription) { + if (!subscription.source) { + subscription.callback(data, subscription.topic, source); + } + else { + if (this.keysMatch(subscription.source, source)) { + subscription.callback(data, subscription.topic, source); + } + } + } + }); }; - MessageBus.prototype.removeEmptyValues = function (obj) { - var cleaned = {}; - Object.keys(obj).forEach(function (key) { + removeEmptyValues(obj) { + const cleaned = {}; + Object.keys(obj).forEach((key) => { if (obj[key] !== undefined && obj[key] !== null) { cleaned[key] = obj[key]; } }); return cleaned; - }; - MessageBus.prototype.keysMatch = function (obj1, obj2) { - var keysObj1 = Object.keys(obj1); - var allMatch = true; - keysObj1.forEach(function (key) { + } + keysMatch(obj1, obj2) { + const keysObj1 = Object.keys(obj1); + let allMatch = true; + keysObj1.forEach((key) => { if (obj1[key] !== obj2[key]) { allMatch = false; } }); return allMatch; - }; - return MessageBus; -}()); + } +} -var IOConnectCoreFactory = function (userConfig, ext) { - var _a, _b; - var iodesktop = typeof window === "object" ? ((_a = window.iodesktop) !== null && _a !== void 0 ? _a : window.glue42gd) : undefined; - var preloadPromise = typeof window === "object" ? ((_b = window.gdPreloadPromise) !== null && _b !== void 0 ? _b : Promise.resolve()) : Promise.resolve(); - var glueInitTimer = timer("glue"); +const IOConnectCoreFactory = (userConfig, ext) => { + const iodesktop = typeof window === "object" ? (window.iodesktop ?? window.glue42gd) : undefined; + const preloadPromise = typeof window === "object" ? (window.gdPreloadPromise ?? Promise.resolve()) : Promise.resolve(); + const glueInitTimer = timer("glue"); userConfig = userConfig || {}; ext = ext || {}; - var internalConfig = prepareConfig(userConfig, ext, iodesktop); - var _connection; - var _interop; - var _logger; - var _metrics; - var _contexts; - var _bus; - var _allowTrace; - var libs = {}; + const internalConfig = prepareConfig(userConfig, ext, iodesktop); + let _connection; + let _interop; + let _logger; + let _metrics; + let _contexts; + let _bus; + let _allowTrace; + const libs = {}; function registerLib(name, inner, t) { _allowTrace = _logger.canPublish("trace"); if (_allowTrace) { - _logger.trace("registering ".concat(name, " module")); + _logger.trace(`registering ${name} module`); } - var done = function () { + const done = () => { inner.initTime = t.stop(); inner.initEndTime = t.endTime; inner.marks = t.marks; if (_allowTrace) { - _logger.trace("".concat(name, " is ready - ").concat(t.endTime - t.startTime)); + _logger.trace(`${name} is ready - ${t.endTime - t.startTime}`); } }; inner.initStartTime = t.startTime; if (inner.ready) { - inner.ready().then(function () { + inner.ready().then(() => { done(); }); } @@ -15751,25 +14366,25 @@ var IOConnectCoreFactory = function (userConfig, ext) { if (!Array.isArray(name)) { name = [name]; } - name.forEach(function (n) { + name.forEach((n) => { libs[n] = inner; IOConnectCoreFactory[n] = inner; }); } function setupConnection() { - var initTimer = timer("connection"); + const initTimer = timer("connection"); _connection = new Connection(internalConfig.connection, _logger.subLogger("connection")); - var authPromise = Promise.resolve(internalConfig.auth); + let authPromise = Promise.resolve(internalConfig.auth); if (internalConfig.connection && !internalConfig.auth) { if (iodesktop) { authPromise = iodesktop.getGWToken() - .then(function (token) { + .then((token) => { return { gatewayToken: token }; }); } - else if (typeof window !== "undefined" && (window === null || window === void 0 ? void 0 : window.glue42electron)) { + else if (typeof window !== "undefined" && window?.glue42electron) { if (typeof window.glue42electron.gwToken === "string") { authPromise = Promise.resolve({ gatewayToken: window.glue42electron.gwToken @@ -15781,9 +14396,9 @@ var IOConnectCoreFactory = function (userConfig, ext) { } } return authPromise - .then(function (authConfig) { + .then((authConfig) => { initTimer.mark("auth-promise-resolved"); - var authRequest; + let authRequest; if (Object.prototype.toString.call(authConfig) === "[object Object]") { authRequest = authConfig; } @@ -15792,11 +14407,11 @@ var IOConnectCoreFactory = function (userConfig, ext) { } return _connection.login(authRequest); }) - .then(function () { + .then(() => { registerLib("connection", _connection, initTimer); return internalConfig; }) - .catch(function (e) { + .catch((e) => { if (_connection) { _connection.logout(); } @@ -15804,9 +14419,8 @@ var IOConnectCoreFactory = function (userConfig, ext) { }); } function setupLogger() { - var _a; - var initTimer = timer("logger"); - _logger = new Logger("".concat((_a = internalConfig.connection.identity) === null || _a === void 0 ? void 0 : _a.application), undefined, internalConfig.customLogger); + const initTimer = timer("logger"); + _logger = new Logger(`${internalConfig.connection.identity?.application}`, undefined, internalConfig.customLogger); _logger.consoleLevel(internalConfig.logger.console); _logger.publishLevel(internalConfig.logger.publish); if (_logger.canPublish("debug")) { @@ -15816,29 +14430,28 @@ var IOConnectCoreFactory = function (userConfig, ext) { return Promise.resolve(undefined); } function setupMetrics() { - var _a, _b, _c, _d, _e; - var initTimer = timer("metrics"); - var config = internalConfig.metrics; - var metricsPublishingEnabledFunc = iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.getMetricsPublishingEnabled; - var identity = internalConfig.connection.identity; - var canUpdateMetric = metricsPublishingEnabledFunc ? metricsPublishingEnabledFunc : function () { return true; }; - var disableAutoAppSystem = (_a = (typeof config !== "boolean" && config.disableAutoAppSystem)) !== null && _a !== void 0 ? _a : false; + const initTimer = timer("metrics"); + const config = internalConfig.metrics; + const metricsPublishingEnabledFunc = iodesktop?.getMetricsPublishingEnabled; + const identity = internalConfig.connection.identity; + const canUpdateMetric = metricsPublishingEnabledFunc ? metricsPublishingEnabledFunc : () => true; + const disableAutoAppSystem = (typeof config !== "boolean" && config.disableAutoAppSystem) ?? false; _metrics = metrics({ connection: config ? _connection : undefined, logger: _logger.subLogger("metrics"), - canUpdateMetric: canUpdateMetric, + canUpdateMetric, system: "Glue42", - service: (_c = (_b = identity === null || identity === void 0 ? void 0 : identity.service) !== null && _b !== void 0 ? _b : iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.applicationName) !== null && _c !== void 0 ? _c : internalConfig.application, - instance: (_e = (_d = identity === null || identity === void 0 ? void 0 : identity.instance) !== null && _d !== void 0 ? _d : identity === null || identity === void 0 ? void 0 : identity.windowId) !== null && _e !== void 0 ? _e : shortid(), - disableAutoAppSystem: disableAutoAppSystem, - pagePerformanceMetrics: typeof config !== "boolean" ? config === null || config === void 0 ? void 0 : config.pagePerformanceMetrics : undefined + service: identity?.service ?? iodesktop?.applicationName ?? internalConfig.application, + instance: identity?.instance ?? identity?.windowId ?? nanoid(10), + disableAutoAppSystem, + pagePerformanceMetrics: typeof config !== "boolean" ? config?.pagePerformanceMetrics : undefined }); registerLib("metrics", _metrics, initTimer); return Promise.resolve(); } function setupInterop() { - var initTimer = timer("interop"); - var agmConfig = { + const initTimer = timer("interop"); + const agmConfig = { connection: _connection, logger: _logger.subLogger("interop"), }; @@ -15848,10 +14461,10 @@ var IOConnectCoreFactory = function (userConfig, ext) { return Promise.resolve(); } function setupContexts() { - var hasActivities = (internalConfig.activities && _connection.protocolVersion === 3); - var needsContexts = internalConfig.contexts || hasActivities; + const hasActivities = (internalConfig.activities && _connection.protocolVersion === 3); + const needsContexts = internalConfig.contexts || hasActivities; if (needsContexts) { - var initTimer = timer("contexts"); + const initTimer = timer("contexts"); _contexts = new ContextsModule({ connection: _connection, logger: _logger.subLogger("contexts"), @@ -15862,29 +14475,24 @@ var IOConnectCoreFactory = function (userConfig, ext) { return _contexts; } else { - var replayer = _connection.replayer; + const replayer = _connection.replayer; if (replayer) { replayer.drain(ContextMessageReplaySpec.name); } } } - function setupBus() { - return __awaiter(this, void 0, void 0, function () { - var initTimer; - return __generator(this, function (_a) { - if (!internalConfig.bus) { - return [2, Promise.resolve()]; - } - initTimer = timer("bus"); - _bus = new MessageBus(_connection, _logger.subLogger("bus")); - registerLib("bus", _bus, initTimer); - return [2, Promise.resolve()]; - }); - }); + async function setupBus() { + if (!internalConfig.bus) { + return Promise.resolve(); + } + const initTimer = timer("bus"); + _bus = new MessageBus(_connection, _logger.subLogger("bus")); + registerLib("bus", _bus, initTimer); + return Promise.resolve(); } function setupExternalLibs(externalLibs) { try { - externalLibs.forEach(function (lib) { + externalLibs.forEach((lib) => { setupExternalLib(lib.name, lib.create); }); return Promise.resolve(); @@ -15894,35 +14502,35 @@ var IOConnectCoreFactory = function (userConfig, ext) { } } function setupExternalLib(name, createCallback) { - var initTimer = timer(name); - var lib = createCallback(libs); + const initTimer = timer(name); + const lib = createCallback(libs); if (lib) { registerLib(name, lib, initTimer); } } function waitForLibs() { - var libsReadyPromises = Object.keys(libs).map(function (key) { - var lib = libs[key]; + const libsReadyPromises = Object.keys(libs).map((key) => { + const lib = libs[key]; return lib.ready ? lib.ready() : Promise.resolve(); }); return Promise.all(libsReadyPromises); } function constructGlueObject() { - var feedbackFunc = function (feedbackInfo) { + const feedbackFunc = (feedbackInfo) => { if (!_interop) { return; } _interop.invoke("T42.ACS.Feedback", feedbackInfo, "best"); }; - var info = { + const info = { coreVersion: version, version: internalConfig.version }; glueInitTimer.stop(); - var glue = { + const glue = { feedback: feedbackFunc, - info: info, + info, logger: _logger, interop: _interop, agm: _interop, @@ -15931,9 +14539,9 @@ var IOConnectCoreFactory = function (userConfig, ext) { contexts: _contexts, bus: _bus, version: internalConfig.version, - userConfig: userConfig, - done: function () { - _logger === null || _logger === void 0 ? void 0 : _logger.info("done called by user..."); + userConfig, + done: () => { + _logger?.info("done called by user..."); return _connection.logout(); } }; @@ -15951,9 +14559,9 @@ var IOConnectCoreFactory = function (userConfig, ext) { return window.performance.memory; }, get initTimes() { - var all = getAllTimers(); - return Object.keys(all).map(function (key) { - var t = all[key]; + const all = getAllTimers(); + return Object.keys(all).map((key) => { + const t = all[key]; return { name: key, duration: t.endTime - t.startTime, @@ -15964,33 +14572,33 @@ var IOConnectCoreFactory = function (userConfig, ext) { }); } }; - Object.keys(libs).forEach(function (key) { - var lib = libs[key]; + Object.keys(libs).forEach((key) => { + const lib = libs[key]; glue[key] = lib; }); glue.config = {}; - Object.keys(internalConfig).forEach(function (k) { + Object.keys(internalConfig).forEach((k) => { glue.config[k] = internalConfig[k]; }); if (ext && ext.extOptions) { - Object.keys(ext.extOptions).forEach(function (k) { - glue.config[k] = ext === null || ext === void 0 ? void 0 : ext.extOptions[k]; + Object.keys(ext.extOptions).forEach((k) => { + glue.config[k] = ext?.extOptions[k]; }); } - if (ext === null || ext === void 0 ? void 0 : ext.enrichGlue) { + if (ext?.enrichGlue) { ext.enrichGlue(glue); } if (iodesktop && iodesktop.updatePerfData) { iodesktop.updatePerfData(glue.performance); } if (glue.agm) { - var deprecatedDecorator = function (fn, wrong, proper) { + const deprecatedDecorator = (fn, wrong, proper) => { return function () { - glue.logger.warn("glue.js - 'glue.agm.".concat(wrong, "' method is deprecated, use 'glue.interop.").concat(proper, "' instead.")); + glue.logger.warn(`glue.js - 'glue.agm.${wrong}' method is deprecated, use 'glue.interop.${proper}' instead.`); return fn.apply(glue.agm, arguments); }; }; - var agmAny = glue.agm; + const agmAny = glue.agm; agmAny.method_added = deprecatedDecorator(glue.agm.methodAdded, "method_added", "methodAdded"); agmAny.method_removed = deprecatedDecorator(glue.agm.methodRemoved, "method_removed", "methodRemoved"); agmAny.server_added = deprecatedDecorator(glue.agm.serverAdded, "server_added", "serverAdded"); @@ -15999,48 +14607,36 @@ var IOConnectCoreFactory = function (userConfig, ext) { } return glue; } - function registerInstanceIfNeeded() { - return __awaiter(this, void 0, void 0, function () { - var RegisterInstanceMethodName, isMethodAvailable, error_1, typedError; - return __generator(this, function (_a) { - switch (_a.label) { - case 0: - RegisterInstanceMethodName = "T42.ACS.RegisterInstance"; - if (!(Utils.isNode() && typeof process.env._GD_STARTING_CONTEXT_ === "undefined" && typeof (userConfig === null || userConfig === void 0 ? void 0 : userConfig.application) !== "undefined")) return [3, 4]; - isMethodAvailable = _interop.methods({ name: RegisterInstanceMethodName }).length > 0; - if (!isMethodAvailable) return [3, 4]; - _a.label = 1; - case 1: - _a.trys.push([1, 3, , 4]); - return [4, _interop.invoke(RegisterInstanceMethodName, { appName: userConfig === null || userConfig === void 0 ? void 0 : userConfig.application, pid: process.pid })]; - case 2: - _a.sent(); - return [3, 4]; - case 3: - error_1 = _a.sent(); - typedError = error_1; - _logger.error("Cannot register as an instance: ".concat(JSON.stringify(typedError.message))); - return [3, 4]; - case 4: return [2]; + async function registerInstanceIfNeeded() { + const RegisterInstanceMethodName = "T42.ACS.RegisterInstance"; + if (Utils.isNode() && typeof process.env._GD_STARTING_CONTEXT_ === "undefined" && typeof userConfig?.application !== "undefined") { + const isMethodAvailable = _interop.methods({ name: RegisterInstanceMethodName }).length > 0; + if (isMethodAvailable) { + try { + await _interop.invoke(RegisterInstanceMethodName, { appName: userConfig?.application, pid: process.pid }); } - }); - }); + catch (error) { + const typedError = error; + _logger.error(`Cannot register as an instance: ${JSON.stringify(typedError.message)}`); + } + } + } } return preloadPromise .then(setupLogger) .then(setupConnection) - .then(function () { return Promise.all([setupMetrics(), setupInterop(), setupContexts(), setupBus()]); }) - .then(function () { return _interop.readyPromise; }) - .then(function () { return registerInstanceIfNeeded(); }) - .then(function () { + .then(() => Promise.all([setupMetrics(), setupInterop(), setupContexts(), setupBus()])) + .then(() => _interop.readyPromise) + .then(() => registerInstanceIfNeeded()) + .then(() => { return setupExternalLibs(internalConfig.libs || []); }) .then(waitForLibs) .then(constructGlueObject) - .catch(function (err) { + .catch((err) => { return Promise.reject({ - err: err, - libs: libs + err, + libs }); }); }; @@ -16062,7 +14658,7 @@ const ioGlobal = window.iodesktop || window.iobrowser; if (!legacyGlobal && !ioGlobal) { window.iobrowser = { webStarted: false }; } -iOConnectBrowserFactory.version = version$2; +iOConnectBrowserFactory.version = version$1; export { iOConnectBrowserFactory as default }; //# sourceMappingURL=browser.es.js.map diff --git a/browser-client-vanilla-js/public/libs/browser.es.js.map b/browser-client-vanilla-js/public/libs/browser.es.js.map index 6f75b2f..37392ea 100644 --- a/browser-client-vanilla-js/public/libs/browser.es.js.map +++ b/browser-client-vanilla-js/public/libs/browser.es.js.map @@ -1 +1 @@ -{"version":3,"file":"browser.es.js","sources":["../src/config/index.ts","../src/config/checkSingleton.ts","../src/enterprise/index.ts","../node_modules/decoder-validate/dist/index.es5.js","../../utils/dist/utils.es.js","../src/shared/decoders.ts","../src/windows/protocol.ts","../node_modules/callback-registry/lib/index.js","../src/windows/webWindow.ts","../src/shared/systemOperations.ts","../src/shared/promise-plus.ts","../src/windows/controller.ts","../src/communication/constants.ts","../src/communication/bridge.ts","../src/appManager/protocol.ts","../src/appManager/controller.ts","../src/appManager/instance.ts","../src/appManager/application.ts","../src/layouts/protocol.ts","../src/layouts/controller.ts","../src/notifications/protocol.ts","../node_modules/shortid/lib/random/random-from-seed.js","../node_modules/shortid/lib/alphabet.js","../node_modules/shortid/lib/random/random-byte-browser.js","../node_modules/shortid/node_modules/nanoid/format.browser.js","../node_modules/shortid/lib/generate.js","../node_modules/shortid/lib/build.js","../node_modules/shortid/lib/is-valid.js","../node_modules/shortid/lib/index.js","../node_modules/shortid/index.js","../src/notifications/controller.ts","../src/intents/protocol.ts","../src/intents/constants.ts","../src/intents/controller.ts","../src/shared/constants.ts","../src/channels/protocol.ts","../src/channels/controller.ts","../src/system/protocol.ts","../src/system/controller.ts","../src/notifications/notification.ts","../src/extension/decoders.ts","../src/extension/protocol.ts","../src/extension/controller.ts","../src/shared/dispatcher.ts","../src/communication/preferred.ts","../src/intents/legacyHelper.ts","../src/themes/protocol.ts","../src/themes/controller.ts","../src/storage/session.ts","../src/prefs/protocol.ts","../src/prefs/controller.ts","../src/shared/ioc.ts","../src/web.ts","../../core/dist/core.es.js","../src/index.ts"],"sourcesContent":["import { IOConnectBrowser } from \"../../browser\";\nimport { ParsedConfig } from \"../shared/types\";\n\nconst defaultConfig = {\n logger: \"info\",\n gateway: { webPlatform: {} },\n libraries: [],\n exposeAPI: true\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const parseConfig = (config?: IOConnectBrowser.Config): ParsedConfig => {\n const isPlatformInternal = !!(config as any)?.gateway?.webPlatform?.port;\n\n const combined: ParsedConfig = Object.assign({}, defaultConfig, config, { isPlatformInternal });\n\n if (combined.systemLogger) {\n combined.logger = combined.systemLogger.level ?? \"info\";\n }\n\n return combined;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const checkSingleton = (): void => {\n const ioConnectBrowserNamespace = (window as any).glue42core || (window as any).iobrowser;\n\n if (ioConnectBrowserNamespace && ioConnectBrowserNamespace.webStarted) {\n throw new Error(\"IoConnect Browser has already been started for this application.\");\n }\n\n if (!ioConnectBrowserNamespace) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).iobrowser = { webStarted: true };\n return;\n }\n\n ioConnectBrowserNamespace.webStarted = true;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { IOConnectDesktop } from \"@interopio/desktop\";\nimport { IOConnectBrowser } from \"../../browser\";\n\nexport const enterprise = (config?: IOConnectBrowser.Config): IOConnectDesktop.API => {\n const enterpriseConfig = {\n windows: true,\n layouts: \"full\",\n appManager: \"full\",\n channels: true,\n libraries: config?.libraries ?? [],\n logger: config?.systemLogger?.level ?? \"warn\"\n };\n\n const injectedFactory = (window as any).IODesktop || (window as any).Glue;\n\n return injectedFactory(enterpriseConfig);\n};","/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Typeguard for `Ok`.\r\n */\r\nvar isOk = function (r) { return r.ok === true; };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Typeguard for `Err`.\r\n */\r\nvar isErr = function (r) { return r.ok === false; };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Given an array of `Result`s, return the successful values.\r\n */\r\nvar successes = function (results) {\r\n return results.reduce(function (acc, r) { return (r.ok === true ? acc.concat(r.result) : acc); }, []);\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n\r\nvar result = Object.freeze({\r\n\tok: ok,\r\n\tisOk: isOk,\r\n\terr: err,\r\n\tisErr: isErr,\r\n\tasPromise: asPromise,\r\n\twithDefault: withDefault,\r\n\twithException: withException,\r\n\tsuccesses: successes,\r\n\tmap: map,\r\n\tmap2: map2,\r\n\tmapError: mapError,\r\n\tandThen: andThen\r\n});\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/**\r\n * Type guard for `DecoderError`. One use case of the type guard is in the\r\n * `catch` of a promise. Typescript types the error argument of `catch` as\r\n * `any`, so when dealing with a decoder as a promise you may need to\r\n * distinguish between a `DecoderError` and an error string.\r\n */\r\nvar isDecoderError = function (a) {\r\n return a.kind === 'DecoderError' && typeof a.at === 'string' && typeof a.message === 'string';\r\n};\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nvar unknownJson = Decoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nvar tuple = Decoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nvar union = Decoder.union;\r\n/** See `Decoder.intersection` */\r\nvar intersection = Decoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nvar withDefault$1 = Decoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nvar valueAt = Decoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nvar succeed = Decoder.succeed;\r\n/** See `Decoder.fail` */\r\nvar fail = Decoder.fail;\r\n/** See `Decoder.lazy` */\r\nvar lazy = Decoder.lazy;\r\n\r\nexport { result as Result, Decoder, isDecoderError, string, number, boolean, anyJson, unknownJson, constant, object, array, tuple, dict, optional, oneOf, union, intersection, withDefault$1 as withDefault, valueAt, succeed, fail, lazy };\r\n//# sourceMappingURL=index.es5.js.map\r\n","const connectBrowserAppProps = [\"name\", \"title\", \"version\", \"customProperties\", \"icon\", \"caption\", \"type\"];\nconst fdc3v2AppProps = [\"appId\", \"name\", \"type\", \"details\", \"version\", \"title\", \"tooltip\", \"lang\", \"description\", \"categories\", \"icons\", \"screenshots\", \"contactEmail\", \"moreInfo\", \"publisher\", \"customConfig\", \"hostManifests\", \"interop\", \"localizedVersions\"];\n\n/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nDecoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nDecoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nDecoder.union;\r\n/** See `Decoder.intersection` */\r\nDecoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nDecoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nDecoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nDecoder.succeed;\r\n/** See `Decoder.fail` */\r\nDecoder.fail;\r\n/** See `Decoder.lazy` */\r\nDecoder.lazy;\n\nconst nonEmptyStringDecoder = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nconst nonNegativeNumberDecoder = number().where((num) => num >= 0, \"Expected a non-negative number\");\n\nconst intentDefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n displayName: optional(string()),\n contexts: optional(array(string())),\n customConfig: optional(object())\n});\nconst v2TypeDecoder = oneOf(constant(\"web\"), constant(\"native\"), constant(\"citrix\"), constant(\"onlineNative\"), constant(\"other\"));\nconst v2DetailsDecoder = object({\n url: nonEmptyStringDecoder\n});\nconst v2IconDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder)\n});\nconst v2ScreenshotDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder),\n label: optional(nonEmptyStringDecoder)\n});\nconst v2ListensForIntentDecoder = object({\n contexts: array(nonEmptyStringDecoder),\n displayName: optional(nonEmptyStringDecoder),\n resultType: optional(nonEmptyStringDecoder),\n customConfig: optional(anyJson())\n});\nconst v2IntentsDecoder = object({\n listensFor: optional(dict(v2ListensForIntentDecoder)),\n raises: optional(dict(array(nonEmptyStringDecoder)))\n});\nconst v2UserChannelDecoder = object({\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2AppChannelDecoder = object({\n name: nonEmptyStringDecoder,\n description: optional(nonEmptyStringDecoder),\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2InteropDecoder = object({\n intents: optional(v2IntentsDecoder),\n userChannels: optional(v2UserChannelDecoder),\n appChannels: optional(array(v2AppChannelDecoder))\n});\nconst glue42ApplicationDetailsDecoder = object({\n url: nonEmptyStringDecoder,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\nconst glue42HostManifestsBrowserDecoder = object({\n name: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\")),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n customProperties: optional(anyJson()),\n icon: optional(string()),\n caption: optional(string()),\n details: optional(glue42ApplicationDetailsDecoder),\n intents: optional(array(intentDefinitionDecoder)),\n hidden: optional(boolean())\n});\nconst hostManifestsBrowserDecoder = oneOf(object({\n \"Glue42\": oneOf(glue42HostManifestsBrowserDecoder, anyJson())\n}), anyJson());\nconst v1DefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n appId: nonEmptyStringDecoder,\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n manifest: nonEmptyStringDecoder,\n manifestType: nonEmptyStringDecoder,\n tooltip: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n images: optional(array(object({ url: optional(nonEmptyStringDecoder) }))),\n icons: optional(array(object({ icon: optional(nonEmptyStringDecoder) }))),\n customConfig: anyJson(),\n intents: optional(array(intentDefinitionDecoder))\n});\nconst v2LocalizedDefinitionDecoder = object({\n appId: optional(nonEmptyStringDecoder),\n name: optional(nonEmptyStringDecoder),\n details: optional(v2DetailsDecoder),\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder)\n});\nconst v2DefinitionDecoder = object({\n appId: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder,\n type: v2TypeDecoder,\n details: v2DetailsDecoder,\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder),\n localizedVersions: optional(dict(v2LocalizedDefinitionDecoder))\n});\nconst allDefinitionsDecoder = oneOf(v1DefinitionDecoder, v2DefinitionDecoder);\n\nconst parseDecoderErrorToStringMessage = (error) => {\n return `${error.kind} at ${error.at}: ${JSON.stringify(error.input)}. Reason - ${error.message}`;\n};\n\nclass FDC3Service {\n constructor() {\n this.fdc3ToDesktopDefinitionType = {\n web: \"window\",\n native: \"exe\",\n citrix: \"citrix\",\n onlineNative: \"clickonce\",\n other: \"window\"\n };\n }\n toApi() {\n return {\n isFdc3Definition: this.isFdc3Definition.bind(this),\n parseToBrowserBaseAppData: this.parseToBrowserBaseAppData.bind(this),\n parseToDesktopAppConfig: this.parseToDesktopAppConfig.bind(this)\n };\n }\n isFdc3Definition(definition) {\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n return { isFdc3: false, reason: parseDecoderErrorToStringMessage(decodeRes.error) };\n }\n if (definition.appId && definition.details) {\n return { isFdc3: true, version: \"2.0\" };\n }\n if (definition.manifest) {\n return { isFdc3: true, version: \"1.2\" };\n }\n return { isFdc3: false, reason: \"The passed definition is not FDC3\" };\n }\n parseToBrowserBaseAppData(definition) {\n var _a;\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n const userProperties = this.getUserPropertiesFromDefinition(definition, version);\n const createOptions = { url: this.getUrl(definition, version) };\n let baseApplicationData = {\n name: definition.appId,\n type: \"window\",\n createOptions,\n userProperties: Object.assign(Object.assign({}, userProperties), { intents: version === \"1.2\"\n ? userProperties.intents\n : this.getIntentsFromV2AppDefinition(definition), details: createOptions }),\n title: definition.title,\n version: definition.version,\n icon: this.getIconFromDefinition(definition, version),\n caption: definition.description,\n fdc3: version === \"2.0\" ? Object.assign(Object.assign({}, definition), { definitionVersion: \"2.0\" }) : undefined,\n };\n if ((_a = definition.hostManifests) === null || _a === void 0 ? void 0 : _a[\"Glue42\"]) {\n const decodeRes = glue42HostManifestsBrowserDecoder.run(definition.hostManifests[\"Glue42\"]);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (!Object.keys(decodeRes.result).length) {\n throw new Error(\"Invalid 'hostManifests['Glue42]' key\");\n }\n baseApplicationData = this.mergeBaseAppDataWithGlueManifest(baseApplicationData, decodeRes.result);\n }\n return baseApplicationData;\n }\n parseToDesktopAppConfig(definition) {\n var _a, _b, _c;\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (version === \"1.2\") {\n const fdc3v1Definition = definition;\n return {\n name: fdc3v1Definition.appId,\n type: \"window\",\n details: {\n url: this.getUrl(definition, version)\n },\n version: fdc3v1Definition.version,\n title: fdc3v1Definition.title,\n tooltip: fdc3v1Definition.tooltip,\n caption: fdc3v1Definition.description,\n icon: (_a = fdc3v1Definition.icons) === null || _a === void 0 ? void 0 : _a[0].icon,\n intents: fdc3v1Definition.intents,\n customProperties: {\n manifestType: fdc3v1Definition.manifestType,\n images: fdc3v1Definition.images,\n contactEmail: fdc3v1Definition.contactEmail,\n supportEmail: fdc3v1Definition.supportEmail,\n publisher: fdc3v1Definition.publisher,\n icons: fdc3v1Definition.icons,\n customConfig: fdc3v1Definition.customConfig\n }\n };\n }\n const fdc3v2Definition = definition;\n let desktopDefinition = {\n name: fdc3v2Definition.appId,\n type: this.fdc3ToDesktopDefinitionType[fdc3v2Definition.type],\n details: fdc3v2Definition.details,\n version: fdc3v2Definition.version,\n title: fdc3v2Definition.title,\n tooltip: fdc3v2Definition.tooltip,\n caption: fdc3v2Definition.description,\n icon: this.getIconFromDefinition(fdc3v2Definition, \"2.0\"),\n intents: this.getIntentsFromV2AppDefinition(fdc3v2Definition),\n fdc3: Object.assign(Object.assign({}, fdc3v2Definition), { definitionVersion: \"2.0\" })\n };\n if ((_b = fdc3v2Definition.hostManifests) === null || _b === void 0 ? void 0 : _b[\"Glue42\"]) {\n if (typeof fdc3v2Definition.hostManifests[\"Glue42\"] !== \"object\" || Array.isArray(fdc3v2Definition.hostManifests[\"Glue42\"])) {\n throw new Error(\"Invalid 'hostManifests['Glue42]' key\");\n }\n desktopDefinition = this.mergeDesktopConfigWithGlueManifest(desktopDefinition, (_c = fdc3v2Definition.hostManifests) === null || _c === void 0 ? void 0 : _c[\"Glue42\"]);\n }\n return desktopDefinition;\n }\n getUserPropertiesFromDefinition(definition, version) {\n if (version === \"1.2\") {\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key)));\n }\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key) && !fdc3v2AppProps.includes(key)));\n }\n getUrl(definition, version) {\n var _a, _b;\n let url;\n if (version === \"1.2\") {\n const parsedManifest = JSON.parse(definition.manifest);\n url = ((_a = parsedManifest.details) === null || _a === void 0 ? void 0 : _a.url) || parsedManifest.url;\n }\n else {\n url = (_b = definition.details) === null || _b === void 0 ? void 0 : _b.url;\n }\n if (!url || typeof url !== \"string\") {\n throw new Error(`Invalid FDC3 ${version} definition. Provide valid 'url' under '${version === \"1.2\" ? \"manifest\" : \"details\"}' key`);\n }\n return url;\n }\n getIntentsFromV2AppDefinition(definition) {\n var _a, _b;\n const fdc3Intents = (_b = (_a = definition.interop) === null || _a === void 0 ? void 0 : _a.intents) === null || _b === void 0 ? void 0 : _b.listensFor;\n if (!fdc3Intents) {\n return;\n }\n const intents = Object.entries(fdc3Intents).map((fdc3Intent) => {\n const [intentName, intentData] = fdc3Intent;\n return Object.assign({ name: intentName }, intentData);\n });\n return intents;\n }\n getIconFromDefinition(definition, version) {\n var _a, _b, _c, _d;\n if (version === \"1.2\") {\n return ((_b = (_a = definition.icons) === null || _a === void 0 ? void 0 : _a.find((iconDef) => iconDef.icon)) === null || _b === void 0 ? void 0 : _b.icon) || undefined;\n }\n return ((_d = (_c = definition.icons) === null || _c === void 0 ? void 0 : _c.find((iconDef) => iconDef.src)) === null || _d === void 0 ? void 0 : _d.src) || undefined;\n }\n mergeBaseAppDataWithGlueManifest(baseAppData, hostManifestDefinition) {\n let baseApplicationDefinition = baseAppData;\n if (hostManifestDefinition.details) {\n const details = Object.assign(Object.assign({}, baseAppData.createOptions), hostManifestDefinition.details);\n baseApplicationDefinition.createOptions = details;\n baseApplicationDefinition.userProperties.details = details;\n }\n if (Array.isArray(hostManifestDefinition.intents)) {\n baseApplicationDefinition.userProperties.intents = (baseApplicationDefinition.userProperties.intents || []).concat(hostManifestDefinition.intents);\n }\n baseApplicationDefinition = Object.assign(Object.assign({}, baseApplicationDefinition), hostManifestDefinition);\n delete baseApplicationDefinition.details;\n delete baseApplicationDefinition.intents;\n return baseApplicationDefinition;\n }\n mergeDesktopConfigWithGlueManifest(config, desktopDefinition) {\n const appConfig = Object.assign({}, config, desktopDefinition, { details: Object.assign(Object.assign({}, config.details), desktopDefinition.details) });\n if (Array.isArray(desktopDefinition.intents)) {\n appConfig.intents = (config.intents || []).concat(desktopDefinition.intents);\n }\n return appConfig;\n }\n}\n\nconst decoders$1 = {\n common: {\n nonEmptyStringDecoder,\n nonNegativeNumberDecoder\n },\n fdc3: {\n allDefinitionsDecoder,\n v1DefinitionDecoder,\n v2DefinitionDecoder\n }\n};\n\nvar INTENTS_ERRORS;\n(function (INTENTS_ERRORS) {\n INTENTS_ERRORS[\"USER_CANCELLED\"] = \"User Closed Intents Resolver UI without choosing a handler\";\n INTENTS_ERRORS[\"CALLER_NOT_DEFINED\"] = \"Caller Id is not defined\";\n INTENTS_ERRORS[\"TIMEOUT_HIT\"] = \"Timeout hit\";\n INTENTS_ERRORS[\"INTENT_NOT_FOUND\"] = \"Cannot find Intent\";\n INTENTS_ERRORS[\"HANDLER_NOT_FOUND\"] = \"Cannot find Intent Handler\";\n INTENTS_ERRORS[\"TARGET_INSTANCE_UNAVAILABLE\"] = \"Cannot start Target Instance\";\n INTENTS_ERRORS[\"INTENT_DELIVERY_FAILED\"] = \"Target Instance did not add a listener\";\n INTENTS_ERRORS[\"RESOLVER_UNAVAILABLE\"] = \"Intents Resolver UI unavailable\";\n INTENTS_ERRORS[\"RESOLVER_TIMEOUT\"] = \"User did not choose a handler\";\n INTENTS_ERRORS[\"INVALID_RESOLVER_RESPONSE\"] = \"Intents Resolver UI returned invalid response\";\n INTENTS_ERRORS[\"INTENT_HANDLER_REJECTION\"] = \"Intent Handler function processing the raised intent threw an error or rejected the promise it returned\";\n})(INTENTS_ERRORS || (INTENTS_ERRORS = {}));\n\nclass IoC {\n constructor() {\n this._decoders = decoders$1;\n this._errors = {\n intents: INTENTS_ERRORS\n };\n }\n get fdc3() {\n if (!this._fdc3) {\n this._fdc3 = new FDC3Service().toApi();\n }\n return this._fdc3;\n }\n get decoders() {\n return this._decoders;\n }\n get errors() {\n return this._errors;\n }\n}\n\nconst ioc = new IoC();\nconst fdc3 = ioc.fdc3;\nconst decoders = ioc.decoders;\nconst errors = ioc.errors;\n\nexport { decoders, errors, fdc3 };\n//# sourceMappingURL=utils.es.js.map\n","import { IOConnectWorkspaces } from \"@interopio/workspaces-api\";\nimport { decoders } from \"@interopio/utils\";\nimport { Decoder, string, number, object, constant, oneOf, optional, array, boolean, anyJson, lazy } from \"decoder-validate\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { AppsImportOperation, AppHelloSuccess, ApplicationData, ApplicationStartConfig, AppManagerOperationTypes, AppRemoveConfig, BaseApplicationData, BasicInstanceData, InstanceData, AppsExportOperation, FDC3Definition, AppDirectoryStateChange } from \"../appManager/protocol\";\nimport { AllLayoutsFullConfig, AllLayoutsSummariesResult, GetAllLayoutsConfig, LayoutsImportConfig, LayoutsOperationTypes, OptionalSimpleLayoutResult, RestoreLayoutConfig, SaveLayoutConfig, SaveRequestClientResponse, PlatformSaveRequestConfig, SimpleLayoutConfig, SimpleLayoutResult, PermissionStateResult, SimpleAvailabilityResult, SetDefaultGlobalConfig } from \"../layouts/protocol\";\nimport { HelloSuccess, OpenWindowConfig, CoreWindowData, WindowHello, WindowOperationTypes, SimpleWindowCommand, WindowTitleConfig, WindowBoundsResult, WindowMoveResizeConfig, WindowUrlResult, FrameWindowBoundsResult, FocusEventData, WindowChannelResult } from \"../windows/protocol\";\nimport { IntentsOperationTypes, WrappedIntentFilter, WrappedIntents } from \"../intents/protocol\";\nimport { ActiveNotificationsCountChange, AllNotificationsData, NotificationEventPayload, NotificationSetStateRequest, NotificationsConfigurationProtocol, NotificationsOperationTypes, PermissionQueryResult, PermissionRequestResult, RaiseNotification, RaiseNotificationResult, SimpleNotificationData, SimpleNotificationSelect, StrictNotificationsConfigurationProtocol } from \"../notifications/protocol\";\nimport { LibDomains, OperationCheckConfig, OperationCheckResult, SimpleItemIdRequest, WorkspaceFrameBoundsResult } from \"./types\";\nimport { AllThemesResponse, SelectThemeConfig, SimpleThemeResponse } from \"../themes/protocol\";\nimport { SystemOperationTypes } from \"../system/protocol\";\nimport { WindowIdsOnChannelData, ChannelOperationTypes, WrappedWindowWithChannelFilter, WindowIdsWithChannelsData, MyChannelData, JoinChannelData } from \"../channels/protocol\";\nimport { FilterHandlersWithResolverConfig, IntentRequestWithResolverConfig, IntentResolverResponse, ResolverConfig } from \"../intents/types\";\nimport { BasePrefsConfig, PrefsHelloSuccess, PrefsOperationTypes } from \"../prefs/protocol\";\n\nexport const nonEmptyStringDecoder: Decoder = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nexport const nonNegativeNumberDecoder: Decoder = number().where((num) => num >= 0, \"Expected a non-negative number\");\nexport const optionalNonEmptyStringDecoder: Decoder = optional(nonEmptyStringDecoder);\n\nexport const libDomainDecoder: Decoder = oneOf<\"system\" | \"windows\" | \"appManager\" | \"layouts\" | \"intents\" | \"notifications\" | \"channels\" | \"extension\" | \"themes\" | \"prefs\">(\n constant(\"system\"),\n constant(\"windows\"),\n constant(\"appManager\"),\n constant(\"layouts\"),\n constant(\"intents\"),\n constant(\"notifications\"),\n constant(\"channels\"),\n constant(\"extension\"),\n constant(\"themes\"),\n constant(\"prefs\")\n);\n\nexport const windowOperationTypesDecoder: Decoder = oneOf<\"openWindow\" | \"getBounds\" | \"getFrameBounds\" | \"windowHello\" | \"windowAdded\" | \"windowRemoved\" | \"getUrl\" | \"moveResize\" | \"focus\" | \"close\" | \"getTitle\" | \"setTitle\" | \"focusChange\" | \"getChannel\">(\n constant(\"openWindow\"),\n constant(\"windowHello\"),\n constant(\"windowAdded\"),\n constant(\"windowRemoved\"),\n constant(\"getBounds\"),\n constant(\"getFrameBounds\"),\n constant(\"getUrl\"),\n constant(\"moveResize\"),\n constant(\"focus\"),\n constant(\"close\"),\n constant(\"getTitle\"),\n constant(\"setTitle\"),\n constant(\"focusChange\"),\n constant(\"getChannel\"),\n);\n\nexport const appManagerOperationTypesDecoder: Decoder = oneOf<\"appHello\" | \"appDirectoryStateChange\" | \"instanceStarted\" | \"instanceStopped\" | \"applicationStart\" | \"instanceStop\" | \"clear\">(\n constant(\"appHello\"),\n constant(\"appDirectoryStateChange\"),\n constant(\"instanceStarted\"),\n constant(\"instanceStopped\"),\n constant(\"applicationStart\"),\n constant(\"instanceStop\"),\n constant(\"clear\")\n);\n\nexport const layoutsOperationTypesDecoder: Decoder = oneOf<\"layoutAdded\" | \"layoutChanged\" | \"layoutRemoved\" | \"get\" | \"getAll\" | \"export\" | \"import\" | \"remove\" | \"clientSaveRequest\" | \"getGlobalPermissionState\" | \"requestGlobalPermission\" | \"checkGlobalActivated\" | \"getDefaultGlobal\" | \"setDefaultGlobal\" | \"clearDefaultGlobal\">(\n constant(\"layoutAdded\"),\n constant(\"layoutChanged\"),\n constant(\"layoutRemoved\"),\n constant(\"get\"),\n constant(\"getAll\"),\n constant(\"export\"),\n constant(\"import\"),\n constant(\"remove\"),\n constant(\"clientSaveRequest\"),\n constant(\"getGlobalPermissionState\"),\n constant(\"checkGlobalActivated\"),\n constant(\"requestGlobalPermission\"),\n constant(\"getDefaultGlobal\"),\n constant(\"setDefaultGlobal\"),\n constant(\"clearDefaultGlobal\")\n);\n\nexport const notificationsOperationTypesDecoder: Decoder = oneOf<\"raiseNotification\" | \"requestPermission\" | \"notificationShow\" | \"notificationClick\" | \"getPermission\" | \"list\" | \"notificationRaised\" | \"notificationClosed\" | \"click\" | \"clear\" | \"clearAll\" | \"configure\" | \"getConfiguration\" | \"configurationChanged\" | \"setState\" | \"clearOld\" | \"activeCountChange\" | \"stateChange\">(\n constant(\"raiseNotification\"),\n constant(\"requestPermission\"),\n constant(\"notificationShow\"),\n constant(\"notificationClick\"),\n constant(\"getPermission\"),\n constant(\"list\"),\n constant(\"notificationRaised\"),\n constant(\"notificationClosed\"),\n constant(\"click\"),\n constant(\"clear\"),\n constant(\"clearAll\"),\n constant(\"configure\"),\n constant(\"getConfiguration\"),\n constant(\"configurationChanged\"),\n constant(\"setState\"),\n constant(\"clearOld\"),\n constant(\"activeCountChange\"),\n constant(\"stateChange\")\n);\n\nexport const systemOperationTypesDecoder: Decoder = oneOf<\"getEnvironment\" | \"getBase\" | \"platformShutdown\">(\n constant(\"getEnvironment\"),\n constant(\"getBase\"),\n constant(\"platformShutdown\")\n);\n\nexport const windowRelativeDirectionDecoder: Decoder = oneOf<\"top\" | \"left\" | \"right\" | \"bottom\">(\n constant(\"top\"),\n constant(\"left\"),\n constant(\"right\"),\n constant(\"bottom\")\n);\n\nexport const windowBoundsDecoder: Decoder = object({\n top: number(),\n left: number(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n});\n\nexport const windowOpenSettingsDecoder: Decoder = optional(object({\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder),\n context: optional(anyJson()),\n relativeTo: optional(nonEmptyStringDecoder),\n relativeDirection: optional(windowRelativeDirectionDecoder),\n windowId: optional(nonEmptyStringDecoder),\n layoutComponentId: optional(nonEmptyStringDecoder)\n}));\n\nexport const openWindowConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n url: nonEmptyStringDecoder,\n options: windowOpenSettingsDecoder\n});\n\nexport const windowHelloDecoder: Decoder = object({\n windowId: optional(nonEmptyStringDecoder)\n});\n\nexport const coreWindowDataDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder\n});\n\nexport const simpleWindowDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder\n});\n\nexport const helloSuccessDecoder: Decoder = object({\n windows: array(coreWindowDataDecoder),\n isWorkspaceFrame: boolean()\n});\n\n\nexport const windowTitleConfigDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n title: string()\n});\n\nexport const focusEventDataDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n hasFocus: boolean()\n});\n\nexport const windowMoveResizeConfigDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder),\n relative: optional(boolean())\n});\n\nexport const windowBoundsResultDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n bounds: object({\n top: number(),\n left: number(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n })\n});\n\nexport const frameWindowBoundsResultDecoder: Decoder = object({\n bounds: object({\n top: number(),\n left: number(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n })\n});\n\nexport const windowUrlResultDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n url: nonEmptyStringDecoder\n});\n\nexport const anyDecoder: Decoder = anyJson();\n\nexport const boundsDecoder: Decoder> = object({\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\n\nexport const instanceDataDecoder: Decoder = object({\n id: nonEmptyStringDecoder,\n applicationName: nonEmptyStringDecoder\n});\n\nexport const applicationDetailsDecoder: Decoder = object({\n url: nonEmptyStringDecoder,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\n\nexport const intentDefinitionDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n displayName: optional(string()),\n contexts: optional(array(string())),\n customConfig: optional(object())\n});\n\nexport const fdc3AppDefinitionDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n appId: optional(nonEmptyStringDecoder),\n manifest: nonEmptyStringDecoder,\n manifestType: nonEmptyStringDecoder,\n tooltip: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n images: optional(array(object({ url: optional(nonEmptyStringDecoder) }))),\n icons: optional(array(object({ icon: optional(nonEmptyStringDecoder) }))),\n customConfig: anyJson(),\n intents: optional(array(intentDefinitionDecoder))\n});\n\nexport const applicationDefinitionDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n customProperties: optional(anyJson()),\n icon: optional(string()),\n caption: optional(string()),\n details: applicationDetailsDecoder,\n intents: optional(array(intentDefinitionDecoder)),\n hidden: optional(boolean()),\n fdc3: optional(decoders.fdc3.v2DefinitionDecoder)\n});\n\nexport const allApplicationDefinitionsDecoder: Decoder = oneOf(\n applicationDefinitionDecoder,\n decoders.fdc3.v2DefinitionDecoder,\n decoders.fdc3.v1DefinitionDecoder\n);\n\nexport const appsImportOperationDecoder: Decoder = object({\n definitions: array(allApplicationDefinitionsDecoder),\n mode: oneOf<\"replace\" | \"merge\">(\n constant(\"replace\"),\n constant(\"merge\")\n )\n});\n\nexport const appRemoveConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder\n});\n\nexport const appsExportOperationDecoder: Decoder = object({\n definitions: array(applicationDefinitionDecoder)\n});\n\nexport const applicationDataDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\n instances: array(instanceDataDecoder),\n userProperties: optional(anyJson()),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n icon: optional(nonEmptyStringDecoder),\n caption: optional(nonEmptyStringDecoder)\n});\n\nexport const baseApplicationDataDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\n userProperties: anyJson(),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n icon: optional(nonEmptyStringDecoder),\n caption: optional(nonEmptyStringDecoder)\n});\n\nexport const appDirectoryStateChangeDecoder: Decoder = object({\n appsAdded: array(baseApplicationDataDecoder),\n appsChanged: array(baseApplicationDataDecoder),\n appsRemoved: array(baseApplicationDataDecoder)\n});\n\nexport const appHelloSuccessDecoder: Decoder = object({\n apps: array(applicationDataDecoder),\n initialChannelId: optional(nonEmptyStringDecoder)\n});\n\nexport const basicInstanceDataDecoder: Decoder = object({\n id: nonEmptyStringDecoder\n});\n\nexport const applicationStartConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n waitForAGMReady: boolean(),\n id: optional(nonEmptyStringDecoder),\n context: optional(anyJson()),\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder),\n relativeTo: optional(nonEmptyStringDecoder),\n relativeDirection: optional(windowRelativeDirectionDecoder),\n forceChromeTab: optional(boolean()),\n layoutComponentId: optional(nonEmptyStringDecoder),\n channelId: optional(nonEmptyStringDecoder)\n});\n\nexport const layoutTypeDecoder: Decoder = oneOf<\"Global\" | \"Activity\" | \"ApplicationDefault\" | \"Swimlane\" | \"Workspace\">(\n constant(\"Global\"),\n constant(\"Activity\"),\n constant(\"ApplicationDefault\"),\n constant(\"Swimlane\"),\n constant(\"Workspace\")\n);\n\nexport const componentTypeDecoder: Decoder = oneOf<\"application\" | \"activity\">(\n constant(\"application\"),\n constant(\"activity\")\n);\n\nexport const windowComponentStateDecoder: Decoder = object({\n context: optional(anyJson()),\n bounds: windowBoundsDecoder,\n createArgs: object({\n name: optional(nonEmptyStringDecoder),\n url: optional(nonEmptyStringDecoder),\n context: optional(anyJson())\n }),\n windowState: optional(nonEmptyStringDecoder),\n restoreState: optional(nonEmptyStringDecoder),\n instanceId: nonEmptyStringDecoder,\n isCollapsed: optional(boolean()),\n isSticky: optional(boolean()),\n restoreSettings: object({\n groupId: optional(nonEmptyStringDecoder),\n groupZOrder: optional(number())\n })\n});\n\nexport const windowLayoutComponentDecoder: Decoder = object({\n type: constant(\"window\"),\n componentType: optional(componentTypeDecoder),\n application: nonEmptyStringDecoder,\n state: windowComponentStateDecoder\n});\n\nexport const windowLayoutItemDecoder: Decoder = object({\n type: constant(\"window\"),\n config: object({\n appName: nonEmptyStringDecoder,\n url: optional(nonEmptyStringDecoder),\n title: optional(string()),\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n showCloseButton: optional(boolean()),\n isMaximized: optional(boolean())\n })\n});\n\nexport const groupLayoutItemDecoder: Decoder = object({\n type: constant(\"group\"),\n config: anyJson(),\n children: array(oneOf(\n windowLayoutItemDecoder\n ))\n});\n\nexport const columnLayoutItemDecoder: Decoder = object({\n type: constant(\"column\"),\n config: anyJson(),\n children: array(oneOf(\n groupLayoutItemDecoder,\n windowLayoutItemDecoder,\n lazy(() => columnLayoutItemDecoder),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n lazy(() => rowLayoutItemDecoder)\n ))\n});\n\nexport const rowLayoutItemDecoder: Decoder = object({\n type: constant(\"row\"),\n config: anyJson(),\n children: array(oneOf(\n columnLayoutItemDecoder,\n groupLayoutItemDecoder,\n windowLayoutItemDecoder,\n lazy(() => rowLayoutItemDecoder)\n ))\n});\n\nexport const workspaceLayoutComponentStateDecoder: Decoder = object({\n config: anyJson(),\n context: anyJson(),\n children: array(oneOf(\n rowLayoutItemDecoder,\n columnLayoutItemDecoder,\n groupLayoutItemDecoder,\n windowLayoutItemDecoder\n ))\n});\n\nexport const workspaceLayoutComponentDecoder: Decoder = object({\n type: constant(\"Workspace\"),\n application: optional(nonEmptyStringDecoder),\n state: workspaceLayoutComponentStateDecoder\n});\n\nexport const workspaceFrameComponentStateDecoder: Decoder = object({\n bounds: windowBoundsDecoder,\n instanceId: nonEmptyStringDecoder,\n selectedWorkspace: nonNegativeNumberDecoder,\n workspaces: array(workspaceLayoutComponentStateDecoder),\n windowState: optional(nonEmptyStringDecoder),\n restoreState: optional(nonEmptyStringDecoder),\n context: optional(anyJson())\n});\n\nexport const workspaceFrameComponentDecoder: Decoder = object({\n type: constant<\"workspaceFrame\">(\"workspaceFrame\"),\n application: nonEmptyStringDecoder,\n componentType: optional(componentTypeDecoder),\n state: workspaceFrameComponentStateDecoder\n});\n\nexport const glueLayoutDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: layoutTypeDecoder,\n components: array(oneOf(\n windowLayoutComponentDecoder,\n workspaceLayoutComponentDecoder,\n workspaceFrameComponentDecoder\n )),\n context: optional(anyJson()),\n metadata: optional(anyJson()),\n version: optional(number())\n});\n\nexport const newLayoutOptionsDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n context: optional(anyJson()),\n metadata: optional(anyJson()),\n instances: optional(array(nonEmptyStringDecoder)),\n ignoreInstances: optional(array(nonEmptyStringDecoder))\n});\n\nexport const restoreOptionsDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n context: optional(anyJson()),\n closeRunningInstance: optional(boolean()),\n closeMe: optional(boolean()),\n timeout: optional(nonNegativeNumberDecoder)\n});\n\nexport const layoutSummaryDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: layoutTypeDecoder,\n context: optional(anyJson()),\n metadata: optional(anyJson())\n});\n\nexport const simpleLayoutConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: layoutTypeDecoder\n});\n\nexport const saveLayoutConfigDecoder: Decoder = object({\n layout: newLayoutOptionsDecoder\n});\n\nexport const restoreLayoutConfigDecoder: Decoder = object({\n layout: restoreOptionsDecoder\n});\n\nexport const getAllLayoutsConfigDecoder: Decoder = object({\n type: layoutTypeDecoder\n});\n\nexport const allLayoutsFullConfigDecoder: Decoder = object({\n layouts: array(glueLayoutDecoder)\n});\n\nexport const importModeDecoder: Decoder<\"replace\" | \"merge\"> = oneOf<\"replace\" | \"merge\">(\n constant(\"replace\"),\n constant(\"merge\")\n);\n\nexport const layoutsImportConfigDecoder: Decoder = object({\n layouts: array(glueLayoutDecoder),\n mode: importModeDecoder,\n isManagerOperation: optional(boolean())\n});\n\nexport const allLayoutsSummariesResultDecoder: Decoder = object({\n summaries: array(layoutSummaryDecoder)\n});\n\nexport const simpleLayoutResultDecoder: Decoder = object({\n layout: glueLayoutDecoder\n});\n\nexport const optionalSimpleLayoutResult: Decoder = object({\n layout: optional(glueLayoutDecoder)\n});\n\nexport const setDefaultGlobalConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder\n});\n\nexport const intentsOperationTypesDecoder: Decoder = oneOf<\"findIntent\" | \"getIntents\" | \"raiseIntent\" | \"raise\" | \"filterHandlers\">(\n constant(\"findIntent\"),\n constant(\"getIntents\"),\n constant(\"raiseIntent\"),\n constant(\"raise\"),\n constant(\"filterHandlers\")\n);\n\nexport const intentHandlerDecoder: Decoder = object({\n applicationName: nonEmptyStringDecoder,\n applicationTitle: optional(string()),\n applicationDescription: optional(string()),\n applicationIcon: optional(string()),\n type: oneOf<\"app\" | \"instance\">(constant(\"app\"), constant(\"instance\")),\n displayName: optional(string()),\n contextTypes: optional(array(nonEmptyStringDecoder)),\n instanceId: optional(string()),\n instanceTitle: optional(string()),\n resultType: optional(string())\n});\n\nexport const resolverIntentHandlerDecoder = object({\n applicationName: string(),\n applicationIcon: optional(string()),\n instanceId: optional(string()),\n});\n\nexport const intentResolverResponseDecoder: Decoder = object({\n intent: nonEmptyStringDecoder,\n handler: intentHandlerDecoder\n});\n\nconst intentDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n handlers: array(intentHandlerDecoder)\n});\n\nconst intentTargetDecoder: Decoder<\"startNew\" | \"reuse\" | { app?: string; instance?: string }> = oneOf<\"startNew\" | \"reuse\" | { app?: string; instance?: string }>(\n constant(\"startNew\"),\n constant(\"reuse\"),\n object({\n app: optional(nonEmptyStringDecoder),\n instance: optional(nonEmptyStringDecoder)\n })\n);\n\nconst intentContextDecoder: Decoder = object({\n type: optional(nonEmptyStringDecoder),\n data: optional(anyJson())\n});\n\nexport const intentsDecoder: Decoder = array(intentDecoder);\n\nexport const wrappedIntentsDecoder: Decoder = object({\n intents: intentsDecoder\n});\n\nexport const intentFilterDecoder: Decoder = object({\n name: optional(nonEmptyStringDecoder),\n contextType: optional(nonEmptyStringDecoder),\n resultType: optional(nonEmptyStringDecoder)\n});\n\nexport const findFilterDecoder: Decoder = oneOf(\n nonEmptyStringDecoder,\n intentFilterDecoder\n);\n\nexport const wrappedIntentFilterDecoder: Decoder = object({\n filter: optional(intentFilterDecoder)\n});\n\nexport const intentRequestDecoder: Decoder = object({\n intent: nonEmptyStringDecoder,\n target: optional(intentTargetDecoder),\n context: optional(intentContextDecoder),\n options: optional(windowOpenSettingsDecoder),\n handlers: optional(array(intentHandlerDecoder)),\n timeout: optional(nonNegativeNumberDecoder),\n waitUserResponseIndefinitely: optional(boolean())\n});\n\nexport const raiseRequestDecoder: Decoder = oneOf(\n nonEmptyStringDecoder,\n intentRequestDecoder\n);\n\nexport const resolverConfigDecoder: Decoder = object({\n enabled: boolean(),\n appName: nonEmptyStringDecoder,\n waitResponseTimeout: number()\n});\n\nexport const raiseIntentRequestDecoder: Decoder = object({\n intentRequest: intentRequestDecoder,\n resolverConfig: resolverConfigDecoder\n});\n\nexport const intentResultDecoder: Decoder = object({\n request: intentRequestDecoder,\n handler: intentHandlerDecoder,\n result: anyJson()\n});\n\nexport const handlersFilterDecoder: Decoder = object({\n title: optional(nonEmptyStringDecoder),\n openResolver: optional(boolean()),\n timeout: optional(nonNegativeNumberDecoder),\n intent: optional(nonEmptyStringDecoder),\n contextTypes: optional(array(nonEmptyStringDecoder)),\n resultType: optional(nonEmptyStringDecoder),\n applicationNames: optional(array(nonEmptyStringDecoder))\n});\n\nexport const filterHandlersResultDecoder: Decoder = object({\n handlers: array(intentHandlerDecoder)\n});\n\nexport const filterHandlersWithResolverConfigDecoder: Decoder = object({\n filterHandlersRequest: handlersFilterDecoder,\n resolverConfig: resolverConfigDecoder\n});\n\nexport const AddIntentListenerRequestDecoder: Decoder = object({\n intent: nonEmptyStringDecoder,\n contextTypes: optional(array(nonEmptyStringDecoder)),\n displayName: optional(string()),\n icon: optional(string()),\n description: optional(string()),\n resultType: optional(string())\n});\n\nexport const AddIntentListenerDecoder: Decoder = oneOf(\n nonEmptyStringDecoder,\n AddIntentListenerRequestDecoder\n);\n\nexport const intentInfoDecoder: Decoder = object({\n intent: nonEmptyStringDecoder,\n contextTypes: optional(array(nonEmptyStringDecoder)),\n description: optional(nonEmptyStringDecoder),\n displayName: optional(nonEmptyStringDecoder),\n icon: optional(nonEmptyStringDecoder),\n resultType: optional(nonEmptyStringDecoder)\n});\n\nexport const getIntentsResultDecoder: Decoder = object({\n intents: array(intentInfoDecoder)\n});\n\nexport const channelNameDecoder = (channelNames: string[]): Decoder => {\n return nonEmptyStringDecoder.where(s => channelNames.includes(s), \"Expected a valid channel name\");\n};\n\nexport const interopActionSettingsDecoder: Decoder = object({\n method: nonEmptyStringDecoder,\n arguments: optional(anyJson()),\n target: optional(oneOf<\"all\" | \"best\">(\n constant(\"all\"),\n constant(\"best\")\n ))\n});\n\nexport const glue42NotificationActionDecoder: Decoder = object({\n action: string(),\n title: nonEmptyStringDecoder,\n icon: optional(string()),\n interop: optional(interopActionSettingsDecoder)\n});\n\nexport const notificationStateDecoder: Decoder = oneOf<\"Active\" | \"Acknowledged\" | \"Seen\" | \"Closed\" | \"Stale\" | \"Snoozed\" | \"Processing\">(\n constant(\"Active\"),\n constant(\"Acknowledged\"),\n constant(\"Seen\"),\n constant(\"Closed\"),\n constant(\"Stale\"),\n constant(\"Snoozed\"),\n constant(\"Processing\")\n);\n\nexport const activeNotificationsCountChangeDecoder: Decoder = object({\n count: number()\n});\n\nexport const notificationDefinitionDecoder: Decoder = object({\n badge: optional(string()),\n body: optional(string()),\n data: optional(anyJson()),\n dir: optional(oneOf<\"auto\" | \"ltr\" | \"rtl\">(\n constant(\"auto\"),\n constant(\"ltr\"),\n constant(\"rtl\")\n )),\n icon: optional(string()),\n image: optional(string()),\n lang: optional(string()),\n renotify: optional(boolean()),\n requireInteraction: optional(boolean()),\n silent: optional(boolean()),\n tag: optional(string()),\n timestamp: optional(nonNegativeNumberDecoder),\n vibrate: optional(array(number()))\n});\n\nexport const glue42NotificationOptionsDecoder: Decoder = object({\n title: nonEmptyStringDecoder,\n clickInterop: optional(interopActionSettingsDecoder),\n actions: optional(array(glue42NotificationActionDecoder)),\n focusPlatformOnDefaultClick: optional(boolean()),\n badge: optional(string()),\n body: optional(string()),\n data: optional(anyJson()),\n dir: optional(oneOf<\"auto\" | \"ltr\" | \"rtl\">(\n constant(\"auto\"),\n constant(\"ltr\"),\n constant(\"rtl\")\n )),\n icon: optional(string()),\n image: optional(string()),\n lang: optional(string()),\n renotify: optional(boolean()),\n requireInteraction: optional(boolean()),\n silent: optional(boolean()),\n tag: optional(string()),\n timestamp: optional(nonNegativeNumberDecoder),\n vibrate: optional(array(number())),\n severity: optional(oneOf<\"Low\" | \"Medium\" | \"High\" | \"Critical\" | \"None\">(\n constant(\"Low\"),\n constant(\"None\"),\n constant(\"Medium\"),\n constant(\"High\"),\n constant(\"Critical\")\n )),\n showToast: optional(boolean()),\n showInPanel: optional(boolean()),\n state: optional(notificationStateDecoder)\n});\n\nexport const notificationSetStateRequestDecoder: Decoder = object({\n id: nonEmptyStringDecoder,\n state: notificationStateDecoder\n}); \n\nexport const channelContextDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n meta: object({\n color: nonEmptyStringDecoder\n }),\n data: optional(object()),\n});\n\n\nexport const raiseNotificationDecoder: Decoder = object({\n settings: glue42NotificationOptionsDecoder,\n id: nonEmptyStringDecoder\n});\n\nexport const raiseNotificationResultDecoder: Decoder = object({\n settings: glue42NotificationOptionsDecoder\n});\n\nexport const permissionRequestResultDecoder: Decoder = object({\n permissionGranted: boolean()\n});\n\nexport const permissionQueryResultDecoder: Decoder = object({\n permission: oneOf<\"default\" | \"granted\" | \"denied\">(\n constant(\"default\"),\n constant(\"granted\"),\n constant(\"denied\")\n )\n});\n\nexport const notificationEventPayloadDecoder: Decoder = object({\n definition: notificationDefinitionDecoder,\n action: optional(string()),\n id: optional(nonEmptyStringDecoder)\n});\n\nexport const notificationFilterDecoder: Decoder = object({\n allowed: optional(array(nonEmptyStringDecoder)),\n blocked: optional(array(nonEmptyStringDecoder))\n});\n\nexport const notificationsConfigurationDecoder: Decoder = object({\n enable: optional(boolean()),\n enableToasts: optional(boolean()),\n sourceFilter: optional(notificationFilterDecoder),\n}); \n\nexport const notificationsConfigurationProtocolDecoder: Decoder = object({\n configuration: notificationsConfigurationDecoder\n});\n\nexport const strictNotificationsConfigurationProtocolDecoder: Decoder = object({\n configuration: object({\n enable: boolean(),\n enableToasts: boolean(),\n sourceFilter: object({\n allowed: array(nonEmptyStringDecoder),\n blocked: array(nonEmptyStringDecoder)\n })\n })\n});\n\nexport const platformSaveRequestConfigDecoder: Decoder = object({\n layoutType: oneOf<\"Global\" | \"Workspace\">(\n constant(\"Global\"),\n constant(\"Workspace\")\n ),\n layoutName: nonEmptyStringDecoder,\n context: optional(anyJson())\n});\n\nexport const saveRequestClientResponseDecoder: Decoder = object({\n windowContext: optional(anyJson()),\n});\n\nexport const permissionStateResultDecoder: Decoder = object({\n state: oneOf<\"prompt\" | \"granted\" | \"denied\">(\n constant(\"prompt\"),\n constant(\"denied\"),\n constant(\"granted\")\n )\n});\n\nexport const simpleAvailabilityResultDecoder: Decoder = object({\n isAvailable: boolean()\n});\n\nexport const simpleItemIdDecoder: Decoder = object({\n itemId: nonEmptyStringDecoder\n});\n\nexport const operationCheckResultDecoder: Decoder = object({\n isSupported: boolean()\n});\n\nexport const operationCheckConfigDecoder: Decoder = object({\n operation: nonEmptyStringDecoder\n});\n\nexport const workspaceFrameBoundsResultDecoder: Decoder = object({\n bounds: windowBoundsDecoder\n});\n\nexport const themeDecoder: Decoder = object({\n displayName: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder\n});\n\nexport const simpleThemeResponseDecoder: Decoder = object({\n theme: themeDecoder\n});\n\nexport const allThemesResponseDecoder: Decoder = object({\n themes: array(themeDecoder)\n});\n\nexport const selectThemeConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder\n});\n\nexport const notificationsDataDecoder: Decoder = object({\n id: nonEmptyStringDecoder,\n title: nonEmptyStringDecoder,\n clickInterop: optional(interopActionSettingsDecoder),\n actions: optional(array(glue42NotificationActionDecoder)),\n focusPlatformOnDefaultClick: optional(boolean()),\n badge: optional(string()),\n body: optional(string()),\n data: optional(anyJson()),\n dir: optional(oneOf<\"auto\" | \"ltr\" | \"rtl\">(\n constant(\"auto\"),\n constant(\"ltr\"),\n constant(\"rtl\")\n )),\n icon: optional(string()),\n image: optional(string()),\n lang: optional(string()),\n renotify: optional(boolean()),\n requireInteraction: optional(boolean()),\n silent: optional(boolean()),\n tag: optional(string()),\n timestamp: optional(nonNegativeNumberDecoder),\n vibrate: optional(array(number())),\n severity: optional(oneOf<\"Low\" | \"Medium\" | \"High\" | \"Critical\" | \"None\">(\n constant(\"Low\"),\n constant(\"None\"),\n constant(\"Medium\"),\n constant(\"High\"),\n constant(\"Critical\")\n )),\n showToast: optional(boolean()),\n showInPanel: optional(boolean()),\n state: optional(notificationStateDecoder)\n});\n\nexport const simpleNotificationDataDecoder: Decoder = object({\n notification: notificationsDataDecoder\n});\n\nexport const allNotificationsDataDecoder: Decoder = object({\n notifications: array(notificationsDataDecoder)\n});\n\nexport const simpleNotificationSelectDecoder: Decoder = object({\n id: nonEmptyStringDecoder\n});\n\nexport const getWindowIdsOnChannelDataDecoder: Decoder<{ channel: string }> = object({\n channel: nonEmptyStringDecoder\n});\n\nexport const getWindowIdsOnChannelResultDecoder: Decoder = object({\n windowIds: array(nonEmptyStringDecoder)\n});\n\nexport const channelsOperationTypesDecoder: Decoder = oneOf<\"addChannel\" | \"getMyChannel\" | \"getWindowIdsOnChannel\" | \"getWindowIdsWithChannels\" | \"joinChannel\">(\n constant(\"addChannel\"),\n constant(\"getMyChannel\"),\n constant(\"getWindowIdsOnChannel\"),\n constant(\"getWindowIdsWithChannels\"),\n constant(\"joinChannel\"),\n);\n\nexport const getMyChanelResultDecoder: Decoder = object({\n channel: optional(nonEmptyStringDecoder)\n});\n\nexport const windowWithChannelFilterDecoder: Decoder = object({\n application: optional(nonEmptyStringDecoder),\n channels: optional(array(nonEmptyStringDecoder)),\n windowIds: optional(array(nonEmptyStringDecoder))\n});\n\nexport const wrappedWindowWithChannelFilterDecoder: Decoder = object({\n filter: optional(windowWithChannelFilterDecoder)\n});\n\nexport const getWindowIdsWithChannelsResultDecoder: Decoder = object({\n windowIdsWithChannels: array(object({\n application: nonEmptyStringDecoder,\n channel: optional(nonEmptyStringDecoder),\n windowId: nonEmptyStringDecoder\n }))\n});\nexport const startApplicationContextDecoder = optional(anyJson());\n\nexport const startApplicationOptionsDecoder: Decoder = optional(object({\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder),\n relativeTo: optional(nonEmptyStringDecoder),\n relativeDirection: optional(windowRelativeDirectionDecoder),\n waitForAGMReady: optional(boolean()),\n channelId: optional(nonEmptyStringDecoder),\n reuseId: optional(nonEmptyStringDecoder),\n}));\n\nexport const joinChannelDataDecoder: Decoder = object({\n channel: nonEmptyStringDecoder,\n windowId: nonEmptyStringDecoder\n});\n\nexport const windowChannelResultDecoder: Decoder = object({\n channel: optional(nonEmptyStringDecoder),\n});\n\nexport const prefsOperationTypesDecoder: Decoder = oneOf<\"clear\" | \"clearAll\" | \"get\" | \"getAll\" | \"set\" | \"update\" | \"prefsChanged\" | \"prefsHello\">(\n constant(\"clear\"),\n constant(\"clearAll\"),\n constant(\"get\"),\n constant(\"getAll\"),\n constant(\"set\"),\n constant(\"update\"),\n constant(\"prefsChanged\"),\n constant(\"prefsHello\"),\n);\n\nexport const appPreferencesDecoder: Decoder = object({\n app: nonEmptyStringDecoder,\n data: object(), \n lastUpdate: optional(nonEmptyStringDecoder),\n});\n\nexport const basePrefsConfigDecoder: Decoder = object({\n app: nonEmptyStringDecoder,\n});\n\nexport const getPrefsResultDecoder: Decoder<{ prefs: IOConnectBrowser.Prefs.AppPreferences }> = object({\n prefs: appPreferencesDecoder,\n});\n\nexport const getAllPrefsResultDecoder: Decoder<{ all: IOConnectBrowser.Prefs.AppPreferences[] }> = object({\n all: array(appPreferencesDecoder),\n});\n\nexport const changePrefsDataDecoder: Decoder<{ app: string, data: any }> = object({\n app: nonEmptyStringDecoder,\n data: object(),\n});\n\nexport const prefsHelloSuccessDecoder: Decoder = object({\n platform: object({\n app: nonEmptyStringDecoder,\n }),\n});\n","import { IOConnectBrowser } from \"../../browser\";\nimport { openWindowConfigDecoder, coreWindowDataDecoder, windowHelloDecoder, helloSuccessDecoder, simpleWindowDecoder, windowBoundsResultDecoder, windowUrlResultDecoder, windowMoveResizeConfigDecoder, windowTitleConfigDecoder, frameWindowBoundsResultDecoder, focusEventDataDecoder, windowChannelResultDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\nimport { WebWindowModel } from \"./webWindow\";\n\nexport type WindowOperationTypes = \"openWindow\" | \"getBounds\" | \"getFrameBounds\" |\n \"windowHello\" | \"windowAdded\" | \"windowRemoved\" | \"getUrl\" |\n \"moveResize\" | \"focus\" | \"close\" | \"getTitle\" | \"setTitle\" | \"focusChange\" |\n \"getChannel\";\n\nexport const operations: { [key in WindowOperationTypes]: BridgeOperation } = {\n openWindow: { name: \"openWindow\", dataDecoder: openWindowConfigDecoder, resultDecoder: coreWindowDataDecoder },\n windowHello: { name: \"windowHello\", dataDecoder: windowHelloDecoder, resultDecoder: helloSuccessDecoder },\n windowAdded: { name: \"windowAdded\", dataDecoder: coreWindowDataDecoder },\n windowRemoved: { name: \"windowRemoved\", dataDecoder: simpleWindowDecoder },\n getBounds: { name: \"getBounds\", dataDecoder: simpleWindowDecoder, resultDecoder: windowBoundsResultDecoder },\n getFrameBounds: { name: \"getFrameBounds\", dataDecoder: simpleWindowDecoder, resultDecoder: frameWindowBoundsResultDecoder },\n getUrl: { name: \"getUrl\", dataDecoder: simpleWindowDecoder, resultDecoder: windowUrlResultDecoder },\n moveResize: { name: \"moveResize\", dataDecoder: windowMoveResizeConfigDecoder },\n focus: { name: \"focus\", dataDecoder: simpleWindowDecoder },\n close: { name: \"close\", dataDecoder: simpleWindowDecoder },\n getTitle: { name: \"getTitle\", dataDecoder: simpleWindowDecoder, resultDecoder: windowTitleConfigDecoder },\n setTitle: { name: \"setTitle\", dataDecoder: windowTitleConfigDecoder },\n focusChange: { name: \"focusChange\", dataDecoder: focusEventDataDecoder },\n getChannel: { name: \"getChannel\", dataDecoder: simpleWindowDecoder, resultDecoder: windowChannelResultDecoder },\n};\n\nexport interface WindowProjection {\n id: string;\n model: WebWindowModel;\n api: IOConnectBrowser.Windows.WebWindow;\n}\n\nexport interface WindowHello {\n windowId?: string;\n}\n\nexport interface OpenWindowConfig {\n name: string;\n url: string;\n options?: IOConnectBrowser.Windows.Settings;\n}\n\nexport interface FocusEventData {\n windowId: string;\n hasFocus: boolean;\n}\n\nexport interface SimpleWindowCommand {\n windowId: string;\n}\n\nexport interface WindowTitleConfig {\n windowId: string;\n title: string;\n}\n\nexport interface WindowMoveResizeConfig {\n windowId: string;\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n relative?: boolean;\n}\n\nexport interface HelloSuccess {\n windows: CoreWindowData[];\n isWorkspaceFrame: boolean;\n}\n\nexport interface CoreWindowData {\n windowId: string;\n name: string;\n}\n\nexport interface WindowBoundsResult {\n windowId: string;\n bounds: IOConnectBrowser.Windows.Bounds;\n}\n\nexport interface FrameWindowBoundsResult {\n bounds: IOConnectBrowser.Windows.Bounds;\n}\n\nexport interface WindowUrlResult {\n windowId: string;\n url: string;\n}\n\nexport interface WindowChannelResult {\n channel?: string;\n}\n","\"use strict\";\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\n;\ncreateRegistry.default = createRegistry;\nmodule.exports = createRegistry;\n//# sourceMappingURL=index.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { number } from \"decoder-validate\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { anyDecoder, boundsDecoder, nonEmptyStringDecoder, nonNegativeNumberDecoder } from \"../shared/decoders\";\nimport { operations, SimpleWindowCommand, WindowBoundsResult, WindowChannelResult, WindowMoveResizeConfig, WindowTitleConfig, WindowUrlResult } from \"./protocol\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\n\nexport class WebWindowModel {\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private readonly myCtxKey: string;\n private ctxUnsubscribe: UnsubscribeFunction | undefined;\n private me!: IOConnectBrowser.Windows.WebWindow;\n\n constructor(private readonly _id: string, private readonly _name: string, private readonly _bridge: GlueBridge) {\n this.myCtxKey = `___window___${this.id}`;\n }\n\n public get id(): string {\n return this._id.slice();\n }\n\n public get name(): string {\n return this._name.slice();\n }\n\n public clean(): void {\n if (this.ctxUnsubscribe) {\n this.ctxUnsubscribe();\n }\n }\n\n public processSelfFocusEvent(hasFocus: boolean): void {\n this.me.isFocused = hasFocus;\n\n this.registry.execute(\"focus-change\", this.me);\n }\n\n public async toApi(): Promise {\n\n this.ctxUnsubscribe = await this._bridge.contextLib.subscribe(this.myCtxKey, (data) => this.registry.execute(\"context-updated\", data));\n\n this.me = {\n id: this.id,\n name: this.name,\n isFocused: false,\n getURL: this.getURL.bind(this),\n moveResize: this.moveResize.bind(this),\n resizeTo: this.resizeTo.bind(this),\n moveTo: this.moveTo.bind(this),\n focus: this.focus.bind(this),\n close: this.close.bind(this),\n getTitle: this.getTitle.bind(this),\n setTitle: this.setTitle.bind(this),\n getBounds: this.getBounds.bind(this),\n getContext: this.getContext.bind(this),\n updateContext: this.updateContext.bind(this),\n setContext: this.setContext.bind(this),\n onContextUpdated: this.onContextUpdated.bind(this),\n onFocusChanged: this.onFocusChanged.bind(this),\n getChannel: this.getChannel.bind(this),\n };\n\n return this.me;\n }\n\n private async getURL(): Promise {\n const result = await this._bridge.send(\"windows\", operations.getUrl, { windowId: this.id });\n return result.url;\n }\n\n private onFocusChanged(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to context changes, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"focus-change\", callback);\n }\n\n private async moveResize(dimension: Partial): Promise {\n const targetBounds = boundsDecoder.runWithException(dimension);\n\n const commandArgs = Object.assign({}, targetBounds, { windowId: this.id, relative: false });\n\n await this._bridge.send(\"windows\", operations.moveResize, commandArgs);\n\n return this.me;\n }\n\n private async resizeTo(width?: number, height?: number): Promise {\n if (typeof width === \"undefined\" && typeof height === \"undefined\") {\n return this.me;\n }\n\n if (typeof width !== \"undefined\") {\n nonNegativeNumberDecoder.runWithException(width);\n }\n\n if (typeof height !== \"undefined\") {\n nonNegativeNumberDecoder.runWithException(height);\n }\n\n const commandArgs = Object.assign({}, { width, height }, { windowId: this.id, relative: true });\n\n await this._bridge.send(\"windows\", operations.moveResize, commandArgs);\n\n return this.me;\n }\n\n private async moveTo(top?: number, left?: number): Promise {\n if (typeof top === \"undefined\" && typeof left === \"undefined\") {\n return this.me;\n }\n\n if (typeof top !== \"undefined\") {\n number().runWithException(top);\n }\n\n if (typeof left !== \"undefined\") {\n number().runWithException(left);\n }\n\n const commandArgs = Object.assign({}, { top, left }, { windowId: this.id, relative: true });\n\n await this._bridge.send(\"windows\", operations.moveResize, commandArgs);\n\n return this.me;\n }\n\n private async focus(): Promise {\n if (this.name === \"Platform\") {\n window.open(undefined, this.id);\n } else {\n await this._bridge.send(\"windows\", operations.focus, { windowId: this.id });\n }\n\n return this.me;\n }\n\n private async close(): Promise {\n await this._bridge.send(\"windows\", operations.close, { windowId: this.id });\n\n return this.me;\n }\n\n private async getTitle(): Promise {\n const result = await this._bridge.send(\"windows\", operations.getTitle, { windowId: this.id });\n\n return result.title;\n }\n\n private async setTitle(title: string): Promise {\n const ttl = nonEmptyStringDecoder.runWithException(title);\n\n await this._bridge.send(\"windows\", operations.setTitle, { windowId: this.id, title: ttl });\n\n return this.me;\n }\n\n private async getBounds(): Promise {\n const result = await this._bridge.send(\"windows\", operations.getBounds, { windowId: this.id });\n\n return result.bounds;\n }\n\n private async getContext(): Promise {\n const ctx = await this._bridge.contextLib.get(this.myCtxKey);\n return ctx;\n }\n\n private async updateContext(context: any): Promise {\n const ctx = anyDecoder.runWithException(context);\n\n await this._bridge.contextLib.update(this.myCtxKey, ctx);\n\n return this.me;\n }\n\n private async setContext(context: any): Promise {\n const ctx = anyDecoder.runWithException(context);\n\n await this._bridge.contextLib.set(this.myCtxKey, ctx);\n\n return this.me;\n }\n\n private onContextUpdated(callback: (context: any, window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to context changes, because the provided callback is not a function!\");\n }\n\n const wrappedCallback = (data: any): void => {\n callback(data, this.me);\n };\n\n return this.registry.add(\"context-updated\", wrappedCallback);\n }\n\n private async getChannel(): Promise {\n const result = await this._bridge.send(\"windows\", operations.getChannel, { windowId: this.id }, undefined, { includeOperationCheck: true });\n\n return result.channel as string;\n }\n}\n","import { operationCheckConfigDecoder, operationCheckResultDecoder, simpleItemIdDecoder, workspaceFrameBoundsResultDecoder } from \"./decoders\";\nimport { BridgeOperation } from \"./types\";\n\nexport type SystemOperationTypes = \"operationCheck\" | \"getWorkspaceWindowFrameBounds\";\n\nexport const systemOperations: { [key in SystemOperationTypes]: BridgeOperation } = {\n operationCheck: { name: \"operationCheck\", dataDecoder: operationCheckConfigDecoder, resultDecoder: operationCheckResultDecoder },\n getWorkspaceWindowFrameBounds: { name: \"getWorkspaceWindowFrameBounds\", resultDecoder: workspaceFrameBoundsResultDecoder, dataDecoder: simpleItemIdDecoder }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nexport const PromiseWrap = (promise: () => Promise, timeoutMilliseconds: number, timeoutMessage?: string): Promise => {\r\n return new Promise((resolve, reject) => {\r\n\r\n let promiseActive = true;\r\n\r\n const timeout = setTimeout(() => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\r\n\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n\r\n promise()\r\n .then((result) => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch((error) => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n};\r\n\r\nexport const PromisePlus = (executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void, timeoutMilliseconds: number, timeoutMessage?: string): Promise => {\r\n\r\n return new Promise((resolve, reject) => {\r\n const timeout = setTimeout(() => {\r\n\r\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\r\n\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n\r\n const providedPromise = new Promise(executor);\r\n\r\n providedPromise\r\n .then((result) => {\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch((error) => {\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n\r\n};\r\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { nonEmptyStringDecoder, windowOpenSettingsDecoder, windowOperationTypesDecoder } from \"../shared/decoders\";\nimport { LibController, OperationCheckConfig, OperationCheckResult } from \"../shared/types\";\nimport { HelloSuccess, OpenWindowConfig, CoreWindowData, WindowHello, operations, WindowBoundsResult, WindowTitleConfig, WindowUrlResult, WindowMoveResizeConfig, WindowProjection, FocusEventData, WindowChannelResult } from \"./protocol\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { IoC } from \"../shared/ioc\";\nimport { systemOperations } from \"../shared/systemOperations\";\nimport { PromisePlus } from \"../shared/promise-plus\";\nimport { ChannelsController } from \"../channels/controller\";\n\nexport class WindowsController implements LibController {\n\n private focusEventHandler?: () => void;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private platformRegistration!: Promise;\n private ioc!: IoC;\n private bridge!: GlueBridge;\n private publicWindowId!: string;\n private allWindowProjections: WindowProjection[] = [];\n private me?: IOConnectBrowser.Windows.WebWindow;\n private logger!: IOConnectBrowser.Logger.API;\n private isWorkspaceFrame?: boolean;\n private instanceId!: string;\n private channelsController!: ChannelsController;\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n\n this.logger = coreGlue.logger.subLogger(\"windows.controller.web\");\n\n this.logger.trace(\"starting the web windows controller\");\n\n this.publicWindowId = ioc.publicWindowId;\n\n this.addWindowOperationExecutors();\n\n this.ioc = ioc;\n this.bridge = ioc.bridge;\n this.instanceId = coreGlue.interop.instance.instance as string;\n\n this.channelsController = ioc.channelsController;\n\n this.logger.trace(`set the public window id: ${this.publicWindowId}, set the bridge operations and ioc, registering with the platform now`);\n\n this.platformRegistration = this.registerWithPlatform();\n\n await this.platformRegistration;\n\n await this.initializeFocusTracking();\n\n this.logger.trace(\"registration with the platform successful, attaching the windows property to glue and returning\");\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).windows = api;\n }\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n this.allWindowProjections = [];\n\n if (!this.focusEventHandler) {\n return;\n }\n\n document.removeEventListener(\"visibilityChange\", this.focusEventHandler);\n window.removeEventListener(\"focus\", this.focusEventHandler);\n window.removeEventListener(\"blur\", this.focusEventHandler);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public async handleBridgeMessage(args: any): Promise {\n await this.platformRegistration;\n\n const operationName = windowOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private async open(name: string, url: string, options?: IOConnectBrowser.Windows.Settings): Promise {\n nonEmptyStringDecoder.runWithException(name);\n nonEmptyStringDecoder.runWithException(url);\n // layoutComponentId is a hidden property for global layouts\n const settings = windowOpenSettingsDecoder.runWithException(options);\n\n const windowSuccess = await this.bridge.send(\"windows\", operations.openWindow, { name, url, options: settings });\n\n return this.waitForWindowAdded(windowSuccess.windowId);\n }\n\n private list(): IOConnectBrowser.Windows.WebWindow[] {\n return this.allWindowProjections.map((projection) => projection.api);\n }\n\n public findById(id: string): IOConnectBrowser.Windows.WebWindow | undefined {\n nonEmptyStringDecoder.runWithException(id);\n\n return this.allWindowProjections.find((projection) => projection.id === id)?.api;\n }\n\n private toApi(): IOConnectBrowser.Windows.API {\n return {\n open: this.open.bind(this),\n my: this.my.bind(this),\n list: this.list.bind(this),\n findById: this.findById.bind(this),\n onWindowAdded: this.onWindowAdded.bind(this),\n onWindowRemoved: this.onWindowRemoved.bind(this),\n onWindowGotFocus: this.onWindowGotFocus.bind(this),\n onWindowLostFocus: this.onWindowLostFocus.bind(this)\n };\n }\n\n private addWindowOperationExecutors(): void {\n operations.focusChange.execute = this.handleFocusChangeEvent.bind(this);\n operations.windowAdded.execute = this.handleWindowAdded.bind(this);\n operations.windowRemoved.execute = this.handleWindowRemoved.bind(this);\n operations.getBounds.execute = this.handleGetBounds.bind(this);\n operations.getFrameBounds.execute = this.handleGetBounds.bind(this);\n operations.getTitle.execute = this.handleGetTitle.bind(this);\n operations.getUrl.execute = this.handleGetUrl.bind(this);\n operations.moveResize.execute = this.handleMoveResize.bind(this);\n operations.setTitle.execute = this.handleSetTitle.bind(this);\n operations.getChannel.execute = this.handleGetChannel.bind(this);\n }\n\n public my(): IOConnectBrowser.Windows.WebWindow {\n return Object.assign({}, this.me);\n }\n\n private onWindowAdded(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to window added, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"window-added\", callback);\n }\n\n private onWindowRemoved(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to window removed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"window-removed\", callback);\n }\n\n private onWindowGotFocus(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onWindowGotFocus, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"window-got-focus\", callback);\n }\n\n private onWindowLostFocus(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onWindowLostFocus, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"window-lost-focus\", callback);\n }\n\n private async sayHello(): Promise {\n const helloSuccess = await this.bridge.send(\"windows\", operations.windowHello, { windowId: this.publicWindowId });\n\n return helloSuccess;\n }\n\n private async registerWithPlatform(): Promise {\n\n const { windows, isWorkspaceFrame } = await this.sayHello();\n\n this.isWorkspaceFrame = isWorkspaceFrame;\n\n this.logger.trace(\"the platform responded to the hello message\");\n\n // if I am an iframe, I am not considered a Glue Window\n if (!this.isWorkspaceFrame && this.publicWindowId) {\n this.logger.trace(\"i am not treated as a workspace frame, setting my window\");\n\n const myWindow = windows.find((w) => w.windowId === this.publicWindowId);\n\n if (!myWindow) {\n throw new Error(\"Cannot initialize the window library, because I received no information about me from the platform\");\n }\n\n const myProjection = await this.ioc.buildWebWindow(this.publicWindowId, myWindow.name);\n\n this.me = myProjection.api;\n\n this.allWindowProjections.push(myProjection);\n }\n\n const currentWindows = await Promise.all(windows\n .filter((w) => w.windowId !== this.publicWindowId)\n .map((w) => this.ioc.buildWebWindow(w.windowId, w.name))\n );\n\n this.logger.trace(\"all windows projections are completed, building the list collection\");\n\n this.allWindowProjections.push(...currentWindows);\n }\n\n private async handleFocusChangeEvent(focusData: FocusEventData): Promise {\n const foundProjection = this.allWindowProjections.find((projection) => projection.id === focusData.windowId);\n\n if (!foundProjection) {\n return;\n }\n\n foundProjection.model.processSelfFocusEvent(focusData.hasFocus);\n\n const keyToExecute = focusData.hasFocus ? \"window-got-focus\" : \"window-lost-focus\";\n\n this.registry.execute(keyToExecute, foundProjection.api);\n }\n\n private async handleWindowAdded(data: CoreWindowData): Promise {\n if (this.allWindowProjections.some((projection) => projection.id === data.windowId)) {\n return;\n }\n\n const webWindowProjection = await this.ioc.buildWebWindow(data.windowId, data.name);\n this.allWindowProjections.push(webWindowProjection);\n\n this.registry.execute(\"window-added\", webWindowProjection.api);\n }\n\n private async handleWindowRemoved(data: CoreWindowData): Promise {\n const removed = this.allWindowProjections.find((w) => w.id === data.windowId);\n\n if (!removed) {\n return;\n }\n\n this.allWindowProjections = this.allWindowProjections.filter((w) => w.id !== data.windowId);\n\n removed.model.clean();\n\n this.registry.execute(\"window-removed\", removed.api);\n }\n\n private async handleGetBounds(): Promise {\n\n if (!this.me && !this.isWorkspaceFrame) {\n throw new Error(\"This window cannot report it's bounds, because it is not a Glue Window, most likely because it is an iframe\");\n }\n\n // this.me is optional, because this handler responds to a workspace frame bounds request and the frame is not a regular GD window\n return {\n windowId: this.isWorkspaceFrame ? \"noop\" : this.me!.id,\n bounds: {\n top: window.screenTop,\n left: window.screenLeft,\n width: window.innerWidth,\n height: window.innerHeight\n }\n };\n }\n\n private async handleGetTitle(): Promise {\n\n if (!this.me) {\n throw new Error(\"This window cannot report it's title, because it is not a Glue Window, most likely because it is an iframe\");\n }\n\n return {\n windowId: this.me.id,\n title: document.title\n };\n }\n\n private async handleGetUrl(): Promise {\n\n if (!this.me) {\n throw new Error(\"This window cannot report it's url, because it is not a Glue Window, most likely because it is an iframe\");\n }\n\n return {\n windowId: this.me.id,\n url: window.location.href\n };\n }\n\n private async handleMoveResize(config: WindowMoveResizeConfig): Promise {\n\n const targetTop = typeof config.top === \"number\" ? config.top :\n config.relative ? 0 : window.screenTop;\n\n const targetLeft = typeof config.left === \"number\" ? config.left :\n config.relative ? 0 : window.screenLeft;\n\n const targetHeight = typeof config.height === \"number\" ? config.height :\n config.relative ? 0 : window.innerHeight;\n\n const targetWidth = typeof config.width === \"number\" ? config.width :\n config.relative ? 0 : window.innerWidth;\n\n const moveMethod = config.relative ? window.moveBy : window.moveTo;\n const resizeMethod = config.relative ? window.resizeBy : window.resizeTo;\n\n moveMethod(targetLeft, targetTop);\n resizeMethod(targetWidth, targetHeight);\n }\n\n private async handleSetTitle(config: WindowTitleConfig): Promise {\n document.title = config.title;\n }\n\n private async initializeFocusTracking(): Promise {\n\n if (this.isWorkspaceFrame) {\n this.logger.trace(\"Ignoring the focus tracking, because this client is a workspace frame\");\n return;\n }\n\n try {\n await this.bridge.send(\"windows\", systemOperations.operationCheck, { operation: \"focusChange\" });\n } catch (error) {\n this.logger.warn(\"The platform of this client is outdated and does not support focus tracking, disabling focus events for this client.\");\n return;\n }\n\n const hasFocus = document.hasFocus();\n\n // every window when opened gaines focus\n await this.transmitFocusChange(true);\n\n if (!hasFocus) {\n // manual focus lost announce in case focus was lost while Web was initializing\n await this.transmitFocusChange(false);\n }\n\n this.defineEventListeners();\n }\n\n private processFocusEvent(): void {\n const hasFocus = document.hasFocus();\n\n this.transmitFocusChange(hasFocus);\n }\n\n private waitForWindowAdded(windowId: string): Promise {\n\n const foundWindow = this.allWindowProjections.find((projection) => projection.id === windowId);\n\n if (foundWindow) {\n return Promise.resolve(foundWindow.api);\n }\n\n return PromisePlus((resolve) => {\n const unsubscribe = this.onWindowAdded((addedWindow) => {\n if (addedWindow.id === windowId) {\n unsubscribe();\n resolve(addedWindow);\n }\n });\n }, 30000, `Timed out waiting for ${windowId} to be announced`);\n }\n\n private async transmitFocusChange(hasFocus: boolean): Promise {\n\n const eventData: FocusEventData = {\n windowId: this.me?.id || `iframe-${this.instanceId}`,\n hasFocus\n };\n\n if (this.me) {\n this.me.isFocused = hasFocus;\n }\n\n await this.bridge.send(\"windows\", operations.focusChange, eventData);\n }\n\n private defineEventListeners(): void {\n\n this.focusEventHandler = this.processFocusEvent.bind(this);\n\n document.addEventListener(\"visibilityChange\", this.focusEventHandler);\n window.addEventListener(\"focus\", this.focusEventHandler);\n window.addEventListener(\"blur\", this.focusEventHandler);\n }\n\n private async handleGetChannel(): Promise {\n\n if (!this.me) {\n throw new Error(\"This window cannot report it's channel, because it is not a Glue Window, most likely because it is an iframe\");\n }\n\n const channel = this.channelsController.my();\n\n return {\n ...(channel ? { channel } : {}),\n };\n }\n}\n","export const GlueWebPlatformControlName = \"T42.Web.Platform.Control\";\n\nexport const GlueWebPlatformStreamName = \"T42.Web.Platform.Stream\";\n\nexport const GlueClientControlName = \"T42.Web.Client.Control\";\n\nexport const GlueCorePlusThemesStream = \"T42.Core.Plus.Themes.Stream\";","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { libDomainDecoder } from \"../shared/decoders\";\nimport { PromisePlus } from \"../shared/promise-plus\";\nimport { systemOperations } from \"../shared/systemOperations\";\nimport { BridgeOperation, LibController, LibDomains, OperationCheckConfig, OperationCheckResult } from \"../shared/types\";\nimport { GlueClientControlName, GlueCorePlusThemesStream, GlueWebPlatformControlName, GlueWebPlatformStreamName } from \"./constants\";\n\nexport class GlueBridge {\n private readonly platformMethodTimeoutMs = 10000;\n private controllers!: { [key in LibDomains]: LibController };\n private sub!: IOConnectCore.AGM.Subscription;\n private running?: boolean;\n\n constructor(private readonly coreGlue: IOConnectCore.API, private readonly communicationId: string) {}\n\n public get contextLib(): IOConnectCore.Contexts.API {\n return this.coreGlue.contexts;\n }\n\n public get interopInstance(): string | undefined {\n return this.coreGlue.interop.instance.instance;\n }\n\n public async stop(): Promise {\n this.running = false;\n this.sub.close();\n await this.coreGlue.interop.unregister(GlueClientControlName);\n }\n\n public async start(controllers: { [key in LibDomains]: LibController }): Promise {\n this.running = true;\n this.controllers = controllers;\n\n await Promise.all([\n this.checkWaitMethod(GlueWebPlatformControlName),\n this.checkWaitMethod(GlueWebPlatformStreamName)\n ]);\n\n // this systemId will be missing if the platform is older than 1.12.X\n const systemId = this.communicationId;\n\n const [sub] = await Promise.all([\n this.coreGlue.interop.subscribe(GlueWebPlatformStreamName, systemId ? { target: { instance: this.communicationId } } : undefined),\n this.coreGlue.interop.registerAsync(GlueClientControlName, (args, _, success, error) => this.passMessageController(args, success, error))\n ]);\n\n this.sub = sub;\n\n this.sub.onData((pkg) => this.passMessageController(pkg.data));\n }\n\n public getInteropInstance(windowId: string): IOConnectCore.Interop.Instance {\n const result = this.coreGlue.interop.servers().find((s) => s.windowId && s.windowId === windowId);\n\n return {\n application: result?.application,\n applicationName: result?.applicationName,\n peerId: result?.peerId,\n instance: result?.instance,\n windowId: result?.windowId\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public async send(domain: LibDomains, operation: BridgeOperation, operationData: OutBound, options?: IOConnectCore.AGM.InvokeOptions, webOptions?: { includeOperationCheck?: boolean }): Promise {\n\n if (operation.dataDecoder) {\n try {\n operation.dataDecoder.runWithException(operationData);\n } catch (error: any) {\n throw new Error(`Unexpected Web->Platform outgoing validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`);\n }\n }\n\n const operationSupported = webOptions?.includeOperationCheck ? \n (await this.checkOperationSupported(domain, operation)).isSupported :\n true;\n\n if (!operationSupported) {\n throw new Error(`Cannot complete operation: ${operation.name} for domain: ${domain} because this client is connected to a platform which does not support it`);\n }\n\n try {\n const operationResult = await this.transmitMessage(domain, operation, operationData, options);\n\n if (operation.resultDecoder) {\n operation.resultDecoder.runWithException(operationResult);\n }\n\n return operationResult;\n\n } catch (error: any) {\n if (error.kind) {\n throw new Error(`Unexpected Web<-Platform incoming validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`);\n }\n throw new Error(error.message);\n }\n }\n\n public async createNotificationsSteam(): Promise {\n const streamExists = this.coreGlue.interop.methods().some((method) => method.name === GlueCorePlusThemesStream);\n\n if (!streamExists) {\n throw new Error(\"Cannot subscribe to theme changes, because the underlying interop stream does not exist. Most likely this is the case when this client is not connected to Core Plus.\");\n }\n\n return this.coreGlue.interop.subscribe(GlueCorePlusThemesStream, this.communicationId ? { target: { instance: this.communicationId } } : undefined);\n }\n\n private async checkOperationSupported(domain: LibDomains, operation: BridgeOperation): Promise {\n try {\n const result = await this.send(domain, systemOperations.operationCheck, { operation: operation.name });\n\n return result;\n } catch (error) {\n return { isSupported: false };\n }\n }\n\n private checkWaitMethod(name: string): Promise {\n return PromisePlus((resolve) => {\n\n const hasMethod = this.coreGlue.interop.methods().some((method) => {\n const nameMatch = method.name === name;\n\n const serverMatch = this.communicationId ?\n method.getServers().some((server) => server.instance === this.communicationId) :\n true;\n\n return nameMatch && serverMatch;\n });\n\n if (hasMethod) {\n return resolve();\n }\n\n const unSub = this.coreGlue.interop.serverMethodAdded((data) => {\n const method = data.method;\n const server = data.server;\n\n const serverMatch = this.communicationId ?\n server.instance === this.communicationId :\n true;\n\n if (method.name === name && serverMatch) {\n unSub();\n resolve();\n }\n });\n\n }, this.platformMethodTimeoutMs, `Cannot initiate Glue Web, because a system method's discovery timed out: ${name}`);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private passMessageController(args: any, success?: (args?: any) => void, error?: (error?: string | object | undefined) => void): void {\n const decodeResult = libDomainDecoder.run(args.domain);\n\n if (!decodeResult.ok) {\n if (error) {\n error(`Cannot execute this client control, because of domain validation error: ${JSON.stringify(decodeResult.error)}`);\n }\n return;\n }\n\n const domain = decodeResult.result;\n\n this.controllers[domain]\n .handleBridgeMessage(args)\n .then((resolutionData: unknown) => {\n if (success) {\n success(resolutionData);\n }\n })\n .catch((err: string | object | undefined) => {\n if (error) {\n error(err);\n }\n console.warn(err);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private async transmitMessage(domain: string, operation: BridgeOperation, data: any, options?: IOConnectCore.AGM.InvokeOptions): Promise {\n\n const messageData = { domain, data, operation: operation.name };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let invocationResult: IOConnectCore.Interop.InvocationResult;\n\n const baseErrorMessage = `Internal Platform Communication Error. Attempted operation: ${JSON.stringify(operation.name)} with data: ${JSON.stringify(data)}. `;\n\n const systemId = this.communicationId;\n\n try {\n\n if (!this.running) {\n throw new Error(\"Cannot send a control message, because the platform shut down\");\n }\n\n invocationResult = await this.coreGlue.interop.invoke(GlueWebPlatformControlName, messageData, systemId ? { instance: this.communicationId } : undefined, options);\n\n if (!invocationResult) {\n throw new Error(\"Received unsupported result from the platform - empty result\");\n }\n\n if (!Array.isArray(invocationResult.all_return_values) || invocationResult.all_return_values.length === 0) {\n throw new Error(\"Received unsupported result from the platform - empty values collection\");\n }\n\n } catch (error: any) {\n if (error && error.all_errors && error.all_errors.length) {\n // IMPORTANT: Do NOT change the `Inner message:` string, because it is used by other programs to extract the inner message of a communication error\n const invocationErrorMessage = error.all_errors[0].message;\n throw new Error(`${baseErrorMessage} -> Inner message: ${invocationErrorMessage}`);\n\n }\n // IMPORTANT: Do NOT change the `Inner message:` string, because it is used by other programs to extract the inner message of a communication error\n throw new Error(`${baseErrorMessage} -> Inner message: ${error.message}`);\n }\n\n return invocationResult.all_return_values[0].returned;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectBrowser } from \"../../browser\";\nimport { appDirectoryStateChangeDecoder, appHelloSuccessDecoder, applicationStartConfigDecoder, appRemoveConfigDecoder, appsExportOperationDecoder, basicInstanceDataDecoder, instanceDataDecoder, windowHelloDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type AppManagerOperationTypes = \"appHello\" | \"appDirectoryStateChange\" | \"instanceStarted\" | \"instanceStopped\" |\n \"applicationStart\" | \"instanceStop\" | \"import\" | \"remove\" | \"export\" | \"clear\";\n\nexport const operations: { [key in AppManagerOperationTypes]: BridgeOperation } = {\n appHello: { name: \"appHello\", dataDecoder: windowHelloDecoder, resultDecoder: appHelloSuccessDecoder },\n appDirectoryStateChange: { name: \"appDirectoryStateChange\", dataDecoder: appDirectoryStateChangeDecoder },\n instanceStarted: { name: \"instanceStarted\", dataDecoder: instanceDataDecoder },\n instanceStopped: { name: \"instanceStopped\", dataDecoder: instanceDataDecoder },\n applicationStart: { name: \"applicationStart\", dataDecoder: applicationStartConfigDecoder, resultDecoder: instanceDataDecoder },\n instanceStop: { name: \"instanceStop\", dataDecoder: basicInstanceDataDecoder },\n import: { name: \"import\" },\n remove: { name: \"remove\", dataDecoder: appRemoveConfigDecoder },\n export: { name: \"export\", resultDecoder: appsExportOperationDecoder },\n clear: { name: \"clear\" }\n};\n\nexport interface InstanceData {\n id: string;\n applicationName: string;\n}\n\nexport interface BaseApplicationData {\n name: string;\n type: string;\n userProperties: any;\n title?: string;\n version?: string;\n icon?: string;\n caption?: string;\n}\n\nexport interface ApplicationData extends BaseApplicationData {\n instances: InstanceData[];\n}\n\nexport interface AppDirectoryStateChange {\n appsAdded: BaseApplicationData[];\n appsChanged: BaseApplicationData[];\n appsRemoved: BaseApplicationData[];\n}\n\nexport interface AppRemoveConfig {\n name: string;\n}\n\nexport interface AppsExportOperation {\n definitions: IOConnectBrowser.AppManager.Definition[];\n}\n\nexport interface AppsImportOperation {\n definitions: Array;\n mode: \"replace\" | \"merge\";\n}\n\nexport interface AppHelloSuccess {\n apps: ApplicationData[];\n initialChannelId?: string;\n}\n\nexport interface ApplicationStartConfig {\n name: string;\n waitForAGMReady: boolean;\n id?: string;\n context?: any;\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n relativeTo?: string;\n relativeDirection?: \"top\" | \"left\" | \"right\" | \"bottom\";\n forceChromeTab?: boolean;\n layoutComponentId?: string;\n channelId?: string;\n}\n\nexport interface BasicInstanceData {\n id: string;\n}\n\nexport interface FDC3Definition {\n name: string;\n title?: string;\n version?: string;\n appId?: string;\n manifest: string;\n manifestType: string;\n tooltip?: string;\n description?: string;\n contactEmail?: string;\n supportEmail?: string;\n publisher?: string;\n images?: Array<{ url?: string }>;\n icons?: Array<{ icon?: string }>;\n customConfig?: any;\n intents?: Intent[];\n}\n\nexport interface Intent {\n name: string;\n displayName?: string;\n contexts?: string[];\n customConfig?: any;\n}\n\nexport interface DefinitionParseResult {\n valid: IOConnectBrowser.AppManager.Definition[];\n invalid: Array<{ app: string; error: string }>;\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { allApplicationDefinitionsDecoder, appManagerOperationTypesDecoder, importModeDecoder, nonEmptyStringDecoder } from \"../shared/decoders\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport { WindowHello } from \"../windows/protocol\";\nimport { AppsImportOperation, AppHelloSuccess, ApplicationStartConfig, AppRemoveConfig, InstanceData, operations, BaseApplicationData, AppsExportOperation, DefinitionParseResult, AppDirectoryStateChange } from \"./protocol\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { ChannelsController } from \"../channels/controller\";\nimport { SessionStorageController } from \"../storage/session\";\n\nexport class AppManagerController implements LibController {\n public me: IOConnectBrowser.AppManager.Instance | undefined;\n\n private baseApplicationsTimeoutMS = 60000;\n private appImportTimeoutMS = 20;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private ioc!: IoC;\n private bridge!: GlueBridge;\n private publicWindowId!: string;\n private applications: IOConnectBrowser.AppManager.Application[] = [];\n private instances: IOConnectBrowser.AppManager.Instance[] = [];\n private platformRegistration!: Promise;\n private logger!: IOConnectBrowser.Logger.API;\n private channelsController!: ChannelsController;\n private sessionController!: SessionStorageController;\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n this.applications = [];\n this.instances = [];\n delete this.me;\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"appManger.controller.web\");\n\n this.logger.trace(\"starting the web appManager controller\");\n\n this.publicWindowId = ioc.publicWindowId;\n\n this.addOperationsExecutors();\n\n this.ioc = ioc;\n this.bridge = ioc.bridge;\n this.channelsController = ioc.channelsController;\n this.sessionController = ioc.sessionController;\n\n this.platformRegistration = this.registerWithPlatform();\n\n await this.platformRegistration;\n\n this.logger.trace(\"registration with the platform successful, attaching the appManager property to glue and returning\");\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).appManager = api;\n }\n\n public async handleBridgeMessage(args: any): Promise {\n await this.platformRegistration;\n\n const operationName = appManagerOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n public onInstanceStarted(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onInstanceStarted requires a single argument of type function\");\n }\n\n return this.registry.add(\"instance-started\", callback, this.instances);\n }\n\n public onInstanceStopped(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onInstanceStopped requires a single argument of type function\");\n }\n\n return this.registry.add(\"instance-stopped\", callback);\n }\n\n public async startApplication(appName: string, context?: object, options?: IOConnectBrowser.AppManager.ApplicationStartOptions): Promise {\n const channels = await this.channelsController.all();\n\n if (options?.channelId && !channels.includes(options.channelId)) {\n throw new Error(`The channel with name \"${options.channelId}\" doesn't exist!`);\n }\n \n // reuseId is a hidden property for workspaces-only use\n // layoutComponentId is a hidden property for global layouts\n // forceChromeTab is a hidden property for extension use only\n const startOptions: ApplicationStartConfig = {\n name: appName,\n waitForAGMReady: options?.waitForAGMReady ?? true,\n context,\n top: options?.top,\n left: options?.left,\n width: options?.width,\n height: options?.height,\n relativeTo: options?.relativeTo,\n relativeDirection: options?.relativeDirection,\n id: (options as any)?.reuseId,\n forceChromeTab: (options as any)?.forceTab,\n layoutComponentId: (options as any)?.layoutComponentId,\n channelId: options?.channelId\n };\n\n const openResult = await this.bridge.send(\"appManager\", operations.applicationStart, startOptions);\n\n const app = this.applications.find((a) => a.name === openResult.applicationName) as IOConnectBrowser.AppManager.Application;\n\n return this.ioc.buildInstance(openResult, app);\n }\n\n public getApplication(name: string): IOConnectBrowser.AppManager.Application {\n const verifiedName = nonEmptyStringDecoder.runWithException(name);\n\n return this.applications.find((app) => app.name === verifiedName) as IOConnectBrowser.AppManager.Application;\n }\n\n public getInstances(): IOConnectBrowser.AppManager.Instance[] {\n return this.instances.slice();\n }\n\n private toApi(): IOConnectBrowser.AppManager.API {\n const api: IOConnectBrowser.AppManager.API = {\n myInstance: this.me as unknown as IOConnectBrowser.AppManager.Instance,\n inMemory: {\n import: this.import.bind(this),\n remove: this.remove.bind(this),\n export: this.export.bind(this),\n clear: this.clear.bind(this)\n },\n application: this.getApplication.bind(this),\n applications: this.getApplications.bind(this),\n instances: this.getInstances.bind(this),\n onAppAdded: this.onAppAdded.bind(this),\n onAppChanged: this.onAppChanged.bind(this),\n onAppRemoved: this.onAppRemoved.bind(this),\n onInstanceStarted: this.onInstanceStarted.bind(this),\n onInstanceStopped: this.onInstanceStopped.bind(this)\n };\n\n return api;\n }\n\n private addOperationsExecutors(): void {\n operations.appDirectoryStateChange.execute = this.handleAppDirectoryStateChange.bind(this);\n operations.instanceStarted.execute = this.handleInstanceStartedMessage.bind(this);\n operations.instanceStopped.execute = this.handleInstanceStoppedMessage.bind(this);\n }\n\n private async handleAppDirectoryStateChange(data: AppDirectoryStateChange): Promise {\n data.appsAdded.forEach(this.handleApplicationAddedMessage.bind(this));\n data.appsChanged.forEach(this.handleApplicationChangedMessage.bind(this));\n data.appsRemoved.forEach(this.handleApplicationRemovedMessage.bind(this));\n }\n\n private onAppAdded(callback: (app: IOConnectBrowser.AppManager.Application) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onAppAdded requires a single argument of type function\");\n }\n\n return this.registry.add(\"application-added\", callback, this.applications);\n }\n\n private onAppRemoved(callback: (app: IOConnectBrowser.AppManager.Application) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onAppRemoved requires a single argument of type function\");\n }\n\n return this.registry.add(\"application-removed\", callback);\n }\n\n private onAppChanged(callback: (app: IOConnectBrowser.AppManager.Application) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onAppChanged requires a single argument of type function\");\n }\n\n return this.registry.add(\"application-changed\", callback);\n }\n\n private async handleApplicationAddedMessage(appData: BaseApplicationData): Promise {\n\n if (this.applications.some((app) => app.name === appData.name)) {\n return;\n }\n\n const app = await this.ioc.buildApplication(appData, []);\n\n const instances = this.instances.filter((instance) => instance.application.name === app.name);\n\n app.instances.push(...instances);\n\n this.applications.push(app);\n\n this.registry.execute(\"application-added\", app);\n }\n\n private async handleApplicationRemovedMessage(appData: BaseApplicationData): Promise {\n const appIndex = this.applications.findIndex((app) => app.name === appData.name);\n\n if (appIndex < 0) {\n return;\n }\n\n const app = this.applications[appIndex];\n\n this.applications.splice(appIndex, 1);\n\n this.registry.execute(\"application-removed\", app);\n }\n\n private async handleApplicationChangedMessage(appData: BaseApplicationData): Promise {\n const app = this.applications.find((app) => app.name === appData.name);\n\n if (!app) {\n return this.handleApplicationAddedMessage(appData);\n }\n\n app.title = appData.title as string;\n app.version = appData.version as string;\n app.icon = appData.icon as string;\n app.caption = appData.caption as string;\n app.userProperties = appData.userProperties;\n\n this.registry.execute(\"application-changed\", app);\n }\n\n private async handleInstanceStartedMessage(instanceData: InstanceData): Promise {\n if (this.instances.some((instance) => instance.id === instanceData.id)) {\n return;\n }\n\n const application = this.applications.find((app) => app.name === instanceData.applicationName);\n\n if (!application) {\n throw new Error(`Cannot add instance: ${instanceData.id}, because there is no application definition associated with it`);\n }\n\n const instance = this.ioc.buildInstance(instanceData, application);\n\n this.instances.push(instance);\n application.instances.push(instance);\n\n this.registry.execute(\"instance-started\", instance);\n }\n\n private async handleInstanceStoppedMessage(instanceData: InstanceData): Promise {\n const instance = this.instances.find((i) => i.id === instanceData.id);\n\n if (instance) {\n const instIdx = this.instances.findIndex((inst) => inst.id === instanceData.id);\n this.instances.splice(instIdx, 1);\n }\n\n const application = this.applications.find((app) => app.instances.some((inst) => inst.id === instanceData.id));\n\n if (application) {\n const instIdxApps = application.instances.findIndex((inst) => inst.id === instanceData.id);\n application.instances.splice(instIdxApps, 1);\n }\n\n if (!instance) {\n return;\n }\n\n this.registry.execute(\"instance-stopped\", instance);\n }\n\n private async import(definitions: IOConnectBrowser.AppManager.Definition[], mode: \"replace\" | \"merge\" = \"replace\"): Promise {\n importModeDecoder.runWithException(mode);\n\n if (!Array.isArray(definitions)) {\n throw new Error(\"Import must be called with an array of definitions\");\n }\n\n if (definitions.length > 10000) {\n throw new Error(\"Cannot import more than 10000 app definitions in Glue42 Core.\");\n }\n\n const parseResult = definitions.reduce((soFar, definition) => {\n\n const decodeResult = allApplicationDefinitionsDecoder.run(definition);\n\n if (!decodeResult.ok) {\n soFar.invalid.push({ app: definition?.name, error: JSON.stringify(decodeResult.error) });\n } else {\n soFar.valid.push(definition);\n }\n\n return soFar;\n }, { valid: [], invalid: [] });\n\n const responseTimeout = this.baseApplicationsTimeoutMS + this.appImportTimeoutMS * parseResult.valid.length;\n\n await this.bridge.send(\"appManager\", operations.import, { definitions: parseResult.valid, mode }, { methodResponseTimeoutMs: responseTimeout });\n\n return {\n imported: parseResult.valid.map((valid) => valid.name),\n errors: parseResult.invalid\n };\n }\n\n private async remove(name: string): Promise {\n nonEmptyStringDecoder.runWithException(name);\n\n await this.bridge.send(\"appManager\", operations.remove, { name }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n }\n\n private async clear(): Promise {\n await this.bridge.send(\"appManager\", operations.clear, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n }\n\n private async export(): Promise {\n\n const response = await this.bridge.send(\"appManager\", operations.export, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n\n return response.definitions;\n }\n\n public getApplications(): IOConnectBrowser.AppManager.Application[] {\n return this.applications.slice();\n }\n\n private async joinInitialChannel(initialChannelId: string): Promise {\n try {\n await this.channelsController.join(initialChannelId);\n } catch (error) {\n this.logger.warn(`Application instance ${this.me} was unable to join the ${initialChannelId} channel. Reason: ${JSON.stringify(error)}`);\n }\n }\n\n private async registerWithPlatform(): Promise {\n const result = await this.bridge.send(\"appManager\", operations.appHello, { windowId: this.publicWindowId }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n\n this.logger.trace(\"the platform responded to the hello message with a full list of apps\");\n\n this.applications = await Promise.all(result.apps.map((app) => this.ioc.buildApplication(app, app.instances)));\n\n this.instances = this.applications.reduce((instancesSoFar, app) => {\n\n instancesSoFar.push(...app.instances);\n\n return instancesSoFar;\n }, []);\n\n this.me = this.findMyInstance();\n\n this.logger.trace(`all applications were parsed and saved. I am ${this.me ? \"NOT a\" : \"a\"} valid instance`);\n\n const { channels: channelsStorageData } = this.sessionController.getWindowData();\n const channel = channelsStorageData ? channelsStorageData.currentName : result.initialChannelId;\n \n if (channel) {\n await this.joinInitialChannel(channel);\n }\n }\n \n private findMyInstance(): IOConnectBrowser.AppManager.Instance | undefined {\n for (const app of this.applications) {\n const foundInstance = app.instances.find((instance) => instance.id === this.publicWindowId);\n\n if (foundInstance) {\n return foundInstance;\n }\n }\n\n // this satisfies the TS \"noImplicitReturns\" true flag\n return undefined;\n }\n}\n","import { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { BasicInstanceData, InstanceData, operations } from \"./protocol\";\n\nexport class InstanceModel {\n private me!: IOConnectBrowser.AppManager.Instance;\n private readonly myCtxKey: string;\n\n constructor(private readonly data: InstanceData, private readonly bridge: GlueBridge, private readonly application: IOConnectBrowser.AppManager.Application) {\n this.myCtxKey = `___instance___${this.data.id}`;\n }\n\n public toApi(): IOConnectBrowser.AppManager.Instance {\n const agm = this.bridge.getInteropInstance(this.data.id);\n\n const api: IOConnectBrowser.AppManager.Instance = {\n id: this.data.id,\n agm,\n application: this.application,\n stop: this.stop.bind(this),\n getContext: this.getContext.bind(this)\n };\n\n this.me = Object.freeze(api);\n\n return this.me;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private async getContext(): Promise {\n return this.bridge.contextLib.get(this.myCtxKey);\n }\n\n private async stop(): Promise {\n await this.bridge.send(\"appManager\", operations.instanceStop, { id: this.data.id });\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { UnsubscribeFunction } from \"callback-registry\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { AppManagerController } from \"./controller\";\nimport { BaseApplicationData } from \"./protocol\";\nimport { startApplicationContextDecoder, startApplicationOptionsDecoder } from \"../shared/decoders\";\n\nexport class ApplicationModel {\n private me!: IOConnectBrowser.AppManager.Application;\n\n constructor(\n private readonly data: BaseApplicationData,\n private readonly instances: IOConnectBrowser.AppManager.Instance[],\n private readonly controller: AppManagerController,\n ) { }\n\n public toApi(): IOConnectBrowser.AppManager.Application {\n const api: IOConnectBrowser.AppManager.Application = {\n name: this.data.name,\n title: this.data.title as string,\n version: this.data.version as string,\n icon: this.data.icon as string,\n caption: this.data.caption as string,\n userProperties: this.data.userProperties,\n instances: this.instances,\n start: this.start.bind(this),\n onInstanceStarted: this.onInstanceStarted.bind(this),\n onInstanceStopped: this.onInstanceStopped.bind(this)\n };\n\n this.me = api;\n\n return this.me;\n }\n\n private onInstanceStarted(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\n\n if (typeof callback !== \"function\") {\n throw new Error(\"OnInstanceStarted requires a single argument of type function\");\n }\n\n return this.controller.onInstanceStarted((instance) => {\n if (instance.application.name === this.data.name) {\n callback(instance);\n }\n });\n }\n\n private onInstanceStopped(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"OnInstanceStarted requires a single argument of type function\");\n }\n\n return this.controller.onInstanceStopped((instance) => {\n if (instance.application.name === this.data.name) {\n callback(instance);\n }\n });\n }\n\n private async start(context?: any, options?: IOConnectBrowser.AppManager.ApplicationStartOptions): Promise {\n const verifiedContext = startApplicationContextDecoder.runWithException(context);\n const verifiedOptions = startApplicationOptionsDecoder.runWithException(options);\n\n return this.controller.startApplication(this.data.name, verifiedContext, verifiedOptions);\n }\n}","import { IOConnectBrowser } from \"../../browser\";\nimport { allLayoutsFullConfigDecoder, allLayoutsSummariesResultDecoder, getAllLayoutsConfigDecoder, glueLayoutDecoder, layoutsImportConfigDecoder, optionalSimpleLayoutResult, restoreLayoutConfigDecoder, saveLayoutConfigDecoder, saveRequestClientResponseDecoder, platformSaveRequestConfigDecoder, simpleLayoutConfigDecoder, simpleLayoutResultDecoder, simpleAvailabilityResultDecoder, permissionStateResultDecoder, setDefaultGlobalConfigDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type LayoutsOperationTypes = \"layoutAdded\" | \"layoutChanged\" | \"layoutRemoved\" |\n \"get\" | \"getAll\" | \"export\" | \"import\" | \"remove\" | \"save\" | \"restore\" | \"clientSaveRequest\" |\n \"getGlobalPermissionState\" | \"requestGlobalPermission\" | \"checkGlobalActivated\" | \"getDefaultGlobal\" | \"setDefaultGlobal\" | \"clearDefaultGlobal\";\n\nexport const operations: { [key in LayoutsOperationTypes]: BridgeOperation } = {\n layoutAdded: { name: \"layoutAdded\", dataDecoder: glueLayoutDecoder },\n layoutChanged: { name: \"layoutChanged\", dataDecoder: glueLayoutDecoder },\n layoutRemoved: { name: \"layoutRemoved\", dataDecoder: glueLayoutDecoder },\n get: { name: \"get\", dataDecoder: simpleLayoutConfigDecoder, resultDecoder: optionalSimpleLayoutResult },\n getAll: { name: \"getAll\", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsSummariesResultDecoder },\n export: { name: \"export\", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsFullConfigDecoder },\n import: { name: \"import\", dataDecoder: layoutsImportConfigDecoder },\n remove: { name: \"remove\", dataDecoder: simpleLayoutConfigDecoder },\n save: { name: \"save\", dataDecoder: saveLayoutConfigDecoder, resultDecoder: simpleLayoutResultDecoder },\n restore: { name: \"restore\", dataDecoder: restoreLayoutConfigDecoder },\n clientSaveRequest: { name: \"clientSaveRequest\", dataDecoder: platformSaveRequestConfigDecoder, resultDecoder: saveRequestClientResponseDecoder },\n getGlobalPermissionState: { name: \"getGlobalPermissionState\", resultDecoder: permissionStateResultDecoder },\n requestGlobalPermission: { name: \"requestGlobalPermission\", resultDecoder: simpleAvailabilityResultDecoder },\n checkGlobalActivated: { name: \"checkGlobalActivated\", resultDecoder: simpleAvailabilityResultDecoder },\n getDefaultGlobal: { name: \"getDefaultGlobal\", resultDecoder: optionalSimpleLayoutResult },\n setDefaultGlobal: { name: \"setDefaultGlobal\", dataDecoder: setDefaultGlobalConfigDecoder },\n clearDefaultGlobal: { name: \"clearDefaultGlobal\" }\n};\n\nexport interface SimpleLayoutConfig {\n name: string;\n type: IOConnectBrowser.Layouts.LayoutType;\n}\n\nexport interface SaveLayoutConfig {\n layout: IOConnectBrowser.Layouts.NewLayoutOptions;\n}\n\nexport interface RestoreLayoutConfig {\n layout: IOConnectBrowser.Layouts.RestoreOptions;\n}\n\nexport interface GetAllLayoutsConfig {\n type: IOConnectBrowser.Layouts.LayoutType;\n}\n\nexport interface LayoutsImportConfig {\n layouts: IOConnectBrowser.Layouts.Layout[];\n mode: \"replace\" | \"merge\";\n isManagerOperation?: boolean;\n}\n\nexport interface AllLayoutsFullConfig {\n layouts: IOConnectBrowser.Layouts.Layout[];\n}\n\nexport interface AllLayoutsSummariesResult {\n summaries: IOConnectBrowser.Layouts.LayoutSummary[];\n}\n\nexport interface SimpleLayoutResult {\n layout: IOConnectBrowser.Layouts.Layout;\n}\n\nexport interface OptionalSimpleLayoutResult {\n layout?: IOConnectBrowser.Layouts.Layout;\n}\n\nexport interface LayoutParseResult {\n valid: IOConnectBrowser.Layouts.Layout[];\n}\n\nexport interface PlatformSaveRequestConfig {\n layoutType: \"Global\" | \"Workspace\";\n layoutName: string;\n context?: any;\n}\n\nexport interface SaveRequestClientResponse {\n windowContext?: any;\n}\n\nexport interface PermissionStateResult {\n state: \"prompt\" | \"granted\" | \"denied\";\n}\n\nexport interface SimpleAvailabilityResult {\n isAvailable: boolean;\n}\n\nexport interface SetDefaultGlobalConfig {\n name: string;\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { glueLayoutDecoder, importModeDecoder, layoutsOperationTypesDecoder, layoutTypeDecoder, newLayoutOptionsDecoder, nonEmptyStringDecoder, restoreOptionsDecoder } from \"../shared/decoders\";\nimport { AllLayoutsFullConfig, AllLayoutsSummariesResult, GetAllLayoutsConfig, LayoutParseResult, LayoutsImportConfig, operations, OptionalSimpleLayoutResult, RestoreLayoutConfig, SaveLayoutConfig, SaveRequestClientResponse, PlatformSaveRequestConfig, SimpleLayoutConfig, SimpleLayoutResult, PermissionStateResult, SimpleAvailabilityResult, SetDefaultGlobalConfig } from \"./protocol\";\nimport { WindowsController } from \"../windows/controller\";\n\nexport class LayoutsController implements LibController {\n private readonly defaultLayoutRestoreTimeoutMS = 120000;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private bridge!: GlueBridge;\n private logger!: IOConnectBrowser.Logger.API;\n private windowsController!: WindowsController;\n private saveRequestSubscription?: (info?: IOConnectBrowser.Layouts.SaveRequestContext) => IOConnectBrowser.Layouts.SaveRequestResponse;\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"layouts.controller.web\");\n\n this.logger.trace(\"starting the web layouts controller\");\n\n this.bridge = ioc.bridge;\n\n this.windowsController = ioc.windowsController;\n\n this.addOperationsExecutors();\n\n const api = this.toApi();\n\n this.logger.trace(\"no need for platform registration, attaching the layouts property to glue and returning\");\n\n (coreGlue as IOConnectBrowser.API).layouts = api;\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = layoutsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private toApi(): IOConnectBrowser.Layouts.API {\n const api: IOConnectBrowser.Layouts.API = {\n get: this.get.bind(this),\n getAll: this.getAll.bind(this),\n export: this.export.bind(this),\n import: this.import.bind(this),\n save: this.save.bind(this),\n restore: this.restore.bind(this),\n remove: this.remove.bind(this),\n onAdded: this.onAdded.bind(this),\n onChanged: this.onChanged.bind(this),\n onRemoved: this.onRemoved.bind(this),\n onSaveRequested: this.subscribeOnSaveRequested.bind(this),\n getMultiScreenPermissionState: this.getGlobalPermissionState.bind(this),\n requestMultiScreenPermission: this.requestGlobalPermission.bind(this),\n getGlobalTypeState: this.checkGlobalActivated.bind(this),\n getDefaultGlobal: this.getDefaultGlobal.bind(this),\n setDefaultGlobal: this.setDefaultGlobal.bind(this),\n clearDefaultGlobal: this.clearDefaultGlobal.bind(this)\n };\n\n return Object.freeze(api);\n }\n\n private addOperationsExecutors(): void {\n operations.layoutAdded.execute = this.handleOnAdded.bind(this);\n operations.layoutChanged.execute = this.handleOnChanged.bind(this);\n operations.layoutRemoved.execute = this.handleOnRemoved.bind(this);\n operations.clientSaveRequest.execute = this.handleSaveRequest.bind(this);\n }\n\n private async get(name: string, type: IOConnectBrowser.Layouts.LayoutType): Promise {\n nonEmptyStringDecoder.runWithException(name);\n layoutTypeDecoder.runWithException(type);\n\n const result = await this.bridge.send(\"layouts\", operations.get, { name, type });\n\n return result.layout;\n }\n\n private async getAll(type: IOConnectBrowser.Layouts.LayoutType): Promise {\n layoutTypeDecoder.runWithException(type);\n\n const result = await this.bridge.send(\"layouts\", operations.getAll, { type });\n\n return result.summaries;\n }\n\n private async export(type: IOConnectBrowser.Layouts.LayoutType): Promise {\n layoutTypeDecoder.runWithException(type);\n\n const result = await this.bridge.send(\"layouts\", operations.export, { type });\n\n return result.layouts;\n }\n\n private async import(layouts: IOConnectBrowser.Layouts.Layout[], mode: \"replace\" | \"merge\" = \"replace\"): Promise {\n importModeDecoder.runWithException(mode);\n\n if (!Array.isArray(layouts)) {\n throw new Error(\"Import must be called with an array of layouts\");\n }\n\n if (layouts.length > 1000) {\n throw new Error(\"Cannot import more than 1000 layouts at once in Glue42 Core.\");\n }\n\n const parseResult = layouts.reduce((soFar, layout) => {\n\n const decodeResult = glueLayoutDecoder.run(layout);\n\n if (decodeResult.ok) {\n soFar.valid.push(layout);\n } else {\n this.logger.warn(`A layout with name: ${layout.name} was not imported, because of error: ${JSON.stringify(decodeResult.error)}`);\n }\n\n return soFar;\n\n }, { valid: [] });\n\n const layoutsToImport = layouts.filter((layout) => parseResult.valid.some((validLayout) => validLayout.name === layout.name));\n\n await this.bridge.send(\"layouts\", operations.import, { layouts: layoutsToImport, mode });\n }\n\n private async save(layout: IOConnectBrowser.Layouts.NewLayoutOptions): Promise {\n newLayoutOptionsDecoder.runWithException(layout);\n\n const saveResult = await this.bridge.send(\"layouts\", operations.save, { layout });\n\n return saveResult.layout;\n }\n\n private async restore(options: IOConnectBrowser.Layouts.RestoreOptions): Promise {\n restoreOptionsDecoder.runWithException(options);\n\n // the user-provided timeout needs to be doubled for the invocation in order to allow time for the Global Layouts plugin to correctly honor the user timeout.\n const invocationTimeout = options.timeout ? options.timeout * 2 : this.defaultLayoutRestoreTimeoutMS;\n\n await this.bridge.send(\"layouts\", operations.restore, { layout: options }, { methodResponseTimeoutMs: invocationTimeout });\n }\n\n private async remove(type: IOConnectBrowser.Layouts.LayoutType, name: string): Promise {\n layoutTypeDecoder.runWithException(type);\n nonEmptyStringDecoder.runWithException(name);\n\n await this.bridge.send(\"layouts\", operations.remove, { type, name });\n }\n\n private async handleSaveRequest(config: PlatformSaveRequestConfig): Promise {\n const response: SaveRequestClientResponse = {};\n\n if (this.saveRequestSubscription) {\n try {\n const onSaveRequestResponse = this.saveRequestSubscription(config);\n\n response.windowContext = onSaveRequestResponse?.windowContext;\n } catch (error) {\n this.logger.warn(`An error was thrown by the onSaveRequested callback, ignoring the callback: ${JSON.stringify(error)}`);\n }\n }\n\n return response;\n }\n\n private async getGlobalPermissionState(): Promise<{ state: \"prompt\" | \"granted\" | \"denied\" }> {\n const requestResult = await this.bridge.send(\"layouts\", operations.getGlobalPermissionState, undefined);\n\n return requestResult;\n }\n\n private async requestGlobalPermission(): Promise<{ permissionGranted: boolean }> {\n\n const currentState = (await this.getGlobalPermissionState()).state;\n\n if (currentState === \"denied\") {\n return { permissionGranted: false };\n }\n\n if (currentState === \"granted\") {\n return { permissionGranted: true };\n }\n\n const myWindow = this.windowsController.my();\n\n const globalNamespace = (window as any).glue42core || (window as any).iobrowser;\n\n const amIWorkspaceFrame = globalNamespace.isPlatformFrame;\n\n if (myWindow.name !== \"Platform\" && !amIWorkspaceFrame) {\n throw new Error(\"Cannot request permission for multi-window placement from any app other than the Platform.\");\n }\n\n const requestResult = await this.bridge.send(\"layouts\", operations.requestGlobalPermission, undefined, { methodResponseTimeoutMs: 180000 });\n\n return { permissionGranted: requestResult.isAvailable };\n }\n\n private async checkGlobalActivated(): Promise<{ activated: boolean }> {\n const requestResult = await this.bridge.send(\"layouts\", operations.checkGlobalActivated, undefined);\n\n return { activated: requestResult.isAvailable };\n }\n\n private async getDefaultGlobal(): Promise {\n const requestResult = await this.bridge.send(\"layouts\", operations.getDefaultGlobal, undefined, undefined, { includeOperationCheck: true });\n\n return requestResult.layout;\n }\n\n private async setDefaultGlobal(name: string): Promise {\n nonEmptyStringDecoder.runWithException(name);\n\n await this.bridge.send(\"layouts\", operations.setDefaultGlobal, { name }, undefined, { includeOperationCheck: true });\n }\n\n private async clearDefaultGlobal(): Promise {\n await this.bridge.send(\"layouts\", operations.clearDefaultGlobal, undefined, undefined, { includeOperationCheck: true });\n }\n\n private onAdded(callback: (layout: IOConnectBrowser.Layouts.Layout) => void): UnsubscribeFunction {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.export(\"Global\").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => {});\n this.export(\"Workspace\").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => {});\n\n return this.registry.add(operations.layoutAdded.name, callback);\n }\n\n private onChanged(callback: (layout: IOConnectBrowser.Layouts.Layout) => void): UnsubscribeFunction {\n return this.registry.add(operations.layoutChanged.name, callback);\n }\n\n private onRemoved(callback: (layout: IOConnectBrowser.Layouts.Layout) => void): UnsubscribeFunction {\n return this.registry.add(operations.layoutRemoved.name, callback);\n }\n\n private subscribeOnSaveRequested(callback: (info?: IOConnectBrowser.Layouts.SaveRequestContext) => IOConnectBrowser.Layouts.SaveRequestResponse): () => void {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onSaveRequested, because the provided argument is not a valid callback function.\");\n }\n\n if (this.saveRequestSubscription) {\n throw new Error(\"Cannot subscribe to onSaveRequested, because this client has already subscribed and only one subscription is supported. Consider unsubscribing from the initial one.\");\n }\n\n this.saveRequestSubscription = callback;\n\n return () => {\n delete this.saveRequestSubscription;\n };\n }\n\n private async handleOnAdded(layout: IOConnectBrowser.Layouts.Layout): Promise {\n this.registry.execute(operations.layoutAdded.name, layout);\n }\n\n private async handleOnChanged(layout: IOConnectBrowser.Layouts.Layout): Promise {\n this.registry.execute(operations.layoutChanged.name, layout);\n }\n\n private async handleOnRemoved(layout: IOConnectBrowser.Layouts.Layout): Promise {\n this.registry.execute(operations.layoutRemoved.name, layout);\n }\n}","import { IOConnectBrowser } from \"../../browser\";\nimport { activeNotificationsCountChangeDecoder, allNotificationsDataDecoder, notificationEventPayloadDecoder, notificationSetStateRequestDecoder, notificationsConfigurationProtocolDecoder, permissionQueryResultDecoder, permissionRequestResultDecoder, raiseNotificationDecoder, raiseNotificationResultDecoder, simpleNotificationDataDecoder, simpleNotificationSelectDecoder, strictNotificationsConfigurationProtocolDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type NotificationsOperationTypes = \"raiseNotification\" | \"requestPermission\" | \"notificationShow\" | \"notificationClick\" | \"getPermission\" |\n \"list\" | \"notificationRaised\" | \"notificationClosed\" | \"click\" | \"clear\" | \"clearAll\" | \"clearOld\" | \n \"configure\" | \"getConfiguration\" | \"configurationChanged\" | \"setState\" | \"activeCountChange\" | \"stateChange\";\n\nexport type NotificationPermissionTypes = \"default\" | \"granted\" | \"denied\";\n\nexport const operations: { [key in NotificationsOperationTypes]: BridgeOperation } = {\n raiseNotification: { name: \"raiseNotification\", dataDecoder: raiseNotificationDecoder, resultDecoder:raiseNotificationResultDecoder },\n requestPermission: { name: \"requestPermission\", resultDecoder: permissionRequestResultDecoder },\n notificationShow: { name: \"notificationShow\", dataDecoder: notificationEventPayloadDecoder },\n notificationClick: { name: \"notificationClick\", dataDecoder: notificationEventPayloadDecoder },\n getPermission: { name: \"getPermission\", resultDecoder: permissionQueryResultDecoder },\n list: { name: \"list\", resultDecoder: allNotificationsDataDecoder },\n notificationRaised: { name: \"notificationRaised\", dataDecoder: simpleNotificationDataDecoder },\n notificationClosed: { name: \"notificationClosed\", dataDecoder: simpleNotificationSelectDecoder },\n click: { name: \"click\" },\n clear: { name: \"clear\" },\n clearAll: { name: \"clearAll\" },\n clearOld: { name: \"clearOld\" },\n configure: { name: \"configure\", dataDecoder: notificationsConfigurationProtocolDecoder },\n getConfiguration: { name: \"getConfiguration\", resultDecoder: strictNotificationsConfigurationProtocolDecoder },\n configurationChanged: { name: \"configurationChanged\", resultDecoder: strictNotificationsConfigurationProtocolDecoder },\n setState: { name: \"setState\", dataDecoder: notificationSetStateRequestDecoder },\n activeCountChange: { name: \"activeCountChange\", resultDecoder: activeNotificationsCountChangeDecoder },\n stateChange: { name: \"stateChange\", resultDecoder: notificationSetStateRequestDecoder }\n};\n\nexport interface RaiseNotification {\n settings: IOConnectBrowser.Notifications.RaiseOptions;\n id: string;\n}\n\nexport interface RaiseNotificationResult {\n settings: IOConnectBrowser.Notifications.RaiseOptions;\n}\n\nexport interface PermissionRequestResult {\n permissionGranted: boolean;\n}\n\nexport interface PermissionQueryResult {\n permission: NotificationPermissionTypes;\n}\n\nexport interface NotificationEventPayload {\n definition: IOConnectBrowser.Notifications.NotificationDefinition;\n action?: string;\n id?: string;\n}\n\nexport interface SimpleNotificationData {\n notification: IOConnectBrowser.Notifications.NotificationData;\n}\n\nexport interface AllNotificationsData {\n notifications: IOConnectBrowser.Notifications.NotificationData[];\n}\n\nexport interface NotificationClickConfig {\n id: string;\n action?: string;\n}\n\nexport interface SimpleNotificationSelect {\n id: string;\n}\n\nexport interface NotificationsConfigurationProtocol {\n configuration: IOConnectBrowser.Notifications.Configuration;\n}\n\nexport interface StrictSourceFiler extends IOConnectBrowser.Notifications.NotificationFilter {\n allowed: NonNullable;\n blocked: NonNullable;\n}\n\nexport interface StrictConfiguration extends IOConnectBrowser.Notifications.Configuration {\n enable: NonNullable;\n enableToasts: NonNullable;\n sourceFilter: StrictSourceFiler;\n}\n\nexport interface StrictNotificationsConfigurationProtocol {\n configuration: StrictConfiguration;\n}\n\nexport interface NotificationSetStateRequest {\n id: string;\n state: IOConnectBrowser.Notifications.State;\n}\n\nexport interface ActiveNotificationsCountChange {\n count: number;\n}\n","'use strict';\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed(_seed_) {\n seed = _seed_;\n}\n\nmodule.exports = {\n nextValue: getNextValue,\n seed: setSeed\n};\n","'use strict';\n\nvar randomFromSeed = require('./random/random-from-seed');\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet !== ORIGINAL) {\n alphabet = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet || ORIGINAL;\n}\n\nmodule.exports = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n","'use strict';\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nmodule.exports = randomByte;\n","// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nmodule.exports = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length)\n var id = ''\n\n while (true) {\n var bytes = random(step)\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || ''\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id\n }\n }\n}\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar random = require('./random/random-byte');\nvar format = require('nanoid/format');\n\nfunction generate(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nmodule.exports = generate;\n","'use strict';\n\nvar generate = require('./generate');\nvar alphabet = require('./alphabet');\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nmodule.exports = build;\n","'use strict';\nvar alphabet = require('./alphabet');\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nmodule.exports = isShortId;\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar build = require('./build');\nvar isValid = require('./is-valid');\n\n// if you are using cluster or multiple servers use this to make each instance\n// has a unique value for worker\n// Note: I don't know if this is automatically set when using third\n// party cluster solutions such as pm2.\nvar clusterWorkerId = require('./util/cluster-worker-id') || 0;\n\n/**\n * Set the seed.\n * Highly recommended if you don't want people to try to figure out your id schema.\n * exposed as shortid.seed(int)\n * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n */\nfunction seed(seedValue) {\n alphabet.seed(seedValue);\n return module.exports;\n}\n\n/**\n * Set the cluster worker or machine id\n * exposed as shortid.worker(int)\n * @param workerId worker must be positive integer. Number less than 16 is recommended.\n * returns shortid module so it can be chained.\n */\nfunction worker(workerId) {\n clusterWorkerId = workerId;\n return module.exports;\n}\n\n/**\n *\n * sets new characters to use in the alphabet\n * returns the shuffled alphabet\n */\nfunction characters(newCharacters) {\n if (newCharacters !== undefined) {\n alphabet.characters(newCharacters);\n }\n\n return alphabet.shuffled();\n}\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction generate() {\n return build(clusterWorkerId);\n}\n\n// Export all other functions as properties of the generate function\nmodule.exports = generate;\nmodule.exports.generate = generate;\nmodule.exports.seed = seed;\nmodule.exports.worker = worker;\nmodule.exports.characters = characters;\nmodule.exports.isValid = isValid;\n","'use strict';\nmodule.exports = require('./lib/index');\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { glue42NotificationOptionsDecoder, nonEmptyStringDecoder, notificationFilterDecoder, notificationStateDecoder, notificationsConfigurationDecoder, notificationsOperationTypesDecoder } from \"../shared/decoders\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport { ActiveNotificationsCountChange, AllNotificationsData, NotificationClickConfig, NotificationEventPayload, NotificationsConfigurationProtocol, NotificationSetStateRequest, operations, PermissionQueryResult, PermissionRequestResult, RaiseNotification, RaiseNotificationResult, SimpleNotificationData, SimpleNotificationSelect, StrictNotificationsConfigurationProtocol } from \"./protocol\";\nimport { generate } from \"shortid\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction\n} from \"callback-registry\";\n\nexport class NotificationsController implements LibController {\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private logger!: IOConnectBrowser.Logger.API;\n private bridge!: GlueBridge;\n private notificationsSettings?: IOConnectBrowser.Notifications.Settings;\n private notifications: { [key in string]: IOConnectBrowser.Notifications.Notification } = {};\n private coreGlue!: IOConnectCore.API;\n private buildNotificationFunc!: (config: IOConnectBrowser.Notifications.RaiseOptions, id: string) => IOConnectBrowser.Notifications.Notification;\n\n public handlePlatformShutdown(): void {\n this.notifications = {};\n this.registry.clear();\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"notifications.controller.web\");\n\n this.logger.trace(\"starting the web notifications controller\");\n\n this.bridge = ioc.bridge;\n\n this.coreGlue = coreGlue;\n\n this.notificationsSettings = ioc.config.notifications;\n\n this.buildNotificationFunc = ioc.buildNotification;\n\n const api = this.toApi();\n\n this.addOperationExecutors();\n\n (coreGlue as IOConnectBrowser.API).notifications = api;\n\n this.logger.trace(\"notifications are ready\");\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = notificationsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private toApi(): IOConnectBrowser.Notifications.API {\n const api: IOConnectBrowser.Notifications.API = {\n raise: this.raise.bind(this),\n requestPermission: this.requestPermission.bind(this),\n getPermission: this.getPermission.bind(this),\n list: this.list.bind(this),\n onRaised: this.onRaised.bind(this),\n onClosed: this.onClosed.bind(this),\n click: this.click.bind(this),\n clear: this.clear.bind(this),\n clearAll: this.clearAll.bind(this),\n clearOld: this.clearOld.bind(this),\n configure: this.configure.bind(this),\n getConfiguration: this.getConfiguration.bind(this),\n getFilter: this.getFilter.bind(this),\n setFilter: this.setFilter.bind(this),\n setState: this.setState.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\n onActiveCountChanged: this.onActiveCountChanged.bind(this),\n onStateChanged: this.onStateChanged.bind(this)\n };\n\n return Object.freeze(api);\n }\n\n private async getPermission(): Promise<\"default\" | \"granted\" | \"denied\"> {\n\n const queryResult = await this.bridge.send(\"notifications\", operations.getPermission, undefined);\n\n return queryResult.permission;\n }\n\n private async requestPermission(): Promise {\n\n const permissionResult = await this.bridge.send(\"notifications\", operations.requestPermission, undefined);\n\n return permissionResult.permissionGranted;\n }\n\n private async raise(options: IOConnectBrowser.Notifications.RaiseOptions): Promise {\n const settings = glue42NotificationOptionsDecoder.runWithException(options);\n\n settings.showToast = typeof settings.showToast === \"boolean\" ? settings.showToast : true;\n settings.showInPanel = typeof settings.showInPanel === \"boolean\" ? settings.showInPanel : true;\n\n const permissionGranted = await this.requestPermission();\n\n if (!permissionGranted) {\n throw new Error(\"Cannot raise the notification, because the user has declined the permission request\");\n }\n\n const id = generate();\n\n const raiseResult = await this.bridge.send(\"notifications\", operations.raiseNotification, { settings, id });\n\n const notification = this.buildNotificationFunc(raiseResult.settings, id);\n\n this.notifications[id] = notification;\n\n return notification;\n }\n\n private async list(): Promise {\n const bridgeResponse = await this.bridge.send(\"notifications\", operations.list, undefined, undefined, { includeOperationCheck: true });\n\n return bridgeResponse.notifications;\n }\n\n private onRaised(callback: (notification: IOConnectBrowser.Notifications.NotificationData) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onRaised expects a callback of type function\");\n }\n\n return this.registry.add(\"notification-raised\", callback);\n }\n\n private onClosed(callback: (notification: SimpleNotificationSelect) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onRaised expects a callback of type function\");\n }\n\n return this.registry.add(\"notification-closed\", callback);\n }\n\n private async click(id: string, action?: string): Promise {\n nonEmptyStringDecoder.runWithException(id);\n\n if (action) {\n nonEmptyStringDecoder.runWithException(action);\n }\n\n await this.bridge.send(\"notifications\", operations.click, { id, action }, undefined, { includeOperationCheck: true });\n }\n\n private async clear(id: string): Promise {\n nonEmptyStringDecoder.runWithException(id);\n\n await this.bridge.send(\"notifications\", operations.clear, { id }, undefined, { includeOperationCheck: true });\n }\n\n private async clearAll(): Promise {\n await this.bridge.send(\"notifications\", operations.clearAll, undefined, undefined, { includeOperationCheck: true });\n }\n\n private async clearOld(): Promise {\n await this.bridge.send(\"notifications\", operations.clearOld, undefined, undefined, { includeOperationCheck: true });\n }\n\n private async configure(config: IOConnectBrowser.Notifications.Configuration): Promise {\n const verifiedConfig = notificationsConfigurationDecoder.runWithException(config);\n\n await this.bridge.send(\"notifications\", operations.configure, { configuration: verifiedConfig }, undefined, { includeOperationCheck: true });\n }\n\n private async getConfiguration(): Promise {\n const response = await this.bridge.send(\"notifications\", operations.getConfiguration, undefined, undefined, { includeOperationCheck: true });\n\n return response.configuration;\n }\n\n private async getFilter(): Promise {\n const response = await this.bridge.send(\"notifications\", operations.getConfiguration, undefined, undefined, { includeOperationCheck: true });\n\n return response.configuration.sourceFilter;\n }\n\n private async setFilter(filter: IOConnectBrowser.Notifications.NotificationFilter): Promise {\n const verifiedFilter = notificationFilterDecoder.runWithException(filter);\n\n await this.bridge.send(\"notifications\", operations.configure, { configuration: { sourceFilter: verifiedFilter } }, undefined, { includeOperationCheck: true });\n\n return verifiedFilter;\n }\n\n private async setState(id: string, state: IOConnectBrowser.Notifications.State): Promise {\n nonEmptyStringDecoder.runWithException(id);\n notificationStateDecoder.runWithException(state);\n\n await this.bridge.send(\"notifications\", operations.setState, { id, state }, undefined, { includeOperationCheck: true });\n }\n\n private onConfigurationChanged(callback: (config: IOConnectBrowser.Notifications.Configuration) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to configuration changed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"notifications-config-changed\", callback);\n }\n\n private onActiveCountChanged(callback: (info: { count: number; }) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onActiveCountChanged changed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"notifications-active-count-changed\", callback);\n }\n\n private onStateChanged(callback: (notification: { id: string; }, state: IOConnectBrowser.Notifications.State) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onStateChanged changed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"notification-state-changed\", callback);\n }\n\n private addOperationExecutors(): void {\n operations.notificationShow.execute = this.handleNotificationShow.bind(this);\n operations.notificationClick.execute = this.handleNotificationClick.bind(this);\n operations.notificationRaised.execute = this.handleNotificationRaised.bind(this);\n operations.notificationClosed.execute = this.handleNotificationClosed.bind(this);\n operations.configurationChanged.execute = this.handleConfigurationChanged.bind(this);\n operations.activeCountChange.execute = this.handleActiveCountChanged.bind(this);\n operations.stateChange.execute = this.handleNotificationStateChanged.bind(this);\n }\n\n private async handleConfigurationChanged(data: StrictNotificationsConfigurationProtocol): Promise {\n this.registry.execute(\"notifications-config-changed\", data.configuration);\n }\n\n private async handleActiveCountChanged(data: ActiveNotificationsCountChange): Promise {\n this.registry.execute(\"notifications-active-count-changed\", data);\n }\n\n private async handleNotificationStateChanged(data: NotificationSetStateRequest): Promise {\n this.registry.execute(\"notification-state-changed\", {id: data.id}, data.state);\n }\n\n private async handleNotificationShow(data: NotificationEventPayload): Promise {\n\n if (!data.id) {\n return;\n }\n\n const notification = this.notifications[data.id];\n if (notification && notification.onshow) {\n notification.onshow();\n }\n }\n\n private async handleNotificationClick(data: NotificationEventPayload): Promise {\n\n if (!data.action && this.notificationsSettings?.defaultClick) {\n this.notificationsSettings.defaultClick(this.coreGlue as IOConnectBrowser.API, data.definition);\n }\n\n if (data.action && this.notificationsSettings?.actionClicks?.some((actionDef) => actionDef.action === data.action)) {\n const foundHandler = this.notificationsSettings?.actionClicks?.find((actionDef) => actionDef.action === data.action) as IOConnectBrowser.Notifications.ActionClickHandler;\n\n foundHandler.handler(this.coreGlue as IOConnectBrowser.API, data.definition);\n }\n\n if (!data.id) {\n return;\n }\n\n const notification = this.notifications[data.id];\n\n if (notification && notification.onclick) {\n notification.onclick();\n delete this.notifications[data.id];\n }\n\n }\n\n private async handleNotificationRaised(data: SimpleNotificationData): Promise {\n this.registry.execute(\"notification-raised\", data.notification);\n }\n\n private async handleNotificationClosed(data: SimpleNotificationSelect): Promise {\n this.registry.execute(\"notification-closed\", data);\n }\n}\n","import { IOConnectBrowser } from \"../../browser\";\nimport { wrappedIntentFilterDecoder, intentRequestDecoder, intentResultDecoder, wrappedIntentsDecoder, raiseIntentRequestDecoder, filterHandlersResultDecoder, filterHandlersWithResolverConfigDecoder, intentHandlerDecoder, getIntentsResultDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type IntentsOperationTypes = \"getIntents\" | \"findIntent\" | \"raiseIntent\" | \"raise\" | \"filterHandlers\" | \"getIntentsByHandler\";\n\nexport const operations: { [key in IntentsOperationTypes]: BridgeOperation } = {\n getIntents: { name: \"getIntents\", resultDecoder: wrappedIntentsDecoder },\n findIntent: { name: \"findIntent\", dataDecoder: wrappedIntentFilterDecoder, resultDecoder: wrappedIntentsDecoder },\n raiseIntent: { name: \"raiseIntent\", dataDecoder: intentRequestDecoder, resultDecoder: intentResultDecoder },\n raise: { name: \"raise\", dataDecoder: raiseIntentRequestDecoder, resultDecoder: intentResultDecoder },\n filterHandlers: { name: \"filterHandlers\", dataDecoder: filterHandlersWithResolverConfigDecoder, resultDecoder: filterHandlersResultDecoder },\n getIntentsByHandler: { name: \"getIntentsByHandler\", dataDecoder: intentHandlerDecoder, resultDecoder: getIntentsResultDecoder }\n};\n\nexport interface WrappedIntentFilter {\n filter?: IOConnectBrowser.Intents.IntentFilter;\n}\n\nexport interface WrappedIntents {\n intents: IOConnectBrowser.Intents.Intent[];\n}\n\nexport interface IntentsResolverResponse {\n intent: string;\n handler: IOConnectBrowser.Intents.IntentHandler;\n}\n\nexport interface IntentsResolverResponsePromise {\n intent: string;\n methodName: string;\n promise: Promise;\n resolve: (arg: IntentsResolverResponse) => void;\n reject: (reason: string) => void;\n}\n\nexport interface RaiseIntentArgs extends IOConnectBrowser.Intents.IntentContext {\n _initialCallerId: string;\n}","export const GLUE42_FDC3_INTENTS_METHOD_PREFIX = \"Tick42.FDC3.Intents.\";\n\nexport const INTENTS_RESOLVER_INTEROP_PREFIX = \"T42.Intents.Resolver.Control.\";\n\nexport const INTENTS_RESOLVER_APP_NAME = \"intentsResolver\";\n\nexport const DEFAULT_RESOLVER_RESPONSE_TIMEOUT = 60 * 1000;\n\nexport const ADDITIONAL_BRIDGE_OPERATION_TIMEOUT = 30 * 1000;\n\nexport const INTENTS_RESOLVER_WIDTH = 400;\n\nexport const INTENTS_RESOLVER_HEIGHT = 440;\n\n// JS setTimeout max value - When delay is larger than 2147483647 or less than 1, the delay will be set to 1\nexport const MAX_SET_TIMEOUT_DELAY = 2147483647;\n\nexport const DEFAULT_PICK_HANDLER_BY_TIMEOUT = 90 * 1000;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController, OperationCheckConfig, OperationCheckResult } from \"../shared/types\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { UnsubscribeFunction } from \"callback-registry\";\nimport { intentsOperationTypesDecoder, raiseRequestDecoder, findFilterDecoder, AddIntentListenerDecoder, handlersFilterDecoder, intentHandlerDecoder } from \"../shared/decoders\";\nimport { operations, RaiseIntentArgs, WrappedIntentFilter, WrappedIntents } from \"./protocol\";\nimport { ADDITIONAL_BRIDGE_OPERATION_TIMEOUT, DEFAULT_PICK_HANDLER_BY_TIMEOUT, DEFAULT_RESOLVER_RESPONSE_TIMEOUT, GLUE42_FDC3_INTENTS_METHOD_PREFIX, INTENTS_RESOLVER_APP_NAME, MAX_SET_TIMEOUT_DELAY } from \"./constants\";\nimport { LegacyIntentsHelper } from \"./legacyHelper\";\nimport { systemOperations } from \"../shared/systemOperations\";\nimport { FilterHandlersWithResolverConfig, ResolverConfig, IntentRequestWithResolverConfig, IsRaiseOperationSupported, GetResolverConfigByRequestArgs } from \"./types\"; \n\nexport class IntentsController implements LibController {\n private bridge!: GlueBridge;\n private logger!: IOConnectBrowser.Logger.API;\n private interop!: IOConnectCore.AGM.API;\n private legacyIntentsController!: LegacyIntentsHelper;\n private myIntents = new Set();\n\n private useIntentsResolverUI = true;\n private intentsResolverAppName!: string;\n private intentResolverResponseTimeout!: number;\n\n private unregisterIntentPromises: Promise[] = [];\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"intents.controller.web\");\n\n this.logger.trace(\"starting the web intents controller\");\n\n this.bridge = ioc.bridge;\n\n this.interop = coreGlue.interop;\n\n this.legacyIntentsController = ioc.legacyIntentsHelper;\n\n this.checkIfIntentsResolverIsEnabled(ioc.config);\n\n const api = this.toApi();\n\n this.logger.trace(\"no need for platform registration, attaching the intents property to glue and returning\");\n\n (coreGlue as IOConnectBrowser.API).intents = api;\n }\n\n public handlePlatformShutdown(): void {\n this.myIntents = new Set();\n this.unregisterIntentPromises = [];\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = intentsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private toApi(): IOConnectBrowser.Intents.API {\n const api: IOConnectBrowser.Intents.API = {\n raise: this.raise.bind(this),\n all: this.all.bind(this),\n addIntentListener: this.addIntentListener.bind(this),\n register: this.register.bind(this),\n find: this.find.bind(this),\n filterHandlers: this.filterHandlers.bind(this),\n getIntents: this.getIntentsByHandler.bind(this)\n };\n\n return api;\n }\n\n private async raise(request: string | IOConnectBrowser.Intents.IntentRequest): Promise {\n const validatedIntentRequest = raiseRequestDecoder.runWithException(request);\n\n const intentRequest: IOConnectBrowser.Intents.IntentRequest = typeof validatedIntentRequest === \"string\"\n ? { intent: validatedIntentRequest }\n : validatedIntentRequest;\n\n await Promise.all(this.unregisterIntentPromises);\n\n const requestWithResolverInfo = { intentRequest, resolverConfig: this.getResolverConfigByRequest({ intentRequest }) };\n\n const isRaiseOperationSupported = await this.isRaiseOperationSupported();\n\n if (!isRaiseOperationSupported.supported) {\n this.logger.warn(`${isRaiseOperationSupported.reason}. Invoking legacy raise method`);\n\n return this.legacyIntentsController.raise(requestWithResolverInfo, this.find.bind(this));\n }\n\n this.logger.trace(`Sending raise request to the platform: ${JSON.stringify(request)} and method response timeout of ${this.intentResolverResponseTimeout}ms`);\n\n // waitUserResponseIndefinitely: true -> methodResponseTimeoutMs: Number.MAX_SAFE_INTEGER\n const methodResponseTimeoutMs = intentRequest.waitUserResponseIndefinitely \n ? MAX_SET_TIMEOUT_DELAY\n : (intentRequest.timeout || this.intentResolverResponseTimeout) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT;\n\n const response = await this.bridge.send(\"intents\", operations.raise, requestWithResolverInfo, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs });\n\n return response;\n }\n\n private getResolverConfigByRequest(filter: GetResolverConfigByRequestArgs): ResolverConfig {\n if (filter.handlerFilter) {\n return {\n enabled: typeof filter.handlerFilter?.openResolver === \"boolean\" ? filter.handlerFilter?.openResolver : this.useIntentsResolverUI,\n appName: this.intentsResolverAppName,\n waitResponseTimeout: filter.handlerFilter?.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT\n };\n }\n\n\n // if waitUserResponseIndefinitely: true -> ignore resolver timeout and wait for eternity until the user chooses a handler\n const waitResponseTimeout = filter.intentRequest?.waitUserResponseIndefinitely ? MAX_SET_TIMEOUT_DELAY : this.intentResolverResponseTimeout;\n\n return { \n enabled: this.useIntentsResolverUI,\n appName: this.intentsResolverAppName,\n waitResponseTimeout\n };\n }\n\n private async isRaiseOperationSupported(): Promise {\n try {\n const { isSupported } = await this.bridge.send(\"intents\", systemOperations.operationCheck, { operation: \"raise\" });\n\n return {\n supported: isSupported,\n reason: isSupported ? \"\" : \"The platform of this client is outdated and does not support \\\"raise\\\" operation\"\n };\n } catch (error) {\n return {\n supported: false,\n reason: \"The platform of this client is outdated and does not support \\\"operationCheck\\\" command\"\n };\n }\n }\n\n private async all(): Promise {\n await Promise.all(this.unregisterIntentPromises);\n\n const result = await this.bridge.send(\"intents\", operations.getIntents, undefined);\n\n return result.intents;\n }\n\n private addIntentListener(intent: string | IOConnectBrowser.Intents.AddIntentListenerRequest, handler: (context: IOConnectBrowser.Intents.IntentContext) => any): { unsubscribe: UnsubscribeFunction } {\n AddIntentListenerDecoder.runWithException(intent);\n if (typeof handler !== \"function\") {\n throw new Error(\"Cannot add intent listener, because the provided handler is not a function!\");\n }\n\n // eslint-disable-next-line prefer-const\n let registerPromise: Promise;\n\n // `addIntentListener()` is sync.\n const intentName = typeof intent === \"string\" ? intent : intent.intent;\n const methodName = this.buildInteropMethodName(intentName);\n\n const alreadyRegistered = this.myIntents.has(intentName);\n\n if (alreadyRegistered) {\n throw new Error(`Intent listener for intent ${intentName} already registered!`);\n }\n this.myIntents.add(intentName);\n\n const result = {\n unsubscribe: (): void => {\n this.myIntents.delete(intentName);\n\n registerPromise\n .then(() => this.interop.unregister(methodName))\n .catch((err) => this.logger.trace(`Unregistration of a method with name ${methodName} failed with reason: ${err}`));\n }\n };\n\n let intentFlag: Omit = {};\n\n if (typeof intent === \"object\") {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { intent: removed, ...rest } = intent;\n intentFlag = rest;\n }\n\n registerPromise = this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args: RaiseIntentArgs) => {\n if (this.myIntents.has(intentName)) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _initialCallerId, ...rest } = args;\n\n return handler(rest);\n }\n });\n\n registerPromise.catch(err => {\n this.myIntents.delete(intentName);\n\n this.logger.warn(`Registration of a method with name ${methodName} failed with reason: ${err}`);\n });\n\n return result;\n }\n\n private async register(intent: string | IOConnectBrowser.Intents.AddIntentListenerRequest, handler: (context: IOConnectBrowser.Intents.IntentContext, caller?: IOConnectCore.Interop.Instance) => any): Promise<{ unsubscribe: UnsubscribeFunction }> {\n AddIntentListenerDecoder.runWithException(intent);\n\n if (typeof handler !== \"function\") {\n throw new Error(\"Cannot add intent listener, because the provided handler is not a function!\");\n }\n\n await Promise.all(this.unregisterIntentPromises);\n\n const intentName = typeof intent === \"string\" ? intent : intent.intent;\n const methodName = this.buildInteropMethodName(intentName);\n\n const alreadyRegistered = this.myIntents.has(intentName);\n\n if (alreadyRegistered) {\n throw new Error(`Intent listener for intent ${intentName} already registered!`);\n }\n this.myIntents.add(intentName);\n\n let intentFlag: Omit = {};\n\n if (typeof intent === \"object\") {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { intent: removed, ...rest } = intent;\n intentFlag = rest;\n }\n\n try {\n await this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args: RaiseIntentArgs) => {\n if (this.myIntents.has(intentName)) {\n const { _initialCallerId, ...rest } = args;\n\n const caller = this.interop.servers().find((server) => server.instance === _initialCallerId);\n\n return handler(rest, caller);\n }\n });\n } catch (err) {\n this.myIntents.delete(intentName);\n\n throw new Error(`Registration of a method with name ${methodName} failed with reason: ${JSON.stringify(err)}`);\n }\n\n return {\n unsubscribe: () => this.unsubscribeIntent(intentName)\n };\n }\n\n private async find(intentFilter?: string | IOConnectBrowser.Intents.IntentFilter): Promise {\n let data: WrappedIntentFilter | undefined = undefined;\n\n if (typeof intentFilter !== \"undefined\") {\n const intentFilterObj = findFilterDecoder.runWithException(intentFilter);\n\n if (typeof intentFilterObj === \"string\") {\n data = {\n filter: {\n name: intentFilterObj\n }\n };\n } else if (typeof intentFilterObj === \"object\") {\n data = {\n filter: intentFilterObj\n };\n }\n }\n\n await Promise.all(this.unregisterIntentPromises);\n\n const result = await this.bridge.send(\"intents\", operations.findIntent, data);\n\n return result.intents;\n }\n\n private checkIfIntentsResolverIsEnabled(options: IOConnectBrowser.Config): void {\n this.useIntentsResolverUI = typeof options.intents?.enableIntentsResolverUI === \"boolean\"\n ? options.intents.enableIntentsResolverUI\n : true;\n\n this.intentsResolverAppName = options.intents?.intentsResolverAppName ?? INTENTS_RESOLVER_APP_NAME;\n\n this.intentResolverResponseTimeout = options.intents?.methodResponseTimeoutMs ?? DEFAULT_RESOLVER_RESPONSE_TIMEOUT;\n }\n\n private clearUnregistrationPromise(promiseToRemove: Promise): void {\n this.unregisterIntentPromises = this.unregisterIntentPromises.filter(promise => promise !== promiseToRemove);\n }\n\n private buildInteropMethodName(intentName: string): string {\n return `${GLUE42_FDC3_INTENTS_METHOD_PREFIX}${intentName}`;\n }\n\n private unsubscribeIntent(intentName: string): void {\n this.myIntents.delete(intentName);\n\n const methodName = this.buildInteropMethodName(intentName);\n\n // typings are wrong and mark unregister as a sync method\n const unregisterPromise = this.interop.unregister(methodName) as unknown as Promise;\n\n this.unregisterIntentPromises.push(unregisterPromise);\n\n unregisterPromise\n .then(() => {\n this.clearUnregistrationPromise(unregisterPromise);\n })\n .catch((err) => {\n this.logger.error(`Unregistration of a method with name ${methodName} failed with reason: ${err}`);\n\n this.clearUnregistrationPromise(unregisterPromise);\n });\n }\n\n private async filterHandlers(handlerFilter: IOConnectBrowser.Intents.HandlerFilter): Promise {\n handlersFilterDecoder.runWithException(handlerFilter);\n \n this.checkIfAtLeastOneFilterIsPresent(handlerFilter);\n\n if (handlerFilter.openResolver && !this.useIntentsResolverUI) {\n throw new Error(\"Cannot resolve 'filterHandlers' request using Intents Resolver UI because it's globally disabled\");\n }\n\n const methodResponseTimeoutMs = (handlerFilter.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT;\n\n const filterHandlersRequestWithResolverConfig: FilterHandlersWithResolverConfig = { filterHandlersRequest: handlerFilter, resolverConfig: this.getResolverConfigByRequest({ handlerFilter }) };\n \n const result = await this.bridge.send(\"intents\", operations.filterHandlers, filterHandlersRequestWithResolverConfig, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }, { includeOperationCheck: true });\n\n return result;\n }\n\n private checkIfAtLeastOneFilterIsPresent(filter: IOConnectBrowser.Intents.HandlerFilter): void {\n const errorMsg = \"Provide at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'\";\n \n if (!Object.keys(filter).length) {\n // only title was present\n throw new Error(errorMsg);\n }\n\n const { intent, resultType, contextTypes, applicationNames } = filter;\n\n const existingValidContextTypes = contextTypes?.length;\n const existingValidApplicationNames = applicationNames?.length;\n\n if (!intent && !resultType && !existingValidContextTypes && !existingValidApplicationNames) {\n throw new Error(errorMsg);\n }\n }\n\n private async getIntentsByHandler(handler: IOConnectBrowser.Intents.IntentHandler): Promise {\n intentHandlerDecoder.runWithException(handler);\n\n const result = await this.bridge.send(\"intents\", operations.getIntentsByHandler, handler, undefined, { includeOperationCheck: true });\n\n return result;\n }\n}\n","import { PlatformMessages } from \"./types\";\n\nexport const Glue42CoreMessageTypes: { [key in PlatformMessages]: { name: PlatformMessages } } = {\n platformUnload: { name: \"platformUnload\" },\n transportSwitchRequest: { name: \"transportSwitchRequest\" },\n transportSwitchResponse: { name: \"transportSwitchResponse\" },\n getCurrentTransport: { name: \"getCurrentTransport\" },\n getCurrentTransportResponse: { name: \"getCurrentTransportResponse\" },\n checkPreferredLogic: { name: \"checkPreferredLogic\" },\n checkPreferredConnection: { name: \"checkPreferredConnection\" },\n checkPreferredLogicResponse: { name: \"checkPreferredLogicResponse\" },\n checkPreferredConnectionResponse: { name: \"checkPreferredConnectionResponse\" }\n};\n\nexport const webPlatformTransportName = \"web-platform\";\n\nexport const latestFDC3Type = \"latest_fdc3_type\";","import { channelContextDecoder, getMyChanelResultDecoder, getWindowIdsOnChannelDataDecoder, getWindowIdsOnChannelResultDecoder, getWindowIdsWithChannelsResultDecoder, joinChannelDataDecoder, wrappedWindowWithChannelFilterDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\nimport { IOConnectBrowser } from \"../../browser\";\n\nexport type ChannelOperationTypes = \"addChannel\" | \"getMyChannel\" | \"getWindowIdsOnChannel\" | \"getWindowIdsWithChannels\" | \"joinChannel\";\n\nexport const operations: { [key in ChannelOperationTypes]: BridgeOperation } = {\n addChannel: { name: \"addChannel\", dataDecoder: channelContextDecoder },\n getMyChannel: { name: \"getMyChannel\", resultDecoder: getMyChanelResultDecoder },\n getWindowIdsOnChannel: { name: \"getWindowIdsOnChannel\", dataDecoder: getWindowIdsOnChannelDataDecoder, resultDecoder: getWindowIdsOnChannelResultDecoder },\n getWindowIdsWithChannels: { name: \"getWindowIdsWithChannels\", dataDecoder: wrappedWindowWithChannelFilterDecoder, resultDecoder: getWindowIdsWithChannelsResultDecoder },\n joinChannel: { name: \"joinChannel\", dataDecoder: joinChannelDataDecoder },\n};\n\nexport interface MyChannelData {\n channel?: string;\n}\n\nexport interface WindowIdsOnChannelData {\n windowIds: string[];\n}\n\nexport interface WindowIdsWithChannelsData {\n windowIdsWithChannels: {\n application: string;\n channel?: string;\n windowId: string;\n }[]\n}\n\nexport interface WrappedWindowWithChannelFilter {\n filter?: IOConnectBrowser.Channels.WindowWithChannelFilter\n}\n\nexport interface JoinChannelData {\n channel: string;\n windowId: string;\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { channelContextDecoder, channelNameDecoder, channelsOperationTypesDecoder, optionalNonEmptyStringDecoder, windowWithChannelFilterDecoder } from \"../shared/decoders\";\nimport { LibController } from \"../shared/types\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { latestFDC3Type } from \"../shared/constants\";\nimport { IoC } from \"../shared/ioc\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { JoinChannelData, operations, WindowIdsOnChannelData, WindowIdsWithChannelsData, WrappedWindowWithChannelFilter } from \"./protocol\";\nimport { WindowsController } from \"../windows/controller\";\nimport { SessionStorageController } from \"../storage/session\";\n\nexport class ChannelsController implements LibController {\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private logger!: IOConnectBrowser.Logger.API;\n private contexts!: IOConnectCore.Contexts.API;\n private bridge!: GlueBridge;\n private currentChannelName: string | undefined;\n private windowsController!: WindowsController;\n private sessionController!: SessionStorageController;\n private unsubscribeFunc: (() => void) | undefined;\n\n private readonly GlueWebChannelsPrefix = \"___channel___\";\n private readonly SubsKey = \"subs\";\n private readonly ChangedKey = \"changed\";\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n }\n\n private addOperationsExecutors(): void {\n operations.getMyChannel.execute = this.handleGetMyChannel.bind(this);\n operations.joinChannel.execute = this.handleJoinChannel.bind(this);\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"channels.controller.web\");\n\n this.logger.trace(\"starting the web channels controller\");\n\n this.contexts = coreGlue.contexts;\n\n this.addOperationsExecutors();\n\n this.bridge = ioc.bridge;\n\n this.windowsController = ioc.windowsController;\n \n this.sessionController = ioc.sessionController;\n\n this.logger.trace(\"no need for platform registration, attaching the channels property to glue and returning\");\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).channels = api;\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = channelsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if(!operation.execute) {\n return; \n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n public async list(): Promise {\n const channelNames = this.getAllChannelNames();\n\n const channelContexts = await Promise.all(channelNames.map((channelName) => this.get(channelName)));\n\n return channelContexts;\n }\n\n public my(): string {\n return this.current();\n }\n\n private async handleGetMyChannel() {\n const channel = this.my();\n \n return channel ? { channel } : {};\n }\n\n public async join(name: string, windowId?: string): Promise {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n optionalNonEmptyStringDecoder.runWithException(windowId);\n\n if (!windowId || windowId === this.windowsController.my().id) {\n await this.switchToChannel(name);\n } else {\n await this.bridge.send(\"channels\", operations.joinChannel, { channel: name, windowId }, undefined, { includeOperationCheck: true });\n }\n }\n\n private handleJoinChannel({ channel, windowId }: JoinChannelData) {\n return this.join(channel, windowId);\n }\n\n public onChanged(callback: (channel: string) => void): UnsubscribeFunction {\n return this.changed(callback);\n }\n\n public async leave(): Promise {\n await this.switchToChannel();\n }\n\n private toApi(): IOConnectBrowser.Channels.API {\n const api: IOConnectBrowser.Channels.API = {\n subscribe: this.subscribe.bind(this),\n subscribeFor: this.subscribeFor.bind(this),\n publish: this.publish.bind(this),\n all: this.all.bind(this),\n list: this.list.bind(this),\n get: this.get.bind(this),\n join: this.join.bind(this),\n leave: this.leave.bind(this),\n current: this.current.bind(this),\n my: this.my.bind(this),\n changed: this.changed.bind(this),\n onChanged: this.onChanged.bind(this),\n add: this.add.bind(this),\n getMy: this.getMy.bind(this),\n getWindowsOnChannel: this.getWindowsOnChannel.bind(this),\n getWindowsWithChannels: this.getWindowsWithChannels.bind(this),\n };\n\n return Object.freeze(api);\n }\n\n private createContextName(channelName: string): string {\n return `${this.GlueWebChannelsPrefix}${channelName}`;\n }\n\n private getAllChannelNames(): string[] {\n const contextNames = this.contexts.all();\n\n const channelContextNames = contextNames.filter((contextName) => contextName.startsWith(this.GlueWebChannelsPrefix));\n\n const channelNames = channelContextNames.map((channelContextName) => channelContextName.replace(this.GlueWebChannelsPrefix, \"\"));\n\n return channelNames;\n }\n\n private unsubscribe(): void {\n if (this.unsubscribeFunc) {\n this.unsubscribeFunc();\n\n this.unsubscribeFunc = undefined;\n }\n }\n\n private async switchToChannel(name?: string): Promise {\n this.unsubscribe();\n\n // TODO: Should be set after `subscribe()` has resolved, but due to an issue where `subscribe()` replays the context before returning an unsubscribe function this has been moved here.\n this.currentChannelName = name;\n\n // When joining a channel (and not leaving).\n if (typeof name !== \"undefined\") {\n const contextName = this.createContextName(name);\n\n this.unsubscribeFunc = await this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\n this.registry.execute(this.SubsKey, context.data, context, extraData?.updaterId);\n });\n }\n\n this.registry.execute(this.ChangedKey, name);\n\n this.sessionController.setWindowData({ currentName: name }, \"channels\");\n }\n\n private async updateData(name: string, data: any): Promise {\n const contextName = this.createContextName(name);\n const fdc3Type = this.getFDC3Type(data);\n\n if (this.contexts.setPathSupported) {\n const pathValues: IOConnectBrowser.Contexts.PathValue[] = Object.keys(data).map((key) => {\n return {\n path: `data.${key}`,\n value: data[key]\n };\n });\n\n if (fdc3Type) {\n pathValues.push({ path: latestFDC3Type, value: fdc3Type});\n }\n\n await this.contexts.setPaths(contextName, pathValues);\n } else {\n if (fdc3Type) {\n data[latestFDC3Type] = fdc3Type;\n }\n\n // Pre @glue42/core 5.2.0. Note that we update the data property only.\n await this.contexts.update(contextName, { data });\n }\n }\n\n private getFDC3Type(data: any): string | undefined {\n const fdc3PropsArr = Object.keys(data).filter((key: string) => key.indexOf(\"fdc3_\") === 0);\n\n if (fdc3PropsArr.length === 0) {\n return;\n }\n\n if (fdc3PropsArr.length > 1) {\n throw new Error(\"FDC3 does not support updating of multiple context keys\");\n }\n\n return fdc3PropsArr[0].split(\"_\").slice(1).join(\"_\");\n }\n\n private subscribe(callback: (data: any, context: IOConnectBrowser.Channels.ChannelContext, updaterId: string) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to channels, because the provided callback is not a function!\");\n }\n\n const currentChannel = this.current();\n \n if (currentChannel) {\n this.replaySubscribe(callback, currentChannel);\n }\n\n return this.registry.add(this.SubsKey, callback);\n }\n\n private async subscribeFor(name: string, callback: (data: any, context: IOConnectBrowser.Channels.ChannelContext, updaterId: string) => void): Promise {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n if (typeof callback !== \"function\") {\n throw new Error(`Cannot subscribe to channel ${name}, because the provided callback is not a function!`);\n }\n\n const contextName = this.createContextName(name);\n\n return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\n callback(context.data, context, extraData?.updaterId);\n });\n }\n\n private publish(data: any, name?: string): Promise {\n if (typeof data !== \"object\") {\n throw new Error(\"Cannot publish to channel, because the provided data is not an object!\");\n }\n if (typeof name !== \"undefined\") {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n\n return this.updateData(name, data);\n }\n\n if (typeof this.currentChannelName === \"undefined\") {\n throw new Error(\"Cannot publish to channel, because not joined to a channel!\");\n }\n\n return this.updateData(this.currentChannelName, data);\n }\n\n public async all(): Promise {\n const channelNames = this.getAllChannelNames();\n\n return channelNames;\n }\n\n private async get(name: string): Promise {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n\n const contextName = this.createContextName(name);\n\n const channelContext = await this.contexts.get(contextName);\n\n if (channelContext.latest_fdc3_type) {\n const { latest_fdc3_type, ...rest} = channelContext;\n\n return { ...rest };\n }\n\n return channelContext;\n }\n\n private current(): string {\n return this.currentChannelName as string;\n }\n\n private changed(callback: (channel: string) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to channel changed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(this.ChangedKey, callback);\n }\n\n private async add(info: IOConnectBrowser.Channels.ChannelContext): Promise {\n const channelContext = channelContextDecoder.runWithException(info);\n\n const channelWithSuchNameExists = this.getAllChannelNames().includes(channelContext.name);\n\n if (channelWithSuchNameExists) {\n throw new Error(\"There's an already existing channel with such name\");\n }\n\n await this.bridge.send(\"channels\", operations.addChannel, channelContext);\n\n return channelContext;\n }\n\n private replaySubscribe = (callback: (data: any, context: IOConnectBrowser.Channels.ChannelContext, updaterId: string) => void, channelId: string) => {\n this.get(channelId)\n .then((channelContext: IOConnectBrowser.Channels.ChannelContext) => {\n if (typeof channelContext.data === \"object\" && Object.keys(channelContext.data).length) {\n const contextName = this.createContextName(channelContext.name);\n\n return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\n callback(context.data, context, extraData?.updaterId);\n });\n }\n\n // this satisfies the TS \"noImplicitReturns\" true flag\n return undefined;\n })\n .then((un: (() => void) | undefined) => {\n if (un && typeof un === \"function\") {\n un();\n }\n })\n .catch(err => this.logger.trace(err));\n };\n\n private async getMy(): Promise {\n if (!this.currentChannelName) {\n return;\n }\n\n return this.get(this.currentChannelName);\n }\n\n private async getWindowsOnChannel(channel: string): Promise {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(channel);\n\n const { windowIds } = await this.bridge.send<{ channel: string }, WindowIdsOnChannelData>(\"channels\", operations.getWindowIdsOnChannel, { channel }, undefined, { includeOperationCheck: true });\n\n const result = windowIds.reduce((windows, windowId) => {\n const window = this.windowsController.findById(windowId);\n\n return window ? [...windows, window] : windows;\n }, []);\n\n return result;\n }\n \n private async getWindowsWithChannels(filter?: IOConnectBrowser.Channels.WindowWithChannelFilter): Promise {\n const operationData: WrappedWindowWithChannelFilter = filter !== undefined\n ? { filter: windowWithChannelFilterDecoder.runWithException(filter) }\n : {};\n\n const { windowIdsWithChannels } = await this.bridge.send(\"channels\", operations.getWindowIdsWithChannels, operationData, undefined, { includeOperationCheck: true });\n\n const result = windowIdsWithChannels.reduce((windowsWithChannels, { application, channel, windowId }) => {\n const window = this.windowsController.findById(windowId);\n\n return window ? [...windowsWithChannels, { application, channel, window }] : windowsWithChannels;\n }, []);\n\n return result;\n }\n}\n","import { anyDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type SystemOperationTypes = \"getEnvironment\" | \"getBase\" | \"platformShutdown\";\n\nexport const operations: { [key in SystemOperationTypes]: BridgeOperation } = {\n getEnvironment: { name: \"getEnvironment\", resultDecoder: anyDecoder },\n getBase: { name: \"getBase\", resultDecoder: anyDecoder },\n platformShutdown: { name: \"platformShutdown\" }\n};\n","import { IOConnectCore } from \"@interopio/core\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { systemOperationTypesDecoder } from \"../shared/decoders\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport { operations } from \"./protocol\";\n\nexport class SystemController implements LibController {\n private bridge!: GlueBridge;\n private ioc!: IoC;\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.bridge = ioc.bridge;\n this.ioc = ioc;\n\n this.addOperationsExecutors();\n\n await this.setEnvironment();\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = systemOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private async processPlatformShutdown(): Promise {\n\n Object.values(this.ioc.controllers).forEach((controller) => controller.handlePlatformShutdown ? controller.handlePlatformShutdown() : null);\n\n this.ioc.preferredConnectionController.stop();\n\n this.ioc.eventsDispatcher.stop();\n\n await this.bridge.stop();\n\n }\n\n private async setEnvironment(): Promise {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const environment = await this.bridge.send(\"system\", operations.getEnvironment, undefined);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const base = await this.bridge.send(\"system\", operations.getBase, undefined);\n\n const globalNamespace = (window as any).glue42core || (window as any).iobrowser;\n\n const globalNamespaceName = (window as any).glue42core ? \"glue42core\" : \"iobrowser\";\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObj = Object.assign({}, globalNamespace, base, { environment });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any)[globalNamespaceName] = Object.freeze(globalObj);\n }\n\n private addOperationsExecutors(): void {\n operations.platformShutdown.execute = this.processPlatformShutdown.bind(this);\n }\n}","/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectBrowser } from \"../../browser\";\n\nexport class Notification implements IOConnectBrowser.Notifications.Notification {\n\n public onclick: () => any = () => { };\n public onshow: () => any = () => { };\n public id: string;\n public title: string;\n public badge?: string | undefined;\n public body?: string | undefined;\n public data?: any;\n public dir?: \"auto\" | \"ltr\" | \"rtl\" | undefined;\n public icon?: string | undefined;\n public image?: string | undefined;\n public lang?: string | undefined;\n public renotify?: boolean | undefined;\n public requireInteraction?: boolean | undefined;\n public silent?: boolean | undefined;\n public tag?: string | undefined;\n public timestamp?: number | undefined;\n public vibrate?: number[] | undefined;\n public clickInterop?: IOConnectBrowser.Notifications.InteropActionSettings | undefined;\n public actions?: IOConnectBrowser.Notifications.NotificationAction[] | undefined;\n public focusPlatformOnDefaultClick?: boolean | undefined;\n public severity?: \"Low\" | \"Medium\" | \"High\" | \"Critical\" | \"None\" | undefined;\n public showToast?: boolean | undefined;\n public showInPanel?: boolean | undefined;\n public state?: IOConnectBrowser.Notifications.State;\n\n constructor(config: IOConnectBrowser.Notifications.RaiseOptions, id: string) {\n this.id = id;\n this.badge = config.badge;\n this.body = config.body;\n this.data = config.data;\n this.dir = config.dir;\n this.icon = config.icon;\n this.image = config.image;\n this.lang = config.lang;\n this.renotify = config.renotify;\n this.requireInteraction = config.requireInteraction;\n this.silent = config.silent;\n this.tag = config.tag;\n this.timestamp = config.timestamp;\n this.vibrate = config.vibrate;\n this.title = config.title;\n this.clickInterop = config.clickInterop;\n this.actions = config.actions;\n this.focusPlatformOnDefaultClick = config.focusPlatformOnDefaultClick;\n this.severity = config.severity;\n this.showToast = config.showToast;\n this.showInPanel = config.showInPanel;\n this.state = config.state;\n }\n\n}","import { Decoder, oneOf, constant, object, boolean } from \"decoder-validate\";\nimport { ExtensionConfig, ExtensionOperationTypes } from \"./protocol\";\n\nexport const extensionOperationTypesDecoder: Decoder = oneOf<\"clientHello\">(\n constant(\"clientHello\")\n);\n\nexport const extensionConfigDecoder: Decoder = object({\n widget: object({\n inject: boolean()\n })\n});\n","import { IOConnectBrowser } from \"../../browser\";\nimport { BridgeOperation } from \"../shared/types\";\nimport { extensionConfigDecoder } from \"./decoders\";\n\nexport type ExtensionOperationTypes = \"clientHello\";\n\nexport const operations: { [key in ExtensionOperationTypes]: BridgeOperation } = {\n clientHello: { name: \"clientHello\", resultDecoder: extensionConfigDecoder }\n};\n\nexport interface ExtensionConfig {\n widget: {\n inject: boolean;\n };\n}\n\nexport interface WidgetInjectionPermission { \n command: \"permissionResponse\";\n allowed: boolean;\n channels?: IOConnectBrowser.Channels.ChannelContext[]; \n currentChannel?: IOConnectBrowser.Channels.ChannelContext; \n}","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { ChannelsController } from \"../channels/controller\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { EventsDispatcher } from \"../shared/dispatcher\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport { ExtensionConfig, operations, WidgetInjectionPermission } from \"./protocol\";\n\nexport class ExtController implements LibController {\n\n private windowId!: string;\n private logger!: IOConnectBrowser.Logger.API;\n private bridge!: GlueBridge;\n private eventsDispatcher!: EventsDispatcher;\n private channelsController!: ChannelsController;\n private config!: ExtensionConfig;\n private channels: IOConnectBrowser.Channels.ChannelContext[] = [];\n private unsubFuncs: (() => void)[] = [];\n\n private readonly contentCommands: { [key in string]: { name: string; handle: (message: any) => Promise } } = {\n widgetVisualizationPermission: { name: \"widgetVisualizationPermission\", handle: this.handleWidgetVisualizationPermission.bind(this) },\n changeChannel: { name: \"changeChannel\", handle: this.handleChangeChannel.bind(this) }\n };\n\n public handlePlatformShutdown(): void {\n this.unsubFuncs.forEach((unsub) => unsub());\n this.channels = [];\n this.unsubFuncs = [];\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n\n this.logger = coreGlue.logger.subLogger(\"extension.controller.web\");\n \n this.windowId = ioc.publicWindowId;\n\n this.logger.trace(\"starting the extension web controller\");\n\n this.bridge = ioc.bridge;\n this.channelsController = ioc.channelsController;\n this.eventsDispatcher = ioc.eventsDispatcher;\n\n // TODO: Maybe think about a better way, because the platform will reject and log an error\n try {\n await this.registerWithPlatform();\n } catch (error) {\n // this is soft controller initialization to ensure that\n // this non-essential controller will not break Glue Web \n // initialization combined with older platforms\n return;\n }\n\n this.channels = await this.channelsController.list();\n\n const unsubDispatcher = this.eventsDispatcher.onContentMessage(this.handleContentMessage.bind(this));\n const unsubChannels = this.channelsController.onChanged((channel) => {\n this.eventsDispatcher.sendContentMessage({ command: \"channelChange\", newChannel: channel });\n });\n\n this.unsubFuncs.push(unsubDispatcher);\n this.unsubFuncs.push(unsubChannels);\n }\n\n public async handleBridgeMessage(_: any): Promise {\n // noop\n }\n\n private handleContentMessage(message: any): void {\n\n if (!message || typeof message.command !== \"string\") {\n return;\n }\n\n const foundHandler = this.contentCommands[message.command];\n\n if (!foundHandler) {\n return;\n }\n\n foundHandler.handle(message);\n }\n\n private async registerWithPlatform(): Promise {\n this.logger.trace(\"registering with the platform\");\n\n this.config = await this.bridge.send<{ windowId: string }, ExtensionConfig>(\"extension\", operations.clientHello, { windowId: this.windowId });\n\n this.logger.trace(\"the platform responded to the hello message with a valid extension config\");\n }\n\n private async handleWidgetVisualizationPermission(): Promise {\n if (!this.config?.widget.inject) {\n return this.eventsDispatcher.sendContentMessage({ command: \"permissionResponse\", allowed: false });\n }\n\n const currentChannel = this.channels.find((channel) => channel.name === this.channelsController.my());\n\n this.eventsDispatcher.sendContentMessage({ command: \"permissionResponse\", allowed: true, channels: this.channels, currentChannel });\n }\n\n private async handleChangeChannel(message: { name: string }): Promise {\n if (message.name === \"no-channel\") {\n await this.channelsController.leave();\n return;\n }\n\n await this.channelsController.join(message.name);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { Glue42EventPayload, ParsedConfig } from \"./types\";\n\nexport class EventsDispatcher {\n private glue!: IOConnectBrowser.API;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private readonly glue42EventName = \"Glue42\";\n private _handleMessage!: (event: Event) => void;\n\n constructor(private readonly config: ParsedConfig) { }\n\n private readonly events: { [key in string]: { name: string; handle: (glue42Data: any) => void | Promise } } = {\n notifyStarted: { name: \"notifyStarted\", handle: this.handleNotifyStarted.bind(this) },\n contentInc: { name: \"contentInc\", handle: this.handleContentInc.bind(this) },\n requestGlue: { name: \"requestGlue\", handle: this.handleRequestGlue.bind(this) }\n };\n\n public stop(): void {\n window.removeEventListener(this.glue42EventName, this._handleMessage);\n }\n\n public start(glue: IOConnectBrowser.API): void {\n this.glue = glue;\n\n this.wireCustomEventListener();\n\n this.announceStarted();\n }\n\n public sendContentMessage(message: T): void {\n this.send(\"contentOut\", \"glue42core\", message);\n }\n\n public onContentMessage(callback: (message: any) => void): UnsubscribeFunction {\n return this.registry.add(\"content-inc\", callback);\n }\n\n private wireCustomEventListener(): void {\n\n this._handleMessage = this.handleMessage.bind(this);\n\n window.addEventListener(this.glue42EventName, this._handleMessage);\n }\n\n private handleMessage(event: Event): void {\n const data = (event as CustomEvent).detail;\n\n const namespace = data?.glue42 ?? data?.glue42core;\n \n if (!namespace) {\n return;\n }\n\n const glue42Event: string = namespace.event;\n\n const foundHandler = this.events[glue42Event];\n\n if (!foundHandler) {\n return;\n }\n\n foundHandler.handle(namespace.message);\n }\n\n private announceStarted(): void {\n this.send(\"start\", \"glue42\");\n }\n\n private handleRequestGlue(): void {\n if (!this.config.exposeAPI) {\n this.send(\"requestGlueResponse\", \"glue42\", { error: \"Will not give access to the underlying Glue API, because it was explicitly denied upon initialization.\" });\n return;\n }\n\n this.send(\"requestGlueResponse\", \"glue42\", { glue: this.glue });\n }\n\n private handleNotifyStarted(): void {\n this.announceStarted();\n }\n\n private handleContentInc(message: any): void {\n this.registry.execute(\"content-inc\", message);\n }\n\n private send(eventName: string, namespace: \"glue42core\" | \"glue42\", message?: any): void {\n const payload: Glue42EventPayload = {};\n payload[namespace] = { event: eventName, message };\n\n const event = new CustomEvent(this.glue42EventName, { detail: payload });\n\n window.dispatchEvent(event);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { UnsubscribeFunction } from \"callback-registry\";\nimport { generate } from \"shortid\";\nimport { Glue42CoreMessageTypes, webPlatformTransportName } from \"../shared/constants\";\nimport { ParsedConfig, PlatformMessages, Transaction, TransportState } from \"../shared/types\";\n\nexport class PreferredConnectionController {\n\n private readonly transactionTimeout = 15000;\n private readonly transactionLocks: { [key in string]: Transaction } = {};\n private webPlatformTransport: any;\n private webPlatformMessagesUnsubscribe: UnsubscribeFunction | undefined;\n private reconnectCounter = 0;\n private readonly logger: IOConnectCore.Logger.API;\n\n constructor(private readonly coreGlue: IOConnectCore.API) {\n this.logger = this.coreGlue.logger.subLogger(\"web.preferred.connection.controller\");\n }\n\n public stop(): void {\n if (!this.webPlatformMessagesUnsubscribe) {\n return;\n }\n\n this.webPlatformMessagesUnsubscribe();\n }\n\n public async start(coreConfig: ParsedConfig): Promise {\n if (coreConfig.isPlatformInternal) {\n this.logger.trace(\"This is an internal client to the platform, skipping all client preferred communication logic.\");\n return;\n }\n\n const isConnectedToPlatform = (this.coreGlue as any).connection.transport.name() === webPlatformTransportName;\n\n if (!isConnectedToPlatform) {\n throw new Error(\"Cannot initiate the Glue Web Bridge, because the initial connection was not handled by a Web Platform transport.\");\n }\n\n if (!(this.coreGlue as any).connection.transport.isPreferredActivated) {\n this.logger.trace(\"The platform of this client was configured without a preferred connection, skipping the rest of the initialization.\");\n return;\n }\n\n this.webPlatformTransport = (this.coreGlue as any).connection.transport;\n\n this.webPlatformMessagesUnsubscribe = this.webPlatformTransport.onMessage(this.handleWebPlatformMessage.bind(this));\n\n const transportState = await this.getCurrentPlatformTransportState();\n\n await this.checkSwitchTransport(transportState);\n }\n\n private handleWebPlatformMessage(msg: string | object): void {\n if (typeof msg === \"string\") {\n return;\n }\n\n const isConnectedToPlatform = (this.coreGlue as any).connection.transport.name() === webPlatformTransportName;\n\n const type = (msg as any).type;\n const args = (msg as any).args;\n const transactionId = (msg as any).transactionId;\n\n if (type === Glue42CoreMessageTypes.transportSwitchRequest.name) {\n return this.handleTransportSwitchRequest(args, transactionId);\n }\n\n if (type === Glue42CoreMessageTypes.platformUnload.name && !isConnectedToPlatform) {\n return this.handlePlatformUnload();\n }\n\n if (type === Glue42CoreMessageTypes.getCurrentTransportResponse.name) {\n return this.handleGetCurrentTransportResponse(args, transactionId);\n }\n\n if (type === Glue42CoreMessageTypes.checkPreferredLogic.name) {\n return this.handleCheckPreferredLogic(transactionId);\n }\n\n if (type === Glue42CoreMessageTypes.checkPreferredConnection.name) {\n return this.handleCheckPreferredConnection(args, transactionId);\n }\n\n }\n\n private async reEstablishPlatformPort(): Promise {\n try {\n await this.webPlatformTransport.connect();\n } catch (error) {\n this.logger.trace(`Error when re-establishing port connection to the platform: ${JSON.stringify(error)}`);\n --this.reconnectCounter;\n\n if (this.reconnectCounter > 0) {\n return this.reEstablishPlatformPort();\n }\n\n this.logger.warn(\"This client lost connection to the platform while connected to a preferred GW and was not able to re-connect to the platform.\");\n }\n\n this.logger.trace(\"The connection to the platform was re-established, closing the connection to the web gateway.\");\n\n this.reconnectCounter = 0;\n\n this.webPlatformTransport.close();\n\n const transportState = await this.getCurrentPlatformTransportState();\n\n await this.checkSwitchTransport(transportState);\n\n }\n\n private async checkSwitchTransport(config: TransportState): Promise {\n const myCurrentTransportName: string = (this.coreGlue as any).connection.transport.name();\n\n if (myCurrentTransportName === config.transportName) {\n this.logger.trace(\"A check switch was requested, but the platform transport and my transport are identical, no switch is necessary\");\n return;\n }\n\n this.logger.trace(`A check switch was requested and a transport switch is necessary, because this client is now on ${myCurrentTransportName}, but it should reconnect to ${JSON.stringify(config)}`);\n\n const result = await this.coreGlue.connection.switchTransport(config);\n\n this.setConnected();\n\n this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`);\n }\n\n private async getCurrentPlatformTransportState(): Promise {\n\n this.logger.trace(\"Requesting the current transport state of the platform.\");\n\n const transaction = this.setTransaction(Glue42CoreMessageTypes.getCurrentTransport.name);\n\n this.sendPlatformMessage(Glue42CoreMessageTypes.getCurrentTransport.name, transaction.id);\n\n const transportState = await transaction.lock;\n\n this.logger.trace(`The platform responded with transport state: ${JSON.stringify(transportState)}`);\n\n return transportState;\n }\n\n private setTransaction(operation: PlatformMessages): Transaction {\n const transaction: Transaction = {} as Transaction;\n\n const transactionId = generate();\n\n const transactionLock = new Promise((resolve, reject) => {\n\n let transactionLive = true;\n\n transaction.lift = (args): void => {\n transactionLive = false;\n delete this.transactionLocks[transactionId];\n resolve(args);\n };\n\n transaction.fail = (reason): void => {\n transactionLive = false;\n delete this.transactionLocks[transactionId];\n reject(reason);\n };\n\n setTimeout(() => {\n if (!transactionLive) {\n return;\n }\n\n transactionLive = false;\n this.logger.warn(`Transaction for operation: ${operation} timed out.`);\n delete this.transactionLocks[transactionId];\n reject(`Transaction for operation: ${operation} timed out.`);\n }, this.transactionTimeout);\n });\n\n transaction.lock = transactionLock;\n\n transaction.id = transactionId;\n\n this.transactionLocks[transactionId] = transaction;\n\n return transaction;\n }\n\n private sendPlatformMessage(type: PlatformMessages, transactionId: string, args?: any): void {\n this.logger.trace(`Sending a platform message of type: ${type}, id: ${transactionId} and args: ${JSON.stringify(args)}`);\n this.webPlatformTransport.sendObject({\n glue42core: { type, args, transactionId }\n });\n }\n\n private handleTransportSwitchRequest(args: any, transactionId: string): void {\n this.logger.trace(`Received a transport switch request with id: ${transactionId} and data: ${JSON.stringify(args)}`);\n this.coreGlue.connection.switchTransport(args.switchSettings)\n .then((result) => {\n this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`);\n this.setConnected();\n this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: result.success });\n })\n .catch((error) => {\n this.logger.error(error);\n this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: false });\n });\n }\n\n private handlePlatformUnload(): void {\n this.reconnectCounter = 5;\n this.logger.trace(\"The platform was unloaded while I am connected to a preferred connection, re-establishing the port connection.\");\n this.reEstablishPlatformPort();\n }\n\n private handleGetCurrentTransportResponse(args: any, transactionId: string): void {\n this.logger.trace(`Got a current transport response from the platform with id: ${transactionId} and data: ${JSON.stringify(args)}`);\n const transportState = args.transportState as TransportState;\n\n const transaction = this.transactionLocks[transactionId];\n\n transaction?.lift(transportState);\n }\n\n private handleCheckPreferredLogic(transactionId: string): void {\n setTimeout(() => this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredLogicResponse.name, transactionId), 0);\n }\n\n private handleCheckPreferredConnection(args: any, transactionId: string): void {\n const url = args.url;\n\n this.logger.trace(`Testing the possible connection to: ${url}`);\n\n this.checkPreferredConnection(url)\n .then((result) => {\n this.logger.trace(`The connection to ${url} is possible`);\n this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, result);\n })\n .catch((error) => {\n this.logger.trace(`The connection to ${url} is not possible`);\n this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, { error });\n });\n }\n\n private checkPreferredConnection(url: string): Promise<{ live: boolean }> {\n\n return new Promise<{ live: boolean }>((resolve) => {\n const ws = new WebSocket(url);\n\n ws.onerror = (): void => resolve({ live: false });\n\n ws.onopen = (): void => {\n ws.close();\n resolve({ live: true });\n };\n\n });\n\n }\n\n private setConnected(): void {\n this.webPlatformTransport.manualSetReadyState();\n }\n}\n","import { IOConnectCore } from \"@interopio/core\";\nimport shortid from \"shortid\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { AppManagerController } from \"../appManager/controller\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { intentResolverResponseDecoder } from \"../shared/decoders\";\nimport { PromisePlus } from \"../shared/promise-plus\";\nimport { systemOperations } from \"../shared/systemOperations\";\nimport { LibDomains, OperationCheckConfig, OperationCheckResult, SimpleItemIdRequest, WorkspaceFrameBoundsResult } from \"../shared/types\";\nimport { WindowsController } from \"../windows/controller\";\nimport { INTENTS_RESOLVER_HEIGHT, INTENTS_RESOLVER_INTEROP_PREFIX, INTENTS_RESOLVER_WIDTH } from \"./constants\";\nimport { IntentsResolverResponse, IntentsResolverResponsePromise, operations } from \"./protocol\";\nimport { IntentRequestWithResolverConfig, IntentsResolverStartContext, ShouldResolverOpen, ResolverConfig, IntentResolverResponse } from \"./types\";\n\nexport class LegacyIntentsHelper {\n private logger!: IOConnectBrowser.Logger.API;\n\n private intentsResolverResponsePromises: { [instanceId: string]: IntentsResolverResponsePromise } = {};\n\n constructor(\n logger: IOConnectBrowser.Logger.API,\n private readonly bridge: GlueBridge,\n private readonly interop: IOConnectCore.AGM.API,\n private readonly appManagerController: AppManagerController,\n private readonly windowsController: WindowsController\n ) {\n this.logger = this.configureLogger(logger);\n }\n\n public async raise(requestWithResolverInfo: IntentRequestWithResolverConfig, findIntentFn: (intentFilter?: string | IOConnectBrowser.Intents.IntentFilter | undefined) => Promise): Promise {\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\n\n const intent = (await findIntentFn(intentRequest.intent)).find(intent => intent.name === intentRequest.intent);\n\n if (!intent) {\n throw new Error(`Intent with name ${intentRequest.intent} not found`);\n }\n\n const { open, reason } = this.checkIfResolverShouldBeOpened(intent, intentRequest, resolverConfig);\n\n if (!open) {\n this.logger?.trace(`Intent Resolver UI won't be used. Reason: ${reason}`);\n\n return this.invokeRaiseIntent(intentRequest);\n }\n\n const intentResult = await this.raiseIntentWithResolverApp(requestWithResolverInfo);\n\n return intentResult;\n }\n\n private configureLogger(loggerInst: IOConnectBrowser.Logger.API): IOConnectBrowser.Logger.API {\n return loggerInst.subLogger(\"intents.legacy.helper.web\");\n }\n\n private async raiseIntentWithResolverApp(requestWithResolverInfo: IntentRequestWithResolverConfig): Promise {\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\n\n this.logger.trace(`Intents Resolver UI with app name ${resolverConfig.appName} will be used`);\n\n const responseMethodName = await this.registerResponseMethod();\n\n this.logger.trace(`Registered interop method ${responseMethodName}`);\n\n const resolverInstance = await this.openIntentResolverApplication(requestWithResolverInfo, responseMethodName);\n\n this.logger.trace(`Intents Resolver Instance with id ${resolverInstance.id} opened`);\n\n const handler = await this.handleInstanceResponse(resolverInstance.id);\n\n const target = handler.type === \"app\"\n ? { app: handler.applicationName }\n : { instance: handler.instanceId };\n\n this.logger.trace(`Intent handler chosen by the user: ${JSON.stringify(target)}`);\n\n const intentResult = await this.invokeRaiseIntent({ ...intentRequest, target });\n\n return intentResult;\n }\n\n private async handleInstanceResponse(instanceId: string): Promise {\n try {\n const { handler, intent } = await this.intentsResolverResponsePromises[instanceId].promise;\n\n this.logger?.trace(`Intent handler chosen for intent ${intent}: ${JSON.stringify(handler)}`);\n\n this.stopResolverInstance(instanceId);\n\n return handler;\n\n } catch (error) {\n this.stopResolverInstance(instanceId);\n\n throw new Error(error as string);\n }\n }\n\n private invokeRaiseIntent(requestObj: IOConnectBrowser.Intents.IntentRequest): Promise {\n return this.bridge.send(\"intents\", operations.raiseIntent, requestObj);\n }\n\n private async registerResponseMethod(): Promise {\n const methodName = INTENTS_RESOLVER_INTEROP_PREFIX + shortid();\n\n await this.interop.register(methodName, this.resolverResponseHandler.bind(this));\n\n return methodName;\n }\n\n private async openIntentResolverApplication(requestWithResolverInfo: IntentRequestWithResolverConfig, methodName: string): Promise {\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\n\n const startContext = this.buildStartContext(intentRequest, methodName);\n\n const startOptions = await this.buildStartOptions();\n\n this.logger.trace(`Starting Intents Resolver UI with context: ${JSON.stringify(startContext)} and options: ${startOptions}`);\n\n const instance = await this.appManagerController.getApplication(resolverConfig.appName).start(startContext, startOptions);\n\n this.logger.trace(`Intents Resolver instance with id ${instance.id} opened`);\n\n this.subscribeOnInstanceStopped(instance);\n\n this.createResponsePromise(intentRequest.intent, instance.id, methodName, resolverConfig.waitResponseTimeout);\n\n return instance;\n }\n\n private async cleanUpIntentResolverPromise(instanceId: string): Promise {\n const intentPromise = this.intentsResolverResponsePromises[instanceId];\n\n if (!intentPromise) {\n return;\n }\n\n // typings are wrong and mark unregister as a sync method\n const unregisterPromise = this.interop.unregister(intentPromise.methodName) as unknown as Promise;\n\n unregisterPromise.catch((error) => this.logger.warn(error));\n\n delete this.intentsResolverResponsePromises[instanceId];\n }\n\n private buildStartContext(requestObj: IOConnectBrowser.Intents.IntentRequest, methodName: string): IntentsResolverStartContext {\n return {\n intent: requestObj,\n callerId: this.interop.instance.instance!,\n methodName\n };\n }\n\n private async buildStartOptions(): Promise {\n const bounds = await this.getTargetBounds();\n\n return {\n top: (bounds.height - INTENTS_RESOLVER_HEIGHT) / 2 + bounds.top,\n left: (bounds.width - INTENTS_RESOLVER_WIDTH) / 2 + bounds.left,\n width: INTENTS_RESOLVER_WIDTH,\n height: INTENTS_RESOLVER_HEIGHT\n };\n }\n\n private async getTargetBounds(): Promise {\n const bounds = await this.tryGetWindowBasedBounds() || await this.tryGetWorkspaceBasedBounds();\n\n if (bounds) {\n this.logger.trace(`Opening Intents Resolver UI with bounds: ${JSON.stringify(bounds)}`);\n\n return bounds;\n }\n\n const defaultBounds: IOConnectBrowser.Windows.Bounds = {\n top: (window as any).screen.availTop || 0,\n left: (window as any).screen.availLeft || 0,\n width: window.screen.width,\n height: window.screen.height\n };\n\n this.logger.trace(`Opening Intents Resolver UI relative to my screen bounds: ${JSON.stringify(defaultBounds)}`);\n\n return defaultBounds;\n }\n\n private async tryGetWindowBasedBounds(): Promise {\n try {\n const myWindowBounds = await this.windowsController.my().getBounds();\n\n this.logger.trace(`Opening the resolver UI relative to my window bounds: ${JSON.stringify(myWindowBounds)}`);\n\n return myWindowBounds;\n } catch (error) {\n this.logger.trace(`Failure to get my window bounds: ${JSON.stringify(error)}`);\n }\n \n // this satisfies the TS \"noImplicitReturns\" true flag\n return undefined;\n }\n\n private async tryGetWorkspaceBasedBounds(): Promise {\n try {\n await this.bridge.send(\"workspaces\" as LibDomains, systemOperations.operationCheck, { operation: \"getWorkspaceWindowFrameBounds\" });\n\n const bridgeResponse = await this.bridge.send(\"workspaces\" as LibDomains, systemOperations.getWorkspaceWindowFrameBounds, { itemId: this.windowsController.my().id });\n\n const myWorkspaceBounds = bridgeResponse.bounds;\n\n this.logger.trace(`Opening the resolver UI relative to my workspace frame window bounds: ${JSON.stringify(myWorkspaceBounds)}`);\n\n return myWorkspaceBounds;\n } catch (error) {\n this.logger.trace(`Failure to get my workspace frame window bounds: ${JSON.stringify(error)}`);\n }\n \n // this satisfies the TS \"noImplicitReturns\" true flag\n return undefined;\n }\n\n private subscribeOnInstanceStopped(instance: IOConnectBrowser.AppManager.Instance): void {\n const { application } = instance;\n\n const unsub = application.onInstanceStopped((inst: IOConnectBrowser.AppManager.Instance) => {\n if (inst.id !== instance.id) {\n return;\n }\n\n const intentPromise = this.intentsResolverResponsePromises[inst.id];\n\n if (!intentPromise) {\n return unsub();\n }\n\n intentPromise.reject(`Cannot resolve raised intent \"${intentPromise.intent}\" - User closed ${application.name} app without choosing an intent handler`);\n\n this.cleanUpIntentResolverPromise(inst.id);\n\n unsub();\n });\n }\n\n private createResponsePromise(intent: string, instanceId: string, methodName: string, timeout: number): void {\n let resolve: (arg: IntentsResolverResponse) => void = () => { };\n let reject: (reason: string) => void = () => { };\n\n const promise = PromisePlus((res, rej) => {\n resolve = res;\n reject = rej;\n }, timeout, `Timeout of ${timeout}ms hit waiting for the user to choose a handler for intent ${intent}`);\n\n this.intentsResolverResponsePromises[instanceId] = { intent, resolve, reject, promise, methodName };\n }\n\n private resolverResponseHandler(args: any, callerId: IOConnectBrowser.Interop.Instance): void {\n const response = intentResolverResponseDecoder.run(args);\n\n const instanceId = callerId.instance;\n\n if (response.ok) {\n this.logger.trace(`Intent Resolver instance with id ${instanceId} send a valid response: ${JSON.stringify(response.result)}`);\n\n return this.intentsResolverResponsePromises[instanceId!].resolve(response.result);\n }\n\n this.logger.trace(`Intent Resolver instance with id ${instanceId} sent an invalid response. Error: ${JSON.stringify(response.error)}`);\n\n this.intentsResolverResponsePromises[instanceId!].reject(response.error.message);\n\n this.stopResolverInstance(instanceId!);\n }\n\n private stopResolverInstance(instanceId: string): void {\n const searchedInstance = this.appManagerController.getInstances().find((inst: IOConnectBrowser.AppManager.Instance) => inst.id === instanceId);\n\n if (!searchedInstance) {\n return;\n }\n\n searchedInstance.stop().catch(err => this.logger.error(err));\n }\n\n private checkIfIntentHasMoreThanOneHandler(intent: IOConnectBrowser.Intents.Intent, request: IOConnectBrowser.Intents.IntentRequest): boolean {\n // if a specific app / instance is passed, do not open the resolver\n if (typeof request.target === \"object\") {\n return false;\n }\n\n return request.handlers ? request.handlers.length > 1 : intent.handlers.length > 1;\n }\n\n private checkIfResolverShouldBeOpened(intent: IOConnectBrowser.Intents.Intent, intentRequest: IOConnectBrowser.Intents.IntentRequest, resolverConfig: ResolverConfig): ShouldResolverOpen {\n if (!resolverConfig.enabled) {\n return { open: false, reason: \"Intent Resolver is disabled. Raising intent to first found handler\" };\n }\n\n const intentsResolverApp = this.appManagerController.getApplication(resolverConfig.appName);\n\n if (!intentsResolverApp) {\n return { open: false, reason: `Application with name ${resolverConfig.appName} not found` };\n }\n\n const hasMoreThanOneHandler = this.checkIfIntentHasMoreThanOneHandler(intent, intentRequest);\n\n if (!hasMoreThanOneHandler) {\n return { open: false, reason: \"Raised intent has only one handler\" };\n }\n\n return { open: true };\n }\n}","import { IOConnectBrowser } from \"../../browser\";\nimport { allThemesResponseDecoder, selectThemeConfigDecoder, simpleThemeResponseDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type ThemesOperationTypes = \"getCurrent\" | \"list\" | \"select\";\n\nexport const operations: { [key in ThemesOperationTypes]: BridgeOperation } = {\n getCurrent: { name: \"getCurrent\", resultDecoder: simpleThemeResponseDecoder },\n list: { name: \"list\", resultDecoder: allThemesResponseDecoder },\n select: { name: \"select\", dataDecoder: selectThemeConfigDecoder }\n};\n\nexport interface SimpleThemeResponse {\n theme: IOConnectBrowser.Themes.Theme;\n}\n\nexport interface AllThemesResponse {\n themes: IOConnectBrowser.Themes.Theme[];\n}\n\nexport interface SelectThemeConfig {\n name: string;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction\n} from \"callback-registry\";\nimport { nonEmptyStringDecoder, simpleThemeResponseDecoder } from \"../shared/decoders\";\nimport { AllThemesResponse, operations, SelectThemeConfig, SimpleThemeResponse } from \"./protocol\";\n\nexport class ThemesController implements LibController {\n\n private logger!: IOConnectBrowser.Logger.API;\n private bridge!: GlueBridge;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private themesSubscription: IOConnectCore.AGM.Subscription | undefined;\n private activeThemeSubs = 0;\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"themes.controller.web\");\n\n this.logger.trace(\"starting the web themes controller\");\n\n this.bridge = ioc.bridge;\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).themes = api;\n\n this.logger.trace(\"themes are ready\");\n }\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n this.activeThemeSubs = 0;\n this.themesSubscription?.close();\n\n delete this.themesSubscription;\n }\n\n public async handleBridgeMessage(): Promise {\n // noop, because we do not want theme changes notifications to be published by default\n }\n\n private toApi(): IOConnectBrowser.Themes.API {\n const api: IOConnectBrowser.Themes.API = {\n getCurrent: this.getCurrent.bind(this),\n list: this.list.bind(this),\n select: this.select.bind(this),\n onChanged: this.onChanged.bind(this)\n };\n\n return Object.freeze(api);\n }\n\n private async getCurrent(): Promise {\n\n const bridgeResponse = await this.bridge.send(\"themes\", operations.getCurrent, undefined, undefined, { includeOperationCheck: true });\n\n return bridgeResponse.theme;\n }\n\n private async list(): Promise {\n const bridgeResponse = await this.bridge.send(\"themes\", operations.list, undefined, undefined, { includeOperationCheck: true });\n\n return bridgeResponse.themes;\n }\n\n private async select(name: string): Promise {\n nonEmptyStringDecoder.runWithException(name);\n\n await this.bridge.send(\"themes\", operations.select, { name }, undefined, { includeOperationCheck: true });\n }\n\n private async onChanged(callback: (theme: IOConnectBrowser.Themes.Theme) => any): Promise {\n\n if (typeof callback !== \"function\") {\n throw new Error(\"onChanged requires a callback of type function\");\n }\n\n const subReady = this.themesSubscription ?\n Promise.resolve() :\n this.configureThemeSubscription();\n\n await subReady;\n\n ++this.activeThemeSubs;\n const unsubFunc = this.registry.add(\"on-theme-change\", callback);\n\n return () => this.themeUnsub(unsubFunc);\n }\n\n private async configureThemeSubscription(): Promise {\n if (this.themesSubscription) {\n return;\n }\n\n this.themesSubscription = await this.bridge.createNotificationsSteam();\n\n this.themesSubscription.onData((data) => {\n const eventData = data.data;\n\n const validation = simpleThemeResponseDecoder.run(eventData);\n\n if (!validation.ok) {\n this.logger.warn(`Received invalid theme data on the theme event stream: ${JSON.stringify(validation.error)}`);\n return;\n }\n\n const themeChanged = validation.result;\n\n this.registry.execute(\"on-theme-change\", themeChanged.theme);\n });\n\n this.themesSubscription.onClosed(() => {\n this.logger.warn(\"The Themes interop stream was closed, no theme changes notifications will be received\");\n this.registry.clear();\n this.activeThemeSubs = 0;\n delete this.themesSubscription;\n });\n\n }\n\n private themeUnsub(registryUnsub: UnsubscribeFunction): void {\n registryUnsub();\n --this.activeThemeSubs;\n\n if (this.activeThemeSubs) {\n return;\n }\n\n this.themesSubscription?.close();\n\n delete this.themesSubscription;\n }\n}","import { SessionStorageConfig, WindowSessionData } from \"./types\";\n\nexport class SessionStorageController {\n private sessionStorage: Storage = window.sessionStorage;\n private windowId!: string;\n private get allNamespaces(): { namespace: string; defaultValue: any }[] {\n return [{ namespace: this.windowNamespace, defaultValue: {} }];\n }\n\n public configure(config: SessionStorageConfig): void {\n this.windowId = config.windowId;\n\n this.allNamespaces.forEach(({ namespace, defaultValue }) => {\n const data = this.sessionStorage.getItem(namespace);\n\n if (!data) {\n this.sessionStorage.setItem(namespace, JSON.stringify(defaultValue));\n }\n });\n }\n\n private get windowNamespace(): string {\n return `io_connect_window_${this.windowId}`;\n }\n\n public getWindowData(): WindowSessionData {\n return JSON.parse(this.sessionStorage.getItem(this.windowNamespace) as string);\n }\n\n public setWindowData(data: WindowSessionData[Key], key: Key): void {\n const allData = this.getWindowData();\n\n allData[key] = data;\n\n this.sessionStorage.setItem(this.windowNamespace, JSON.stringify(allData));\n }\n}\n","import { BridgeOperation } from \"../shared/types\";\nimport { basePrefsConfigDecoder, changePrefsDataDecoder, getAllPrefsResultDecoder, getPrefsResultDecoder, prefsHelloSuccessDecoder } from \"../shared/decoders\";\n\nexport type PrefsOperationTypes = \"clear\" | \"clearAll\" | \"get\" | \"getAll\" | \"set\" | \"update\" | \"prefsChanged\" | \"prefsHello\";\n\nexport const operations: { [key in PrefsOperationTypes]: BridgeOperation } = {\n clear: { name: \"clear\", dataDecoder: basePrefsConfigDecoder },\n clearAll: { name: \"clearAll\" },\n get: { name: \"get\", dataDecoder: basePrefsConfigDecoder, resultDecoder: getPrefsResultDecoder },\n getAll: { name: \"getAll\", resultDecoder: getAllPrefsResultDecoder },\n set: { name: \"set\", dataDecoder: changePrefsDataDecoder },\n update: { name: \"update\", dataDecoder: changePrefsDataDecoder },\n prefsChanged: { name: \"prefsChanged\", dataDecoder: getPrefsResultDecoder },\n prefsHello: { name: \"prefsHello\", resultDecoder: prefsHelloSuccessDecoder },\n};\n\nexport interface BasePrefsConfig {\n app: string;\n}\n\nexport interface PrefsHelloSuccess {\n platform: {\n app: string;\n };\n}\n","import {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { IOConnectCore } from \"@interopio/core\";\nimport { object, optional } from \"decoder-validate\";\nimport { AppManagerController } from \"../appManager/controller\";\nimport { BasePrefsConfig, PrefsHelloSuccess, operations } from \"./protocol\";\nimport { basePrefsConfigDecoder, nonEmptyStringDecoder, prefsOperationTypesDecoder } from \"../shared/decoders\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { IoC } from \"../shared/ioc\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { LibController, ParsedConfig } from \"../shared/types\";\n\nexport class PrefsController implements LibController {\n private bridge!: GlueBridge;\n private config!: ParsedConfig;\n private logger!: IOConnectBrowser.Logger.API;\n private appManagerController!: AppManagerController;\n private platformAppName!: string;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"prefs.controller.web\");\n\n this.logger.trace(\"starting the web prefs controller\");\n\n this.addOperationsExecutors();\n\n this.bridge = ioc.bridge;\n\n this.config = ioc.config;\n\n this.appManagerController = ioc.appManagerController;\n\n try {\n const prefsHelloSuccess = await this.bridge.send(\"prefs\", operations.prefsHello, undefined, undefined, { includeOperationCheck: true });\n\n this.platformAppName = prefsHelloSuccess.platform.app;\n } catch (error) {\n this.logger.warn(\"The platform of this client is outdated and does not support Prefs API.\");\n return;\n }\n\n this.logger.trace(\"no need for platform registration, attaching the prefs property to glue and returning\");\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).prefs = api;\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = prefsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private addOperationsExecutors(): void {\n operations.prefsChanged.execute = this.handleOnChanged.bind(this);\n }\n\n private toApi(): IOConnectBrowser.Prefs.API {\n const api: IOConnectBrowser.Prefs.API = {\n clear: this.clear.bind(this),\n clearAll: this.clearAll.bind(this),\n clearFor: this.clearFor.bind(this),\n get: this.get.bind(this),\n getAll: this.getAll.bind(this),\n set: this.set.bind(this),\n setFor: this.setFor.bind(this),\n subscribe: this.subscribe.bind(this),\n subscribeFor: this.subscribeFor.bind(this),\n update: this.update.bind(this),\n updateFor: this.updateFor.bind(this),\n };\n\n return api;\n }\n\n private async clear(): Promise {\n const app = this.getMyAppName();\n\n await this.clearFor(app);\n }\n\n private async clearAll(): Promise {\n await this.bridge.send(\"prefs\", operations.clearAll, undefined , undefined, { includeOperationCheck: true });\n }\n\n private async clearFor(app: string): Promise {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n\n await this.bridge.send(\"prefs\", operations.clear, { app: verifiedApp }, undefined, { includeOperationCheck: true });\n }\n\n private async get(app?: string): Promise {\n const verifiedApp = app === undefined || app === null ? this.getMyAppName() : nonEmptyStringDecoder.runWithException(app);\n\n const { prefs } = await this.bridge.send(\"prefs\", operations.get, { app: verifiedApp }, undefined, { includeOperationCheck: true });\n \n return prefs;\n }\n\n private async getAll(): Promise<{ all: IOConnectBrowser.Prefs.AppPreferences[] }> {\n const result = await this.bridge.send(\"prefs\", operations.getAll, undefined, undefined, { includeOperationCheck: true });\n\n return result;\n }\n\n private async set(data: any, options?: BasePrefsConfig): Promise {\n const verifiedOptions = optional(basePrefsConfigDecoder).runWithException(options);\n const app = verifiedOptions?.app ?? this.getMyAppName();\n\n await this.setFor(app, data);\n }\n\n private async setFor(app: string, data: any): Promise {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n const verifiedData = object().runWithException(data);\n\n await this.bridge.send<{ app: string, data: any }, void>(\"prefs\", operations.set, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true });\n }\n\n private subscribe(callback: (prefs: IOConnectBrowser.Prefs.AppPreferences) => void): UnsubscribeFunction {\n const app = this.getMyAppName();\n\n return this.subscribeFor(app, callback);\n }\n\n private subscribeFor(app: string, callback: (prefs: IOConnectBrowser.Prefs.AppPreferences) => void): UnsubscribeFunction {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n const applications = this.appManagerController.getApplications();\n const isValidApp = verifiedApp === this.platformAppName || applications.some((application) => application.name === verifiedApp);\n\n if (!isValidApp) {\n throw new Error(`The provided app name \"${app}\" is not valid.`);\n }\n\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to prefs, because the provided callback is not a function!\");\n }\n\n const subscriptionKey = this.getSubscriptionKey(verifiedApp);\n\n this.get(verifiedApp).then(callback);\n\n return this.registry.add(subscriptionKey, callback);\n }\n\n private async update(data: any, options?: BasePrefsConfig): Promise {\n const verifiedOptions = optional(basePrefsConfigDecoder).runWithException(options);\n const app = verifiedOptions?.app ?? this.getMyAppName();\n\n await this.updateFor(app, data);\n }\n\n private async updateFor(app: string, data: any): Promise {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n const verifiedData = object().runWithException(data);\n\n await this.bridge.send<{ app: string, data: any }, void>(\"prefs\", operations.update, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true });\n }\n\n private getMyAppName(): string {\n const myAppName = this.config.isPlatformInternal ? this.platformAppName : this.appManagerController.me?.application.name;\n\n if (!myAppName) {\n throw new Error(\"App Preferences operations can not be executed for windows that do not have app!\");\n }\n \n return myAppName;\n }\n\n private getSubscriptionKey(app: string): string {\n return `prefs-changed-${app}`;\n }\n\n private async handleOnChanged({ prefs }: { prefs: IOConnectBrowser.Prefs.AppPreferences }): Promise {\n const subscriptionKey = this.getSubscriptionKey(prefs.app);\n \n this.registry.execute(subscriptionKey, prefs);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { WebWindowModel } from \"../windows/webWindow\";\nimport { LibController, LibDomains, ParsedConfig } from \"./types\";\nimport { WindowsController } from \"../windows/controller\";\nimport { IOConnectCore } from \"@interopio/core\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { AppManagerController } from \"../appManager/controller\";\nimport { WindowProjection } from \"../windows/protocol\";\nimport { BaseApplicationData, InstanceData } from \"../appManager/protocol\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { InstanceModel } from \"../appManager/instance\";\nimport { ApplicationModel } from \"../appManager/application\";\nimport { LayoutsController } from \"../layouts/controller\";\nimport { NotificationsController } from \"../notifications/controller\";\nimport { IntentsController } from \"../intents/controller\";\nimport { ChannelsController } from \"../channels/controller\";\nimport { SystemController } from \"../system/controller\";\nimport { Notification } from \"../notifications/notification\";\nimport { ExtController } from \"../extension/controller\";\nimport { EventsDispatcher } from \"./dispatcher\";\nimport { PreferredConnectionController } from \"../communication/preferred\";\nimport { LegacyIntentsHelper } from \"../intents/legacyHelper\";\nimport { ThemesController } from \"../themes/controller\";\nimport { SessionStorageController } from \"../storage/session\";\nimport { PrefsController } from \"../prefs/controller\";\n\nexport class IoC {\n private _coreGlue!: IOConnectCore.API;\n private _communicationId!: string;\n private _publicWindowId!: string;\n private _webConfig!: ParsedConfig;\n private _windowsControllerInstance!: WindowsController;\n private _appManagerControllerInstance!: AppManagerController;\n private _layoutsControllerInstance!: LayoutsController;\n private _notificationsControllerInstance!: NotificationsController;\n private _intentsControllerInstance!: IntentsController;\n private _legacyIntentsHelperInstance!: LegacyIntentsHelper;\n private _channelsControllerInstance!: ChannelsController;\n private _themesControllerInstance!: ThemesController;\n private _extensionController!: ExtController;\n private _systemControllerInstance!: SystemController;\n private _bridgeInstance!: GlueBridge;\n private _eventsDispatcher!: EventsDispatcher;\n private _preferredConnectionController!: PreferredConnectionController;\n private _sessionController!: SessionStorageController;\n private _prefsControllerInstance!: PrefsController;\n\n public controllers: { [key in LibDomains]: LibController } = {\n windows: this.windowsController,\n appManager: this.appManagerController,\n layouts: this.layoutsController,\n notifications: this.notificationsController,\n intents: this.intentsController,\n channels: this.channelsController,\n system: this.systemController,\n extension: this.extensionController,\n themes: this.themesController,\n prefs: this.prefsController\n };\n\n public get communicationId(): string {\n return this._communicationId;\n }\n\n public get publicWindowId(): string {\n return this._publicWindowId;\n }\n\n public get windowsController(): WindowsController {\n if (!this._windowsControllerInstance) {\n this._windowsControllerInstance = new WindowsController();\n }\n\n return this._windowsControllerInstance;\n }\n\n public get appManagerController(): AppManagerController {\n if (!this._appManagerControllerInstance) {\n this._appManagerControllerInstance = new AppManagerController();\n }\n\n return this._appManagerControllerInstance;\n }\n\n public get layoutsController(): LayoutsController {\n if (!this._layoutsControllerInstance) {\n this._layoutsControllerInstance = new LayoutsController();\n }\n\n return this._layoutsControllerInstance;\n }\n\n public get themesController(): ThemesController {\n if (!this._themesControllerInstance) {\n this._themesControllerInstance = new ThemesController();\n }\n\n return this._themesControllerInstance;\n }\n\n public get notificationsController(): NotificationsController {\n if (!this._notificationsControllerInstance) {\n this._notificationsControllerInstance = new NotificationsController();\n }\n\n return this._notificationsControllerInstance;\n }\n\n public get intentsController(): IntentsController {\n if (!this._intentsControllerInstance) {\n this._intentsControllerInstance = new IntentsController();\n }\n\n return this._intentsControllerInstance;\n }\n\n public get legacyIntentsHelper(): LegacyIntentsHelper {\n if (!this._legacyIntentsHelperInstance) {\n this._legacyIntentsHelperInstance = new LegacyIntentsHelper(this._coreGlue.logger, this.bridge, this._coreGlue.interop, this.appManagerController, this.windowsController);\n }\n\n return this._legacyIntentsHelperInstance;\n }\n\n public get systemController(): SystemController {\n if (!this._systemControllerInstance) {\n this._systemControllerInstance = new SystemController();\n }\n\n return this._systemControllerInstance;\n }\n\n public get channelsController(): ChannelsController {\n if (!this._channelsControllerInstance) {\n this._channelsControllerInstance = new ChannelsController();\n }\n\n return this._channelsControllerInstance;\n }\n\n public get prefsController(): PrefsController {\n if (!this._prefsControllerInstance) {\n this._prefsControllerInstance = new PrefsController();\n }\n\n return this._prefsControllerInstance;\n }\n\n public get extensionController(): ExtController {\n if (!this._extensionController) {\n this._extensionController = new ExtController();\n }\n\n return this._extensionController;\n }\n\n public get eventsDispatcher(): EventsDispatcher {\n if (!this._eventsDispatcher) {\n this._eventsDispatcher = new EventsDispatcher(this.config);\n }\n\n return this._eventsDispatcher;\n }\n\n public get bridge(): GlueBridge {\n if (!this._bridgeInstance) {\n this._bridgeInstance = new GlueBridge(this._coreGlue, this.communicationId);\n }\n\n return this._bridgeInstance;\n }\n\n public get preferredConnectionController(): PreferredConnectionController {\n if (!this._preferredConnectionController) {\n this._preferredConnectionController = new PreferredConnectionController(this._coreGlue);\n }\n\n return this._preferredConnectionController;\n }\n \n public get sessionController(): SessionStorageController {\n if (!this._sessionController) {\n this._sessionController = new SessionStorageController();\n }\n\n return this._sessionController;\n }\n\n public get config(): ParsedConfig {\n return this._webConfig;\n }\n\n public defineGlue(coreGlue: IOConnectCore.API): void {\n this._coreGlue = coreGlue;\n\n this._publicWindowId = (coreGlue as any).connection.transport.publicWindowId;\n\n const globalNamespace = (window as any).glue42core || (window as any).iobrowser;\n // the communicationId will be available in the global namespace if this client is an internal client to the platform\n this._communicationId = (coreGlue as any).connection.transport.communicationId || globalNamespace.communicationId;\n }\n\n public defineConfig(config: ParsedConfig): void {\n this._webConfig = config;\n }\n\n public async buildWebWindow(id: string, name: string): Promise {\n\n const model = new WebWindowModel(id, name, this.bridge);\n\n const api = await model.toApi();\n\n return { id, model, api };\n }\n\n public buildNotification(config: IOConnectBrowser.Notifications.RaiseOptions, id: string): IOConnectBrowser.Notifications.Notification {\n return new Notification(config, id);\n }\n\n public async buildApplication(app: BaseApplicationData, applicationInstances: InstanceData[]): Promise {\n\n const application = (new ApplicationModel(app, [], this.appManagerController)).toApi();\n\n const instances = applicationInstances.map((instanceData) => this.buildInstance(instanceData, application));\n\n application.instances.push(...instances);\n\n return application;\n }\n\n public buildInstance(instanceData: InstanceData, app: IOConnectBrowser.AppManager.Application): IOConnectBrowser.AppManager.Instance {\n return (new InstanceModel(instanceData, this.bridge, app)).toApi();\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* tslint:disable:no-console no-empty */\nimport { IOConnectCoreFactoryFunction } from \"@interopio/core\";\nimport { IOConnectDesktop } from \"@interopio/desktop\";\nimport { IOConnectBrowser, IOConnectBrowserFactoryFunction } from \"../browser\";\nimport { parseConfig } from \"./config\";\nimport { checkSingleton } from \"./config/checkSingleton\";\nimport { enterprise } from \"./enterprise\";\nimport { IoC } from \"./shared/ioc\";\nimport { PromiseWrap } from \"./shared/promise-plus\";\nimport { version } from \"../package.json\";\n\n/** This function creates the factory function which is the default export of the library */\nexport const createFactoryFunction = (coreFactoryFunction: IOConnectCoreFactoryFunction): IOConnectBrowserFactoryFunction => {\n\n return async (userConfig?: IOConnectBrowser.Config): Promise => {\n if (window.glue42gd || (window as any).iodesktop) {\n return enterprise(userConfig);\n }\n\n const ioc = new IoC();\n\n const config = parseConfig(userConfig);\n\n checkSingleton();\n\n const glue = await PromiseWrap(() => coreFactoryFunction(config, { version }) as Promise, 30000, \"Glue Web initialization timed out, because core didn't resolve\");\n\n const logger = glue.logger.subLogger(\"web.main.controller\");\n\n ioc.defineGlue(glue);\n\n ioc.sessionController.configure({ windowId: glue.interop.instance.instance as string });\n\n await ioc.preferredConnectionController.start(config);\n\n await ioc.bridge.start(ioc.controllers);\n\n ioc.defineConfig(config);\n\n logger.trace(\"the bridge has been started, initializing all controllers\");\n\n await Promise.all(Object.values(ioc.controllers).map((controller) => controller.start(glue, ioc)));\n\n logger.trace(\"all controllers reported started, starting all additional libraries\");\n\n await Promise.all(config.libraries.map((lib: any) => lib(glue, config)));\n\n logger.trace(\"all libraries were started\");\n\n ioc.eventsDispatcher.start(glue);\n\n logger.trace(\"start event dispatched, glue is ready, returning it\");\n\n return glue;\n };\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar MetricTypes = {\r\n STRING: 1,\r\n NUMBER: 2,\r\n TIMESTAMP: 3,\r\n OBJECT: 4\r\n};\n\nfunction getMetricTypeByValue(metric) {\r\n if (metric.type === MetricTypes.TIMESTAMP) {\r\n return \"timestamp\";\r\n }\r\n else if (metric.type === MetricTypes.NUMBER) {\r\n return \"number\";\r\n }\r\n else if (metric.type === MetricTypes.STRING) {\r\n return \"string\";\r\n }\r\n else if (metric.type === MetricTypes.OBJECT) {\r\n return \"object\";\r\n }\r\n return \"unknown\";\r\n}\r\nfunction getTypeByValue(value) {\r\n if (value.constructor === Date) {\r\n return \"timestamp\";\r\n }\r\n else if (typeof value === \"number\") {\r\n return \"number\";\r\n }\r\n else if (typeof value === \"string\") {\r\n return \"string\";\r\n }\r\n else if (typeof value === \"object\") {\r\n return \"object\";\r\n }\r\n else {\r\n return \"string\";\r\n }\r\n}\r\nfunction serializeMetric(metric) {\r\n var serializedMetrics = {};\r\n var type = getMetricTypeByValue(metric);\r\n if (type === \"object\") {\r\n var values = Object.keys(metric.value).reduce(function (memo, key) {\r\n var innerType = getTypeByValue(metric.value[key]);\r\n if (innerType === \"object\") {\r\n var composite = defineNestedComposite(metric.value[key]);\r\n memo[key] = {\r\n type: \"object\",\r\n description: \"\",\r\n context: {},\r\n composite: composite,\r\n };\r\n }\r\n else {\r\n memo[key] = {\r\n type: innerType,\r\n description: \"\",\r\n context: {},\r\n };\r\n }\r\n return memo;\r\n }, {});\r\n serializedMetrics.composite = values;\r\n }\r\n serializedMetrics.name = normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name);\r\n serializedMetrics.type = type;\r\n serializedMetrics.description = metric.description;\r\n serializedMetrics.context = {};\r\n return serializedMetrics;\r\n}\r\nfunction defineNestedComposite(values) {\r\n return Object.keys(values).reduce(function (memo, key) {\r\n var type = getTypeByValue(values[key]);\r\n if (type === \"object\") {\r\n memo[key] = {\r\n type: \"object\",\r\n description: \"\",\r\n context: {},\r\n composite: defineNestedComposite(values[key]),\r\n };\r\n }\r\n else {\r\n memo[key] = {\r\n type: type,\r\n description: \"\",\r\n context: {},\r\n };\r\n }\r\n return memo;\r\n }, {});\r\n}\r\nfunction normalizeMetricName(name) {\r\n if (typeof name !== \"undefined\" && name.length > 0 && name[0] !== \"/\") {\r\n return \"/\" + name;\r\n }\r\n else {\r\n return name;\r\n }\r\n}\r\nfunction getMetricValueByType(metric) {\r\n var type = getMetricTypeByValue(metric);\r\n if (type === \"timestamp\") {\r\n return Date.now();\r\n }\r\n else {\r\n return publishNestedComposite(metric.value);\r\n }\r\n}\r\nfunction publishNestedComposite(values) {\r\n if (typeof values !== \"object\") {\r\n return values;\r\n }\r\n return Object.keys(values).reduce(function (memo, key) {\r\n var value = values[key];\r\n if (typeof value === \"object\" && value.constructor !== Date) {\r\n memo[key] = publishNestedComposite(value);\r\n }\r\n else if (value.constructor === Date) {\r\n memo[key] = new Date(value).getTime();\r\n }\r\n else if (value.constructor === Boolean) {\r\n memo[key] = value.toString();\r\n }\r\n else {\r\n memo[key] = value;\r\n }\r\n return memo;\r\n }, {});\r\n}\r\nfunction flatten(arr) {\r\n return arr.reduce(function (flat, toFlatten) {\r\n return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);\r\n }, []);\r\n}\r\nfunction getHighestState(arr) {\r\n return arr.sort(function (a, b) {\r\n if (!a.state) {\r\n return 1;\r\n }\r\n if (!b.state) {\r\n return -1;\r\n }\r\n return b.state - a.state;\r\n })[0];\r\n}\r\nfunction aggregateDescription(arr) {\r\n var msg = \"\";\r\n arr.forEach(function (m, idx, a) {\r\n var path = m.path.join(\".\");\r\n if (idx === a.length - 1) {\r\n msg += path + \".\" + m.name + \": \" + m.description;\r\n }\r\n else {\r\n msg += path + \".\" + m.name + \": \" + m.description + \",\";\r\n }\r\n });\r\n if (msg.length > 100) {\r\n return msg.slice(0, 100) + \"...\";\r\n }\r\n else {\r\n return msg;\r\n }\r\n}\r\nfunction composeMsgForRootStateMetric(system) {\r\n var aggregatedState = system.root.getAggregateState();\r\n var merged = flatten(aggregatedState);\r\n var highestState = getHighestState(merged);\r\n var aggregateDesc = aggregateDescription(merged);\r\n return {\r\n description: aggregateDesc,\r\n value: highestState.state,\r\n };\r\n}\n\nfunction gw3 (connection, config) {\r\n var _this = this;\r\n if (!connection || typeof connection !== \"object\") {\r\n throw new Error(\"Connection is required parameter\");\r\n }\r\n var joinPromise;\r\n var session;\r\n var init = function (repo) {\r\n var resolveReadyPromise;\r\n joinPromise = new Promise(function (resolve) {\r\n resolveReadyPromise = resolve;\r\n });\r\n session = connection.domain(\"metrics\");\r\n session.onJoined(function (reconnect) {\r\n if (!reconnect && resolveReadyPromise) {\r\n resolveReadyPromise();\r\n resolveReadyPromise = undefined;\r\n }\r\n var rootStateMetric = {\r\n name: \"/State\",\r\n type: \"object\",\r\n composite: {\r\n Description: {\r\n type: \"string\",\r\n description: \"\",\r\n },\r\n Value: {\r\n type: \"number\",\r\n description: \"\",\r\n },\r\n },\r\n description: \"System state\",\r\n context: {},\r\n };\r\n var defineRootMetricsMsg = {\r\n type: \"define\",\r\n metrics: [rootStateMetric],\r\n };\r\n session.send(defineRootMetricsMsg);\r\n if (reconnect) {\r\n replayRepo(repo);\r\n }\r\n });\r\n session.join({\r\n system: config.system,\r\n service: config.service,\r\n instance: config.instance\r\n });\r\n };\r\n var replayRepo = function (repo) {\r\n replaySystem(repo.root);\r\n };\r\n var replaySystem = function (system) {\r\n createSystem(system);\r\n system.metrics.forEach(function (m) {\r\n createMetric(m);\r\n });\r\n system.subSystems.forEach(function (ss) {\r\n replaySystem(ss);\r\n });\r\n };\r\n var createSystem = function (system) { return __awaiter(_this, void 0, void 0, function () {\r\n var metric, createMetricsMsg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (system.parent === undefined) {\r\n return [2];\r\n }\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n metric = {\r\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\r\n type: \"object\",\r\n composite: {\r\n Description: {\r\n type: \"string\",\r\n description: \"\",\r\n },\r\n Value: {\r\n type: \"number\",\r\n description: \"\",\r\n },\r\n },\r\n description: \"System state\",\r\n context: {},\r\n };\r\n createMetricsMsg = {\r\n type: \"define\",\r\n metrics: [metric],\r\n };\r\n session.send(createMetricsMsg);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateSystem = function (system, state) { return __awaiter(_this, void 0, void 0, function () {\r\n var shadowedUpdateMetric, stateObj, rootMetric;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n shadowedUpdateMetric = {\r\n type: \"publish\",\r\n values: [{\r\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\r\n value: {\r\n Description: state.description,\r\n Value: state.state,\r\n },\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n session.send(shadowedUpdateMetric);\r\n stateObj = composeMsgForRootStateMetric(system);\r\n rootMetric = {\r\n type: \"publish\",\r\n peer_id: connection.peerId,\r\n values: [{\r\n name: \"/State\",\r\n value: {\r\n Description: stateObj.description,\r\n Value: stateObj.value,\r\n },\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n session.send(rootMetric);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var createMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () {\r\n var metricClone, m, createMetricsMsg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metricClone = cloneMetric(metric);\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n m = serializeMetric(metricClone);\r\n createMetricsMsg = {\r\n type: \"define\",\r\n metrics: [m],\r\n };\r\n session.send(createMetricsMsg);\r\n if (typeof metricClone.value !== \"undefined\") {\r\n updateMetricCore(metricClone);\r\n }\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () {\r\n var metricClone;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metricClone = cloneMetric(metric);\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n updateMetricCore(metricClone);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateMetricCore = function (metric) {\r\n if (canUpdate()) {\r\n var value = getMetricValueByType(metric);\r\n var publishMetricsMsg = {\r\n type: \"publish\",\r\n values: [{\r\n name: normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name),\r\n value: value,\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n return session.sendFireAndForget(publishMetricsMsg);\r\n }\r\n return Promise.resolve();\r\n };\r\n var cloneMetric = function (metric) {\r\n var metricClone = __assign({}, metric);\r\n if (typeof metric.value === \"object\" && metric.value !== null) {\r\n metricClone.value = __assign({}, metric.value);\r\n }\r\n return metricClone;\r\n };\r\n var canUpdate = function () {\r\n var _a;\r\n try {\r\n var func = (_a = config.canUpdateMetric) !== null && _a !== void 0 ? _a : (function () { return true; });\r\n return func();\r\n }\r\n catch (_b) {\r\n return true;\r\n }\r\n };\r\n return {\r\n init: init,\r\n createSystem: createSystem,\r\n updateSystem: updateSystem,\r\n createMetric: createMetric,\r\n updateMetric: updateMetric,\r\n };\r\n}\n\nvar Helpers = {\r\n validate: function (definition, parent, transport) {\r\n if (definition === null || typeof definition !== \"object\") {\r\n throw new Error(\"Missing definition\");\r\n }\r\n if (parent === null || typeof parent !== \"object\") {\r\n throw new Error(\"Missing parent\");\r\n }\r\n if (transport === null || typeof transport !== \"object\") {\r\n throw new Error(\"Missing transport\");\r\n }\r\n },\r\n};\n\nvar BaseMetric = (function () {\r\n function BaseMetric(definition, system, transport, value, type) {\r\n this.definition = definition;\r\n this.system = system;\r\n this.transport = transport;\r\n this.value = value;\r\n this.type = type;\r\n this.path = [];\r\n Helpers.validate(definition, system, transport);\r\n this.path = system.path.slice(0);\r\n this.path.push(system.name);\r\n this.name = definition.name;\r\n this.description = definition.description;\r\n transport.createMetric(this);\r\n }\r\n Object.defineProperty(BaseMetric.prototype, \"repo\", {\r\n get: function () {\r\n var _a;\r\n return (_a = this.system) === null || _a === void 0 ? void 0 : _a.repo;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseMetric.prototype, \"id\", {\r\n get: function () { return \"\".concat(this.system.path, \"/\").concat(name); },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n BaseMetric.prototype.update = function (newValue) {\r\n this.value = newValue;\r\n return this.transport.updateMetric(this);\r\n };\r\n return BaseMetric;\r\n}());\n\nvar NumberMetric = (function (_super) {\r\n __extends(NumberMetric, _super);\r\n function NumberMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.NUMBER) || this;\r\n }\r\n NumberMetric.prototype.incrementBy = function (num) {\r\n this.update(this.value + num);\r\n };\r\n NumberMetric.prototype.increment = function () {\r\n this.incrementBy(1);\r\n };\r\n NumberMetric.prototype.decrement = function () {\r\n this.incrementBy(-1);\r\n };\r\n NumberMetric.prototype.decrementBy = function (num) {\r\n this.incrementBy(num * -1);\r\n };\r\n return NumberMetric;\r\n}(BaseMetric));\n\nvar ObjectMetric = (function (_super) {\r\n __extends(ObjectMetric, _super);\r\n function ObjectMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.OBJECT) || this;\r\n }\r\n ObjectMetric.prototype.update = function (newValue) {\r\n this.mergeValues(newValue);\r\n return this.transport.updateMetric(this);\r\n };\r\n ObjectMetric.prototype.mergeValues = function (values) {\r\n var _this = this;\r\n return Object.keys(this.value).forEach(function (k) {\r\n if (typeof values[k] !== \"undefined\") {\r\n _this.value[k] = values[k];\r\n }\r\n });\r\n };\r\n return ObjectMetric;\r\n}(BaseMetric));\n\nvar StringMetric = (function (_super) {\r\n __extends(StringMetric, _super);\r\n function StringMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.STRING) || this;\r\n }\r\n return StringMetric;\r\n}(BaseMetric));\n\nvar TimestampMetric = (function (_super) {\r\n __extends(TimestampMetric, _super);\r\n function TimestampMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.TIMESTAMP) || this;\r\n }\r\n TimestampMetric.prototype.now = function () {\r\n this.update(new Date());\r\n };\r\n return TimestampMetric;\r\n}(BaseMetric));\n\nfunction system(name, repo, protocol, parent, description) {\r\n if (!repo) {\r\n throw new Error(\"Repository is required\");\r\n }\r\n if (!protocol) {\r\n throw new Error(\"Transport is required\");\r\n }\r\n var _transport = protocol;\r\n var _name = name;\r\n var _description = description || \"\";\r\n var _repo = repo;\r\n var _parent = parent;\r\n var _path = _buildPath(parent);\r\n var _state = {};\r\n var id = _arrayToString(_path, \"/\") + name;\r\n var root = repo.root;\r\n var _subSystems = [];\r\n var _metrics = [];\r\n function subSystem(nameSystem, descriptionSystem) {\r\n if (!nameSystem || nameSystem.length === 0) {\r\n throw new Error(\"name is required\");\r\n }\r\n var match = _subSystems.filter(function (s) { return s.name === nameSystem; });\r\n if (match.length > 0) {\r\n return match[0];\r\n }\r\n var _system = system(nameSystem, _repo, _transport, me, descriptionSystem);\r\n _subSystems.push(_system);\r\n return _system;\r\n }\r\n function setState(state, stateDescription) {\r\n _state = { state: state, description: stateDescription };\r\n _transport.updateSystem(me, _state);\r\n }\r\n function stringMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.STRING, value, function (metricDef) { return new StringMetric(metricDef, me, _transport, value); });\r\n }\r\n function numberMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.NUMBER, value, function (metricDef) { return new NumberMetric(metricDef, me, _transport, value); });\r\n }\r\n function objectMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.OBJECT, value, function (metricDef) { return new ObjectMetric(metricDef, me, _transport, value); });\r\n }\r\n function timestampMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.TIMESTAMP, value, function (metricDef) { return new TimestampMetric(metricDef, me, _transport, value); });\r\n }\r\n function _getOrCreateMetric(metricObject, expectedType, value, createMetric) {\r\n var metricDef = { name: \"\" };\r\n if (typeof metricObject === \"string\") {\r\n metricDef = { name: metricObject };\r\n }\r\n else {\r\n metricDef = metricObject;\r\n }\r\n var matching = _metrics.filter(function (shadowedMetric) { return shadowedMetric.name === metricDef.name; });\r\n if (matching.length > 0) {\r\n var existing = matching[0];\r\n if (existing.type !== expectedType) {\r\n throw new Error(\"A metric named \".concat(metricDef.name, \" is already defined with different type.\"));\r\n }\r\n if (typeof value !== \"undefined\") {\r\n existing\r\n .update(value)\r\n .catch(function () { });\r\n }\r\n return existing;\r\n }\r\n var metric = createMetric(metricDef);\r\n _metrics.push(metric);\r\n return metric;\r\n }\r\n function _buildPath(shadowedSystem) {\r\n if (!shadowedSystem || !shadowedSystem.parent) {\r\n return [];\r\n }\r\n var path = _buildPath(shadowedSystem.parent);\r\n path.push(shadowedSystem.name);\r\n return path;\r\n }\r\n function _arrayToString(path, separator) {\r\n return ((path && path.length > 0) ? path.join(separator) : \"\");\r\n }\r\n function getAggregateState() {\r\n var aggState = [];\r\n if (Object.keys(_state).length > 0) {\r\n aggState.push({\r\n name: _name,\r\n path: _path,\r\n state: _state.state,\r\n description: _state.description,\r\n });\r\n }\r\n _subSystems.forEach(function (shadowedSubSystem) {\r\n var result = shadowedSubSystem.getAggregateState();\r\n if (result.length > 0) {\r\n aggState.push.apply(aggState, result);\r\n }\r\n });\r\n return aggState;\r\n }\r\n var me = {\r\n get name() {\r\n return _name;\r\n },\r\n get description() {\r\n return _description;\r\n },\r\n get repo() {\r\n return _repo;\r\n },\r\n get parent() {\r\n return _parent;\r\n },\r\n path: _path,\r\n id: id,\r\n root: root,\r\n get subSystems() {\r\n return _subSystems;\r\n },\r\n get metrics() {\r\n return _metrics;\r\n },\r\n subSystem: subSystem,\r\n getState: function () {\r\n return _state;\r\n },\r\n setState: setState,\r\n stringMetric: stringMetric,\r\n timestampMetric: timestampMetric,\r\n objectMetric: objectMetric,\r\n numberMetric: numberMetric,\r\n getAggregateState: getAggregateState,\r\n };\r\n _transport.createSystem(me);\r\n return me;\r\n}\n\nvar Repository = (function () {\r\n function Repository(options, protocol) {\r\n protocol.init(this);\r\n this.root = system(\"\", this, protocol);\r\n this.addSystemMetrics(this.root, options.clickStream || options.clickStream === undefined);\r\n }\r\n Repository.prototype.addSystemMetrics = function (rootSystem, useClickStream) {\r\n if (typeof navigator !== \"undefined\") {\r\n rootSystem.stringMetric(\"UserAgent\", navigator.userAgent);\r\n }\r\n if (useClickStream && typeof document !== \"undefined\") {\r\n var clickStream_1 = rootSystem.subSystem(\"ClickStream\");\r\n var documentClickHandler = function (e) {\r\n var _a;\r\n if (!e.target) {\r\n return;\r\n }\r\n var target = e.target;\r\n var className = target ? (_a = target.getAttribute(\"class\")) !== null && _a !== void 0 ? _a : \"\" : \"\";\r\n clickStream_1.objectMetric(\"LastBrowserEvent\", {\r\n type: \"click\",\r\n timestamp: new Date(),\r\n target: {\r\n className: className,\r\n id: target.id,\r\n type: \"<\" + target.tagName.toLowerCase() + \">\",\r\n href: target.href || \"\",\r\n },\r\n });\r\n };\r\n clickStream_1.objectMetric(\"Page\", {\r\n title: document.title,\r\n page: window.location.href,\r\n });\r\n if (document.addEventListener) {\r\n document.addEventListener(\"click\", documentClickHandler);\r\n }\r\n else {\r\n document.attachEvent(\"onclick\", documentClickHandler);\r\n }\r\n }\r\n rootSystem.stringMetric(\"StartTime\", (new Date()).toString());\r\n var urlMetric = rootSystem.stringMetric(\"StartURL\", \"\");\r\n var appNameMetric = rootSystem.stringMetric(\"AppName\", \"\");\r\n if (typeof window !== \"undefined\") {\r\n if (typeof window.location !== \"undefined\") {\r\n var startUrl = window.location.href;\r\n urlMetric.update(startUrl);\r\n }\r\n if (typeof window.glue42gd !== \"undefined\") {\r\n appNameMetric.update(window.glue42gd.appName);\r\n }\r\n }\r\n };\r\n return Repository;\r\n}());\n\nvar NullProtocol = (function () {\r\n function NullProtocol() {\r\n }\r\n NullProtocol.prototype.init = function (repo) {\r\n };\r\n NullProtocol.prototype.createSystem = function (system) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.updateSystem = function (metric, state) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.createMetric = function (metric) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.updateMetric = function (metric) {\r\n return Promise.resolve();\r\n };\r\n return NullProtocol;\r\n}());\n\nvar PerfTracker = (function () {\r\n function PerfTracker(api, initialPublishTimeout, publishInterval) {\r\n this.api = api;\r\n this.lastCount = 0;\r\n this.initialPublishTimeout = 10 * 1000;\r\n this.publishInterval = 60 * 1000;\r\n this.initialPublishTimeout = initialPublishTimeout !== null && initialPublishTimeout !== void 0 ? initialPublishTimeout : this.initialPublishTimeout;\r\n this.publishInterval = publishInterval !== null && publishInterval !== void 0 ? publishInterval : this.publishInterval;\r\n this.scheduleCollection();\r\n this.system = this.api.subSystem(\"performance\", \"Performance data published by the web application\");\r\n }\r\n PerfTracker.prototype.scheduleCollection = function () {\r\n var _this = this;\r\n setTimeout(function () {\r\n _this.collect();\r\n setInterval(function () {\r\n _this.collect();\r\n }, _this.publishInterval);\r\n }, this.initialPublishTimeout);\r\n };\r\n PerfTracker.prototype.collect = function () {\r\n try {\r\n this.collectMemory();\r\n this.collectEntries();\r\n }\r\n catch (_a) {\r\n }\r\n };\r\n PerfTracker.prototype.collectMemory = function () {\r\n var memory = window.performance.memory;\r\n this.system.stringMetric(\"memory\", JSON.stringify({\r\n totalJSHeapSize: memory.totalJSHeapSize,\r\n usedJSHeapSize: memory.usedJSHeapSize\r\n }));\r\n };\r\n PerfTracker.prototype.collectEntries = function () {\r\n var allEntries = window.performance.getEntries();\r\n if (allEntries.length <= this.lastCount) {\r\n return;\r\n }\r\n this.lastCount = allEntries.length;\r\n var jsonfiedEntries = allEntries.map(function (i) { return i.toJSON(); });\r\n this.system.stringMetric(\"entries\", JSON.stringify(jsonfiedEntries));\r\n };\r\n return PerfTracker;\r\n}());\n\nvar metrics = (function (options) {\r\n var protocol;\r\n if (!options.connection || typeof options.connection !== \"object\") {\r\n protocol = new NullProtocol();\r\n }\r\n else {\r\n protocol = gw3(options.connection, options);\r\n }\r\n var repo = new Repository(options, protocol);\r\n var rootSystem = repo.root;\r\n if (!options.disableAutoAppSystem) {\r\n rootSystem = rootSystem.subSystem(\"App\");\r\n }\r\n var api = addFAVSupport(rootSystem);\r\n initPerf(api, options.pagePerformanceMetrics);\r\n return api;\r\n});\r\nfunction initPerf(api, config) {\r\n var _a, _b;\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n var perfConfig = (_b = (_a = window === null || window === void 0 ? void 0 : window.glue42gd) === null || _a === void 0 ? void 0 : _a.metrics) === null || _b === void 0 ? void 0 : _b.pagePerformanceMetrics;\r\n if (perfConfig) {\r\n config = perfConfig;\r\n }\r\n if (config === null || config === void 0 ? void 0 : config.enabled) {\r\n new PerfTracker(api, config.initialPublishTimeout, config.publishInterval);\r\n }\r\n}\r\nfunction addFAVSupport(system) {\r\n var reportingSystem = system.subSystem(\"reporting\");\r\n var def = {\r\n name: \"features\"\r\n };\r\n var featureMetric;\r\n var featureMetricFunc = function (name, action, payload) {\r\n if (typeof name === \"undefined\" || name === \"\") {\r\n throw new Error(\"name is mandatory\");\r\n }\r\n else if (typeof action === \"undefined\" || action === \"\") {\r\n throw new Error(\"action is mandatory\");\r\n }\r\n else if (typeof payload === \"undefined\" || payload === \"\") {\r\n throw new Error(\"payload is mandatory\");\r\n }\r\n if (!featureMetric) {\r\n featureMetric = reportingSystem.objectMetric(def, { name: name, action: action, payload: payload });\r\n }\r\n else {\r\n featureMetric.update({\r\n name: name,\r\n action: action,\r\n payload: payload\r\n });\r\n }\r\n };\r\n system.featureMetric = featureMetricFunc;\r\n return system;\r\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\ncreateRegistry.default = createRegistry;\nvar lib$1 = createRegistry;\n\nvar InProcTransport = (function () {\r\n function InProcTransport(settings, logger) {\r\n var _this = this;\r\n this.registry = lib$1();\r\n this.gw = settings.facade;\r\n this.gw.connect(function (_client, message) {\r\n _this.messageHandler(message);\r\n }).then(function (client) {\r\n _this.client = client;\r\n });\r\n }\r\n Object.defineProperty(InProcTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n InProcTransport.prototype.sendObject = function (msg) {\r\n if (this.client) {\r\n this.client.send(msg);\r\n return Promise.resolve(undefined);\r\n }\r\n else {\r\n return Promise.reject(\"not connected\");\r\n }\r\n };\r\n InProcTransport.prototype.send = function (_msg) {\r\n return Promise.reject(\"not supported\");\r\n };\r\n InProcTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n InProcTransport.prototype.onConnectedChanged = function (callback) {\r\n callback(true);\r\n return function () { };\r\n };\r\n InProcTransport.prototype.close = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.open = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.name = function () {\r\n return \"in-memory\";\r\n };\r\n InProcTransport.prototype.reconnect = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.messageHandler = function (msg) {\r\n this.registry.execute(\"onMessage\", msg);\r\n };\r\n return InProcTransport;\r\n}());\n\nvar SharedWorkerTransport = (function () {\r\n function SharedWorkerTransport(workerFile, logger) {\r\n var _this = this;\r\n this.logger = logger;\r\n this.registry = lib$1();\r\n this.worker = new SharedWorker(workerFile);\r\n this.worker.port.onmessage = function (e) {\r\n _this.messageHandler(e.data);\r\n };\r\n }\r\n Object.defineProperty(SharedWorkerTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n SharedWorkerTransport.prototype.sendObject = function (msg) {\r\n this.worker.port.postMessage(msg);\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.send = function (_msg) {\r\n return Promise.reject(\"not supported\");\r\n };\r\n SharedWorkerTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n SharedWorkerTransport.prototype.onConnectedChanged = function (callback) {\r\n callback(true);\r\n return function () { };\r\n };\r\n SharedWorkerTransport.prototype.close = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.open = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.name = function () {\r\n return \"shared-worker\";\r\n };\r\n SharedWorkerTransport.prototype.reconnect = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.messageHandler = function (msg) {\r\n this.registry.execute(\"onMessage\", msg);\r\n };\r\n return SharedWorkerTransport;\r\n}());\n\nvar Utils = (function () {\r\n function Utils() {\r\n }\r\n Utils.isNode = function () {\r\n if (typeof Utils._isNode !== \"undefined\") {\r\n return Utils._isNode;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n Utils._isNode = false;\r\n return false;\r\n }\r\n try {\r\n Utils._isNode = Object.prototype.toString.call(global.process) === \"[object process]\";\r\n }\r\n catch (e) {\r\n Utils._isNode = false;\r\n }\r\n return Utils._isNode;\r\n };\r\n return Utils;\r\n}());\n\nvar PromiseWrapper = (function () {\r\n function PromiseWrapper() {\r\n var _this = this;\r\n this.rejected = false;\r\n this.resolved = false;\r\n this.promise = new Promise(function (resolve, reject) {\r\n _this.resolve = function (t) {\r\n _this.resolved = true;\r\n resolve(t);\r\n };\r\n _this.reject = function (err) {\r\n _this.rejected = true;\r\n reject(err);\r\n };\r\n });\r\n }\r\n PromiseWrapper.delay = function (time) {\r\n return new Promise(function (resolve) { return setTimeout(resolve, time); });\r\n };\r\n Object.defineProperty(PromiseWrapper.prototype, \"ended\", {\r\n get: function () {\r\n return this.rejected || this.resolved;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return PromiseWrapper;\r\n}());\n\nvar timers = {};\r\nfunction getAllTimers() {\r\n return timers;\r\n}\r\nfunction timer (timerName) {\r\n var existing = timers[timerName];\r\n if (existing) {\r\n return existing;\r\n }\r\n var marks = [];\r\n function now() {\r\n return new Date().getTime();\r\n }\r\n var startTime = now();\r\n mark(\"start\", startTime);\r\n var endTime;\r\n var period;\r\n function stop() {\r\n endTime = now();\r\n mark(\"end\", endTime);\r\n period = endTime - startTime;\r\n return period;\r\n }\r\n function mark(name, time) {\r\n var currentTime = time !== null && time !== void 0 ? time : now();\r\n var diff = 0;\r\n if (marks.length > 0) {\r\n diff = currentTime - marks[marks.length - 1].time;\r\n }\r\n marks.push({ name: name, time: currentTime, diff: diff });\r\n }\r\n var timerObj = {\r\n get startTime() {\r\n return startTime;\r\n },\r\n get endTime() {\r\n return endTime;\r\n },\r\n get period() {\r\n return period;\r\n },\r\n stop: stop,\r\n mark: mark,\r\n marks: marks\r\n };\r\n timers[timerName] = timerObj;\r\n return timerObj;\r\n}\n\nvar WebSocketConstructor = Utils.isNode() ? require(\"ws\") : window.WebSocket;\r\nvar WS = (function () {\r\n function WS(settings, logger) {\r\n this.startupTimer = timer(\"connection\");\r\n this._running = true;\r\n this._registry = lib$1();\r\n this.wsRequests = [];\r\n this.settings = settings;\r\n this.logger = logger;\r\n if (!this.settings.ws) {\r\n throw new Error(\"ws is missing\");\r\n }\r\n }\r\n WS.prototype.onMessage = function (callback) {\r\n return this._registry.add(\"onMessage\", callback);\r\n };\r\n WS.prototype.send = function (msg, options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.waitForSocketConnection(function () {\r\n var _a;\r\n try {\r\n (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.send(msg);\r\n resolve();\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n }, reject);\r\n });\r\n };\r\n WS.prototype.open = function () {\r\n var _this = this;\r\n this.logger.info(\"opening ws...\");\r\n this._running = true;\r\n return new Promise(function (resolve, reject) {\r\n _this.waitForSocketConnection(resolve, reject);\r\n });\r\n };\r\n WS.prototype.close = function () {\r\n this._running = false;\r\n if (this.ws) {\r\n this.ws.close();\r\n }\r\n return Promise.resolve();\r\n };\r\n WS.prototype.onConnectedChanged = function (callback) {\r\n return this._registry.add(\"onConnectedChanged\", callback);\r\n };\r\n WS.prototype.name = function () {\r\n return this.settings.ws;\r\n };\r\n WS.prototype.reconnect = function () {\r\n var _a;\r\n (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();\r\n var pw = new PromiseWrapper();\r\n this.waitForSocketConnection(function () {\r\n pw.resolve();\r\n });\r\n return pw.promise;\r\n };\r\n WS.prototype.waitForSocketConnection = function (callback, failed) {\r\n var _a;\r\n failed = failed !== null && failed !== void 0 ? failed : (function () { });\r\n if (!this._running) {\r\n failed(\"wait for socket on \".concat(this.settings.ws, \" failed - socket closed by user\"));\r\n return;\r\n }\r\n if (((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === 1) {\r\n callback();\r\n return;\r\n }\r\n this.wsRequests.push({ callback: callback, failed: failed });\r\n if (this.wsRequests.length > 1) {\r\n return;\r\n }\r\n this.openSocket();\r\n };\r\n WS.prototype.openSocket = function (retryInterval, retriesLeft) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.startupTimer.mark(\"opening-socket\");\r\n if (retryInterval === undefined) {\r\n retryInterval = this.settings.reconnectInterval;\r\n }\r\n if (typeof retriesLeft === \"undefined\") {\r\n retriesLeft = this.settings.reconnectAttempts;\r\n }\r\n if (retriesLeft !== undefined) {\r\n if (retriesLeft === 0) {\r\n this.notifyForSocketState(\"wait for socket on \".concat(this.settings.ws, \" failed - no more retries left\"));\r\n return [2];\r\n }\r\n this.logger.debug(\"will retry \".concat(retriesLeft, \" more times (every \").concat(retryInterval, \" ms)\"));\r\n }\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4, this.initiateSocket()];\r\n case 2:\r\n _b.sent();\r\n this.startupTimer.mark(\"socket-initiated\");\r\n this.notifyForSocketState();\r\n return [3, 4];\r\n case 3:\r\n _b.sent();\r\n setTimeout(function () {\r\n var retries = retriesLeft === undefined ? undefined : retriesLeft - 1;\r\n _this.openSocket(retryInterval, retries);\r\n }, retryInterval);\r\n return [3, 4];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n };\r\n WS.prototype.initiateSocket = function () {\r\n var _this = this;\r\n var pw = new PromiseWrapper();\r\n this.logger.debug(\"initiating ws to \".concat(this.settings.ws, \"...\"));\r\n this.ws = new WebSocketConstructor(this.settings.ws || \"\");\r\n this.ws.onerror = function (err) {\r\n var reason = \"\";\r\n try {\r\n reason = JSON.stringify(err);\r\n }\r\n catch (error) {\r\n var seen_1 = new WeakSet();\r\n var replacer = function (key, value) {\r\n if (typeof value === \"object\" && value !== null) {\r\n if (seen_1.has(value)) {\r\n return;\r\n }\r\n seen_1.add(value);\r\n }\r\n return value;\r\n };\r\n reason = JSON.stringify(err, replacer);\r\n }\r\n pw.reject(\"error\");\r\n _this.notifyStatusChanged(false, reason);\r\n };\r\n this.ws.onclose = function (err) {\r\n _this.logger.info(\"ws closed \".concat(err));\r\n pw.reject(\"closed\");\r\n _this.notifyStatusChanged(false);\r\n };\r\n this.ws.onopen = function () {\r\n var _a;\r\n _this.startupTimer.mark(\"ws-opened\");\r\n _this.logger.info(\"ws opened \".concat((_a = _this.settings.identity) === null || _a === void 0 ? void 0 : _a.application));\r\n pw.resolve();\r\n _this.notifyStatusChanged(true);\r\n };\r\n this.ws.onmessage = function (message) {\r\n _this._registry.execute(\"onMessage\", message.data);\r\n };\r\n return pw.promise;\r\n };\r\n WS.prototype.notifyForSocketState = function (error) {\r\n this.wsRequests.forEach(function (wsRequest) {\r\n if (error) {\r\n if (wsRequest.failed) {\r\n wsRequest.failed(error);\r\n }\r\n }\r\n else {\r\n wsRequest.callback();\r\n }\r\n });\r\n this.wsRequests = [];\r\n };\r\n WS.prototype.notifyStatusChanged = function (status, reason) {\r\n this._registry.execute(\"onConnectedChanged\", status, reason);\r\n };\r\n return WS;\r\n}());\n\nvar shortidExports = {};\nvar shortid$1 = {\n get exports(){ return shortidExports; },\n set exports(v){ shortidExports = v; },\n};\n\nvar libExports = {};\nvar lib = {\n get exports(){ return libExports; },\n set exports(v){ libExports = v; },\n};\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed$1(_seed_) {\n seed = _seed_;\n}\n\nvar randomFromSeed$1 = {\n nextValue: getNextValue,\n seed: setSeed$1\n};\n\nvar randomFromSeed = randomFromSeed$1;\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet$2;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet$2 !== ORIGINAL) {\n alphabet$2 = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet$2) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet$2 = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet$2;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet$2) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet$2.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet$2 || ORIGINAL;\n}\n\nvar alphabet_1 = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nvar randomByteBrowser = randomByte;\n\n// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nvar format_browser = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1;\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length);\n var id = '';\n\n while (true) {\n var bytes = random(step);\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step;\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || '';\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id\n }\n }\n};\n\nvar alphabet$1 = alphabet_1;\nvar random = randomByteBrowser;\nvar format = format_browser;\n\nfunction generate$1(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet$1.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nvar generate_1 = generate$1;\n\nvar generate = generate_1;\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version$1 = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version$1);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nvar build_1 = build;\n\nvar alphabet = alphabet_1;\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nvar isValid = isShortId;\n\n(function (module) {\n\n\tvar alphabet = alphabet_1;\n\tvar build = build_1;\n\tvar isValid$1 = isValid;\n\n\t// if you are using cluster or multiple servers use this to make each instance\n\t// has a unique value for worker\n\t// Note: I don't know if this is automatically set when using third\n\t// party cluster solutions such as pm2.\n\tvar clusterWorkerId = 0;\n\n\t/**\n\t * Set the seed.\n\t * Highly recommended if you don't want people to try to figure out your id schema.\n\t * exposed as shortid.seed(int)\n\t * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n\t */\n\tfunction seed(seedValue) {\n\t alphabet.seed(seedValue);\n\t return module.exports;\n\t}\n\n\t/**\n\t * Set the cluster worker or machine id\n\t * exposed as shortid.worker(int)\n\t * @param workerId worker must be positive integer. Number less than 16 is recommended.\n\t * returns shortid module so it can be chained.\n\t */\n\tfunction worker(workerId) {\n\t clusterWorkerId = workerId;\n\t return module.exports;\n\t}\n\n\t/**\n\t *\n\t * sets new characters to use in the alphabet\n\t * returns the shuffled alphabet\n\t */\n\tfunction characters(newCharacters) {\n\t if (newCharacters !== undefined) {\n\t alphabet.characters(newCharacters);\n\t }\n\n\t return alphabet.shuffled();\n\t}\n\n\t/**\n\t * Generate unique id\n\t * Returns string id\n\t */\n\tfunction generate() {\n\t return build(clusterWorkerId);\n\t}\n\n\t// Export all other functions as properties of the generate function\n\tmodule.exports = generate;\n\tmodule.exports.generate = generate;\n\tmodule.exports.seed = seed;\n\tmodule.exports.worker = worker;\n\tmodule.exports.characters = characters;\n\tmodule.exports.isValid = isValid$1;\n} (lib));\n\n(function (module) {\n\tmodule.exports = libExports;\n} (shortid$1));\n\nvar shortid = /*@__PURE__*/getDefaultExportFromCjs(shortidExports);\n\nfunction domainSession (domain, connection, logger, successMessages, errorMessages) {\r\n if (domain == null) {\r\n domain = \"global\";\r\n }\r\n successMessages = successMessages || [\"success\"];\r\n errorMessages = errorMessages || [\"error\"];\r\n var isJoined = false;\r\n var tryReconnecting = false;\r\n var _latestOptions;\r\n var _connectionOn = false;\r\n var callbacks = lib$1();\r\n connection.disconnected(handleConnectionDisconnected);\r\n connection.loggedIn(handleConnectionLoggedIn);\r\n connection.on(\"success\", function (msg) { return handleSuccessMessage(msg); });\r\n connection.on(\"error\", function (msg) { return handleErrorMessage(msg); });\r\n connection.on(\"result\", function (msg) { return handleSuccessMessage(msg); });\r\n if (successMessages) {\r\n successMessages.forEach(function (sm) {\r\n connection.on(sm, function (msg) { return handleSuccessMessage(msg); });\r\n });\r\n }\r\n if (errorMessages) {\r\n errorMessages.forEach(function (sm) {\r\n connection.on(sm, function (msg) { return handleErrorMessage(msg); });\r\n });\r\n }\r\n var requestsMap = {};\r\n function join(options) {\r\n _latestOptions = options;\r\n return new Promise(function (resolve, reject) {\r\n if (isJoined) {\r\n resolve({});\r\n return;\r\n }\r\n var joinPromise;\r\n if (domain === \"global\") {\r\n joinPromise = _connectionOn ? Promise.resolve({}) : Promise.reject(\"not connected to gateway\");\r\n }\r\n else {\r\n logger.debug(\"joining domain \".concat(domain));\r\n var joinMsg = {\r\n type: \"join\",\r\n destination: domain,\r\n domain: \"global\",\r\n options: options,\r\n };\r\n joinPromise = send(joinMsg);\r\n }\r\n joinPromise\r\n .then(function () {\r\n handleJoined();\r\n resolve({});\r\n })\r\n .catch(function (err) {\r\n logger.debug(\"error joining \" + domain + \" domain: \" + JSON.stringify(err));\r\n reject(err);\r\n });\r\n });\r\n }\r\n function leave() {\r\n if (domain === \"global\") {\r\n return Promise.resolve();\r\n }\r\n logger.debug(\"stopping session \" + domain + \"...\");\r\n var leaveMsg = {\r\n type: \"leave\",\r\n destination: domain,\r\n domain: \"global\",\r\n };\r\n tryReconnecting = false;\r\n return send(leaveMsg)\r\n .then(function () {\r\n isJoined = false;\r\n callbacks.execute(\"onLeft\");\r\n })\r\n .catch(function () {\r\n isJoined = false;\r\n callbacks.execute(\"onLeft\");\r\n });\r\n }\r\n function handleJoined() {\r\n logger.debug(\"did join \" + domain);\r\n isJoined = true;\r\n var wasReconnect = tryReconnecting;\r\n tryReconnecting = false;\r\n callbacks.execute(\"onJoined\", wasReconnect);\r\n }\r\n function handleConnectionDisconnected() {\r\n _connectionOn = false;\r\n logger.debug(\"connection is down\");\r\n isJoined = false;\r\n tryReconnecting = true;\r\n callbacks.execute(\"onLeft\", { disconnected: true });\r\n }\r\n function handleConnectionLoggedIn() {\r\n _connectionOn = true;\r\n if (tryReconnecting) {\r\n logger.debug(\"connection is now up - trying to reconnect...\");\r\n join(_latestOptions);\r\n }\r\n }\r\n function onJoined(callback) {\r\n if (isJoined) {\r\n callback(false);\r\n }\r\n return callbacks.add(\"onJoined\", callback);\r\n }\r\n function onLeft(callback) {\r\n if (!isJoined) {\r\n callback();\r\n }\r\n return callbacks.add(\"onLeft\", callback);\r\n }\r\n function handleErrorMessage(msg) {\r\n if (domain !== msg.domain) {\r\n return;\r\n }\r\n var requestId = msg.request_id;\r\n if (!requestId) {\r\n return;\r\n }\r\n var entry = requestsMap[requestId];\r\n if (!entry) {\r\n return;\r\n }\r\n entry.error(msg);\r\n }\r\n function handleSuccessMessage(msg) {\r\n if (msg.domain !== domain) {\r\n return;\r\n }\r\n var requestId = msg.request_id;\r\n if (!requestId) {\r\n return;\r\n }\r\n var entry = requestsMap[requestId];\r\n if (!entry) {\r\n return;\r\n }\r\n entry.success(msg);\r\n }\r\n function getNextRequestId() {\r\n return shortid();\r\n }\r\n function send(msg, tag, options) {\r\n options = options || {};\r\n msg.request_id = msg.request_id || getNextRequestId();\r\n msg.domain = msg.domain || domain;\r\n if (!options.skipPeerId) {\r\n msg.peer_id = connection.peerId;\r\n }\r\n var requestId = msg.request_id;\r\n return new Promise(function (resolve, reject) {\r\n requestsMap[requestId] = {\r\n success: function (successMsg) {\r\n delete requestsMap[requestId];\r\n successMsg._tag = tag;\r\n resolve(successMsg);\r\n },\r\n error: function (errorMsg) {\r\n logger.warn(\"GW error - \".concat(JSON.stringify(errorMsg), \" for request \").concat(JSON.stringify(msg)));\r\n delete requestsMap[requestId];\r\n errorMsg._tag = tag;\r\n reject(errorMsg);\r\n },\r\n };\r\n connection\r\n .send(msg, options)\r\n .catch(function (err) {\r\n requestsMap[requestId].error({ err: err });\r\n });\r\n });\r\n }\r\n function sendFireAndForget(msg) {\r\n msg.request_id = msg.request_id ? msg.request_id : getNextRequestId();\r\n msg.domain = msg.domain || domain;\r\n msg.peer_id = connection.peerId;\r\n return connection.send(msg);\r\n }\r\n return {\r\n join: join,\r\n leave: leave,\r\n onJoined: onJoined,\r\n onLeft: onLeft,\r\n send: send,\r\n sendFireAndForget: sendFireAndForget,\r\n on: function (type, callback) {\r\n connection.on(type, function (msg) {\r\n if (msg.domain !== domain) {\r\n return;\r\n }\r\n try {\r\n callback(msg);\r\n }\r\n catch (e) {\r\n logger.error(\"Callback failed: \".concat(e, \" \\n \").concat(e.stack, \" \\n msg was: \").concat(JSON.stringify(msg)), e);\r\n }\r\n });\r\n },\r\n loggedIn: function (callback) { return connection.loggedIn(callback); },\r\n connected: function (callback) { return connection.connected(callback); },\r\n disconnected: function (callback) { return connection.disconnected(callback); },\r\n get peerId() {\r\n return connection.peerId;\r\n },\r\n get domain() {\r\n return domain;\r\n },\r\n };\r\n}\n\nvar GW3ProtocolImpl = (function () {\r\n function GW3ProtocolImpl(connection, settings, logger) {\r\n var _this = this;\r\n this.connection = connection;\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.protocolVersion = 3;\r\n this.datePrefix = \"#T42_DATE#\";\r\n this.datePrefixLen = this.datePrefix.length;\r\n this.dateMinLen = this.datePrefixLen + 1;\r\n this.datePrefixFirstChar = this.datePrefix[0];\r\n this.registry = lib$1();\r\n this._isLoggedIn = false;\r\n this.shouldTryLogin = true;\r\n this.initialLogin = true;\r\n this.initialLoginAttempts = 3;\r\n this.sessions = [];\r\n connection.disconnected(function () {\r\n _this.handleDisconnected();\r\n });\r\n this.ping();\r\n }\r\n Object.defineProperty(GW3ProtocolImpl.prototype, \"isLoggedIn\", {\r\n get: function () {\r\n return this._isLoggedIn;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GW3ProtocolImpl.prototype.processStringMessage = function (message) {\r\n var _this = this;\r\n var msg = JSON.parse(message, function (key, value) {\r\n if (typeof value !== \"string\") {\r\n return value;\r\n }\r\n if (value.length < _this.dateMinLen) {\r\n return value;\r\n }\r\n if (value[0] !== _this.datePrefixFirstChar) {\r\n return value;\r\n }\r\n if (value.substring(0, _this.datePrefixLen) !== _this.datePrefix) {\r\n return value;\r\n }\r\n try {\r\n var milliseconds = parseInt(value.substring(_this.datePrefixLen, value.length), 10);\r\n if (isNaN(milliseconds)) {\r\n return value;\r\n }\r\n return new Date(milliseconds);\r\n }\r\n catch (ex) {\r\n return value;\r\n }\r\n });\r\n return {\r\n msg: msg,\r\n msgType: msg.type,\r\n };\r\n };\r\n GW3ProtocolImpl.prototype.createStringMessage = function (message) {\r\n var oldToJson = Date.prototype.toJSON;\r\n try {\r\n var datePrefix_1 = this.datePrefix;\r\n Date.prototype.toJSON = function () {\r\n return datePrefix_1 + this.getTime();\r\n };\r\n var result = JSON.stringify(message);\r\n return result;\r\n }\r\n finally {\r\n Date.prototype.toJSON = oldToJson;\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.processObjectMessage = function (message) {\r\n if (!message.type) {\r\n throw new Error(\"Object should have type property\");\r\n }\r\n return {\r\n msg: message,\r\n msgType: message.type,\r\n };\r\n };\r\n GW3ProtocolImpl.prototype.createObjectMessage = function (message) {\r\n return message;\r\n };\r\n GW3ProtocolImpl.prototype.login = function (config, reconnect) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authentication, token, e_1, _a, helloMsg, sendOptions, welcomeMsg, msg, token, _b, err_1;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n this.logger.debug(\"logging in...\");\r\n this.loginConfig = config;\r\n if (!this.loginConfig) {\r\n this.loginConfig = { username: \"\", password: \"\" };\r\n }\r\n this.shouldTryLogin = true;\r\n authentication = {};\r\n this.connection.gatewayToken = config.gatewayToken;\r\n if (!config.gatewayToken) return [3, 5];\r\n if (!reconnect) return [3, 4];\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, 3, , 4]);\r\n return [4, this.getNewGWToken()];\r\n case 2:\r\n token = _c.sent();\r\n config.gatewayToken = token;\r\n return [3, 4];\r\n case 3:\r\n e_1 = _c.sent();\r\n this.logger.warn(\"failed to get GW token when reconnecting \".concat((e_1 === null || e_1 === void 0 ? void 0 : e_1.message) || e_1));\r\n return [3, 4];\r\n case 4:\r\n authentication.method = \"gateway-token\";\r\n authentication.token = config.gatewayToken;\r\n this.connection.gatewayToken = config.gatewayToken;\r\n return [3, 10];\r\n case 5:\r\n if (!(config.flowName === \"sspi\")) return [3, 9];\r\n authentication.provider = \"win\";\r\n authentication.method = \"access-token\";\r\n if (!(config.flowCallback && config.sessionId)) return [3, 7];\r\n _a = authentication;\r\n return [4, config.flowCallback(config.sessionId, null)];\r\n case 6:\r\n _a.token =\r\n (_c.sent())\r\n .data\r\n .toString(\"base64\");\r\n return [3, 8];\r\n case 7: throw new Error(\"Invalid SSPI config\");\r\n case 8: return [3, 10];\r\n case 9:\r\n if (config.token) {\r\n authentication.method = \"access-token\";\r\n authentication.token = config.token;\r\n }\r\n else if (config.username) {\r\n authentication.method = \"secret\";\r\n authentication.login = config.username;\r\n authentication.secret = config.password;\r\n }\r\n else if (config.provider) {\r\n authentication.provider = config.provider;\r\n authentication.providerContext = config.providerContext;\r\n }\r\n else {\r\n throw new Error(\"invalid auth message\" + JSON.stringify(config));\r\n }\r\n _c.label = 10;\r\n case 10:\r\n helloMsg = {\r\n type: \"hello\",\r\n identity: this.settings.identity,\r\n authentication: authentication\r\n };\r\n if (config.sessionId) {\r\n helloMsg.request_id = config.sessionId;\r\n }\r\n this.globalDomain = domainSession(\"global\", this.connection, this.logger.subLogger(\"global-domain\"), [\r\n \"welcome\",\r\n \"token\",\r\n \"authentication-request\"\r\n ]);\r\n sendOptions = { skipPeerId: true };\r\n if (this.initialLogin) {\r\n sendOptions.retryInterval = this.settings.reconnectInterval;\r\n sendOptions.maxRetries = this.settings.reconnectAttempts;\r\n }\r\n _c.label = 11;\r\n case 11:\r\n _c.trys.push([11, 19, 20, 21]);\r\n welcomeMsg = void 0;\r\n _c.label = 12;\r\n case 12:\r\n return [4, this.globalDomain.send(helloMsg, undefined, sendOptions)];\r\n case 13:\r\n msg = _c.sent();\r\n if (!(msg.type === \"authentication-request\")) return [3, 16];\r\n token = Buffer.from(msg.authentication.token, \"base64\");\r\n if (!(config.flowCallback && config.sessionId)) return [3, 15];\r\n _b = helloMsg.authentication;\r\n return [4, config.flowCallback(config.sessionId, token)];\r\n case 14:\r\n _b.token =\r\n (_c.sent())\r\n .data\r\n .toString(\"base64\");\r\n _c.label = 15;\r\n case 15:\r\n helloMsg.request_id = config.sessionId;\r\n return [3, 12];\r\n case 16:\r\n if (msg.type === \"welcome\") {\r\n welcomeMsg = msg;\r\n return [3, 18];\r\n }\r\n else if (msg.type === \"error\") {\r\n throw new Error(\"Authentication failed: \" + msg.reason);\r\n }\r\n else {\r\n throw new Error(\"Unexpected message type during authentication: \" + msg.type);\r\n }\r\n case 17: return [3, 12];\r\n case 18:\r\n this.initialLogin = false;\r\n this.logger.debug(\"login successful with peerId \" + welcomeMsg.peer_id);\r\n this.connection.peerId = welcomeMsg.peer_id;\r\n this.connection.resolvedIdentity = welcomeMsg.resolved_identity;\r\n this.connection.availableDomains = welcomeMsg.available_domains;\r\n if (welcomeMsg.options) {\r\n this.connection.token = welcomeMsg.options.access_token;\r\n this.connection.info = welcomeMsg.options.info;\r\n }\r\n this.setLoggedIn(true);\r\n return [2, welcomeMsg.resolved_identity];\r\n case 19:\r\n err_1 = _c.sent();\r\n this.logger.error(\"error sending hello message - \" + (err_1.message || err_1.msg || err_1.reason || err_1), err_1);\r\n throw err_1;\r\n case 20:\r\n if (config && config.flowCallback && config.sessionId) {\r\n config.flowCallback(config.sessionId, null);\r\n }\r\n return [7];\r\n case 21: return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.logout = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var promises;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.debug(\"logging out...\");\r\n this.shouldTryLogin = false;\r\n if (this.pingTimer) {\r\n clearTimeout(this.pingTimer);\r\n }\r\n promises = this.sessions.map(function (session) {\r\n session.leave();\r\n });\r\n return [4, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.loggedIn = function (callback) {\r\n if (this._isLoggedIn) {\r\n callback();\r\n }\r\n return this.registry.add(\"onLoggedIn\", callback);\r\n };\r\n GW3ProtocolImpl.prototype.domain = function (domainName, domainLogger, successMessages, errorMessages) {\r\n var session = this.sessions.filter(function (s) { return s.domain === domainName; })[0];\r\n if (!session) {\r\n session = domainSession(domainName, this.connection, domainLogger, successMessages, errorMessages);\r\n this.sessions.push(session);\r\n }\r\n return session;\r\n };\r\n GW3ProtocolImpl.prototype.handleDisconnected = function () {\r\n var _this = this;\r\n this.setLoggedIn(false);\r\n var tryToLogin = this.shouldTryLogin;\r\n if (tryToLogin && this.initialLogin) {\r\n if (this.initialLoginAttempts <= 0) {\r\n return;\r\n }\r\n this.initialLoginAttempts--;\r\n }\r\n this.logger.debug(\"disconnected - will try new login?\" + this.shouldTryLogin);\r\n if (this.shouldTryLogin) {\r\n if (!this.loginConfig) {\r\n throw new Error(\"no login info\");\r\n }\r\n this.connection.login(this.loginConfig, true)\r\n .catch(function () {\r\n setTimeout(_this.handleDisconnected.bind(_this), _this.settings.reconnectInterval || 1000);\r\n });\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.setLoggedIn = function (value) {\r\n this._isLoggedIn = value;\r\n if (this._isLoggedIn) {\r\n this.registry.execute(\"onLoggedIn\");\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.ping = function () {\r\n var _this = this;\r\n if (!this.shouldTryLogin) {\r\n return;\r\n }\r\n if (this._isLoggedIn) {\r\n this.connection.send({ type: \"ping\" });\r\n }\r\n this.pingTimer = setTimeout(function () {\r\n _this.ping();\r\n }, 30 * 1000);\r\n };\r\n GW3ProtocolImpl.prototype.authToken = function () {\r\n var createTokenReq = {\r\n type: \"create-token\"\r\n };\r\n if (!this.globalDomain) {\r\n return Promise.reject(new Error(\"no global domain session\"));\r\n }\r\n return this.globalDomain.send(createTokenReq)\r\n .then(function (res) {\r\n return res.token;\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.getNewGWToken = function () {\r\n if (typeof window !== \"undefined\") {\r\n var glue42gd = window.glue42gd;\r\n if (glue42gd) {\r\n return glue42gd.getGWToken();\r\n }\r\n }\r\n return Promise.reject(new Error(\"not running in GD\"));\r\n };\r\n return GW3ProtocolImpl;\r\n}());\n\nvar MessageReplayerImpl = (function () {\r\n function MessageReplayerImpl(specs) {\r\n this.specsNames = [];\r\n this.messages = {};\r\n this.subs = {};\r\n this.subsRefCount = {};\r\n this.specs = {};\r\n for (var _i = 0, specs_1 = specs; _i < specs_1.length; _i++) {\r\n var spec = specs_1[_i];\r\n this.specs[spec.name] = spec;\r\n this.specsNames.push(spec.name);\r\n }\r\n }\r\n MessageReplayerImpl.prototype.init = function (connection) {\r\n var _this = this;\r\n this.connection = connection;\r\n for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) {\r\n var name_1 = _a[_i];\r\n var _loop_1 = function (type) {\r\n var refCount = this_1.subsRefCount[type];\r\n if (!refCount) {\r\n refCount = 0;\r\n }\r\n refCount += 1;\r\n this_1.subsRefCount[type] = refCount;\r\n if (refCount > 1) {\r\n return \"continue\";\r\n }\r\n var sub = connection.on(type, function (msg) { return _this.processMessage(type, msg); });\r\n this_1.subs[type] = sub;\r\n };\r\n var this_1 = this;\r\n for (var _b = 0, _c = this.specs[name_1].types; _b < _c.length; _b++) {\r\n var type = _c[_b];\r\n _loop_1(type);\r\n }\r\n }\r\n };\r\n MessageReplayerImpl.prototype.processMessage = function (type, msg) {\r\n if (this.isDone || !msg) {\r\n return;\r\n }\r\n for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) {\r\n var name_2 = _a[_i];\r\n if (this.specs[name_2].types.indexOf(type) !== -1) {\r\n var messages = this.messages[name_2] || [];\r\n this.messages[name_2] = messages;\r\n messages.push(msg);\r\n }\r\n }\r\n };\r\n MessageReplayerImpl.prototype.drain = function (name, callback) {\r\n var _a;\r\n if (callback) {\r\n (this.messages[name] || []).forEach(callback);\r\n }\r\n delete this.messages[name];\r\n for (var _i = 0, _b = this.specs[name].types; _i < _b.length; _i++) {\r\n var type = _b[_i];\r\n this.subsRefCount[type] -= 1;\r\n if (this.subsRefCount[type] <= 0) {\r\n (_a = this.connection) === null || _a === void 0 ? void 0 : _a.off(this.subs[type]);\r\n delete this.subs[type];\r\n delete this.subsRefCount[type];\r\n }\r\n }\r\n delete this.specs[name];\r\n if (!this.specs.length) {\r\n this.isDone = true;\r\n }\r\n };\r\n return MessageReplayerImpl;\r\n}());\n\nvar PromisePlus = function (executor, timeoutMilliseconds, timeoutMessage) {\r\n return new Promise(function (resolve, reject) {\r\n var timeout = setTimeout(function () {\r\n var message = timeoutMessage || \"Promise timeout hit: \".concat(timeoutMilliseconds);\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n var providedPromise = new Promise(executor);\r\n providedPromise\r\n .then(function (result) {\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch(function (error) {\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n};\n\nvar WebPlatformTransport = (function () {\r\n function WebPlatformTransport(settings, logger, identity) {\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.identity = identity;\r\n this.iAmConnected = false;\r\n this.parentReady = false;\r\n this.rejected = false;\r\n this.children = [];\r\n this.extContentAvailable = false;\r\n this.extContentConnecting = false;\r\n this.extContentConnected = false;\r\n this.parentInExtMode = false;\r\n this.webNamespace = \"g42_core_web\";\r\n this.parentPingTimeout = 5000;\r\n this.connectionRequestTimeout = 7000;\r\n this.defaultTargetString = \"*\";\r\n this.registry = lib$1();\r\n this.messages = {\r\n connectionAccepted: { name: \"connectionAccepted\", handle: this.handleConnectionAccepted.bind(this) },\r\n connectionRejected: { name: \"connectionRejected\", handle: this.handleConnectionRejected.bind(this) },\r\n connectionRequest: { name: \"connectionRequest\", handle: this.handleConnectionRequest.bind(this) },\r\n parentReady: {\r\n name: \"parentReady\", handle: function () {\r\n }\r\n },\r\n parentPing: { name: \"parentPing\", handle: this.handleParentPing.bind(this) },\r\n platformPing: { name: \"platformPing\", handle: this.handlePlatformPing.bind(this) },\r\n platformReady: { name: \"platformReady\", handle: this.handlePlatformReady.bind(this) },\r\n clientUnload: { name: \"clientUnload\", handle: this.handleClientUnload.bind(this) },\r\n manualUnload: { name: \"manualUnload\", handle: this.handleManualUnload.bind(this) },\r\n extConnectionResponse: { name: \"extConnectionResponse\", handle: this.handleExtConnectionResponse.bind(this) },\r\n extSetupRequest: { name: \"extSetupRequest\", handle: this.handleExtSetupRequest.bind(this) },\r\n gatewayDisconnect: { name: \"gatewayDisconnect\", handle: this.handleGatewayDisconnect.bind(this) },\r\n gatewayInternalConnect: { name: \"gatewayInternalConnect\", handle: this.handleGatewayInternalConnect.bind(this) }\r\n };\r\n this.extContentAvailable = !!window.glue42ext;\r\n this.setUpMessageListener();\r\n this.setUpUnload();\r\n this.setupPlatformUnloadListener();\r\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : undefined;\r\n }\r\n WebPlatformTransport.prototype.manualSetReadyState = function () {\r\n this.iAmConnected = true;\r\n this.parentReady = true;\r\n };\r\n Object.defineProperty(WebPlatformTransport.prototype, \"transportWindowId\", {\r\n get: function () {\r\n return this.publicWindowId;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebPlatformTransport.prototype, \"communicationId\", {\r\n get: function () {\r\n return this._communicationId;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WebPlatformTransport.prototype.sendObject = function (msg) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (this.extContentConnected) {\r\n return [2, window.postMessage({ glue42ExtOut: msg }, this.defaultTargetString)];\r\n }\r\n if (!this.port) {\r\n throw new Error(\"Cannot send message, because the port was not opened yet\");\r\n }\r\n this.port.postMessage(msg);\r\n return [2];\r\n });\r\n });\r\n };\r\n Object.defineProperty(WebPlatformTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WebPlatformTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n WebPlatformTransport.prototype.send = function () {\r\n return Promise.reject(\"not supported\");\r\n };\r\n WebPlatformTransport.prototype.onConnectedChanged = function (callback) {\r\n return this.registry.add(\"onConnectedChanged\", callback);\r\n };\r\n WebPlatformTransport.prototype.open = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.debug(\"opening a connection to the web platform gateway.\");\r\n return [4, this.connect()];\r\n case 1:\r\n _a.sent();\r\n this.notifyStatusChanged(true);\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.close = function () {\r\n var _a, _b;\r\n var message = {\r\n glue42core: {\r\n type: this.messages.gatewayDisconnect.name,\r\n data: {\r\n clientId: this.myClientId,\r\n ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n this.parentReady = false;\r\n this.notifyStatusChanged(false, \"manual reconnection\");\r\n return Promise.resolve();\r\n };\r\n WebPlatformTransport.prototype.name = function () {\r\n return \"web-platform\";\r\n };\r\n WebPlatformTransport.prototype.reconnect = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.close()];\r\n case 1:\r\n _a.sent();\r\n return [2, Promise.resolve()];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.initiateInternalConnection = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.logger.debug(\"opening an internal web platform connection\");\r\n _this.port = _this.settings.port;\r\n if (_this.iAmConnected) {\r\n _this.logger.warn(\"cannot open a new connection, because this client is currently connected\");\r\n return;\r\n }\r\n _this.port.onmessage = function (event) {\r\n var _a, _b;\r\n if (_this.iAmConnected && !((_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core)) {\r\n _this.registry.execute(\"onMessage\", event.data);\r\n return;\r\n }\r\n var data = (_b = event.data) === null || _b === void 0 ? void 0 : _b.glue42core;\r\n if (!data) {\r\n return;\r\n }\r\n if (data.type === _this.messages.gatewayInternalConnect.name && data.success) {\r\n _this.publicWindowId = _this.settings.windowId;\r\n if (_this.identity && _this.publicWindowId) {\r\n _this.identity.windowId = _this.publicWindowId;\r\n _this.identity.instance = _this.publicWindowId;\r\n }\r\n resolve();\r\n }\r\n if (data.type === _this.messages.gatewayInternalConnect.name && data.error) {\r\n reject(data.error);\r\n }\r\n };\r\n _this.port.postMessage({\r\n glue42core: {\r\n type: _this.messages.gatewayInternalConnect.name\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.initiateRemoteConnection = function (target) {\r\n var _this = this;\r\n return PromisePlus(function (resolve, reject) {\r\n var _a;\r\n _this.connectionResolve = resolve;\r\n _this.connectionReject = reject;\r\n _this.myClientId = (_a = _this.myClientId) !== null && _a !== void 0 ? _a : shortid();\r\n var bridgeInstanceId = _this.getMyWindowId() || shortid();\r\n var request = {\r\n glue42core: {\r\n type: _this.messages.connectionRequest.name,\r\n clientId: _this.myClientId,\r\n clientType: \"child\",\r\n bridgeInstanceId: bridgeInstanceId,\r\n selfAssignedWindowId: _this.selfAssignedWindowId\r\n }\r\n };\r\n _this.logger.debug(\"sending connection request\");\r\n if (_this.extContentConnecting) {\r\n request.glue42core.clientType = \"child\";\r\n request.glue42core.bridgeInstanceId = _this.myClientId;\r\n request.glue42core.parentWindowId = _this.parentWindowId;\r\n return window.postMessage(request, _this.defaultTargetString);\r\n }\r\n if (!target) {\r\n throw new Error(\"Cannot send a connection request, because no glue target was specified!\");\r\n }\r\n target.postMessage(request, _this.defaultTargetString);\r\n }, this.connectionRequestTimeout, \"The connection to the target glue window timed out\");\r\n };\r\n WebPlatformTransport.prototype.isParentCheckSuccess = function (parentCheck) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, parentCheck];\r\n case 1:\r\n _a.sent();\r\n return [2, { success: true }];\r\n case 2:\r\n _a.sent();\r\n return [2, { success: false }];\r\n case 3: return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.setUpMessageListener = function () {\r\n var _this = this;\r\n if (this.settings.port) {\r\n this.logger.debug(\"skipping generic message listener, because this is an internal client\");\r\n return;\r\n }\r\n window.addEventListener(\"message\", function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (!data || _this.rejected) {\r\n return;\r\n }\r\n var allowedOrigins = _this.settings.allowedOrigins || [];\r\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\r\n _this.logger.warn(\"received a message from an origin which is not in the allowed list: \".concat(event.origin));\r\n return;\r\n }\r\n if (!_this.checkMessageTypeValid(data.type)) {\r\n _this.logger.error(\"cannot handle the incoming glue42 core message, because the type is invalid: \".concat(data.type));\r\n return;\r\n }\r\n var messageType = data.type;\r\n _this.logger.debug(\"received valid glue42core message of type: \".concat(messageType));\r\n _this.messages[messageType].handle(event);\r\n });\r\n };\r\n WebPlatformTransport.prototype.setUpUnload = function () {\r\n var _this = this;\r\n if (this.settings.port) {\r\n this.logger.debug(\"skipping unload event listener, because this is an internal client\");\r\n return;\r\n }\r\n window.addEventListener(\"beforeunload\", function () {\r\n var _a, _b;\r\n if (_this.extContentConnected) {\r\n return;\r\n }\r\n var message = {\r\n glue42core: {\r\n type: _this.messages.clientUnload.name,\r\n data: {\r\n clientId: _this.myClientId,\r\n ownWindowId: (_a = _this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n if (_this.parent) {\r\n _this.parent.postMessage(message, _this.defaultTargetString);\r\n }\r\n (_b = _this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n });\r\n };\r\n WebPlatformTransport.prototype.handlePlatformReady = function (event) {\r\n this.logger.debug(\"the web platform gave the ready signal\");\r\n this.parentReady = true;\r\n if (this.parentPingResolve) {\r\n this.parentPingResolve();\r\n delete this.parentPingResolve;\r\n }\r\n if (this.parentPingInterval) {\r\n clearInterval(this.parentPingInterval);\r\n delete this.parentPingInterval;\r\n }\r\n this.parent = event.source;\r\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : \"window\";\r\n };\r\n WebPlatformTransport.prototype.handleConnectionAccepted = function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (this.myClientId === data.clientId) {\r\n return this.handleAcceptanceOfMyRequest(data);\r\n }\r\n return this.handleAcceptanceOfGrandChildRequest(data, event);\r\n };\r\n WebPlatformTransport.prototype.handleAcceptanceOfMyRequest = function (data) {\r\n var _this = this;\r\n this.logger.debug(\"handling a connection accepted signal targeted at me.\");\r\n this.isPreferredActivated = data.isPreferredActivated;\r\n if (this.extContentConnecting) {\r\n return this.processExtContentConnection(data);\r\n }\r\n if (!data.port) {\r\n this.logger.error(\"cannot set up my connection, because I was not provided with a port\");\r\n return;\r\n }\r\n this.publicWindowId = this.getMyWindowId();\r\n if (this.identity) {\r\n this.identity.windowId = this.publicWindowId;\r\n this.identity.instance = this.identity.instance ? this.identity.instance : this.publicWindowId || shortid();\r\n }\r\n if (this.identity && data.appName) {\r\n this.identity.application = data.appName;\r\n this.identity.applicationName = data.appName;\r\n }\r\n this._communicationId = data.communicationId;\r\n this.port = data.port;\r\n this.port.onmessage = function (e) { return _this.registry.execute(\"onMessage\", e.data); };\r\n if (this.connectionResolve) {\r\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\r\n this.connectionResolve();\r\n delete this.connectionResolve;\r\n return;\r\n }\r\n this.logger.error(\"unable to call the connection resolve, because no connection promise was found\");\r\n };\r\n WebPlatformTransport.prototype.processExtContentConnection = function (data) {\r\n var _this = this;\r\n this.logger.debug(\"handling a connection accepted signal targeted at me for extension content connection.\");\r\n this.extContentConnecting = false;\r\n this.extContentConnected = true;\r\n this.publicWindowId = this.parentWindowId || this.myClientId;\r\n if (this.extContentConnecting && this.identity) {\r\n this.identity.windowId = this.publicWindowId;\r\n }\r\n if (this.identity && data.appName) {\r\n this.identity.application = data.appName;\r\n this.identity.applicationName = data.appName;\r\n }\r\n window.addEventListener(\"message\", function (event) {\r\n var _a;\r\n var extData = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42ExtInc;\r\n if (!extData) {\r\n return;\r\n }\r\n var allowedOrigins = _this.settings.allowedOrigins || [];\r\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\r\n _this.logger.warn(\"received a message from an origin which is not in the allowed list: \".concat(event.origin));\r\n return;\r\n }\r\n _this.registry.execute(\"onMessage\", extData);\r\n });\r\n if (this.connectionResolve) {\r\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\r\n this.connectionResolve();\r\n delete this.connectionResolve;\r\n return;\r\n }\r\n };\r\n WebPlatformTransport.prototype.handleAcceptanceOfGrandChildRequest = function (data, event) {\r\n if (this.extContentConnecting || this.extContentConnected) {\r\n this.logger.debug(\"cannot process acceptance of a grandchild, because I am connected to a content script\");\r\n return;\r\n }\r\n this.logger.debug(\"handling a connection accepted signal targeted at a grandchild: \".concat(data.clientId));\r\n var child = this.children.find(function (c) { return c.grandChildId === data.clientId; });\r\n if (!child) {\r\n this.logger.error(\"cannot handle connection accepted for grandchild: \".concat(data.clientId, \", because there is no grandchild with this id\"));\r\n return;\r\n }\r\n child.connected = true;\r\n this.logger.debug(\"the grandchild connection for \".concat(data.clientId, \" is set up, forwarding the success message and the gateway port\"));\r\n data.parentWindowId = this.publicWindowId;\r\n child.source.postMessage(event.data, child.origin, [data.port]);\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleConnectionRejected = function () {\r\n this.logger.debug(\"handling a connection rejection. Most likely the reason is that this window was not created by a glue API call\");\r\n if (this.connectionReject) {\r\n this.connectionReject(\"The platform connection was rejected. Most likely because this window was not created by a glue API call\");\r\n delete this.connectionReject;\r\n }\r\n };\r\n WebPlatformTransport.prototype.handleConnectionRequest = function (event) {\r\n if (this.extContentConnecting) {\r\n this.logger.debug(\"This connection request event is targeted at the extension content\");\r\n return;\r\n }\r\n var source = event.source;\r\n var data = event.data.glue42core;\r\n if (!data.clientType || data.clientType !== \"grandChild\") {\r\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source was not opened by a glue API call\");\r\n }\r\n if (!data.clientId) {\r\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source did not provide a valid id\");\r\n }\r\n if (!this.parent) {\r\n return this.rejectConnectionRequest(source, event.origin, \"Cannot forward the connection request, because no direct connection to the platform was found\");\r\n }\r\n this.logger.debug(\"handling a connection request for a grandchild: \".concat(data.clientId));\r\n this.children.push({ grandChildId: data.clientId, source: source, connected: false, origin: event.origin });\r\n this.logger.debug(\"grandchild: \".concat(data.clientId, \" is prepared, forwarding connection request to the platform\"));\r\n this.parent.postMessage(event.data, this.defaultTargetString);\r\n };\r\n WebPlatformTransport.prototype.handleParentPing = function (event) {\r\n if (!this.parentReady) {\r\n this.logger.debug(\"my parent is not ready, I am ignoring the parent ping\");\r\n return;\r\n }\r\n if (!this.iAmConnected) {\r\n this.logger.debug(\"i am not fully connected yet, I am ignoring the parent ping\");\r\n return;\r\n }\r\n var message = {\r\n glue42core: {\r\n type: this.messages.parentReady.name\r\n }\r\n };\r\n if (this.extContentConnected) {\r\n message.glue42core.extMode = { windowId: this.myClientId };\r\n }\r\n var source = event.source;\r\n this.logger.debug(\"responding to a parent ping with a ready message\");\r\n source.postMessage(message, event.origin);\r\n };\r\n WebPlatformTransport.prototype.setupPlatformUnloadListener = function () {\r\n var _this = this;\r\n this.onMessage(function (msg) {\r\n if (msg.type === \"platformUnload\") {\r\n _this.logger.debug(\"detected a web platform unload\");\r\n _this.parentReady = false;\r\n _this.notifyStatusChanged(false, \"Gateway unloaded\");\r\n }\r\n });\r\n };\r\n WebPlatformTransport.prototype.handleManualUnload = function () {\r\n var _a, _b;\r\n var message = {\r\n glue42core: {\r\n type: this.messages.clientUnload.name,\r\n data: {\r\n clientId: this.myClientId,\r\n ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n if (this.extContentConnected) {\r\n return window.postMessage({ glue42ExtOut: message }, this.defaultTargetString);\r\n }\r\n (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n };\r\n WebPlatformTransport.prototype.handleClientUnload = function (event) {\r\n var data = event.data.glue42core;\r\n var clientId = data === null || data === void 0 ? void 0 : data.data.clientId;\r\n if (!clientId) {\r\n this.logger.warn(\"cannot process grand child unload, because the provided id was not valid\");\r\n return;\r\n }\r\n var foundChild = this.children.find(function (child) { return child.grandChildId === clientId; });\r\n if (!foundChild) {\r\n this.logger.warn(\"cannot process grand child unload, because this client is unaware of this grandchild\");\r\n return;\r\n }\r\n this.logger.debug(\"handling grandchild unload for id: \".concat(clientId));\r\n this.children = this.children.filter(function (child) { return child.grandChildId !== clientId; });\r\n };\r\n WebPlatformTransport.prototype.handlePlatformPing = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.notifyStatusChanged = function (status, reason) {\r\n this.iAmConnected = status;\r\n this.registry.execute(\"onConnectedChanged\", status, reason);\r\n };\r\n WebPlatformTransport.prototype.checkMessageTypeValid = function (typeToValidate) {\r\n return typeof typeToValidate === \"string\" && !!this.messages[typeToValidate];\r\n };\r\n WebPlatformTransport.prototype.rejectConnectionRequest = function (source, origin, reason) {\r\n this.rejected = true;\r\n this.logger.error(reason);\r\n var rejection = {\r\n glue42core: {\r\n type: this.messages.connectionRejected.name\r\n }\r\n };\r\n source.postMessage(rejection, origin);\r\n };\r\n WebPlatformTransport.prototype.requestConnectionPermissionFromExt = function () {\r\n var _this = this;\r\n return this.waitForContentScript()\r\n .then(function () { return PromisePlus(function (resolve, reject) {\r\n _this.extConnectionResolve = resolve;\r\n _this.extConnectionReject = reject;\r\n var message = {\r\n glue42core: {\r\n type: \"extSetupRequest\"\r\n }\r\n };\r\n _this.logger.debug(\"permission request to the extension content script was sent\");\r\n window.postMessage(message, _this.defaultTargetString);\r\n }, _this.parentPingTimeout, \"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out\"); });\r\n };\r\n WebPlatformTransport.prototype.handleExtConnectionResponse = function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (!data.approved) {\r\n return this.extConnectionReject ? this.extConnectionReject(\"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection was rejected\") : undefined;\r\n }\r\n if (this.extConnectionResolve) {\r\n this.extConnectionResolve();\r\n delete this.extConnectionResolve;\r\n }\r\n this.extContentConnecting = true;\r\n this.parentType = \"extension\";\r\n this.logger.debug(\"The extension connection was approved, proceeding.\");\r\n };\r\n WebPlatformTransport.prototype.handleExtSetupRequest = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleGatewayDisconnect = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleGatewayInternalConnect = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.waitForContentScript = function () {\r\n var _a;\r\n var contentReady = !!((_a = window.glue42ext) === null || _a === void 0 ? void 0 : _a.content);\r\n if (contentReady) {\r\n return Promise.resolve();\r\n }\r\n return PromisePlus(function (resolve) {\r\n window.addEventListener(\"Glue42EXTReady\", function () {\r\n resolve();\r\n });\r\n }, this.connectionRequestTimeout, \"The content script was available, but was never heard to be ready\");\r\n };\r\n WebPlatformTransport.prototype.connect = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.settings.port) return [3, 2];\r\n return [4, this.initiateInternalConnection()];\r\n case 1:\r\n _a.sent();\r\n this.logger.debug(\"internal web platform connection completed\");\r\n return [2];\r\n case 2:\r\n this.logger.debug(\"opening a client web platform connection\");\r\n return [4, this.findParent()];\r\n case 3:\r\n _a.sent();\r\n return [4, this.initiateRemoteConnection(this.parent)];\r\n case 4:\r\n _a.sent();\r\n this.logger.debug(\"the client is connected\");\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.findParent = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var connectionNotPossibleMsg, myInsideParents, myOutsideParents, uniqueParents, defaultParentCheck;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\r\n myInsideParents = this.getPossibleParentsInWindow(window);\r\n myOutsideParents = this.getPossibleParentsOutsideWindow((_a = window.top) === null || _a === void 0 ? void 0 : _a.opener, window.top);\r\n uniqueParents = new Set(__spreadArray(__spreadArray([], myInsideParents, true), myOutsideParents, true));\r\n if (!uniqueParents.size && !this.extContentAvailable) {\r\n throw new Error(connectionNotPossibleMsg);\r\n }\r\n if (!(!uniqueParents.size && this.extContentAvailable)) return [3, 2];\r\n return [4, this.requestConnectionPermissionFromExt()];\r\n case 1:\r\n _b.sent();\r\n return [2];\r\n case 2: return [4, this.isParentCheckSuccess(this.confirmParent(Array.from(uniqueParents)))];\r\n case 3:\r\n defaultParentCheck = _b.sent();\r\n if (defaultParentCheck.success) {\r\n this.logger.debug(\"The default parent was found!\");\r\n return [2];\r\n }\r\n if (!this.extContentAvailable) {\r\n throw new Error(connectionNotPossibleMsg);\r\n }\r\n return [4, this.requestConnectionPermissionFromExt()];\r\n case 4:\r\n _b.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.getPossibleParentsInWindow = function (currentWindow) {\r\n return (!currentWindow || currentWindow === currentWindow.top) ? [] : __spreadArray([currentWindow.parent], this.getPossibleParentsInWindow(currentWindow.parent), true);\r\n };\r\n WebPlatformTransport.prototype.getPossibleParentsOutsideWindow = function (opener, current) {\r\n return (!opener || !current || opener === current) ? [] : __spreadArray(__spreadArray([opener], this.getPossibleParentsInWindow(opener), true), this.getPossibleParentsOutsideWindow(opener.opener, opener), true);\r\n };\r\n WebPlatformTransport.prototype.confirmParent = function (targets) {\r\n var _this = this;\r\n var connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\r\n var parentCheck = PromisePlus(function (resolve) {\r\n _this.parentPingResolve = resolve;\r\n var message = {\r\n glue42core: {\r\n type: _this.messages.platformPing.name\r\n }\r\n };\r\n _this.parentPingInterval = setInterval(function () {\r\n targets.forEach(function (target) {\r\n target.postMessage(message, _this.defaultTargetString);\r\n });\r\n }, 1000);\r\n }, this.parentPingTimeout, connectionNotPossibleMsg);\r\n parentCheck.catch(function () {\r\n if (_this.parentPingInterval) {\r\n clearInterval(_this.parentPingInterval);\r\n delete _this.parentPingInterval;\r\n }\r\n });\r\n return parentCheck;\r\n };\r\n WebPlatformTransport.prototype.getMyWindowId = function () {\r\n var _a;\r\n if (this.parentType === \"workspace\") {\r\n return window.name.substring(0, window.name.indexOf(\"#wsp\"));\r\n }\r\n if (window !== window.top) {\r\n return;\r\n }\r\n if ((_a = window.name) === null || _a === void 0 ? void 0 : _a.includes(\"g42\")) {\r\n return window.name;\r\n }\r\n this.selfAssignedWindowId = this.selfAssignedWindowId || \"g42-\".concat(shortid());\r\n return this.selfAssignedWindowId;\r\n };\r\n return WebPlatformTransport;\r\n}());\n\nvar waitForInvocations = function (invocations, callback) {\r\n var left = invocations;\r\n return function () {\r\n left--;\r\n if (left === 0) {\r\n callback();\r\n }\r\n };\r\n};\n\nvar AsyncSequelizer = (function () {\r\n function AsyncSequelizer(minSequenceInterval) {\r\n if (minSequenceInterval === void 0) { minSequenceInterval = 0; }\r\n this.minSequenceInterval = minSequenceInterval;\r\n this.queue = [];\r\n this.isExecutingQueue = false;\r\n }\r\n AsyncSequelizer.prototype.enqueue = function (action) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.queue.push({ action: action, resolve: resolve, reject: reject });\r\n _this.executeQueue();\r\n });\r\n };\r\n AsyncSequelizer.prototype.executeQueue = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var operation, actionResult, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.isExecutingQueue) {\r\n return [2];\r\n }\r\n this.isExecutingQueue = true;\r\n _a.label = 1;\r\n case 1:\r\n if (!this.queue.length) return [3, 7];\r\n operation = this.queue.shift();\r\n if (!operation) {\r\n this.isExecutingQueue = false;\r\n return [2];\r\n }\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4, operation.action()];\r\n case 3:\r\n actionResult = _a.sent();\r\n operation.resolve(actionResult);\r\n return [3, 5];\r\n case 4:\r\n error_1 = _a.sent();\r\n operation.reject(error_1);\r\n return [3, 5];\r\n case 5: return [4, this.intervalBreak()];\r\n case 6:\r\n _a.sent();\r\n return [3, 1];\r\n case 7:\r\n this.isExecutingQueue = false;\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n AsyncSequelizer.prototype.intervalBreak = function () {\r\n var _this = this;\r\n return new Promise(function (res) { return setTimeout(res, _this.minSequenceInterval); });\r\n };\r\n return AsyncSequelizer;\r\n}());\n\nvar Connection = (function () {\r\n function Connection(settings, logger) {\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.messageHandlers = {};\r\n this.ids = 1;\r\n this.registry = lib$1();\r\n this._connected = false;\r\n this.isTrace = false;\r\n this._swapTransport = false;\r\n this._switchInProgress = false;\r\n this._transportSubscriptions = [];\r\n this._sequelizer = new AsyncSequelizer();\r\n settings = settings || {};\r\n settings.reconnectAttempts = settings.reconnectAttempts || 10;\r\n settings.reconnectInterval = settings.reconnectInterval || 1000;\r\n if (settings.inproc) {\r\n this.transport = new InProcTransport(settings.inproc, logger.subLogger(\"inMemory\"));\r\n }\r\n else if (settings.sharedWorker) {\r\n this.transport = new SharedWorkerTransport(settings.sharedWorker, logger.subLogger(\"shared-worker\"));\r\n }\r\n else if (settings.webPlatform) {\r\n this.transport = new WebPlatformTransport(settings.webPlatform, logger.subLogger(\"web-platform\"), settings.identity);\r\n }\r\n else if (settings.ws !== undefined) {\r\n this.transport = new WS(settings, logger.subLogger(\"ws\"));\r\n }\r\n else {\r\n throw new Error(\"No connection information specified\");\r\n }\r\n this.isTrace = logger.canPublish(\"trace\");\r\n logger.debug(\"starting with \".concat(this.transport.name(), \" transport\"));\r\n this.protocol = new GW3ProtocolImpl(this, settings, logger.subLogger(\"protocol\"));\r\n var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\r\n var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\r\n this._transportSubscriptions.push(unsubConnectionChanged);\r\n this._transportSubscriptions.push(unsubOnMessage);\r\n this._defaultTransport = this.transport;\r\n }\r\n Object.defineProperty(Connection.prototype, \"protocolVersion\", {\r\n get: function () {\r\n var _a;\r\n return (_a = this.protocol) === null || _a === void 0 ? void 0 : _a.protocolVersion;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Connection.prototype.switchTransport = function (settings) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2, this._sequelizer.enqueue(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var switchTargetTransport, verifyPromise, isSwitchSuccess;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!settings || typeof settings !== \"object\") {\r\n throw new Error(\"Cannot switch transports, because the settings are missing or invalid.\");\r\n }\r\n if (typeof settings.type === \"undefined\") {\r\n throw new Error(\"Cannot switch the transport, because the type is not defined\");\r\n }\r\n this.logger.trace(\"Starting transport switch with settings: \".concat(JSON.stringify(settings)));\r\n switchTargetTransport = settings.type === \"secondary\" ? this.getNewSecondaryTransport(settings) : this._defaultTransport;\r\n this._targetTransport = switchTargetTransport;\r\n this._targetAuth = settings.type === \"secondary\" ? this.getNewSecondaryAuth(settings) : this._defaultAuth;\r\n verifyPromise = this.verifyConnection();\r\n this._swapTransport = true;\r\n this._switchInProgress = true;\r\n this.logger.trace(\"The new transport has been set, closing the current transport\");\r\n return [4, this.transport.close()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4, verifyPromise];\r\n case 3:\r\n _a.sent();\r\n isSwitchSuccess = this.transport === switchTargetTransport;\r\n this.logger.info(\"The reconnection after the switch was completed. Was the switch a success: \".concat(isSwitchSuccess));\r\n this._switchInProgress = false;\r\n return [2, { success: isSwitchSuccess }];\r\n case 4:\r\n _a.sent();\r\n this.logger.info(\"The reconnection after the switch timed out, reverting back to the default transport.\");\r\n this.switchTransport({ type: \"default\" });\r\n this._switchInProgress = false;\r\n return [2, { success: false }];\r\n case 5: return [2];\r\n }\r\n });\r\n }); })];\r\n });\r\n });\r\n };\r\n Connection.prototype.onLibReAnnounced = function (callback) {\r\n return this.registry.add(\"libReAnnounced\", callback);\r\n };\r\n Connection.prototype.setLibReAnnounced = function (lib) {\r\n this.registry.execute(\"libReAnnounced\", lib);\r\n };\r\n Connection.prototype.send = function (message, options) {\r\n if (this.transport.sendObject &&\r\n this.transport.isObjectBasedTransport) {\r\n var msg = this.protocol.createObjectMessage(message);\r\n if (this.isTrace) {\r\n this.logger.trace(\">> \".concat(JSON.stringify(msg)));\r\n }\r\n return this.transport.sendObject(msg, options);\r\n }\r\n else {\r\n var strMessage = this.protocol.createStringMessage(message);\r\n if (this.isTrace) {\r\n this.logger.trace(\">> \".concat(strMessage));\r\n }\r\n return this.transport.send(strMessage, options);\r\n }\r\n };\r\n Connection.prototype.on = function (type, messageHandler) {\r\n type = type.toLowerCase();\r\n if (this.messageHandlers[type] === undefined) {\r\n this.messageHandlers[type] = {};\r\n }\r\n var id = this.ids++;\r\n this.messageHandlers[type][id] = messageHandler;\r\n return {\r\n type: type,\r\n id: id,\r\n };\r\n };\r\n Connection.prototype.off = function (info) {\r\n delete this.messageHandlers[info.type.toLowerCase()][info.id];\r\n };\r\n Object.defineProperty(Connection.prototype, \"isConnected\", {\r\n get: function () {\r\n return this.protocol.isLoggedIn;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Connection.prototype.connected = function (callback) {\r\n var _this = this;\r\n return this.protocol.loggedIn(function () {\r\n var currentServer = _this.transport.name();\r\n callback(currentServer);\r\n });\r\n };\r\n Connection.prototype.disconnected = function (callback) {\r\n return this.registry.add(\"disconnected\", callback);\r\n };\r\n Connection.prototype.login = function (authRequest, reconnect) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newAuth, identity, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this._defaultAuth) {\r\n this._defaultAuth = authRequest;\r\n }\r\n if (this._swapTransport) {\r\n this.logger.trace(\"Detected a transport swap, swapping transports\");\r\n newAuth = this.transportSwap();\r\n authRequest = newAuth !== null && newAuth !== void 0 ? newAuth : authRequest;\r\n }\r\n this.logger.trace(\"Starting login for transport: \".concat(this.transport.name(), \" and auth \").concat(JSON.stringify(authRequest)));\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 4, , 5]);\r\n return [4, this.transport.open()];\r\n case 2:\r\n _a.sent();\r\n this.logger.trace(\"Transport: \".concat(this.transport.name(), \" opened, logging in\"));\r\n timer(\"connection\").mark(\"transport-opened\");\r\n return [4, this.protocol.login(authRequest, reconnect)];\r\n case 3:\r\n identity = _a.sent();\r\n this.logger.trace(\"Logged in with identity: \".concat(JSON.stringify(identity)));\r\n timer(\"connection\").mark(\"protocol-logged-in\");\r\n return [2, identity];\r\n case 4:\r\n error_2 = _a.sent();\r\n if (this._switchInProgress) {\r\n this.logger.trace(\"An error while logging in after a transport swap, preparing a default swap.\");\r\n this.prepareDefaultSwap();\r\n }\r\n throw new Error(error_2);\r\n case 5: return [2];\r\n }\r\n });\r\n });\r\n };\r\n Connection.prototype.logout = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.protocol.logout()];\r\n case 1:\r\n _a.sent();\r\n return [4, this.transport.close()];\r\n case 2:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Connection.prototype.loggedIn = function (callback) {\r\n return this.protocol.loggedIn(callback);\r\n };\r\n Connection.prototype.domain = function (domain, successMessages, errorMessages) {\r\n return this.protocol.domain(domain, this.logger.subLogger(\"domain=\".concat(domain)), successMessages, errorMessages);\r\n };\r\n Connection.prototype.authToken = function () {\r\n return this.protocol.authToken();\r\n };\r\n Connection.prototype.reconnect = function () {\r\n return this.transport.reconnect();\r\n };\r\n Connection.prototype.distributeMessage = function (message, type) {\r\n var _this = this;\r\n var handlers = this.messageHandlers[type.toLowerCase()];\r\n if (handlers !== undefined) {\r\n Object.keys(handlers).forEach(function (handlerId) {\r\n var handler = handlers[handlerId];\r\n if (handler !== undefined) {\r\n try {\r\n handler(message);\r\n }\r\n catch (error) {\r\n try {\r\n _this.logger.error(\"Message handler failed with \".concat(error.stack), error);\r\n }\r\n catch (loggerError) {\r\n console.log(\"Message handler failed\", error);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n };\r\n Connection.prototype.handleConnectionChanged = function (connected) {\r\n if (this._connected === connected) {\r\n return;\r\n }\r\n this._connected = connected;\r\n if (connected) {\r\n if (this.settings.replaySpecs && this.settings.replaySpecs.length) {\r\n this.replayer = new MessageReplayerImpl(this.settings.replaySpecs);\r\n this.replayer.init(this);\r\n }\r\n this.registry.execute(\"connected\");\r\n }\r\n else {\r\n this.registry.execute(\"disconnected\");\r\n }\r\n };\r\n Connection.prototype.handleTransportMessage = function (msg) {\r\n var msgObj;\r\n if (typeof msg === \"string\") {\r\n msgObj = this.protocol.processStringMessage(msg);\r\n }\r\n else {\r\n msgObj = this.protocol.processObjectMessage(msg);\r\n }\r\n if (this.isTrace) {\r\n this.logger.trace(\"<< \".concat(JSON.stringify(msgObj)));\r\n }\r\n this.distributeMessage(msgObj.msg, msgObj.msgType);\r\n };\r\n Connection.prototype.verifyConnection = function () {\r\n var _this = this;\r\n return PromisePlus(function (resolve) {\r\n var unsub;\r\n var ready = waitForInvocations(2, function () {\r\n if (unsub) {\r\n unsub();\r\n }\r\n resolve();\r\n });\r\n unsub = _this.onLibReAnnounced(function (lib) {\r\n if (lib.name === \"interop\") {\r\n return ready();\r\n }\r\n if (lib.name === \"contexts\") {\r\n return ready();\r\n }\r\n });\r\n }, 10000, \"Transport switch timed out waiting for all libraries to be re-announced\");\r\n };\r\n Connection.prototype.getNewSecondaryTransport = function (settings) {\r\n var _a;\r\n if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.url)) {\r\n throw new Error(\"Missing secondary transport URL.\");\r\n }\r\n return new WS(Object.assign({}, this.settings, { ws: settings.transportConfig.url, reconnectAttempts: 1 }), this.logger.subLogger(\"ws-secondary\"));\r\n };\r\n Connection.prototype.getNewSecondaryAuth = function (settings) {\r\n var _a;\r\n if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.auth)) {\r\n throw new Error(\"Missing secondary transport auth information.\");\r\n }\r\n return settings.transportConfig.auth;\r\n };\r\n Connection.prototype.transportSwap = function () {\r\n this._swapTransport = false;\r\n if (!this._targetTransport || !this._targetAuth) {\r\n this.logger.warn(\"Error while switching transports - either the target transport or auth is not defined: transport defined -> \".concat(!!this._defaultTransport, \", auth defined -> \").concat(!!this._targetAuth, \". Staying on the current one.\"));\r\n return;\r\n }\r\n this._transportSubscriptions.forEach(function (unsub) { return unsub(); });\r\n this._transportSubscriptions = [];\r\n this.transport = this._targetTransport;\r\n var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\r\n var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\r\n this._transportSubscriptions.push(unsubConnectionChanged);\r\n this._transportSubscriptions.push(unsubOnMessage);\r\n return this._targetAuth;\r\n };\r\n Connection.prototype.prepareDefaultSwap = function () {\r\n var _this = this;\r\n this._transportSubscriptions.forEach(function (unsub) { return unsub(); });\r\n this._transportSubscriptions = [];\r\n this.transport.close().catch(function (error) { return _this.logger.warn(\"Error closing the \".concat(_this.transport.name(), \" transport after a failed connection attempt: \").concat(JSON.stringify(error))); });\r\n this._targetTransport = this._defaultTransport;\r\n this._targetAuth = this._defaultAuth;\r\n this._swapTransport = true;\r\n };\r\n return Connection;\r\n}());\n\nvar order = [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"off\"];\r\nvar Logger = (function () {\r\n function Logger(name, parent, logFn) {\r\n this.name = name;\r\n this.parent = parent;\r\n this.subLoggers = [];\r\n this.logFn = console;\r\n this.customLogFn = false;\r\n this.name = name;\r\n if (parent) {\r\n this.path = \"\".concat(parent.path, \".\").concat(name);\r\n }\r\n else {\r\n this.path = name;\r\n }\r\n this.loggerFullName = \"[\".concat(this.path, \"]\");\r\n this.includeTimeAndLevel = !logFn;\r\n if (logFn) {\r\n this.logFn = logFn;\r\n this.customLogFn = true;\r\n }\r\n }\r\n Logger.prototype.subLogger = function (name) {\r\n var existingSub = this.subLoggers.filter(function (subLogger) {\r\n return subLogger.name === name;\r\n })[0];\r\n if (existingSub !== undefined) {\r\n return existingSub;\r\n }\r\n Object.keys(this).forEach(function (key) {\r\n if (key === name) {\r\n throw new Error(\"This sub logger name is not allowed.\");\r\n }\r\n });\r\n var sub = new Logger(name, this, this.customLogFn ? this.logFn : undefined);\r\n this.subLoggers.push(sub);\r\n return sub;\r\n };\r\n Logger.prototype.publishLevel = function (level) {\r\n var _a;\r\n if (level) {\r\n this._publishLevel = level;\r\n }\r\n return this._publishLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.publishLevel());\r\n };\r\n Logger.prototype.consoleLevel = function (level) {\r\n var _a;\r\n if (level) {\r\n this._consoleLevel = level;\r\n }\r\n return this._consoleLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.consoleLevel());\r\n };\r\n Logger.prototype.log = function (message, level, error) {\r\n this.publishMessage(level || \"info\", message, error);\r\n };\r\n Logger.prototype.trace = function (message) {\r\n this.log(message, \"trace\");\r\n };\r\n Logger.prototype.debug = function (message) {\r\n this.log(message, \"debug\");\r\n };\r\n Logger.prototype.info = function (message) {\r\n this.log(message, \"info\");\r\n };\r\n Logger.prototype.warn = function (message) {\r\n this.log(message, \"warn\");\r\n };\r\n Logger.prototype.error = function (message, err) {\r\n this.log(message, \"error\");\r\n };\r\n Logger.prototype.canPublish = function (level, compareWith) {\r\n var levelIdx = order.indexOf(level);\r\n var restrictionIdx = order.indexOf(compareWith || this.consoleLevel() || \"trace\");\r\n return levelIdx >= restrictionIdx;\r\n };\r\n Logger.prototype.publishMessage = function (level, message, error) {\r\n var loggerName = this.loggerFullName;\r\n if (level === \"error\" && !error) {\r\n var e = new Error();\r\n if (e.stack) {\r\n message =\r\n message +\r\n \"\\n\" +\r\n e.stack\r\n .split(\"\\n\")\r\n .slice(3)\r\n .join(\"\\n\");\r\n }\r\n }\r\n if (this.canPublish(level, this.publishLevel())) {\r\n var interop = Logger.Interop;\r\n if (interop) {\r\n try {\r\n if (interop.methods({ name: Logger.InteropMethodName }).length > 0) {\r\n interop.invoke(Logger.InteropMethodName, {\r\n msg: \"\".concat(message),\r\n logger: loggerName,\r\n level: level\r\n });\r\n }\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n }\r\n if (this.canPublish(level)) {\r\n var prefix = \"\";\r\n if (this.includeTimeAndLevel) {\r\n var date = new Date();\r\n var time = \"\".concat(date.getHours(), \":\").concat(date.getMinutes(), \":\").concat(date.getSeconds(), \":\").concat(date.getMilliseconds());\r\n prefix = \"[\".concat(time, \"] [\").concat(level, \"] \");\r\n }\r\n var toPrint = \"\".concat(prefix).concat(loggerName, \": \").concat(message);\r\n switch (level) {\r\n case \"trace\":\r\n this.logFn.debug(toPrint);\r\n break;\r\n case \"debug\":\r\n if (this.logFn.debug) {\r\n this.logFn.debug(toPrint);\r\n }\r\n else {\r\n this.logFn.log(toPrint);\r\n }\r\n break;\r\n case \"info\":\r\n this.logFn.info(toPrint);\r\n break;\r\n case \"warn\":\r\n this.logFn.warn(toPrint);\r\n break;\r\n case \"error\":\r\n this.logFn.error(toPrint, error);\r\n break;\r\n }\r\n }\r\n };\r\n Logger.InteropMethodName = \"T42.AppLogger.Log\";\r\n return Logger;\r\n}());\n\nvar GW_MESSAGE_CREATE_CONTEXT = \"create-context\";\r\nvar GW_MESSAGE_ACTIVITY_CREATED = \"created\";\r\nvar GW_MESSAGE_ACTIVITY_DESTROYED = \"destroyed\";\r\nvar GW_MESSAGE_CONTEXT_CREATED = \"context-created\";\r\nvar GW_MESSAGE_CONTEXT_ADDED = \"context-added\";\r\nvar GW_MESSAGE_SUBSCRIBE_CONTEXT = \"subscribe-context\";\r\nvar GW_MESSAGE_SUBSCRIBED_CONTEXT = \"subscribed-context\";\r\nvar GW_MESSAGE_UNSUBSCRIBE_CONTEXT = \"unsubscribe-context\";\r\nvar GW_MESSAGE_DESTROY_CONTEXT = \"destroy-context\";\r\nvar GW_MESSAGE_CONTEXT_DESTROYED = \"context-destroyed\";\r\nvar GW_MESSAGE_UPDATE_CONTEXT = \"update-context\";\r\nvar GW_MESSAGE_CONTEXT_UPDATED = \"context-updated\";\r\nvar GW_MESSAGE_JOINED_ACTIVITY = \"joined\";\n\nvar ContextMessageReplaySpec = {\r\n get name() {\r\n return \"context\";\r\n },\r\n get types() {\r\n return [\r\n GW_MESSAGE_CREATE_CONTEXT,\r\n GW_MESSAGE_ACTIVITY_CREATED,\r\n GW_MESSAGE_ACTIVITY_DESTROYED,\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_CONTEXT_ADDED,\r\n GW_MESSAGE_SUBSCRIBE_CONTEXT,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\r\n GW_MESSAGE_DESTROY_CONTEXT,\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_UPDATE_CONTEXT,\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n GW_MESSAGE_JOINED_ACTIVITY\r\n ];\r\n }\r\n};\n\nvar version = \"6.2.0\";\n\nfunction prepareConfig (configuration, ext, glue42gd) {\r\n var _a, _b, _c, _d;\r\n var nodeStartingContext;\r\n if (Utils.isNode()) {\r\n var startingContextString = process.env._GD_STARTING_CONTEXT_;\r\n if (startingContextString) {\r\n try {\r\n nodeStartingContext = JSON.parse(startingContextString);\r\n }\r\n catch (_e) {\r\n }\r\n }\r\n }\r\n function getConnection() {\r\n var _a, _b, _c, _d, _e, _f;\r\n var gwConfig = configuration.gateway;\r\n var protocolVersion = (_a = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.protocolVersion) !== null && _a !== void 0 ? _a : 3;\r\n var reconnectInterval = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectInterval;\r\n var reconnectAttempts = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectAttempts;\r\n var defaultWs = \"ws://localhost:8385\";\r\n var ws = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.ws;\r\n var sharedWorker = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.sharedWorker;\r\n var inproc = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.inproc;\r\n var webPlatform = (_b = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.webPlatform) !== null && _b !== void 0 ? _b : undefined;\r\n if (glue42gd) {\r\n ws = glue42gd.gwURL;\r\n }\r\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwURL) {\r\n ws = nodeStartingContext.gwURL;\r\n }\r\n if (!ws && !sharedWorker && !inproc) {\r\n ws = defaultWs;\r\n }\r\n var instanceId;\r\n var windowId;\r\n var pid;\r\n var environment;\r\n var region;\r\n var appName = getApplication();\r\n var uniqueAppName = appName;\r\n if (typeof glue42gd !== \"undefined\") {\r\n windowId = glue42gd.windowId;\r\n pid = glue42gd.pid;\r\n if (glue42gd.env) {\r\n environment = glue42gd.env.env;\r\n region = glue42gd.env.region;\r\n }\r\n uniqueAppName = (_c = glue42gd.application) !== null && _c !== void 0 ? _c : \"glue-app\";\r\n instanceId = glue42gd.appInstanceId;\r\n }\r\n else if (Utils.isNode()) {\r\n pid = process.pid;\r\n if (nodeStartingContext) {\r\n environment = nodeStartingContext.env;\r\n region = nodeStartingContext.region;\r\n instanceId = nodeStartingContext.instanceId;\r\n }\r\n }\r\n else if (typeof (window === null || window === void 0 ? void 0 : window.glue42electron) !== \"undefined\") {\r\n windowId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId;\r\n pid = window === null || window === void 0 ? void 0 : window.glue42electron.pid;\r\n environment = window === null || window === void 0 ? void 0 : window.glue42electron.env;\r\n region = window === null || window === void 0 ? void 0 : window.glue42electron.region;\r\n uniqueAppName = (_d = window === null || window === void 0 ? void 0 : window.glue42electron.application) !== null && _d !== void 0 ? _d : \"glue-app\";\r\n instanceId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId;\r\n }\r\n else ;\r\n var replaySpecs = (_f = (_e = configuration.gateway) === null || _e === void 0 ? void 0 : _e.replaySpecs) !== null && _f !== void 0 ? _f : [];\r\n replaySpecs.push(ContextMessageReplaySpec);\r\n var identity = {\r\n application: uniqueAppName,\r\n applicationName: appName,\r\n windowId: windowId,\r\n instance: instanceId,\r\n process: pid,\r\n region: region,\r\n environment: environment,\r\n api: ext.version || version\r\n };\r\n if (configuration.identity) {\r\n identity = Object.assign(identity, configuration.identity);\r\n }\r\n return {\r\n identity: identity,\r\n reconnectInterval: reconnectInterval,\r\n ws: ws,\r\n sharedWorker: sharedWorker,\r\n webPlatform: webPlatform,\r\n inproc: inproc,\r\n protocolVersion: protocolVersion,\r\n reconnectAttempts: reconnectAttempts,\r\n replaySpecs: replaySpecs,\r\n };\r\n }\r\n function getContexts() {\r\n if (typeof configuration.contexts === \"undefined\") {\r\n return { reAnnounceKnownContexts: true };\r\n }\r\n if (typeof configuration.contexts === \"boolean\" && configuration.contexts) {\r\n return { reAnnounceKnownContexts: true };\r\n }\r\n if (typeof configuration.contexts === \"object\") {\r\n return Object.assign({}, { reAnnounceKnownContexts: true }, configuration.contexts);\r\n }\r\n return false;\r\n }\r\n function getApplication() {\r\n if (configuration.application) {\r\n return configuration.application;\r\n }\r\n if (glue42gd) {\r\n return glue42gd.applicationName;\r\n }\r\n if (typeof window !== \"undefined\" && typeof window.glue42electron !== \"undefined\") {\r\n return window.glue42electron.application;\r\n }\r\n var uid = shortid();\r\n if (Utils.isNode()) {\r\n if (nodeStartingContext) {\r\n return nodeStartingContext.applicationConfig.name;\r\n }\r\n return \"NodeJS\" + uid;\r\n }\r\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\r\n return document.title + \" (\".concat(uid, \")\");\r\n }\r\n return uid;\r\n }\r\n function getAuth() {\r\n var _a, _b, _c;\r\n if (typeof configuration.auth === \"string\") {\r\n return {\r\n token: configuration.auth\r\n };\r\n }\r\n if (configuration.auth) {\r\n return configuration.auth;\r\n }\r\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwToken) {\r\n return {\r\n gatewayToken: nodeStartingContext.gwToken\r\n };\r\n }\r\n if (((_a = configuration.gateway) === null || _a === void 0 ? void 0 : _a.webPlatform) || ((_b = configuration.gateway) === null || _b === void 0 ? void 0 : _b.inproc) || ((_c = configuration.gateway) === null || _c === void 0 ? void 0 : _c.sharedWorker)) {\r\n return {\r\n username: \"glue42\", password: \"glue42\"\r\n };\r\n }\r\n }\r\n function getLogger() {\r\n var _a, _b;\r\n var config = configuration.logger;\r\n var defaultLevel = \"warn\";\r\n if (!config) {\r\n config = defaultLevel;\r\n }\r\n var gdConsoleLevel;\r\n if (glue42gd) {\r\n gdConsoleLevel = glue42gd.consoleLogLevel;\r\n }\r\n if (typeof config === \"string\") {\r\n return { console: gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config, publish: defaultLevel };\r\n }\r\n return {\r\n console: (_a = gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config.console) !== null && _a !== void 0 ? _a : defaultLevel,\r\n publish: (_b = config.publish) !== null && _b !== void 0 ? _b : defaultLevel\r\n };\r\n }\r\n var connection = getConnection();\r\n var application = getApplication();\r\n if (typeof window !== \"undefined\") {\r\n var windowAsAny = window;\r\n var containerApplication = windowAsAny.htmlContainer ?\r\n \"\".concat(windowAsAny.htmlContainer.containerName, \".\").concat(windowAsAny.htmlContainer.application) :\r\n (_a = windowAsAny === null || windowAsAny === void 0 ? void 0 : windowAsAny.glue42gd) === null || _a === void 0 ? void 0 : _a.application;\r\n if (containerApplication) {\r\n application = containerApplication;\r\n }\r\n }\r\n return {\r\n bus: (_b = configuration.bus) !== null && _b !== void 0 ? _b : false,\r\n application: application,\r\n auth: getAuth(),\r\n logger: getLogger(),\r\n connection: connection,\r\n metrics: (_c = configuration.metrics) !== null && _c !== void 0 ? _c : true,\r\n contexts: getContexts(),\r\n version: ext.version || version,\r\n libs: (_d = ext.libs) !== null && _d !== void 0 ? _d : [],\r\n customLogger: configuration.customLogger\r\n };\r\n}\n\nvar GW3ContextData = (function () {\r\n function GW3ContextData(contextId, name, isAnnounced, activityId) {\r\n this.updateCallbacks = {};\r\n this.contextId = contextId;\r\n this.name = name;\r\n this.isAnnounced = isAnnounced;\r\n this.activityId = activityId;\r\n this.context = {};\r\n }\r\n GW3ContextData.prototype.hasCallbacks = function () {\r\n return Object.keys(this.updateCallbacks).length > 0;\r\n };\r\n GW3ContextData.prototype.getState = function () {\r\n if (this.isAnnounced && this.hasCallbacks()) {\r\n return 3;\r\n }\r\n if (this.isAnnounced) {\r\n return 2;\r\n }\r\n if (this.hasCallbacks()) {\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n return GW3ContextData;\r\n}());\n\nvar lodash_clonedeepExports = {};\nvar lodash_clonedeep = {\n get exports(){ return lodash_clonedeepExports; },\n set exports(v){ lodash_clonedeepExports = v; },\n};\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n(function (module, exports) {\n\t/** Used as the size to enable large array optimizations. */\n\tvar LARGE_ARRAY_SIZE = 200;\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t promiseTag = '[object Promise]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t symbolTag = '[object Symbol]',\n\t weakMapTag = '[object WeakMap]';\n\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t dataViewTag = '[object DataView]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n\t/** Used to match `RegExp` flags from their coerced string values. */\n\tvar reFlags = /\\w*$/;\n\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n\t/** Used to identify `toStringTag` values supported by `_.clone`. */\n\tvar cloneableTags = {};\n\tcloneableTags[argsTag] = cloneableTags[arrayTag] =\n\tcloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n\tcloneableTags[boolTag] = cloneableTags[dateTag] =\n\tcloneableTags[float32Tag] = cloneableTags[float64Tag] =\n\tcloneableTags[int8Tag] = cloneableTags[int16Tag] =\n\tcloneableTags[int32Tag] = cloneableTags[mapTag] =\n\tcloneableTags[numberTag] = cloneableTags[objectTag] =\n\tcloneableTags[regexpTag] = cloneableTags[setTag] =\n\tcloneableTags[stringTag] = cloneableTags[symbolTag] =\n\tcloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n\tcloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n\tcloneableTags[errorTag] = cloneableTags[funcTag] =\n\tcloneableTags[weakMapTag] = false;\n\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n\t/** Detect free variable `self`. */\n\tvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n\t/** Used as a reference to the global object. */\n\tvar root = freeGlobal || freeSelf || Function('return this')();\n\n\t/** Detect free variable `exports`. */\n\tvar freeExports = exports && !exports.nodeType && exports;\n\n\t/** Detect free variable `module`. */\n\tvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n\t/** Detect the popular CommonJS extension `module.exports`. */\n\tvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n\t/**\n\t * Adds the key-value `pair` to `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to modify.\n\t * @param {Array} pair The key-value pair to add.\n\t * @returns {Object} Returns `map`.\n\t */\n\tfunction addMapEntry(map, pair) {\n\t // Don't return `map.set` because it's not chainable in IE 11.\n\t map.set(pair[0], pair[1]);\n\t return map;\n\t}\n\n\t/**\n\t * Adds `value` to `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to modify.\n\t * @param {*} value The value to add.\n\t * @returns {Object} Returns `set`.\n\t */\n\tfunction addSetEntry(set, value) {\n\t // Don't return `set.add` because it's not chainable in IE 11.\n\t set.add(value);\n\t return set;\n\t}\n\n\t/**\n\t * A specialized version of `_.forEach` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayEach(array, iteratee) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t while (++index < length) {\n\t if (iteratee(array[index], index, array) === false) {\n\t break;\n\t }\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Appends the elements of `values` to `array`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {Array} values The values to append.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayPush(array, values) {\n\t var index = -1,\n\t length = values.length,\n\t offset = array.length;\n\n\t while (++index < length) {\n\t array[offset + index] = values[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * A specialized version of `_.reduce` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {boolean} [initAccum] Specify using the first element of `array` as\n\t * the initial value.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\tfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t if (initAccum && length) {\n\t accumulator = array[++index];\n\t }\n\t while (++index < length) {\n\t accumulator = iteratee(accumulator, array[index], index, array);\n\t }\n\t return accumulator;\n\t}\n\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Gets the value at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} [object] The object to query.\n\t * @param {string} key The key of the property to get.\n\t * @returns {*} Returns the property value.\n\t */\n\tfunction getValue(object, key) {\n\t return object == null ? undefined : object[key];\n\t}\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Converts `map` to its key-value pairs.\n\t *\n\t * @private\n\t * @param {Object} map The map to convert.\n\t * @returns {Array} Returns the key-value pairs.\n\t */\n\tfunction mapToArray(map) {\n\t var index = -1,\n\t result = Array(map.size);\n\n\t map.forEach(function(value, key) {\n\t result[++index] = [key, value];\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\n\t/**\n\t * Converts `set` to an array of its values.\n\t *\n\t * @private\n\t * @param {Object} set The set to convert.\n\t * @returns {Array} Returns the values.\n\t */\n\tfunction setToArray(set) {\n\t var index = -1,\n\t result = Array(set.size);\n\n\t set.forEach(function(value) {\n\t result[++index] = value;\n\t });\n\t return result;\n\t}\n\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype,\n\t funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\n\t/** Used to detect overreaching core-js shims. */\n\tvar coreJsData = root['__core-js_shared__'];\n\n\t/** Used to detect methods masquerading as native. */\n\tvar maskSrcKey = (function() {\n\t var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n\t return uid ? ('Symbol(src)_1.' + uid) : '';\n\t}());\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\n\t/** Built-in value references. */\n\tvar Buffer = moduleExports ? root.Buffer : undefined,\n\t Symbol = root.Symbol,\n\t Uint8Array = root.Uint8Array,\n\t getPrototype = overArg(Object.getPrototypeOf, Object),\n\t objectCreate = Object.create,\n\t propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t splice = arrayProto.splice;\n\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetSymbols = Object.getOwnPropertySymbols,\n\t nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n\t nativeKeys = overArg(Object.keys, Object);\n\n\t/* Built-in method references that are verified to be native. */\n\tvar DataView = getNative(root, 'DataView'),\n\t Map = getNative(root, 'Map'),\n\t Promise = getNative(root, 'Promise'),\n\t Set = getNative(root, 'Set'),\n\t WeakMap = getNative(root, 'WeakMap'),\n\t nativeCreate = getNative(Object, 'create');\n\n\t/** Used to detect maps, sets, and weakmaps. */\n\tvar dataViewCtorString = toSource(DataView),\n\t mapCtorString = toSource(Map),\n\t promiseCtorString = toSource(Promise),\n\t setCtorString = toSource(Set),\n\t weakMapCtorString = toSource(WeakMap);\n\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Hash(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the hash.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Hash\n\t */\n\tfunction hashClear() {\n\t this.__data__ = nativeCreate ? nativeCreate(null) : {};\n\t}\n\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Hash\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(key) {\n\t return this.has(key) && delete this.__data__[key];\n\t}\n\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(key) {\n\t var data = this.__data__;\n\t if (nativeCreate) {\n\t var result = data[key];\n\t return result === HASH_UNDEFINED ? undefined : result;\n\t }\n\t return hasOwnProperty.call(data, key) ? data[key] : undefined;\n\t}\n\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Hash\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(key) {\n\t var data = this.__data__;\n\t return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n\t}\n\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the hash instance.\n\t */\n\tfunction hashSet(key, value) {\n\t var data = this.__data__;\n\t data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t return this;\n\t}\n\n\t// Add methods to `Hash`.\n\tHash.prototype.clear = hashClear;\n\tHash.prototype['delete'] = hashDelete;\n\tHash.prototype.get = hashGet;\n\tHash.prototype.has = hashHas;\n\tHash.prototype.set = hashSet;\n\n\t/**\n\t * Creates an list cache object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction ListCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the list cache.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf ListCache\n\t */\n\tfunction listCacheClear() {\n\t this.__data__ = [];\n\t}\n\n\t/**\n\t * Removes `key` and its value from the list cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction listCacheDelete(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t return false;\n\t }\n\t var lastIndex = data.length - 1;\n\t if (index == lastIndex) {\n\t data.pop();\n\t } else {\n\t splice.call(data, index, 1);\n\t }\n\t return true;\n\t}\n\n\t/**\n\t * Gets the list cache value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction listCacheGet(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t return index < 0 ? undefined : data[index][1];\n\t}\n\n\t/**\n\t * Checks if a list cache value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf ListCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction listCacheHas(key) {\n\t return assocIndexOf(this.__data__, key) > -1;\n\t}\n\n\t/**\n\t * Sets the list cache `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the list cache instance.\n\t */\n\tfunction listCacheSet(key, value) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t data.push([key, value]);\n\t } else {\n\t data[index][1] = value;\n\t }\n\t return this;\n\t}\n\n\t// Add methods to `ListCache`.\n\tListCache.prototype.clear = listCacheClear;\n\tListCache.prototype['delete'] = listCacheDelete;\n\tListCache.prototype.get = listCacheGet;\n\tListCache.prototype.has = listCacheHas;\n\tListCache.prototype.set = listCacheSet;\n\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction MapCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapCacheClear() {\n\t this.__data__ = {\n\t 'hash': new Hash,\n\t 'map': new (Map || ListCache),\n\t 'string': new Hash\n\t };\n\t}\n\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapCacheDelete(key) {\n\t return getMapData(this, key)['delete'](key);\n\t}\n\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapCacheGet(key) {\n\t return getMapData(this, key).get(key);\n\t}\n\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapCacheHas(key) {\n\t return getMapData(this, key).has(key);\n\t}\n\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapCacheSet(key, value) {\n\t getMapData(this, key).set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapCacheClear;\n\tMapCache.prototype['delete'] = mapCacheDelete;\n\tMapCache.prototype.get = mapCacheGet;\n\tMapCache.prototype.has = mapCacheHas;\n\tMapCache.prototype.set = mapCacheSet;\n\n\t/**\n\t * Creates a stack cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Stack(entries) {\n\t this.__data__ = new ListCache(entries);\n\t}\n\n\t/**\n\t * Removes all key-value entries from the stack.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Stack\n\t */\n\tfunction stackClear() {\n\t this.__data__ = new ListCache;\n\t}\n\n\t/**\n\t * Removes `key` and its value from the stack.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction stackDelete(key) {\n\t return this.__data__['delete'](key);\n\t}\n\n\t/**\n\t * Gets the stack value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction stackGet(key) {\n\t return this.__data__.get(key);\n\t}\n\n\t/**\n\t * Checks if a stack value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Stack\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction stackHas(key) {\n\t return this.__data__.has(key);\n\t}\n\n\t/**\n\t * Sets the stack `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the stack cache instance.\n\t */\n\tfunction stackSet(key, value) {\n\t var cache = this.__data__;\n\t if (cache instanceof ListCache) {\n\t var pairs = cache.__data__;\n\t if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n\t pairs.push([key, value]);\n\t return this;\n\t }\n\t cache = this.__data__ = new MapCache(pairs);\n\t }\n\t cache.set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `Stack`.\n\tStack.prototype.clear = stackClear;\n\tStack.prototype['delete'] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\n\t/**\n\t * Creates an array of the enumerable property names of the array-like `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @param {boolean} inherited Specify returning inherited property names.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction arrayLikeKeys(value, inherited) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t // Safari 9 makes `arguments.length` enumerable in strict mode.\n\t var result = (isArray(value) || isArguments(value))\n\t ? baseTimes(value.length, String)\n\t : [];\n\n\t var length = result.length,\n\t skipIndexes = !!length;\n\n\t for (var key in value) {\n\t if ((inherited || hasOwnProperty.call(value, key)) &&\n\t !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Assigns `value` to `key` of `object` if the existing value is not equivalent\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {string} key The key of the property to assign.\n\t * @param {*} value The value to assign.\n\t */\n\tfunction assignValue(object, key, value) {\n\t var objValue = object[key];\n\t if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n\t (value === undefined && !(key in object))) {\n\t object[key] = value;\n\t }\n\t}\n\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t var length = array.length;\n\t while (length--) {\n\t if (eq(array[length][0], key)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t}\n\n\t/**\n\t * The base implementation of `_.assign` without support for multiple sources\n\t * or `customizer` functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction baseAssign(object, source) {\n\t return object && copyObject(source, keys(source), object);\n\t}\n\n\t/**\n\t * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n\t * traversed objects.\n\t *\n\t * @private\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @param {boolean} [isFull] Specify a clone including symbols.\n\t * @param {Function} [customizer] The function to customize cloning.\n\t * @param {string} [key] The key of `value`.\n\t * @param {Object} [object] The parent object of `value`.\n\t * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n\t * @returns {*} Returns the cloned value.\n\t */\n\tfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n\t var result;\n\t if (customizer) {\n\t result = object ? customizer(value, key, object, stack) : customizer(value);\n\t }\n\t if (result !== undefined) {\n\t return result;\n\t }\n\t if (!isObject(value)) {\n\t return value;\n\t }\n\t var isArr = isArray(value);\n\t if (isArr) {\n\t result = initCloneArray(value);\n\t if (!isDeep) {\n\t return copyArray(value, result);\n\t }\n\t } else {\n\t var tag = getTag(value),\n\t isFunc = tag == funcTag || tag == genTag;\n\n\t if (isBuffer(value)) {\n\t return cloneBuffer(value, isDeep);\n\t }\n\t if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n\t if (isHostObject(value)) {\n\t return object ? value : {};\n\t }\n\t result = initCloneObject(isFunc ? {} : value);\n\t if (!isDeep) {\n\t return copySymbols(value, baseAssign(result, value));\n\t }\n\t } else {\n\t if (!cloneableTags[tag]) {\n\t return object ? value : {};\n\t }\n\t result = initCloneByTag(value, tag, baseClone, isDeep);\n\t }\n\t }\n\t // Check for circular references and return its corresponding clone.\n\t stack || (stack = new Stack);\n\t var stacked = stack.get(value);\n\t if (stacked) {\n\t return stacked;\n\t }\n\t stack.set(value, result);\n\n\t if (!isArr) {\n\t var props = isFull ? getAllKeys(value) : keys(value);\n\t }\n\t arrayEach(props || value, function(subValue, key) {\n\t if (props) {\n\t key = subValue;\n\t subValue = value[key];\n\t }\n\t // Recursively populate clone (susceptible to call stack limits).\n\t assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * The base implementation of `_.create` without support for assigning\n\t * properties to the created object.\n\t *\n\t * @private\n\t * @param {Object} prototype The object to inherit from.\n\t * @returns {Object} Returns the new object.\n\t */\n\tfunction baseCreate(proto) {\n\t return isObject(proto) ? objectCreate(proto) : {};\n\t}\n\n\t/**\n\t * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n\t * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n\t * symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @param {Function} symbolsFunc The function to get the symbols of `object`.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n\t var result = keysFunc(object);\n\t return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n\t}\n\n\t/**\n\t * The base implementation of `getTag`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction baseGetTag(value) {\n\t return objectToString.call(value);\n\t}\n\n\t/**\n\t * The base implementation of `_.isNative` without bad shim checks.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t * else `false`.\n\t */\n\tfunction baseIsNative(value) {\n\t if (!isObject(value) || isMasked(value)) {\n\t return false;\n\t }\n\t var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t return pattern.test(toSource(value));\n\t}\n\n\t/**\n\t * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t if (!isPrototype(object)) {\n\t return nativeKeys(object);\n\t }\n\t var result = [];\n\t for (var key in Object(object)) {\n\t if (hasOwnProperty.call(object, key) && key != 'constructor') {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `buffer`.\n\t *\n\t * @private\n\t * @param {Buffer} buffer The buffer to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Buffer} Returns the cloned buffer.\n\t */\n\tfunction cloneBuffer(buffer, isDeep) {\n\t if (isDeep) {\n\t return buffer.slice();\n\t }\n\t var result = new buffer.constructor(buffer.length);\n\t buffer.copy(result);\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `arrayBuffer`.\n\t *\n\t * @private\n\t * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n\t * @returns {ArrayBuffer} Returns the cloned array buffer.\n\t */\n\tfunction cloneArrayBuffer(arrayBuffer) {\n\t var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n\t new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `dataView`.\n\t *\n\t * @private\n\t * @param {Object} dataView The data view to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned data view.\n\t */\n\tfunction cloneDataView(dataView, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n\t return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n\t}\n\n\t/**\n\t * Creates a clone of `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned map.\n\t */\n\tfunction cloneMap(map, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n\t return arrayReduce(array, addMapEntry, new map.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of `regexp`.\n\t *\n\t * @private\n\t * @param {Object} regexp The regexp to clone.\n\t * @returns {Object} Returns the cloned regexp.\n\t */\n\tfunction cloneRegExp(regexp) {\n\t var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n\t result.lastIndex = regexp.lastIndex;\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned set.\n\t */\n\tfunction cloneSet(set, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n\t return arrayReduce(array, addSetEntry, new set.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of the `symbol` object.\n\t *\n\t * @private\n\t * @param {Object} symbol The symbol object to clone.\n\t * @returns {Object} Returns the cloned symbol object.\n\t */\n\tfunction cloneSymbol(symbol) {\n\t return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n\t}\n\n\t/**\n\t * Creates a clone of `typedArray`.\n\t *\n\t * @private\n\t * @param {Object} typedArray The typed array to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned typed array.\n\t */\n\tfunction cloneTypedArray(typedArray, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n\t return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n\t}\n\n\t/**\n\t * Copies the values of `source` to `array`.\n\t *\n\t * @private\n\t * @param {Array} source The array to copy values from.\n\t * @param {Array} [array=[]] The array to copy values to.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction copyArray(source, array) {\n\t var index = -1,\n\t length = source.length;\n\n\t array || (array = Array(length));\n\t while (++index < length) {\n\t array[index] = source[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Copies properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy properties from.\n\t * @param {Array} props The property identifiers to copy.\n\t * @param {Object} [object={}] The object to copy properties to.\n\t * @param {Function} [customizer] The function to customize copied values.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copyObject(source, props, object, customizer) {\n\t object || (object = {});\n\n\t var index = -1,\n\t length = props.length;\n\n\t while (++index < length) {\n\t var key = props[index];\n\n\t var newValue = customizer\n\t ? customizer(object[key], source[key], key, object, source)\n\t : undefined;\n\n\t assignValue(object, key, newValue === undefined ? source[key] : newValue);\n\t }\n\t return object;\n\t}\n\n\t/**\n\t * Copies own symbol properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy symbols from.\n\t * @param {Object} [object={}] The object to copy symbols to.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copySymbols(source, object) {\n\t return copyObject(source, getSymbols(source), object);\n\t}\n\n\t/**\n\t * Creates an array of own enumerable property names and symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction getAllKeys(object) {\n\t return baseGetAllKeys(object, keys, getSymbols);\n\t}\n\n\t/**\n\t * Gets the data for `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to query.\n\t * @param {string} key The reference key.\n\t * @returns {*} Returns the map data.\n\t */\n\tfunction getMapData(map, key) {\n\t var data = map.__data__;\n\t return isKeyable(key)\n\t ? data[typeof key == 'string' ? 'string' : 'hash']\n\t : data.map;\n\t}\n\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = getValue(object, key);\n\t return baseIsNative(value) ? value : undefined;\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable symbol properties of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of symbols.\n\t */\n\tvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n\t/**\n\t * Gets the `toStringTag` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tvar getTag = baseGetTag;\n\n\t// Fallback for data views, maps, sets, and weak maps in IE 11,\n\t// for data views in Edge < 14, and promises in Node.js.\n\tif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n\t (Map && getTag(new Map) != mapTag) ||\n\t (Promise && getTag(Promise.resolve()) != promiseTag) ||\n\t (Set && getTag(new Set) != setTag) ||\n\t (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n\t getTag = function(value) {\n\t var result = objectToString.call(value),\n\t Ctor = result == objectTag ? value.constructor : undefined,\n\t ctorString = Ctor ? toSource(Ctor) : undefined;\n\n\t if (ctorString) {\n\t switch (ctorString) {\n\t case dataViewCtorString: return dataViewTag;\n\t case mapCtorString: return mapTag;\n\t case promiseCtorString: return promiseTag;\n\t case setCtorString: return setTag;\n\t case weakMapCtorString: return weakMapTag;\n\t }\n\t }\n\t return result;\n\t };\n\t}\n\n\t/**\n\t * Initializes an array clone.\n\t *\n\t * @private\n\t * @param {Array} array The array to clone.\n\t * @returns {Array} Returns the initialized clone.\n\t */\n\tfunction initCloneArray(array) {\n\t var length = array.length,\n\t result = array.constructor(length);\n\n\t // Add properties assigned by `RegExp#exec`.\n\t if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n\t result.index = array.index;\n\t result.input = array.input;\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Initializes an object clone.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneObject(object) {\n\t return (typeof object.constructor == 'function' && !isPrototype(object))\n\t ? baseCreate(getPrototype(object))\n\t : {};\n\t}\n\n\t/**\n\t * Initializes an object clone based on its `toStringTag`.\n\t *\n\t * **Note:** This function only supports cloning values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @param {string} tag The `toStringTag` of the object to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n\t var Ctor = object.constructor;\n\t switch (tag) {\n\t case arrayBufferTag:\n\t return cloneArrayBuffer(object);\n\n\t case boolTag:\n\t case dateTag:\n\t return new Ctor(+object);\n\n\t case dataViewTag:\n\t return cloneDataView(object, isDeep);\n\n\t case float32Tag: case float64Tag:\n\t case int8Tag: case int16Tag: case int32Tag:\n\t case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n\t return cloneTypedArray(object, isDeep);\n\n\t case mapTag:\n\t return cloneMap(object, isDeep, cloneFunc);\n\n\t case numberTag:\n\t case stringTag:\n\t return new Ctor(object);\n\n\t case regexpTag:\n\t return cloneRegExp(object);\n\n\t case setTag:\n\t return cloneSet(object, isDeep, cloneFunc);\n\n\t case symbolTag:\n\t return cloneSymbol(object);\n\t }\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return !!length &&\n\t (typeof value == 'number' || reIsUint.test(value)) &&\n\t (value > -1 && value % 1 == 0 && value < length);\n\t}\n\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t var type = typeof value;\n\t return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n\t ? (value !== '__proto__')\n\t : (value === null);\n\t}\n\n\t/**\n\t * Checks if `func` has its source masked.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n\t */\n\tfunction isMasked(func) {\n\t return !!maskSrcKey && (maskSrcKey in func);\n\t}\n\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n\t return value === proto;\n\t}\n\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t if (func != null) {\n\t try {\n\t return funcToString.call(func);\n\t } catch (e) {}\n\t try {\n\t return (func + '');\n\t } catch (e) {}\n\t }\n\t return '';\n\t}\n\n\t/**\n\t * This method is like `_.clone` except that it recursively clones `value`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 1.0.0\n\t * @category Lang\n\t * @param {*} value The value to recursively clone.\n\t * @returns {*} Returns the deep cloned value.\n\t * @see _.clone\n\t * @example\n\t *\n\t * var objects = [{ 'a': 1 }, { 'b': 2 }];\n\t *\n\t * var deep = _.cloneDeep(objects);\n\t * console.log(deep[0] === objects[0]);\n\t * // => false\n\t */\n\tfunction cloneDeep(value) {\n\t return baseClone(value, true, true);\n\t}\n\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(value.length) && !isFunction(value);\n\t}\n\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t return isObjectLike(value) && isArrayLike(value);\n\t}\n\n\t/**\n\t * Checks if `value` is a buffer.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.3.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n\t * @example\n\t *\n\t * _.isBuffer(new Buffer(2));\n\t * // => true\n\t *\n\t * _.isBuffer(new Uint8Array(2));\n\t * // => false\n\t */\n\tvar isBuffer = nativeIsBuffer || stubFalse;\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8-9 which returns 'object' for typed array and other constructors.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n\t}\n\n\t/**\n\t * This method returns a new empty array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {Array} Returns the new empty array.\n\t * @example\n\t *\n\t * var arrays = _.times(2, _.stubArray);\n\t *\n\t * console.log(arrays);\n\t * // => [[], []]\n\t *\n\t * console.log(arrays[0] === arrays[1]);\n\t * // => false\n\t */\n\tfunction stubArray() {\n\t return [];\n\t}\n\n\t/**\n\t * This method returns `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {boolean} Returns `false`.\n\t * @example\n\t *\n\t * _.times(2, _.stubFalse);\n\t * // => [false, false]\n\t */\n\tfunction stubFalse() {\n\t return false;\n\t}\n\n\tmodule.exports = cloneDeep;\n} (lodash_clonedeep, lodash_clonedeepExports));\n\nvar cloneDeep = lodash_clonedeepExports;\n\nfunction applyContextDelta(context, delta, logger) {\r\n try {\r\n if (logger === null || logger === void 0 ? void 0 : logger.canPublish(\"trace\")) {\r\n logger === null || logger === void 0 ? void 0 : logger.trace(\"applying context delta \".concat(JSON.stringify(delta), \" on context \").concat(JSON.stringify(context)));\r\n }\r\n if (!delta) {\r\n return context;\r\n }\r\n if (delta.reset) {\r\n context = __assign({}, delta.reset);\r\n return context;\r\n }\r\n context = deepClone(context, undefined);\r\n if (delta.commands) {\r\n for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) {\r\n var command = _a[_i];\r\n if (command.type === \"remove\") {\r\n deletePath(context, command.path);\r\n }\r\n else if (command.type === \"set\") {\r\n setValueToPath(context, command.value, command.path);\r\n }\r\n }\r\n return context;\r\n }\r\n var added_1 = delta.added;\r\n var updated_1 = delta.updated;\r\n var removed = delta.removed;\r\n if (added_1) {\r\n Object.keys(added_1).forEach(function (key) {\r\n context[key] = added_1[key];\r\n });\r\n }\r\n if (updated_1) {\r\n Object.keys(updated_1).forEach(function (key) {\r\n mergeObjectsProperties(key, context, updated_1);\r\n });\r\n }\r\n if (removed) {\r\n removed.forEach(function (key) {\r\n delete context[key];\r\n });\r\n }\r\n return context;\r\n }\r\n catch (e) {\r\n logger === null || logger === void 0 ? void 0 : logger.error(\"error applying context delta \".concat(JSON.stringify(delta), \" on context \").concat(JSON.stringify(context)), e);\r\n return context;\r\n }\r\n}\r\nfunction deepClone(obj, hash) {\r\n return cloneDeep(obj);\r\n}\r\nvar mergeObjectsProperties = function (key, what, withWhat) {\r\n var right = withWhat[key];\r\n if (right === undefined) {\r\n return what;\r\n }\r\n var left = what[key];\r\n if (!left || !right) {\r\n what[key] = right;\r\n return what;\r\n }\r\n if (typeof left === \"string\" ||\r\n typeof left === \"number\" ||\r\n typeof left === \"boolean\" ||\r\n typeof right === \"string\" ||\r\n typeof right === \"number\" ||\r\n typeof right === \"boolean\" ||\r\n Array.isArray(left) ||\r\n Array.isArray(right)) {\r\n what[key] = right;\r\n return what;\r\n }\r\n what[key] = Object.assign({}, left, right);\r\n return what;\r\n};\r\nfunction deepEqual(x, y) {\r\n if (x === y) {\r\n return true;\r\n }\r\n if (!(x instanceof Object) || !(y instanceof Object)) {\r\n return false;\r\n }\r\n if (x.constructor !== y.constructor) {\r\n return false;\r\n }\r\n for (var p in x) {\r\n if (!x.hasOwnProperty(p)) {\r\n continue;\r\n }\r\n if (!y.hasOwnProperty(p)) {\r\n return false;\r\n }\r\n if (x[p] === y[p]) {\r\n continue;\r\n }\r\n if (typeof (x[p]) !== \"object\") {\r\n return false;\r\n }\r\n if (!deepEqual(x[p], y[p])) {\r\n return false;\r\n }\r\n }\r\n for (var p in y) {\r\n if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction setValueToPath(obj, value, path) {\r\n var pathArr = path.split(\".\");\r\n var i;\r\n for (i = 0; i < pathArr.length - 1; i++) {\r\n if (!obj[pathArr[i]]) {\r\n obj[pathArr[i]] = {};\r\n }\r\n if (typeof obj[pathArr[i]] !== \"object\") {\r\n obj[pathArr[i]] = {};\r\n }\r\n obj = obj[pathArr[i]];\r\n }\r\n obj[pathArr[i]] = value;\r\n}\r\nfunction isSubset(superObj, subObj) {\r\n return Object.keys(subObj).every(function (ele) {\r\n if (typeof subObj[ele] === \"object\") {\r\n return isSubset((superObj === null || superObj === void 0 ? void 0 : superObj[ele]) || {}, subObj[ele] || {});\r\n }\r\n return subObj[ele] === (superObj === null || superObj === void 0 ? void 0 : superObj[ele]);\r\n });\r\n}\r\nfunction deletePath(obj, path) {\r\n var pathArr = path.split(\".\");\r\n var i;\r\n for (i = 0; i < pathArr.length - 1; i++) {\r\n if (!obj[pathArr[i]]) {\r\n return;\r\n }\r\n obj = obj[pathArr[i]];\r\n }\r\n delete obj[pathArr[i]];\r\n}\n\nvar GW3Bridge = (function () {\r\n function GW3Bridge(config) {\r\n var _this = this;\r\n var _a;\r\n this._contextNameToData = {};\r\n this._gw3Subscriptions = [];\r\n this._nextCallbackSubscriptionNumber = 0;\r\n this._creationPromises = {};\r\n this._contextNameToId = {};\r\n this._contextIdToName = {};\r\n this._protocolVersion = undefined;\r\n this._contextsTempCache = {};\r\n this._contextsSubscriptionsCache = [];\r\n this._connection = config.connection;\r\n this._logger = config.logger;\r\n this._trackAllContexts = config.trackAllContexts;\r\n this._reAnnounceKnownContexts = config.reAnnounceKnownContexts;\r\n this._gw3Session = this._connection.domain(\"global\", [\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n ]);\r\n this._gw3Session.disconnected(this.resetState.bind(this));\r\n this._gw3Session.onJoined(function (wasReconnect) {\r\n if (!wasReconnect) {\r\n return;\r\n }\r\n if (!_this._reAnnounceKnownContexts) {\r\n return _this._connection.setLibReAnnounced({ name: \"contexts\" });\r\n }\r\n _this.reInitiateState().then(function () { return _this._connection.setLibReAnnounced({ name: \"contexts\" }); });\r\n });\r\n this.subscribeToContextCreatedMessages();\r\n this.subscribeToContextUpdatedMessages();\r\n this.subscribeToContextDestroyedMessages();\r\n (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) {\r\n var type = message.type;\r\n if (!type) {\r\n return;\r\n }\r\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\r\n type === GW_MESSAGE_CONTEXT_ADDED ||\r\n type === GW_MESSAGE_ACTIVITY_CREATED) {\r\n _this.handleContextCreatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\r\n type === GW_MESSAGE_CONTEXT_UPDATED ||\r\n type === GW_MESSAGE_JOINED_ACTIVITY) {\r\n _this.handleContextUpdatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\r\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n _this.handleContextDestroyedMessage(message);\r\n }\r\n });\r\n }\r\n Object.defineProperty(GW3Bridge.prototype, \"protocolVersion\", {\r\n get: function () {\r\n var _a;\r\n if (!this._protocolVersion) {\r\n var contextsDomainInfo = this._connection.availableDomains.find(function (d) { return d.uri === \"context\"; });\r\n this._protocolVersion = (_a = contextsDomainInfo === null || contextsDomainInfo === void 0 ? void 0 : contextsDomainInfo.version) !== null && _a !== void 0 ? _a : 1;\r\n }\r\n return this._protocolVersion;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(GW3Bridge.prototype, \"setPathSupported\", {\r\n get: function () {\r\n return this.protocolVersion >= 2;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GW3Bridge.prototype.dispose = function () {\r\n for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) {\r\n var sub = _a[_i];\r\n this._connection.off(sub);\r\n }\r\n this._gw3Subscriptions.length = 0;\r\n for (var contextName in this._contextNameToData) {\r\n if (this._contextNameToId.hasOwnProperty(contextName)) {\r\n delete this._contextNameToData[contextName];\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.createContext = function (name, data) {\r\n var _this = this;\r\n if (name in this._creationPromises) {\r\n return this._creationPromises[name];\r\n }\r\n this._creationPromises[name] =\r\n this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_CREATE_CONTEXT,\r\n domain: \"global\",\r\n name: name,\r\n data: data,\r\n lifetime: \"retained\",\r\n })\r\n .then(function (createContextMsg) {\r\n _this._contextNameToId[name] = createContextMsg.context_id;\r\n _this._contextIdToName[createContextMsg.context_id] = name;\r\n var contextData = _this._contextNameToData[name] || new GW3ContextData(createContextMsg.context_id, name, true, undefined);\r\n contextData.isAnnounced = true;\r\n contextData.name = name;\r\n contextData.contextId = createContextMsg.context_id;\r\n contextData.context = createContextMsg.data || deepClone(data);\r\n contextData.hasReceivedSnapshot = true;\r\n _this._contextNameToData[name] = contextData;\r\n delete _this._creationPromises[name];\r\n return createContextMsg.context_id;\r\n });\r\n return this._creationPromises[name];\r\n };\r\n GW3Bridge.prototype.all = function () {\r\n var _this = this;\r\n return Object.keys(this._contextNameToData)\r\n .filter(function (name) { return _this._contextNameToData[name].isAnnounced; });\r\n };\r\n GW3Bridge.prototype.update = function (name, delta) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, currentContext, calculatedDelta;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (delta) {\r\n delta = deepClone(delta);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, this.createContext(name, delta)];\r\n }\r\n currentContext = contextData.context;\r\n if (!!contextData.hasCallbacks()) return [3, 4];\r\n return [4, this.get(contextData.name)];\r\n case 3:\r\n currentContext = _b.sent();\r\n _b.label = 4;\r\n case 4:\r\n calculatedDelta = this.setPathSupported ?\r\n this.calculateContextDeltaV2(currentContext, delta) :\r\n this.calculateContextDeltaV1(currentContext, delta);\r\n if (!Object.keys(calculatedDelta.added).length\r\n && !Object.keys(calculatedDelta.updated).length\r\n && !calculatedDelta.removed.length\r\n && !((_a = calculatedDelta.commands) === null || _a === void 0 ? void 0 : _a.length)) {\r\n return [2, Promise.resolve()];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: calculatedDelta,\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, calculatedDelta, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.set = function (name, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (data) {\r\n data = deepClone(data);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, this.createContext(name, data)];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: { reset: data },\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, {\r\n reset: data,\r\n added: {},\r\n removed: [],\r\n updated: {}\r\n }, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.setPath = function (name, path, value) {\r\n if (!this.setPathSupported) {\r\n return Promise.reject(\"glue.contexts.setPath operation is not supported, use Glue42 3.10 or later\");\r\n }\r\n return this.setPaths(name, [{ path: path, value: value }]);\r\n };\r\n GW3Bridge.prototype.setPaths = function (name, pathValues) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, obj, _i, pathValues_1, pathValue, commands, _a, pathValues_2, pathValue;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.setPathSupported) {\r\n return [2, Promise.reject(\"glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later\")];\r\n }\r\n if (pathValues) {\r\n pathValues = deepClone(pathValues);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n obj = {};\r\n for (_i = 0, pathValues_1 = pathValues; _i < pathValues_1.length; _i++) {\r\n pathValue = pathValues_1[_i];\r\n setValueToPath(obj, pathValue.value, pathValue.path);\r\n }\r\n return [2, this.createContext(name, obj)];\r\n }\r\n commands = [];\r\n for (_a = 0, pathValues_2 = pathValues; _a < pathValues_2.length; _a++) {\r\n pathValue = pathValues_2[_a];\r\n if (pathValue.value === null) {\r\n commands.push({ type: \"remove\", path: pathValue.path });\r\n }\r\n else {\r\n commands.push({ type: \"set\", path: pathValue.path, value: pathValue.value });\r\n }\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: { commands: commands }\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, {\r\n added: {},\r\n removed: [],\r\n updated: {},\r\n commands: commands\r\n }, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.get = function (name) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, context;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, Promise.resolve({})];\r\n }\r\n if (contextData && (!contextData.hasCallbacks() || !contextData.hasReceivedSnapshot)) {\r\n return [2, new Promise(function (resolve) {\r\n _this.subscribe(name, function (data, _d, _r, un) {\r\n _this.unsubscribe(un);\r\n resolve(data);\r\n });\r\n })];\r\n }\r\n context = (_a = contextData === null || contextData === void 0 ? void 0 : contextData.context) !== null && _a !== void 0 ? _a : {};\r\n return [2, Promise.resolve(deepClone(context))];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.subscribe = function (name, callback, subscriptionKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var thisCallbackSubscriptionNumber, contextData, hadCallbacks, clone, clone, clone;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n thisCallbackSubscriptionNumber = typeof subscriptionKey === \"undefined\" ? this._nextCallbackSubscriptionNumber : subscriptionKey;\r\n if (typeof subscriptionKey === \"undefined\") {\r\n this._nextCallbackSubscriptionNumber += 1;\r\n }\r\n if (this._contextsSubscriptionsCache.every(function (subscription) { return subscription.subKey !== _this._nextCallbackSubscriptionNumber; })) {\r\n this._contextsSubscriptionsCache.push({ contextName: name, subKey: thisCallbackSubscriptionNumber, callback: callback });\r\n }\r\n contextData = this._contextNameToData[name];\r\n if (!contextData ||\r\n !contextData.isAnnounced) {\r\n contextData = contextData || new GW3ContextData(undefined, name, false, undefined);\r\n this._contextNameToData[name] = contextData;\r\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n hadCallbacks = contextData.hasCallbacks();\r\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\r\n if (!hadCallbacks) {\r\n if (!contextData.joinedActivity) {\r\n if (contextData.context && contextData.sentExplicitSubscription) {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n return [2, this.sendSubscribe(contextData)\r\n .then(function () { return thisCallbackSubscriptionNumber; })];\r\n }\r\n else {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n }\r\n else {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.unsubscribe = function (subscriptionKey) {\r\n this._contextsSubscriptionsCache = this._contextsSubscriptionsCache.filter(function (subscription) { return subscription.subKey !== subscriptionKey; });\r\n for (var _i = 0, _a = Object.keys(this._contextNameToData); _i < _a.length; _i++) {\r\n var name_1 = _a[_i];\r\n var contextData = this._contextNameToData[name_1];\r\n if (!contextData) {\r\n return;\r\n }\r\n var hadCallbacks = contextData.hasCallbacks();\r\n delete contextData.updateCallbacks[subscriptionKey];\r\n if (contextData.isAnnounced &&\r\n hadCallbacks &&\r\n !contextData.hasCallbacks() &&\r\n contextData.sentExplicitSubscription) {\r\n this.sendUnsubscribe(contextData);\r\n }\r\n if (!contextData.isAnnounced &&\r\n !contextData.hasCallbacks()) {\r\n delete this._contextNameToData[name_1];\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.destroy = function (name) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData) {\r\n return [2, Promise.reject(\"context with \".concat(name, \" does not exist\"))];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_DESTROY_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.handleUpdated = function (contextData, delta, extraData) {\r\n var oldContext = contextData.context;\r\n contextData.context = applyContextDelta(contextData.context, delta, this._logger);\r\n contextData.hasReceivedSnapshot = true;\r\n if (this._contextNameToData[contextData.name] === contextData &&\r\n !deepEqual(oldContext, contextData.context)) {\r\n this.invokeUpdateCallbacks(contextData, delta, extraData);\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextCreatedMessages = function () {\r\n var createdMessageTypes = [\r\n GW_MESSAGE_CONTEXT_ADDED,\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_ACTIVITY_CREATED,\r\n ];\r\n for (var _i = 0, createdMessageTypes_1 = createdMessageTypes; _i < createdMessageTypes_1.length; _i++) {\r\n var createdMessageType = createdMessageTypes_1[_i];\r\n var sub = this._connection.on(createdMessageType, this.handleContextCreatedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextCreatedMessage = function (contextCreatedMsg) {\r\n var _this = this;\r\n var createdMessageType = contextCreatedMsg.type;\r\n if (createdMessageType === GW_MESSAGE_ACTIVITY_CREATED) {\r\n this._contextNameToId[contextCreatedMsg.activity_id] = contextCreatedMsg.context_id;\r\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.activity_id;\r\n }\r\n else if (createdMessageType === GW_MESSAGE_CONTEXT_ADDED) {\r\n this._contextNameToId[contextCreatedMsg.name] = contextCreatedMsg.context_id;\r\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.name;\r\n }\r\n else ;\r\n var name = this._contextIdToName[contextCreatedMsg.context_id];\r\n if (!name) {\r\n throw new Error(\"Received created event for context with unknown name: \" + contextCreatedMsg.context_id);\r\n }\r\n if (!this._contextNameToId[name]) {\r\n throw new Error(\"Received created event for context with unknown id: \" + contextCreatedMsg.context_id);\r\n }\r\n var contextData = this._contextNameToData[name];\r\n if (contextData) {\r\n if (contextData.isAnnounced) {\r\n return;\r\n }\r\n else {\r\n if (!contextData.hasCallbacks()) {\r\n throw new Error(\"Assertion failure: contextData.hasCallbacks()\");\r\n }\r\n contextData.isAnnounced = true;\r\n contextData.contextId = contextCreatedMsg.context_id;\r\n contextData.activityId = contextCreatedMsg.activity_id;\r\n if (!contextData.sentExplicitSubscription) {\r\n this.sendSubscribe(contextData);\r\n }\r\n }\r\n }\r\n else {\r\n this._contextNameToData[name] = contextData =\r\n new GW3ContextData(contextCreatedMsg.context_id, name, true, contextCreatedMsg.activity_id);\r\n if (this._trackAllContexts) {\r\n this.subscribe(name, function () { }).then(function (subKey) { return _this._systemContextsSubKey = subKey; });\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextUpdatedMessages = function () {\r\n var updatedMessageTypes = [\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_JOINED_ACTIVITY,\r\n ];\r\n for (var _i = 0, updatedMessageTypes_1 = updatedMessageTypes; _i < updatedMessageTypes_1.length; _i++) {\r\n var updatedMessageType = updatedMessageTypes_1[_i];\r\n var sub = this._connection.on(updatedMessageType, this.handleContextUpdatedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextUpdatedMessage = function (contextUpdatedMsg) {\r\n var updatedMessageType = contextUpdatedMsg.type;\r\n var contextId = contextUpdatedMsg.context_id;\r\n var contextData = this._contextNameToData[this._contextIdToName[contextId]];\r\n var justSeen = !contextData || !contextData.isAnnounced;\r\n if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\r\n if (!contextData) {\r\n contextData =\r\n this._contextNameToData[contextUpdatedMsg.activity_id] ||\r\n new GW3ContextData(contextId, contextUpdatedMsg.activity_id, true, contextUpdatedMsg.activity_id);\r\n }\r\n this._contextNameToData[contextUpdatedMsg.activity_id] = contextData;\r\n this._contextIdToName[contextId] = contextUpdatedMsg.activity_id;\r\n this._contextNameToId[contextUpdatedMsg.activity_id] = contextId;\r\n contextData.contextId = contextId;\r\n contextData.isAnnounced = true;\r\n contextData.activityId = contextUpdatedMsg.activity_id;\r\n contextData.joinedActivity = true;\r\n }\r\n else {\r\n if (!contextData || !contextData.isAnnounced) {\r\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n contextData = contextData || new GW3ContextData(contextId, contextUpdatedMsg.name, true, undefined);\r\n contextData.sentExplicitSubscription = true;\r\n this._contextNameToData[contextUpdatedMsg.name] = contextData;\r\n this._contextIdToName[contextId] = contextUpdatedMsg.name;\r\n this._contextNameToId[contextUpdatedMsg.name] = contextId;\r\n }\r\n else {\r\n this._logger.error(\"Received 'update' for unknown context: \".concat(contextId));\r\n }\r\n return;\r\n }\r\n }\r\n var oldContext = contextData.context;\r\n contextData.hasReceivedSnapshot = true;\r\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n contextData.context = contextUpdatedMsg.data || {};\r\n }\r\n else if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\r\n contextData.context = contextUpdatedMsg.context_snapshot || {};\r\n }\r\n else if (updatedMessageType === GW_MESSAGE_CONTEXT_UPDATED) {\r\n contextData.context = applyContextDelta(contextData.context, contextUpdatedMsg.delta, this._logger);\r\n }\r\n else {\r\n throw new Error(\"Unrecognized context update message \" + updatedMessageType);\r\n }\r\n if (justSeen ||\r\n !deepEqual(contextData.context, oldContext) ||\r\n updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n this.invokeUpdateCallbacks(contextData, contextUpdatedMsg.delta, { updaterId: contextUpdatedMsg.updater_id });\r\n }\r\n };\r\n GW3Bridge.prototype.invokeUpdateCallbacks = function (contextData, delta, extraData) {\r\n delta = delta || { added: {}, updated: {}, reset: {}, removed: [] };\r\n if (delta.commands) {\r\n delta.added = delta.updated = delta.reset = {};\r\n delta.removed = [];\r\n for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) {\r\n var command = _a[_i];\r\n if (command.type === \"remove\") {\r\n if (command.path.indexOf(\".\") === -1) {\r\n delta.removed.push(command.path);\r\n }\r\n setValueToPath(delta.updated, null, command.path);\r\n }\r\n else if (command.type === \"set\") {\r\n setValueToPath(delta.updated, command.value, command.path);\r\n }\r\n }\r\n }\r\n for (var updateCallbackIndex in contextData.updateCallbacks) {\r\n if (contextData.updateCallbacks.hasOwnProperty(updateCallbackIndex)) {\r\n try {\r\n var updateCallback = contextData.updateCallbacks[updateCallbackIndex];\r\n updateCallback(deepClone(contextData.context), deepClone(Object.assign({}, delta.added || {}, delta.updated || {}, delta.reset || {})), delta.removed, parseInt(updateCallbackIndex, 10), extraData);\r\n }\r\n catch (err) {\r\n this._logger.debug(\"callback error: \" + JSON.stringify(err));\r\n }\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextDestroyedMessages = function () {\r\n var destroyedMessageTypes = [\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_ACTIVITY_DESTROYED,\r\n ];\r\n for (var _i = 0, destroyedMessageTypes_1 = destroyedMessageTypes; _i < destroyedMessageTypes_1.length; _i++) {\r\n var destroyedMessageType = destroyedMessageTypes_1[_i];\r\n var sub = this._connection.on(destroyedMessageType, this.handleContextDestroyedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextDestroyedMessage = function (destroyedMsg) {\r\n var destroyedMessageType = destroyedMsg.type;\r\n var contextId;\r\n var name;\r\n if (destroyedMessageType === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n name = destroyedMsg.activity_id;\r\n contextId = this._contextNameToId[name];\r\n if (!contextId) {\r\n this._logger.error(\"Received 'destroyed' for unknown activity: \".concat(destroyedMsg.activity_id));\r\n return;\r\n }\r\n }\r\n else {\r\n contextId = destroyedMsg.context_id;\r\n name = this._contextIdToName[contextId];\r\n if (!name) {\r\n this._logger.error(\"Received 'destroyed' for unknown context: \".concat(destroyedMsg.context_id));\r\n return;\r\n }\r\n }\r\n delete this._contextIdToName[contextId];\r\n delete this._contextNameToId[name];\r\n var contextData = this._contextNameToData[name];\r\n delete this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n this._logger.error(\"Received 'destroyed' for unknown context: \".concat(contextId));\r\n return;\r\n }\r\n };\r\n GW3Bridge.prototype.sendSubscribe = function (contextData) {\r\n contextData.sentExplicitSubscription = true;\r\n return this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_SUBSCRIBE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; });\r\n };\r\n GW3Bridge.prototype.sendUnsubscribe = function (contextData) {\r\n contextData.sentExplicitSubscription = false;\r\n return this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; });\r\n };\r\n GW3Bridge.prototype.calculateContextDeltaV1 = function (from, to) {\r\n var delta = { added: {}, updated: {}, removed: [], reset: undefined };\r\n if (from) {\r\n for (var _i = 0, _a = Object.keys(from); _i < _a.length; _i++) {\r\n var x = _a[_i];\r\n if (Object.keys(to).indexOf(x) !== -1\r\n && to[x] !== null\r\n && !deepEqual(from[x], to[x])) {\r\n delta.updated[x] = to[x];\r\n }\r\n }\r\n }\r\n for (var _b = 0, _c = Object.keys(to); _b < _c.length; _b++) {\r\n var x = _c[_b];\r\n if (!from || (Object.keys(from).indexOf(x) === -1)) {\r\n if (to[x] !== null) {\r\n delta.added[x] = to[x];\r\n }\r\n }\r\n else if (to[x] === null) {\r\n delta.removed.push(x);\r\n }\r\n }\r\n return delta;\r\n };\r\n GW3Bridge.prototype.calculateContextDeltaV2 = function (from, to) {\r\n var _a, _b;\r\n var delta = { added: {}, updated: {}, removed: [], reset: undefined, commands: [] };\r\n for (var _i = 0, _c = Object.keys(to); _i < _c.length; _i++) {\r\n var x = _c[_i];\r\n if (to[x] !== null) {\r\n var fromX = from ? from[x] : null;\r\n if (!deepEqual(fromX, to[x])) {\r\n (_a = delta.commands) === null || _a === void 0 ? void 0 : _a.push({ type: \"set\", path: x, value: to[x] });\r\n }\r\n }\r\n else {\r\n (_b = delta.commands) === null || _b === void 0 ? void 0 : _b.push({ type: \"remove\", path: x });\r\n }\r\n }\r\n return delta;\r\n };\r\n GW3Bridge.prototype.resetState = function () {\r\n var _this = this;\r\n for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) {\r\n var sub = _a[_i];\r\n this._connection.off(sub);\r\n }\r\n if (this._systemContextsSubKey) {\r\n this.unsubscribe(this._systemContextsSubKey);\r\n delete this._systemContextsSubKey;\r\n }\r\n this._gw3Subscriptions = [];\r\n this._contextNameToId = {};\r\n this._contextIdToName = {};\r\n delete this._protocolVersion;\r\n this._contextsTempCache = Object.keys(this._contextNameToData).reduce(function (cacheSoFar, ctxName) {\r\n cacheSoFar[ctxName] = _this._contextNameToData[ctxName].context;\r\n return cacheSoFar;\r\n }, {});\r\n this._contextNameToData = {};\r\n };\r\n GW3Bridge.prototype.reInitiateState = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _b, _c, _e, _i, ctxName, lastKnownData;\r\n var _this = this;\r\n return __generator(this, function (_f) {\r\n switch (_f.label) {\r\n case 0:\r\n this.subscribeToContextCreatedMessages();\r\n this.subscribeToContextUpdatedMessages();\r\n this.subscribeToContextDestroyedMessages();\r\n (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) {\r\n var type = message.type;\r\n if (!type) {\r\n return;\r\n }\r\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\r\n type === GW_MESSAGE_CONTEXT_ADDED ||\r\n type === GW_MESSAGE_ACTIVITY_CREATED) {\r\n _this.handleContextCreatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\r\n type === GW_MESSAGE_CONTEXT_UPDATED ||\r\n type === GW_MESSAGE_JOINED_ACTIVITY) {\r\n _this.handleContextUpdatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\r\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n _this.handleContextDestroyedMessage(message);\r\n }\r\n });\r\n return [4, Promise.all(this._contextsSubscriptionsCache.map(function (subscription) { return _this.subscribe(subscription.contextName, subscription.callback, subscription.subKey); }))];\r\n case 1:\r\n _f.sent();\r\n return [4, this.flushQueue()];\r\n case 2:\r\n _f.sent();\r\n _b = this._contextsTempCache;\r\n _c = [];\r\n for (_e in _b)\r\n _c.push(_e);\r\n _i = 0;\r\n _f.label = 3;\r\n case 3:\r\n if (!(_i < _c.length)) return [3, 7];\r\n _e = _c[_i];\r\n if (!(_e in _b)) return [3, 6];\r\n ctxName = _e;\r\n if (typeof this._contextsTempCache[ctxName] !== \"object\" || Object.keys(this._contextsTempCache[ctxName]).length === 0) {\r\n return [3, 6];\r\n }\r\n lastKnownData = this._contextsTempCache[ctxName];\r\n this._logger.info(\"Re-announcing known context: \".concat(ctxName));\r\n return [4, this.flushQueue()];\r\n case 4:\r\n _f.sent();\r\n return [4, this.update(ctxName, lastKnownData)];\r\n case 5:\r\n _f.sent();\r\n _f.label = 6;\r\n case 6:\r\n _i++;\r\n return [3, 3];\r\n case 7:\r\n this._contextsTempCache = {};\r\n this._logger.info(\"Contexts are re-announced\");\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.flushQueue = function () {\r\n return new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 0); });\r\n };\r\n return GW3Bridge;\r\n}());\n\nvar ContextsModule = (function () {\r\n function ContextsModule(config) {\r\n this._bridge = new GW3Bridge(config);\r\n }\r\n ContextsModule.prototype.all = function () {\r\n return this._bridge.all();\r\n };\r\n ContextsModule.prototype.update = function (name, data) {\r\n this.checkName(name);\r\n this.checkData(data);\r\n return this._bridge.update(name, data);\r\n };\r\n ContextsModule.prototype.set = function (name, data) {\r\n this.checkName(name);\r\n this.checkData(data);\r\n return this._bridge.set(name, data);\r\n };\r\n ContextsModule.prototype.setPath = function (name, path, data) {\r\n this.checkName(name);\r\n this.checkPath(path);\r\n var isTopLevelPath = path === \"\";\r\n if (isTopLevelPath) {\r\n this.checkData(data);\r\n return this.set(name, data);\r\n }\r\n return this._bridge.setPath(name, path, data);\r\n };\r\n ContextsModule.prototype.setPaths = function (name, paths) {\r\n this.checkName(name);\r\n if (!Array.isArray(paths)) {\r\n throw new Error(\"Please provide the paths as an array of PathValues!\");\r\n }\r\n for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) {\r\n var _a = paths_1[_i], path = _a.path, value = _a.value;\r\n this.checkPath(path);\r\n var isTopLevelPath = path === \"\";\r\n if (isTopLevelPath) {\r\n this.checkData(value);\r\n }\r\n }\r\n return this._bridge.setPaths(name, paths);\r\n };\r\n ContextsModule.prototype.subscribe = function (name, callback) {\r\n var _this = this;\r\n this.checkName(name);\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Please provide the callback as a function!\");\r\n }\r\n return this._bridge\r\n .subscribe(name, function (data, delta, removed, key, extraData) { return callback(data, delta, removed, function () { return _this._bridge.unsubscribe(key); }, extraData); })\r\n .then(function (key) {\r\n return function () {\r\n _this._bridge.unsubscribe(key);\r\n };\r\n });\r\n };\r\n ContextsModule.prototype.get = function (name) {\r\n this.checkName(name);\r\n return this._bridge.get(name);\r\n };\r\n ContextsModule.prototype.ready = function () {\r\n return Promise.resolve(this);\r\n };\r\n ContextsModule.prototype.destroy = function (name) {\r\n this.checkName(name);\r\n return this._bridge.destroy(name);\r\n };\r\n Object.defineProperty(ContextsModule.prototype, \"setPathSupported\", {\r\n get: function () {\r\n return this._bridge.setPathSupported;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ContextsModule.prototype.checkName = function (name) {\r\n if (typeof name !== \"string\" || name === \"\") {\r\n throw new Error(\"Please provide the name as a non-empty string!\");\r\n }\r\n };\r\n ContextsModule.prototype.checkPath = function (path) {\r\n if (typeof path !== \"string\") {\r\n throw new Error(\"Please provide the path as a dot delimited string!\");\r\n }\r\n };\r\n ContextsModule.prototype.checkData = function (data) {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Please provide the data as an object!\");\r\n }\r\n };\r\n return ContextsModule;\r\n}());\n\nfunction promisify (promise, successCallback, errorCallback) {\r\n if (typeof successCallback !== \"function\" && typeof errorCallback !== \"function\") {\r\n return promise;\r\n }\r\n if (typeof successCallback !== \"function\") {\r\n successCallback = function () { };\r\n }\r\n else if (typeof errorCallback !== \"function\") {\r\n errorCallback = function () { };\r\n }\r\n return promise.then(successCallback, errorCallback);\r\n}\n\nfunction rejectAfter(ms, promise, error) {\r\n if (ms === void 0) { ms = 0; }\r\n var timeout;\r\n var clearTimeoutIfThere = function () {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n }\r\n };\r\n promise\r\n .then(function () {\r\n clearTimeoutIfThere();\r\n })\r\n .catch(function () {\r\n clearTimeoutIfThere();\r\n });\r\n return new Promise(function (resolve, reject) {\r\n timeout = setTimeout(function () { return reject(error); }, ms);\r\n });\r\n}\n\nvar InvokeStatus;\r\n(function (InvokeStatus) {\r\n InvokeStatus[InvokeStatus[\"Success\"] = 0] = \"Success\";\r\n InvokeStatus[InvokeStatus[\"Error\"] = 1] = \"Error\";\r\n})(InvokeStatus || (InvokeStatus = {}));\r\nvar Client = (function () {\r\n function Client(protocol, repo, instance, configuration) {\r\n this.protocol = protocol;\r\n this.repo = repo;\r\n this.instance = instance;\r\n this.configuration = configuration;\r\n }\r\n Client.prototype.subscribe = function (method, options, successCallback, errorCallback, existingSub) {\r\n var _this = this;\r\n var callProtocolSubscribe = function (targetServers, stream, successProxy, errorProxy) {\r\n var _a;\r\n options.methodResponseTimeout = (_a = options.methodResponseTimeout) !== null && _a !== void 0 ? _a : options.waitTimeoutMs;\r\n _this.protocol.client.subscribe(stream, options, targetServers, successProxy, errorProxy, existingSub);\r\n };\r\n var promise = new Promise(function (resolve, reject) {\r\n var successProxy = function (sub) {\r\n resolve(sub);\r\n };\r\n var errorProxy = function (err) {\r\n reject(err);\r\n };\r\n if (!method) {\r\n reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\");\r\n return;\r\n }\r\n var methodDef;\r\n if (typeof method === \"string\") {\r\n methodDef = { name: method };\r\n }\r\n else {\r\n methodDef = method;\r\n }\r\n if (!methodDef.name) {\r\n reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\");\r\n return;\r\n }\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n var target = options.target;\r\n if (target === undefined) {\r\n target = \"best\";\r\n }\r\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\") {\r\n reject(new Error(\"\\\"\".concat(target, \"\\\" is not a valid target. Valid targets are \\\"all\\\", \\\"best\\\", or an instance.\")));\r\n return;\r\n }\r\n if (options.methodResponseTimeout === undefined) {\r\n options.methodResponseTimeout = options.method_response_timeout;\r\n if (options.methodResponseTimeout === undefined) {\r\n options.methodResponseTimeout = _this.configuration.methodResponseTimeout;\r\n }\r\n }\r\n if (options.waitTimeoutMs === undefined) {\r\n options.waitTimeoutMs = options.wait_for_method_timeout;\r\n if (options.waitTimeoutMs === undefined) {\r\n options.waitTimeoutMs = _this.configuration.waitTimeoutMs;\r\n }\r\n }\r\n var delayStep = 500;\r\n var delayTillNow = 0;\r\n var currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target);\r\n if (currentServers.length > 0) {\r\n callProtocolSubscribe(currentServers, currentServers[0].methods[0], successProxy, errorProxy);\r\n }\r\n else {\r\n var retry_1 = function () {\r\n if (!target || !(options.waitTimeoutMs)) {\r\n return;\r\n }\r\n delayTillNow += delayStep;\r\n currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target);\r\n if (currentServers.length > 0) {\r\n var streamInfo = currentServers[0].methods[0];\r\n callProtocolSubscribe(currentServers, streamInfo, successProxy, errorProxy);\r\n }\r\n else if (delayTillNow >= options.waitTimeoutMs) {\r\n var def = typeof method === \"string\" ? { name: method } : method;\r\n callProtocolSubscribe(currentServers, def, successProxy, errorProxy);\r\n }\r\n else {\r\n setTimeout(retry_1, delayStep);\r\n }\r\n };\r\n setTimeout(retry_1, delayStep);\r\n }\r\n });\r\n return promisify(promise, successCallback, errorCallback);\r\n };\r\n Client.prototype.servers = function (methodFilter) {\r\n var filterCopy = methodFilter === undefined\r\n ? undefined\r\n : __assign({}, methodFilter);\r\n return this.getServers(filterCopy).map(function (serverMethodMap) {\r\n return serverMethodMap.server.instance;\r\n });\r\n };\r\n Client.prototype.methods = function (methodFilter) {\r\n if (typeof methodFilter === \"string\") {\r\n methodFilter = { name: methodFilter };\r\n }\r\n else {\r\n methodFilter = __assign({}, methodFilter);\r\n }\r\n return this.getMethods(methodFilter);\r\n };\r\n Client.prototype.methodsForInstance = function (instance) {\r\n return this.getMethodsForInstance(instance);\r\n };\r\n Client.prototype.methodAdded = function (callback) {\r\n return this.repo.onMethodAdded(callback);\r\n };\r\n Client.prototype.methodRemoved = function (callback) {\r\n return this.repo.onMethodRemoved(callback);\r\n };\r\n Client.prototype.serverAdded = function (callback) {\r\n return this.repo.onServerAdded(callback);\r\n };\r\n Client.prototype.serverRemoved = function (callback) {\r\n return this.repo.onServerRemoved(function (server, reason) {\r\n callback(server, reason);\r\n });\r\n };\r\n Client.prototype.serverMethodAdded = function (callback) {\r\n return this.repo.onServerMethodAdded(function (server, method) {\r\n callback({ server: server, method: method });\r\n });\r\n };\r\n Client.prototype.serverMethodRemoved = function (callback) {\r\n return this.repo.onServerMethodRemoved(function (server, method) {\r\n callback({ server: server, method: method });\r\n });\r\n };\r\n Client.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var getInvokePromise;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n getInvokePromise = function () { return __awaiter(_this, void 0, void 0, function () {\r\n var methodDefinition, serversMethodMap, method, errorObj, timeout, additionalOptionsCopy, invokePromises, invocationMessages, results, allRejected;\r\n var _this = this;\r\n var _a, _b, _c;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n if (typeof methodFilter === \"string\") {\r\n methodDefinition = { name: methodFilter };\r\n }\r\n else {\r\n methodDefinition = __assign({}, methodFilter);\r\n }\r\n if (!methodDefinition.name) {\r\n return [2, Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\")];\r\n }\r\n if (!argumentObj) {\r\n argumentObj = {};\r\n }\r\n if (!target) {\r\n target = \"best\";\r\n }\r\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\" && target !== \"skipMine\") {\r\n return [2, Promise.reject(new Error(\"\\\"\".concat(target, \"\\\" is not a valid target. Valid targets are \\\"all\\\" and \\\"best\\\".\")))];\r\n }\r\n if (!additionalOptions) {\r\n additionalOptions = {};\r\n }\r\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\r\n additionalOptions.methodResponseTimeoutMs = additionalOptions.method_response_timeout;\r\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\r\n additionalOptions.methodResponseTimeoutMs = this.configuration.methodResponseTimeout;\r\n }\r\n }\r\n if (additionalOptions.waitTimeoutMs === undefined) {\r\n additionalOptions.waitTimeoutMs = additionalOptions.wait_for_method_timeout;\r\n if (additionalOptions.waitTimeoutMs === undefined) {\r\n additionalOptions.waitTimeoutMs = this.configuration.waitTimeoutMs;\r\n }\r\n }\r\n if (additionalOptions.waitTimeoutMs !== undefined && typeof additionalOptions.waitTimeoutMs !== \"number\") {\r\n return [2, Promise.reject(new Error(\"\\\"\".concat(additionalOptions.waitTimeoutMs, \"\\\" is not a valid number for \\\"waitTimeoutMs\\\" \")))];\r\n }\r\n if (typeof argumentObj !== \"object\") {\r\n return [2, Promise.reject(new Error(\"The method arguments must be an object. method: \".concat(methodDefinition.name)))];\r\n }\r\n serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target);\r\n if (!(serversMethodMap.length === 0)) return [3, 4];\r\n _d.label = 1;\r\n case 1:\r\n _d.trys.push([1, 3, , 4]);\r\n return [4, this.tryToAwaitForMethods(methodDefinition, target, additionalOptions)];\r\n case 2:\r\n serversMethodMap = _d.sent();\r\n return [3, 4];\r\n case 3:\r\n _d.sent();\r\n method = __assign(__assign({}, methodDefinition), { getServers: function () { return []; }, supportsStreaming: false, objectTypes: (_a = methodDefinition.objectTypes) !== null && _a !== void 0 ? _a : [], flags: (_c = (_b = methodDefinition.flags) === null || _b === void 0 ? void 0 : _b.metadata) !== null && _c !== void 0 ? _c : {} });\r\n errorObj = {\r\n method: method,\r\n called_with: argumentObj,\r\n message: \"Can not find a method matching \".concat(JSON.stringify(methodFilter), \" with server filter \").concat(JSON.stringify(target)),\r\n executed_by: undefined,\r\n returned: undefined,\r\n status: undefined,\r\n };\r\n return [2, Promise.reject(errorObj)];\r\n case 4:\r\n timeout = additionalOptions.methodResponseTimeoutMs;\r\n additionalOptionsCopy = additionalOptions;\r\n invokePromises = serversMethodMap.map(function (serversMethodPair) {\r\n var invId = shortid();\r\n var method = serversMethodPair.methods[0];\r\n var server = serversMethodPair.server;\r\n var invokePromise = _this.protocol.client.invoke(invId, method, argumentObj, server, additionalOptionsCopy);\r\n return Promise.race([\r\n invokePromise,\r\n rejectAfter(timeout, invokePromise, {\r\n invocationId: invId,\r\n message: \"Invocation timeout (\".concat(timeout, \" ms) reached for method name: \").concat(method === null || method === void 0 ? void 0 : method.name, \", target instance: \").concat(JSON.stringify(server.instance), \", options: \").concat(JSON.stringify(additionalOptionsCopy)),\r\n status: InvokeStatus.Error,\r\n })\r\n ]);\r\n });\r\n return [4, Promise.all(invokePromises)];\r\n case 5:\r\n invocationMessages = _d.sent();\r\n results = this.getInvocationResultObj(invocationMessages, methodDefinition, argumentObj);\r\n allRejected = invocationMessages.every(function (result) { return result.status === InvokeStatus.Error; });\r\n if (allRejected) {\r\n return [2, Promise.reject(results)];\r\n }\r\n return [2, results];\r\n }\r\n });\r\n }); };\r\n return [2, promisify(getInvokePromise(), success, error)];\r\n });\r\n });\r\n };\r\n Client.prototype.getInvocationResultObj = function (invocationResults, method, calledWith) {\r\n var all_return_values = invocationResults\r\n .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Success; })\r\n .reduce(function (allValues, currentValue) {\r\n allValues = __spreadArray(__spreadArray([], allValues, true), [\r\n {\r\n executed_by: currentValue.instance,\r\n returned: currentValue.result,\r\n called_with: calledWith,\r\n method: method,\r\n message: currentValue.message,\r\n status: currentValue.status,\r\n }\r\n ], false);\r\n return allValues;\r\n }, []);\r\n var all_errors = invocationResults\r\n .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Error; })\r\n .reduce(function (allErrors, currError) {\r\n allErrors = __spreadArray(__spreadArray([], allErrors, true), [\r\n {\r\n executed_by: currError.instance,\r\n called_with: calledWith,\r\n name: method.name,\r\n message: currError.message,\r\n }\r\n ], false);\r\n return allErrors;\r\n }, []);\r\n var invResult = invocationResults[0];\r\n var result = {\r\n method: method,\r\n called_with: calledWith,\r\n returned: invResult.result,\r\n executed_by: invResult.instance,\r\n all_return_values: all_return_values,\r\n all_errors: all_errors,\r\n message: invResult.message,\r\n status: invResult.status\r\n };\r\n return result;\r\n };\r\n Client.prototype.tryToAwaitForMethods = function (methodDefinition, target, additionalOptions) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n if (additionalOptions.waitTimeoutMs === 0) {\r\n reject();\r\n return;\r\n }\r\n var delayStep = 500;\r\n var delayTillNow = 0;\r\n var retry = function () {\r\n delayTillNow += delayStep;\r\n var serversMethodMap = _this.getServerMethodsByFilterAndTarget(methodDefinition, target);\r\n if (serversMethodMap.length > 0) {\r\n clearInterval(interval);\r\n resolve(serversMethodMap);\r\n }\r\n else if (delayTillNow >= (additionalOptions.waitTimeoutMs || 10000)) {\r\n clearInterval(interval);\r\n reject();\r\n return;\r\n }\r\n };\r\n var interval = setInterval(retry, delayStep);\r\n });\r\n };\r\n Client.prototype.filterByTarget = function (target, serverMethodMap) {\r\n var _this = this;\r\n if (typeof target === \"string\") {\r\n if (target === \"all\") {\r\n return __spreadArray([], serverMethodMap, true);\r\n }\r\n else if (target === \"best\") {\r\n var localMachine = serverMethodMap\r\n .find(function (s) { return s.server.instance.isLocal; });\r\n if (localMachine) {\r\n return [localMachine];\r\n }\r\n if (serverMethodMap[0] !== undefined) {\r\n return [serverMethodMap[0]];\r\n }\r\n }\r\n else if (target === \"skipMine\") {\r\n return serverMethodMap.filter(function (_a) {\r\n var server = _a.server;\r\n return server.instance.peerId !== _this.instance.peerId;\r\n });\r\n }\r\n }\r\n else {\r\n var targetArray = void 0;\r\n if (!Array.isArray(target)) {\r\n targetArray = [target];\r\n }\r\n else {\r\n targetArray = target;\r\n }\r\n var allServersMatching = targetArray.reduce(function (matches, filter) {\r\n var myMatches = serverMethodMap.filter(function (serverMethodPair) {\r\n return _this.instanceMatch(filter, serverMethodPair.server.instance);\r\n });\r\n return matches.concat(myMatches);\r\n }, []);\r\n return allServersMatching;\r\n }\r\n return [];\r\n };\r\n Client.prototype.instanceMatch = function (instanceFilter, instanceDefinition) {\r\n return this.containsProps(instanceFilter, instanceDefinition);\r\n };\r\n Client.prototype.methodMatch = function (methodFilter, methodDefinition) {\r\n return this.containsProps(methodFilter, methodDefinition);\r\n };\r\n Client.prototype.containsProps = function (filter, repoMethod) {\r\n var filterProps = Object.keys(filter)\r\n .filter(function (prop) {\r\n return filter[prop] !== undefined\r\n && filter[prop] !== null\r\n && typeof filter[prop] !== \"function\"\r\n && prop !== \"object_types\"\r\n && prop !== \"display_name\"\r\n && prop !== \"id\"\r\n && prop !== \"gatewayId\"\r\n && prop !== \"identifier\"\r\n && prop[0] !== \"_\";\r\n });\r\n return filterProps.every(function (prop) {\r\n var isMatch;\r\n var filterValue = filter[prop];\r\n var repoMethodValue = repoMethod[prop];\r\n switch (prop) {\r\n case \"objectTypes\":\r\n isMatch = (filterValue || []).every(function (filterValueEl) {\r\n return (repoMethodValue || []).includes(filterValueEl);\r\n });\r\n break;\r\n case \"flags\":\r\n isMatch = isSubset(repoMethodValue || {}, filterValue || {});\r\n break;\r\n default:\r\n isMatch = String(filterValue).toLowerCase() === String(repoMethodValue).toLowerCase();\r\n }\r\n return isMatch;\r\n });\r\n };\r\n Client.prototype.getMethods = function (methodFilter) {\r\n var _this = this;\r\n if (methodFilter === undefined) {\r\n return this.repo.getMethods();\r\n }\r\n var methods = this.repo.getMethods().filter(function (method) {\r\n return _this.methodMatch(methodFilter, method);\r\n });\r\n return methods;\r\n };\r\n Client.prototype.getMethodsForInstance = function (instanceFilter) {\r\n var _this = this;\r\n var allServers = this.repo.getServers();\r\n var matchingServers = allServers.filter(function (server) {\r\n return _this.instanceMatch(instanceFilter, server.instance);\r\n });\r\n if (matchingServers.length === 0) {\r\n return [];\r\n }\r\n var resultMethodsObject = {};\r\n if (matchingServers.length === 1) {\r\n resultMethodsObject = matchingServers[0].methods;\r\n }\r\n else {\r\n matchingServers.forEach(function (server) {\r\n Object.keys(server.methods).forEach(function (methodKey) {\r\n var method = server.methods[methodKey];\r\n resultMethodsObject[method.identifier] = method;\r\n });\r\n });\r\n }\r\n return Object.keys(resultMethodsObject)\r\n .map(function (key) {\r\n return resultMethodsObject[key];\r\n });\r\n };\r\n Client.prototype.getServers = function (methodFilter) {\r\n var _this = this;\r\n var servers = this.repo.getServers();\r\n if (methodFilter === undefined) {\r\n return servers.map(function (server) {\r\n return { server: server, methods: [] };\r\n });\r\n }\r\n return servers.reduce(function (prev, current) {\r\n var methodsForServer = Object.values(current.methods);\r\n var matchingMethods = methodsForServer.filter(function (method) {\r\n return _this.methodMatch(methodFilter, method);\r\n });\r\n if (matchingMethods.length > 0) {\r\n prev.push({ server: current, methods: matchingMethods });\r\n }\r\n return prev;\r\n }, []);\r\n };\r\n Client.prototype.getServerMethodsByFilterAndTarget = function (methodFilter, target) {\r\n var serversMethodMap = this.getServers(methodFilter);\r\n return this.filterByTarget(target, serversMethodMap);\r\n };\r\n return Client;\r\n}());\n\nvar ServerSubscription = (function () {\r\n function ServerSubscription(protocol, repoMethod, subscription) {\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n this.subscription = subscription;\r\n }\r\n Object.defineProperty(ServerSubscription.prototype, \"stream\", {\r\n get: function () {\r\n if (!this.repoMethod.stream) {\r\n throw new Error(\"no stream\");\r\n }\r\n return this.repoMethod.stream;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"arguments\", {\r\n get: function () { return this.subscription.arguments || {}; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"branchKey\", {\r\n get: function () { return this.subscription.branchKey; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"instance\", {\r\n get: function () {\r\n if (!this.subscription.instance) {\r\n throw new Error(\"no instance\");\r\n }\r\n return this.subscription.instance;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ServerSubscription.prototype.close = function () {\r\n this.protocol.server.closeSingleSubscription(this.repoMethod, this.subscription);\r\n };\r\n ServerSubscription.prototype.push = function (data) {\r\n this.protocol.server.pushDataToSingle(this.repoMethod, this.subscription, data);\r\n };\r\n return ServerSubscription;\r\n}());\n\nvar Request = (function () {\r\n function Request(protocol, repoMethod, requestContext) {\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n this.requestContext = requestContext;\r\n this.arguments = requestContext.arguments;\r\n this.instance = requestContext.instance;\r\n }\r\n Request.prototype.accept = function () {\r\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, \"\");\r\n };\r\n Request.prototype.acceptOnBranch = function (branch) {\r\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, branch);\r\n };\r\n Request.prototype.reject = function (reason) {\r\n this.protocol.server.rejectRequest(this.requestContext, this.repoMethod, reason);\r\n };\r\n return Request;\r\n}());\n\nvar ServerStreaming$1 = (function () {\r\n function ServerStreaming(protocol, server) {\r\n var _this = this;\r\n this.protocol = protocol;\r\n this.server = server;\r\n protocol.server.onSubRequest(function (rc, rm) { return _this.handleSubRequest(rc, rm); });\r\n protocol.server.onSubAdded(function (sub, rm) { return _this.handleSubAdded(sub, rm); });\r\n protocol.server.onSubRemoved(function (sub, rm) { return _this.handleSubRemoved(sub, rm); });\r\n }\r\n ServerStreaming.prototype.handleSubRequest = function (requestContext, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionRequestHandler === \"function\")) {\r\n return;\r\n }\r\n var request = new Request(this.protocol, repoMethod, requestContext);\r\n repoMethod.streamCallbacks.subscriptionRequestHandler(request);\r\n };\r\n ServerStreaming.prototype.handleSubAdded = function (subscription, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionAddedHandler === \"function\")) {\r\n return;\r\n }\r\n var sub = new ServerSubscription(this.protocol, repoMethod, subscription);\r\n repoMethod.streamCallbacks.subscriptionAddedHandler(sub);\r\n };\r\n ServerStreaming.prototype.handleSubRemoved = function (subscription, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionRemovedHandler === \"function\")) {\r\n return;\r\n }\r\n var sub = new ServerSubscription(this.protocol, repoMethod, subscription);\r\n repoMethod.streamCallbacks.subscriptionRemovedHandler(sub);\r\n };\r\n return ServerStreaming;\r\n}());\n\nvar ServerBranch = (function () {\r\n function ServerBranch(key, protocol, repoMethod) {\r\n this.key = key;\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n }\r\n ServerBranch.prototype.subscriptions = function () {\r\n var _this = this;\r\n var subList = this.protocol.server.getSubscriptionList(this.repoMethod, this.key);\r\n return subList.map(function (sub) {\r\n return new ServerSubscription(_this.protocol, _this.repoMethod, sub);\r\n });\r\n };\r\n ServerBranch.prototype.close = function () {\r\n this.protocol.server.closeAllSubscriptions(this.repoMethod, this.key);\r\n };\r\n ServerBranch.prototype.push = function (data) {\r\n this.protocol.server.pushData(this.repoMethod, data, [this.key]);\r\n };\r\n return ServerBranch;\r\n}());\n\nvar ServerStream = (function () {\r\n function ServerStream(_protocol, _repoMethod, _server) {\r\n this._protocol = _protocol;\r\n this._repoMethod = _repoMethod;\r\n this._server = _server;\r\n this.name = this._repoMethod.definition.name;\r\n }\r\n ServerStream.prototype.branches = function (key) {\r\n var _this = this;\r\n var bList = this._protocol.server.getBranchList(this._repoMethod);\r\n if (key) {\r\n if (bList.indexOf(key) > -1) {\r\n return new ServerBranch(key, this._protocol, this._repoMethod);\r\n }\r\n return undefined;\r\n }\r\n else {\r\n return bList.map(function (branchKey) {\r\n return new ServerBranch(branchKey, _this._protocol, _this._repoMethod);\r\n });\r\n }\r\n };\r\n ServerStream.prototype.branch = function (key) {\r\n return this.branches(key);\r\n };\r\n ServerStream.prototype.subscriptions = function () {\r\n var _this = this;\r\n var subList = this._protocol.server.getSubscriptionList(this._repoMethod);\r\n return subList.map(function (sub) {\r\n return new ServerSubscription(_this._protocol, _this._repoMethod, sub);\r\n });\r\n };\r\n Object.defineProperty(ServerStream.prototype, \"definition\", {\r\n get: function () {\r\n var _a;\r\n var def2 = this._repoMethod.definition;\r\n return {\r\n accepts: def2.accepts,\r\n description: def2.description,\r\n displayName: def2.displayName,\r\n name: def2.name,\r\n objectTypes: def2.objectTypes,\r\n returns: def2.returns,\r\n supportsStreaming: def2.supportsStreaming,\r\n flags: (_a = def2.flags) === null || _a === void 0 ? void 0 : _a.metadata,\r\n };\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ServerStream.prototype.close = function () {\r\n this._protocol.server.closeAllSubscriptions(this._repoMethod);\r\n this._server.unregister(this._repoMethod.definition, true);\r\n };\r\n ServerStream.prototype.push = function (data, branches) {\r\n if (typeof branches !== \"string\" && !Array.isArray(branches) && branches !== undefined) {\r\n throw new Error(\"invalid branches should be string or string array\");\r\n }\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n this._protocol.server.pushData(this._repoMethod, data, branches);\r\n };\r\n ServerStream.prototype.updateRepoMethod = function (repoMethod) {\r\n this._repoMethod = repoMethod;\r\n };\r\n return ServerStream;\r\n}());\n\nvar Server = (function () {\r\n function Server(protocol, serverRepository) {\r\n this.protocol = protocol;\r\n this.serverRepository = serverRepository;\r\n this.invocations = 0;\r\n this.currentlyUnregistering = {};\r\n this.streaming = new ServerStreaming$1(protocol, this);\r\n this.protocol.server.onInvoked(this.onMethodInvoked.bind(this));\r\n }\r\n Server.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback, existingStream) {\r\n var _this = this;\r\n var promise = new Promise(function (resolve, reject) {\r\n if (!streamDef) {\r\n reject(\"The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream.\");\r\n return;\r\n }\r\n var streamMethodDefinition;\r\n if (typeof streamDef === \"string\") {\r\n streamMethodDefinition = { name: \"\" + streamDef };\r\n }\r\n else {\r\n streamMethodDefinition = __assign({}, streamDef);\r\n }\r\n if (!streamMethodDefinition.name) {\r\n return reject(\"The \\u201Cname\\u201D property is required for the \\u201CstreamDefinition\\u201D object and must be unique. Stream definition: \".concat(JSON.stringify(streamMethodDefinition)));\r\n }\r\n var nameAlreadyExists = _this.serverRepository.getList()\r\n .some(function (serverMethod) { return serverMethod.definition.name === streamMethodDefinition.name; });\r\n if (nameAlreadyExists) {\r\n return reject(\"A stream with the name \\\"\".concat(streamMethodDefinition.name, \"\\\" already exists! Please, provide a unique name for the stream.\"));\r\n }\r\n streamMethodDefinition.supportsStreaming = true;\r\n if (!callbacks) {\r\n callbacks = {};\r\n }\r\n if (typeof callbacks.subscriptionRequestHandler !== \"function\") {\r\n callbacks.subscriptionRequestHandler = function (request) {\r\n request.accept();\r\n };\r\n }\r\n var repoMethod = _this.serverRepository.add({\r\n definition: streamMethodDefinition,\r\n streamCallbacks: callbacks,\r\n protocolState: {},\r\n });\r\n _this.protocol.server.createStream(repoMethod)\r\n .then(function () {\r\n var streamUserObject;\r\n if (existingStream) {\r\n streamUserObject = existingStream;\r\n existingStream.updateRepoMethod(repoMethod);\r\n }\r\n else {\r\n streamUserObject = new ServerStream(_this.protocol, repoMethod, _this);\r\n }\r\n repoMethod.stream = streamUserObject;\r\n resolve(streamUserObject);\r\n })\r\n .catch(function (err) {\r\n if (repoMethod.repoId) {\r\n _this.serverRepository.remove(repoMethod.repoId);\r\n }\r\n reject(err);\r\n });\r\n });\r\n return promisify(promise, successCallback, errorCallback);\r\n };\r\n Server.prototype.register = function (methodDefinition, callback) {\r\n var _this = this;\r\n if (!methodDefinition) {\r\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\r\n }\r\n if (typeof callback !== \"function\") {\r\n return Promise.reject(\"The second parameter must be a callback function. Method: \".concat(typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name));\r\n }\r\n var wrappedCallbackFunction = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () {\r\n var result, resultValue, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 4, , 5]);\r\n result = callback(context.args, context.instance);\r\n if (!(result && typeof result.then === \"function\")) return [3, 2];\r\n return [4, result];\r\n case 1:\r\n resultValue = _a.sent();\r\n resultCallback(undefined, resultValue);\r\n return [3, 3];\r\n case 2:\r\n resultCallback(undefined, result);\r\n _a.label = 3;\r\n case 3: return [3, 5];\r\n case 4:\r\n e_1 = _a.sent();\r\n resultCallback(e_1 !== null && e_1 !== void 0 ? e_1 : \"\", e_1 !== null && e_1 !== void 0 ? e_1 : \"\");\r\n return [3, 5];\r\n case 5: return [2];\r\n }\r\n });\r\n }); };\r\n wrappedCallbackFunction.userCallback = callback;\r\n return this.registerCore(methodDefinition, wrappedCallbackFunction);\r\n };\r\n Server.prototype.registerAsync = function (methodDefinition, callback) {\r\n var _this = this;\r\n if (!methodDefinition) {\r\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\r\n }\r\n if (typeof callback !== \"function\") {\r\n return Promise.reject(\"The second parameter must be a callback function. Method: \".concat(typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name));\r\n }\r\n var wrappedCallback = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () {\r\n var resultCalled_1, success, error, methodResult;\r\n return __generator(this, function (_a) {\r\n try {\r\n resultCalled_1 = false;\r\n success = function (result) {\r\n if (!resultCalled_1) {\r\n resultCallback(undefined, result);\r\n }\r\n resultCalled_1 = true;\r\n };\r\n error = function (e) {\r\n if (!resultCalled_1) {\r\n if (!e) {\r\n e = \"\";\r\n }\r\n resultCallback(e, e);\r\n }\r\n resultCalled_1 = true;\r\n };\r\n methodResult = callback(context.args, context.instance, success, error);\r\n if (methodResult && typeof methodResult.then === \"function\") {\r\n methodResult\r\n .then(success)\r\n .catch(error);\r\n }\r\n }\r\n catch (e) {\r\n resultCallback(e, undefined);\r\n }\r\n return [2];\r\n });\r\n }); };\r\n wrappedCallback.userCallbackAsync = callback;\r\n return this.registerCore(methodDefinition, wrappedCallback);\r\n };\r\n Server.prototype.unregister = function (methodFilter, forStream) {\r\n if (forStream === void 0) { forStream = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodDefinition, methodToBeRemoved;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (methodFilter === undefined) {\r\n return [2, Promise.reject(\"Please, provide either a unique string for a name or an object containing a “name” property.\")];\r\n }\r\n if (!(typeof methodFilter === \"function\")) return [3, 2];\r\n return [4, this.unregisterWithPredicate(methodFilter, forStream)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n case 2:\r\n if (typeof methodFilter === \"string\") {\r\n methodDefinition = { name: methodFilter };\r\n }\r\n else {\r\n methodDefinition = methodFilter;\r\n }\r\n if (methodDefinition.name === undefined) {\r\n return [2, Promise.reject(\"Method name is required. Cannot find a method if the method name is undefined!\")];\r\n }\r\n methodToBeRemoved = this.serverRepository.getList().find(function (serverMethod) {\r\n return serverMethod.definition.name === methodDefinition.name\r\n && (serverMethod.definition.supportsStreaming || false) === forStream;\r\n });\r\n if (!methodToBeRemoved) {\r\n return [2, Promise.reject(\"Method with a name \\\"\".concat(methodDefinition.name, \"\\\" does not exist or is not registered by your application!\"))];\r\n }\r\n return [4, this.removeMethodsOrStreams([methodToBeRemoved])];\r\n case 3:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.unregisterWithPredicate = function (filterPredicate, forStream) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodsOrStreamsToRemove;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n methodsOrStreamsToRemove = this.serverRepository.getList()\r\n .filter(function (sm) { return filterPredicate(sm.definition); })\r\n .filter(function (serverMethod) {\r\n return (serverMethod.definition.supportsStreaming || false) === forStream;\r\n });\r\n if (!methodsOrStreamsToRemove || methodsOrStreamsToRemove.length === 0) {\r\n return [2, Promise.reject(\"Could not find a \".concat(forStream ? \"stream\" : \"method\", \" matching the specified condition!\"))];\r\n }\r\n return [4, this.removeMethodsOrStreams(methodsOrStreamsToRemove)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.removeMethodsOrStreams = function (methodsToRemove) {\r\n var _this = this;\r\n var methodUnregPromises = [];\r\n methodsToRemove.forEach(function (method) {\r\n var promise = _this.protocol.server.unregister(method)\r\n .then(function () {\r\n if (method.repoId) {\r\n _this.serverRepository.remove(method.repoId);\r\n }\r\n });\r\n methodUnregPromises.push(promise);\r\n _this.addAsCurrentlyUnregistering(method.definition.name, promise);\r\n });\r\n return Promise.all(methodUnregPromises);\r\n };\r\n Server.prototype.addAsCurrentlyUnregistering = function (methodName, promise) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var timeout;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n timeout = new Promise(function (resolve) { return setTimeout(resolve, 5000); });\r\n this.currentlyUnregistering[methodName] = Promise.race([promise, timeout]).then(function () {\r\n delete _this.currentlyUnregistering[methodName];\r\n });\r\n return [2];\r\n });\r\n });\r\n };\r\n Server.prototype.registerCore = function (method, theFunction) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodDefinition, unregisterInProgress, nameAlreadyExists, repoMethod;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (typeof method === \"string\") {\r\n methodDefinition = { name: \"\" + method };\r\n }\r\n else {\r\n methodDefinition = __assign({}, method);\r\n }\r\n if (!methodDefinition.name) {\r\n return [2, Promise.reject(\"Please, provide a (unique) string value for the \\u201Cname\\u201D property in the \\u201CmethodDefinition\\u201D object: \".concat(JSON.stringify(method)))];\r\n }\r\n unregisterInProgress = this.currentlyUnregistering[methodDefinition.name];\r\n if (!(typeof unregisterInProgress !== \"undefined\")) return [3, 2];\r\n return [4, unregisterInProgress];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n nameAlreadyExists = this.serverRepository.getList()\r\n .some(function (serverMethod) { return serverMethod.definition.name === methodDefinition.name; });\r\n if (nameAlreadyExists) {\r\n return [2, Promise.reject(\"A method with the name \\\"\".concat(methodDefinition.name, \"\\\" already exists! Please, provide a unique name for the method.\"))];\r\n }\r\n if (methodDefinition.supportsStreaming) {\r\n return [2, Promise.reject(\"When you create methods with \\u201Cglue.interop.register()\\u201D or \\u201Cglue.interop.registerAsync()\\u201D the property \\u201CsupportsStreaming\\u201D cannot be \\u201Ctrue\\u201D. If you want \\u201C\".concat(methodDefinition.name, \"\\u201D to be a stream, please use the \\u201Cglue.interop.createStream()\\u201D method.\"))];\r\n }\r\n repoMethod = this.serverRepository.add({\r\n definition: methodDefinition,\r\n theFunction: theFunction,\r\n protocolState: {},\r\n });\r\n return [2, this.protocol.server.register(repoMethod)\r\n .catch(function (err) {\r\n if (repoMethod === null || repoMethod === void 0 ? void 0 : repoMethod.repoId) {\r\n _this.serverRepository.remove(repoMethod.repoId);\r\n }\r\n throw err;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.onMethodInvoked = function (methodToExecute, invocationId, invocationArgs) {\r\n var _this = this;\r\n if (!methodToExecute || !methodToExecute.theFunction) {\r\n return;\r\n }\r\n methodToExecute.theFunction(invocationArgs, function (err, result) {\r\n if (err !== undefined && err !== null) {\r\n if (err.message && typeof err.message === \"string\") {\r\n err = err.message;\r\n }\r\n else if (typeof err !== \"string\") {\r\n try {\r\n err = JSON.stringify(err);\r\n }\r\n catch (unStrException) {\r\n err = \"un-stringifyable error in onMethodInvoked! Top level prop names: \".concat(Object.keys(err));\r\n }\r\n }\r\n }\r\n if (!result) {\r\n result = {};\r\n }\r\n else if (typeof result !== \"object\" || Array.isArray(result)) {\r\n result = { _value: result };\r\n }\r\n _this.protocol.server.methodInvocationResult(methodToExecute, invocationId, err, result);\r\n });\r\n };\r\n return Server;\r\n}());\n\nvar InstanceWrapper = (function () {\r\n function InstanceWrapper(API, instance, connection) {\r\n var _this = this;\r\n this.wrapped = {};\r\n this.wrapped.getMethods = function () {\r\n return API.methodsForInstance(this);\r\n };\r\n this.wrapped.getStreams = function () {\r\n return API.methodsForInstance(this).filter(function (m) { return m.supportsStreaming; });\r\n };\r\n if (instance) {\r\n this.refreshWrappedObject(instance);\r\n }\r\n if (connection) {\r\n connection.loggedIn(function () {\r\n _this.refresh(connection);\r\n });\r\n this.refresh(connection);\r\n }\r\n }\r\n InstanceWrapper.prototype.unwrap = function () {\r\n return this.wrapped;\r\n };\r\n InstanceWrapper.prototype.refresh = function (connection) {\r\n if (!connection) {\r\n return;\r\n }\r\n var resolvedIdentity = connection === null || connection === void 0 ? void 0 : connection.resolvedIdentity;\r\n var instance = Object.assign({}, resolvedIdentity !== null && resolvedIdentity !== void 0 ? resolvedIdentity : {}, { peerId: connection === null || connection === void 0 ? void 0 : connection.peerId });\r\n this.refreshWrappedObject(instance);\r\n };\r\n InstanceWrapper.prototype.refreshWrappedObject = function (resolvedIdentity) {\r\n var _this = this;\r\n var _a, _b, _c, _d;\r\n Object.keys(resolvedIdentity).forEach(function (key) {\r\n _this.wrapped[key] = resolvedIdentity[key];\r\n });\r\n this.wrapped.user = resolvedIdentity.user;\r\n this.wrapped.instance = resolvedIdentity.instance;\r\n this.wrapped.application = (_a = resolvedIdentity.application) !== null && _a !== void 0 ? _a : shortid();\r\n this.wrapped.applicationName = resolvedIdentity.applicationName;\r\n this.wrapped.pid = (_c = (_b = resolvedIdentity.pid) !== null && _b !== void 0 ? _b : resolvedIdentity.process) !== null && _c !== void 0 ? _c : Math.floor(Math.random() * 10000000000);\r\n this.wrapped.machine = resolvedIdentity.machine;\r\n this.wrapped.environment = resolvedIdentity.environment;\r\n this.wrapped.region = resolvedIdentity.region;\r\n this.wrapped.windowId = resolvedIdentity.windowId;\r\n this.wrapped.isLocal = (_d = resolvedIdentity.isLocal) !== null && _d !== void 0 ? _d : true;\r\n this.wrapped.api = resolvedIdentity.api;\r\n this.wrapped.service = resolvedIdentity.service;\r\n this.wrapped.peerId = resolvedIdentity.peerId;\r\n };\r\n return InstanceWrapper;\r\n}());\n\nvar hideMethodSystemFlags = function (method) {\r\n return __assign(__assign({}, method), { flags: method.flags.metadata || {} });\r\n};\r\nvar ClientRepository = (function () {\r\n function ClientRepository(logger, API) {\r\n this.logger = logger;\r\n this.API = API;\r\n this.servers = {};\r\n this.methodsCount = {};\r\n this.callbacks = lib$1();\r\n var peerId = this.API.instance.peerId;\r\n this.myServer = {\r\n id: peerId,\r\n methods: {},\r\n instance: this.API.instance,\r\n wrapper: this.API.unwrappedInstance,\r\n };\r\n this.servers[peerId] = this.myServer;\r\n }\r\n ClientRepository.prototype.addServer = function (info, serverId) {\r\n this.logger.debug(\"adding server \".concat(serverId));\r\n var current = this.servers[serverId];\r\n if (current) {\r\n return current.id;\r\n }\r\n var wrapper = new InstanceWrapper(this.API, info);\r\n var serverEntry = {\r\n id: serverId,\r\n methods: {},\r\n instance: wrapper.unwrap(),\r\n wrapper: wrapper,\r\n };\r\n this.servers[serverId] = serverEntry;\r\n this.callbacks.execute(\"onServerAdded\", serverEntry.instance);\r\n return serverId;\r\n };\r\n ClientRepository.prototype.removeServerById = function (id, reason) {\r\n var _this = this;\r\n var server = this.servers[id];\r\n if (!server) {\r\n this.logger.warn(\"not aware of server \".concat(id, \", my state \").concat(JSON.stringify(Object.keys(this.servers))));\r\n return;\r\n }\r\n else {\r\n this.logger.debug(\"removing server \".concat(id));\r\n }\r\n Object.keys(server.methods).forEach(function (methodId) {\r\n _this.removeServerMethod(id, methodId);\r\n });\r\n delete this.servers[id];\r\n this.callbacks.execute(\"onServerRemoved\", server.instance, reason);\r\n };\r\n ClientRepository.prototype.addServerMethod = function (serverId, method) {\r\n var _a;\r\n var server = this.servers[serverId];\r\n if (!server) {\r\n throw new Error(\"server does not exists\");\r\n }\r\n if (server.methods[method.id]) {\r\n return;\r\n }\r\n var identifier = this.createMethodIdentifier(method);\r\n var that = this;\r\n var methodDefinition = {\r\n identifier: identifier,\r\n gatewayId: method.id,\r\n name: method.name,\r\n displayName: method.display_name,\r\n description: method.description,\r\n version: method.version,\r\n objectTypes: method.object_types || [],\r\n accepts: method.input_signature,\r\n returns: method.result_signature,\r\n supportsStreaming: typeof method.flags !== \"undefined\" ? method.flags.streaming : false,\r\n flags: (_a = method.flags) !== null && _a !== void 0 ? _a : {},\r\n getServers: function () {\r\n return that.getServersByMethod(identifier);\r\n }\r\n };\r\n methodDefinition.object_types = methodDefinition.objectTypes;\r\n methodDefinition.display_name = methodDefinition.displayName;\r\n methodDefinition.version = methodDefinition.version;\r\n server.methods[method.id] = methodDefinition;\r\n var clientMethodDefinition = hideMethodSystemFlags(methodDefinition);\r\n if (!this.methodsCount[identifier]) {\r\n this.methodsCount[identifier] = 0;\r\n this.callbacks.execute(\"onMethodAdded\", clientMethodDefinition);\r\n }\r\n this.methodsCount[identifier] = this.methodsCount[identifier] + 1;\r\n this.callbacks.execute(\"onServerMethodAdded\", server.instance, clientMethodDefinition);\r\n return methodDefinition;\r\n };\r\n ClientRepository.prototype.removeServerMethod = function (serverId, methodId) {\r\n var server = this.servers[serverId];\r\n if (!server) {\r\n throw new Error(\"server does not exists\");\r\n }\r\n var method = server.methods[methodId];\r\n delete server.methods[methodId];\r\n var clientMethodDefinition = hideMethodSystemFlags(method);\r\n this.methodsCount[method.identifier] = this.methodsCount[method.identifier] - 1;\r\n if (this.methodsCount[method.identifier] === 0) {\r\n this.callbacks.execute(\"onMethodRemoved\", clientMethodDefinition);\r\n }\r\n this.callbacks.execute(\"onServerMethodRemoved\", server.instance, clientMethodDefinition);\r\n };\r\n ClientRepository.prototype.getMethods = function () {\r\n return this.extractMethodsFromServers(Object.values(this.servers)).map(hideMethodSystemFlags);\r\n };\r\n ClientRepository.prototype.getServers = function () {\r\n return Object.values(this.servers).map(this.hideServerMethodSystemFlags);\r\n };\r\n ClientRepository.prototype.onServerAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerAdded\", callback);\r\n var serversWithMethodsToReplay = this.getServers().map(function (s) { return s.instance; });\r\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, serversWithMethodsToReplay, callback);\r\n };\r\n ClientRepository.prototype.onMethodAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onMethodAdded\", callback);\r\n var methodsToReplay = this.getMethods();\r\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, methodsToReplay, callback);\r\n };\r\n ClientRepository.prototype.onServerMethodAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerMethodAdded\", callback);\r\n var unsubCalled = false;\r\n var servers = this.getServers();\r\n setTimeout(function () {\r\n servers.forEach(function (server) {\r\n var methods = server.methods;\r\n Object.keys(methods).forEach(function (methodId) {\r\n if (!unsubCalled) {\r\n callback(server.instance, methods[methodId]);\r\n }\r\n });\r\n });\r\n }, 0);\r\n return function () {\r\n unsubCalled = true;\r\n unsubscribeFunc();\r\n };\r\n };\r\n ClientRepository.prototype.onMethodRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onMethodRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.onServerRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.onServerMethodRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerMethodRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.getServerById = function (id) {\r\n return this.hideServerMethodSystemFlags(this.servers[id]);\r\n };\r\n ClientRepository.prototype.reset = function () {\r\n var _a;\r\n var _this = this;\r\n Object.keys(this.servers).forEach(function (key) {\r\n _this.removeServerById(key, \"reset\");\r\n });\r\n this.servers = (_a = {},\r\n _a[this.myServer.id] = this.myServer,\r\n _a);\r\n this.methodsCount = {};\r\n };\r\n ClientRepository.prototype.createMethodIdentifier = function (methodInfo) {\r\n var _a, _b;\r\n var accepts = (_a = methodInfo.input_signature) !== null && _a !== void 0 ? _a : \"\";\r\n var returns = (_b = methodInfo.result_signature) !== null && _b !== void 0 ? _b : \"\";\r\n return (methodInfo.name + accepts + returns).toLowerCase();\r\n };\r\n ClientRepository.prototype.getServersByMethod = function (identifier) {\r\n var allServers = [];\r\n Object.values(this.servers).forEach(function (server) {\r\n Object.values(server.methods).forEach(function (method) {\r\n if (method.identifier === identifier) {\r\n allServers.push(server.instance);\r\n }\r\n });\r\n });\r\n return allServers;\r\n };\r\n ClientRepository.prototype.returnUnsubWithDelayedReplay = function (unsubscribeFunc, collectionToReplay, callback) {\r\n var unsubCalled = false;\r\n setTimeout(function () {\r\n collectionToReplay.forEach(function (item) {\r\n if (!unsubCalled) {\r\n callback(item);\r\n }\r\n });\r\n }, 0);\r\n return function () {\r\n unsubCalled = true;\r\n unsubscribeFunc();\r\n };\r\n };\r\n ClientRepository.prototype.hideServerMethodSystemFlags = function (server) {\r\n var clientMethods = {};\r\n Object.entries(server.methods).forEach(function (_a) {\r\n var name = _a[0], method = _a[1];\r\n clientMethods[name] = hideMethodSystemFlags(method);\r\n });\r\n return __assign(__assign({}, server), { methods: clientMethods });\r\n };\r\n ClientRepository.prototype.extractMethodsFromServers = function (servers) {\r\n var methods = Object.values(servers).reduce(function (clientMethods, server) {\r\n return __spreadArray(__spreadArray([], clientMethods, true), Object.values(server.methods), true);\r\n }, []);\r\n return methods;\r\n };\r\n return ClientRepository;\r\n}());\n\nvar ServerRepository = (function () {\r\n function ServerRepository() {\r\n this.nextId = 0;\r\n this.methods = [];\r\n }\r\n ServerRepository.prototype.add = function (method) {\r\n method.repoId = String(this.nextId);\r\n this.nextId += 1;\r\n this.methods.push(method);\r\n return method;\r\n };\r\n ServerRepository.prototype.remove = function (repoId) {\r\n if (typeof repoId !== \"string\") {\r\n return new TypeError(\"Expecting a string\");\r\n }\r\n this.methods = this.methods.filter(function (m) {\r\n return m.repoId !== repoId;\r\n });\r\n };\r\n ServerRepository.prototype.getById = function (id) {\r\n if (typeof id !== \"string\") {\r\n return undefined;\r\n }\r\n return this.methods.find(function (m) {\r\n return m.repoId === id;\r\n });\r\n };\r\n ServerRepository.prototype.getList = function () {\r\n return this.methods.map(function (m) { return m; });\r\n };\r\n ServerRepository.prototype.length = function () {\r\n return this.methods.length;\r\n };\r\n ServerRepository.prototype.reset = function () {\r\n this.methods = [];\r\n };\r\n return ServerRepository;\r\n}());\n\nvar SUBSCRIPTION_REQUEST = \"onSubscriptionRequest\";\r\nvar SUBSCRIPTION_ADDED = \"onSubscriptionAdded\";\r\nvar SUBSCRIPTION_REMOVED = \"onSubscriptionRemoved\";\r\nvar ServerStreaming = (function () {\r\n function ServerStreaming(session, repository, serverRepository) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.serverRepository = serverRepository;\r\n this.ERR_URI_SUBSCRIPTION_FAILED = \"com.tick42.agm.errors.subscription.failure\";\r\n this.callbacks = lib$1();\r\n this.nextStreamId = 0;\r\n session.on(\"add-interest\", function (msg) {\r\n _this.handleAddInterest(msg);\r\n });\r\n session.on(\"remove-interest\", function (msg) {\r\n _this.handleRemoveInterest(msg);\r\n });\r\n }\r\n ServerStreaming.prototype.acceptRequestOnBranch = function (requestContext, streamingMethod, branch) {\r\n if (typeof branch !== \"string\") {\r\n branch = \"\";\r\n }\r\n if (typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\r\n throw new TypeError(\"The streaming method is missing its subscriptions.\");\r\n }\r\n if (!Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\r\n throw new TypeError(\"The streaming method is missing its branches.\");\r\n }\r\n var streamId = this.getStreamId(streamingMethod, branch);\r\n var key = requestContext.msg.subscription_id;\r\n var subscription = {\r\n id: key,\r\n arguments: requestContext.arguments,\r\n instance: requestContext.instance,\r\n branchKey: branch,\r\n streamId: streamId,\r\n subscribeMsg: requestContext.msg,\r\n };\r\n streamingMethod.protocolState.subscriptionsMap[key] = subscription;\r\n this.session.sendFireAndForget({\r\n type: \"accepted\",\r\n subscription_id: key,\r\n stream_id: streamId,\r\n });\r\n this.callbacks.execute(SUBSCRIPTION_ADDED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.rejectRequest = function (requestContext, streamingMethod, reason) {\r\n if (typeof reason !== \"string\") {\r\n reason = \"\";\r\n }\r\n this.sendSubscriptionFailed(\"Subscription rejected by user. \" + reason, requestContext.msg.subscription_id);\r\n };\r\n ServerStreaming.prototype.pushData = function (streamingMethod, data, branches) {\r\n var _this = this;\r\n if (typeof streamingMethod !== \"object\" || !Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\r\n return;\r\n }\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n if (typeof branches === \"string\") {\r\n branches = [branches];\r\n }\r\n else if (!Array.isArray(branches) || branches.length <= 0) {\r\n branches = [];\r\n }\r\n var streamIdList = streamingMethod.protocolState.branchKeyToStreamIdMap\r\n .filter(function (br) {\r\n if (!branches || branches.length === 0) {\r\n return true;\r\n }\r\n return branches.indexOf(br.key) >= 0;\r\n }).map(function (br) {\r\n return br.streamId;\r\n });\r\n streamIdList.forEach(function (streamId) {\r\n var publishMessage = {\r\n type: \"publish\",\r\n stream_id: streamId,\r\n data: data,\r\n };\r\n _this.session.sendFireAndForget(publishMessage);\r\n });\r\n };\r\n ServerStreaming.prototype.pushDataToSingle = function (method, subscription, data) {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n var postMessage = {\r\n type: \"post\",\r\n subscription_id: subscription.id,\r\n data: data,\r\n };\r\n this.session.sendFireAndForget(postMessage);\r\n };\r\n ServerStreaming.prototype.closeSingleSubscription = function (streamingMethod, subscription) {\r\n if (streamingMethod.protocolState.subscriptionsMap) {\r\n delete streamingMethod.protocolState.subscriptionsMap[subscription.id];\r\n }\r\n var dropSubscriptionMessage = {\r\n type: \"drop-subscription\",\r\n subscription_id: subscription.id,\r\n reason: \"Server dropping a single subscription\",\r\n };\r\n this.session.sendFireAndForget(dropSubscriptionMessage);\r\n subscription.instance;\r\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.closeMultipleSubscriptions = function (streamingMethod, branchKey) {\r\n var _this = this;\r\n if (typeof streamingMethod !== \"object\" || typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\r\n return;\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return;\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var subscriptionsToClose = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n if (typeof branchKey === \"string\") {\r\n subscriptionsToClose = subscriptionsToClose.filter(function (sub) {\r\n return sub.branchKey === branchKey;\r\n });\r\n }\r\n subscriptionsToClose.forEach(function (subscription) {\r\n delete subscriptionsMap[subscription.id];\r\n var drop = {\r\n type: \"drop-subscription\",\r\n subscription_id: subscription.id,\r\n reason: \"Server dropping all subscriptions on stream_id: \" + subscription.streamId,\r\n };\r\n _this.session.sendFireAndForget(drop);\r\n });\r\n };\r\n ServerStreaming.prototype.getSubscriptionList = function (streamingMethod, branchKey) {\r\n if (typeof streamingMethod !== \"object\") {\r\n return [];\r\n }\r\n var subscriptions = [];\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return [];\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var allSubscriptions = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n if (typeof branchKey !== \"string\") {\r\n subscriptions = allSubscriptions;\r\n }\r\n else {\r\n subscriptions = allSubscriptions.filter(function (sub) {\r\n return sub.branchKey === branchKey;\r\n });\r\n }\r\n return subscriptions;\r\n };\r\n ServerStreaming.prototype.getBranchList = function (streamingMethod) {\r\n if (typeof streamingMethod !== \"object\") {\r\n return [];\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return [];\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var allSubscriptions = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n var result = [];\r\n allSubscriptions.forEach(function (sub) {\r\n var branch = \"\";\r\n if (typeof sub === \"object\" && typeof sub.branchKey === \"string\") {\r\n branch = sub.branchKey;\r\n }\r\n if (result.indexOf(branch) === -1) {\r\n result.push(branch);\r\n }\r\n });\r\n return result;\r\n };\r\n ServerStreaming.prototype.onSubAdded = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_ADDED, callback);\r\n };\r\n ServerStreaming.prototype.onSubRequest = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REQUEST, callback);\r\n };\r\n ServerStreaming.prototype.onSubRemoved = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REMOVED, callback);\r\n };\r\n ServerStreaming.prototype.handleRemoveInterest = function (msg) {\r\n var streamingMethod = this.serverRepository.getById(msg.method_id);\r\n if (typeof msg.subscription_id !== \"string\" ||\r\n typeof streamingMethod !== \"object\") {\r\n return;\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return;\r\n }\r\n if (typeof streamingMethod.protocolState.subscriptionsMap[msg.subscription_id] !== \"object\") {\r\n return;\r\n }\r\n var subscription = streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\r\n delete streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\r\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.onSubscriptionLifetimeEvent = function (eventName, handlerFunc) {\r\n this.callbacks.add(eventName, handlerFunc);\r\n };\r\n ServerStreaming.prototype.getNextStreamId = function () {\r\n return this.nextStreamId++ + \"\";\r\n };\r\n ServerStreaming.prototype.handleAddInterest = function (msg) {\r\n var caller = this.repository.getServerById(msg.caller_id);\r\n var instance = caller.instance;\r\n var requestContext = {\r\n msg: msg,\r\n arguments: msg.arguments_kv || {},\r\n instance: instance,\r\n };\r\n var streamingMethod = this.serverRepository.getById(msg.method_id);\r\n if (streamingMethod === undefined) {\r\n var errorMsg = \"No method with id \" + msg.method_id + \" on this server.\";\r\n this.sendSubscriptionFailed(errorMsg, msg.subscription_id);\r\n return;\r\n }\r\n if (streamingMethod.protocolState.subscriptionsMap &&\r\n streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]) {\r\n this.sendSubscriptionFailed(\"A subscription with id \" + msg.subscription_id + \" already exists.\", msg.subscription_id);\r\n return;\r\n }\r\n this.callbacks.execute(SUBSCRIPTION_REQUEST, requestContext, streamingMethod);\r\n };\r\n ServerStreaming.prototype.sendSubscriptionFailed = function (reason, subscriptionId) {\r\n var errorMessage = {\r\n type: \"error\",\r\n reason_uri: this.ERR_URI_SUBSCRIPTION_FAILED,\r\n reason: reason,\r\n request_id: subscriptionId,\r\n };\r\n this.session.sendFireAndForget(errorMessage);\r\n };\r\n ServerStreaming.prototype.getStreamId = function (streamingMethod, branchKey) {\r\n if (typeof branchKey !== \"string\") {\r\n branchKey = \"\";\r\n }\r\n if (!streamingMethod.protocolState.branchKeyToStreamIdMap) {\r\n throw new Error(\"streaming \".concat(streamingMethod.definition.name, \" method without protocol state\"));\r\n }\r\n var needleBranch = streamingMethod.protocolState.branchKeyToStreamIdMap.filter(function (branch) {\r\n return branch.key === branchKey;\r\n })[0];\r\n var streamId = (needleBranch ? needleBranch.streamId : undefined);\r\n if (typeof streamId !== \"string\" || streamId === \"\") {\r\n streamId = this.getNextStreamId();\r\n streamingMethod.protocolState.branchKeyToStreamIdMap.push({ key: branchKey, streamId: streamId });\r\n }\r\n return streamId;\r\n };\r\n return ServerStreaming;\r\n}());\n\nvar ServerProtocol = (function () {\r\n function ServerProtocol(session, clientRepository, serverRepository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.clientRepository = clientRepository;\r\n this.serverRepository = serverRepository;\r\n this.logger = logger;\r\n this.callbacks = lib$1();\r\n this.streaming = new ServerStreaming(session, clientRepository, serverRepository);\r\n this.session.on(\"invoke\", function (msg) { return _this.handleInvokeMessage(msg); });\r\n }\r\n ServerProtocol.prototype.createStream = function (repoMethod) {\r\n repoMethod.protocolState.subscriptionsMap = {};\r\n repoMethod.protocolState.branchKeyToStreamIdMap = [];\r\n return this.register(repoMethod, true);\r\n };\r\n ServerProtocol.prototype.register = function (repoMethod, isStreaming) {\r\n var _this = this;\r\n var _a;\r\n var methodDef = repoMethod.definition;\r\n var flags = Object.assign({}, { metadata: (_a = methodDef.flags) !== null && _a !== void 0 ? _a : {} }, { streaming: isStreaming || false });\r\n var registerMsg = {\r\n type: \"register\",\r\n methods: [{\r\n id: repoMethod.repoId,\r\n name: methodDef.name,\r\n display_name: methodDef.displayName,\r\n description: methodDef.description,\r\n version: methodDef.version,\r\n flags: flags,\r\n object_types: methodDef.objectTypes || methodDef.object_types,\r\n input_signature: methodDef.accepts,\r\n result_signature: methodDef.returns,\r\n restrictions: undefined,\r\n }],\r\n };\r\n return this.session.send(registerMsg, { methodId: repoMethod.repoId })\r\n .then(function () {\r\n _this.logger.debug(\"registered method \" + repoMethod.definition.name + \" with id \" + repoMethod.repoId);\r\n })\r\n .catch(function (msg) {\r\n _this.logger.warn(\"failed to register method \".concat(repoMethod.definition.name, \" with id \").concat(repoMethod.repoId, \" - \").concat(JSON.stringify(msg)));\r\n throw msg;\r\n });\r\n };\r\n ServerProtocol.prototype.onInvoked = function (callback) {\r\n this.callbacks.add(\"onInvoked\", callback);\r\n };\r\n ServerProtocol.prototype.methodInvocationResult = function (method, invocationId, err, result) {\r\n var msg;\r\n if (err || err === \"\") {\r\n msg = {\r\n type: \"error\",\r\n request_id: invocationId,\r\n reason_uri: \"agm.errors.client_error\",\r\n reason: err,\r\n context: result,\r\n peer_id: undefined,\r\n };\r\n }\r\n else {\r\n msg = {\r\n type: \"yield\",\r\n invocation_id: invocationId,\r\n peer_id: this.session.peerId,\r\n result: result,\r\n request_id: undefined,\r\n };\r\n }\r\n this.session.sendFireAndForget(msg);\r\n };\r\n ServerProtocol.prototype.unregister = function (method) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var msg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n msg = {\r\n type: \"unregister\",\r\n methods: [method.repoId],\r\n };\r\n return [4, this.session.send(msg)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n ServerProtocol.prototype.getBranchList = function (method) {\r\n return this.streaming.getBranchList(method);\r\n };\r\n ServerProtocol.prototype.getSubscriptionList = function (method, branchKey) {\r\n return this.streaming.getSubscriptionList(method, branchKey);\r\n };\r\n ServerProtocol.prototype.closeAllSubscriptions = function (method, branchKey) {\r\n this.streaming.closeMultipleSubscriptions(method, branchKey);\r\n };\r\n ServerProtocol.prototype.pushData = function (method, data, branches) {\r\n this.streaming.pushData(method, data, branches);\r\n };\r\n ServerProtocol.prototype.pushDataToSingle = function (method, subscription, data) {\r\n this.streaming.pushDataToSingle(method, subscription, data);\r\n };\r\n ServerProtocol.prototype.closeSingleSubscription = function (method, subscription) {\r\n this.streaming.closeSingleSubscription(method, subscription);\r\n };\r\n ServerProtocol.prototype.acceptRequestOnBranch = function (requestContext, method, branch) {\r\n this.streaming.acceptRequestOnBranch(requestContext, method, branch);\r\n };\r\n ServerProtocol.prototype.rejectRequest = function (requestContext, method, reason) {\r\n this.streaming.rejectRequest(requestContext, method, reason);\r\n };\r\n ServerProtocol.prototype.onSubRequest = function (callback) {\r\n this.streaming.onSubRequest(callback);\r\n };\r\n ServerProtocol.prototype.onSubAdded = function (callback) {\r\n this.streaming.onSubAdded(callback);\r\n };\r\n ServerProtocol.prototype.onSubRemoved = function (callback) {\r\n this.streaming.onSubRemoved(callback);\r\n };\r\n ServerProtocol.prototype.handleInvokeMessage = function (msg) {\r\n var invocationId = msg.invocation_id;\r\n var callerId = msg.caller_id;\r\n var methodId = msg.method_id;\r\n var args = msg.arguments_kv;\r\n var methodList = this.serverRepository.getList();\r\n var method = methodList.filter(function (m) {\r\n return m.repoId === methodId;\r\n })[0];\r\n if (method === undefined) {\r\n return;\r\n }\r\n var client = this.clientRepository.getServerById(callerId).instance;\r\n var invocationArgs = { args: args, instance: client };\r\n this.callbacks.execute(\"onInvoked\", method, invocationId, invocationArgs);\r\n };\r\n return ServerProtocol;\r\n}());\n\nvar UserSubscription = (function () {\r\n function UserSubscription(repository, subscriptionData) {\r\n this.repository = repository;\r\n this.subscriptionData = subscriptionData;\r\n }\r\n Object.defineProperty(UserSubscription.prototype, \"requestArguments\", {\r\n get: function () {\r\n return this.subscriptionData.params.arguments || {};\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"servers\", {\r\n get: function () {\r\n var _this = this;\r\n return this.subscriptionData.trackedServers\r\n .filter(function (pair) { return pair.subscriptionId; })\r\n .map(function (pair) { return _this.repository.getServerById(pair.serverId).instance; });\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"serverInstance\", {\r\n get: function () {\r\n return this.servers[0];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"stream\", {\r\n get: function () {\r\n return this.subscriptionData.method;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n UserSubscription.prototype.onData = function (dataCallback) {\r\n if (typeof dataCallback !== \"function\") {\r\n throw new TypeError(\"The data callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onData.push(dataCallback);\r\n if (this.subscriptionData.handlers.onData.length === 1 && this.subscriptionData.queued.data.length > 0) {\r\n this.subscriptionData.queued.data.forEach(function (dataItem) {\r\n dataCallback(dataItem);\r\n });\r\n }\r\n };\r\n UserSubscription.prototype.onClosed = function (closedCallback) {\r\n if (typeof closedCallback !== \"function\") {\r\n throw new TypeError(\"The callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onClosed.push(closedCallback);\r\n };\r\n UserSubscription.prototype.onFailed = function (callback) {\r\n };\r\n UserSubscription.prototype.onConnected = function (callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new TypeError(\"The callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onConnected.push(callback);\r\n };\r\n UserSubscription.prototype.close = function () {\r\n this.subscriptionData.close();\r\n };\r\n UserSubscription.prototype.setNewSubscription = function (newSub) {\r\n this.subscriptionData = newSub;\r\n };\r\n return UserSubscription;\r\n}());\n\nvar TimedCache = (function () {\r\n function TimedCache(config) {\r\n this.config = config;\r\n this.cache = [];\r\n this.timeoutIds = [];\r\n }\r\n TimedCache.prototype.add = function (element) {\r\n var _this = this;\r\n var id = shortid();\r\n this.cache.push({ id: id, element: element });\r\n var timeoutId = setTimeout(function () {\r\n var elementIdx = _this.cache.findIndex(function (entry) { return entry.id === id; });\r\n if (elementIdx < 0) {\r\n return;\r\n }\r\n _this.cache.splice(elementIdx, 1);\r\n }, this.config.ELEMENT_TTL_MS);\r\n this.timeoutIds.push(timeoutId);\r\n };\r\n TimedCache.prototype.flush = function () {\r\n var elements = this.cache.map(function (entry) { return entry.element; });\r\n this.timeoutIds.forEach(function (id) { return clearInterval(id); });\r\n this.cache = [];\r\n this.timeoutIds = [];\r\n return elements;\r\n };\r\n return TimedCache;\r\n}());\n\nvar STATUS_AWAITING_ACCEPT = \"awaitingAccept\";\r\nvar STATUS_SUBSCRIBED = \"subscribed\";\r\nvar ERR_MSG_SUB_FAILED = \"Subscription failed.\";\r\nvar ERR_MSG_SUB_REJECTED = \"Subscription rejected.\";\r\nvar ON_CLOSE_MSG_SERVER_INIT = \"ServerInitiated\";\r\nvar ON_CLOSE_MSG_CLIENT_INIT = \"ClientInitiated\";\r\nvar ClientStreaming = (function () {\r\n function ClientStreaming(session, repository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.logger = logger;\r\n this.subscriptionsList = {};\r\n this.timedCache = new TimedCache({ ELEMENT_TTL_MS: 10000 });\r\n this.subscriptionIdToLocalKeyMap = {};\r\n this.nextSubLocalKey = 0;\r\n this.handleErrorSubscribing = function (errorResponse) {\r\n var tag = errorResponse._tag;\r\n var subLocalKey = tag.subLocalKey;\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (typeof pendingSub !== \"object\") {\r\n return;\r\n }\r\n pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) {\r\n return server.serverId !== tag.serverId;\r\n });\r\n if (pendingSub.trackedServers.length <= 0) {\r\n clearTimeout(pendingSub.timeoutId);\r\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\r\n var reason = (typeof errorResponse.reason === \"string\" && errorResponse.reason !== \"\") ?\r\n ' Publisher said \"' + errorResponse.reason + '\".' :\r\n \" No reason given.\";\r\n var callArgs = typeof pendingSub.params.arguments === \"object\" ?\r\n JSON.stringify(pendingSub.params.arguments) :\r\n \"{}\";\r\n pendingSub.error({\r\n message: ERR_MSG_SUB_REJECTED + reason + \" Called with:\" + callArgs,\r\n called_with: pendingSub.params.arguments,\r\n method: pendingSub.method,\r\n });\r\n }\r\n else if (pendingSub.status === STATUS_SUBSCRIBED) {\r\n _this.callOnClosedHandlers(pendingSub);\r\n }\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n };\r\n this.handleSubscribed = function (msg) {\r\n var subLocalKey = msg._tag.subLocalKey;\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (typeof pendingSub !== \"object\") {\r\n return;\r\n }\r\n var serverId = msg._tag.serverId;\r\n var acceptingServer = pendingSub.trackedServers\r\n .filter(function (server) {\r\n return server.serverId === serverId;\r\n })[0];\r\n if (typeof acceptingServer !== \"object\") {\r\n return;\r\n }\r\n acceptingServer.subscriptionId = msg.subscription_id;\r\n _this.subscriptionIdToLocalKeyMap[msg.subscription_id] = subLocalKey;\r\n var isFirstResponse = (pendingSub.status === STATUS_AWAITING_ACCEPT);\r\n pendingSub.status = STATUS_SUBSCRIBED;\r\n if (isFirstResponse) {\r\n var reconnect = false;\r\n var sub = pendingSub.subscription;\r\n if (sub) {\r\n sub.setNewSubscription(pendingSub);\r\n pendingSub.success(sub);\r\n reconnect = true;\r\n }\r\n else {\r\n sub = new UserSubscription(_this.repository, pendingSub);\r\n pendingSub.subscription = sub;\r\n pendingSub.success(sub);\r\n }\r\n for (var _i = 0, _a = pendingSub.handlers.onConnected; _i < _a.length; _i++) {\r\n var handler = _a[_i];\r\n try {\r\n handler(sub.serverInstance, reconnect);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n }\r\n };\r\n this.handleEventData = function (msg) {\r\n var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n if (typeof subLocalKey === \"undefined\") {\r\n return;\r\n }\r\n var subscription = _this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n var trackedServersFound = subscription.trackedServers.filter(function (server) {\r\n return server.subscriptionId === msg.subscription_id;\r\n });\r\n if (trackedServersFound.length !== 1) {\r\n return;\r\n }\r\n var isPrivateData = msg.oob;\r\n var sendingServerId = trackedServersFound[0].serverId;\r\n var receivedStreamData = function () {\r\n return {\r\n data: msg.data,\r\n server: _this.repository.getServerById(sendingServerId).instance,\r\n requestArguments: subscription.params.arguments,\r\n message: undefined,\r\n private: isPrivateData,\r\n };\r\n };\r\n var onDataHandlers = subscription.handlers.onData;\r\n var queuedData = subscription.queued.data;\r\n if (onDataHandlers.length > 0) {\r\n onDataHandlers.forEach(function (callback) {\r\n if (typeof callback === \"function\") {\r\n callback(receivedStreamData());\r\n }\r\n });\r\n }\r\n else {\r\n queuedData.push(receivedStreamData());\r\n }\r\n };\r\n this.handleSubscriptionCancelled = function (msg) {\r\n var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n if (typeof subLocalKey === \"undefined\") {\r\n return;\r\n }\r\n var subscription = _this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n var expectedNewLength = subscription.trackedServers.length - 1;\r\n subscription.trackedServers = subscription.trackedServers.filter(function (server) {\r\n if (server.subscriptionId === msg.subscription_id) {\r\n subscription.queued.closers.push(server.serverId);\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n if (subscription.trackedServers.length !== expectedNewLength) {\r\n return;\r\n }\r\n if (subscription.trackedServers.length <= 0) {\r\n _this.timedCache.add(subscription);\r\n clearTimeout(subscription.timeoutId);\r\n _this.callOnClosedHandlers(subscription);\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n delete _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n };\r\n session.on(\"subscribed\", this.handleSubscribed);\r\n session.on(\"event\", this.handleEventData);\r\n session.on(\"subscription-cancelled\", this.handleSubscriptionCancelled);\r\n }\r\n ClientStreaming.prototype.subscribe = function (streamingMethod, params, targetServers, success, error, existingSub) {\r\n var _this = this;\r\n if (targetServers.length === 0) {\r\n error({\r\n method: streamingMethod,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" No available servers matched the target params.\",\r\n });\r\n return;\r\n }\r\n var subLocalKey = this.getNextSubscriptionLocalKey();\r\n var pendingSub = this.registerSubscription(subLocalKey, streamingMethod, params, success, error, params.methodResponseTimeout || 10000, existingSub);\r\n if (typeof pendingSub !== \"object\") {\r\n error({\r\n method: streamingMethod,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" Unable to register the user callbacks.\",\r\n });\r\n return;\r\n }\r\n targetServers.forEach(function (target) {\r\n var serverId = target.server.id;\r\n var method = target.methods.find(function (m) { return m.name === streamingMethod.name; });\r\n if (!method) {\r\n _this.logger.error(\"can not find method \".concat(streamingMethod.name, \" for target \").concat(target.server.id));\r\n return;\r\n }\r\n pendingSub.trackedServers.push({\r\n serverId: serverId,\r\n subscriptionId: undefined,\r\n });\r\n var msg = {\r\n type: \"subscribe\",\r\n server_id: serverId,\r\n method_id: method.gatewayId,\r\n arguments_kv: params.arguments,\r\n };\r\n _this.session.send(msg, { serverId: serverId, subLocalKey: subLocalKey })\r\n .then(function (m) { return _this.handleSubscribed(m); })\r\n .catch(function (err) { return _this.handleErrorSubscribing(err); });\r\n });\r\n };\r\n ClientStreaming.prototype.drainSubscriptions = function () {\r\n var existing = Object.values(this.subscriptionsList);\r\n this.subscriptionsList = {};\r\n this.subscriptionIdToLocalKeyMap = {};\r\n return existing;\r\n };\r\n ClientStreaming.prototype.drainSubscriptionsCache = function () {\r\n return this.timedCache.flush();\r\n };\r\n ClientStreaming.prototype.getNextSubscriptionLocalKey = function () {\r\n var current = this.nextSubLocalKey;\r\n this.nextSubLocalKey += 1;\r\n return current;\r\n };\r\n ClientStreaming.prototype.registerSubscription = function (subLocalKey, method, params, success, error, timeout, existingSub) {\r\n var _this = this;\r\n var subsInfo = {\r\n localKey: subLocalKey,\r\n status: STATUS_AWAITING_ACCEPT,\r\n method: method,\r\n params: params,\r\n success: success,\r\n error: error,\r\n trackedServers: [],\r\n handlers: {\r\n onData: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onData) || [],\r\n onClosed: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onClosed) || [],\r\n onConnected: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onConnected) || [],\r\n },\r\n queued: {\r\n data: [],\r\n closers: [],\r\n },\r\n timeoutId: undefined,\r\n close: function () { return _this.closeSubscription(subLocalKey); },\r\n subscription: existingSub === null || existingSub === void 0 ? void 0 : existingSub.subscription\r\n };\r\n if (!existingSub) {\r\n if (params.onData) {\r\n subsInfo.handlers.onData.push(params.onData);\r\n }\r\n if (params.onClosed) {\r\n subsInfo.handlers.onClosed.push(params.onClosed);\r\n }\r\n if (params.onConnected) {\r\n subsInfo.handlers.onConnected.push(params.onConnected);\r\n }\r\n }\r\n this.subscriptionsList[subLocalKey] = subsInfo;\r\n subsInfo.timeoutId = setTimeout(function () {\r\n if (_this.subscriptionsList[subLocalKey] === undefined) {\r\n return;\r\n }\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\r\n error({\r\n method: method,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" Subscription attempt timed out after \" + timeout + \" ms.\",\r\n });\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n else if (pendingSub.status === STATUS_SUBSCRIBED && pendingSub.trackedServers.length > 0) {\r\n pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) {\r\n return (typeof server.subscriptionId !== \"undefined\");\r\n });\r\n delete pendingSub.timeoutId;\r\n if (pendingSub.trackedServers.length <= 0) {\r\n _this.callOnClosedHandlers(pendingSub);\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n }\r\n }, timeout);\r\n return subsInfo;\r\n };\r\n ClientStreaming.prototype.callOnClosedHandlers = function (subscription, reason) {\r\n var closersCount = subscription.queued.closers.length;\r\n var closingServerId = (closersCount > 0) ? subscription.queued.closers[closersCount - 1] : null;\r\n var closingServer;\r\n if (closingServerId !== undefined && typeof closingServerId === \"string\") {\r\n closingServer = this.repository.getServerById(closingServerId).instance;\r\n }\r\n subscription.handlers.onClosed.forEach(function (callback) {\r\n if (typeof callback !== \"function\") {\r\n return;\r\n }\r\n callback({\r\n message: reason || ON_CLOSE_MSG_SERVER_INIT,\r\n requestArguments: subscription.params.arguments || {},\r\n server: closingServer,\r\n stream: subscription.method,\r\n });\r\n });\r\n };\r\n ClientStreaming.prototype.closeSubscription = function (subLocalKey) {\r\n var _this = this;\r\n var subscription = this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n subscription.trackedServers.forEach(function (server) {\r\n if (typeof server.subscriptionId === \"undefined\") {\r\n return;\r\n }\r\n subscription.queued.closers.push(server.serverId);\r\n _this.session.sendFireAndForget({\r\n type: \"unsubscribe\",\r\n subscription_id: server.subscriptionId,\r\n reason_uri: \"\",\r\n reason: ON_CLOSE_MSG_CLIENT_INIT,\r\n });\r\n delete _this.subscriptionIdToLocalKeyMap[server.subscriptionId];\r\n });\r\n subscription.trackedServers = [];\r\n this.callOnClosedHandlers(subscription, ON_CLOSE_MSG_CLIENT_INIT);\r\n delete this.subscriptionsList[subLocalKey];\r\n };\r\n return ClientStreaming;\r\n}());\n\nvar ClientProtocol = (function () {\r\n function ClientProtocol(session, repository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.logger = logger;\r\n session.on(\"peer-added\", function (msg) { return _this.handlePeerAdded(msg); });\r\n session.on(\"peer-removed\", function (msg) { return _this.handlePeerRemoved(msg); });\r\n session.on(\"methods-added\", function (msg) { return _this.handleMethodsAddedMessage(msg); });\r\n session.on(\"methods-removed\", function (msg) { return _this.handleMethodsRemovedMessage(msg); });\r\n this.streaming = new ClientStreaming(session, repository, logger);\r\n }\r\n ClientProtocol.prototype.subscribe = function (stream, options, targetServers, success, error, existingSub) {\r\n this.streaming.subscribe(stream, options, targetServers, success, error, existingSub);\r\n };\r\n ClientProtocol.prototype.invoke = function (id, method, args, target) {\r\n var _this = this;\r\n var serverId = target.id;\r\n var methodId = method.gatewayId;\r\n var msg = {\r\n type: \"call\",\r\n server_id: serverId,\r\n method_id: methodId,\r\n arguments_kv: args,\r\n };\r\n return this.session.send(msg, { invocationId: id, serverId: serverId })\r\n .then(function (m) { return _this.handleResultMessage(m); })\r\n .catch(function (err) { return _this.handleInvocationError(err); });\r\n };\r\n ClientProtocol.prototype.drainSubscriptions = function () {\r\n return this.streaming.drainSubscriptions();\r\n };\r\n ClientProtocol.prototype.drainSubscriptionsCache = function () {\r\n return this.streaming.drainSubscriptionsCache();\r\n };\r\n ClientProtocol.prototype.handlePeerAdded = function (msg) {\r\n var newPeerId = msg.new_peer_id;\r\n var remoteId = msg.identity;\r\n var isLocal = msg.meta ? msg.meta.local : true;\r\n var pid = Number(remoteId.process);\r\n var serverInfo = {\r\n machine: remoteId.machine,\r\n pid: isNaN(pid) ? remoteId.process : pid,\r\n instance: remoteId.instance,\r\n application: remoteId.application,\r\n applicationName: remoteId.applicationName,\r\n environment: remoteId.environment,\r\n region: remoteId.region,\r\n user: remoteId.user,\r\n windowId: remoteId.windowId,\r\n peerId: newPeerId,\r\n api: remoteId.api,\r\n isLocal: isLocal\r\n };\r\n this.repository.addServer(serverInfo, newPeerId);\r\n };\r\n ClientProtocol.prototype.handlePeerRemoved = function (msg) {\r\n var removedPeerId = msg.removed_id;\r\n var reason = msg.reason;\r\n this.repository.removeServerById(removedPeerId, reason);\r\n };\r\n ClientProtocol.prototype.handleMethodsAddedMessage = function (msg) {\r\n var _this = this;\r\n var serverId = msg.server_id;\r\n var methods = msg.methods;\r\n methods.forEach(function (method) {\r\n _this.repository.addServerMethod(serverId, method);\r\n });\r\n };\r\n ClientProtocol.prototype.handleMethodsRemovedMessage = function (msg) {\r\n var _this = this;\r\n var serverId = msg.server_id;\r\n var methodIdList = msg.methods;\r\n var server = this.repository.getServerById(serverId);\r\n var serverMethodKeys = Object.keys(server.methods);\r\n serverMethodKeys.forEach(function (methodKey) {\r\n var method = server.methods[methodKey];\r\n if (methodIdList.indexOf(method.gatewayId) > -1) {\r\n _this.repository.removeServerMethod(serverId, methodKey);\r\n }\r\n });\r\n };\r\n ClientProtocol.prototype.handleResultMessage = function (msg) {\r\n var invocationId = msg._tag.invocationId;\r\n var result = msg.result;\r\n var serverId = msg._tag.serverId;\r\n var server = this.repository.getServerById(serverId);\r\n return {\r\n invocationId: invocationId,\r\n result: result,\r\n instance: server.instance,\r\n status: InvokeStatus.Success,\r\n message: \"\"\r\n };\r\n };\r\n ClientProtocol.prototype.handleInvocationError = function (msg) {\r\n this.logger.debug(\"handle invocation error \".concat(JSON.stringify(msg)));\r\n if (\"_tag\" in msg) {\r\n var invocationId = msg._tag.invocationId;\r\n var serverId = msg._tag.serverId;\r\n var server = this.repository.getServerById(serverId);\r\n var message = msg.reason;\r\n var context_1 = msg.context;\r\n return {\r\n invocationId: invocationId,\r\n result: context_1,\r\n instance: server.instance,\r\n status: InvokeStatus.Error,\r\n message: message\r\n };\r\n }\r\n else {\r\n return {\r\n invocationId: \"\",\r\n message: msg.message,\r\n status: InvokeStatus.Error,\r\n error: msg\r\n };\r\n }\r\n };\r\n return ClientProtocol;\r\n}());\n\nfunction gW3ProtocolFactory (instance, connection, clientRepository, serverRepository, libConfig, interop) {\r\n var logger = libConfig.logger.subLogger(\"gw3-protocol\");\r\n var resolveReadyPromise;\r\n var readyPromise = new Promise(function (resolve) {\r\n resolveReadyPromise = resolve;\r\n });\r\n var session = connection.domain(\"agm\", [\"subscribed\"]);\r\n var server = new ServerProtocol(session, clientRepository, serverRepository, logger.subLogger(\"server\"));\r\n var client = new ClientProtocol(session, clientRepository, logger.subLogger(\"client\"));\r\n function handleReconnect() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reconnectionPromises, existingSubscriptions, _loop_1, _i, existingSubscriptions_1, sub, registeredMethods, _loop_2, _a, registeredMethods_1, method;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n logger.info(\"reconnected - will replay registered methods and subscriptions\");\r\n client.drainSubscriptionsCache().forEach(function (sub) {\r\n var methodInfo = sub.method;\r\n var params = Object.assign({}, sub.params);\r\n logger.info(\"trying to soft-re-subscribe to method \".concat(methodInfo.name, \", with params: \").concat(JSON.stringify(params)));\r\n interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info(\"soft-subscribing to method \".concat(methodInfo.name, \" DONE\")); }).catch(function (error) { return logger.warn(\"subscribing to method \".concat(methodInfo.name, \" failed: \").concat(JSON.stringify(error), \"}\")); });\r\n });\r\n reconnectionPromises = [];\r\n existingSubscriptions = client.drainSubscriptions();\r\n _loop_1 = function (sub) {\r\n var methodInfo = sub.method;\r\n var params = Object.assign({}, sub.params);\r\n logger.info(\"trying to re-subscribe to method \".concat(methodInfo.name, \", with params: \").concat(JSON.stringify(params)));\r\n reconnectionPromises.push(interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info(\"subscribing to method \".concat(methodInfo.name, \" DONE\")); }));\r\n };\r\n for (_i = 0, existingSubscriptions_1 = existingSubscriptions; _i < existingSubscriptions_1.length; _i++) {\r\n sub = existingSubscriptions_1[_i];\r\n _loop_1(sub);\r\n }\r\n registeredMethods = serverRepository.getList();\r\n serverRepository.reset();\r\n _loop_2 = function (method) {\r\n var def = method.definition;\r\n logger.info(\"re-publishing method \".concat(def.name));\r\n if (method.stream) {\r\n reconnectionPromises.push(interop.server.createStream(def, method.streamCallbacks, undefined, undefined, method.stream).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n else if (method.theFunction && method.theFunction.userCallback) {\r\n reconnectionPromises.push(interop.register(def, method.theFunction.userCallback).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n else if (method.theFunction && method.theFunction.userCallbackAsync) {\r\n reconnectionPromises.push(interop.registerAsync(def, method.theFunction.userCallbackAsync).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n logger.info(\"re-publishing method \".concat(def.name, \" DONE\"));\r\n };\r\n for (_a = 0, registeredMethods_1 = registeredMethods; _a < registeredMethods_1.length; _a++) {\r\n method = registeredMethods_1[_a];\r\n _loop_2(method);\r\n }\r\n return [4, Promise.all(reconnectionPromises)];\r\n case 1:\r\n _b.sent();\r\n logger.info(\"Interop is re-announced\");\r\n return [2];\r\n }\r\n });\r\n });\r\n }\r\n function handleInitialJoin() {\r\n if (resolveReadyPromise) {\r\n resolveReadyPromise({\r\n client: client,\r\n server: server,\r\n });\r\n resolveReadyPromise = undefined;\r\n }\r\n }\r\n session.onJoined(function (reconnect) {\r\n clientRepository.addServer(instance, connection.peerId);\r\n if (reconnect) {\r\n handleReconnect().then(function () { return connection.setLibReAnnounced({ name: \"interop\" }); }).catch(function (error) { return logger.warn(\"Error while re-announcing interop: \".concat(JSON.stringify(error))); });\r\n }\r\n else {\r\n handleInitialJoin();\r\n }\r\n });\r\n session.onLeft(function () {\r\n clientRepository.reset();\r\n });\r\n session.join();\r\n return readyPromise;\r\n}\n\nvar Interop = (function () {\r\n function Interop(configuration) {\r\n var _this = this;\r\n if (typeof configuration === \"undefined\") {\r\n throw new Error(\"configuration is required\");\r\n }\r\n if (typeof configuration.connection === \"undefined\") {\r\n throw new Error(\"configuration.connections is required\");\r\n }\r\n var connection = configuration.connection;\r\n if (typeof configuration.methodResponseTimeout !== \"number\") {\r\n configuration.methodResponseTimeout = 30 * 1000;\r\n }\r\n if (typeof configuration.waitTimeoutMs !== \"number\") {\r\n configuration.waitTimeoutMs = 30 * 1000;\r\n }\r\n this.unwrappedInstance = new InstanceWrapper(this, undefined, connection);\r\n this.instance = this.unwrappedInstance.unwrap();\r\n this.clientRepository = new ClientRepository(configuration.logger.subLogger(\"cRep\"), this);\r\n this.serverRepository = new ServerRepository();\r\n var protocolPromise;\r\n if (connection.protocolVersion === 3) {\r\n protocolPromise = gW3ProtocolFactory(this.instance, connection, this.clientRepository, this.serverRepository, configuration, this);\r\n }\r\n else {\r\n throw new Error(\"protocol \".concat(connection.protocolVersion, \" not supported\"));\r\n }\r\n this.readyPromise = protocolPromise.then(function (protocol) {\r\n _this.protocol = protocol;\r\n _this.client = new Client(_this.protocol, _this.clientRepository, _this.instance, configuration);\r\n _this.server = new Server(_this.protocol, _this.serverRepository);\r\n return _this;\r\n });\r\n }\r\n Interop.prototype.ready = function () {\r\n return this.readyPromise;\r\n };\r\n Interop.prototype.serverRemoved = function (callback) {\r\n return this.client.serverRemoved(callback);\r\n };\r\n Interop.prototype.serverAdded = function (callback) {\r\n return this.client.serverAdded(callback);\r\n };\r\n Interop.prototype.serverMethodRemoved = function (callback) {\r\n return this.client.serverMethodRemoved(callback);\r\n };\r\n Interop.prototype.serverMethodAdded = function (callback) {\r\n return this.client.serverMethodAdded(callback);\r\n };\r\n Interop.prototype.methodRemoved = function (callback) {\r\n return this.client.methodRemoved(callback);\r\n };\r\n Interop.prototype.methodAdded = function (callback) {\r\n return this.client.methodAdded(callback);\r\n };\r\n Interop.prototype.methodsForInstance = function (instance) {\r\n return this.client.methodsForInstance(instance);\r\n };\r\n Interop.prototype.methods = function (methodFilter) {\r\n return this.client.methods(methodFilter);\r\n };\r\n Interop.prototype.servers = function (methodFilter) {\r\n return this.client.servers(methodFilter);\r\n };\r\n Interop.prototype.subscribe = function (method, options, successCallback, errorCallback) {\r\n return this.client.subscribe(method, options, successCallback, errorCallback);\r\n };\r\n Interop.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback) {\r\n return this.server.createStream(streamDef, callbacks, successCallback, errorCallback);\r\n };\r\n Interop.prototype.unregister = function (methodFilter) {\r\n return this.server.unregister(methodFilter);\r\n };\r\n Interop.prototype.registerAsync = function (methodDefinition, callback) {\r\n return this.server.registerAsync(methodDefinition, callback);\r\n };\r\n Interop.prototype.register = function (methodDefinition, callback) {\r\n return this.server.register(methodDefinition, callback);\r\n };\r\n Interop.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) {\r\n return this.client.invoke(methodFilter, argumentObj, target, additionalOptions, success, error);\r\n };\r\n Interop.prototype.waitForMethod = function (name) {\r\n var pw = new PromiseWrapper();\r\n var unsubscribe = this.client.methodAdded(function (m) {\r\n if (m.name === name) {\r\n unsubscribe();\r\n pw.resolve(m);\r\n }\r\n });\r\n return pw.promise;\r\n };\r\n return Interop;\r\n}());\n\nvar successMessages = [\"subscribed\", \"success\"];\r\nvar MessageBus = (function () {\r\n function MessageBus(connection, logger) {\r\n var _this = this;\r\n this.publish = function (topic, data, options) {\r\n var _a = options || {}, routingKey = _a.routingKey, target = _a.target;\r\n var args = _this.removeEmptyValues({\r\n type: \"publish\",\r\n topic: topic,\r\n data: data,\r\n peer_id: _this.peerId,\r\n routing_key: routingKey,\r\n target_identity: target\r\n });\r\n _this.session.send(args);\r\n };\r\n this.subscribe = function (topic, callback, options) {\r\n return new Promise(function (resolve, reject) {\r\n var _a = options || {}, routingKey = _a.routingKey, target = _a.target;\r\n var args = _this.removeEmptyValues({\r\n type: \"subscribe\",\r\n topic: topic,\r\n peer_id: _this.peerId,\r\n routing_key: routingKey,\r\n source: target\r\n });\r\n _this.session.send(args)\r\n .then(function (response) {\r\n var subscription_id = response.subscription_id;\r\n _this.subscriptions.push({ subscription_id: subscription_id, topic: topic, callback: callback, source: target });\r\n resolve({\r\n unsubscribe: function () {\r\n _this.session.send({ type: \"unsubscribe\", subscription_id: subscription_id, peer_id: _this.peerId });\r\n _this.subscriptions = _this.subscriptions.filter(function (s) { return s.subscription_id !== subscription_id; });\r\n return Promise.resolve();\r\n }\r\n });\r\n })\r\n .catch(function (error) { return reject(error); });\r\n });\r\n };\r\n this.watchOnEvent = function () {\r\n _this.session.on(\"event\", function (args) {\r\n var data = args.data, subscription_id = args.subscription_id;\r\n var source = args[\"publisher-identity\"];\r\n var subscription = _this.subscriptions.find(function (s) { return s.subscription_id === subscription_id; });\r\n if (subscription) {\r\n if (!subscription.source) {\r\n subscription.callback(data, subscription.topic, source);\r\n }\r\n else {\r\n if (_this.keysMatch(subscription.source, source)) {\r\n subscription.callback(data, subscription.topic, source);\r\n }\r\n }\r\n }\r\n });\r\n };\r\n this.connection = connection;\r\n this.logger = logger;\r\n this.peerId = connection.peerId;\r\n this.subscriptions = [];\r\n this.session = connection.domain(\"bus\", successMessages);\r\n this.readyPromise = this.session.join();\r\n this.readyPromise.then(function () {\r\n _this.watchOnEvent();\r\n });\r\n }\r\n MessageBus.prototype.ready = function () {\r\n return this.readyPromise;\r\n };\r\n MessageBus.prototype.removeEmptyValues = function (obj) {\r\n var cleaned = {};\r\n Object.keys(obj).forEach(function (key) {\r\n if (obj[key] !== undefined && obj[key] !== null) {\r\n cleaned[key] = obj[key];\r\n }\r\n });\r\n return cleaned;\r\n };\r\n MessageBus.prototype.keysMatch = function (obj1, obj2) {\r\n var keysObj1 = Object.keys(obj1);\r\n var allMatch = true;\r\n keysObj1.forEach(function (key) {\r\n if (obj1[key] !== obj2[key]) {\r\n allMatch = false;\r\n }\r\n });\r\n return allMatch;\r\n };\r\n return MessageBus;\r\n}());\n\nvar IOConnectCoreFactory = function (userConfig, ext) {\r\n var _a, _b;\r\n var iodesktop = typeof window === \"object\" ? ((_a = window.iodesktop) !== null && _a !== void 0 ? _a : window.glue42gd) : undefined;\r\n var preloadPromise = typeof window === \"object\" ? ((_b = window.gdPreloadPromise) !== null && _b !== void 0 ? _b : Promise.resolve()) : Promise.resolve();\r\n var glueInitTimer = timer(\"glue\");\r\n userConfig = userConfig || {};\r\n ext = ext || {};\r\n var internalConfig = prepareConfig(userConfig, ext, iodesktop);\r\n var _connection;\r\n var _interop;\r\n var _logger;\r\n var _metrics;\r\n var _contexts;\r\n var _bus;\r\n var _allowTrace;\r\n var libs = {};\r\n function registerLib(name, inner, t) {\r\n _allowTrace = _logger.canPublish(\"trace\");\r\n if (_allowTrace) {\r\n _logger.trace(\"registering \".concat(name, \" module\"));\r\n }\r\n var done = function () {\r\n inner.initTime = t.stop();\r\n inner.initEndTime = t.endTime;\r\n inner.marks = t.marks;\r\n if (_allowTrace) {\r\n _logger.trace(\"\".concat(name, \" is ready - \").concat(t.endTime - t.startTime));\r\n }\r\n };\r\n inner.initStartTime = t.startTime;\r\n if (inner.ready) {\r\n inner.ready().then(function () {\r\n done();\r\n });\r\n }\r\n else {\r\n done();\r\n }\r\n if (!Array.isArray(name)) {\r\n name = [name];\r\n }\r\n name.forEach(function (n) {\r\n libs[n] = inner;\r\n IOConnectCoreFactory[n] = inner;\r\n });\r\n }\r\n function setupConnection() {\r\n var initTimer = timer(\"connection\");\r\n _connection = new Connection(internalConfig.connection, _logger.subLogger(\"connection\"));\r\n var authPromise = Promise.resolve(internalConfig.auth);\r\n if (internalConfig.connection && !internalConfig.auth) {\r\n if (iodesktop) {\r\n authPromise = iodesktop.getGWToken()\r\n .then(function (token) {\r\n return {\r\n gatewayToken: token\r\n };\r\n });\r\n }\r\n else if (typeof window !== \"undefined\" && (window === null || window === void 0 ? void 0 : window.glue42electron)) {\r\n if (typeof window.glue42electron.gwToken === \"string\") {\r\n authPromise = Promise.resolve({\r\n gatewayToken: window.glue42electron.gwToken\r\n });\r\n }\r\n }\r\n else {\r\n authPromise = Promise.reject(\"You need to provide auth information\");\r\n }\r\n }\r\n return authPromise\r\n .then(function (authConfig) {\r\n initTimer.mark(\"auth-promise-resolved\");\r\n var authRequest;\r\n if (Object.prototype.toString.call(authConfig) === \"[object Object]\") {\r\n authRequest = authConfig;\r\n }\r\n else {\r\n throw new Error(\"Invalid auth object - \" + JSON.stringify(authConfig));\r\n }\r\n return _connection.login(authRequest);\r\n })\r\n .then(function () {\r\n registerLib(\"connection\", _connection, initTimer);\r\n return internalConfig;\r\n })\r\n .catch(function (e) {\r\n if (_connection) {\r\n _connection.logout();\r\n }\r\n throw e;\r\n });\r\n }\r\n function setupLogger() {\r\n var _a;\r\n var initTimer = timer(\"logger\");\r\n _logger = new Logger(\"\".concat((_a = internalConfig.connection.identity) === null || _a === void 0 ? void 0 : _a.application), undefined, internalConfig.customLogger);\r\n _logger.consoleLevel(internalConfig.logger.console);\r\n _logger.publishLevel(internalConfig.logger.publish);\r\n if (_logger.canPublish(\"debug\")) {\r\n _logger.debug(\"initializing glue...\");\r\n }\r\n registerLib(\"logger\", _logger, initTimer);\r\n return Promise.resolve(undefined);\r\n }\r\n function setupMetrics() {\r\n var _a, _b, _c, _d, _e;\r\n var initTimer = timer(\"metrics\");\r\n var config = internalConfig.metrics;\r\n var metricsPublishingEnabledFunc = iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.getMetricsPublishingEnabled;\r\n var identity = internalConfig.connection.identity;\r\n var canUpdateMetric = metricsPublishingEnabledFunc ? metricsPublishingEnabledFunc : function () { return true; };\r\n var disableAutoAppSystem = (_a = (typeof config !== \"boolean\" && config.disableAutoAppSystem)) !== null && _a !== void 0 ? _a : false;\r\n _metrics = metrics({\r\n connection: config ? _connection : undefined,\r\n logger: _logger.subLogger(\"metrics\"),\r\n canUpdateMetric: canUpdateMetric,\r\n system: \"Glue42\",\r\n service: (_c = (_b = identity === null || identity === void 0 ? void 0 : identity.service) !== null && _b !== void 0 ? _b : iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.applicationName) !== null && _c !== void 0 ? _c : internalConfig.application,\r\n instance: (_e = (_d = identity === null || identity === void 0 ? void 0 : identity.instance) !== null && _d !== void 0 ? _d : identity === null || identity === void 0 ? void 0 : identity.windowId) !== null && _e !== void 0 ? _e : shortid(),\r\n disableAutoAppSystem: disableAutoAppSystem,\r\n pagePerformanceMetrics: typeof config !== \"boolean\" ? config === null || config === void 0 ? void 0 : config.pagePerformanceMetrics : undefined\r\n });\r\n registerLib(\"metrics\", _metrics, initTimer);\r\n return Promise.resolve();\r\n }\r\n function setupInterop() {\r\n var initTimer = timer(\"interop\");\r\n var agmConfig = {\r\n connection: _connection,\r\n logger: _logger.subLogger(\"interop\"),\r\n };\r\n _interop = new Interop(agmConfig);\r\n Logger.Interop = _interop;\r\n registerLib([\"interop\", \"agm\"], _interop, initTimer);\r\n return Promise.resolve();\r\n }\r\n function setupContexts() {\r\n var hasActivities = (internalConfig.activities && _connection.protocolVersion === 3);\r\n var needsContexts = internalConfig.contexts || hasActivities;\r\n if (needsContexts) {\r\n var initTimer = timer(\"contexts\");\r\n _contexts = new ContextsModule({\r\n connection: _connection,\r\n logger: _logger.subLogger(\"contexts\"),\r\n trackAllContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.trackAllContexts : false,\r\n reAnnounceKnownContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.reAnnounceKnownContexts : false\r\n });\r\n registerLib(\"contexts\", _contexts, initTimer);\r\n return _contexts;\r\n }\r\n else {\r\n var replayer = _connection.replayer;\r\n if (replayer) {\r\n replayer.drain(ContextMessageReplaySpec.name);\r\n }\r\n }\r\n }\r\n function setupBus() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var initTimer;\r\n return __generator(this, function (_a) {\r\n if (!internalConfig.bus) {\r\n return [2, Promise.resolve()];\r\n }\r\n initTimer = timer(\"bus\");\r\n _bus = new MessageBus(_connection, _logger.subLogger(\"bus\"));\r\n registerLib(\"bus\", _bus, initTimer);\r\n return [2, Promise.resolve()];\r\n });\r\n });\r\n }\r\n function setupExternalLibs(externalLibs) {\r\n try {\r\n externalLibs.forEach(function (lib) {\r\n setupExternalLib(lib.name, lib.create);\r\n });\r\n return Promise.resolve();\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n function setupExternalLib(name, createCallback) {\r\n var initTimer = timer(name);\r\n var lib = createCallback(libs);\r\n if (lib) {\r\n registerLib(name, lib, initTimer);\r\n }\r\n }\r\n function waitForLibs() {\r\n var libsReadyPromises = Object.keys(libs).map(function (key) {\r\n var lib = libs[key];\r\n return lib.ready ?\r\n lib.ready() : Promise.resolve();\r\n });\r\n return Promise.all(libsReadyPromises);\r\n }\r\n function constructGlueObject() {\r\n var feedbackFunc = function (feedbackInfo) {\r\n if (!_interop) {\r\n return;\r\n }\r\n _interop.invoke(\"T42.ACS.Feedback\", feedbackInfo, \"best\");\r\n };\r\n var info = {\r\n coreVersion: version,\r\n version: internalConfig.version\r\n };\r\n glueInitTimer.stop();\r\n var glue = {\r\n feedback: feedbackFunc,\r\n info: info,\r\n logger: _logger,\r\n interop: _interop,\r\n agm: _interop,\r\n connection: _connection,\r\n metrics: _metrics,\r\n contexts: _contexts,\r\n bus: _bus,\r\n version: internalConfig.version,\r\n userConfig: userConfig,\r\n done: function () {\r\n _logger === null || _logger === void 0 ? void 0 : _logger.info(\"done called by user...\");\r\n return _connection.logout();\r\n }\r\n };\r\n glue.performance = {\r\n get glueVer() {\r\n return internalConfig.version;\r\n },\r\n get glueConfig() {\r\n return JSON.stringify(userConfig);\r\n },\r\n get browser() {\r\n return window.performance.timing.toJSON();\r\n },\r\n get memory() {\r\n return window.performance.memory;\r\n },\r\n get initTimes() {\r\n var all = getAllTimers();\r\n return Object.keys(all).map(function (key) {\r\n var t = all[key];\r\n return {\r\n name: key,\r\n duration: t.endTime - t.startTime,\r\n marks: t.marks,\r\n startTime: t.startTime,\r\n endTime: t.endTime\r\n };\r\n });\r\n }\r\n };\r\n Object.keys(libs).forEach(function (key) {\r\n var lib = libs[key];\r\n glue[key] = lib;\r\n });\r\n glue.config = {};\r\n Object.keys(internalConfig).forEach(function (k) {\r\n glue.config[k] = internalConfig[k];\r\n });\r\n if (ext && ext.extOptions) {\r\n Object.keys(ext.extOptions).forEach(function (k) {\r\n glue.config[k] = ext === null || ext === void 0 ? void 0 : ext.extOptions[k];\r\n });\r\n }\r\n if (ext === null || ext === void 0 ? void 0 : ext.enrichGlue) {\r\n ext.enrichGlue(glue);\r\n }\r\n if (iodesktop && iodesktop.updatePerfData) {\r\n iodesktop.updatePerfData(glue.performance);\r\n }\r\n if (glue.agm) {\r\n var deprecatedDecorator = function (fn, wrong, proper) {\r\n return function () {\r\n glue.logger.warn(\"glue.js - 'glue.agm.\".concat(wrong, \"' method is deprecated, use 'glue.interop.\").concat(proper, \"' instead.\"));\r\n return fn.apply(glue.agm, arguments);\r\n };\r\n };\r\n var agmAny = glue.agm;\r\n agmAny.method_added = deprecatedDecorator(glue.agm.methodAdded, \"method_added\", \"methodAdded\");\r\n agmAny.method_removed = deprecatedDecorator(glue.agm.methodRemoved, \"method_removed\", \"methodRemoved\");\r\n agmAny.server_added = deprecatedDecorator(glue.agm.serverAdded, \"server_added\", \"serverAdded\");\r\n agmAny.server_method_aded = deprecatedDecorator(glue.agm.serverMethodAdded, \"server_method_aded\", \"serverMethodAdded\");\r\n agmAny.server_method_removed = deprecatedDecorator(glue.agm.serverMethodRemoved, \"server_method_removed\", \"serverMethodRemoved\");\r\n }\r\n return glue;\r\n }\r\n function registerInstanceIfNeeded() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var RegisterInstanceMethodName, isMethodAvailable, error_1, typedError;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n RegisterInstanceMethodName = \"T42.ACS.RegisterInstance\";\r\n if (!(Utils.isNode() && typeof process.env._GD_STARTING_CONTEXT_ === \"undefined\" && typeof (userConfig === null || userConfig === void 0 ? void 0 : userConfig.application) !== \"undefined\")) return [3, 4];\r\n isMethodAvailable = _interop.methods({ name: RegisterInstanceMethodName }).length > 0;\r\n if (!isMethodAvailable) return [3, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4, _interop.invoke(RegisterInstanceMethodName, { appName: userConfig === null || userConfig === void 0 ? void 0 : userConfig.application, pid: process.pid })];\r\n case 2:\r\n _a.sent();\r\n return [3, 4];\r\n case 3:\r\n error_1 = _a.sent();\r\n typedError = error_1;\r\n _logger.error(\"Cannot register as an instance: \".concat(JSON.stringify(typedError.message)));\r\n return [3, 4];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n }\r\n return preloadPromise\r\n .then(setupLogger)\r\n .then(setupConnection)\r\n .then(function () { return Promise.all([setupMetrics(), setupInterop(), setupContexts(), setupBus()]); })\r\n .then(function () { return _interop.readyPromise; })\r\n .then(function () { return registerInstanceIfNeeded(); })\r\n .then(function () {\r\n return setupExternalLibs(internalConfig.libs || []);\r\n })\r\n .then(waitForLibs)\r\n .then(constructGlueObject)\r\n .catch(function (err) {\r\n return Promise.reject({\r\n err: err,\r\n libs: libs\r\n });\r\n });\r\n};\r\nif (typeof window !== \"undefined\") {\r\n window.IOConnectCore = IOConnectCoreFactory;\r\n}\r\nIOConnectCoreFactory.version = version;\r\nIOConnectCoreFactory.default = IOConnectCoreFactory;\n\nexport { IOConnectCoreFactory as default };\n//# sourceMappingURL=core.es.js.map\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { createFactoryFunction } from \"./web\";\nimport createIoConnectCore from \"@interopio/core\";\nimport { version } from \"../package.json\";\n\nconst iOConnectBrowserFactory = createFactoryFunction(createIoConnectCore);\n\n// attach to window object\nif (typeof window !== \"undefined\") {\n const windowAny = window as any;\n\n windowAny.IOBrowser = iOConnectBrowserFactory;\n\n delete windowAny.GlueCore;\n delete windowAny.IOConnectCore;\n}\n\nconst legacyGlobal = (window as any).glue42gd || (window as any).glue42core;\nconst ioGlobal = (window as any).iodesktop || (window as any).iobrowser;\n\nif (!legacyGlobal && !ioGlobal) {\n (window as any).iobrowser = { webStarted: false };\n}\n\n(iOConnectBrowserFactory as any).version = version;\n\nexport default iOConnectBrowserFactory;\n"],"names":["ok","err","asPromise","withDefault","withException","map","map2","mapError","andThen","__assign","__rest","isEqual","isJsonArray","isJsonObject","typeString","expectedGot","printPath","prependAt","Decoder","string","number","boolean","anyJson","constant","object","array","optional","oneOf","nonEmptyStringDecoder","nonNegativeNumberDecoder","intentDefinitionDecoder","IoC","operations","createRegistry","lib","CallbackRegistryFactory","PromisePlus","seed","getNextValue","setSeed","randomFromSeed","require$$0","ORIGINAL","alphabet","previousSeed","shuffled","reset","setCharacters","characters","shuffle","getShuffled","lookup","get","alphabet_1","crypto","randomByte","randomByteBrowser","format_browser","random","require$$1","format","require$$2","generate","generate_1","REDUCE_TIME","version","counter","previousSeconds","build","build_1","isShortId","isValid","shortid","__awaiter","createIoConnectCore"],"mappings":"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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC7B,GAAG,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACnC,GAAG,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AACpD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,QAAQ,GAAG,cAAc,IAAI,SAAS,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,KAAK,EAAE;AAC5B;AACA;AACA,GAAG,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAC/D,GAAG,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC;AAC1C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC1B,GAAG,OAAO,OAAO,KAAK,IAAI,QAAQ;AAClC,KAAK,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,gBAAgB,CAAC;AAC/D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC1B,GAAG,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC3B,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;AAC9D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE;AAC9B,GAAG,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE;AACvB,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,GAAG;AACtB,GAAG,OAAO,EAAE,CAAC;AACb,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,GAAG;AACtB,GAAG,OAAO,KAAK,CAAC;AAChB,EAAE;AACF;AACA,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;AAC5B,CAAC,EAAE,gBAAgB,EAAE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"} \ No newline at end of file +{"version":3,"file":"browser.es.js","sources":["../src/config/index.ts","../src/config/checkSingleton.ts","../src/enterprise/index.ts","../../../node_modules/decoder-validate/dist/index.es5.js","../../utils/dist/utils.es.js","../src/shared/decoders.ts","../src/windows/protocol.ts","../../../node_modules/callback-registry/lib/index.js","../src/windows/webWindow.ts","../src/shared/systemOperations.ts","../src/shared/promise-plus.ts","../src/windows/controller.ts","../src/communication/constants.ts","../src/communication/bridge.ts","../src/appManager/protocol.ts","../src/appManager/controller.ts","../src/appManager/instance.ts","../src/appManager/application.ts","../src/layouts/protocol.ts","../src/layouts/controller.ts","../src/notifications/protocol.ts","../../../node_modules/nanoid/url-alphabet/index.js","../../../node_modules/nanoid/index.browser.js","../src/notifications/controller.ts","../src/intents/protocol.ts","../src/intents/constants.ts","../src/intents/controller.ts","../src/shared/constants.ts","../src/channels/protocol.ts","../src/channels/controller.ts","../src/system/protocol.ts","../src/system/controller.ts","../src/notifications/notification.ts","../src/extension/decoders.ts","../src/extension/protocol.ts","../src/extension/controller.ts","../src/shared/dispatcher.ts","../src/communication/preferred.ts","../src/intents/legacyHelper.ts","../src/themes/protocol.ts","../src/themes/controller.ts","../src/storage/session.ts","../src/prefs/protocol.ts","../src/prefs/controller.ts","../src/shared/ioc.ts","../src/web.ts","../../core/dist/core.es.js","../src/index.ts"],"sourcesContent":[null,null,null,"/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Typeguard for `Ok`.\r\n */\r\nvar isOk = function (r) { return r.ok === true; };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Typeguard for `Err`.\r\n */\r\nvar isErr = function (r) { return r.ok === false; };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Given an array of `Result`s, return the successful values.\r\n */\r\nvar successes = function (results) {\r\n return results.reduce(function (acc, r) { return (r.ok === true ? acc.concat(r.result) : acc); }, []);\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n\r\nvar result = Object.freeze({\r\n\tok: ok,\r\n\tisOk: isOk,\r\n\terr: err,\r\n\tisErr: isErr,\r\n\tasPromise: asPromise,\r\n\twithDefault: withDefault,\r\n\twithException: withException,\r\n\tsuccesses: successes,\r\n\tmap: map,\r\n\tmap2: map2,\r\n\tmapError: mapError,\r\n\tandThen: andThen\r\n});\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/**\r\n * Type guard for `DecoderError`. One use case of the type guard is in the\r\n * `catch` of a promise. Typescript types the error argument of `catch` as\r\n * `any`, so when dealing with a decoder as a promise you may need to\r\n * distinguish between a `DecoderError` and an error string.\r\n */\r\nvar isDecoderError = function (a) {\r\n return a.kind === 'DecoderError' && typeof a.at === 'string' && typeof a.message === 'string';\r\n};\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nvar unknownJson = Decoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nvar tuple = Decoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nvar union = Decoder.union;\r\n/** See `Decoder.intersection` */\r\nvar intersection = Decoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nvar withDefault$1 = Decoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nvar valueAt = Decoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nvar succeed = Decoder.succeed;\r\n/** See `Decoder.fail` */\r\nvar fail = Decoder.fail;\r\n/** See `Decoder.lazy` */\r\nvar lazy = Decoder.lazy;\r\n\r\nexport { result as Result, Decoder, isDecoderError, string, number, boolean, anyJson, unknownJson, constant, object, array, tuple, dict, optional, oneOf, union, intersection, withDefault$1 as withDefault, valueAt, succeed, fail, lazy };\r\n//# sourceMappingURL=index.es5.js.map\r\n","const connectBrowserAppProps = [\"name\", \"title\", \"version\", \"customProperties\", \"icon\", \"caption\", \"type\"];\nconst fdc3v2AppProps = [\"appId\", \"name\", \"type\", \"details\", \"version\", \"title\", \"tooltip\", \"lang\", \"description\", \"categories\", \"icons\", \"screenshots\", \"contactEmail\", \"moreInfo\", \"publisher\", \"customConfig\", \"hostManifests\", \"interop\", \"localizedVersions\"];\n\n/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nDecoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nDecoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nDecoder.union;\r\n/** See `Decoder.intersection` */\r\nDecoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nDecoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nDecoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nDecoder.succeed;\r\n/** See `Decoder.fail` */\r\nDecoder.fail;\r\n/** See `Decoder.lazy` */\r\nDecoder.lazy;\n\nconst nonEmptyStringDecoder = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nconst nonNegativeNumberDecoder = number().where((num) => num >= 0, \"Expected a non-negative number\");\n\nconst intentDefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n displayName: optional(string()),\n contexts: optional(array(string())),\n customConfig: optional(object())\n});\nconst v2TypeDecoder = oneOf(constant(\"web\"), constant(\"native\"), constant(\"citrix\"), constant(\"onlineNative\"), constant(\"other\"));\nconst v2DetailsDecoder = object({\n url: nonEmptyStringDecoder\n});\nconst v2IconDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder)\n});\nconst v2ScreenshotDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder),\n label: optional(nonEmptyStringDecoder)\n});\nconst v2ListensForIntentDecoder = object({\n contexts: array(nonEmptyStringDecoder),\n displayName: optional(nonEmptyStringDecoder),\n resultType: optional(nonEmptyStringDecoder),\n customConfig: optional(anyJson())\n});\nconst v2IntentsDecoder = object({\n listensFor: optional(dict(v2ListensForIntentDecoder)),\n raises: optional(dict(array(nonEmptyStringDecoder)))\n});\nconst v2UserChannelDecoder = object({\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2AppChannelDecoder = object({\n name: nonEmptyStringDecoder,\n description: optional(nonEmptyStringDecoder),\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2InteropDecoder = object({\n intents: optional(v2IntentsDecoder),\n userChannels: optional(v2UserChannelDecoder),\n appChannels: optional(array(v2AppChannelDecoder))\n});\nconst glue42ApplicationDetailsDecoder = object({\n url: nonEmptyStringDecoder,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\nconst glue42HostManifestsBrowserDecoder = object({\n name: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\")),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n customProperties: optional(anyJson()),\n icon: optional(string()),\n caption: optional(string()),\n details: optional(glue42ApplicationDetailsDecoder),\n intents: optional(array(intentDefinitionDecoder)),\n hidden: optional(boolean())\n});\nconst hostManifestsBrowserDecoder = oneOf(object({\n \"ioConnect\": optional(oneOf(glue42HostManifestsBrowserDecoder, anyJson())),\n \"Glue42\": optional(oneOf(glue42HostManifestsBrowserDecoder, anyJson()))\n}), anyJson());\nconst v1DefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n appId: nonEmptyStringDecoder,\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n manifest: nonEmptyStringDecoder,\n manifestType: nonEmptyStringDecoder,\n tooltip: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n images: optional(array(object({ url: optional(nonEmptyStringDecoder) }))),\n icons: optional(array(object({ icon: optional(nonEmptyStringDecoder) }))),\n customConfig: anyJson(),\n intents: optional(array(intentDefinitionDecoder))\n});\nconst v2LocalizedDefinitionDecoder = object({\n appId: optional(nonEmptyStringDecoder),\n name: optional(nonEmptyStringDecoder),\n details: optional(v2DetailsDecoder),\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder)\n});\nconst v2DefinitionDecoder = object({\n appId: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder,\n type: v2TypeDecoder,\n details: v2DetailsDecoder,\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder),\n localizedVersions: optional(dict(v2LocalizedDefinitionDecoder))\n});\nconst allDefinitionsDecoder = oneOf(v1DefinitionDecoder, v2DefinitionDecoder);\n\nconst parseDecoderErrorToStringMessage = (error) => {\n return `${error.kind} at ${error.at}: ${JSON.stringify(error.input)}. Reason - ${error.message}`;\n};\n\nclass FDC3Service {\n fdc3ToDesktopDefinitionType = {\n web: \"window\",\n native: \"exe\",\n citrix: \"citrix\",\n onlineNative: \"clickonce\",\n other: \"window\"\n };\n toApi() {\n return {\n isFdc3Definition: this.isFdc3Definition.bind(this),\n parseToBrowserBaseAppData: this.parseToBrowserBaseAppData.bind(this),\n parseToDesktopAppConfig: this.parseToDesktopAppConfig.bind(this)\n };\n }\n isFdc3Definition(definition) {\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n return { isFdc3: false, reason: parseDecoderErrorToStringMessage(decodeRes.error) };\n }\n if (definition.appId && definition.details) {\n return { isFdc3: true, version: \"2.0\" };\n }\n if (definition.manifest) {\n return { isFdc3: true, version: \"1.2\" };\n }\n return { isFdc3: false, reason: \"The passed definition is not FDC3\" };\n }\n parseToBrowserBaseAppData(definition) {\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n const userProperties = this.getUserPropertiesFromDefinition(definition, version);\n const createOptions = { url: this.getUrl(definition, version) };\n const baseApplicationData = {\n name: definition.appId,\n type: \"window\",\n createOptions,\n userProperties: {\n ...userProperties,\n intents: version === \"1.2\"\n ? userProperties.intents\n : this.getIntentsFromV2AppDefinition(definition),\n details: createOptions\n },\n title: definition.title,\n version: definition.version,\n icon: this.getIconFromDefinition(definition, version),\n caption: definition.description,\n fdc3: version === \"2.0\" ? { ...definition, definitionVersion: \"2.0\" } : undefined,\n };\n const ioConnectDefinition = definition.hostManifests?.ioConnect || definition.hostManifests?.[\"Glue42\"];\n if (!ioConnectDefinition) {\n return baseApplicationData;\n }\n const ioDefinitionDecodeRes = glue42HostManifestsBrowserDecoder.run(ioConnectDefinition);\n if (!ioDefinitionDecodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(ioDefinitionDecodeRes.error)}`);\n }\n if (!Object.keys(ioDefinitionDecodeRes.result).length) {\n return baseApplicationData;\n }\n return this.mergeBaseAppDataWithGlueManifest(baseApplicationData, ioDefinitionDecodeRes.result);\n }\n parseToDesktopAppConfig(definition) {\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (version === \"1.2\") {\n const fdc3v1Definition = definition;\n return {\n name: fdc3v1Definition.appId,\n type: \"window\",\n details: {\n url: this.getUrl(definition, version)\n },\n version: fdc3v1Definition.version,\n title: fdc3v1Definition.title,\n tooltip: fdc3v1Definition.tooltip,\n caption: fdc3v1Definition.description,\n icon: fdc3v1Definition.icons?.[0].icon,\n intents: fdc3v1Definition.intents,\n customProperties: {\n manifestType: fdc3v1Definition.manifestType,\n images: fdc3v1Definition.images,\n contactEmail: fdc3v1Definition.contactEmail,\n supportEmail: fdc3v1Definition.supportEmail,\n publisher: fdc3v1Definition.publisher,\n icons: fdc3v1Definition.icons,\n customConfig: fdc3v1Definition.customConfig\n }\n };\n }\n const fdc3v2Definition = definition;\n const desktopDefinition = {\n name: fdc3v2Definition.appId,\n type: this.fdc3ToDesktopDefinitionType[fdc3v2Definition.type],\n details: fdc3v2Definition.details,\n version: fdc3v2Definition.version,\n title: fdc3v2Definition.title,\n tooltip: fdc3v2Definition.tooltip,\n caption: fdc3v2Definition.description,\n icon: this.getIconFromDefinition(fdc3v2Definition, \"2.0\"),\n intents: this.getIntentsFromV2AppDefinition(fdc3v2Definition),\n fdc3: { ...fdc3v2Definition, definitionVersion: \"2.0\" }\n };\n const ioConnectDefinition = definition.hostManifests?.ioConnect || definition.hostManifests?.[\"Glue42\"];\n if (!ioConnectDefinition) {\n return desktopDefinition;\n }\n if (typeof ioConnectDefinition !== \"object\" || Array.isArray(ioConnectDefinition)) {\n throw new Error(`Invalid '${definition.hostManifests.ioConnect ? \"hostManifests.ioConnect\" : \"hostManifests['Glue42']\"}' key`);\n }\n return this.mergeDesktopConfigWithGlueManifest(desktopDefinition, ioConnectDefinition);\n }\n getUserPropertiesFromDefinition(definition, version) {\n if (version === \"1.2\") {\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key)));\n }\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key) && !fdc3v2AppProps.includes(key)));\n }\n getUrl(definition, version) {\n let url;\n if (version === \"1.2\") {\n const parsedManifest = JSON.parse(definition.manifest);\n url = parsedManifest.details?.url || parsedManifest.url;\n }\n else {\n url = definition.details?.url;\n }\n if (!url || typeof url !== \"string\") {\n throw new Error(`Invalid FDC3 ${version} definition. Provide valid 'url' under '${version === \"1.2\" ? \"manifest\" : \"details\"}' key`);\n }\n return url;\n }\n getIntentsFromV2AppDefinition(definition) {\n const fdc3Intents = definition.interop?.intents?.listensFor;\n if (!fdc3Intents) {\n return;\n }\n const intents = Object.entries(fdc3Intents).map((fdc3Intent) => {\n const [intentName, intentData] = fdc3Intent;\n return {\n name: intentName,\n ...intentData\n };\n });\n return intents;\n }\n getIconFromDefinition(definition, version) {\n if (version === \"1.2\") {\n return definition.icons?.find((iconDef) => iconDef.icon)?.icon || undefined;\n }\n return definition.icons?.find((iconDef) => iconDef.src)?.src || undefined;\n }\n mergeBaseAppDataWithGlueManifest(baseAppData, hostManifestDefinition) {\n let baseApplicationDefinition = baseAppData;\n if (hostManifestDefinition.details) {\n const details = { ...baseAppData.createOptions, ...hostManifestDefinition.details };\n baseApplicationDefinition.createOptions = details;\n baseApplicationDefinition.userProperties.details = details;\n }\n if (Array.isArray(hostManifestDefinition.intents)) {\n baseApplicationDefinition.userProperties.intents = (baseApplicationDefinition.userProperties.intents || []).concat(hostManifestDefinition.intents);\n }\n baseApplicationDefinition = { ...baseApplicationDefinition, ...hostManifestDefinition };\n delete baseApplicationDefinition.details;\n delete baseApplicationDefinition.intents;\n return baseApplicationDefinition;\n }\n mergeDesktopConfigWithGlueManifest(config, desktopDefinition) {\n const appConfig = Object.assign({}, config, desktopDefinition, { details: { ...config.details, ...desktopDefinition.details } });\n if (Array.isArray(desktopDefinition.intents)) {\n appConfig.intents = (config.intents || []).concat(desktopDefinition.intents);\n }\n return appConfig;\n }\n}\n\nconst decoders$1 = {\n common: {\n nonEmptyStringDecoder,\n nonNegativeNumberDecoder\n },\n fdc3: {\n allDefinitionsDecoder,\n v1DefinitionDecoder,\n v2DefinitionDecoder\n }\n};\n\nvar INTENTS_ERRORS;\n(function (INTENTS_ERRORS) {\n INTENTS_ERRORS[\"USER_CANCELLED\"] = \"User Closed Intents Resolver UI without choosing a handler\";\n INTENTS_ERRORS[\"CALLER_NOT_DEFINED\"] = \"Caller Id is not defined\";\n INTENTS_ERRORS[\"TIMEOUT_HIT\"] = \"Timeout hit\";\n INTENTS_ERRORS[\"INTENT_NOT_FOUND\"] = \"Cannot find Intent\";\n INTENTS_ERRORS[\"HANDLER_NOT_FOUND\"] = \"Cannot find Intent Handler\";\n INTENTS_ERRORS[\"TARGET_INSTANCE_UNAVAILABLE\"] = \"Cannot start Target Instance\";\n INTENTS_ERRORS[\"INTENT_DELIVERY_FAILED\"] = \"Target Instance did not add a listener\";\n INTENTS_ERRORS[\"RESOLVER_UNAVAILABLE\"] = \"Intents Resolver UI unavailable\";\n INTENTS_ERRORS[\"RESOLVER_TIMEOUT\"] = \"User did not choose a handler\";\n INTENTS_ERRORS[\"INVALID_RESOLVER_RESPONSE\"] = \"Intents Resolver UI returned invalid response\";\n INTENTS_ERRORS[\"INTENT_HANDLER_REJECTION\"] = \"Intent Handler function processing the raised intent threw an error or rejected the promise it returned\";\n})(INTENTS_ERRORS || (INTENTS_ERRORS = {}));\n\nclass IoC {\n _fdc3;\n _decoders = decoders$1;\n _errors = {\n intents: INTENTS_ERRORS\n };\n get fdc3() {\n if (!this._fdc3) {\n this._fdc3 = new FDC3Service().toApi();\n }\n return this._fdc3;\n }\n get decoders() {\n return this._decoders;\n }\n get errors() {\n return this._errors;\n }\n}\n\nconst ioc = new IoC();\nconst fdc3 = ioc.fdc3;\nconst decoders = ioc.decoders;\nconst errors = ioc.errors;\n\nexport { decoders, errors, fdc3 };\n//# sourceMappingURL=utils.es.js.map\n",null,null,"\"use strict\";\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\n;\ncreateRegistry.default = createRegistry;\nmodule.exports = createRegistry;\n//# sourceMappingURL=index.js.map",null,null,null,null,null,null,null,null,null,null,null,null,null,"export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n","import { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"var MetricTypes = {\n STRING: 1,\n NUMBER: 2,\n TIMESTAMP: 3,\n OBJECT: 4\n};\n\nfunction getMetricTypeByValue(metric) {\n if (metric.type === MetricTypes.TIMESTAMP) {\n return \"timestamp\";\n }\n else if (metric.type === MetricTypes.NUMBER) {\n return \"number\";\n }\n else if (metric.type === MetricTypes.STRING) {\n return \"string\";\n }\n else if (metric.type === MetricTypes.OBJECT) {\n return \"object\";\n }\n return \"unknown\";\n}\nfunction getTypeByValue(value) {\n if (value.constructor === Date) {\n return \"timestamp\";\n }\n else if (typeof value === \"number\") {\n return \"number\";\n }\n else if (typeof value === \"string\") {\n return \"string\";\n }\n else if (typeof value === \"object\") {\n return \"object\";\n }\n else {\n return \"string\";\n }\n}\nfunction serializeMetric(metric) {\n const serializedMetrics = {};\n const type = getMetricTypeByValue(metric);\n if (type === \"object\") {\n const values = Object.keys(metric.value).reduce((memo, key) => {\n const innerType = getTypeByValue(metric.value[key]);\n if (innerType === \"object\") {\n const composite = defineNestedComposite(metric.value[key]);\n memo[key] = {\n type: \"object\",\n description: \"\",\n context: {},\n composite,\n };\n }\n else {\n memo[key] = {\n type: innerType,\n description: \"\",\n context: {},\n };\n }\n return memo;\n }, {});\n serializedMetrics.composite = values;\n }\n serializedMetrics.name = normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name);\n serializedMetrics.type = type;\n serializedMetrics.description = metric.description;\n serializedMetrics.context = {};\n return serializedMetrics;\n}\nfunction defineNestedComposite(values) {\n return Object.keys(values).reduce((memo, key) => {\n const type = getTypeByValue(values[key]);\n if (type === \"object\") {\n memo[key] = {\n type: \"object\",\n description: \"\",\n context: {},\n composite: defineNestedComposite(values[key]),\n };\n }\n else {\n memo[key] = {\n type,\n description: \"\",\n context: {},\n };\n }\n return memo;\n }, {});\n}\nfunction normalizeMetricName(name) {\n if (typeof name !== \"undefined\" && name.length > 0 && name[0] !== \"/\") {\n return \"/\" + name;\n }\n else {\n return name;\n }\n}\nfunction getMetricValueByType(metric) {\n const type = getMetricTypeByValue(metric);\n if (type === \"timestamp\") {\n return Date.now();\n }\n else {\n return publishNestedComposite(metric.value);\n }\n}\nfunction publishNestedComposite(values) {\n if (typeof values !== \"object\") {\n return values;\n }\n return Object.keys(values).reduce((memo, key) => {\n const value = values[key];\n if (typeof value === \"object\" && value.constructor !== Date) {\n memo[key] = publishNestedComposite(value);\n }\n else if (value.constructor === Date) {\n memo[key] = new Date(value).getTime();\n }\n else if (value.constructor === Boolean) {\n memo[key] = value.toString();\n }\n else {\n memo[key] = value;\n }\n return memo;\n }, {});\n}\nfunction flatten(arr) {\n return arr.reduce((flat, toFlatten) => {\n return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);\n }, []);\n}\nfunction getHighestState(arr) {\n return arr.sort((a, b) => {\n if (!a.state) {\n return 1;\n }\n if (!b.state) {\n return -1;\n }\n return b.state - a.state;\n })[0];\n}\nfunction aggregateDescription(arr) {\n let msg = \"\";\n arr.forEach((m, idx, a) => {\n const path = m.path.join(\".\");\n if (idx === a.length - 1) {\n msg += path + \".\" + m.name + \": \" + m.description;\n }\n else {\n msg += path + \".\" + m.name + \": \" + m.description + \",\";\n }\n });\n if (msg.length > 100) {\n return msg.slice(0, 100) + \"...\";\n }\n else {\n return msg;\n }\n}\nfunction composeMsgForRootStateMetric(system) {\n const aggregatedState = system.root.getAggregateState();\n const merged = flatten(aggregatedState);\n const highestState = getHighestState(merged);\n const aggregateDesc = aggregateDescription(merged);\n return {\n description: aggregateDesc,\n value: highestState.state,\n };\n}\n\nfunction gw3 (connection, config) {\n if (!connection || typeof connection !== \"object\") {\n throw new Error(\"Connection is required parameter\");\n }\n let joinPromise;\n let session;\n const init = (repo) => {\n let resolveReadyPromise;\n joinPromise = new Promise((resolve) => {\n resolveReadyPromise = resolve;\n });\n session = connection.domain(\"metrics\");\n session.onJoined((reconnect) => {\n if (!reconnect && resolveReadyPromise) {\n resolveReadyPromise();\n resolveReadyPromise = undefined;\n }\n const rootStateMetric = {\n name: \"/State\",\n type: \"object\",\n composite: {\n Description: {\n type: \"string\",\n description: \"\",\n },\n Value: {\n type: \"number\",\n description: \"\",\n },\n },\n description: \"System state\",\n context: {},\n };\n const defineRootMetricsMsg = {\n type: \"define\",\n metrics: [rootStateMetric],\n };\n session.send(defineRootMetricsMsg);\n if (reconnect) {\n replayRepo(repo);\n }\n });\n session.join({\n system: config.system,\n service: config.service,\n instance: config.instance\n });\n };\n const replayRepo = (repo) => {\n replaySystem(repo.root);\n };\n const replaySystem = (system) => {\n createSystem(system);\n system.metrics.forEach((m) => {\n createMetric(m);\n });\n system.subSystems.forEach((ss) => {\n replaySystem(ss);\n });\n };\n const createSystem = async (system) => {\n if (system.parent === undefined) {\n return;\n }\n await joinPromise;\n const metric = {\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\n type: \"object\",\n composite: {\n Description: {\n type: \"string\",\n description: \"\",\n },\n Value: {\n type: \"number\",\n description: \"\",\n },\n },\n description: \"System state\",\n context: {},\n };\n const createMetricsMsg = {\n type: \"define\",\n metrics: [metric],\n };\n session.send(createMetricsMsg);\n };\n const updateSystem = async (system, state) => {\n await joinPromise;\n const shadowedUpdateMetric = {\n type: \"publish\",\n values: [{\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\n value: {\n Description: state.description,\n Value: state.state,\n },\n timestamp: Date.now(),\n }],\n };\n session.send(shadowedUpdateMetric);\n const stateObj = composeMsgForRootStateMetric(system);\n const rootMetric = {\n type: \"publish\",\n peer_id: connection.peerId,\n values: [{\n name: \"/State\",\n value: {\n Description: stateObj.description,\n Value: stateObj.value,\n },\n timestamp: Date.now(),\n }],\n };\n session.send(rootMetric);\n };\n const createMetric = async (metric) => {\n const metricClone = cloneMetric(metric);\n await joinPromise;\n const m = serializeMetric(metricClone);\n const createMetricsMsg = {\n type: \"define\",\n metrics: [m],\n };\n session.send(createMetricsMsg);\n if (typeof metricClone.value !== \"undefined\") {\n updateMetricCore(metricClone);\n }\n };\n const updateMetric = async (metric) => {\n const metricClone = cloneMetric(metric);\n await joinPromise;\n updateMetricCore(metricClone);\n };\n const updateMetricCore = (metric) => {\n if (canUpdate()) {\n const value = getMetricValueByType(metric);\n const publishMetricsMsg = {\n type: \"publish\",\n values: [{\n name: normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name),\n value,\n timestamp: Date.now(),\n }],\n };\n return session.sendFireAndForget(publishMetricsMsg);\n }\n return Promise.resolve();\n };\n const cloneMetric = (metric) => {\n const metricClone = { ...metric };\n if (typeof metric.value === \"object\" && metric.value !== null) {\n metricClone.value = { ...metric.value };\n }\n return metricClone;\n };\n const canUpdate = () => {\n try {\n const func = config.canUpdateMetric ?? (() => true);\n return func();\n }\n catch {\n return true;\n }\n };\n return {\n init,\n createSystem,\n updateSystem,\n createMetric,\n updateMetric,\n };\n}\n\nvar Helpers = {\n validate: (definition, parent, transport) => {\n if (definition === null || typeof definition !== \"object\") {\n throw new Error(\"Missing definition\");\n }\n if (parent === null || typeof parent !== \"object\") {\n throw new Error(\"Missing parent\");\n }\n if (transport === null || typeof transport !== \"object\") {\n throw new Error(\"Missing transport\");\n }\n },\n};\n\nclass BaseMetric {\n definition;\n system;\n transport;\n value;\n type;\n path = [];\n name;\n description;\n get repo() {\n return this.system?.repo;\n }\n get id() { return `${this.system.path}/${name}`; }\n constructor(definition, system, transport, value, type) {\n this.definition = definition;\n this.system = system;\n this.transport = transport;\n this.value = value;\n this.type = type;\n Helpers.validate(definition, system, transport);\n this.path = system.path.slice(0);\n this.path.push(system.name);\n this.name = definition.name;\n this.description = definition.description;\n transport.createMetric(this);\n }\n update(newValue) {\n this.value = newValue;\n return this.transport.updateMetric(this);\n }\n}\n\nclass NumberMetric extends BaseMetric {\n constructor(definition, system, transport, value) {\n super(definition, system, transport, value, MetricTypes.NUMBER);\n }\n incrementBy(num) {\n this.update(this.value + num);\n }\n increment() {\n this.incrementBy(1);\n }\n decrement() {\n this.incrementBy(-1);\n }\n decrementBy(num) {\n this.incrementBy(num * -1);\n }\n}\n\nclass ObjectMetric extends BaseMetric {\n constructor(definition, system, transport, value) {\n super(definition, system, transport, value, MetricTypes.OBJECT);\n }\n update(newValue) {\n this.mergeValues(newValue);\n return this.transport.updateMetric(this);\n }\n mergeValues(values) {\n return Object.keys(this.value).forEach((k) => {\n if (typeof values[k] !== \"undefined\") {\n this.value[k] = values[k];\n }\n });\n }\n}\n\nclass StringMetric extends BaseMetric {\n constructor(definition, system, transport, value) {\n super(definition, system, transport, value, MetricTypes.STRING);\n }\n}\n\nclass TimestampMetric extends BaseMetric {\n constructor(definition, system, transport, value) {\n super(definition, system, transport, value, MetricTypes.TIMESTAMP);\n }\n now() {\n this.update(new Date());\n }\n}\n\nfunction system(name, repo, protocol, parent, description) {\n if (!repo) {\n throw new Error(\"Repository is required\");\n }\n if (!protocol) {\n throw new Error(\"Transport is required\");\n }\n const _transport = protocol;\n const _name = name;\n const _description = description || \"\";\n const _repo = repo;\n const _parent = parent;\n const _path = _buildPath(parent);\n let _state = {};\n const id = _arrayToString(_path, \"/\") + name;\n const root = repo.root;\n const _subSystems = [];\n const _metrics = [];\n function subSystem(nameSystem, descriptionSystem) {\n if (!nameSystem || nameSystem.length === 0) {\n throw new Error(\"name is required\");\n }\n const match = _subSystems.filter((s) => s.name === nameSystem);\n if (match.length > 0) {\n return match[0];\n }\n const _system = system(nameSystem, _repo, _transport, me, descriptionSystem);\n _subSystems.push(_system);\n return _system;\n }\n function setState(state, stateDescription) {\n _state = { state, description: stateDescription };\n _transport.updateSystem(me, _state);\n }\n function stringMetric(definition, value) {\n return _getOrCreateMetric(definition, MetricTypes.STRING, value, (metricDef) => new StringMetric(metricDef, me, _transport, value));\n }\n function numberMetric(definition, value) {\n return _getOrCreateMetric(definition, MetricTypes.NUMBER, value, (metricDef) => new NumberMetric(metricDef, me, _transport, value));\n }\n function objectMetric(definition, value) {\n return _getOrCreateMetric(definition, MetricTypes.OBJECT, value, (metricDef) => new ObjectMetric(metricDef, me, _transport, value));\n }\n function timestampMetric(definition, value) {\n return _getOrCreateMetric(definition, MetricTypes.TIMESTAMP, value, (metricDef) => new TimestampMetric(metricDef, me, _transport, value));\n }\n function _getOrCreateMetric(metricObject, expectedType, value, createMetric) {\n let metricDef = { name: \"\" };\n if (typeof metricObject === \"string\") {\n metricDef = { name: metricObject };\n }\n else {\n metricDef = metricObject;\n }\n const matching = _metrics.filter((shadowedMetric) => shadowedMetric.name === metricDef.name);\n if (matching.length > 0) {\n const existing = matching[0];\n if (existing.type !== expectedType) {\n throw new Error(`A metric named ${metricDef.name} is already defined with different type.`);\n }\n if (typeof value !== \"undefined\") {\n existing\n .update(value)\n .catch(() => { });\n }\n return existing;\n }\n const metric = createMetric(metricDef);\n _metrics.push(metric);\n return metric;\n }\n function _buildPath(shadowedSystem) {\n if (!shadowedSystem || !shadowedSystem.parent) {\n return [];\n }\n const path = _buildPath(shadowedSystem.parent);\n path.push(shadowedSystem.name);\n return path;\n }\n function _arrayToString(path, separator) {\n return ((path && path.length > 0) ? path.join(separator) : \"\");\n }\n function getAggregateState() {\n const aggState = [];\n if (Object.keys(_state).length > 0) {\n aggState.push({\n name: _name,\n path: _path,\n state: _state.state,\n description: _state.description,\n });\n }\n _subSystems.forEach((shadowedSubSystem) => {\n const result = shadowedSubSystem.getAggregateState();\n if (result.length > 0) {\n aggState.push(...result);\n }\n });\n return aggState;\n }\n const me = {\n get name() {\n return _name;\n },\n get description() {\n return _description;\n },\n get repo() {\n return _repo;\n },\n get parent() {\n return _parent;\n },\n path: _path,\n id,\n root,\n get subSystems() {\n return _subSystems;\n },\n get metrics() {\n return _metrics;\n },\n subSystem,\n getState: () => {\n return _state;\n },\n setState,\n stringMetric,\n timestampMetric,\n objectMetric,\n numberMetric,\n getAggregateState,\n };\n _transport.createSystem(me);\n return me;\n}\n\nclass Repository {\n root;\n constructor(options, protocol) {\n protocol.init(this);\n this.root = system(\"\", this, protocol);\n this.addSystemMetrics(this.root, options.clickStream || options.clickStream === undefined);\n }\n addSystemMetrics(rootSystem, useClickStream) {\n if (typeof navigator !== \"undefined\") {\n rootSystem.stringMetric(\"UserAgent\", navigator.userAgent);\n }\n if (useClickStream && typeof document !== \"undefined\") {\n const clickStream = rootSystem.subSystem(\"ClickStream\");\n const documentClickHandler = (e) => {\n if (!e.target) {\n return;\n }\n const target = e.target;\n const className = target ? target.getAttribute(\"class\") ?? \"\" : \"\";\n clickStream.objectMetric(\"LastBrowserEvent\", {\n type: \"click\",\n timestamp: new Date(),\n target: {\n className,\n id: target.id,\n type: \"<\" + target.tagName.toLowerCase() + \">\",\n href: target.href || \"\",\n },\n });\n };\n clickStream.objectMetric(\"Page\", {\n title: document.title,\n page: window.location.href,\n });\n if (document.addEventListener) {\n document.addEventListener(\"click\", documentClickHandler);\n }\n else {\n document.attachEvent(\"onclick\", documentClickHandler);\n }\n }\n rootSystem.stringMetric(\"StartTime\", (new Date()).toString());\n const urlMetric = rootSystem.stringMetric(\"StartURL\", \"\");\n const appNameMetric = rootSystem.stringMetric(\"AppName\", \"\");\n if (typeof window !== \"undefined\") {\n if (typeof window.location !== \"undefined\") {\n const startUrl = window.location.href;\n urlMetric.update(startUrl);\n }\n if (typeof window.glue42gd !== \"undefined\") {\n appNameMetric.update(window.glue42gd.appName);\n }\n }\n }\n}\n\nclass NullProtocol {\n init(repo) {\n }\n createSystem(system) {\n return Promise.resolve();\n }\n updateSystem(metric, state) {\n return Promise.resolve();\n }\n createMetric(metric) {\n return Promise.resolve();\n }\n updateMetric(metric) {\n return Promise.resolve();\n }\n}\n\nclass PerfTracker {\n api;\n lastCount = 0;\n initialPublishTimeout = 10 * 1000;\n publishInterval = 60 * 1000;\n system;\n constructor(api, initialPublishTimeout, publishInterval) {\n this.api = api;\n this.initialPublishTimeout = initialPublishTimeout ?? this.initialPublishTimeout;\n this.publishInterval = publishInterval ?? this.publishInterval;\n this.scheduleCollection();\n this.system = this.api.subSystem(\"performance\", \"Performance data published by the web application\");\n }\n scheduleCollection() {\n setTimeout(() => {\n this.collect();\n setInterval(() => {\n this.collect();\n }, this.publishInterval);\n }, this.initialPublishTimeout);\n }\n collect() {\n try {\n this.collectMemory();\n this.collectEntries();\n }\n catch {\n }\n }\n collectMemory() {\n const memory = window.performance.memory;\n this.system.stringMetric(\"memory\", JSON.stringify({\n totalJSHeapSize: memory.totalJSHeapSize,\n usedJSHeapSize: memory.usedJSHeapSize\n }));\n }\n collectEntries() {\n const allEntries = window.performance.getEntries();\n if (allEntries.length <= this.lastCount) {\n return;\n }\n this.lastCount = allEntries.length;\n const jsonfiedEntries = allEntries.map((i) => i.toJSON());\n this.system.stringMetric(\"entries\", JSON.stringify(jsonfiedEntries));\n }\n}\n\nvar metrics = (options) => {\n let protocol;\n if (!options.connection || typeof options.connection !== \"object\") {\n protocol = new NullProtocol();\n }\n else {\n protocol = gw3(options.connection, options);\n }\n const repo = new Repository(options, protocol);\n let rootSystem = repo.root;\n if (!options.disableAutoAppSystem) {\n rootSystem = rootSystem.subSystem(\"App\");\n }\n const api = addFAVSupport(rootSystem);\n initPerf(api, options.pagePerformanceMetrics);\n return api;\n};\nfunction initPerf(api, config) {\n if (typeof window === \"undefined\") {\n return;\n }\n const perfConfig = window?.glue42gd?.metrics?.pagePerformanceMetrics;\n if (perfConfig) {\n config = perfConfig;\n }\n if (config?.enabled) {\n new PerfTracker(api, config.initialPublishTimeout, config.publishInterval);\n }\n}\nfunction addFAVSupport(system) {\n const reportingSystem = system.subSystem(\"reporting\");\n const def = {\n name: \"features\"\n };\n let featureMetric;\n const featureMetricFunc = (name, action, payload) => {\n if (typeof name === \"undefined\" || name === \"\") {\n throw new Error(\"name is mandatory\");\n }\n else if (typeof action === \"undefined\" || action === \"\") {\n throw new Error(\"action is mandatory\");\n }\n else if (typeof payload === \"undefined\" || payload === \"\") {\n throw new Error(\"payload is mandatory\");\n }\n if (!featureMetric) {\n featureMetric = reportingSystem.objectMetric(def, { name, action, payload });\n }\n else {\n featureMetric.update({\n name,\n action,\n payload\n });\n }\n };\n system.featureMetric = featureMetricFunc;\n return system;\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\ncreateRegistry.default = createRegistry;\nvar lib = createRegistry;\n\n\nvar CallbackRegistryFactory = /*@__PURE__*/getDefaultExportFromCjs(lib);\n\nclass InProcTransport {\n gw;\n registry = CallbackRegistryFactory();\n client;\n constructor(settings, logger) {\n this.gw = settings.facade;\n this.gw.connect((_client, message) => {\n this.messageHandler(message);\n }).then((client) => {\n this.client = client;\n });\n }\n get isObjectBasedTransport() {\n return true;\n }\n sendObject(msg) {\n if (this.client) {\n this.client.send(msg);\n return Promise.resolve(undefined);\n }\n else {\n return Promise.reject(`not connected`);\n }\n }\n send(_msg) {\n return Promise.reject(\"not supported\");\n }\n onMessage(callback) {\n return this.registry.add(\"onMessage\", callback);\n }\n onConnectedChanged(callback) {\n callback(true);\n return () => { };\n }\n close() {\n return Promise.resolve();\n }\n open() {\n return Promise.resolve();\n }\n name() {\n return \"in-memory\";\n }\n reconnect() {\n return Promise.resolve();\n }\n messageHandler(msg) {\n this.registry.execute(\"onMessage\", msg);\n }\n}\n\nclass SharedWorkerTransport {\n logger;\n worker;\n registry = CallbackRegistryFactory();\n constructor(workerFile, logger) {\n this.logger = logger;\n this.worker = new SharedWorker(workerFile);\n this.worker.port.onmessage = (e) => {\n this.messageHandler(e.data);\n };\n }\n get isObjectBasedTransport() {\n return true;\n }\n sendObject(msg) {\n this.worker.port.postMessage(msg);\n return Promise.resolve();\n }\n send(_msg) {\n return Promise.reject(\"not supported\");\n }\n onMessage(callback) {\n return this.registry.add(\"onMessage\", callback);\n }\n onConnectedChanged(callback) {\n callback(true);\n return () => { };\n }\n close() {\n return Promise.resolve();\n }\n open() {\n return Promise.resolve();\n }\n name() {\n return \"shared-worker\";\n }\n reconnect() {\n return Promise.resolve();\n }\n messageHandler(msg) {\n this.registry.execute(\"onMessage\", msg);\n }\n}\n\nclass Utils {\n static isNode() {\n if (typeof Utils._isNode !== \"undefined\") {\n return Utils._isNode;\n }\n if (typeof window !== \"undefined\") {\n Utils._isNode = false;\n return false;\n }\n try {\n Utils._isNode = Object.prototype.toString.call(global.process) === \"[object process]\";\n }\n catch (e) {\n Utils._isNode = false;\n }\n return Utils._isNode;\n }\n static _isNode;\n}\n\nclass PromiseWrapper {\n static delay(time) {\n return new Promise((resolve) => setTimeout(resolve, time));\n }\n resolve;\n reject;\n promise;\n rejected = false;\n resolved = false;\n get ended() {\n return this.rejected || this.resolved;\n }\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = (t) => {\n this.resolved = true;\n resolve(t);\n };\n this.reject = (err) => {\n this.rejected = true;\n reject(err);\n };\n });\n }\n}\n\nconst timers = {};\nfunction getAllTimers() {\n return timers;\n}\nfunction timer (timerName) {\n const existing = timers[timerName];\n if (existing) {\n return existing;\n }\n const marks = [];\n function now() {\n return new Date().getTime();\n }\n const startTime = now();\n mark(\"start\", startTime);\n let endTime;\n let period;\n function stop() {\n endTime = now();\n mark(\"end\", endTime);\n period = endTime - startTime;\n return period;\n }\n function mark(name, time) {\n const currentTime = time ?? now();\n let diff = 0;\n if (marks.length > 0) {\n diff = currentTime - marks[marks.length - 1].time;\n }\n marks.push({ name, time: currentTime, diff });\n }\n const timerObj = {\n get startTime() {\n return startTime;\n },\n get endTime() {\n return endTime;\n },\n get period() {\n return period;\n },\n stop,\n mark,\n marks\n };\n timers[timerName] = timerObj;\n return timerObj;\n}\n\nconst WebSocketConstructor = Utils.isNode() ? require(\"ws\") : window.WebSocket;\nclass WS {\n ws;\n logger;\n settings;\n startupTimer = timer(\"connection\");\n _running = true;\n _registry = CallbackRegistryFactory();\n wsRequests = [];\n constructor(settings, logger) {\n this.settings = settings;\n this.logger = logger;\n if (!this.settings.ws) {\n throw new Error(\"ws is missing\");\n }\n }\n onMessage(callback) {\n return this._registry.add(\"onMessage\", callback);\n }\n send(msg, options) {\n return new Promise((resolve, reject) => {\n this.waitForSocketConnection(() => {\n try {\n this.ws?.send(msg);\n resolve();\n }\n catch (e) {\n reject(e);\n }\n }, reject);\n });\n }\n open() {\n this.logger.info(\"opening ws...\");\n this._running = true;\n return new Promise((resolve, reject) => {\n this.waitForSocketConnection(resolve, reject);\n });\n }\n close() {\n this._running = false;\n if (this.ws) {\n this.ws.close();\n }\n return Promise.resolve();\n }\n onConnectedChanged(callback) {\n return this._registry.add(\"onConnectedChanged\", callback);\n }\n name() {\n return this.settings.ws;\n }\n reconnect() {\n this.ws?.close();\n const pw = new PromiseWrapper();\n this.waitForSocketConnection(() => {\n pw.resolve();\n });\n return pw.promise;\n }\n waitForSocketConnection(callback, failed) {\n failed = failed ?? (() => { });\n if (!this._running) {\n failed(`wait for socket on ${this.settings.ws} failed - socket closed by user`);\n return;\n }\n if (this.ws?.readyState === 1) {\n callback();\n return;\n }\n this.wsRequests.push({ callback, failed });\n if (this.wsRequests.length > 1) {\n return;\n }\n this.openSocket();\n }\n async openSocket(retryInterval, retriesLeft) {\n this.logger.info(`opening ws to ${this.settings.ws}, retryInterval: ${retryInterval}, retriesLeft: ${retriesLeft}...`);\n this.startupTimer.mark(\"opening-socket\");\n if (retryInterval === undefined) {\n retryInterval = this.settings.reconnectInterval;\n }\n if (typeof retriesLeft === \"undefined\") {\n retriesLeft = this.settings.reconnectAttempts;\n }\n if (retriesLeft !== undefined) {\n if (retriesLeft === 0) {\n this.notifyForSocketState(`wait for socket on ${this.settings.ws} failed - no more retries left`);\n return;\n }\n this.logger.debug(`will retry ${retriesLeft} more times (every ${retryInterval} ms)`);\n }\n try {\n await this.initiateSocket();\n this.startupTimer.mark(\"socket-initiated\");\n this.notifyForSocketState();\n }\n catch {\n setTimeout(() => {\n const retries = retriesLeft === undefined ? undefined : retriesLeft - 1;\n this.openSocket(retryInterval, retries);\n }, retryInterval);\n }\n }\n initiateSocket() {\n const pw = new PromiseWrapper();\n this.logger.debug(`initiating ws to ${this.settings.ws}...`);\n this.ws = new WebSocketConstructor(this.settings.ws ?? \"\");\n this.ws.onerror = (err) => {\n let reason = \"\";\n try {\n reason = JSON.stringify(err);\n }\n catch (error) {\n const seen = new WeakSet();\n const replacer = (key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) {\n return;\n }\n seen.add(value);\n }\n return value;\n };\n reason = JSON.stringify(err, replacer);\n }\n this.logger.info(`ws error - reason: ${reason}`);\n pw.reject(\"error\");\n this.notifyStatusChanged(false, reason);\n };\n this.ws.onclose = (err) => {\n this.logger.info(`ws closed - code: ${err?.code} reason: ${err?.reason}`);\n pw.reject(\"closed\");\n this.notifyStatusChanged(false);\n };\n this.ws.onopen = () => {\n this.startupTimer.mark(\"ws-opened\");\n this.logger.info(`ws opened ${this.settings.identity?.application}`);\n pw.resolve();\n this.notifyStatusChanged(true);\n };\n this.ws.onmessage = (message) => {\n this._registry.execute(\"onMessage\", message.data);\n };\n return pw.promise;\n }\n notifyForSocketState(error) {\n this.wsRequests.forEach((wsRequest) => {\n if (error) {\n if (wsRequest.failed) {\n wsRequest.failed(error);\n }\n }\n else {\n wsRequest.callback();\n }\n });\n this.wsRequests = [];\n }\n notifyStatusChanged(status, reason) {\n this._registry.execute(\"onConnectedChanged\", status, reason);\n }\n}\n\nclass MessageReplayerImpl {\n specs;\n specsNames = [];\n messages = {};\n isDone;\n subs = {};\n subsRefCount = {};\n connection;\n constructor(specs) {\n this.specs = {};\n for (const spec of specs) {\n this.specs[spec.name] = spec;\n this.specsNames.push(spec.name);\n }\n }\n init(connection) {\n this.connection = connection;\n for (const name of this.specsNames) {\n for (const type of this.specs[name].types) {\n let refCount = this.subsRefCount[type];\n if (!refCount) {\n refCount = 0;\n }\n refCount += 1;\n this.subsRefCount[type] = refCount;\n if (refCount > 1) {\n continue;\n }\n const sub = connection.on(type, (msg) => this.processMessage(type, msg));\n this.subs[type] = sub;\n }\n }\n }\n processMessage(type, msg) {\n if (this.isDone || !msg) {\n return;\n }\n for (const name of this.specsNames) {\n if (this.specs[name].types.indexOf(type) !== -1) {\n const messages = this.messages[name] || [];\n this.messages[name] = messages;\n messages.push(msg);\n }\n }\n }\n drain(name, callback) {\n if (callback) {\n (this.messages[name] || []).forEach(callback);\n }\n delete this.messages[name];\n for (const type of this.specs[name].types) {\n this.subsRefCount[type] -= 1;\n if (this.subsRefCount[type] <= 0) {\n this.connection?.off(this.subs[type]);\n delete this.subs[type];\n delete this.subsRefCount[type];\n }\n }\n delete this.specs[name];\n if (!this.specs.length) {\n this.isDone = true;\n }\n }\n}\n\nconst urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict';\n\nlet nanoid = (size = 21) => {\n let id = '';\n let bytes = crypto.getRandomValues(new Uint8Array(size));\n while (size--) {\n id += urlAlphabet[bytes[size] & 63];\n }\n return id\n};\n\nconst PromisePlus = (executor, timeoutMilliseconds, timeoutMessage) => {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\n reject(message);\n }, timeoutMilliseconds);\n const providedPromise = new Promise(executor);\n providedPromise\n .then((result) => {\n clearTimeout(timeout);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timeout);\n reject(error);\n });\n });\n};\n\nclass WebPlatformTransport {\n settings;\n logger;\n identity;\n isPreferredActivated;\n _communicationId;\n publicWindowId;\n selfAssignedWindowId;\n iAmConnected = false;\n parentReady = false;\n rejected = false;\n parentPingResolve;\n parentPingInterval;\n connectionResolve;\n extConnectionResolve;\n extConnectionReject;\n connectionReject;\n port;\n myClientId;\n children = [];\n extContentAvailable = false;\n extContentConnecting = false;\n extContentConnected = false;\n parentWindowId;\n parentInExtMode = false;\n webNamespace = \"g42_core_web\";\n parent;\n parentType;\n parentPingTimeout = 5000;\n connectionRequestTimeout = 7000;\n defaultTargetString = \"*\";\n registry = CallbackRegistryFactory();\n messages = {\n connectionAccepted: { name: \"connectionAccepted\", handle: this.handleConnectionAccepted.bind(this) },\n connectionRejected: { name: \"connectionRejected\", handle: this.handleConnectionRejected.bind(this) },\n connectionRequest: { name: \"connectionRequest\", handle: this.handleConnectionRequest.bind(this) },\n parentReady: {\n name: \"parentReady\", handle: () => {\n }\n },\n parentPing: { name: \"parentPing\", handle: this.handleParentPing.bind(this) },\n platformPing: { name: \"platformPing\", handle: this.handlePlatformPing.bind(this) },\n platformReady: { name: \"platformReady\", handle: this.handlePlatformReady.bind(this) },\n clientUnload: { name: \"clientUnload\", handle: this.handleClientUnload.bind(this) },\n manualUnload: { name: \"manualUnload\", handle: this.handleManualUnload.bind(this) },\n extConnectionResponse: { name: \"extConnectionResponse\", handle: this.handleExtConnectionResponse.bind(this) },\n extSetupRequest: { name: \"extSetupRequest\", handle: this.handleExtSetupRequest.bind(this) },\n gatewayDisconnect: { name: \"gatewayDisconnect\", handle: this.handleGatewayDisconnect.bind(this) },\n gatewayInternalConnect: { name: \"gatewayInternalConnect\", handle: this.handleGatewayInternalConnect.bind(this) }\n };\n constructor(settings, logger, identity) {\n this.settings = settings;\n this.logger = logger;\n this.identity = identity;\n this.extContentAvailable = !!window.glue42ext;\n this.setUpMessageListener();\n this.setUpUnload();\n this.setupPlatformUnloadListener();\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : undefined;\n }\n manualSetReadyState() {\n this.iAmConnected = true;\n this.parentReady = true;\n }\n get transportWindowId() {\n return this.publicWindowId;\n }\n get communicationId() {\n return this._communicationId;\n }\n async sendObject(msg) {\n if (this.extContentConnected) {\n return window.postMessage({ glue42ExtOut: msg }, this.defaultTargetString);\n }\n if (!this.port) {\n throw new Error(\"Cannot send message, because the port was not opened yet\");\n }\n this.port.postMessage(msg);\n }\n get isObjectBasedTransport() {\n return true;\n }\n onMessage(callback) {\n return this.registry.add(\"onMessage\", callback);\n }\n send() {\n return Promise.reject(\"not supported\");\n }\n onConnectedChanged(callback) {\n return this.registry.add(\"onConnectedChanged\", callback);\n }\n async open() {\n this.logger.debug(\"opening a connection to the web platform gateway.\");\n await this.connect();\n this.notifyStatusChanged(true);\n }\n close() {\n const message = {\n glue42core: {\n type: this.messages.gatewayDisconnect.name,\n data: {\n clientId: this.myClientId,\n ownWindowId: this.identity?.windowId\n }\n }\n };\n this.port?.postMessage(message);\n this.parentReady = false;\n this.notifyStatusChanged(false, \"manual reconnection\");\n return Promise.resolve();\n }\n name() {\n return \"web-platform\";\n }\n async reconnect() {\n await this.close();\n return Promise.resolve();\n }\n initiateInternalConnection() {\n return new Promise((resolve, reject) => {\n this.logger.debug(\"opening an internal web platform connection\");\n this.port = this.settings.port;\n if (this.iAmConnected) {\n this.logger.warn(\"cannot open a new connection, because this client is currently connected\");\n return;\n }\n this.port.onmessage = (event) => {\n if (this.iAmConnected && !event.data?.glue42core) {\n this.registry.execute(\"onMessage\", event.data);\n return;\n }\n const data = event.data?.glue42core;\n if (!data) {\n return;\n }\n if (data.type === this.messages.gatewayInternalConnect.name && data.success) {\n this.publicWindowId = this.settings.windowId;\n if (this.identity && this.publicWindowId) {\n this.identity.windowId = this.publicWindowId;\n this.identity.instance = this.publicWindowId;\n }\n resolve();\n }\n if (data.type === this.messages.gatewayInternalConnect.name && data.error) {\n reject(data.error);\n }\n };\n this.port.postMessage({\n glue42core: {\n type: this.messages.gatewayInternalConnect.name\n }\n });\n });\n }\n initiateRemoteConnection(target) {\n return PromisePlus((resolve, reject) => {\n this.connectionResolve = resolve;\n this.connectionReject = reject;\n this.myClientId = this.myClientId ?? nanoid(10);\n const bridgeInstanceId = this.getMyWindowId() || nanoid(10);\n const request = {\n glue42core: {\n type: this.messages.connectionRequest.name,\n clientId: this.myClientId,\n clientType: \"child\",\n bridgeInstanceId,\n selfAssignedWindowId: this.selfAssignedWindowId\n }\n };\n this.logger.debug(\"sending connection request\");\n if (this.extContentConnecting) {\n request.glue42core.clientType = \"child\";\n request.glue42core.bridgeInstanceId = this.myClientId;\n request.glue42core.parentWindowId = this.parentWindowId;\n return window.postMessage(request, this.defaultTargetString);\n }\n if (!target) {\n throw new Error(\"Cannot send a connection request, because no glue target was specified!\");\n }\n target.postMessage(request, this.defaultTargetString);\n }, this.connectionRequestTimeout, \"The connection to the target glue window timed out\");\n }\n async isParentCheckSuccess(parentCheck) {\n try {\n await parentCheck;\n return { success: true };\n }\n catch (error) {\n return { success: false };\n }\n }\n setUpMessageListener() {\n if (this.settings.port) {\n this.logger.debug(\"skipping generic message listener, because this is an internal client\");\n return;\n }\n window.addEventListener(\"message\", (event) => {\n const data = event.data?.glue42core;\n if (!data || this.rejected) {\n return;\n }\n const allowedOrigins = this.settings.allowedOrigins || [];\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\n this.logger.warn(`received a message from an origin which is not in the allowed list: ${event.origin}`);\n return;\n }\n if (!this.checkMessageTypeValid(data.type)) {\n this.logger.error(`cannot handle the incoming glue42 core message, because the type is invalid: ${data.type}`);\n return;\n }\n const messageType = data.type;\n this.logger.debug(`received valid glue42core message of type: ${messageType}`);\n this.messages[messageType].handle(event);\n });\n }\n setUpUnload() {\n if (this.settings.port) {\n this.logger.debug(\"skipping unload event listener, because this is an internal client\");\n return;\n }\n window.addEventListener(\"beforeunload\", () => {\n if (this.extContentConnected) {\n return;\n }\n const message = {\n glue42core: {\n type: this.messages.clientUnload.name,\n data: {\n clientId: this.myClientId,\n ownWindowId: this.identity?.windowId\n }\n }\n };\n if (this.parent) {\n this.parent.postMessage(message, this.defaultTargetString);\n }\n this.port?.postMessage(message);\n });\n }\n handlePlatformReady(event) {\n this.logger.debug(\"the web platform gave the ready signal\");\n this.parentReady = true;\n if (this.parentPingResolve) {\n this.parentPingResolve();\n delete this.parentPingResolve;\n }\n if (this.parentPingInterval) {\n clearInterval(this.parentPingInterval);\n delete this.parentPingInterval;\n }\n this.parent = event.source;\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : \"window\";\n }\n handleConnectionAccepted(event) {\n const data = event.data?.glue42core;\n if (this.myClientId === data.clientId) {\n return this.handleAcceptanceOfMyRequest(data);\n }\n return this.handleAcceptanceOfGrandChildRequest(data, event);\n }\n handleAcceptanceOfMyRequest(data) {\n this.logger.debug(\"handling a connection accepted signal targeted at me.\");\n this.isPreferredActivated = data.isPreferredActivated;\n if (this.extContentConnecting) {\n return this.processExtContentConnection(data);\n }\n if (!data.port) {\n this.logger.error(\"cannot set up my connection, because I was not provided with a port\");\n return;\n }\n this.publicWindowId = this.getMyWindowId();\n if (this.identity) {\n this.identity.windowId = this.publicWindowId;\n this.identity.instance = this.identity.instance ? this.identity.instance : this.publicWindowId || nanoid(10);\n }\n if (this.identity && data.appName) {\n this.identity.application = data.appName;\n this.identity.applicationName = data.appName;\n }\n this._communicationId = data.communicationId;\n this.port = data.port;\n this.port.onmessage = (e) => this.registry.execute(\"onMessage\", e.data);\n if (this.connectionResolve) {\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\n this.connectionResolve();\n delete this.connectionResolve;\n return;\n }\n this.logger.error(\"unable to call the connection resolve, because no connection promise was found\");\n }\n processExtContentConnection(data) {\n this.logger.debug(\"handling a connection accepted signal targeted at me for extension content connection.\");\n this.extContentConnecting = false;\n this.extContentConnected = true;\n this.publicWindowId = this.parentWindowId || this.myClientId;\n if (this.extContentConnecting && this.identity) {\n this.identity.windowId = this.publicWindowId;\n }\n if (this.identity && data.appName) {\n this.identity.application = data.appName;\n this.identity.applicationName = data.appName;\n }\n window.addEventListener(\"message\", (event) => {\n const extData = event.data?.glue42ExtInc;\n if (!extData) {\n return;\n }\n const allowedOrigins = this.settings.allowedOrigins || [];\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\n this.logger.warn(`received a message from an origin which is not in the allowed list: ${event.origin}`);\n return;\n }\n this.registry.execute(\"onMessage\", extData);\n });\n if (this.connectionResolve) {\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\n this.connectionResolve();\n delete this.connectionResolve;\n return;\n }\n }\n handleAcceptanceOfGrandChildRequest(data, event) {\n if (this.extContentConnecting || this.extContentConnected) {\n this.logger.debug(\"cannot process acceptance of a grandchild, because I am connected to a content script\");\n return;\n }\n this.logger.debug(`handling a connection accepted signal targeted at a grandchild: ${data.clientId}`);\n const child = this.children.find((c) => c.grandChildId === data.clientId);\n if (!child) {\n this.logger.error(`cannot handle connection accepted for grandchild: ${data.clientId}, because there is no grandchild with this id`);\n return;\n }\n child.connected = true;\n this.logger.debug(`the grandchild connection for ${data.clientId} is set up, forwarding the success message and the gateway port`);\n data.parentWindowId = this.publicWindowId;\n child.source.postMessage(event.data, child.origin, [data.port]);\n return;\n }\n handleConnectionRejected() {\n this.logger.debug(\"handling a connection rejection. Most likely the reason is that this window was not created by a glue API call\");\n if (this.connectionReject) {\n this.connectionReject(\"The platform connection was rejected. Most likely because this window was not created by a glue API call\");\n delete this.connectionReject;\n }\n }\n handleConnectionRequest(event) {\n if (this.extContentConnecting) {\n this.logger.debug(\"This connection request event is targeted at the extension content\");\n return;\n }\n const source = event.source;\n const data = event.data.glue42core;\n if (!data.clientType || data.clientType !== \"grandChild\") {\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source was not opened by a glue API call\");\n }\n if (!data.clientId) {\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source did not provide a valid id\");\n }\n if (!this.parent) {\n return this.rejectConnectionRequest(source, event.origin, \"Cannot forward the connection request, because no direct connection to the platform was found\");\n }\n this.logger.debug(`handling a connection request for a grandchild: ${data.clientId}`);\n this.children.push({ grandChildId: data.clientId, source, connected: false, origin: event.origin });\n this.logger.debug(`grandchild: ${data.clientId} is prepared, forwarding connection request to the platform`);\n this.parent.postMessage(event.data, this.defaultTargetString);\n }\n handleParentPing(event) {\n if (!this.parentReady) {\n this.logger.debug(\"my parent is not ready, I am ignoring the parent ping\");\n return;\n }\n if (!this.iAmConnected) {\n this.logger.debug(\"i am not fully connected yet, I am ignoring the parent ping\");\n return;\n }\n const message = {\n glue42core: {\n type: this.messages.parentReady.name\n }\n };\n if (this.extContentConnected) {\n message.glue42core.extMode = { windowId: this.myClientId };\n }\n const source = event.source;\n this.logger.debug(\"responding to a parent ping with a ready message\");\n source.postMessage(message, event.origin);\n }\n setupPlatformUnloadListener() {\n this.onMessage((msg) => {\n if (msg.type === \"platformUnload\") {\n this.logger.debug(\"detected a web platform unload\");\n this.parentReady = false;\n this.notifyStatusChanged(false, \"Gateway unloaded\");\n }\n });\n }\n handleManualUnload() {\n const message = {\n glue42core: {\n type: this.messages.clientUnload.name,\n data: {\n clientId: this.myClientId,\n ownWindowId: this.identity?.windowId\n }\n }\n };\n if (this.extContentConnected) {\n return window.postMessage({ glue42ExtOut: message }, this.defaultTargetString);\n }\n this.port?.postMessage(message);\n }\n handleClientUnload(event) {\n const data = event.data.glue42core;\n const clientId = data?.data.clientId;\n if (!clientId) {\n this.logger.warn(\"cannot process grand child unload, because the provided id was not valid\");\n return;\n }\n const foundChild = this.children.find((child) => child.grandChildId === clientId);\n if (!foundChild) {\n this.logger.warn(\"cannot process grand child unload, because this client is unaware of this grandchild\");\n return;\n }\n this.logger.debug(`handling grandchild unload for id: ${clientId}`);\n this.children = this.children.filter((child) => child.grandChildId !== clientId);\n }\n handlePlatformPing() {\n return;\n }\n notifyStatusChanged(status, reason) {\n this.iAmConnected = status;\n this.registry.execute(\"onConnectedChanged\", status, reason);\n }\n checkMessageTypeValid(typeToValidate) {\n return typeof typeToValidate === \"string\" && !!this.messages[typeToValidate];\n }\n rejectConnectionRequest(source, origin, reason) {\n this.rejected = true;\n this.logger.error(reason);\n const rejection = {\n glue42core: {\n type: this.messages.connectionRejected.name\n }\n };\n source.postMessage(rejection, origin);\n }\n requestConnectionPermissionFromExt() {\n return this.waitForContentScript()\n .then(() => PromisePlus((resolve, reject) => {\n this.extConnectionResolve = resolve;\n this.extConnectionReject = reject;\n const message = {\n glue42core: {\n type: \"extSetupRequest\"\n }\n };\n this.logger.debug(\"permission request to the extension content script was sent\");\n window.postMessage(message, this.defaultTargetString);\n }, this.parentPingTimeout, \"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out\"));\n }\n handleExtConnectionResponse(event) {\n const data = event.data?.glue42core;\n if (!data.approved) {\n return this.extConnectionReject ? this.extConnectionReject(\"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection was rejected\") : undefined;\n }\n if (this.extConnectionResolve) {\n this.extConnectionResolve();\n delete this.extConnectionResolve;\n }\n this.extContentConnecting = true;\n this.parentType = \"extension\";\n this.logger.debug(\"The extension connection was approved, proceeding.\");\n }\n handleExtSetupRequest() {\n return;\n }\n handleGatewayDisconnect() {\n return;\n }\n handleGatewayInternalConnect() {\n return;\n }\n waitForContentScript() {\n const contentReady = !!window.glue42ext?.content;\n if (contentReady) {\n return Promise.resolve();\n }\n return PromisePlus((resolve) => {\n window.addEventListener(\"Glue42EXTReady\", () => {\n resolve();\n });\n }, this.connectionRequestTimeout, \"The content script was available, but was never heard to be ready\");\n }\n async connect() {\n if (this.settings.port) {\n await this.initiateInternalConnection();\n this.logger.debug(\"internal web platform connection completed\");\n return;\n }\n this.logger.debug(\"opening a client web platform connection\");\n await this.findParent();\n await this.initiateRemoteConnection(this.parent);\n this.logger.debug(\"the client is connected\");\n }\n async findParent() {\n const connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\n const myInsideParents = this.getPossibleParentsInWindow(window);\n const myOutsideParents = this.getPossibleParentsOutsideWindow(window.top?.opener, window.top);\n const uniqueParents = new Set([...myInsideParents, ...myOutsideParents]);\n if (!uniqueParents.size && !this.extContentAvailable) {\n throw new Error(connectionNotPossibleMsg);\n }\n if (!uniqueParents.size && this.extContentAvailable) {\n await this.requestConnectionPermissionFromExt();\n return;\n }\n const defaultParentCheck = await this.isParentCheckSuccess(this.confirmParent(Array.from(uniqueParents)));\n if (defaultParentCheck.success) {\n this.logger.debug(\"The default parent was found!\");\n return;\n }\n if (!this.extContentAvailable) {\n throw new Error(connectionNotPossibleMsg);\n }\n await this.requestConnectionPermissionFromExt();\n }\n getPossibleParentsInWindow(currentWindow) {\n return (!currentWindow || currentWindow === currentWindow.top) ? [] : [currentWindow.parent, ...this.getPossibleParentsInWindow(currentWindow.parent)];\n }\n getPossibleParentsOutsideWindow(opener, current) {\n return (!opener || !current || opener === current) ? [] : [opener, ...this.getPossibleParentsInWindow(opener), ...this.getPossibleParentsOutsideWindow(opener.opener, opener)];\n }\n confirmParent(targets) {\n const connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\n const parentCheck = PromisePlus((resolve) => {\n this.parentPingResolve = resolve;\n const message = {\n glue42core: {\n type: this.messages.platformPing.name\n }\n };\n this.parentPingInterval = setInterval(() => {\n targets.forEach((target) => {\n target.postMessage(message, this.defaultTargetString);\n });\n }, 1000);\n }, this.parentPingTimeout, connectionNotPossibleMsg);\n parentCheck.catch(() => {\n if (this.parentPingInterval) {\n clearInterval(this.parentPingInterval);\n delete this.parentPingInterval;\n }\n });\n return parentCheck;\n }\n getMyWindowId() {\n if (this.parentType === \"workspace\") {\n return window.name.substring(0, window.name.indexOf(\"#wsp\"));\n }\n if (window !== window.top) {\n return;\n }\n if (window.name?.includes(\"g42\")) {\n return window.name;\n }\n this.selfAssignedWindowId = this.selfAssignedWindowId || `g42-${nanoid(10)}`;\n return this.selfAssignedWindowId;\n }\n}\n\nconst waitForInvocations = (invocations, callback) => {\n let left = invocations;\n return () => {\n left--;\n if (left === 0) {\n callback();\n }\n };\n};\n\nclass AsyncSequelizer {\n minSequenceInterval;\n queue = [];\n isExecutingQueue = false;\n constructor(minSequenceInterval = 0) {\n this.minSequenceInterval = minSequenceInterval;\n }\n enqueue(action) {\n return new Promise((resolve, reject) => {\n this.queue.push({ action, resolve, reject });\n this.executeQueue();\n });\n }\n async executeQueue() {\n if (this.isExecutingQueue) {\n return;\n }\n this.isExecutingQueue = true;\n while (this.queue.length) {\n const operation = this.queue.shift();\n if (!operation) {\n this.isExecutingQueue = false;\n return;\n }\n try {\n const actionResult = await operation.action();\n operation.resolve(actionResult);\n }\n catch (error) {\n operation.reject(error);\n }\n await this.intervalBreak();\n }\n this.isExecutingQueue = false;\n }\n intervalBreak() {\n return new Promise((res) => setTimeout(res, this.minSequenceInterval));\n }\n}\n\nfunction domainSession (domain, connection, logger, successMessages, errorMessages) {\n if (domain == null) {\n domain = \"global\";\n }\n successMessages = successMessages ?? [\"success\"];\n errorMessages = errorMessages ?? [\"error\"];\n let isJoined = domain === \"global\";\n let tryReconnecting = false;\n let _latestOptions;\n let _connectionOn = false;\n const callbacks = CallbackRegistryFactory();\n connection.disconnected(handleConnectionDisconnected);\n connection.loggedIn(handleConnectionLoggedIn);\n connection.on(\"success\", (msg) => handleSuccessMessage(msg));\n connection.on(\"error\", (msg) => handleErrorMessage(msg));\n connection.on(\"result\", (msg) => handleSuccessMessage(msg));\n if (successMessages) {\n successMessages.forEach((sm) => {\n connection.on(sm, (msg) => handleSuccessMessage(msg));\n });\n }\n if (errorMessages) {\n errorMessages.forEach((sm) => {\n connection.on(sm, (msg) => handleErrorMessage(msg));\n });\n }\n const requestsMap = {};\n function join(options) {\n _latestOptions = options;\n return new Promise((resolve, reject) => {\n if (isJoined) {\n resolve({});\n return;\n }\n let joinPromise;\n if (domain === \"global\") {\n joinPromise = _connectionOn ? Promise.resolve({}) : Promise.reject(\"not connected to gateway\");\n }\n else {\n logger.debug(`joining domain ${domain}`);\n const joinMsg = {\n type: \"join\",\n destination: domain,\n domain: \"global\",\n options,\n };\n joinPromise = send(joinMsg);\n }\n joinPromise\n .then(() => {\n handleJoined();\n resolve({});\n })\n .catch((err) => {\n logger.debug(\"error joining \" + domain + \" domain: \" + JSON.stringify(err));\n reject(err);\n });\n });\n }\n function leave() {\n if (domain === \"global\") {\n return Promise.resolve();\n }\n logger.debug(\"stopping session \" + domain + \"...\");\n const leaveMsg = {\n type: \"leave\",\n destination: domain,\n domain: \"global\",\n };\n tryReconnecting = false;\n return send(leaveMsg)\n .then(() => {\n isJoined = false;\n callbacks.execute(\"onLeft\");\n })\n .catch(() => {\n isJoined = false;\n callbacks.execute(\"onLeft\");\n });\n }\n function handleJoined() {\n logger.debug(\"did join \" + domain);\n isJoined = true;\n const wasReconnect = tryReconnecting;\n tryReconnecting = false;\n callbacks.execute(\"onJoined\", wasReconnect);\n }\n function handleConnectionDisconnected() {\n _connectionOn = false;\n logger.debug(\"connection is down\");\n isJoined = false;\n tryReconnecting = true;\n callbacks.execute(\"onLeft\", { disconnected: true });\n }\n function handleConnectionLoggedIn() {\n _connectionOn = true;\n if (tryReconnecting) {\n logger.debug(\"connection is now up - trying to reconnect...\");\n join(_latestOptions);\n }\n }\n function onJoined(callback) {\n if (isJoined) {\n callback(false);\n }\n return callbacks.add(\"onJoined\", callback);\n }\n function onLeft(callback) {\n if (!isJoined) {\n callback();\n }\n return callbacks.add(\"onLeft\", callback);\n }\n function handleErrorMessage(msg) {\n if (domain !== msg.domain) {\n return;\n }\n const requestId = msg.request_id;\n if (!requestId) {\n return;\n }\n const entry = requestsMap[requestId];\n if (!entry) {\n return;\n }\n entry.error(msg);\n }\n function handleSuccessMessage(msg) {\n if (msg.domain !== domain) {\n return;\n }\n const requestId = msg.request_id;\n if (!requestId) {\n return;\n }\n const entry = requestsMap[requestId];\n if (!entry) {\n return;\n }\n entry.success(msg);\n }\n function getNextRequestId() {\n return nanoid(10);\n }\n let queuedCalls = [];\n function send(msg, tag, options) {\n const ignore = [\"hello\", \"join\"];\n if (msg.type && ignore.indexOf(msg.type) === -1) {\n if (!isJoined) {\n console.warn(`trying to send a message (${msg.domain} ${msg.type}) but not connected, will queue`);\n const pw = new PromiseWrapper();\n queuedCalls.push({ msg, tag, options, pw });\n if (queuedCalls.length === 1) {\n const unsubscribe = onJoined(() => {\n logger.info(`joined - will now send queued messages (${queuedCalls.length} -> [${queuedCalls.map((m) => m.msg.type)}])`);\n queuedCalls.forEach((qm) => {\n send(qm.msg, qm.tag, qm.options)\n .then((t) => qm.pw.resolve(t))\n .catch((e) => qm.pw.reject(e));\n });\n queuedCalls = [];\n unsubscribe();\n });\n }\n return pw.promise;\n }\n }\n options = options ?? {};\n msg.request_id = msg.request_id ?? getNextRequestId();\n msg.domain = msg.domain ?? domain;\n if (!options.skipPeerId) {\n msg.peer_id = connection.peerId;\n }\n const requestId = msg.request_id;\n return new Promise((resolve, reject) => {\n requestsMap[requestId] = {\n success: (successMsg) => {\n delete requestsMap[requestId];\n successMsg._tag = tag;\n resolve(successMsg);\n },\n error: (errorMsg) => {\n logger.warn(`Gateway error - ${JSON.stringify(errorMsg)}`);\n delete requestsMap[requestId];\n errorMsg._tag = tag;\n reject(errorMsg);\n },\n };\n connection\n .send(msg, options)\n .catch((err) => {\n requestsMap[requestId].error({ err });\n });\n });\n }\n function sendFireAndForget(msg) {\n msg.request_id = msg.request_id ? msg.request_id : getNextRequestId();\n msg.domain = msg.domain ?? domain;\n msg.peer_id = connection.peerId;\n return connection.send(msg);\n }\n return {\n join,\n leave,\n onJoined,\n onLeft,\n send,\n sendFireAndForget,\n on: (type, callback) => {\n connection.on(type, (msg) => {\n if (msg.domain !== domain) {\n return;\n }\n try {\n callback(msg);\n }\n catch (e) {\n logger.error(`Callback failed: ${e} \\n ${e.stack} \\n msg was: ${JSON.stringify(msg)}`, e);\n }\n });\n },\n loggedIn: (callback) => connection.loggedIn(callback),\n connected: (callback) => connection.connected(callback),\n disconnected: (callback) => connection.disconnected(callback),\n get peerId() {\n return connection.peerId;\n },\n get domain() {\n return domain;\n },\n };\n}\n\nclass Connection {\n settings;\n logger;\n protocolVersion = 3;\n peerId;\n token;\n info;\n resolvedIdentity;\n availableDomains;\n gatewayToken;\n replayer;\n messageHandlers = {};\n ids = 1;\n registry = CallbackRegistryFactory();\n _connected = false;\n isTrace = false;\n transport;\n _defaultTransport;\n _defaultAuth;\n _targetTransport;\n _targetAuth;\n _swapTransport = false;\n _switchInProgress = false;\n _transportSubscriptions = [];\n datePrefix = \"#T42_DATE#\";\n datePrefixLen = this.datePrefix.length;\n dateMinLen = this.datePrefixLen + 1;\n datePrefixFirstChar = this.datePrefix[0];\n _sequelizer = new AsyncSequelizer();\n _isLoggedIn = false;\n shouldTryLogin = true;\n pingTimer;\n sessions = [];\n globalDomain;\n initialLogin = true;\n initialLoginAttempts = 3;\n loginConfig;\n constructor(settings, logger) {\n this.settings = settings;\n this.logger = logger;\n settings = settings || {};\n settings.reconnectAttempts = settings.reconnectAttempts ?? 10;\n settings.reconnectInterval = settings.reconnectInterval ?? 1000;\n if (settings.inproc) {\n this.transport = new InProcTransport(settings.inproc, logger.subLogger(\"inMemory\"));\n }\n else if (settings.sharedWorker) {\n this.transport = new SharedWorkerTransport(settings.sharedWorker, logger.subLogger(\"shared-worker\"));\n }\n else if (settings.webPlatform) {\n this.transport = new WebPlatformTransport(settings.webPlatform, logger.subLogger(\"web-platform\"), settings.identity);\n }\n else if (settings.ws !== undefined) {\n this.transport = new WS(settings, logger.subLogger(\"ws\"));\n }\n else {\n throw new Error(\"No connection information specified\");\n }\n this.isTrace = logger.canPublish(\"trace\");\n logger.debug(`starting with ${this.transport.name()} transport`);\n const unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\n const unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\n this._transportSubscriptions.push(unsubConnectionChanged);\n this._transportSubscriptions.push(unsubOnMessage);\n this._defaultTransport = this.transport;\n this.ping();\n }\n async switchTransport(settings) {\n return this._sequelizer.enqueue(async () => {\n if (!settings || typeof settings !== \"object\") {\n throw new Error(\"Cannot switch transports, because the settings are missing or invalid.\");\n }\n if (typeof settings.type === \"undefined\") {\n throw new Error(\"Cannot switch the transport, because the type is not defined\");\n }\n this.logger.trace(`Starting transport switch with settings: ${JSON.stringify(settings)}`);\n const switchTargetTransport = settings.type === \"secondary\" ? this.getNewSecondaryTransport(settings) : this._defaultTransport;\n this._targetTransport = switchTargetTransport;\n this._targetAuth = settings.type === \"secondary\" ? this.getNewSecondaryAuth(settings) : this._defaultAuth;\n const verifyPromise = this.verifyConnection();\n this._swapTransport = true;\n this._switchInProgress = true;\n this.logger.trace(\"The new transport has been set, closing the current transport\");\n await this.transport.close();\n try {\n await verifyPromise;\n const isSwitchSuccess = this.transport === switchTargetTransport;\n this.logger.info(`The reconnection after the switch was completed. Was the switch a success: ${isSwitchSuccess}`);\n this._switchInProgress = false;\n return { success: isSwitchSuccess };\n }\n catch (error) {\n this.logger.info(\"The reconnection after the switch timed out, reverting back to the default transport.\");\n this.switchTransport({ type: \"default\" });\n this._switchInProgress = false;\n return { success: false };\n }\n });\n }\n onLibReAnnounced(callback) {\n return this.registry.add(\"libReAnnounced\", callback);\n }\n setLibReAnnounced(lib) {\n this.registry.execute(\"libReAnnounced\", lib);\n }\n send(message, options) {\n if (this.transport.sendObject &&\n this.transport.isObjectBasedTransport) {\n const msg = this.createObjectMessage(message);\n if (this.isTrace) {\n this.logger.trace(`>> ${JSON.stringify(msg)}`);\n }\n return this.transport.sendObject(msg, options);\n }\n else {\n const strMessage = this.createStringMessage(message);\n if (this.isTrace) {\n this.logger.trace(`>> ${strMessage}`);\n }\n return this.transport.send(strMessage, options);\n }\n }\n on(type, messageHandler) {\n type = type.toLowerCase();\n if (this.messageHandlers[type] === undefined) {\n this.messageHandlers[type] = {};\n }\n const id = this.ids++;\n this.messageHandlers[type][id] = messageHandler;\n return {\n type,\n id,\n };\n }\n off(info) {\n delete this.messageHandlers[info.type.toLowerCase()][info.id];\n }\n get isConnected() {\n return this._isLoggedIn;\n }\n connected(callback) {\n return this.loggedIn(() => {\n const currentServer = this.transport.name();\n callback(currentServer);\n });\n }\n disconnected(callback) {\n return this.registry.add(\"disconnected\", callback);\n }\n async login(authRequest, reconnect) {\n if (!this._defaultAuth) {\n this._defaultAuth = authRequest;\n }\n if (this._swapTransport) {\n this.logger.trace(\"Detected a transport swap, swapping transports\");\n const newAuth = this.transportSwap();\n authRequest = newAuth ?? authRequest;\n }\n this.logger.trace(`Starting login for transport: ${this.transport.name()} and auth ${JSON.stringify(authRequest)}`);\n try {\n await this.transport.open();\n this.logger.trace(`Transport: ${this.transport.name()} opened, logging in`);\n timer(\"connection\").mark(\"transport-opened\");\n const identity = await this.loginCore(authRequest, reconnect);\n this.logger.trace(`Logged in with identity: ${JSON.stringify(identity)}`);\n timer(\"connection\").mark(\"protocol-logged-in\");\n return identity;\n }\n catch (error) {\n if (this._switchInProgress) {\n this.logger.trace(\"An error while logging in after a transport swap, preparing a default swap.\");\n this.prepareDefaultSwap();\n }\n throw new Error(error);\n }\n }\n async logout() {\n await this.logoutCore();\n await this.transport.close();\n }\n loggedIn(callback) {\n if (this._isLoggedIn) {\n callback();\n }\n return this.registry.add(\"onLoggedIn\", callback);\n }\n domain(domain, successMessages, errorMessages) {\n let session = this.sessions.find((s) => s.domain === domain);\n if (!session) {\n session = domainSession(domain, this, this.logger.subLogger(`domain=${domain}`), successMessages, errorMessages);\n this.sessions.push(session);\n }\n return session;\n }\n authToken() {\n const createTokenReq = {\n domain: \"global\",\n type: \"create-token\"\n };\n if (!this.globalDomain) {\n return Promise.reject(new Error(\"no global domain session\"));\n }\n return this.globalDomain.send(createTokenReq)\n .then((res) => {\n return res.token;\n });\n }\n reconnect() {\n return this.transport.reconnect();\n }\n setLoggedIn(value) {\n this._isLoggedIn = value;\n if (this._isLoggedIn) {\n this.registry.execute(\"onLoggedIn\");\n }\n }\n distributeMessage(message, type) {\n const handlers = this.messageHandlers[type.toLowerCase()];\n if (handlers !== undefined) {\n Object.keys(handlers).forEach((handlerId) => {\n const handler = handlers[handlerId];\n if (handler !== undefined) {\n try {\n handler(message);\n }\n catch (error) {\n try {\n this.logger.error(`Message handler failed with ${error.stack}`, error);\n }\n catch (loggerError) {\n console.log(\"Message handler failed\", error);\n }\n }\n }\n });\n }\n }\n handleConnectionChanged(connected) {\n if (this._connected === connected) {\n return;\n }\n this._connected = connected;\n if (connected) {\n if (this.settings?.replaySpecs?.length) {\n this.replayer = new MessageReplayerImpl(this.settings.replaySpecs);\n this.replayer.init(this);\n }\n this.registry.execute(\"connected\");\n }\n else {\n this.handleDisconnected();\n this.registry.execute(\"disconnected\");\n }\n }\n handleDisconnected() {\n this.setLoggedIn(false);\n const tryToLogin = this.shouldTryLogin;\n if (tryToLogin && this.initialLogin) {\n if (this.initialLoginAttempts <= 0) {\n return;\n }\n this.initialLoginAttempts--;\n }\n this.logger.debug(\"disconnected - will try new login?\" + this.shouldTryLogin);\n if (this.shouldTryLogin) {\n if (!this.loginConfig) {\n throw new Error(\"no login info\");\n }\n this.login(this.loginConfig, true)\n .catch(() => {\n setTimeout(this.handleDisconnected.bind(this), this.settings.reconnectInterval || 1000);\n });\n }\n }\n handleTransportMessage(msg) {\n let msgObj;\n if (typeof msg === \"string\") {\n msgObj = this.processStringMessage(msg);\n }\n else {\n msgObj = this.processObjectMessage(msg);\n }\n if (this.isTrace) {\n this.logger.trace(`<< ${JSON.stringify(msgObj)}`);\n }\n this.distributeMessage(msgObj.msg, msgObj.msgType);\n }\n verifyConnection() {\n return PromisePlus((resolve) => {\n let unsub;\n const ready = waitForInvocations(2, () => {\n if (unsub) {\n unsub();\n }\n resolve();\n });\n unsub = this.onLibReAnnounced((lib) => {\n if (lib.name === \"interop\") {\n return ready();\n }\n if (lib.name === \"contexts\") {\n return ready();\n }\n });\n }, 10000, \"Transport switch timed out waiting for all libraries to be re-announced\");\n }\n getNewSecondaryTransport(settings) {\n if (!settings.transportConfig?.url) {\n throw new Error(\"Missing secondary transport URL.\");\n }\n return new WS(Object.assign({}, this.settings, { ws: settings.transportConfig.url, reconnectAttempts: 1 }), this.logger.subLogger(\"ws-secondary\"));\n }\n getNewSecondaryAuth(settings) {\n if (!settings.transportConfig?.auth) {\n throw new Error(\"Missing secondary transport auth information.\");\n }\n return settings.transportConfig.auth;\n }\n transportSwap() {\n this._swapTransport = false;\n if (!this._targetTransport || !this._targetAuth) {\n this.logger.warn(`Error while switching transports - either the target transport or auth is not defined: transport defined -> ${!!this._defaultTransport}, auth defined -> ${!!this._targetAuth}. Staying on the current one.`);\n return;\n }\n this._transportSubscriptions.forEach((unsub) => unsub());\n this._transportSubscriptions = [];\n this.transport = this._targetTransport;\n const unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\n const unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\n this._transportSubscriptions.push(unsubConnectionChanged);\n this._transportSubscriptions.push(unsubOnMessage);\n return this._targetAuth;\n }\n prepareDefaultSwap() {\n this._transportSubscriptions.forEach((unsub) => unsub());\n this._transportSubscriptions = [];\n this.transport.close().catch((error) => this.logger.warn(`Error closing the ${this.transport.name()} transport after a failed connection attempt: ${JSON.stringify(error)}`));\n this._targetTransport = this._defaultTransport;\n this._targetAuth = this._defaultAuth;\n this._swapTransport = true;\n }\n processStringMessage(message) {\n const msg = JSON.parse(message, (key, value) => {\n if (typeof value !== \"string\") {\n return value;\n }\n if (value.length < this.dateMinLen) {\n return value;\n }\n if (!value.startsWith(this.datePrefixFirstChar)) {\n return value;\n }\n if (value.substring(0, this.datePrefixLen) !== this.datePrefix) {\n return value;\n }\n try {\n const milliseconds = parseInt(value.substring(this.datePrefixLen, value.length), 10);\n if (isNaN(milliseconds)) {\n return value;\n }\n return new Date(milliseconds);\n }\n catch (ex) {\n return value;\n }\n });\n return {\n msg,\n msgType: msg.type,\n };\n }\n createStringMessage(message) {\n const oldToJson = Date.prototype.toJSON;\n try {\n const datePrefix = this.datePrefix;\n Date.prototype.toJSON = function () {\n return datePrefix + this.getTime();\n };\n const result = JSON.stringify(message);\n return result;\n }\n finally {\n Date.prototype.toJSON = oldToJson;\n }\n }\n processObjectMessage(message) {\n if (!message.type) {\n throw new Error(\"Object should have type property\");\n }\n return {\n msg: message,\n msgType: message.type,\n };\n }\n createObjectMessage(message) {\n return message;\n }\n async loginCore(config, reconnect) {\n this.logger.info(\"logging in...\");\n this.loginConfig = config;\n if (!this.loginConfig) {\n this.loginConfig = { username: \"\", password: \"\" };\n }\n this.shouldTryLogin = true;\n const authentication = await this.setupAuthConfig(config, reconnect);\n const helloMsg = {\n type: \"hello\",\n identity: this.settings.identity,\n authentication\n };\n if (config.sessionId) {\n helloMsg.request_id = config.sessionId;\n }\n this.globalDomain = domainSession(\"global\", this, this.logger.subLogger(\"global-domain\"), [\n \"welcome\",\n \"token\",\n \"authentication-request\"\n ]);\n const sendOptions = { skipPeerId: true };\n if (this.initialLogin) {\n sendOptions.retryInterval = this.settings.reconnectInterval;\n sendOptions.maxRetries = this.settings.reconnectAttempts;\n }\n try {\n const welcomeMsg = await this.tryAuthenticate(this.globalDomain, helloMsg, sendOptions, config);\n this.initialLogin = false;\n this.logger.info(\"login successful with peerId \" + welcomeMsg.peer_id);\n this.peerId = welcomeMsg.peer_id;\n this.resolvedIdentity = welcomeMsg.resolved_identity;\n this.availableDomains = welcomeMsg.available_domains;\n if (welcomeMsg.options) {\n this.token = welcomeMsg.options.access_token;\n this.info = welcomeMsg.options.info;\n }\n this.setLoggedIn(true);\n return welcomeMsg.resolved_identity;\n }\n catch (err) {\n this.logger.error(\"error sending hello message - \" + (err.message || err.msg || err.reason || err), err);\n throw err;\n }\n finally {\n if (config?.flowCallback && config.sessionId) {\n config.flowCallback(config.sessionId, null);\n }\n }\n }\n async tryAuthenticate(globalDomain, helloMsg, sendOptions, config) {\n let welcomeMsg;\n while (true) {\n const msg = await globalDomain.send(helloMsg, undefined, sendOptions);\n if (msg.type === \"authentication-request\") {\n const token = Buffer.from(msg.authentication.token, \"base64\");\n if (config.flowCallback && config.sessionId) {\n helloMsg.authentication.token =\n (await config.flowCallback(config.sessionId, token))\n .data\n .toString(\"base64\");\n }\n helloMsg.request_id = config.sessionId;\n }\n else if (msg.type === \"welcome\") {\n welcomeMsg = msg;\n break;\n }\n else if (msg.type === \"error\") {\n throw new Error(\"Authentication failed: \" + msg.reason);\n }\n else {\n throw new Error(\"Unexpected message type during authentication: \" + msg.type);\n }\n }\n return welcomeMsg;\n }\n async setupAuthConfig(config, reconnect) {\n const authentication = {};\n this.gatewayToken = config.gatewayToken;\n if (config.gatewayToken) {\n if (reconnect) {\n try {\n config.gatewayToken = await this.getNewGWToken();\n }\n catch (e) {\n this.logger.warn(`failed to get GW token when reconnecting ${e?.message || e}`);\n }\n }\n authentication.method = \"gateway-token\";\n authentication.token = config.gatewayToken;\n this.gatewayToken = config.gatewayToken;\n }\n else if (config.flowName === \"sspi\") {\n authentication.provider = \"win\";\n authentication.method = \"access-token\";\n if (config.flowCallback && config.sessionId) {\n authentication.token =\n (await config.flowCallback(config.sessionId, null))\n .data\n .toString(\"base64\");\n }\n else {\n throw new Error(\"Invalid SSPI config\");\n }\n }\n else if (config.token) {\n authentication.method = \"access-token\";\n authentication.token = config.token;\n }\n else if (config.username) {\n authentication.method = \"secret\";\n authentication.login = config.username;\n authentication.secret = config.password;\n }\n else if (config.provider) {\n authentication.provider = config.provider;\n authentication.providerContext = config.providerContext;\n }\n else {\n throw new Error(\"invalid auth message\" + JSON.stringify(config));\n }\n return authentication;\n }\n async logoutCore() {\n this.logger.debug(\"logging out...\");\n this.shouldTryLogin = false;\n if (this.pingTimer) {\n clearTimeout(this.pingTimer);\n }\n const promises = this.sessions.map((session) => {\n session.leave();\n });\n await Promise.all(promises);\n }\n getNewGWToken() {\n if (typeof window !== \"undefined\") {\n const glue42gd = window.glue42gd;\n if (glue42gd) {\n return glue42gd.getGWToken();\n }\n }\n return Promise.reject(new Error(\"not running in GD\"));\n }\n ping() {\n if (!this.shouldTryLogin) {\n return;\n }\n if (this._isLoggedIn) {\n this.send({ type: \"ping\" });\n }\n this.pingTimer = setTimeout(() => {\n this.ping();\n }, 30 * 1000);\n }\n}\n\nconst order = [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"off\"];\nclass Logger {\n name;\n parent;\n static Interop;\n static InteropMethodName = \"T42.AppLogger.Log\";\n static Instance;\n path;\n subLoggers = [];\n _consoleLevel;\n _publishLevel;\n loggerFullName;\n includeTimeAndLevel;\n logFn = console;\n customLogFn = false;\n constructor(name, parent, logFn) {\n this.name = name;\n this.parent = parent;\n this.name = name;\n if (parent) {\n this.path = `${parent.path}.${name}`;\n }\n else {\n this.path = name;\n }\n this.loggerFullName = `[${this.path}]`;\n this.includeTimeAndLevel = !logFn;\n if (logFn) {\n this.logFn = logFn;\n this.customLogFn = true;\n }\n }\n subLogger(name) {\n const existingSub = this.subLoggers.filter((subLogger) => {\n return subLogger.name === name;\n })[0];\n if (existingSub !== undefined) {\n return existingSub;\n }\n Object.keys(this).forEach((key) => {\n if (key === name) {\n throw new Error(\"This sub logger name is not allowed.\");\n }\n });\n const sub = new Logger(name, this, this.customLogFn ? this.logFn : undefined);\n this.subLoggers.push(sub);\n return sub;\n }\n publishLevel(level) {\n if (level) {\n this._publishLevel = level;\n }\n return this._publishLevel || this.parent?.publishLevel();\n }\n consoleLevel(level) {\n if (level) {\n this._consoleLevel = level;\n }\n return this._consoleLevel || this.parent?.consoleLevel();\n }\n log(message, level, error) {\n this.publishMessage(level || \"info\", message, error);\n }\n trace(message) {\n this.log(message, \"trace\");\n }\n debug(message) {\n this.log(message, \"debug\");\n }\n info(message) {\n this.log(message, \"info\");\n }\n warn(message) {\n this.log(message, \"warn\");\n }\n error(message, err) {\n this.log(message, \"error\");\n }\n canPublish(level, compareWith) {\n const levelIdx = order.indexOf(level);\n const restrictionIdx = order.indexOf(compareWith || this.consoleLevel() || \"trace\");\n return levelIdx >= restrictionIdx;\n }\n publishMessage(level, message, error) {\n const loggerName = this.loggerFullName;\n if (level === \"error\" && !error) {\n const e = new Error();\n if (e.stack) {\n message =\n message +\n \"\\n\" +\n e.stack\n .split(\"\\n\")\n .slice(3)\n .join(\"\\n\");\n }\n }\n if (this.canPublish(level, this.publishLevel())) {\n const interop = Logger.Interop;\n if (interop) {\n try {\n if (interop.methods({ name: Logger.InteropMethodName }).length > 0) {\n interop.invoke(Logger.InteropMethodName, {\n msg: `${message}`,\n logger: loggerName,\n level\n });\n }\n }\n catch {\n }\n }\n }\n if (this.canPublish(level)) {\n let prefix = \"\";\n if (this.includeTimeAndLevel) {\n const date = new Date();\n const time = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}:${date.getMilliseconds()}`;\n prefix = `[${time}] [${level}] `;\n }\n const toPrint = `${prefix}${loggerName}: ${message}`;\n switch (level) {\n case \"trace\":\n this.logFn.debug(toPrint);\n break;\n case \"debug\":\n if (this.logFn.debug) {\n this.logFn.debug(toPrint);\n }\n else {\n this.logFn.log(toPrint);\n }\n break;\n case \"info\":\n this.logFn.info(toPrint);\n break;\n case \"warn\":\n this.logFn.warn(toPrint);\n break;\n case \"error\":\n this.logFn.error(toPrint, error);\n break;\n }\n }\n }\n}\n\nconst GW_MESSAGE_CREATE_CONTEXT = \"create-context\";\nconst GW_MESSAGE_ACTIVITY_CREATED = \"created\";\nconst GW_MESSAGE_ACTIVITY_DESTROYED = \"destroyed\";\nconst GW_MESSAGE_CONTEXT_CREATED = \"context-created\";\nconst GW_MESSAGE_CONTEXT_ADDED = \"context-added\";\nconst GW_MESSAGE_SUBSCRIBE_CONTEXT = \"subscribe-context\";\nconst GW_MESSAGE_SUBSCRIBED_CONTEXT = \"subscribed-context\";\nconst GW_MESSAGE_UNSUBSCRIBE_CONTEXT = \"unsubscribe-context\";\nconst GW_MESSAGE_DESTROY_CONTEXT = \"destroy-context\";\nconst GW_MESSAGE_CONTEXT_DESTROYED = \"context-destroyed\";\nconst GW_MESSAGE_UPDATE_CONTEXT = \"update-context\";\nconst GW_MESSAGE_CONTEXT_UPDATED = \"context-updated\";\nconst GW_MESSAGE_JOINED_ACTIVITY = \"joined\";\n\nconst ContextMessageReplaySpec = {\n get name() {\n return \"context\";\n },\n get types() {\n return [\n GW_MESSAGE_CREATE_CONTEXT,\n GW_MESSAGE_ACTIVITY_CREATED,\n GW_MESSAGE_ACTIVITY_DESTROYED,\n GW_MESSAGE_CONTEXT_CREATED,\n GW_MESSAGE_CONTEXT_ADDED,\n GW_MESSAGE_SUBSCRIBE_CONTEXT,\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\n GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\n GW_MESSAGE_DESTROY_CONTEXT,\n GW_MESSAGE_CONTEXT_DESTROYED,\n GW_MESSAGE_UPDATE_CONTEXT,\n GW_MESSAGE_CONTEXT_UPDATED,\n GW_MESSAGE_JOINED_ACTIVITY\n ];\n }\n};\n\nvar version = \"6.3.1\";\n\nfunction prepareConfig (configuration, ext, glue42gd) {\n let nodeStartingContext;\n if (Utils.isNode()) {\n const startingContextString = process.env._GD_STARTING_CONTEXT_;\n if (startingContextString) {\n try {\n nodeStartingContext = JSON.parse(startingContextString);\n }\n catch {\n }\n }\n }\n function getConnection() {\n const gwConfig = configuration.gateway;\n const protocolVersion = gwConfig?.protocolVersion ?? 3;\n const reconnectInterval = gwConfig?.reconnectInterval;\n const reconnectAttempts = gwConfig?.reconnectAttempts;\n const defaultWs = \"ws://localhost:8385\";\n let ws = gwConfig?.ws;\n const sharedWorker = gwConfig?.sharedWorker;\n const inproc = gwConfig?.inproc;\n const webPlatform = gwConfig?.webPlatform ?? undefined;\n if (glue42gd) {\n ws = glue42gd.gwURL;\n }\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwURL) {\n ws = nodeStartingContext.gwURL;\n }\n if (!ws && !sharedWorker && !inproc) {\n ws = defaultWs;\n }\n let instanceId;\n let windowId;\n let pid;\n let environment;\n let region;\n const appName = getApplication();\n let uniqueAppName = appName;\n if (typeof glue42gd !== \"undefined\") {\n windowId = glue42gd.windowId;\n pid = glue42gd.pid;\n if (glue42gd.env) {\n environment = glue42gd.env.env;\n region = glue42gd.env.region;\n }\n uniqueAppName = glue42gd.application ?? \"glue-app\";\n instanceId = glue42gd.appInstanceId;\n }\n else if (Utils.isNode()) {\n pid = process.pid;\n if (nodeStartingContext) {\n environment = nodeStartingContext.env;\n region = nodeStartingContext.region;\n instanceId = nodeStartingContext.instanceId;\n }\n }\n else if (typeof window?.glue42electron !== \"undefined\") {\n windowId = window?.glue42electron.instanceId;\n pid = window?.glue42electron.pid;\n environment = window?.glue42electron.env;\n region = window?.glue42electron.region;\n uniqueAppName = window?.glue42electron.application ?? \"glue-app\";\n instanceId = window?.glue42electron.instanceId;\n }\n else ;\n const replaySpecs = configuration.gateway?.replaySpecs ?? [];\n replaySpecs.push(ContextMessageReplaySpec);\n let identity = {\n application: uniqueAppName,\n applicationName: appName,\n windowId,\n instance: instanceId,\n process: pid,\n region,\n environment,\n api: ext.version || version\n };\n if (configuration.identity) {\n identity = Object.assign(identity, configuration.identity);\n }\n return {\n identity,\n reconnectInterval,\n ws,\n sharedWorker,\n webPlatform,\n inproc,\n protocolVersion,\n reconnectAttempts,\n replaySpecs,\n };\n }\n function getContexts() {\n if (typeof configuration.contexts === \"undefined\") {\n return { reAnnounceKnownContexts: true };\n }\n if (typeof configuration.contexts === \"boolean\" && configuration.contexts) {\n return { reAnnounceKnownContexts: true };\n }\n if (typeof configuration.contexts === \"object\") {\n return Object.assign({}, { reAnnounceKnownContexts: true }, configuration.contexts);\n }\n return false;\n }\n function getApplication() {\n if (configuration.application) {\n return configuration.application;\n }\n if (glue42gd) {\n return glue42gd.applicationName;\n }\n if (typeof window !== \"undefined\" && typeof window.glue42electron !== \"undefined\") {\n return window.glue42electron.application;\n }\n const uid = nanoid(10);\n if (Utils.isNode()) {\n if (nodeStartingContext) {\n return nodeStartingContext.applicationConfig.name;\n }\n return \"NodeJS\" + uid;\n }\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n return document.title + ` (${uid})`;\n }\n return uid;\n }\n function getAuth() {\n if (typeof configuration.auth === \"string\") {\n return {\n token: configuration.auth\n };\n }\n if (configuration.auth) {\n return configuration.auth;\n }\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwToken) {\n return {\n gatewayToken: nodeStartingContext.gwToken\n };\n }\n if (configuration.gateway?.webPlatform || configuration.gateway?.inproc || configuration.gateway?.sharedWorker) {\n return {\n username: \"glue42\", password: \"glue42\"\n };\n }\n }\n function getLogger() {\n let config = configuration.logger;\n const defaultLevel = \"warn\";\n if (!config) {\n config = defaultLevel;\n }\n let gdConsoleLevel;\n if (glue42gd) {\n gdConsoleLevel = glue42gd.consoleLogLevel;\n }\n if (typeof config === \"string\") {\n return { console: gdConsoleLevel ?? config, publish: defaultLevel };\n }\n return {\n console: gdConsoleLevel ?? config.console ?? defaultLevel,\n publish: config.publish ?? defaultLevel\n };\n }\n const connection = getConnection();\n let application = getApplication();\n if (typeof window !== \"undefined\") {\n const windowAsAny = window;\n const containerApplication = windowAsAny.htmlContainer ?\n `${windowAsAny.htmlContainer.containerName}.${windowAsAny.htmlContainer.application}` :\n windowAsAny?.glue42gd?.application;\n if (containerApplication) {\n application = containerApplication;\n }\n }\n return {\n bus: configuration.bus ?? false,\n application,\n auth: getAuth(),\n logger: getLogger(),\n connection,\n metrics: configuration.metrics ?? true,\n contexts: getContexts(),\n version: ext.version || version,\n libs: ext.libs ?? [],\n customLogger: configuration.customLogger\n };\n}\n\nclass GW3ContextData {\n name;\n contextId;\n context;\n isAnnounced;\n joinedActivity;\n updateCallbacks = {};\n activityId;\n sentExplicitSubscription;\n hasReceivedSnapshot;\n constructor(contextId, name, isAnnounced, activityId) {\n this.contextId = contextId;\n this.name = name;\n this.isAnnounced = isAnnounced;\n this.activityId = activityId;\n this.context = {};\n }\n hasCallbacks() {\n return Object.keys(this.updateCallbacks).length > 0;\n }\n getState() {\n if (this.isAnnounced && this.hasCallbacks()) {\n return 3;\n }\n if (this.isAnnounced) {\n return 2;\n }\n if (this.hasCallbacks()) {\n return 1;\n }\n return 0;\n }\n}\n\nvar lodash_clonedeep = {exports: {}};\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nlodash_clonedeep.exports;\n\n(function (module, exports) {\n\t/** Used as the size to enable large array optimizations. */\n\tvar LARGE_ARRAY_SIZE = 200;\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t promiseTag = '[object Promise]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t symbolTag = '[object Symbol]',\n\t weakMapTag = '[object WeakMap]';\n\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t dataViewTag = '[object DataView]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n\t/** Used to match `RegExp` flags from their coerced string values. */\n\tvar reFlags = /\\w*$/;\n\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n\t/** Used to identify `toStringTag` values supported by `_.clone`. */\n\tvar cloneableTags = {};\n\tcloneableTags[argsTag] = cloneableTags[arrayTag] =\n\tcloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n\tcloneableTags[boolTag] = cloneableTags[dateTag] =\n\tcloneableTags[float32Tag] = cloneableTags[float64Tag] =\n\tcloneableTags[int8Tag] = cloneableTags[int16Tag] =\n\tcloneableTags[int32Tag] = cloneableTags[mapTag] =\n\tcloneableTags[numberTag] = cloneableTags[objectTag] =\n\tcloneableTags[regexpTag] = cloneableTags[setTag] =\n\tcloneableTags[stringTag] = cloneableTags[symbolTag] =\n\tcloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n\tcloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n\tcloneableTags[errorTag] = cloneableTags[funcTag] =\n\tcloneableTags[weakMapTag] = false;\n\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n\t/** Detect free variable `self`. */\n\tvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n\t/** Used as a reference to the global object. */\n\tvar root = freeGlobal || freeSelf || Function('return this')();\n\n\t/** Detect free variable `exports`. */\n\tvar freeExports = exports && !exports.nodeType && exports;\n\n\t/** Detect free variable `module`. */\n\tvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n\t/** Detect the popular CommonJS extension `module.exports`. */\n\tvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n\t/**\n\t * Adds the key-value `pair` to `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to modify.\n\t * @param {Array} pair The key-value pair to add.\n\t * @returns {Object} Returns `map`.\n\t */\n\tfunction addMapEntry(map, pair) {\n\t // Don't return `map.set` because it's not chainable in IE 11.\n\t map.set(pair[0], pair[1]);\n\t return map;\n\t}\n\n\t/**\n\t * Adds `value` to `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to modify.\n\t * @param {*} value The value to add.\n\t * @returns {Object} Returns `set`.\n\t */\n\tfunction addSetEntry(set, value) {\n\t // Don't return `set.add` because it's not chainable in IE 11.\n\t set.add(value);\n\t return set;\n\t}\n\n\t/**\n\t * A specialized version of `_.forEach` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayEach(array, iteratee) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t while (++index < length) {\n\t if (iteratee(array[index], index, array) === false) {\n\t break;\n\t }\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Appends the elements of `values` to `array`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {Array} values The values to append.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayPush(array, values) {\n\t var index = -1,\n\t length = values.length,\n\t offset = array.length;\n\n\t while (++index < length) {\n\t array[offset + index] = values[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * A specialized version of `_.reduce` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {boolean} [initAccum] Specify using the first element of `array` as\n\t * the initial value.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\tfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t if (initAccum && length) {\n\t accumulator = array[++index];\n\t }\n\t while (++index < length) {\n\t accumulator = iteratee(accumulator, array[index], index, array);\n\t }\n\t return accumulator;\n\t}\n\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Gets the value at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} [object] The object to query.\n\t * @param {string} key The key of the property to get.\n\t * @returns {*} Returns the property value.\n\t */\n\tfunction getValue(object, key) {\n\t return object == null ? undefined : object[key];\n\t}\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Converts `map` to its key-value pairs.\n\t *\n\t * @private\n\t * @param {Object} map The map to convert.\n\t * @returns {Array} Returns the key-value pairs.\n\t */\n\tfunction mapToArray(map) {\n\t var index = -1,\n\t result = Array(map.size);\n\n\t map.forEach(function(value, key) {\n\t result[++index] = [key, value];\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\n\t/**\n\t * Converts `set` to an array of its values.\n\t *\n\t * @private\n\t * @param {Object} set The set to convert.\n\t * @returns {Array} Returns the values.\n\t */\n\tfunction setToArray(set) {\n\t var index = -1,\n\t result = Array(set.size);\n\n\t set.forEach(function(value) {\n\t result[++index] = value;\n\t });\n\t return result;\n\t}\n\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype,\n\t funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\n\t/** Used to detect overreaching core-js shims. */\n\tvar coreJsData = root['__core-js_shared__'];\n\n\t/** Used to detect methods masquerading as native. */\n\tvar maskSrcKey = (function() {\n\t var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n\t return uid ? ('Symbol(src)_1.' + uid) : '';\n\t}());\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\n\t/** Built-in value references. */\n\tvar Buffer = moduleExports ? root.Buffer : undefined,\n\t Symbol = root.Symbol,\n\t Uint8Array = root.Uint8Array,\n\t getPrototype = overArg(Object.getPrototypeOf, Object),\n\t objectCreate = Object.create,\n\t propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t splice = arrayProto.splice;\n\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetSymbols = Object.getOwnPropertySymbols,\n\t nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n\t nativeKeys = overArg(Object.keys, Object);\n\n\t/* Built-in method references that are verified to be native. */\n\tvar DataView = getNative(root, 'DataView'),\n\t Map = getNative(root, 'Map'),\n\t Promise = getNative(root, 'Promise'),\n\t Set = getNative(root, 'Set'),\n\t WeakMap = getNative(root, 'WeakMap'),\n\t nativeCreate = getNative(Object, 'create');\n\n\t/** Used to detect maps, sets, and weakmaps. */\n\tvar dataViewCtorString = toSource(DataView),\n\t mapCtorString = toSource(Map),\n\t promiseCtorString = toSource(Promise),\n\t setCtorString = toSource(Set),\n\t weakMapCtorString = toSource(WeakMap);\n\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Hash(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the hash.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Hash\n\t */\n\tfunction hashClear() {\n\t this.__data__ = nativeCreate ? nativeCreate(null) : {};\n\t}\n\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Hash\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(key) {\n\t return this.has(key) && delete this.__data__[key];\n\t}\n\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(key) {\n\t var data = this.__data__;\n\t if (nativeCreate) {\n\t var result = data[key];\n\t return result === HASH_UNDEFINED ? undefined : result;\n\t }\n\t return hasOwnProperty.call(data, key) ? data[key] : undefined;\n\t}\n\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Hash\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(key) {\n\t var data = this.__data__;\n\t return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n\t}\n\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the hash instance.\n\t */\n\tfunction hashSet(key, value) {\n\t var data = this.__data__;\n\t data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t return this;\n\t}\n\n\t// Add methods to `Hash`.\n\tHash.prototype.clear = hashClear;\n\tHash.prototype['delete'] = hashDelete;\n\tHash.prototype.get = hashGet;\n\tHash.prototype.has = hashHas;\n\tHash.prototype.set = hashSet;\n\n\t/**\n\t * Creates an list cache object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction ListCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the list cache.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf ListCache\n\t */\n\tfunction listCacheClear() {\n\t this.__data__ = [];\n\t}\n\n\t/**\n\t * Removes `key` and its value from the list cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction listCacheDelete(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t return false;\n\t }\n\t var lastIndex = data.length - 1;\n\t if (index == lastIndex) {\n\t data.pop();\n\t } else {\n\t splice.call(data, index, 1);\n\t }\n\t return true;\n\t}\n\n\t/**\n\t * Gets the list cache value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction listCacheGet(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t return index < 0 ? undefined : data[index][1];\n\t}\n\n\t/**\n\t * Checks if a list cache value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf ListCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction listCacheHas(key) {\n\t return assocIndexOf(this.__data__, key) > -1;\n\t}\n\n\t/**\n\t * Sets the list cache `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the list cache instance.\n\t */\n\tfunction listCacheSet(key, value) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t data.push([key, value]);\n\t } else {\n\t data[index][1] = value;\n\t }\n\t return this;\n\t}\n\n\t// Add methods to `ListCache`.\n\tListCache.prototype.clear = listCacheClear;\n\tListCache.prototype['delete'] = listCacheDelete;\n\tListCache.prototype.get = listCacheGet;\n\tListCache.prototype.has = listCacheHas;\n\tListCache.prototype.set = listCacheSet;\n\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction MapCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapCacheClear() {\n\t this.__data__ = {\n\t 'hash': new Hash,\n\t 'map': new (Map || ListCache),\n\t 'string': new Hash\n\t };\n\t}\n\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapCacheDelete(key) {\n\t return getMapData(this, key)['delete'](key);\n\t}\n\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapCacheGet(key) {\n\t return getMapData(this, key).get(key);\n\t}\n\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapCacheHas(key) {\n\t return getMapData(this, key).has(key);\n\t}\n\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapCacheSet(key, value) {\n\t getMapData(this, key).set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapCacheClear;\n\tMapCache.prototype['delete'] = mapCacheDelete;\n\tMapCache.prototype.get = mapCacheGet;\n\tMapCache.prototype.has = mapCacheHas;\n\tMapCache.prototype.set = mapCacheSet;\n\n\t/**\n\t * Creates a stack cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Stack(entries) {\n\t this.__data__ = new ListCache(entries);\n\t}\n\n\t/**\n\t * Removes all key-value entries from the stack.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Stack\n\t */\n\tfunction stackClear() {\n\t this.__data__ = new ListCache;\n\t}\n\n\t/**\n\t * Removes `key` and its value from the stack.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction stackDelete(key) {\n\t return this.__data__['delete'](key);\n\t}\n\n\t/**\n\t * Gets the stack value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction stackGet(key) {\n\t return this.__data__.get(key);\n\t}\n\n\t/**\n\t * Checks if a stack value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Stack\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction stackHas(key) {\n\t return this.__data__.has(key);\n\t}\n\n\t/**\n\t * Sets the stack `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the stack cache instance.\n\t */\n\tfunction stackSet(key, value) {\n\t var cache = this.__data__;\n\t if (cache instanceof ListCache) {\n\t var pairs = cache.__data__;\n\t if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n\t pairs.push([key, value]);\n\t return this;\n\t }\n\t cache = this.__data__ = new MapCache(pairs);\n\t }\n\t cache.set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `Stack`.\n\tStack.prototype.clear = stackClear;\n\tStack.prototype['delete'] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\n\t/**\n\t * Creates an array of the enumerable property names of the array-like `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @param {boolean} inherited Specify returning inherited property names.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction arrayLikeKeys(value, inherited) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t // Safari 9 makes `arguments.length` enumerable in strict mode.\n\t var result = (isArray(value) || isArguments(value))\n\t ? baseTimes(value.length, String)\n\t : [];\n\n\t var length = result.length,\n\t skipIndexes = !!length;\n\n\t for (var key in value) {\n\t if ((inherited || hasOwnProperty.call(value, key)) &&\n\t !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Assigns `value` to `key` of `object` if the existing value is not equivalent\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {string} key The key of the property to assign.\n\t * @param {*} value The value to assign.\n\t */\n\tfunction assignValue(object, key, value) {\n\t var objValue = object[key];\n\t if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n\t (value === undefined && !(key in object))) {\n\t object[key] = value;\n\t }\n\t}\n\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t var length = array.length;\n\t while (length--) {\n\t if (eq(array[length][0], key)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t}\n\n\t/**\n\t * The base implementation of `_.assign` without support for multiple sources\n\t * or `customizer` functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction baseAssign(object, source) {\n\t return object && copyObject(source, keys(source), object);\n\t}\n\n\t/**\n\t * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n\t * traversed objects.\n\t *\n\t * @private\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @param {boolean} [isFull] Specify a clone including symbols.\n\t * @param {Function} [customizer] The function to customize cloning.\n\t * @param {string} [key] The key of `value`.\n\t * @param {Object} [object] The parent object of `value`.\n\t * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n\t * @returns {*} Returns the cloned value.\n\t */\n\tfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n\t var result;\n\t if (customizer) {\n\t result = object ? customizer(value, key, object, stack) : customizer(value);\n\t }\n\t if (result !== undefined) {\n\t return result;\n\t }\n\t if (!isObject(value)) {\n\t return value;\n\t }\n\t var isArr = isArray(value);\n\t if (isArr) {\n\t result = initCloneArray(value);\n\t if (!isDeep) {\n\t return copyArray(value, result);\n\t }\n\t } else {\n\t var tag = getTag(value),\n\t isFunc = tag == funcTag || tag == genTag;\n\n\t if (isBuffer(value)) {\n\t return cloneBuffer(value, isDeep);\n\t }\n\t if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n\t if (isHostObject(value)) {\n\t return object ? value : {};\n\t }\n\t result = initCloneObject(isFunc ? {} : value);\n\t if (!isDeep) {\n\t return copySymbols(value, baseAssign(result, value));\n\t }\n\t } else {\n\t if (!cloneableTags[tag]) {\n\t return object ? value : {};\n\t }\n\t result = initCloneByTag(value, tag, baseClone, isDeep);\n\t }\n\t }\n\t // Check for circular references and return its corresponding clone.\n\t stack || (stack = new Stack);\n\t var stacked = stack.get(value);\n\t if (stacked) {\n\t return stacked;\n\t }\n\t stack.set(value, result);\n\n\t if (!isArr) {\n\t var props = isFull ? getAllKeys(value) : keys(value);\n\t }\n\t arrayEach(props || value, function(subValue, key) {\n\t if (props) {\n\t key = subValue;\n\t subValue = value[key];\n\t }\n\t // Recursively populate clone (susceptible to call stack limits).\n\t assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * The base implementation of `_.create` without support for assigning\n\t * properties to the created object.\n\t *\n\t * @private\n\t * @param {Object} prototype The object to inherit from.\n\t * @returns {Object} Returns the new object.\n\t */\n\tfunction baseCreate(proto) {\n\t return isObject(proto) ? objectCreate(proto) : {};\n\t}\n\n\t/**\n\t * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n\t * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n\t * symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @param {Function} symbolsFunc The function to get the symbols of `object`.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n\t var result = keysFunc(object);\n\t return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n\t}\n\n\t/**\n\t * The base implementation of `getTag`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction baseGetTag(value) {\n\t return objectToString.call(value);\n\t}\n\n\t/**\n\t * The base implementation of `_.isNative` without bad shim checks.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t * else `false`.\n\t */\n\tfunction baseIsNative(value) {\n\t if (!isObject(value) || isMasked(value)) {\n\t return false;\n\t }\n\t var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t return pattern.test(toSource(value));\n\t}\n\n\t/**\n\t * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t if (!isPrototype(object)) {\n\t return nativeKeys(object);\n\t }\n\t var result = [];\n\t for (var key in Object(object)) {\n\t if (hasOwnProperty.call(object, key) && key != 'constructor') {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `buffer`.\n\t *\n\t * @private\n\t * @param {Buffer} buffer The buffer to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Buffer} Returns the cloned buffer.\n\t */\n\tfunction cloneBuffer(buffer, isDeep) {\n\t if (isDeep) {\n\t return buffer.slice();\n\t }\n\t var result = new buffer.constructor(buffer.length);\n\t buffer.copy(result);\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `arrayBuffer`.\n\t *\n\t * @private\n\t * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n\t * @returns {ArrayBuffer} Returns the cloned array buffer.\n\t */\n\tfunction cloneArrayBuffer(arrayBuffer) {\n\t var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n\t new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `dataView`.\n\t *\n\t * @private\n\t * @param {Object} dataView The data view to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned data view.\n\t */\n\tfunction cloneDataView(dataView, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n\t return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n\t}\n\n\t/**\n\t * Creates a clone of `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned map.\n\t */\n\tfunction cloneMap(map, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n\t return arrayReduce(array, addMapEntry, new map.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of `regexp`.\n\t *\n\t * @private\n\t * @param {Object} regexp The regexp to clone.\n\t * @returns {Object} Returns the cloned regexp.\n\t */\n\tfunction cloneRegExp(regexp) {\n\t var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n\t result.lastIndex = regexp.lastIndex;\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned set.\n\t */\n\tfunction cloneSet(set, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n\t return arrayReduce(array, addSetEntry, new set.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of the `symbol` object.\n\t *\n\t * @private\n\t * @param {Object} symbol The symbol object to clone.\n\t * @returns {Object} Returns the cloned symbol object.\n\t */\n\tfunction cloneSymbol(symbol) {\n\t return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n\t}\n\n\t/**\n\t * Creates a clone of `typedArray`.\n\t *\n\t * @private\n\t * @param {Object} typedArray The typed array to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned typed array.\n\t */\n\tfunction cloneTypedArray(typedArray, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n\t return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n\t}\n\n\t/**\n\t * Copies the values of `source` to `array`.\n\t *\n\t * @private\n\t * @param {Array} source The array to copy values from.\n\t * @param {Array} [array=[]] The array to copy values to.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction copyArray(source, array) {\n\t var index = -1,\n\t length = source.length;\n\n\t array || (array = Array(length));\n\t while (++index < length) {\n\t array[index] = source[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Copies properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy properties from.\n\t * @param {Array} props The property identifiers to copy.\n\t * @param {Object} [object={}] The object to copy properties to.\n\t * @param {Function} [customizer] The function to customize copied values.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copyObject(source, props, object, customizer) {\n\t object || (object = {});\n\n\t var index = -1,\n\t length = props.length;\n\n\t while (++index < length) {\n\t var key = props[index];\n\n\t var newValue = customizer\n\t ? customizer(object[key], source[key], key, object, source)\n\t : undefined;\n\n\t assignValue(object, key, newValue === undefined ? source[key] : newValue);\n\t }\n\t return object;\n\t}\n\n\t/**\n\t * Copies own symbol properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy symbols from.\n\t * @param {Object} [object={}] The object to copy symbols to.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copySymbols(source, object) {\n\t return copyObject(source, getSymbols(source), object);\n\t}\n\n\t/**\n\t * Creates an array of own enumerable property names and symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction getAllKeys(object) {\n\t return baseGetAllKeys(object, keys, getSymbols);\n\t}\n\n\t/**\n\t * Gets the data for `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to query.\n\t * @param {string} key The reference key.\n\t * @returns {*} Returns the map data.\n\t */\n\tfunction getMapData(map, key) {\n\t var data = map.__data__;\n\t return isKeyable(key)\n\t ? data[typeof key == 'string' ? 'string' : 'hash']\n\t : data.map;\n\t}\n\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = getValue(object, key);\n\t return baseIsNative(value) ? value : undefined;\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable symbol properties of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of symbols.\n\t */\n\tvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n\t/**\n\t * Gets the `toStringTag` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tvar getTag = baseGetTag;\n\n\t// Fallback for data views, maps, sets, and weak maps in IE 11,\n\t// for data views in Edge < 14, and promises in Node.js.\n\tif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n\t (Map && getTag(new Map) != mapTag) ||\n\t (Promise && getTag(Promise.resolve()) != promiseTag) ||\n\t (Set && getTag(new Set) != setTag) ||\n\t (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n\t getTag = function(value) {\n\t var result = objectToString.call(value),\n\t Ctor = result == objectTag ? value.constructor : undefined,\n\t ctorString = Ctor ? toSource(Ctor) : undefined;\n\n\t if (ctorString) {\n\t switch (ctorString) {\n\t case dataViewCtorString: return dataViewTag;\n\t case mapCtorString: return mapTag;\n\t case promiseCtorString: return promiseTag;\n\t case setCtorString: return setTag;\n\t case weakMapCtorString: return weakMapTag;\n\t }\n\t }\n\t return result;\n\t };\n\t}\n\n\t/**\n\t * Initializes an array clone.\n\t *\n\t * @private\n\t * @param {Array} array The array to clone.\n\t * @returns {Array} Returns the initialized clone.\n\t */\n\tfunction initCloneArray(array) {\n\t var length = array.length,\n\t result = array.constructor(length);\n\n\t // Add properties assigned by `RegExp#exec`.\n\t if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n\t result.index = array.index;\n\t result.input = array.input;\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Initializes an object clone.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneObject(object) {\n\t return (typeof object.constructor == 'function' && !isPrototype(object))\n\t ? baseCreate(getPrototype(object))\n\t : {};\n\t}\n\n\t/**\n\t * Initializes an object clone based on its `toStringTag`.\n\t *\n\t * **Note:** This function only supports cloning values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @param {string} tag The `toStringTag` of the object to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n\t var Ctor = object.constructor;\n\t switch (tag) {\n\t case arrayBufferTag:\n\t return cloneArrayBuffer(object);\n\n\t case boolTag:\n\t case dateTag:\n\t return new Ctor(+object);\n\n\t case dataViewTag:\n\t return cloneDataView(object, isDeep);\n\n\t case float32Tag: case float64Tag:\n\t case int8Tag: case int16Tag: case int32Tag:\n\t case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n\t return cloneTypedArray(object, isDeep);\n\n\t case mapTag:\n\t return cloneMap(object, isDeep, cloneFunc);\n\n\t case numberTag:\n\t case stringTag:\n\t return new Ctor(object);\n\n\t case regexpTag:\n\t return cloneRegExp(object);\n\n\t case setTag:\n\t return cloneSet(object, isDeep, cloneFunc);\n\n\t case symbolTag:\n\t return cloneSymbol(object);\n\t }\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return !!length &&\n\t (typeof value == 'number' || reIsUint.test(value)) &&\n\t (value > -1 && value % 1 == 0 && value < length);\n\t}\n\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t var type = typeof value;\n\t return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n\t ? (value !== '__proto__')\n\t : (value === null);\n\t}\n\n\t/**\n\t * Checks if `func` has its source masked.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n\t */\n\tfunction isMasked(func) {\n\t return !!maskSrcKey && (maskSrcKey in func);\n\t}\n\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n\t return value === proto;\n\t}\n\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t if (func != null) {\n\t try {\n\t return funcToString.call(func);\n\t } catch (e) {}\n\t try {\n\t return (func + '');\n\t } catch (e) {}\n\t }\n\t return '';\n\t}\n\n\t/**\n\t * This method is like `_.clone` except that it recursively clones `value`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 1.0.0\n\t * @category Lang\n\t * @param {*} value The value to recursively clone.\n\t * @returns {*} Returns the deep cloned value.\n\t * @see _.clone\n\t * @example\n\t *\n\t * var objects = [{ 'a': 1 }, { 'b': 2 }];\n\t *\n\t * var deep = _.cloneDeep(objects);\n\t * console.log(deep[0] === objects[0]);\n\t * // => false\n\t */\n\tfunction cloneDeep(value) {\n\t return baseClone(value, true, true);\n\t}\n\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(value.length) && !isFunction(value);\n\t}\n\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t return isObjectLike(value) && isArrayLike(value);\n\t}\n\n\t/**\n\t * Checks if `value` is a buffer.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.3.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n\t * @example\n\t *\n\t * _.isBuffer(new Buffer(2));\n\t * // => true\n\t *\n\t * _.isBuffer(new Uint8Array(2));\n\t * // => false\n\t */\n\tvar isBuffer = nativeIsBuffer || stubFalse;\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8-9 which returns 'object' for typed array and other constructors.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n\t}\n\n\t/**\n\t * This method returns a new empty array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {Array} Returns the new empty array.\n\t * @example\n\t *\n\t * var arrays = _.times(2, _.stubArray);\n\t *\n\t * console.log(arrays);\n\t * // => [[], []]\n\t *\n\t * console.log(arrays[0] === arrays[1]);\n\t * // => false\n\t */\n\tfunction stubArray() {\n\t return [];\n\t}\n\n\t/**\n\t * This method returns `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {boolean} Returns `false`.\n\t * @example\n\t *\n\t * _.times(2, _.stubFalse);\n\t * // => [false, false]\n\t */\n\tfunction stubFalse() {\n\t return false;\n\t}\n\n\tmodule.exports = cloneDeep; \n} (lodash_clonedeep, lodash_clonedeep.exports));\n\nvar lodash_clonedeepExports = lodash_clonedeep.exports;\nvar cloneDeep = /*@__PURE__*/getDefaultExportFromCjs(lodash_clonedeepExports);\n\nfunction applyContextDelta(context, delta, logger) {\n try {\n if (logger?.canPublish(\"trace\")) {\n logger?.trace(`applying context delta ${JSON.stringify(delta)} on context ${JSON.stringify(context)}`);\n }\n if (!delta) {\n return context;\n }\n if (delta.reset) {\n context = { ...delta.reset };\n return context;\n }\n context = deepClone(context, undefined);\n if (delta.commands) {\n for (const command of delta.commands) {\n if (command.type === \"remove\") {\n deletePath(context, command.path);\n }\n else if (command.type === \"set\") {\n setValueToPath(context, command.value, command.path);\n }\n }\n return context;\n }\n const added = delta.added;\n const updated = delta.updated;\n const removed = delta.removed;\n if (added) {\n Object.keys(added).forEach((key) => {\n context[key] = added[key];\n });\n }\n if (updated) {\n Object.keys(updated).forEach((key) => {\n mergeObjectsProperties(key, context, updated);\n });\n }\n if (removed) {\n removed.forEach((key) => {\n delete context[key];\n });\n }\n return context;\n }\n catch (e) {\n logger?.error(`error applying context delta ${JSON.stringify(delta)} on context ${JSON.stringify(context)}`, e);\n return context;\n }\n}\nfunction deepClone(obj, hash) {\n return cloneDeep(obj);\n}\nconst mergeObjectsProperties = (key, what, withWhat) => {\n const right = withWhat[key];\n if (right === undefined) {\n return what;\n }\n const left = what[key];\n if (!left || !right) {\n what[key] = right;\n return what;\n }\n if (typeof left === \"string\" ||\n typeof left === \"number\" ||\n typeof left === \"boolean\" ||\n typeof right === \"string\" ||\n typeof right === \"number\" ||\n typeof right === \"boolean\" ||\n Array.isArray(left) ||\n Array.isArray(right)) {\n what[key] = right;\n return what;\n }\n what[key] = Object.assign({}, left, right);\n return what;\n};\nfunction deepEqual(x, y) {\n if (x === y) {\n return true;\n }\n if (!(x instanceof Object) || !(y instanceof Object)) {\n return false;\n }\n if (x.constructor !== y.constructor) {\n return false;\n }\n for (const p in x) {\n if (!x.hasOwnProperty(p)) {\n continue;\n }\n if (!y.hasOwnProperty(p)) {\n return false;\n }\n if (x[p] === y[p]) {\n continue;\n }\n if (typeof (x[p]) !== \"object\") {\n return false;\n }\n if (!deepEqual(x[p], y[p])) {\n return false;\n }\n }\n for (const p in y) {\n if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) {\n return false;\n }\n }\n return true;\n}\nfunction setValueToPath(obj, value, path) {\n const pathArr = path.split(\".\");\n let i;\n for (i = 0; i < pathArr.length - 1; i++) {\n if (!obj[pathArr[i]]) {\n obj[pathArr[i]] = {};\n }\n if (typeof obj[pathArr[i]] !== \"object\") {\n obj[pathArr[i]] = {};\n }\n obj = obj[pathArr[i]];\n }\n obj[pathArr[i]] = value;\n}\nfunction isSubset(superObj, subObj) {\n return Object.keys(subObj).every((ele) => {\n if (typeof subObj[ele] === \"object\") {\n return isSubset(superObj?.[ele] || {}, subObj[ele] || {});\n }\n return subObj[ele] === superObj?.[ele];\n });\n}\nfunction deletePath(obj, path) {\n const pathArr = path.split(\".\");\n let i;\n for (i = 0; i < pathArr.length - 1; i++) {\n if (!obj[pathArr[i]]) {\n return;\n }\n obj = obj[pathArr[i]];\n }\n delete obj[pathArr[i]];\n}\n\nclass GW3Bridge {\n _logger;\n _connection;\n _trackAllContexts;\n _reAnnounceKnownContexts;\n _gw3Session;\n _contextNameToData = {};\n _gw3Subscriptions = [];\n _nextCallbackSubscriptionNumber = 0;\n _creationPromises = {};\n _contextNameToId = {};\n _contextIdToName = {};\n _protocolVersion = undefined;\n _contextsTempCache = {};\n _contextsSubscriptionsCache = [];\n _systemContextsSubKey;\n get protocolVersion() {\n if (!this._protocolVersion) {\n const contextsDomainInfo = this._connection.availableDomains.find((d) => d.uri === \"context\");\n this._protocolVersion = contextsDomainInfo?.version ?? 1;\n }\n return this._protocolVersion;\n }\n get setPathSupported() {\n return this.protocolVersion >= 2;\n }\n constructor(config) {\n this._connection = config.connection;\n this._logger = config.logger;\n this._trackAllContexts = config.trackAllContexts;\n this._reAnnounceKnownContexts = config.reAnnounceKnownContexts;\n this._gw3Session = this._connection.domain(\"global\", [\n GW_MESSAGE_CONTEXT_CREATED,\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\n GW_MESSAGE_CONTEXT_DESTROYED,\n GW_MESSAGE_CONTEXT_UPDATED,\n ]);\n this._gw3Session.disconnected(this.resetState.bind(this));\n this._gw3Session.onJoined((wasReconnect) => {\n if (!wasReconnect) {\n return;\n }\n if (!this._reAnnounceKnownContexts) {\n return this._connection.setLibReAnnounced({ name: \"contexts\" });\n }\n this.reInitiateState().then(() => this._connection.setLibReAnnounced({ name: \"contexts\" }));\n });\n this.subscribeToContextCreatedMessages();\n this.subscribeToContextUpdatedMessages();\n this.subscribeToContextDestroyedMessages();\n this._connection.replayer?.drain(ContextMessageReplaySpec.name, (message) => {\n const type = message.type;\n if (!type) {\n return;\n }\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\n type === GW_MESSAGE_CONTEXT_ADDED ||\n type === GW_MESSAGE_ACTIVITY_CREATED) {\n this.handleContextCreatedMessage(message);\n }\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\n type === GW_MESSAGE_CONTEXT_UPDATED ||\n type === GW_MESSAGE_JOINED_ACTIVITY) {\n this.handleContextUpdatedMessage(message);\n }\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\n this.handleContextDestroyedMessage(message);\n }\n });\n }\n dispose() {\n for (const sub of this._gw3Subscriptions) {\n this._connection.off(sub);\n }\n this._gw3Subscriptions.length = 0;\n for (const contextName in this._contextNameToData) {\n if (this._contextNameToId.hasOwnProperty(contextName)) {\n delete this._contextNameToData[contextName];\n }\n }\n }\n createContext(name, data) {\n if (name in this._creationPromises) {\n return this._creationPromises[name];\n }\n this._creationPromises[name] =\n this._gw3Session\n .send({\n type: GW_MESSAGE_CREATE_CONTEXT,\n domain: \"global\",\n name,\n data,\n lifetime: \"retained\",\n })\n .then((createContextMsg) => {\n this._contextNameToId[name] = createContextMsg.context_id;\n this._contextIdToName[createContextMsg.context_id] = name;\n const contextData = this._contextNameToData[name] || new GW3ContextData(createContextMsg.context_id, name, true, undefined);\n contextData.isAnnounced = true;\n contextData.name = name;\n contextData.contextId = createContextMsg.context_id;\n contextData.context = createContextMsg.data || deepClone(data);\n contextData.hasReceivedSnapshot = true;\n this._contextNameToData[name] = contextData;\n delete this._creationPromises[name];\n return createContextMsg.context_id;\n });\n return this._creationPromises[name];\n }\n all() {\n return Object.keys(this._contextNameToData)\n .filter((name) => this._contextNameToData[name].isAnnounced);\n }\n async update(name, delta) {\n if (delta) {\n delta = deepClone(delta);\n }\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n return this.createContext(name, delta);\n }\n let currentContext = contextData.context;\n if (!contextData.hasCallbacks()) {\n currentContext = await this.get(contextData.name);\n }\n const calculatedDelta = this.setPathSupported ?\n this.calculateContextDeltaV2(currentContext, delta) :\n this.calculateContextDeltaV1(currentContext, delta);\n if (!Object.keys(calculatedDelta.added).length\n && !Object.keys(calculatedDelta.updated).length\n && !calculatedDelta.removed.length\n && !calculatedDelta.commands?.length) {\n return Promise.resolve();\n }\n return this._gw3Session\n .send({\n type: GW_MESSAGE_UPDATE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n delta: calculatedDelta,\n }, {}, { skipPeerId: false })\n .then((gwResponse) => {\n this.handleUpdated(contextData, calculatedDelta, {\n updaterId: gwResponse.peer_id\n });\n });\n }\n async set(name, data) {\n if (data) {\n data = deepClone(data);\n }\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n return this.createContext(name, data);\n }\n return this._gw3Session\n .send({\n type: GW_MESSAGE_UPDATE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n delta: { reset: data },\n }, {}, { skipPeerId: false })\n .then((gwResponse) => {\n this.handleUpdated(contextData, {\n reset: data,\n added: {},\n removed: [],\n updated: {}\n }, {\n updaterId: gwResponse.peer_id\n });\n });\n }\n setPath(name, path, value) {\n if (!this.setPathSupported) {\n return Promise.reject(\"glue.contexts.setPath operation is not supported, use Glue42 3.10 or later\");\n }\n return this.setPaths(name, [{ path, value }]);\n }\n async setPaths(name, pathValues) {\n if (!this.setPathSupported) {\n return Promise.reject(\"glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later\");\n }\n if (pathValues) {\n pathValues = deepClone(pathValues);\n }\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n const obj = {};\n for (const pathValue of pathValues) {\n setValueToPath(obj, pathValue.value, pathValue.path);\n }\n return this.createContext(name, obj);\n }\n const commands = [];\n for (const pathValue of pathValues) {\n if (pathValue.value === null) {\n commands.push({ type: \"remove\", path: pathValue.path });\n }\n else {\n commands.push({ type: \"set\", path: pathValue.path, value: pathValue.value });\n }\n }\n return this._gw3Session\n .send({\n type: GW_MESSAGE_UPDATE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n delta: { commands }\n }, {}, { skipPeerId: false })\n .then((gwResponse) => {\n this.handleUpdated(contextData, {\n added: {},\n removed: [],\n updated: {},\n commands\n }, {\n updaterId: gwResponse.peer_id\n });\n });\n }\n async get(name) {\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n return Promise.resolve({});\n }\n if (contextData && (!contextData.hasCallbacks() || !contextData.hasReceivedSnapshot)) {\n return new Promise((resolve) => {\n this.subscribe(name, (data, _d, _r, un) => {\n this.unsubscribe(un);\n resolve(data);\n });\n });\n }\n const context = contextData?.context ?? {};\n return Promise.resolve(deepClone(context));\n }\n async subscribe(name, callback, subscriptionKey) {\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const thisCallbackSubscriptionNumber = typeof subscriptionKey === \"undefined\" ? this._nextCallbackSubscriptionNumber : subscriptionKey;\n if (typeof subscriptionKey === \"undefined\") {\n this._nextCallbackSubscriptionNumber += 1;\n }\n if (this._contextsSubscriptionsCache.every((subscription) => subscription.subKey !== this._nextCallbackSubscriptionNumber)) {\n this._contextsSubscriptionsCache.push({ contextName: name, subKey: thisCallbackSubscriptionNumber, callback });\n }\n let contextData = this._contextNameToData[name];\n if (!contextData ||\n !contextData.isAnnounced) {\n contextData = contextData || new GW3ContextData(undefined, name, false, undefined);\n this._contextNameToData[name] = contextData;\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\n return Promise.resolve(thisCallbackSubscriptionNumber);\n }\n const hadCallbacks = contextData.hasCallbacks();\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\n if (!hadCallbacks) {\n if (!contextData.joinedActivity) {\n if (contextData.context && contextData.sentExplicitSubscription) {\n if (contextData.hasReceivedSnapshot) {\n const clone = deepClone(contextData.context);\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\n }\n return Promise.resolve(thisCallbackSubscriptionNumber);\n }\n return this.sendSubscribe(contextData)\n .then(() => thisCallbackSubscriptionNumber);\n }\n else {\n if (contextData.hasReceivedSnapshot) {\n const clone = deepClone(contextData.context);\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\n }\n return Promise.resolve(thisCallbackSubscriptionNumber);\n }\n }\n else {\n if (contextData.hasReceivedSnapshot) {\n const clone = deepClone(contextData.context);\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\n }\n return Promise.resolve(thisCallbackSubscriptionNumber);\n }\n }\n unsubscribe(subscriptionKey) {\n this._contextsSubscriptionsCache = this._contextsSubscriptionsCache.filter((subscription) => subscription.subKey !== subscriptionKey);\n for (const name of Object.keys(this._contextNameToData)) {\n const contextData = this._contextNameToData[name];\n if (!contextData) {\n return;\n }\n const hadCallbacks = contextData.hasCallbacks();\n delete contextData.updateCallbacks[subscriptionKey];\n if (contextData.isAnnounced &&\n hadCallbacks &&\n !contextData.hasCallbacks() &&\n contextData.sentExplicitSubscription) {\n this.sendUnsubscribe(contextData).catch(() => { });\n }\n if (!contextData.isAnnounced &&\n !contextData.hasCallbacks()) {\n delete this._contextNameToData[name];\n }\n }\n }\n async destroy(name) {\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData) {\n return Promise.reject(`context with ${name} does not exist`);\n }\n return this._gw3Session\n .send({\n type: GW_MESSAGE_DESTROY_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n }).then((_) => undefined);\n }\n handleUpdated(contextData, delta, extraData) {\n const oldContext = contextData.context;\n contextData.context = applyContextDelta(contextData.context, delta, this._logger);\n contextData.hasReceivedSnapshot = true;\n if (this._contextNameToData[contextData.name] === contextData &&\n !deepEqual(oldContext, contextData.context)) {\n this.invokeUpdateCallbacks(contextData, delta, extraData);\n }\n }\n subscribeToContextCreatedMessages() {\n const createdMessageTypes = [\n GW_MESSAGE_CONTEXT_ADDED,\n GW_MESSAGE_CONTEXT_CREATED,\n GW_MESSAGE_ACTIVITY_CREATED,\n ];\n for (const createdMessageType of createdMessageTypes) {\n const sub = this._connection.on(createdMessageType, this.handleContextCreatedMessage.bind(this));\n this._gw3Subscriptions.push(sub);\n }\n }\n handleContextCreatedMessage(contextCreatedMsg) {\n const createdMessageType = contextCreatedMsg.type;\n if (createdMessageType === GW_MESSAGE_ACTIVITY_CREATED) {\n this._contextNameToId[contextCreatedMsg.activity_id] = contextCreatedMsg.context_id;\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.activity_id;\n }\n else if (createdMessageType === GW_MESSAGE_CONTEXT_ADDED) {\n this._contextNameToId[contextCreatedMsg.name] = contextCreatedMsg.context_id;\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.name;\n }\n else ;\n const name = this._contextIdToName[contextCreatedMsg.context_id];\n if (!name) {\n throw new Error(\"Received created event for context with unknown name: \" + contextCreatedMsg.context_id);\n }\n if (!this._contextNameToId[name]) {\n throw new Error(\"Received created event for context with unknown id: \" + contextCreatedMsg.context_id);\n }\n let contextData = this._contextNameToData[name];\n if (contextData) {\n if (contextData.isAnnounced) {\n return;\n }\n else {\n if (!contextData.hasCallbacks()) {\n throw new Error(\"Assertion failure: contextData.hasCallbacks()\");\n }\n contextData.isAnnounced = true;\n contextData.contextId = contextCreatedMsg.context_id;\n contextData.activityId = contextCreatedMsg.activity_id;\n if (!contextData.sentExplicitSubscription) {\n this.sendSubscribe(contextData);\n }\n }\n }\n else {\n this._contextNameToData[name] = contextData =\n new GW3ContextData(contextCreatedMsg.context_id, name, true, contextCreatedMsg.activity_id);\n if (this._trackAllContexts) {\n this.subscribe(name, () => { }).then((subKey) => this._systemContextsSubKey = subKey);\n }\n }\n }\n subscribeToContextUpdatedMessages() {\n const updatedMessageTypes = [\n GW_MESSAGE_CONTEXT_UPDATED,\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\n GW_MESSAGE_JOINED_ACTIVITY,\n ];\n for (const updatedMessageType of updatedMessageTypes) {\n const sub = this._connection.on(updatedMessageType, this.handleContextUpdatedMessage.bind(this));\n this._gw3Subscriptions.push(sub);\n }\n }\n handleContextUpdatedMessage(contextUpdatedMsg) {\n const updatedMessageType = contextUpdatedMsg.type;\n const contextId = contextUpdatedMsg.context_id;\n let contextData = this._contextNameToData[this._contextIdToName[contextId]];\n const justSeen = !contextData || !contextData.isAnnounced;\n if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\n if (!contextData) {\n contextData =\n this._contextNameToData[contextUpdatedMsg.activity_id] ||\n new GW3ContextData(contextId, contextUpdatedMsg.activity_id, true, contextUpdatedMsg.activity_id);\n }\n this._contextNameToData[contextUpdatedMsg.activity_id] = contextData;\n this._contextIdToName[contextId] = contextUpdatedMsg.activity_id;\n this._contextNameToId[contextUpdatedMsg.activity_id] = contextId;\n contextData.contextId = contextId;\n contextData.isAnnounced = true;\n contextData.activityId = contextUpdatedMsg.activity_id;\n contextData.joinedActivity = true;\n }\n else {\n if (!contextData || !contextData.isAnnounced) {\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\n contextData = contextData || new GW3ContextData(contextId, contextUpdatedMsg.name, true, undefined);\n contextData.sentExplicitSubscription = true;\n this._contextNameToData[contextUpdatedMsg.name] = contextData;\n this._contextIdToName[contextId] = contextUpdatedMsg.name;\n this._contextNameToId[contextUpdatedMsg.name] = contextId;\n }\n else {\n this._logger.error(`Received 'update' for unknown context: ${contextId}`);\n }\n return;\n }\n }\n const oldContext = contextData.context;\n contextData.hasReceivedSnapshot = true;\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\n contextData.context = contextUpdatedMsg.data || {};\n }\n else if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\n contextData.context = contextUpdatedMsg.context_snapshot || {};\n }\n else if (updatedMessageType === GW_MESSAGE_CONTEXT_UPDATED) {\n contextData.context = applyContextDelta(contextData.context, contextUpdatedMsg.delta, this._logger);\n }\n else {\n throw new Error(\"Unrecognized context update message \" + updatedMessageType);\n }\n if (justSeen ||\n !deepEqual(contextData.context, oldContext) ||\n updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\n this.invokeUpdateCallbacks(contextData, contextUpdatedMsg.delta, { updaterId: contextUpdatedMsg.updater_id });\n }\n }\n invokeUpdateCallbacks(contextData, delta, extraData) {\n delta = delta || { added: {}, updated: {}, reset: {}, removed: [] };\n if (delta.commands) {\n delta.added = delta.updated = delta.reset = {};\n delta.removed = [];\n for (const command of delta.commands) {\n if (command.type === \"remove\") {\n if (command.path.indexOf(\".\") === -1) {\n delta.removed.push(command.path);\n }\n setValueToPath(delta.updated, null, command.path);\n }\n else if (command.type === \"set\") {\n setValueToPath(delta.updated, command.value, command.path);\n }\n }\n }\n for (const updateCallbackIndex in contextData.updateCallbacks) {\n if (contextData.updateCallbacks.hasOwnProperty(updateCallbackIndex)) {\n try {\n const updateCallback = contextData.updateCallbacks[updateCallbackIndex];\n updateCallback(deepClone(contextData.context), deepClone(Object.assign({}, delta.added || {}, delta.updated || {}, delta.reset || {})), delta.removed, parseInt(updateCallbackIndex, 10), extraData);\n }\n catch (err) {\n this._logger.debug(\"callback error: \" + JSON.stringify(err));\n }\n }\n }\n }\n subscribeToContextDestroyedMessages() {\n const destroyedMessageTypes = [\n GW_MESSAGE_CONTEXT_DESTROYED,\n GW_MESSAGE_ACTIVITY_DESTROYED,\n ];\n for (const destroyedMessageType of destroyedMessageTypes) {\n const sub = this._connection.on(destroyedMessageType, this.handleContextDestroyedMessage.bind(this));\n this._gw3Subscriptions.push(sub);\n }\n }\n handleContextDestroyedMessage(destroyedMsg) {\n const destroyedMessageType = destroyedMsg.type;\n let contextId;\n let name;\n if (destroyedMessageType === GW_MESSAGE_ACTIVITY_DESTROYED) {\n name = destroyedMsg.activity_id;\n contextId = this._contextNameToId[name];\n if (!contextId) {\n this._logger.error(`Received 'destroyed' for unknown activity: ${destroyedMsg.activity_id}`);\n return;\n }\n }\n else {\n contextId = destroyedMsg.context_id;\n name = this._contextIdToName[contextId];\n if (!name) {\n this._logger.error(`Received 'destroyed' for unknown context: ${destroyedMsg.context_id}`);\n return;\n }\n }\n delete this._contextIdToName[contextId];\n delete this._contextNameToId[name];\n const contextData = this._contextNameToData[name];\n delete this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n this._logger.error(`Received 'destroyed' for unknown context: ${contextId}`);\n return;\n }\n }\n sendSubscribe(contextData) {\n contextData.sentExplicitSubscription = true;\n return this._gw3Session\n .send({\n type: GW_MESSAGE_SUBSCRIBE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n }).then((_) => undefined);\n }\n sendUnsubscribe(contextData) {\n contextData.sentExplicitSubscription = false;\n return this._gw3Session\n .send({\n type: GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n }).then((_) => undefined);\n }\n calculateContextDeltaV1(from, to) {\n const delta = { added: {}, updated: {}, removed: [], reset: undefined };\n if (from) {\n for (const x of Object.keys(from)) {\n if (Object.keys(to).indexOf(x) !== -1\n && to[x] !== null\n && !deepEqual(from[x], to[x])) {\n delta.updated[x] = to[x];\n }\n }\n }\n for (const x of Object.keys(to)) {\n if (!from || (Object.keys(from).indexOf(x) === -1)) {\n if (to[x] !== null) {\n delta.added[x] = to[x];\n }\n }\n else if (to[x] === null) {\n delta.removed.push(x);\n }\n }\n return delta;\n }\n calculateContextDeltaV2(from, to) {\n const delta = { added: {}, updated: {}, removed: [], reset: undefined, commands: [] };\n for (const x of Object.keys(to)) {\n if (to[x] !== null) {\n const fromX = from ? from[x] : null;\n if (!deepEqual(fromX, to[x])) {\n delta.commands?.push({ type: \"set\", path: x, value: to[x] });\n }\n }\n else {\n delta.commands?.push({ type: \"remove\", path: x });\n }\n }\n return delta;\n }\n resetState() {\n for (const sub of this._gw3Subscriptions) {\n this._connection.off(sub);\n }\n if (this._systemContextsSubKey) {\n this.unsubscribe(this._systemContextsSubKey);\n delete this._systemContextsSubKey;\n }\n this._gw3Subscriptions = [];\n this._contextNameToId = {};\n this._contextIdToName = {};\n delete this._protocolVersion;\n this._contextsTempCache = Object.keys(this._contextNameToData).reduce((cacheSoFar, ctxName) => {\n cacheSoFar[ctxName] = this._contextNameToData[ctxName].context;\n return cacheSoFar;\n }, {});\n this._contextNameToData = {};\n }\n async reInitiateState() {\n this.subscribeToContextCreatedMessages();\n this.subscribeToContextUpdatedMessages();\n this.subscribeToContextDestroyedMessages();\n this._connection.replayer?.drain(ContextMessageReplaySpec.name, (message) => {\n const type = message.type;\n if (!type) {\n return;\n }\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\n type === GW_MESSAGE_CONTEXT_ADDED ||\n type === GW_MESSAGE_ACTIVITY_CREATED) {\n this.handleContextCreatedMessage(message);\n }\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\n type === GW_MESSAGE_CONTEXT_UPDATED ||\n type === GW_MESSAGE_JOINED_ACTIVITY) {\n this.handleContextUpdatedMessage(message);\n }\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\n this.handleContextDestroyedMessage(message);\n }\n });\n await Promise.all(this._contextsSubscriptionsCache.map((subscription) => this.subscribe(subscription.contextName, subscription.callback, subscription.subKey)));\n await this.flushQueue();\n for (const ctxName in this._contextsTempCache) {\n if (typeof this._contextsTempCache[ctxName] !== \"object\" || Object.keys(this._contextsTempCache[ctxName]).length === 0) {\n continue;\n }\n const lastKnownData = this._contextsTempCache[ctxName];\n this._logger.info(`Re-announcing known context: ${ctxName}`);\n await this.flushQueue();\n await this.update(ctxName, lastKnownData);\n }\n this._contextsTempCache = {};\n this._logger.info(\"Contexts are re-announced\");\n }\n flushQueue() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0));\n }\n}\n\nclass ContextsModule {\n initTime;\n initStartTime;\n initEndTime;\n _bridge;\n constructor(config) {\n this._bridge = new GW3Bridge(config);\n }\n all() {\n return this._bridge.all();\n }\n update(name, data) {\n this.checkName(name);\n this.checkData(data);\n return this._bridge.update(name, data);\n }\n set(name, data) {\n this.checkName(name);\n this.checkData(data);\n return this._bridge.set(name, data);\n }\n setPath(name, path, data) {\n this.checkName(name);\n this.checkPath(path);\n const isTopLevelPath = path === \"\";\n if (isTopLevelPath) {\n this.checkData(data);\n return this.set(name, data);\n }\n return this._bridge.setPath(name, path, data);\n }\n setPaths(name, paths) {\n this.checkName(name);\n if (!Array.isArray(paths)) {\n throw new Error(\"Please provide the paths as an array of PathValues!\");\n }\n for (const { path, value } of paths) {\n this.checkPath(path);\n const isTopLevelPath = path === \"\";\n if (isTopLevelPath) {\n this.checkData(value);\n }\n }\n return this._bridge.setPaths(name, paths);\n }\n subscribe(name, callback) {\n this.checkName(name);\n if (typeof callback !== \"function\") {\n throw new Error(\"Please provide the callback as a function!\");\n }\n return this._bridge\n .subscribe(name, (data, delta, removed, key, extraData) => callback(data, delta, removed, () => this._bridge.unsubscribe(key), extraData))\n .then((key) => () => {\n this._bridge.unsubscribe(key);\n });\n }\n get(name) {\n this.checkName(name);\n return this._bridge.get(name);\n }\n ready() {\n return Promise.resolve(this);\n }\n destroy(name) {\n this.checkName(name);\n return this._bridge.destroy(name);\n }\n get setPathSupported() {\n return this._bridge.setPathSupported;\n }\n checkName(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new Error(\"Please provide the name as a non-empty string!\");\n }\n }\n checkPath(path) {\n if (typeof path !== \"string\") {\n throw new Error(\"Please provide the path as a dot delimited string!\");\n }\n }\n checkData(data) {\n if (typeof data !== \"object\") {\n throw new Error(\"Please provide the data as an object!\");\n }\n }\n}\n\nfunction promisify (promise, successCallback, errorCallback) {\n if (typeof successCallback !== \"function\" && typeof errorCallback !== \"function\") {\n return promise;\n }\n if (typeof successCallback !== \"function\") {\n successCallback = () => { };\n }\n else if (typeof errorCallback !== \"function\") {\n errorCallback = () => { };\n }\n return promise.then(successCallback, errorCallback);\n}\n\nfunction rejectAfter(ms = 0, promise, error) {\n let timeout;\n const clearTimeoutIfThere = () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n };\n promise\n .then(() => {\n clearTimeoutIfThere();\n })\n .catch(() => {\n clearTimeoutIfThere();\n });\n return new Promise((resolve, reject) => {\n timeout = setTimeout(() => reject(error), ms);\n });\n}\n\nvar InvokeStatus;\n(function (InvokeStatus) {\n InvokeStatus[InvokeStatus[\"Success\"] = 0] = \"Success\";\n InvokeStatus[InvokeStatus[\"Error\"] = 1] = \"Error\";\n})(InvokeStatus || (InvokeStatus = {}));\nclass Client {\n protocol;\n repo;\n instance;\n configuration;\n constructor(protocol, repo, instance, configuration) {\n this.protocol = protocol;\n this.repo = repo;\n this.instance = instance;\n this.configuration = configuration;\n }\n subscribe(method, options, successCallback, errorCallback, existingSub) {\n const callProtocolSubscribe = (targetServers, stream, successProxy, errorProxy) => {\n options.methodResponseTimeout = options.methodResponseTimeout ?? options.waitTimeoutMs;\n this.protocol.client.subscribe(stream, options, targetServers, successProxy, errorProxy, existingSub);\n };\n const promise = new Promise((resolve, reject) => {\n const successProxy = (sub) => {\n resolve(sub);\n };\n const errorProxy = (err) => {\n reject(err);\n };\n if (!method) {\n reject(`Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.`);\n return;\n }\n let methodDef;\n if (typeof method === \"string\") {\n methodDef = { name: method };\n }\n else {\n methodDef = method;\n }\n if (!methodDef.name) {\n reject(`Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.`);\n return;\n }\n if (options === undefined) {\n options = {};\n }\n let target = options.target;\n if (target === undefined) {\n target = \"best\";\n }\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\") {\n reject(new Error(`\"${target}\" is not a valid target. Valid targets are \"all\", \"best\", or an instance.`));\n return;\n }\n if (options.methodResponseTimeout === undefined) {\n options.methodResponseTimeout = options.method_response_timeout;\n if (options.methodResponseTimeout === undefined) {\n options.methodResponseTimeout = this.configuration.methodResponseTimeout;\n }\n }\n if (options.waitTimeoutMs === undefined) {\n options.waitTimeoutMs = options.wait_for_method_timeout;\n if (options.waitTimeoutMs === undefined) {\n options.waitTimeoutMs = this.configuration.waitTimeoutMs;\n }\n }\n const delayStep = 500;\n let delayTillNow = 0;\n let currentServers = this.getServerMethodsByFilterAndTarget(methodDef, target);\n if (currentServers.length > 0) {\n callProtocolSubscribe(currentServers, currentServers[0].methods[0], successProxy, errorProxy);\n }\n else {\n const retry = () => {\n if (!target || !(options.waitTimeoutMs)) {\n return;\n }\n delayTillNow += delayStep;\n currentServers = this.getServerMethodsByFilterAndTarget(methodDef, target);\n if (currentServers.length > 0) {\n const streamInfo = currentServers[0].methods[0];\n callProtocolSubscribe(currentServers, streamInfo, successProxy, errorProxy);\n }\n else if (delayTillNow >= options.waitTimeoutMs) {\n const def = typeof method === \"string\" ? { name: method } : method;\n callProtocolSubscribe(currentServers, def, successProxy, errorProxy);\n }\n else {\n setTimeout(retry, delayStep);\n }\n };\n setTimeout(retry, delayStep);\n }\n });\n return promisify(promise, successCallback, errorCallback);\n }\n servers(methodFilter) {\n const filterCopy = methodFilter === undefined\n ? undefined\n : { ...methodFilter };\n return this.getServers(filterCopy).map((serverMethodMap) => {\n return serverMethodMap.server.instance;\n });\n }\n methods(methodFilter) {\n if (typeof methodFilter === \"string\") {\n methodFilter = { name: methodFilter };\n }\n else {\n methodFilter = { ...methodFilter };\n }\n return this.getMethods(methodFilter);\n }\n methodsForInstance(instance) {\n return this.getMethodsForInstance(instance);\n }\n methodAdded(callback) {\n return this.repo.onMethodAdded(callback);\n }\n methodRemoved(callback) {\n return this.repo.onMethodRemoved(callback);\n }\n serverAdded(callback) {\n return this.repo.onServerAdded(callback);\n }\n serverRemoved(callback) {\n return this.repo.onServerRemoved((server, reason) => {\n callback(server, reason);\n });\n }\n serverMethodAdded(callback) {\n return this.repo.onServerMethodAdded((server, method) => {\n callback({ server, method });\n });\n }\n serverMethodRemoved(callback) {\n return this.repo.onServerMethodRemoved((server, method) => {\n callback({ server, method });\n });\n }\n async invoke(methodFilter, argumentObj, target, additionalOptions, success, error) {\n const getInvokePromise = async () => {\n let methodDefinition;\n if (typeof methodFilter === \"string\") {\n methodDefinition = { name: methodFilter };\n }\n else {\n methodDefinition = { ...methodFilter };\n }\n if (!methodDefinition.name) {\n return Promise.reject(`Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.`);\n }\n if (!argumentObj) {\n argumentObj = {};\n }\n if (!target) {\n target = \"best\";\n }\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\" && target !== \"skipMine\") {\n return Promise.reject(new Error(`\"${target}\" is not a valid target. Valid targets are \"all\" and \"best\".`));\n }\n if (!additionalOptions) {\n additionalOptions = {};\n }\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\n additionalOptions.methodResponseTimeoutMs = additionalOptions.method_response_timeout;\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\n additionalOptions.methodResponseTimeoutMs = this.configuration.methodResponseTimeout;\n }\n }\n if (additionalOptions.waitTimeoutMs === undefined) {\n additionalOptions.waitTimeoutMs = additionalOptions.wait_for_method_timeout;\n if (additionalOptions.waitTimeoutMs === undefined) {\n additionalOptions.waitTimeoutMs = this.configuration.waitTimeoutMs;\n }\n }\n if (additionalOptions.waitTimeoutMs !== undefined && typeof additionalOptions.waitTimeoutMs !== \"number\") {\n return Promise.reject(new Error(`\"${additionalOptions.waitTimeoutMs}\" is not a valid number for \"waitTimeoutMs\" `));\n }\n if (typeof argumentObj !== \"object\") {\n return Promise.reject(new Error(`The method arguments must be an object. method: ${methodDefinition.name}`));\n }\n let serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target);\n if (serversMethodMap.length === 0) {\n try {\n serversMethodMap = await this.tryToAwaitForMethods(methodDefinition, target, additionalOptions);\n }\n catch (err) {\n const method = {\n ...methodDefinition,\n getServers: () => [],\n supportsStreaming: false,\n objectTypes: methodDefinition.objectTypes ?? [],\n flags: methodDefinition.flags?.metadata ?? {}\n };\n const errorObj = {\n method,\n called_with: argumentObj,\n message: `Can not find a method matching ${JSON.stringify(methodFilter)} with server filter ${JSON.stringify(target)}`,\n executed_by: undefined,\n returned: undefined,\n status: undefined,\n };\n return Promise.reject(errorObj);\n }\n }\n const timeout = additionalOptions.methodResponseTimeoutMs;\n const additionalOptionsCopy = additionalOptions;\n const invokePromises = serversMethodMap.map((serversMethodPair) => {\n const invId = nanoid(10);\n const method = serversMethodPair.methods[0];\n const server = serversMethodPair.server;\n const invokePromise = this.protocol.client.invoke(invId, method, argumentObj, server, additionalOptionsCopy);\n return Promise.race([\n invokePromise,\n rejectAfter(timeout, invokePromise, {\n invocationId: invId,\n message: `Invocation timeout (${timeout} ms) reached for method name: ${method?.name}, target instance: ${JSON.stringify(server.instance)}, options: ${JSON.stringify(additionalOptionsCopy)}`,\n status: InvokeStatus.Error,\n })\n ]);\n });\n const invocationMessages = await Promise.all(invokePromises);\n const results = this.getInvocationResultObj(invocationMessages, methodDefinition, argumentObj);\n const allRejected = invocationMessages.every((result) => result.status === InvokeStatus.Error);\n if (allRejected) {\n return Promise.reject(results);\n }\n return results;\n };\n return promisify(getInvokePromise(), success, error);\n }\n getInvocationResultObj(invocationResults, method, calledWith) {\n const all_return_values = invocationResults\n .filter((invokeMessage) => invokeMessage.status === InvokeStatus.Success)\n .reduce((allValues, currentValue) => {\n allValues = [\n ...allValues,\n {\n executed_by: currentValue.instance,\n returned: currentValue.result,\n called_with: calledWith,\n method,\n message: currentValue.message,\n status: currentValue.status,\n }\n ];\n return allValues;\n }, []);\n const all_errors = invocationResults\n .filter((invokeMessage) => invokeMessage.status === InvokeStatus.Error)\n .reduce((allErrors, currError) => {\n allErrors = [\n ...allErrors,\n {\n executed_by: currError.instance,\n called_with: calledWith,\n name: method.name,\n message: currError.message,\n }\n ];\n return allErrors;\n }, []);\n const invResult = invocationResults[0];\n const result = {\n method,\n called_with: calledWith,\n returned: invResult.result,\n executed_by: invResult.instance,\n all_return_values,\n all_errors,\n message: invResult.message,\n status: invResult.status\n };\n return result;\n }\n tryToAwaitForMethods(methodDefinition, target, additionalOptions) {\n return new Promise((resolve, reject) => {\n if (additionalOptions.waitTimeoutMs === 0) {\n reject();\n return;\n }\n const delayStep = 500;\n let delayTillNow = 0;\n const retry = () => {\n delayTillNow += delayStep;\n const serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target);\n if (serversMethodMap.length > 0) {\n clearInterval(interval);\n resolve(serversMethodMap);\n }\n else if (delayTillNow >= (additionalOptions.waitTimeoutMs || 10000)) {\n clearInterval(interval);\n reject();\n return;\n }\n };\n const interval = setInterval(retry, delayStep);\n });\n }\n filterByTarget(target, serverMethodMap) {\n if (typeof target === \"string\") {\n if (target === \"all\") {\n return [...serverMethodMap];\n }\n else if (target === \"best\") {\n const localMachine = serverMethodMap\n .find((s) => s.server.instance.isLocal);\n if (localMachine) {\n return [localMachine];\n }\n if (serverMethodMap[0] !== undefined) {\n return [serverMethodMap[0]];\n }\n }\n else if (target === \"skipMine\") {\n return serverMethodMap.filter(({ server }) => server.instance.peerId !== this.instance.peerId);\n }\n }\n else {\n let targetArray;\n if (!Array.isArray(target)) {\n targetArray = [target];\n }\n else {\n targetArray = target;\n }\n const allServersMatching = targetArray.reduce((matches, filter) => {\n const myMatches = serverMethodMap.filter((serverMethodPair) => {\n return this.instanceMatch(filter, serverMethodPair.server.instance);\n });\n return matches.concat(myMatches);\n }, []);\n return allServersMatching;\n }\n return [];\n }\n instanceMatch(instanceFilter, instanceDefinition) {\n return this.containsProps(instanceFilter, instanceDefinition);\n }\n methodMatch(methodFilter, methodDefinition) {\n return this.containsProps(methodFilter, methodDefinition);\n }\n containsProps(filter, repoMethod) {\n const filterProps = Object.keys(filter)\n .filter((prop) => {\n return filter[prop] !== undefined\n && filter[prop] !== null\n && typeof filter[prop] !== \"function\"\n && prop !== \"object_types\"\n && prop !== \"display_name\"\n && prop !== \"id\"\n && prop !== \"gatewayId\"\n && prop !== \"identifier\"\n && prop[0] !== \"_\";\n });\n return filterProps.every((prop) => {\n let isMatch;\n const filterValue = filter[prop];\n const repoMethodValue = repoMethod[prop];\n switch (prop) {\n case \"objectTypes\":\n isMatch = (filterValue || []).every((filterValueEl) => {\n return (repoMethodValue || []).includes(filterValueEl);\n });\n break;\n case \"flags\":\n isMatch = isSubset(repoMethodValue || {}, filterValue || {});\n break;\n default:\n isMatch = String(filterValue).toLowerCase() === String(repoMethodValue).toLowerCase();\n }\n return isMatch;\n });\n }\n getMethods(methodFilter) {\n if (methodFilter === undefined) {\n return this.repo.getMethods();\n }\n const methods = this.repo.getMethods().filter((method) => {\n return this.methodMatch(methodFilter, method);\n });\n return methods;\n }\n getMethodsForInstance(instanceFilter) {\n const allServers = this.repo.getServers();\n const matchingServers = allServers.filter((server) => {\n return this.instanceMatch(instanceFilter, server.instance);\n });\n if (matchingServers.length === 0) {\n return [];\n }\n let resultMethodsObject = {};\n if (matchingServers.length === 1) {\n resultMethodsObject = matchingServers[0].methods;\n }\n else {\n matchingServers.forEach((server) => {\n Object.keys(server.methods).forEach((methodKey) => {\n const method = server.methods[methodKey];\n resultMethodsObject[method.identifier] = method;\n });\n });\n }\n return Object.keys(resultMethodsObject)\n .map((key) => {\n return resultMethodsObject[key];\n });\n }\n getServers(methodFilter) {\n const servers = this.repo.getServers();\n if (methodFilter === undefined) {\n return servers.map((server) => {\n return { server, methods: [] };\n });\n }\n return servers.reduce((prev, current) => {\n const methodsForServer = Object.values(current.methods);\n const matchingMethods = methodsForServer.filter((method) => {\n return this.methodMatch(methodFilter, method);\n });\n if (matchingMethods.length > 0) {\n prev.push({ server: current, methods: matchingMethods });\n }\n return prev;\n }, []);\n }\n getServerMethodsByFilterAndTarget(methodFilter, target) {\n const serversMethodMap = this.getServers(methodFilter);\n return this.filterByTarget(target, serversMethodMap);\n }\n}\n\nclass ServerSubscription {\n protocol;\n repoMethod;\n subscription;\n constructor(protocol, repoMethod, subscription) {\n this.protocol = protocol;\n this.repoMethod = repoMethod;\n this.subscription = subscription;\n }\n get stream() {\n if (!this.repoMethod.stream) {\n throw new Error(\"no stream\");\n }\n return this.repoMethod.stream;\n }\n get arguments() { return this.subscription.arguments || {}; }\n get branchKey() { return this.subscription.branchKey; }\n get instance() {\n if (!this.subscription.instance) {\n throw new Error(\"no instance\");\n }\n return this.subscription.instance;\n }\n close() {\n this.protocol.server.closeSingleSubscription(this.repoMethod, this.subscription);\n }\n push(data) {\n this.protocol.server.pushDataToSingle(this.repoMethod, this.subscription, data);\n }\n}\n\nclass Request {\n protocol;\n repoMethod;\n requestContext;\n arguments;\n instance;\n constructor(protocol, repoMethod, requestContext) {\n this.protocol = protocol;\n this.repoMethod = repoMethod;\n this.requestContext = requestContext;\n this.arguments = requestContext.arguments;\n this.instance = requestContext.instance;\n }\n accept() {\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, \"\");\n }\n acceptOnBranch(branch) {\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, branch);\n }\n reject(reason) {\n this.protocol.server.rejectRequest(this.requestContext, this.repoMethod, reason);\n }\n}\n\nlet ServerStreaming$1 = class ServerStreaming {\n protocol;\n server;\n constructor(protocol, server) {\n this.protocol = protocol;\n this.server = server;\n protocol.server.onSubRequest((rc, rm) => this.handleSubRequest(rc, rm));\n protocol.server.onSubAdded((sub, rm) => this.handleSubAdded(sub, rm));\n protocol.server.onSubRemoved((sub, rm) => this.handleSubRemoved(sub, rm));\n }\n handleSubRequest(requestContext, repoMethod) {\n if (!(repoMethod &&\n repoMethod.streamCallbacks &&\n typeof repoMethod.streamCallbacks.subscriptionRequestHandler === \"function\")) {\n return;\n }\n const request = new Request(this.protocol, repoMethod, requestContext);\n repoMethod.streamCallbacks.subscriptionRequestHandler(request);\n }\n handleSubAdded(subscription, repoMethod) {\n if (!(repoMethod &&\n repoMethod.streamCallbacks &&\n typeof repoMethod.streamCallbacks.subscriptionAddedHandler === \"function\")) {\n return;\n }\n const sub = new ServerSubscription(this.protocol, repoMethod, subscription);\n repoMethod.streamCallbacks.subscriptionAddedHandler(sub);\n }\n handleSubRemoved(subscription, repoMethod) {\n if (!(repoMethod &&\n repoMethod.streamCallbacks &&\n typeof repoMethod.streamCallbacks.subscriptionRemovedHandler === \"function\")) {\n return;\n }\n const sub = new ServerSubscription(this.protocol, repoMethod, subscription);\n repoMethod.streamCallbacks.subscriptionRemovedHandler(sub);\n }\n};\n\nclass ServerBranch {\n key;\n protocol;\n repoMethod;\n constructor(key, protocol, repoMethod) {\n this.key = key;\n this.protocol = protocol;\n this.repoMethod = repoMethod;\n }\n subscriptions() {\n const subList = this.protocol.server.getSubscriptionList(this.repoMethod, this.key);\n return subList.map((sub) => {\n return new ServerSubscription(this.protocol, this.repoMethod, sub);\n });\n }\n close() {\n this.protocol.server.closeAllSubscriptions(this.repoMethod, this.key);\n }\n push(data) {\n this.protocol.server.pushData(this.repoMethod, data, [this.key]);\n }\n}\n\nclass ServerStream {\n _protocol;\n _repoMethod;\n _server;\n name;\n constructor(_protocol, _repoMethod, _server) {\n this._protocol = _protocol;\n this._repoMethod = _repoMethod;\n this._server = _server;\n this.name = this._repoMethod.definition.name;\n }\n branches(key) {\n const bList = this._protocol.server.getBranchList(this._repoMethod);\n if (key) {\n if (bList.indexOf(key) > -1) {\n return new ServerBranch(key, this._protocol, this._repoMethod);\n }\n return undefined;\n }\n else {\n return bList.map((branchKey) => {\n return new ServerBranch(branchKey, this._protocol, this._repoMethod);\n });\n }\n }\n branch(key) {\n return this.branches(key);\n }\n subscriptions() {\n const subList = this._protocol.server.getSubscriptionList(this._repoMethod);\n return subList.map((sub) => {\n return new ServerSubscription(this._protocol, this._repoMethod, sub);\n });\n }\n get definition() {\n const def2 = this._repoMethod.definition;\n return {\n accepts: def2.accepts,\n description: def2.description,\n displayName: def2.displayName,\n name: def2.name,\n objectTypes: def2.objectTypes,\n returns: def2.returns,\n supportsStreaming: def2.supportsStreaming,\n flags: def2.flags?.metadata,\n };\n }\n close() {\n this._protocol.server.closeAllSubscriptions(this._repoMethod);\n this._server.unregister(this._repoMethod.definition, true);\n }\n push(data, branches) {\n if (typeof branches !== \"string\" && !Array.isArray(branches) && branches !== undefined) {\n throw new Error(\"invalid branches should be string or string array\");\n }\n if (typeof data !== \"object\") {\n throw new Error(\"Invalid arguments. Data must be an object.\");\n }\n this._protocol.server.pushData(this._repoMethod, data, branches);\n }\n updateRepoMethod(repoMethod) {\n this._repoMethod = repoMethod;\n }\n}\n\nclass Server {\n protocol;\n serverRepository;\n streaming;\n invocations = 0;\n currentlyUnregistering = {};\n constructor(protocol, serverRepository) {\n this.protocol = protocol;\n this.serverRepository = serverRepository;\n this.streaming = new ServerStreaming$1(protocol, this);\n this.protocol.server.onInvoked(this.onMethodInvoked.bind(this));\n }\n createStream(streamDef, callbacks, successCallback, errorCallback, existingStream) {\n const promise = new Promise((resolve, reject) => {\n if (!streamDef) {\n reject(\"The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream.\");\n return;\n }\n let streamMethodDefinition;\n if (typeof streamDef === \"string\") {\n streamMethodDefinition = { name: \"\" + streamDef };\n }\n else {\n streamMethodDefinition = { ...streamDef };\n }\n if (!streamMethodDefinition.name) {\n return reject(`The “name” property is required for the “streamDefinition” object and must be unique. Stream definition: ${JSON.stringify(streamMethodDefinition)}`);\n }\n const nameAlreadyExists = this.serverRepository.getList()\n .some((serverMethod) => serverMethod.definition.name === streamMethodDefinition.name);\n if (nameAlreadyExists) {\n return reject(`A stream with the name \"${streamMethodDefinition.name}\" already exists! Please, provide a unique name for the stream.`);\n }\n streamMethodDefinition.supportsStreaming = true;\n if (!callbacks) {\n callbacks = {};\n }\n if (typeof callbacks.subscriptionRequestHandler !== \"function\") {\n callbacks.subscriptionRequestHandler = (request) => {\n request.accept();\n };\n }\n const repoMethod = this.serverRepository.add({\n definition: streamMethodDefinition,\n streamCallbacks: callbacks,\n protocolState: {},\n });\n this.protocol.server.createStream(repoMethod)\n .then(() => {\n let streamUserObject;\n if (existingStream) {\n streamUserObject = existingStream;\n existingStream.updateRepoMethod(repoMethod);\n }\n else {\n streamUserObject = new ServerStream(this.protocol, repoMethod, this);\n }\n repoMethod.stream = streamUserObject;\n resolve(streamUserObject);\n })\n .catch((err) => {\n if (repoMethod.repoId) {\n this.serverRepository.remove(repoMethod.repoId);\n }\n reject(err);\n });\n });\n return promisify(promise, successCallback, errorCallback);\n }\n register(methodDefinition, callback) {\n if (!methodDefinition) {\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\n }\n if (typeof callback !== \"function\") {\n return Promise.reject(`The second parameter must be a callback function. Method: ${typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name}`);\n }\n const wrappedCallbackFunction = async (context, resultCallback) => {\n try {\n const result = callback(context.args, context.instance);\n if (result && typeof result.then === \"function\") {\n const resultValue = await result;\n resultCallback(undefined, resultValue);\n }\n else {\n resultCallback(undefined, result);\n }\n }\n catch (e) {\n resultCallback(e ?? \"\", e ?? \"\");\n }\n };\n wrappedCallbackFunction.userCallback = callback;\n return this.registerCore(methodDefinition, wrappedCallbackFunction);\n }\n registerAsync(methodDefinition, callback) {\n if (!methodDefinition) {\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\n }\n if (typeof callback !== \"function\") {\n return Promise.reject(`The second parameter must be a callback function. Method: ${typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name}`);\n }\n const wrappedCallback = async (context, resultCallback) => {\n try {\n let resultCalled = false;\n const success = (result) => {\n if (!resultCalled) {\n resultCallback(undefined, result);\n }\n resultCalled = true;\n };\n const error = (e) => {\n if (!resultCalled) {\n if (!e) {\n e = \"\";\n }\n resultCallback(e, e);\n }\n resultCalled = true;\n };\n const methodResult = callback(context.args, context.instance, success, error);\n if (methodResult && typeof methodResult.then === \"function\") {\n methodResult\n .then(success)\n .catch(error);\n }\n }\n catch (e) {\n resultCallback(e, undefined);\n }\n };\n wrappedCallback.userCallbackAsync = callback;\n return this.registerCore(methodDefinition, wrappedCallback);\n }\n async unregister(methodFilter, forStream = false) {\n if (methodFilter === undefined) {\n return Promise.reject(\"Please, provide either a unique string for a name or an object containing a “name” property.\");\n }\n if (typeof methodFilter === \"function\") {\n await this.unregisterWithPredicate(methodFilter, forStream);\n return;\n }\n let methodDefinition;\n if (typeof methodFilter === \"string\") {\n methodDefinition = { name: methodFilter };\n }\n else {\n methodDefinition = methodFilter;\n }\n if (methodDefinition.name === undefined) {\n return Promise.reject(\"Method name is required. Cannot find a method if the method name is undefined!\");\n }\n const methodToBeRemoved = this.serverRepository.getList().find((serverMethod) => {\n return serverMethod.definition.name === methodDefinition.name\n && (serverMethod.definition.supportsStreaming || false) === forStream;\n });\n if (!methodToBeRemoved) {\n return Promise.reject(`Method with a name \"${methodDefinition.name}\" does not exist or is not registered by your application!`);\n }\n await this.removeMethodsOrStreams([methodToBeRemoved]);\n }\n async unregisterWithPredicate(filterPredicate, forStream) {\n const methodsOrStreamsToRemove = this.serverRepository.getList()\n .filter((sm) => filterPredicate(sm.definition))\n .filter((serverMethod) => (serverMethod.definition.supportsStreaming || false) === forStream);\n if (!methodsOrStreamsToRemove || methodsOrStreamsToRemove.length === 0) {\n return Promise.reject(`Could not find a ${forStream ? \"stream\" : \"method\"} matching the specified condition!`);\n }\n await this.removeMethodsOrStreams(methodsOrStreamsToRemove);\n }\n removeMethodsOrStreams(methodsToRemove) {\n const methodUnregPromises = [];\n methodsToRemove.forEach((method) => {\n const promise = this.protocol.server.unregister(method)\n .then(() => {\n if (method.repoId) {\n this.serverRepository.remove(method.repoId);\n }\n });\n methodUnregPromises.push(promise);\n this.addAsCurrentlyUnregistering(method.definition.name, promise);\n });\n return Promise.all(methodUnregPromises);\n }\n async addAsCurrentlyUnregistering(methodName, promise) {\n const timeout = new Promise((resolve) => setTimeout(resolve, 5000));\n this.currentlyUnregistering[methodName] = Promise.race([promise, timeout]).then(() => {\n delete this.currentlyUnregistering[methodName];\n });\n }\n async registerCore(method, theFunction) {\n let methodDefinition;\n if (typeof method === \"string\") {\n methodDefinition = { name: \"\" + method };\n }\n else {\n methodDefinition = { ...method };\n }\n if (!methodDefinition.name) {\n return Promise.reject(`Please, provide a (unique) string value for the “name” property in the “methodDefinition” object: ${JSON.stringify(method)}`);\n }\n const unregisterInProgress = this.currentlyUnregistering[methodDefinition.name];\n if (typeof unregisterInProgress !== \"undefined\") {\n await unregisterInProgress;\n }\n const nameAlreadyExists = this.serverRepository.getList()\n .some((serverMethod) => serverMethod.definition.name === methodDefinition.name);\n if (nameAlreadyExists) {\n return Promise.reject(`A method with the name \"${methodDefinition.name}\" already exists! Please, provide a unique name for the method.`);\n }\n if (methodDefinition.supportsStreaming) {\n return Promise.reject(`When you create methods with “glue.interop.register()” or “glue.interop.registerAsync()” the property “supportsStreaming” cannot be “true”. If you want “${methodDefinition.name}” to be a stream, please use the “glue.interop.createStream()” method.`);\n }\n const repoMethod = this.serverRepository.add({\n definition: methodDefinition,\n theFunction,\n protocolState: {},\n });\n return this.protocol.server.register(repoMethod)\n .catch((err) => {\n if (repoMethod?.repoId) {\n this.serverRepository.remove(repoMethod.repoId);\n }\n throw err;\n });\n }\n onMethodInvoked(methodToExecute, invocationId, invocationArgs) {\n if (!methodToExecute || !methodToExecute.theFunction) {\n return;\n }\n methodToExecute.theFunction(invocationArgs, (err, result) => {\n if (err !== undefined && err !== null) {\n if (err.message && typeof err.message === \"string\") {\n err = err.message;\n }\n else if (typeof err !== \"string\") {\n try {\n err = JSON.stringify(err);\n }\n catch (unStrException) {\n err = `un-stringifyable error in onMethodInvoked! Top level prop names: ${Object.keys(err)}`;\n }\n }\n }\n if (!result) {\n result = {};\n }\n else if (typeof result !== \"object\" || Array.isArray(result)) {\n result = { _value: result };\n }\n this.protocol.server.methodInvocationResult(methodToExecute, invocationId, err, result);\n });\n }\n}\n\nclass InstanceWrapper {\n wrapped = {};\n constructor(API, instance, connection) {\n this.wrapped.getMethods = function () {\n return API.methodsForInstance(this);\n };\n this.wrapped.getStreams = function () {\n return API.methodsForInstance(this).filter((m) => m.supportsStreaming);\n };\n if (instance) {\n this.refreshWrappedObject(instance);\n }\n if (connection) {\n connection.loggedIn(() => {\n this.refresh(connection);\n });\n this.refresh(connection);\n }\n }\n unwrap() {\n return this.wrapped;\n }\n refresh(connection) {\n if (!connection) {\n return;\n }\n const resolvedIdentity = connection?.resolvedIdentity;\n const instance = Object.assign({}, resolvedIdentity ?? {}, { peerId: connection?.peerId });\n this.refreshWrappedObject(instance);\n }\n refreshWrappedObject(resolvedIdentity) {\n Object.keys(resolvedIdentity).forEach((key) => {\n this.wrapped[key] = resolvedIdentity[key];\n });\n this.wrapped.user = resolvedIdentity.user;\n this.wrapped.instance = resolvedIdentity.instance;\n this.wrapped.application = resolvedIdentity.application ?? nanoid(10);\n this.wrapped.applicationName = resolvedIdentity.applicationName;\n this.wrapped.pid = resolvedIdentity.pid ?? resolvedIdentity.process ?? Math.floor(Math.random() * 10000000000);\n this.wrapped.machine = resolvedIdentity.machine;\n this.wrapped.environment = resolvedIdentity.environment;\n this.wrapped.region = resolvedIdentity.region;\n this.wrapped.windowId = resolvedIdentity.windowId;\n this.wrapped.isLocal = resolvedIdentity.isLocal ?? true;\n this.wrapped.api = resolvedIdentity.api;\n this.wrapped.service = resolvedIdentity.service;\n this.wrapped.peerId = resolvedIdentity.peerId;\n }\n}\n\nconst hideMethodSystemFlags = (method) => {\n return {\n ...method,\n flags: method.flags.metadata || {}\n };\n};\nclass ClientRepository {\n logger;\n API;\n servers = {};\n myServer;\n methodsCount = {};\n callbacks = CallbackRegistryFactory();\n constructor(logger, API) {\n this.logger = logger;\n this.API = API;\n const peerId = this.API.instance.peerId;\n this.myServer = {\n id: peerId,\n methods: {},\n instance: this.API.instance,\n wrapper: this.API.unwrappedInstance,\n };\n this.servers[peerId] = this.myServer;\n }\n addServer(info, serverId) {\n this.logger.debug(`adding server ${serverId}`);\n const current = this.servers[serverId];\n if (current) {\n return current.id;\n }\n const wrapper = new InstanceWrapper(this.API, info);\n const serverEntry = {\n id: serverId,\n methods: {},\n instance: wrapper.unwrap(),\n wrapper,\n };\n this.servers[serverId] = serverEntry;\n this.callbacks.execute(\"onServerAdded\", serverEntry.instance);\n return serverId;\n }\n removeServerById(id, reason) {\n const server = this.servers[id];\n if (!server) {\n this.logger.warn(`not aware of server ${id}, my state ${JSON.stringify(Object.keys(this.servers))}`);\n return;\n }\n else {\n this.logger.debug(`removing server ${id}`);\n }\n Object.keys(server.methods).forEach((methodId) => {\n this.removeServerMethod(id, methodId);\n });\n delete this.servers[id];\n this.callbacks.execute(\"onServerRemoved\", server.instance, reason);\n }\n addServerMethod(serverId, method) {\n const server = this.servers[serverId];\n if (!server) {\n throw new Error(\"server does not exists\");\n }\n if (server.methods[method.id]) {\n return;\n }\n const identifier = this.createMethodIdentifier(method);\n const that = this;\n const methodDefinition = {\n identifier,\n gatewayId: method.id,\n name: method.name,\n displayName: method.display_name,\n description: method.description,\n version: method.version,\n objectTypes: method.object_types || [],\n accepts: method.input_signature,\n returns: method.result_signature,\n supportsStreaming: typeof method.flags !== \"undefined\" ? method.flags.streaming : false,\n flags: method.flags ?? {},\n getServers: () => {\n return that.getServersByMethod(identifier);\n }\n };\n methodDefinition.object_types = methodDefinition.objectTypes;\n methodDefinition.display_name = methodDefinition.displayName;\n methodDefinition.version = methodDefinition.version;\n server.methods[method.id] = methodDefinition;\n const clientMethodDefinition = hideMethodSystemFlags(methodDefinition);\n if (!this.methodsCount[identifier]) {\n this.methodsCount[identifier] = 0;\n this.callbacks.execute(\"onMethodAdded\", clientMethodDefinition);\n }\n this.methodsCount[identifier] = this.methodsCount[identifier] + 1;\n this.callbacks.execute(\"onServerMethodAdded\", server.instance, clientMethodDefinition);\n return methodDefinition;\n }\n removeServerMethod(serverId, methodId) {\n const server = this.servers[serverId];\n if (!server) {\n throw new Error(\"server does not exists\");\n }\n const method = server.methods[methodId];\n delete server.methods[methodId];\n const clientMethodDefinition = hideMethodSystemFlags(method);\n this.methodsCount[method.identifier] = this.methodsCount[method.identifier] - 1;\n if (this.methodsCount[method.identifier] === 0) {\n this.callbacks.execute(\"onMethodRemoved\", clientMethodDefinition);\n }\n this.callbacks.execute(\"onServerMethodRemoved\", server.instance, clientMethodDefinition);\n }\n getMethods() {\n return this.extractMethodsFromServers(Object.values(this.servers)).map(hideMethodSystemFlags);\n }\n getServers() {\n return Object.values(this.servers).map(this.hideServerMethodSystemFlags);\n }\n onServerAdded(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onServerAdded\", callback);\n const serversWithMethodsToReplay = this.getServers().map((s) => s.instance);\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, serversWithMethodsToReplay, callback);\n }\n onMethodAdded(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onMethodAdded\", callback);\n const methodsToReplay = this.getMethods();\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, methodsToReplay, callback);\n }\n onServerMethodAdded(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onServerMethodAdded\", callback);\n let unsubCalled = false;\n const servers = this.getServers();\n setTimeout(() => {\n servers.forEach((server) => {\n const methods = server.methods;\n Object.keys(methods).forEach((methodId) => {\n if (!unsubCalled) {\n callback(server.instance, methods[methodId]);\n }\n });\n });\n }, 0);\n return () => {\n unsubCalled = true;\n unsubscribeFunc();\n };\n }\n onMethodRemoved(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onMethodRemoved\", callback);\n return unsubscribeFunc;\n }\n onServerRemoved(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onServerRemoved\", callback);\n return unsubscribeFunc;\n }\n onServerMethodRemoved(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onServerMethodRemoved\", callback);\n return unsubscribeFunc;\n }\n getServerById(id) {\n return this.hideServerMethodSystemFlags(this.servers[id]);\n }\n reset() {\n Object.keys(this.servers).forEach((key) => {\n this.removeServerById(key, \"reset\");\n });\n this.servers = {\n [this.myServer.id]: this.myServer\n };\n this.methodsCount = {};\n }\n createMethodIdentifier(methodInfo) {\n const accepts = methodInfo.input_signature ?? \"\";\n const returns = methodInfo.result_signature ?? \"\";\n return (methodInfo.name + accepts + returns).toLowerCase();\n }\n getServersByMethod(identifier) {\n const allServers = [];\n Object.values(this.servers).forEach((server) => {\n Object.values(server.methods).forEach((method) => {\n if (method.identifier === identifier) {\n allServers.push(server.instance);\n }\n });\n });\n return allServers;\n }\n returnUnsubWithDelayedReplay(unsubscribeFunc, collectionToReplay, callback) {\n let unsubCalled = false;\n setTimeout(() => {\n collectionToReplay.forEach((item) => {\n if (!unsubCalled) {\n callback(item);\n }\n });\n }, 0);\n return () => {\n unsubCalled = true;\n unsubscribeFunc();\n };\n }\n hideServerMethodSystemFlags(server) {\n const clientMethods = {};\n Object.entries(server.methods).forEach(([name, method]) => {\n clientMethods[name] = hideMethodSystemFlags(method);\n });\n return {\n ...server,\n methods: clientMethods\n };\n }\n extractMethodsFromServers(servers) {\n const methods = Object.values(servers).reduce((clientMethods, server) => {\n return [...clientMethods, ...Object.values(server.methods)];\n }, []);\n return methods;\n }\n}\n\nclass ServerRepository {\n nextId = 0;\n methods = [];\n add(method) {\n method.repoId = String(this.nextId);\n this.nextId += 1;\n this.methods.push(method);\n return method;\n }\n remove(repoId) {\n if (typeof repoId !== \"string\") {\n return new TypeError(\"Expecting a string\");\n }\n this.methods = this.methods.filter((m) => {\n return m.repoId !== repoId;\n });\n }\n getById(id) {\n if (typeof id !== \"string\") {\n return undefined;\n }\n return this.methods.find((m) => {\n return m.repoId === id;\n });\n }\n getList() {\n return this.methods.map((m) => m);\n }\n length() {\n return this.methods.length;\n }\n reset() {\n this.methods = [];\n }\n}\n\nconst SUBSCRIPTION_REQUEST = \"onSubscriptionRequest\";\nconst SUBSCRIPTION_ADDED = \"onSubscriptionAdded\";\nconst SUBSCRIPTION_REMOVED = \"onSubscriptionRemoved\";\nclass ServerStreaming {\n session;\n repository;\n serverRepository;\n ERR_URI_SUBSCRIPTION_FAILED = \"com.tick42.agm.errors.subscription.failure\";\n callbacks = CallbackRegistryFactory();\n nextStreamId = 0;\n constructor(session, repository, serverRepository) {\n this.session = session;\n this.repository = repository;\n this.serverRepository = serverRepository;\n session.on(\"add-interest\", (msg) => {\n this.handleAddInterest(msg);\n });\n session.on(\"remove-interest\", (msg) => {\n this.handleRemoveInterest(msg);\n });\n }\n acceptRequestOnBranch(requestContext, streamingMethod, branch) {\n if (typeof branch !== \"string\") {\n branch = \"\";\n }\n if (typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\n throw new TypeError(\"The streaming method is missing its subscriptions.\");\n }\n if (!Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\n throw new TypeError(\"The streaming method is missing its branches.\");\n }\n const streamId = this.getStreamId(streamingMethod, branch);\n const key = requestContext.msg.subscription_id;\n const subscription = {\n id: key,\n arguments: requestContext.arguments,\n instance: requestContext.instance,\n branchKey: branch,\n streamId,\n subscribeMsg: requestContext.msg,\n };\n streamingMethod.protocolState.subscriptionsMap[key] = subscription;\n this.session.sendFireAndForget({\n type: \"accepted\",\n subscription_id: key,\n stream_id: streamId,\n });\n this.callbacks.execute(SUBSCRIPTION_ADDED, subscription, streamingMethod);\n }\n rejectRequest(requestContext, streamingMethod, reason) {\n if (typeof reason !== \"string\") {\n reason = \"\";\n }\n this.sendSubscriptionFailed(\"Subscription rejected by user. \" + reason, requestContext.msg.subscription_id);\n }\n pushData(streamingMethod, data, branches) {\n if (typeof streamingMethod !== \"object\" || !Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\n return;\n }\n if (typeof data !== \"object\") {\n throw new Error(\"Invalid arguments. Data must be an object.\");\n }\n if (typeof branches === \"string\") {\n branches = [branches];\n }\n else if (!Array.isArray(branches) || branches.length <= 0) {\n branches = [];\n }\n const streamIdList = streamingMethod.protocolState.branchKeyToStreamIdMap\n .filter((br) => {\n if (!branches || branches.length === 0) {\n return true;\n }\n return branches.indexOf(br.key) >= 0;\n }).map((br) => {\n return br.streamId;\n });\n streamIdList.forEach((streamId) => {\n const publishMessage = {\n type: \"publish\",\n stream_id: streamId,\n data,\n };\n this.session.sendFireAndForget(publishMessage);\n });\n }\n pushDataToSingle(method, subscription, data) {\n if (typeof data !== \"object\") {\n throw new Error(\"Invalid arguments. Data must be an object.\");\n }\n const postMessage = {\n type: \"post\",\n subscription_id: subscription.id,\n data,\n };\n this.session.sendFireAndForget(postMessage);\n }\n closeSingleSubscription(streamingMethod, subscription) {\n if (streamingMethod.protocolState.subscriptionsMap) {\n delete streamingMethod.protocolState.subscriptionsMap[subscription.id];\n }\n const dropSubscriptionMessage = {\n type: \"drop-subscription\",\n subscription_id: subscription.id,\n reason: \"Server dropping a single subscription\",\n };\n this.session.sendFireAndForget(dropSubscriptionMessage);\n subscription.instance;\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\n }\n closeMultipleSubscriptions(streamingMethod, branchKey) {\n if (typeof streamingMethod !== \"object\" || typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\n return;\n }\n if (!streamingMethod.protocolState.subscriptionsMap) {\n return;\n }\n const subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\n let subscriptionsToClose = Object.keys(subscriptionsMap)\n .map((key) => {\n return subscriptionsMap[key];\n });\n if (typeof branchKey === \"string\") {\n subscriptionsToClose = subscriptionsToClose.filter((sub) => {\n return sub.branchKey === branchKey;\n });\n }\n subscriptionsToClose.forEach((subscription) => {\n delete subscriptionsMap[subscription.id];\n const drop = {\n type: \"drop-subscription\",\n subscription_id: subscription.id,\n reason: \"Server dropping all subscriptions on stream_id: \" + subscription.streamId,\n };\n this.session.sendFireAndForget(drop);\n });\n }\n getSubscriptionList(streamingMethod, branchKey) {\n if (typeof streamingMethod !== \"object\") {\n return [];\n }\n let subscriptions = [];\n if (!streamingMethod.protocolState.subscriptionsMap) {\n return [];\n }\n const subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\n const allSubscriptions = Object.keys(subscriptionsMap)\n .map((key) => {\n return subscriptionsMap[key];\n });\n if (typeof branchKey !== \"string\") {\n subscriptions = allSubscriptions;\n }\n else {\n subscriptions = allSubscriptions.filter((sub) => {\n return sub.branchKey === branchKey;\n });\n }\n return subscriptions;\n }\n getBranchList(streamingMethod) {\n if (typeof streamingMethod !== \"object\") {\n return [];\n }\n if (!streamingMethod.protocolState.subscriptionsMap) {\n return [];\n }\n const subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\n const allSubscriptions = Object.keys(subscriptionsMap)\n .map((key) => {\n return subscriptionsMap[key];\n });\n const result = [];\n allSubscriptions.forEach((sub) => {\n let branch = \"\";\n if (typeof sub === \"object\" && typeof sub.branchKey === \"string\") {\n branch = sub.branchKey;\n }\n if (result.indexOf(branch) === -1) {\n result.push(branch);\n }\n });\n return result;\n }\n onSubAdded(callback) {\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_ADDED, callback);\n }\n onSubRequest(callback) {\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REQUEST, callback);\n }\n onSubRemoved(callback) {\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REMOVED, callback);\n }\n handleRemoveInterest(msg) {\n const streamingMethod = this.serverRepository.getById(msg.method_id);\n if (typeof msg.subscription_id !== \"string\" ||\n typeof streamingMethod !== \"object\") {\n return;\n }\n if (!streamingMethod.protocolState.subscriptionsMap) {\n return;\n }\n if (typeof streamingMethod.protocolState.subscriptionsMap[msg.subscription_id] !== \"object\") {\n return;\n }\n const subscription = streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\n delete streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\n }\n onSubscriptionLifetimeEvent(eventName, handlerFunc) {\n this.callbacks.add(eventName, handlerFunc);\n }\n getNextStreamId() {\n return this.nextStreamId++ + \"\";\n }\n handleAddInterest(msg) {\n const caller = this.repository.getServerById(msg.caller_id);\n const instance = caller.instance;\n const requestContext = {\n msg,\n arguments: msg.arguments_kv || {},\n instance,\n };\n const streamingMethod = this.serverRepository.getById(msg.method_id);\n if (streamingMethod === undefined) {\n const errorMsg = \"No method with id \" + msg.method_id + \" on this server.\";\n this.sendSubscriptionFailed(errorMsg, msg.subscription_id);\n return;\n }\n if (streamingMethod.protocolState.subscriptionsMap &&\n streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]) {\n this.sendSubscriptionFailed(\"A subscription with id \" + msg.subscription_id + \" already exists.\", msg.subscription_id);\n return;\n }\n this.callbacks.execute(SUBSCRIPTION_REQUEST, requestContext, streamingMethod);\n }\n sendSubscriptionFailed(reason, subscriptionId) {\n const errorMessage = {\n type: \"error\",\n reason_uri: this.ERR_URI_SUBSCRIPTION_FAILED,\n reason,\n request_id: subscriptionId,\n };\n this.session.sendFireAndForget(errorMessage);\n }\n getStreamId(streamingMethod, branchKey) {\n if (typeof branchKey !== \"string\") {\n branchKey = \"\";\n }\n if (!streamingMethod.protocolState.branchKeyToStreamIdMap) {\n throw new Error(`streaming ${streamingMethod.definition.name} method without protocol state`);\n }\n const needleBranch = streamingMethod.protocolState.branchKeyToStreamIdMap.filter((branch) => {\n return branch.key === branchKey;\n })[0];\n let streamId = (needleBranch ? needleBranch.streamId : undefined);\n if (typeof streamId !== \"string\" || streamId === \"\") {\n streamId = this.getNextStreamId();\n streamingMethod.protocolState.branchKeyToStreamIdMap.push({ key: branchKey, streamId });\n }\n return streamId;\n }\n}\n\nclass ServerProtocol {\n session;\n clientRepository;\n serverRepository;\n logger;\n callbacks = CallbackRegistryFactory();\n streaming;\n constructor(session, clientRepository, serverRepository, logger) {\n this.session = session;\n this.clientRepository = clientRepository;\n this.serverRepository = serverRepository;\n this.logger = logger;\n this.streaming = new ServerStreaming(session, clientRepository, serverRepository);\n this.session.on(\"invoke\", (msg) => this.handleInvokeMessage(msg));\n }\n createStream(repoMethod) {\n repoMethod.protocolState.subscriptionsMap = {};\n repoMethod.protocolState.branchKeyToStreamIdMap = [];\n return this.register(repoMethod, true);\n }\n register(repoMethod, isStreaming) {\n const methodDef = repoMethod.definition;\n const flags = Object.assign({}, { metadata: methodDef.flags ?? {} }, { streaming: isStreaming || false });\n const registerMsg = {\n type: \"register\",\n methods: [{\n id: repoMethod.repoId,\n name: methodDef.name,\n display_name: methodDef.displayName,\n description: methodDef.description,\n version: methodDef.version,\n flags,\n object_types: methodDef.objectTypes || methodDef.object_types,\n input_signature: methodDef.accepts,\n result_signature: methodDef.returns,\n restrictions: undefined,\n }],\n };\n return this.session.send(registerMsg, { methodId: repoMethod.repoId })\n .then(() => {\n this.logger.debug(\"registered method \" + repoMethod.definition.name + \" with id \" + repoMethod.repoId);\n })\n .catch((msg) => {\n this.logger.warn(`failed to register method ${repoMethod.definition.name} with id ${repoMethod.repoId} - ${JSON.stringify(msg)}`);\n throw msg;\n });\n }\n onInvoked(callback) {\n this.callbacks.add(\"onInvoked\", callback);\n }\n methodInvocationResult(method, invocationId, err, result) {\n let msg;\n if (err || err === \"\") {\n msg = {\n type: \"error\",\n request_id: invocationId,\n reason_uri: \"agm.errors.client_error\",\n reason: err,\n context: result,\n peer_id: undefined,\n };\n }\n else {\n msg = {\n type: \"yield\",\n invocation_id: invocationId,\n peer_id: this.session.peerId,\n result,\n request_id: undefined,\n };\n }\n this.session.sendFireAndForget(msg);\n }\n async unregister(method) {\n const msg = {\n type: \"unregister\",\n methods: [method.repoId],\n };\n await this.session.send(msg);\n }\n getBranchList(method) {\n return this.streaming.getBranchList(method);\n }\n getSubscriptionList(method, branchKey) {\n return this.streaming.getSubscriptionList(method, branchKey);\n }\n closeAllSubscriptions(method, branchKey) {\n this.streaming.closeMultipleSubscriptions(method, branchKey);\n }\n pushData(method, data, branches) {\n this.streaming.pushData(method, data, branches);\n }\n pushDataToSingle(method, subscription, data) {\n this.streaming.pushDataToSingle(method, subscription, data);\n }\n closeSingleSubscription(method, subscription) {\n this.streaming.closeSingleSubscription(method, subscription);\n }\n acceptRequestOnBranch(requestContext, method, branch) {\n this.streaming.acceptRequestOnBranch(requestContext, method, branch);\n }\n rejectRequest(requestContext, method, reason) {\n this.streaming.rejectRequest(requestContext, method, reason);\n }\n onSubRequest(callback) {\n this.streaming.onSubRequest(callback);\n }\n onSubAdded(callback) {\n this.streaming.onSubAdded(callback);\n }\n onSubRemoved(callback) {\n this.streaming.onSubRemoved(callback);\n }\n handleInvokeMessage(msg) {\n const invocationId = msg.invocation_id;\n const callerId = msg.caller_id;\n const methodId = msg.method_id;\n const args = msg.arguments_kv;\n const methodList = this.serverRepository.getList();\n const method = methodList.filter((m) => {\n return m.repoId === methodId;\n })[0];\n if (method === undefined) {\n return;\n }\n const client = this.clientRepository.getServerById(callerId).instance;\n const invocationArgs = { args, instance: client };\n this.callbacks.execute(\"onInvoked\", method, invocationId, invocationArgs);\n }\n}\n\nclass UserSubscription {\n repository;\n subscriptionData;\n get requestArguments() {\n return this.subscriptionData.params.arguments || {};\n }\n get servers() {\n return this.subscriptionData.trackedServers\n .filter((pair) => pair.subscriptionId)\n .map((pair) => this.repository.getServerById(pair.serverId).instance);\n }\n get serverInstance() {\n return this.servers[0];\n }\n get stream() {\n return this.subscriptionData.method;\n }\n constructor(repository, subscriptionData) {\n this.repository = repository;\n this.subscriptionData = subscriptionData;\n }\n onData(dataCallback) {\n if (typeof dataCallback !== \"function\") {\n throw new TypeError(\"The data callback must be a function.\");\n }\n this.subscriptionData.handlers.onData.push(dataCallback);\n if (this.subscriptionData.handlers.onData.length === 1 && this.subscriptionData.queued.data.length > 0) {\n this.subscriptionData.queued.data.forEach((dataItem) => {\n dataCallback(dataItem);\n });\n }\n }\n onClosed(closedCallback) {\n if (typeof closedCallback !== \"function\") {\n throw new TypeError(\"The callback must be a function.\");\n }\n this.subscriptionData.handlers.onClosed.push(closedCallback);\n }\n onFailed(callback) {\n }\n onConnected(callback) {\n if (typeof callback !== \"function\") {\n throw new TypeError(\"The callback must be a function.\");\n }\n this.subscriptionData.handlers.onConnected.push(callback);\n }\n close() {\n this.subscriptionData.close();\n }\n setNewSubscription(newSub) {\n this.subscriptionData = newSub;\n }\n}\n\nclass TimedCache {\n config;\n cache = [];\n timeoutIds = [];\n constructor(config) {\n this.config = config;\n }\n add(element) {\n const id = nanoid(10);\n this.cache.push({ id, element });\n const timeoutId = setTimeout(() => {\n const elementIdx = this.cache.findIndex((entry) => entry.id === id);\n if (elementIdx < 0) {\n return;\n }\n this.cache.splice(elementIdx, 1);\n }, this.config.ELEMENT_TTL_MS);\n this.timeoutIds.push(timeoutId);\n }\n flush() {\n const elements = this.cache.map((entry) => entry.element);\n this.timeoutIds.forEach((id) => clearInterval(id));\n this.cache = [];\n this.timeoutIds = [];\n return elements;\n }\n}\n\nconst STATUS_AWAITING_ACCEPT = \"awaitingAccept\";\nconst STATUS_SUBSCRIBED = \"subscribed\";\nconst ERR_MSG_SUB_FAILED = \"Subscription failed.\";\nconst ERR_MSG_SUB_REJECTED = \"Subscription rejected.\";\nconst ON_CLOSE_MSG_SERVER_INIT = \"ServerInitiated\";\nconst ON_CLOSE_MSG_CLIENT_INIT = \"ClientInitiated\";\nclass ClientStreaming {\n session;\n repository;\n logger;\n subscriptionsList = {};\n timedCache = new TimedCache({ ELEMENT_TTL_MS: 10000 });\n subscriptionIdToLocalKeyMap = {};\n nextSubLocalKey = 0;\n constructor(session, repository, logger) {\n this.session = session;\n this.repository = repository;\n this.logger = logger;\n session.on(\"subscribed\", this.handleSubscribed);\n session.on(\"event\", this.handleEventData);\n session.on(\"subscription-cancelled\", this.handleSubscriptionCancelled);\n }\n subscribe(streamingMethod, params, targetServers, success, error, existingSub) {\n if (targetServers.length === 0) {\n error({\n method: streamingMethod,\n called_with: params.arguments,\n message: ERR_MSG_SUB_FAILED + \" No available servers matched the target params.\",\n });\n return;\n }\n const subLocalKey = this.getNextSubscriptionLocalKey();\n const pendingSub = this.registerSubscription(subLocalKey, streamingMethod, params, success, error, params.methodResponseTimeout || 10000, existingSub);\n if (typeof pendingSub !== \"object\") {\n error({\n method: streamingMethod,\n called_with: params.arguments,\n message: ERR_MSG_SUB_FAILED + \" Unable to register the user callbacks.\",\n });\n return;\n }\n targetServers.forEach((target) => {\n const serverId = target.server.id;\n const method = target.methods.find((m) => m.name === streamingMethod.name);\n if (!method) {\n this.logger.error(`can not find method ${streamingMethod.name} for target ${target.server.id}`);\n return;\n }\n pendingSub.trackedServers.push({\n serverId,\n subscriptionId: undefined,\n });\n const msg = {\n type: \"subscribe\",\n server_id: serverId,\n method_id: method.gatewayId,\n arguments_kv: params.arguments,\n };\n this.session.send(msg, { serverId, subLocalKey })\n .then((m) => this.handleSubscribed(m))\n .catch((err) => this.handleErrorSubscribing(err));\n });\n }\n drainSubscriptions() {\n const existing = Object.values(this.subscriptionsList);\n this.subscriptionsList = {};\n this.subscriptionIdToLocalKeyMap = {};\n return existing;\n }\n drainSubscriptionsCache() {\n return this.timedCache.flush();\n }\n getNextSubscriptionLocalKey() {\n const current = this.nextSubLocalKey;\n this.nextSubLocalKey += 1;\n return current;\n }\n registerSubscription(subLocalKey, method, params, success, error, timeout, existingSub) {\n const subsInfo = {\n localKey: subLocalKey,\n status: STATUS_AWAITING_ACCEPT,\n method,\n params,\n success,\n error,\n trackedServers: [],\n handlers: {\n onData: existingSub?.handlers.onData || [],\n onClosed: existingSub?.handlers.onClosed || [],\n onConnected: existingSub?.handlers.onConnected || [],\n },\n queued: {\n data: [],\n closers: [],\n },\n timeoutId: undefined,\n close: () => this.closeSubscription(subLocalKey),\n subscription: existingSub?.subscription\n };\n if (!existingSub) {\n if (params.onData) {\n subsInfo.handlers.onData.push(params.onData);\n }\n if (params.onClosed) {\n subsInfo.handlers.onClosed.push(params.onClosed);\n }\n if (params.onConnected) {\n subsInfo.handlers.onConnected.push(params.onConnected);\n }\n }\n this.subscriptionsList[subLocalKey] = subsInfo;\n subsInfo.timeoutId = setTimeout(() => {\n if (this.subscriptionsList[subLocalKey] === undefined) {\n return;\n }\n const pendingSub = this.subscriptionsList[subLocalKey];\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\n error({\n method,\n called_with: params.arguments,\n message: ERR_MSG_SUB_FAILED + \" Subscription attempt timed out after \" + timeout + \" ms.\",\n });\n delete this.subscriptionsList[subLocalKey];\n }\n else if (pendingSub.status === STATUS_SUBSCRIBED && pendingSub.trackedServers.length > 0) {\n pendingSub.trackedServers = pendingSub.trackedServers.filter((server) => {\n return (typeof server.subscriptionId !== \"undefined\");\n });\n delete pendingSub.timeoutId;\n if (pendingSub.trackedServers.length <= 0) {\n this.callOnClosedHandlers(pendingSub);\n delete this.subscriptionsList[subLocalKey];\n }\n }\n }, timeout);\n return subsInfo;\n }\n handleErrorSubscribing = (errorResponse) => {\n const tag = errorResponse._tag;\n const subLocalKey = tag.subLocalKey;\n const pendingSub = this.subscriptionsList[subLocalKey];\n if (typeof pendingSub !== \"object\") {\n return;\n }\n pendingSub.trackedServers = pendingSub.trackedServers.filter((server) => {\n return server.serverId !== tag.serverId;\n });\n if (pendingSub.trackedServers.length <= 0) {\n clearTimeout(pendingSub.timeoutId);\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\n const reason = (typeof errorResponse.reason === \"string\" && errorResponse.reason !== \"\") ?\n ' Publisher said \"' + errorResponse.reason + '\".' :\n \" No reason given.\";\n const callArgs = typeof pendingSub.params.arguments === \"object\" ?\n JSON.stringify(pendingSub.params.arguments) :\n \"{}\";\n pendingSub.error({\n message: ERR_MSG_SUB_REJECTED + reason + \" Called with:\" + callArgs,\n called_with: pendingSub.params.arguments,\n method: pendingSub.method,\n });\n }\n else if (pendingSub.status === STATUS_SUBSCRIBED) {\n this.callOnClosedHandlers(pendingSub);\n }\n delete this.subscriptionsList[subLocalKey];\n }\n };\n handleSubscribed = (msg) => {\n const subLocalKey = msg._tag.subLocalKey;\n const pendingSub = this.subscriptionsList[subLocalKey];\n if (typeof pendingSub !== \"object\") {\n return;\n }\n const serverId = msg._tag.serverId;\n const acceptingServer = pendingSub.trackedServers\n .filter((server) => {\n return server.serverId === serverId;\n })[0];\n if (typeof acceptingServer !== \"object\") {\n return;\n }\n acceptingServer.subscriptionId = msg.subscription_id;\n this.subscriptionIdToLocalKeyMap[msg.subscription_id] = subLocalKey;\n const isFirstResponse = (pendingSub.status === STATUS_AWAITING_ACCEPT);\n pendingSub.status = STATUS_SUBSCRIBED;\n if (isFirstResponse) {\n let reconnect = false;\n let sub = pendingSub.subscription;\n if (sub) {\n sub.setNewSubscription(pendingSub);\n pendingSub.success(sub);\n reconnect = true;\n }\n else {\n sub = new UserSubscription(this.repository, pendingSub);\n pendingSub.subscription = sub;\n pendingSub.success(sub);\n }\n for (const handler of pendingSub.handlers.onConnected) {\n try {\n handler(sub.serverInstance, reconnect);\n }\n catch (e) {\n }\n }\n }\n };\n handleEventData = (msg) => {\n const subLocalKey = this.subscriptionIdToLocalKeyMap[msg.subscription_id];\n if (typeof subLocalKey === \"undefined\") {\n return;\n }\n const subscription = this.subscriptionsList[subLocalKey];\n if (typeof subscription !== \"object\") {\n return;\n }\n const trackedServersFound = subscription.trackedServers.filter((server) => {\n return server.subscriptionId === msg.subscription_id;\n });\n if (trackedServersFound.length !== 1) {\n return;\n }\n const isPrivateData = msg.oob;\n const sendingServerId = trackedServersFound[0].serverId;\n const receivedStreamData = () => {\n return {\n data: msg.data,\n server: this.repository.getServerById(sendingServerId).instance,\n requestArguments: subscription.params.arguments,\n message: undefined,\n private: isPrivateData,\n };\n };\n const onDataHandlers = subscription.handlers.onData;\n const queuedData = subscription.queued.data;\n if (onDataHandlers.length > 0) {\n onDataHandlers.forEach((callback) => {\n if (typeof callback === \"function\") {\n callback(receivedStreamData());\n }\n });\n }\n else {\n queuedData.push(receivedStreamData());\n }\n };\n handleSubscriptionCancelled = (msg) => {\n const subLocalKey = this.subscriptionIdToLocalKeyMap[msg.subscription_id];\n if (typeof subLocalKey === \"undefined\") {\n return;\n }\n const subscription = this.subscriptionsList[subLocalKey];\n if (typeof subscription !== \"object\") {\n return;\n }\n const expectedNewLength = subscription.trackedServers.length - 1;\n subscription.trackedServers = subscription.trackedServers.filter((server) => {\n if (server.subscriptionId === msg.subscription_id) {\n subscription.queued.closers.push(server.serverId);\n return false;\n }\n else {\n return true;\n }\n });\n if (subscription.trackedServers.length !== expectedNewLength) {\n return;\n }\n if (subscription.trackedServers.length <= 0) {\n this.timedCache.add(subscription);\n clearTimeout(subscription.timeoutId);\n this.callOnClosedHandlers(subscription);\n delete this.subscriptionsList[subLocalKey];\n }\n delete this.subscriptionIdToLocalKeyMap[msg.subscription_id];\n };\n callOnClosedHandlers(subscription, reason) {\n const closersCount = subscription.queued.closers.length;\n const closingServerId = (closersCount > 0) ? subscription.queued.closers[closersCount - 1] : null;\n let closingServer;\n if (closingServerId !== undefined && typeof closingServerId === \"string\") {\n closingServer = this.repository.getServerById(closingServerId).instance;\n }\n subscription.handlers.onClosed.forEach((callback) => {\n if (typeof callback !== \"function\") {\n return;\n }\n callback({\n message: reason || ON_CLOSE_MSG_SERVER_INIT,\n requestArguments: subscription.params.arguments || {},\n server: closingServer,\n stream: subscription.method,\n });\n });\n }\n closeSubscription(subLocalKey) {\n const subscription = this.subscriptionsList[subLocalKey];\n if (typeof subscription !== \"object\") {\n return;\n }\n subscription.trackedServers.forEach((server) => {\n if (typeof server.subscriptionId === \"undefined\") {\n return;\n }\n subscription.queued.closers.push(server.serverId);\n this.session.sendFireAndForget({\n type: \"unsubscribe\",\n subscription_id: server.subscriptionId,\n reason_uri: \"\",\n reason: ON_CLOSE_MSG_CLIENT_INIT,\n });\n delete this.subscriptionIdToLocalKeyMap[server.subscriptionId];\n });\n subscription.trackedServers = [];\n this.callOnClosedHandlers(subscription, ON_CLOSE_MSG_CLIENT_INIT);\n delete this.subscriptionsList[subLocalKey];\n }\n}\n\nclass ClientProtocol {\n session;\n repository;\n logger;\n streaming;\n constructor(session, repository, logger) {\n this.session = session;\n this.repository = repository;\n this.logger = logger;\n session.on(\"peer-added\", (msg) => this.handlePeerAdded(msg));\n session.on(\"peer-removed\", (msg) => this.handlePeerRemoved(msg));\n session.on(\"methods-added\", (msg) => this.handleMethodsAddedMessage(msg));\n session.on(\"methods-removed\", (msg) => this.handleMethodsRemovedMessage(msg));\n this.streaming = new ClientStreaming(session, repository, logger);\n }\n subscribe(stream, options, targetServers, success, error, existingSub) {\n this.streaming.subscribe(stream, options, targetServers, success, error, existingSub);\n }\n invoke(id, method, args, target) {\n const serverId = target.id;\n const methodId = method.gatewayId;\n const msg = {\n type: \"call\",\n server_id: serverId,\n method_id: methodId,\n arguments_kv: args,\n };\n return this.session.send(msg, { invocationId: id, serverId })\n .then((m) => this.handleResultMessage(m))\n .catch((err) => this.handleInvocationError(err));\n }\n drainSubscriptions() {\n return this.streaming.drainSubscriptions();\n }\n drainSubscriptionsCache() {\n return this.streaming.drainSubscriptionsCache();\n }\n handlePeerAdded(msg) {\n const newPeerId = msg.new_peer_id;\n const remoteId = msg.identity;\n const isLocal = msg.meta ? msg.meta.local : true;\n const pid = Number(remoteId.process);\n const serverInfo = {\n machine: remoteId.machine,\n pid: isNaN(pid) ? remoteId.process : pid,\n instance: remoteId.instance,\n application: remoteId.application,\n applicationName: remoteId.applicationName,\n environment: remoteId.environment,\n region: remoteId.region,\n user: remoteId.user,\n windowId: remoteId.windowId,\n peerId: newPeerId,\n api: remoteId.api,\n isLocal\n };\n this.repository.addServer(serverInfo, newPeerId);\n }\n handlePeerRemoved(msg) {\n const removedPeerId = msg.removed_id;\n const reason = msg.reason;\n this.repository.removeServerById(removedPeerId, reason);\n }\n handleMethodsAddedMessage(msg) {\n const serverId = msg.server_id;\n const methods = msg.methods;\n methods.forEach((method) => {\n this.repository.addServerMethod(serverId, method);\n });\n }\n handleMethodsRemovedMessage(msg) {\n const serverId = msg.server_id;\n const methodIdList = msg.methods;\n const server = this.repository.getServerById(serverId);\n const serverMethodKeys = Object.keys(server.methods);\n serverMethodKeys.forEach((methodKey) => {\n const method = server.methods[methodKey];\n if (methodIdList.indexOf(method.gatewayId) > -1) {\n this.repository.removeServerMethod(serverId, methodKey);\n }\n });\n }\n handleResultMessage(msg) {\n const invocationId = msg._tag.invocationId;\n const result = msg.result;\n const serverId = msg._tag.serverId;\n const server = this.repository.getServerById(serverId);\n return {\n invocationId,\n result,\n instance: server.instance,\n status: InvokeStatus.Success,\n message: \"\"\n };\n }\n handleInvocationError(msg) {\n this.logger.debug(`handle invocation error ${JSON.stringify(msg)}`);\n if (\"_tag\" in msg) {\n const invocationId = msg._tag.invocationId;\n const serverId = msg._tag.serverId;\n const server = this.repository.getServerById(serverId);\n const message = msg.reason;\n const context = msg.context;\n return {\n invocationId,\n result: context,\n instance: server.instance,\n status: InvokeStatus.Error,\n message\n };\n }\n else {\n return {\n invocationId: \"\",\n message: msg.message,\n status: InvokeStatus.Error,\n error: msg\n };\n }\n }\n}\n\nfunction gW3ProtocolFactory (instance, connection, clientRepository, serverRepository, libConfig, interop) {\n const logger = libConfig.logger.subLogger(\"gw3-protocol\");\n let resolveReadyPromise;\n const readyPromise = new Promise((resolve) => {\n resolveReadyPromise = resolve;\n });\n const session = connection.domain(\"agm\", [\"subscribed\"]);\n const server = new ServerProtocol(session, clientRepository, serverRepository, logger.subLogger(\"server\"));\n const client = new ClientProtocol(session, clientRepository, logger.subLogger(\"client\"));\n async function handleReconnect() {\n logger.info(\"reconnected - will replay registered methods and subscriptions\");\n client.drainSubscriptionsCache().forEach((sub) => {\n const methodInfo = sub.method;\n const params = Object.assign({}, sub.params);\n logger.info(`trying to soft-re-subscribe to method ${methodInfo.name}, with params: ${JSON.stringify(params)}`);\n interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(() => logger.info(`soft-subscribing to method ${methodInfo.name} DONE`)).catch((error) => logger.warn(`subscribing to method ${methodInfo.name} failed: ${JSON.stringify(error)}}`));\n });\n const reconnectionPromises = [];\n const existingSubscriptions = client.drainSubscriptions();\n for (const sub of existingSubscriptions) {\n const methodInfo = sub.method;\n const params = Object.assign({}, sub.params);\n logger.info(`trying to re-subscribe to method ${methodInfo.name}, with params: ${JSON.stringify(params)}`);\n reconnectionPromises.push(interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(() => logger.info(`subscribing to method ${methodInfo.name} DONE`)));\n }\n const registeredMethods = serverRepository.getList();\n serverRepository.reset();\n for (const method of registeredMethods) {\n const def = method.definition;\n if (method.stream) {\n reconnectionPromises.push(interop.server.createStream(def, method.streamCallbacks, undefined, undefined, method.stream)\n .then(() => logger.info(`subscribing to method ${def.name} DONE`))\n .catch(() => logger.warn(`subscribing to method ${def.name} FAILED`)));\n }\n else if (method?.theFunction?.userCallback) {\n reconnectionPromises.push(interop.register(def, method.theFunction.userCallback)\n .then(() => logger.info(`registering method ${def.name} DONE`))\n .catch(() => logger.warn(`registering method ${def.name} FAILED`)));\n }\n else if (method?.theFunction?.userCallbackAsync) {\n reconnectionPromises.push(interop.registerAsync(def, method.theFunction.userCallbackAsync)\n .then(() => logger.info(`registering method ${def.name} DONE`))\n .catch(() => logger.warn(`registering method ${def.name} FAILED`)));\n }\n }\n await Promise.all(reconnectionPromises);\n logger.info(\"Interop is re-announced\");\n }\n function handleInitialJoin() {\n if (resolveReadyPromise) {\n resolveReadyPromise({\n client,\n server,\n });\n resolveReadyPromise = undefined;\n }\n }\n session.onJoined((reconnect) => {\n clientRepository.addServer(instance, connection.peerId);\n if (reconnect) {\n handleReconnect().then(() => connection.setLibReAnnounced({ name: \"interop\" })).catch((error) => logger.warn(`Error while re-announcing interop: ${JSON.stringify(error)}`));\n }\n else {\n handleInitialJoin();\n }\n });\n session.onLeft(() => {\n clientRepository.reset();\n });\n session.join();\n return readyPromise;\n}\n\nclass Interop {\n instance;\n readyPromise;\n client;\n server;\n unwrappedInstance;\n protocol;\n clientRepository;\n serverRepository;\n constructor(configuration) {\n if (typeof configuration === \"undefined\") {\n throw new Error(\"configuration is required\");\n }\n if (typeof configuration.connection === \"undefined\") {\n throw new Error(\"configuration.connections is required\");\n }\n const connection = configuration.connection;\n if (typeof configuration.methodResponseTimeout !== \"number\") {\n configuration.methodResponseTimeout = 30 * 1000;\n }\n if (typeof configuration.waitTimeoutMs !== \"number\") {\n configuration.waitTimeoutMs = 30 * 1000;\n }\n this.unwrappedInstance = new InstanceWrapper(this, undefined, connection);\n this.instance = this.unwrappedInstance.unwrap();\n this.clientRepository = new ClientRepository(configuration.logger.subLogger(\"cRep\"), this);\n this.serverRepository = new ServerRepository();\n let protocolPromise;\n if (connection.protocolVersion === 3) {\n protocolPromise = gW3ProtocolFactory(this.instance, connection, this.clientRepository, this.serverRepository, configuration, this);\n }\n else {\n throw new Error(`protocol ${connection.protocolVersion} not supported`);\n }\n this.readyPromise = protocolPromise.then((protocol) => {\n this.protocol = protocol;\n this.client = new Client(this.protocol, this.clientRepository, this.instance, configuration);\n this.server = new Server(this.protocol, this.serverRepository);\n return this;\n });\n }\n ready() {\n return this.readyPromise;\n }\n serverRemoved(callback) {\n return this.client.serverRemoved(callback);\n }\n serverAdded(callback) {\n return this.client.serverAdded(callback);\n }\n serverMethodRemoved(callback) {\n return this.client.serverMethodRemoved(callback);\n }\n serverMethodAdded(callback) {\n return this.client.serverMethodAdded(callback);\n }\n methodRemoved(callback) {\n return this.client.methodRemoved(callback);\n }\n methodAdded(callback) {\n return this.client.methodAdded(callback);\n }\n methodsForInstance(instance) {\n return this.client.methodsForInstance(instance);\n }\n methods(methodFilter) {\n return this.client.methods(methodFilter);\n }\n servers(methodFilter) {\n return this.client.servers(methodFilter);\n }\n subscribe(method, options, successCallback, errorCallback) {\n return this.client.subscribe(method, options, successCallback, errorCallback);\n }\n createStream(streamDef, callbacks, successCallback, errorCallback) {\n return this.server.createStream(streamDef, callbacks, successCallback, errorCallback);\n }\n unregister(methodFilter) {\n return this.server.unregister(methodFilter);\n }\n registerAsync(methodDefinition, callback) {\n return this.server.registerAsync(methodDefinition, callback);\n }\n register(methodDefinition, callback) {\n return this.server.register(methodDefinition, callback);\n }\n invoke(methodFilter, argumentObj, target, additionalOptions, success, error) {\n return this.client.invoke(methodFilter, argumentObj, target, additionalOptions, success, error);\n }\n waitForMethod(name) {\n const pw = new PromiseWrapper();\n const unsubscribe = this.client.methodAdded((m) => {\n if (m.name === name) {\n unsubscribe();\n pw.resolve(m);\n }\n });\n return pw.promise;\n }\n}\n\nconst successMessages = [\"subscribed\", \"success\"];\nclass MessageBus {\n connection;\n logger;\n peerId;\n session;\n subscriptions;\n readyPromise;\n constructor(connection, logger) {\n this.connection = connection;\n this.logger = logger;\n this.peerId = connection.peerId;\n this.subscriptions = [];\n this.session = connection.domain(\"bus\", successMessages);\n this.readyPromise = this.session.join();\n this.readyPromise.then(() => {\n this.watchOnEvent();\n });\n }\n ready() {\n return this.readyPromise;\n }\n publish = (topic, data, options) => {\n const { routingKey, target } = options || {};\n const args = this.removeEmptyValues({\n type: \"publish\",\n topic,\n data,\n peer_id: this.peerId,\n routing_key: routingKey,\n target_identity: target\n });\n this.session.send(args);\n };\n subscribe = (topic, callback, options) => {\n return new Promise((resolve, reject) => {\n const { routingKey, target } = options || {};\n const args = this.removeEmptyValues({\n type: \"subscribe\",\n topic,\n peer_id: this.peerId,\n routing_key: routingKey,\n source: target\n });\n this.session.send(args)\n .then((response) => {\n const { subscription_id } = response;\n this.subscriptions.push({ subscription_id, topic, callback, source: target });\n resolve({\n unsubscribe: () => {\n this.session.send({ type: \"unsubscribe\", subscription_id, peer_id: this.peerId });\n this.subscriptions = this.subscriptions.filter((s) => s.subscription_id !== subscription_id);\n return Promise.resolve();\n }\n });\n })\n .catch((error) => reject(error));\n });\n };\n watchOnEvent = () => {\n this.session.on(\"event\", (args) => {\n const { data, subscription_id } = args;\n const source = args[\"publisher-identity\"];\n const subscription = this.subscriptions.find((s) => s.subscription_id === subscription_id);\n if (subscription) {\n if (!subscription.source) {\n subscription.callback(data, subscription.topic, source);\n }\n else {\n if (this.keysMatch(subscription.source, source)) {\n subscription.callback(data, subscription.topic, source);\n }\n }\n }\n });\n };\n removeEmptyValues(obj) {\n const cleaned = {};\n Object.keys(obj).forEach((key) => {\n if (obj[key] !== undefined && obj[key] !== null) {\n cleaned[key] = obj[key];\n }\n });\n return cleaned;\n }\n keysMatch(obj1, obj2) {\n const keysObj1 = Object.keys(obj1);\n let allMatch = true;\n keysObj1.forEach((key) => {\n if (obj1[key] !== obj2[key]) {\n allMatch = false;\n }\n });\n return allMatch;\n }\n}\n\nconst IOConnectCoreFactory = (userConfig, ext) => {\n const iodesktop = typeof window === \"object\" ? (window.iodesktop ?? window.glue42gd) : undefined;\n const preloadPromise = typeof window === \"object\" ? (window.gdPreloadPromise ?? Promise.resolve()) : Promise.resolve();\n const glueInitTimer = timer(\"glue\");\n userConfig = userConfig || {};\n ext = ext || {};\n const internalConfig = prepareConfig(userConfig, ext, iodesktop);\n let _connection;\n let _interop;\n let _logger;\n let _metrics;\n let _contexts;\n let _bus;\n let _allowTrace;\n const libs = {};\n function registerLib(name, inner, t) {\n _allowTrace = _logger.canPublish(\"trace\");\n if (_allowTrace) {\n _logger.trace(`registering ${name} module`);\n }\n const done = () => {\n inner.initTime = t.stop();\n inner.initEndTime = t.endTime;\n inner.marks = t.marks;\n if (_allowTrace) {\n _logger.trace(`${name} is ready - ${t.endTime - t.startTime}`);\n }\n };\n inner.initStartTime = t.startTime;\n if (inner.ready) {\n inner.ready().then(() => {\n done();\n });\n }\n else {\n done();\n }\n if (!Array.isArray(name)) {\n name = [name];\n }\n name.forEach((n) => {\n libs[n] = inner;\n IOConnectCoreFactory[n] = inner;\n });\n }\n function setupConnection() {\n const initTimer = timer(\"connection\");\n _connection = new Connection(internalConfig.connection, _logger.subLogger(\"connection\"));\n let authPromise = Promise.resolve(internalConfig.auth);\n if (internalConfig.connection && !internalConfig.auth) {\n if (iodesktop) {\n authPromise = iodesktop.getGWToken()\n .then((token) => {\n return {\n gatewayToken: token\n };\n });\n }\n else if (typeof window !== \"undefined\" && window?.glue42electron) {\n if (typeof window.glue42electron.gwToken === \"string\") {\n authPromise = Promise.resolve({\n gatewayToken: window.glue42electron.gwToken\n });\n }\n }\n else {\n authPromise = Promise.reject(\"You need to provide auth information\");\n }\n }\n return authPromise\n .then((authConfig) => {\n initTimer.mark(\"auth-promise-resolved\");\n let authRequest;\n if (Object.prototype.toString.call(authConfig) === \"[object Object]\") {\n authRequest = authConfig;\n }\n else {\n throw new Error(\"Invalid auth object - \" + JSON.stringify(authConfig));\n }\n return _connection.login(authRequest);\n })\n .then(() => {\n registerLib(\"connection\", _connection, initTimer);\n return internalConfig;\n })\n .catch((e) => {\n if (_connection) {\n _connection.logout();\n }\n throw e;\n });\n }\n function setupLogger() {\n const initTimer = timer(\"logger\");\n _logger = new Logger(`${internalConfig.connection.identity?.application}`, undefined, internalConfig.customLogger);\n _logger.consoleLevel(internalConfig.logger.console);\n _logger.publishLevel(internalConfig.logger.publish);\n if (_logger.canPublish(\"debug\")) {\n _logger.debug(\"initializing glue...\");\n }\n registerLib(\"logger\", _logger, initTimer);\n return Promise.resolve(undefined);\n }\n function setupMetrics() {\n const initTimer = timer(\"metrics\");\n const config = internalConfig.metrics;\n const metricsPublishingEnabledFunc = iodesktop?.getMetricsPublishingEnabled;\n const identity = internalConfig.connection.identity;\n const canUpdateMetric = metricsPublishingEnabledFunc ? metricsPublishingEnabledFunc : () => true;\n const disableAutoAppSystem = (typeof config !== \"boolean\" && config.disableAutoAppSystem) ?? false;\n _metrics = metrics({\n connection: config ? _connection : undefined,\n logger: _logger.subLogger(\"metrics\"),\n canUpdateMetric,\n system: \"Glue42\",\n service: identity?.service ?? iodesktop?.applicationName ?? internalConfig.application,\n instance: identity?.instance ?? identity?.windowId ?? nanoid(10),\n disableAutoAppSystem,\n pagePerformanceMetrics: typeof config !== \"boolean\" ? config?.pagePerformanceMetrics : undefined\n });\n registerLib(\"metrics\", _metrics, initTimer);\n return Promise.resolve();\n }\n function setupInterop() {\n const initTimer = timer(\"interop\");\n const agmConfig = {\n connection: _connection,\n logger: _logger.subLogger(\"interop\"),\n };\n _interop = new Interop(agmConfig);\n Logger.Interop = _interop;\n registerLib([\"interop\", \"agm\"], _interop, initTimer);\n return Promise.resolve();\n }\n function setupContexts() {\n const hasActivities = (internalConfig.activities && _connection.protocolVersion === 3);\n const needsContexts = internalConfig.contexts || hasActivities;\n if (needsContexts) {\n const initTimer = timer(\"contexts\");\n _contexts = new ContextsModule({\n connection: _connection,\n logger: _logger.subLogger(\"contexts\"),\n trackAllContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.trackAllContexts : false,\n reAnnounceKnownContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.reAnnounceKnownContexts : false\n });\n registerLib(\"contexts\", _contexts, initTimer);\n return _contexts;\n }\n else {\n const replayer = _connection.replayer;\n if (replayer) {\n replayer.drain(ContextMessageReplaySpec.name);\n }\n }\n }\n async function setupBus() {\n if (!internalConfig.bus) {\n return Promise.resolve();\n }\n const initTimer = timer(\"bus\");\n _bus = new MessageBus(_connection, _logger.subLogger(\"bus\"));\n registerLib(\"bus\", _bus, initTimer);\n return Promise.resolve();\n }\n function setupExternalLibs(externalLibs) {\n try {\n externalLibs.forEach((lib) => {\n setupExternalLib(lib.name, lib.create);\n });\n return Promise.resolve();\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n function setupExternalLib(name, createCallback) {\n const initTimer = timer(name);\n const lib = createCallback(libs);\n if (lib) {\n registerLib(name, lib, initTimer);\n }\n }\n function waitForLibs() {\n const libsReadyPromises = Object.keys(libs).map((key) => {\n const lib = libs[key];\n return lib.ready ?\n lib.ready() : Promise.resolve();\n });\n return Promise.all(libsReadyPromises);\n }\n function constructGlueObject() {\n const feedbackFunc = (feedbackInfo) => {\n if (!_interop) {\n return;\n }\n _interop.invoke(\"T42.ACS.Feedback\", feedbackInfo, \"best\");\n };\n const info = {\n coreVersion: version,\n version: internalConfig.version\n };\n glueInitTimer.stop();\n const glue = {\n feedback: feedbackFunc,\n info,\n logger: _logger,\n interop: _interop,\n agm: _interop,\n connection: _connection,\n metrics: _metrics,\n contexts: _contexts,\n bus: _bus,\n version: internalConfig.version,\n userConfig,\n done: () => {\n _logger?.info(\"done called by user...\");\n return _connection.logout();\n }\n };\n glue.performance = {\n get glueVer() {\n return internalConfig.version;\n },\n get glueConfig() {\n return JSON.stringify(userConfig);\n },\n get browser() {\n return window.performance.timing.toJSON();\n },\n get memory() {\n return window.performance.memory;\n },\n get initTimes() {\n const all = getAllTimers();\n return Object.keys(all).map((key) => {\n const t = all[key];\n return {\n name: key,\n duration: t.endTime - t.startTime,\n marks: t.marks,\n startTime: t.startTime,\n endTime: t.endTime\n };\n });\n }\n };\n Object.keys(libs).forEach((key) => {\n const lib = libs[key];\n glue[key] = lib;\n });\n glue.config = {};\n Object.keys(internalConfig).forEach((k) => {\n glue.config[k] = internalConfig[k];\n });\n if (ext && ext.extOptions) {\n Object.keys(ext.extOptions).forEach((k) => {\n glue.config[k] = ext?.extOptions[k];\n });\n }\n if (ext?.enrichGlue) {\n ext.enrichGlue(glue);\n }\n if (iodesktop && iodesktop.updatePerfData) {\n iodesktop.updatePerfData(glue.performance);\n }\n if (glue.agm) {\n const deprecatedDecorator = (fn, wrong, proper) => {\n return function () {\n glue.logger.warn(`glue.js - 'glue.agm.${wrong}' method is deprecated, use 'glue.interop.${proper}' instead.`);\n return fn.apply(glue.agm, arguments);\n };\n };\n const agmAny = glue.agm;\n agmAny.method_added = deprecatedDecorator(glue.agm.methodAdded, \"method_added\", \"methodAdded\");\n agmAny.method_removed = deprecatedDecorator(glue.agm.methodRemoved, \"method_removed\", \"methodRemoved\");\n agmAny.server_added = deprecatedDecorator(glue.agm.serverAdded, \"server_added\", \"serverAdded\");\n agmAny.server_method_aded = deprecatedDecorator(glue.agm.serverMethodAdded, \"server_method_aded\", \"serverMethodAdded\");\n agmAny.server_method_removed = deprecatedDecorator(glue.agm.serverMethodRemoved, \"server_method_removed\", \"serverMethodRemoved\");\n }\n return glue;\n }\n async function registerInstanceIfNeeded() {\n const RegisterInstanceMethodName = \"T42.ACS.RegisterInstance\";\n if (Utils.isNode() && typeof process.env._GD_STARTING_CONTEXT_ === \"undefined\" && typeof userConfig?.application !== \"undefined\") {\n const isMethodAvailable = _interop.methods({ name: RegisterInstanceMethodName }).length > 0;\n if (isMethodAvailable) {\n try {\n await _interop.invoke(RegisterInstanceMethodName, { appName: userConfig?.application, pid: process.pid });\n }\n catch (error) {\n const typedError = error;\n _logger.error(`Cannot register as an instance: ${JSON.stringify(typedError.message)}`);\n }\n }\n }\n }\n return preloadPromise\n .then(setupLogger)\n .then(setupConnection)\n .then(() => Promise.all([setupMetrics(), setupInterop(), setupContexts(), setupBus()]))\n .then(() => _interop.readyPromise)\n .then(() => registerInstanceIfNeeded())\n .then(() => {\n return setupExternalLibs(internalConfig.libs || []);\n })\n .then(waitForLibs)\n .then(constructGlueObject)\n .catch((err) => {\n return Promise.reject({\n err,\n libs\n });\n });\n};\nif (typeof window !== \"undefined\") {\n window.IOConnectCore = IOConnectCoreFactory;\n}\nIOConnectCoreFactory.version = version;\nIOConnectCoreFactory.default = IOConnectCoreFactory;\n\nexport { IOConnectCoreFactory as default };\n//# sourceMappingURL=core.es.js.map\n",null],"names":["ok","err","asPromise","withDefault","withException","map","map2","mapError","andThen","__assign","__rest","isEqual","isJsonArray","isJsonObject","typeString","expectedGot","printPath","prependAt","Decoder","string","number","boolean","anyJson","constant","object","array","optional","oneOf","nonEmptyStringDecoder","nonNegativeNumberDecoder","intentDefinitionDecoder","IoC","operations","createRegistry","lib","CallbackRegistryFactory","PromisePlus","urlAlphabet","nanoid","scopedUrlAlphabet","version","createIoConnectCore"],"mappings":"AAGA,MAAM,aAAa,GAAG;AAClB,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,OAAO,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;AAC5B,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,SAAS,EAAE,IAAI;CAClB,CAAC;AAGK,MAAM,WAAW,GAAG,CAAC,MAAgC,KAAkB;IAC1E,MAAM,kBAAkB,GAAG,CAAC,CAAE,MAAc,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC;AAEzE,IAAA,MAAM,QAAQ,GAAiB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAEhG,IAAI,QAAQ,CAAC,YAAY,EAAE;QACvB,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,MAAM,CAAC;AAC3D,KAAA;AAED,IAAA,OAAO,QAAQ,CAAC;AACpB,CAAC;;ACpBM,MAAM,cAAc,GAAG,MAAW;IACrC,MAAM,yBAAyB,GAAI,MAAc,CAAC,UAAU,IAAK,MAAc,CAAC,SAAS,CAAC;AAE1F,IAAA,IAAI,yBAAyB,IAAI,yBAAyB,CAAC,UAAU,EAAE;AACnE,QAAA,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;AACvF,KAAA;IAED,IAAI,CAAC,yBAAyB,EAAE;QAE3B,MAAc,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACjD,OAAO;AACV,KAAA;AAED,IAAA,yBAAyB,CAAC,UAAU,GAAG,IAAI,CAAC;AAChD,CAAC;;ACVM,MAAM,UAAU,GAAG,CAAC,MAAgC,KAA0B;AACjF,IAAA,MAAM,gBAAgB,GAAG;AACrB,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,UAAU,EAAE,MAAM;AAClB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,EAAE;AAClC,QAAA,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,IAAI,MAAM;KAChD,CAAC;IAEF,MAAM,eAAe,GAAI,MAAc,CAAC,SAAS,IAAK,MAAc,CAAC,IAAI,CAAC;AAE1E,IAAA,OAAO,eAAe,CAAC,gBAAgB,CAAC,CAAC;AAC7C,CAAC;;AClBD;AACA;AACA;AACA;AACA;AACA,IAAIA,IAAE,GAAG,UAAU,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAKtE;AACA;AACA;AACA;AACA;AACA,IAAIC,KAAG,GAAG,UAAU,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAKrE;AACA;AACA;AACA;AACA,IAAIC,WAAS,GAAG,UAAU,CAAC,EAAE;AAC7B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIC,aAAW,GAAG,UAAU,YAAY,EAAE,CAAC,EAAE;AAC7C,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC;AACnD,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAIC,eAAa,GAAG,UAAU,CAAC,EAAE;AACjC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AACvB,QAAQ,OAAO,CAAC,CAAC,MAAM,CAAC;AACxB,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC;AACtB,KAAK;AACL,CAAC,CAAC;AAOF;AACA;AACA;AACA,IAAIC,KAAG,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC1B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAGL,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,IAAIM,MAAI,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;AAChC,IAAI,OAAO,EAAE,CAAC,EAAE,KAAK,KAAK,GAAG,EAAE;AAC/B,QAAQ,EAAE,CAAC,EAAE,KAAK,KAAK,GAAG,EAAE;AAC5B,YAAYN,IAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAIO,UAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC/B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,GAAGN,KAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,IAAIO,SAAO,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC9B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC,CAAC;AAiBF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIC,UAAQ,GAAG,WAAW;AAC1B,IAAIA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN,IAAI,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF;AACA,SAASC,QAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;AACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChF,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,SAAS;AACT,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD;AACA,SAASC,SAAO,CAAC,CAAC,EAAE,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE;AACnC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,CAAC,KAAK,QAAQ,EAAE;AACjC;AACA,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC9B,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACnC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;AACvC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,gBAAgB,IAAI,CAACA,SAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,oBAAoB,OAAO,KAAK,CAAC;AACjC,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT;AACA,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACnD,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,YAAY,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAACA,SAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,CAAC;AAUD;AACA;AACA;AACA,IAAIC,aAAW,GAAG,UAAU,IAAI,EAAE,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAClE,IAAIC,cAAY,GAAG,UAAU,IAAI,EAAE;AACnC,IAAI,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAACD,aAAW,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC,CAAC;AACF,IAAIE,YAAU,GAAG,UAAU,IAAI,EAAE;AACjC,IAAI,QAAQ,OAAO,IAAI;AACvB,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,UAAU,CAAC;AAC9B,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,UAAU,CAAC;AAC9B,QAAQ,KAAK,SAAS;AACtB,YAAY,OAAO,WAAW,CAAC;AAC/B,QAAQ,KAAK,WAAW;AACxB,YAAY,OAAO,WAAW,CAAC;AAC/B,QAAQ,KAAK,QAAQ;AACrB,YAAY,IAAI,IAAI,YAAY,KAAK,EAAE;AACvC,gBAAgB,OAAO,UAAU,CAAC;AAClC,aAAa;AACb,iBAAiB,IAAI,IAAI,KAAK,IAAI,EAAE;AACpC,gBAAgB,OAAO,MAAM,CAAC;AAC9B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,WAAW,CAAC;AACnC,aAAa;AACb,QAAQ;AACR,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,KAAK;AACL,CAAC,CAAC;AACF,IAAIC,aAAW,GAAG,UAAU,QAAQ,EAAE,GAAG,EAAE;AAC3C,IAAI,OAAO,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAGD,YAAU,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC,CAAC;AACF,IAAIE,WAAS,GAAG,UAAU,KAAK,EAAE;AACjC,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,OAAO,IAAI,KAAK,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtH,CAAC,CAAC;AACF,IAAIC,WAAS,GAAG,UAAU,KAAK,EAAE,EAAE,EAAE;AACrC,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,GAAGP,QAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,IAAI,QAAQD,UAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE;AACxD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIS,SAAO,kBAAkB,YAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,OAAO,CAAC,MAAM,EAAE;AAC7B,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;AACnC,YAAY,OAAOX,UAAQ,CAAC,UAAU,KAAK,EAAE,EAAE,QAAQ;AACvD,gBAAgB,IAAI,EAAE,cAAc;AACpC,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,EAAE,EAAE,OAAO,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;AAC9C,gBAAgB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;AAC5C,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,SAAS,CAAC;AACV;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,EAAE,OAAOL,WAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACjF;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,EAAE,OAAOE,eAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AAChC,YAAY,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAOC,KAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvF,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE;AACpC,YAAY,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC/C,gBAAgB,OAAOG,SAAO,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvG,aAAa,CAAC,CAAC;AACf,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;AACnD,YAAY,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE,EAAE,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;AACnI,SAAS,CAAC;AACV,KAAK;AACL;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY;AACjC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,QAAQ;AAC3C,kBAAkBR,IAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkBC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAClE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY;AACjC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,QAAQ;AAC3C,kBAAkBf,IAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkBC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAClE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,YAAY;AAClC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,SAAS;AAC5C,kBAAkBf,IAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkBC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAOJ,SAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AACvC,kBAAkBX,IAAE,CAAC,KAAK,CAAC;AAC3B,kBAAkBC,KAAG,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1G,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,QAAQ,EAAE;AACzC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAIY,cAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;AAChD,gBAAgB,IAAI,GAAG,GAAG,EAAE,CAAC;AAC7B,gBAAgB,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE;AAC1C,oBAAoB,IAAI,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACtD,wBAAwB,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,wBAAwB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AAC3C;AACA,4BAA4B,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AACxD,gCAAgC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACpD,6BAA6B;AAC7B,yBAAyB;AACzB,6BAA6B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AAC1D,4BAA4B,OAAOZ,KAAG,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,GAAG,GAAG,mCAAmC,EAAE,CAAC,CAAC;AAC7G,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,OAAOA,KAAG,CAACgB,WAAS,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAOjB,IAAE,CAAC,GAAG,CAAC,CAAC;AAC/B,aAAa;AACb,iBAAiB,IAAIa,cAAY,CAAC,IAAI,CAAC,EAAE;AACzC,gBAAgB,OAAOb,IAAE,CAAC,IAAI,CAAC,CAAC;AAChC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAOC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACxE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAIH,aAAW,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE;AAC9C,gBAAgB,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACpD,oBAAoB,OAAOL,UAAQ,CAAC,UAAU,MAAM,EAAE,EAAE,OAAOU,WAAS,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvH,iBAAiB,CAAC;AAClB,gBAAgB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACxD,oBAAoB,OAAOX,MAAI,CAAC,UAAU,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnH,iBAAiB,EAAEN,IAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,aAAa;AACb,iBAAiB,IAAIY,aAAW,CAAC,IAAI,CAAC,EAAE;AACxC,gBAAgB,OAAOZ,IAAE,CAAC,IAAI,CAAC,CAAC;AAChC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAOC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACvE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,QAAQ,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAIH,aAAW,CAAC,IAAI,CAAC,EAAE;AACnC,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AACrD,oBAAoB,OAAOX,KAAG,CAAC;AAC/B,wBAAwB,OAAO,EAAE,6BAA6B,GAAG,QAAQ,CAAC,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAAC,MAAM;AACvH,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,GAAG,EAAE,CAAC;AAChC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,oBAAoB,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,oBAAoB,IAAI,GAAG,CAAC,EAAE,EAAE;AAChC,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;AAC/C,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,OAAOA,KAAG,CAACgB,WAAS,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACxE,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAOjB,IAAE,CAAC,MAAM,CAAC,CAAC;AAClC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAOC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,oBAAoB,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnG,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;AACtC,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvE,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,YAAY,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;AAC7C,QAAQ,IAAI,EAAE,GAAG,EAAE,CAAC;AACpB,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE,EAAE,OAAOT,MAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAEN,IAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1I,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,YAAY,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAOA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAChG;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,WAAW,GAAG,YAAY;AACtC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAOA,IAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACjE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,OAAO,EAAE;AACtC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAIa,cAAY,CAAC,IAAI,CAAC,EAAE;AACpC,gBAAgB,IAAI,GAAG,GAAG,EAAE,CAAC;AAC7B,gBAAgB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACtC,oBAAoB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAClD,wBAAwB,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,wBAAwB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AAC3C,4BAA4B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAChD,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,OAAOZ,KAAG,CAACgB,WAAS,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAOjB,IAAE,CAAC,GAAG,CAAC,CAAC;AAC/B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAOC,KAAG,CAAC,EAAE,OAAO,EAAEc,aAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACxE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,QAAQ,GAAG,UAAU,OAAO,EAAE;AAC1C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,GAAGf,IAAE,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACrI,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,KAAK,GAAG,YAAY;AAChC,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;AAC5B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,gBAAgB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjD,gBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AACnC,oBAAoB,OAAO,CAAC,CAAC;AAC7B,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACxC,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,UAAU,GAAG,MAAM;AACnC,iBAAiB,GAAG,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,UAAU,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;AACvG,iBAAiB,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,YAAY,OAAOC,KAAG,CAAC;AACvB,gBAAgB,OAAO,EAAE,mEAAmE,GAAG,UAAU,GAAG,KAAK;AACjH,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,WAAW,GAAG,UAAU,YAAY,EAAE,OAAO,EAAE;AAC3D,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAOD,IAAE,CAACG,aAAW,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;AAChD,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC;AAClC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,gBAAgB,IAAI,UAAU,KAAK,SAAS,EAAE;AAC9C,oBAAoB,OAAOF,KAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAEe,WAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAE,qBAAqB;AACtD,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAACH,cAAY,CAAC,UAAU,CAAC,EAAE;AACpF,oBAAoB,OAAOZ,KAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAEe,WAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAED,aAAW,CAAC,WAAW,EAAE,UAAU,CAAC;AACrE,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAACH,aAAW,CAAC,UAAU,CAAC,EAAE;AACnF,oBAAoB,OAAOX,KAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAEe,WAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAED,aAAW,CAAC,UAAU,EAAE,UAAU,CAAC;AACpE,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAOR,UAAQ,CAAC,UAAU,KAAK,EAAE;AAC7C,gBAAgB,OAAO,UAAU,KAAK,SAAS;AAC/C,sBAAsB,EAAE,EAAE,EAAES,WAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE;AAC9E,sBAAsBC,WAAS,CAACD,WAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACzD,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,UAAU,UAAU,EAAE;AAC5C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAOhB,IAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,YAAY,EAAE;AAC3C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAOC,KAAG,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACvF,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,SAAS,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACjF,KAAK,CAAC;AACN,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC,EAAE,CAAC,CAAC;AACL;AACA;AACA;AACA,IAAIkB,QAAM,GAAGD,SAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAIE,QAAM,GAAGF,SAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAIG,SAAO,GAAGH,SAAO,CAAC,OAAO,CAAC;AAC9B;AACA,IAAII,SAAO,GAAGJ,SAAO,CAAC,OAAO,CAAC;AAC9B;AACkBA,SAAO,CAAC,YAAY;AACtC;AACA,IAAIK,UAAQ,GAAGL,SAAO,CAAC,QAAQ,CAAC;AAChC;AACA,IAAIM,QAAM,GAAGN,SAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAIO,OAAK,GAAGP,SAAO,CAAC,KAAK,CAAC;AAC1B;AACYA,SAAO,CAAC,MAAM;AAC1B;AACWA,SAAO,CAAC,KAAK;AACxB;AACA,IAAIQ,UAAQ,GAAGR,SAAO,CAAC,QAAQ,CAAC;AAChC;AACA,IAAIS,OAAK,GAAGT,SAAO,CAAC,KAAK,CAAC;AAC1B;AACYA,SAAO,CAAC,MAAM;AAC1B;AACmBA,SAAO,CAAC,aAAa;AACxC;AACoBA,SAAO,CAAC,YAAY;AACxC;AACcA,SAAO,CAAC,QAAQ;AAC9B;AACcA,SAAO,CAAC,QAAQ;AAC9B;AACWA,SAAO,CAAC,KAAK;AACxB;AACA,IAAI,IAAI,GAAGA,SAAO,CAAC,IAAI;;AClzBvB,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3G,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;AAClQ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,EAAE,GAAG,UAAU,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACtE;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,GAAG,UAAU,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACrE;AACA;AACA;AACA;AACA,IAAI,SAAS,GAAG,UAAU,CAAC,EAAE;AAC7B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG,UAAU,YAAY,EAAE,CAAC,EAAE;AAC7C,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC;AACnD,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE;AACjC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AACvB,QAAQ,OAAO,CAAC,CAAC,MAAM,CAAC;AACxB,KAAK;AACL,SAAS;AACT,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC;AACtB,KAAK;AACL,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAI,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC1B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;AAChC,IAAI,OAAO,EAAE,CAAC,EAAE,KAAK,KAAK,GAAG,EAAE;AAC/B,QAAQ,EAAE,CAAC,EAAE,KAAK,KAAK,GAAG,EAAE;AAC5B,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAI,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC/B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC9B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG,WAAW;AAC1B,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF;AACA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;AACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChF,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,SAAS;AACT,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD;AACA,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE;AACvB,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE;AACnC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,CAAC,KAAK,QAAQ,EAAE;AACjC;AACA,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAC9B,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACnC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;AACvC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,gBAAgB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,oBAAoB,OAAO,KAAK,CAAC;AACjC,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT;AACA,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACnD,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,YAAY,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA,IAAI,WAAW,GAAG,UAAU,IAAI,EAAE,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAClE,IAAI,YAAY,GAAG,UAAU,IAAI,EAAE;AACnC,IAAI,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC,CAAC;AACF,IAAI,UAAU,GAAG,UAAU,IAAI,EAAE;AACjC,IAAI,QAAQ,OAAO,IAAI;AACvB,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,UAAU,CAAC;AAC9B,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,UAAU,CAAC;AAC9B,QAAQ,KAAK,SAAS;AACtB,YAAY,OAAO,WAAW,CAAC;AAC/B,QAAQ,KAAK,WAAW;AACxB,YAAY,OAAO,WAAW,CAAC;AAC/B,QAAQ,KAAK,QAAQ;AACrB,YAAY,IAAI,IAAI,YAAY,KAAK,EAAE;AACvC,gBAAgB,OAAO,UAAU,CAAC;AAClC,aAAa;AACb,iBAAiB,IAAI,IAAI,KAAK,IAAI,EAAE;AACpC,gBAAgB,OAAO,MAAM,CAAC;AAC9B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,WAAW,CAAC;AACnC,aAAa;AACb,QAAQ;AACR,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,KAAK;AACL,CAAC,CAAC;AACF,IAAI,WAAW,GAAG,UAAU,QAAQ,EAAE,GAAG,EAAE;AAC3C,IAAI,OAAO,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC,CAAC;AACF,IAAI,SAAS,GAAG,UAAU,KAAK,EAAE;AACjC,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,OAAO,IAAI,KAAK,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtH,CAAC,CAAC;AACF,IAAI,SAAS,GAAG,UAAU,KAAK,EAAE,EAAE,EAAE;AACrC,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,IAAI,QAAQ,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE;AACxD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,kBAAkB,YAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,OAAO,CAAC,MAAM,EAAE;AAC7B,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;AACnC,YAAY,OAAO,QAAQ,CAAC,UAAU,KAAK,EAAE,EAAE,QAAQ;AACvD,gBAAgB,IAAI,EAAE,cAAc;AACpC,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,EAAE,EAAE,OAAO,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;AAC9C,gBAAgB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;AAC5C,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,SAAS,CAAC;AACV;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACjF;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AAChC,YAAY,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvF,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE;AACpC,YAAY,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC/C,gBAAgB,OAAO,OAAO,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvG,aAAa,CAAC,CAAC;AACf,SAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;AACnD,YAAY,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE,EAAE,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;AACnI,SAAS,CAAC;AACV,KAAK;AACL;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY;AACjC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,QAAQ;AAC3C,kBAAkB,EAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAClE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY;AACjC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,QAAQ;AAC3C,kBAAkB,EAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAClE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,YAAY;AAClC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,SAAS;AAC5C,kBAAkB,EAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AACvC,kBAAkB,EAAE,CAAC,KAAK,CAAC;AAC3B,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1G,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,QAAQ,EAAE;AACzC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;AAChD,gBAAgB,IAAI,GAAG,GAAG,EAAE,CAAC;AAC7B,gBAAgB,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE;AAC1C,oBAAoB,IAAI,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACtD,wBAAwB,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,wBAAwB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AAC3C;AACA,4BAA4B,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AACxD,gCAAgC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACpD,6BAA6B;AAC7B,yBAAyB;AACzB,6BAA6B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AAC1D,4BAA4B,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,GAAG,GAAG,mCAAmC,EAAE,CAAC,CAAC;AAC7G,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/B,aAAa;AACb,iBAAiB,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;AACzC,gBAAgB,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAChC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACxE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE;AAC9C,gBAAgB,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACpD,oBAAoB,OAAO,QAAQ,CAAC,UAAU,MAAM,EAAE,EAAE,OAAO,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvH,iBAAiB,CAAC;AAClB,gBAAgB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACxD,oBAAoB,OAAO,IAAI,CAAC,UAAU,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnH,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,aAAa;AACb,iBAAiB,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AACxC,gBAAgB,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAChC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACvE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,QAAQ,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AACnC,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AACrD,oBAAoB,OAAO,GAAG,CAAC;AAC/B,wBAAwB,OAAO,EAAE,6BAA6B,GAAG,QAAQ,CAAC,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAAC,MAAM;AACvH,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,gBAAgB,IAAI,MAAM,GAAG,EAAE,CAAC;AAChC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,oBAAoB,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,oBAAoB,IAAI,GAAG,CAAC,EAAE,EAAE;AAChC,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;AAC/C,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACxE,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AAClC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,oBAAoB,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnG,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;AACtC,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvE,KAAK,CAAC;AACN,IAAI,OAAO,CAAC,YAAY,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;AAC7C,QAAQ,IAAI,EAAE,GAAG,EAAE,CAAC;AACpB,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1I,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,YAAY,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAChG;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,WAAW,GAAG,YAAY;AACtC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACjE,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,OAAO,EAAE;AACtC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;AACpC,gBAAgB,IAAI,GAAG,GAAG,EAAE,CAAC;AAC7B,gBAAgB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACtC,oBAAoB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAClD,wBAAwB,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,wBAAwB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AAC3C,4BAA4B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAChD,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACxE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,QAAQ,GAAG,UAAU,OAAO,EAAE;AAC1C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACrI,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,KAAK,GAAG,YAAY;AAChC,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;AAC5B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,gBAAgB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjD,gBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AACnC,oBAAoB,OAAO,CAAC,CAAC;AAC7B,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACxC,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,UAAU,GAAG,MAAM;AACnC,iBAAiB,GAAG,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,UAAU,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;AACvG,iBAAiB,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,YAAY,OAAO,GAAG,CAAC;AACvB,gBAAgB,OAAO,EAAE,mEAAmE,GAAG,UAAU,GAAG,KAAK;AACjH,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,WAAW,GAAG,UAAU,YAAY,EAAE,OAAO,EAAE;AAC3D,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvE,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;AAChD,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC;AAClC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,gBAAgB,IAAI,UAAU,KAAK,SAAS,EAAE;AAC9C,oBAAoB,OAAO,GAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAE,qBAAqB;AACtD,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;AACpF,oBAAoB,OAAO,GAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC;AACrE,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;AACnF,oBAAoB,OAAO,GAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC;AACpE,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,QAAQ,CAAC,UAAU,KAAK,EAAE;AAC7C,gBAAgB,OAAO,UAAU,KAAK,SAAS;AAC/C,sBAAsB,EAAE,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE;AAC9E,sBAAsB,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACzD,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,UAAU,UAAU,EAAE;AAC5C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,KAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,YAAY,EAAE;AAC3C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACvF,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,SAAS,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACjF,KAAK,CAAC;AACN,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC,EAAE,CAAC,CAAC;AACL;AACA;AACA;AACA,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC9B;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC9B;AACA,OAAO,CAAC,WAAW,CAAC;AACpB;AACA,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChC;AACA,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC1B;AACA,OAAO,CAAC,KAAK,CAAC;AACd;AACA,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACxB;AACA,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChC;AACA,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC1B;AACA,OAAO,CAAC,KAAK,CAAC;AACd;AACA,OAAO,CAAC,YAAY,CAAC;AACrB;AACA,OAAO,CAAC,WAAW,CAAC;AACpB;AACA,OAAO,CAAC,OAAO,CAAC;AAChB;AACA,OAAO,CAAC,OAAO,CAAC;AAChB;AACA,OAAO,CAAC,IAAI,CAAC;AACb;AACA,OAAO,CAAC,IAAI,CAAC;AACb;AACA,MAAMU,uBAAqB,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;AACjG,MAAMC,0BAAwB,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,EAAE,gCAAgC,CAAC,CAAC;AACrG;AACA,MAAMC,yBAAuB,GAAG,MAAM,CAAC;AACvC,IAAI,IAAI,EAAEF,uBAAqB;AAC/B,IAAI,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AACnC,IAAI,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,IAAI,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AACpC,CAAC,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAClI,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,IAAI,GAAG,EAAEA,uBAAqB;AAC9B,CAAC,CAAC,CAAC;AACH,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,IAAI,GAAG,EAAEA,uBAAqB;AAC9B,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,CAAC,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,IAAI,GAAG,EAAEA,uBAAqB;AAC9B,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,IAAI,KAAK,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC1C,CAAC,CAAC,CAAC;AACH,MAAM,yBAAyB,GAAG,MAAM,CAAC;AACzC,IAAI,QAAQ,EAAE,KAAK,CAACA,uBAAqB,CAAC;AAC1C,IAAI,WAAW,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAChD,IAAI,UAAU,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC/C,IAAI,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AACrC,CAAC,CAAC,CAAC;AACH,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,IAAI,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACzD,IAAI,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AACH,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,IAAI,UAAU,EAAE,QAAQ,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC;AACtD,IAAI,UAAU,EAAE,QAAQ,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,IAAI,IAAI,EAAEA,uBAAqB;AAC/B,IAAI,WAAW,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAChD,IAAI,UAAU,EAAE,QAAQ,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC;AACtD,IAAI,UAAU,EAAE,QAAQ,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AACH,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,IAAI,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACvC,IAAI,YAAY,EAAE,QAAQ,CAAC,oBAAoB,CAAC;AAChD,IAAI,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AACH,MAAM,+BAA+B,GAAG,MAAM,CAAC;AAC/C,IAAI,GAAG,EAAEA,uBAAqB;AAC9B,IAAI,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC3B,IAAI,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC5B,IAAI,KAAK,EAAE,QAAQ,CAACC,0BAAwB,CAAC;AAC7C,IAAI,MAAM,EAAE,QAAQ,CAACA,0BAAwB,CAAC;AAC9C,CAAC,CAAC,CAAC;AACH,MAAM,iCAAiC,GAAG,MAAM,CAAC;AACjD,IAAI,IAAI,EAAE,QAAQ,CAACD,uBAAqB,CAAC;AACzC,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,4BAA4B,CAAC,CAAC;AACpG,IAAI,KAAK,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC1C,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,gBAAgB,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AACzC,IAAI,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC5B,IAAI,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC/B,IAAI,OAAO,EAAE,QAAQ,CAAC,+BAA+B,CAAC;AACtD,IAAI,OAAO,EAAE,QAAQ,CAAC,KAAK,CAACE,yBAAuB,CAAC,CAAC;AACrD,IAAI,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC/B,CAAC,CAAC,CAAC;AACH,MAAM,2BAA2B,GAAG,KAAK,CAAC,MAAM,CAAC;AACjD,IAAI,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,iCAAiC,EAAE,OAAO,EAAE,CAAC,CAAC;AAC9E,IAAI,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,iCAAiC,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3E,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AACf,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,IAAI,IAAI,EAAEF,uBAAqB;AAC/B,IAAI,KAAK,EAAEA,uBAAqB;AAChC,IAAI,KAAK,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC1C,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,QAAQ,EAAEA,uBAAqB;AACnC,IAAI,YAAY,EAAEA,uBAAqB;AACvC,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,WAAW,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAChD,IAAI,YAAY,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACjD,IAAI,YAAY,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACjD,IAAI,SAAS,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC9C,IAAI,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,CAACA,uBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,IAAI,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,IAAI,YAAY,EAAE,OAAO,EAAE;AAC3B,IAAI,OAAO,EAAE,QAAQ,CAAC,KAAK,CAACE,yBAAuB,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AACH,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAC5C,IAAI,KAAK,EAAE,QAAQ,CAACF,uBAAqB,CAAC;AAC1C,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,IAAI,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACvC,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,KAAK,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC1C,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,IAAI,WAAW,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAChD,IAAI,UAAU,EAAE,QAAQ,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC;AACtD,IAAI,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACzC,IAAI,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACrD,IAAI,YAAY,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACjD,IAAI,YAAY,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACjD,IAAI,QAAQ,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC7C,IAAI,SAAS,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC9C,IAAI,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5C,IAAI,aAAa,EAAE,QAAQ,CAAC,2BAA2B,CAAC;AACxD,IAAI,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACvC,CAAC,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,IAAI,KAAK,EAAEA,uBAAqB;AAChC,IAAI,IAAI,EAAEA,uBAAqB;AAC/B,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,KAAK,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC1C,IAAI,OAAO,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC5C,IAAI,IAAI,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACzC,IAAI,WAAW,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAChD,IAAI,UAAU,EAAE,QAAQ,CAAC,KAAK,CAACA,uBAAqB,CAAC,CAAC;AACtD,IAAI,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACzC,IAAI,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACrD,IAAI,YAAY,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACjD,IAAI,YAAY,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AACjD,IAAI,QAAQ,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC7C,IAAI,SAAS,EAAE,QAAQ,CAACA,uBAAqB,CAAC;AAC9C,IAAI,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5C,IAAI,aAAa,EAAE,QAAQ,CAAC,2BAA2B,CAAC;AACxD,IAAI,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACvC,IAAI,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AACH,MAAM,qBAAqB,GAAG,KAAK,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;AAC9E;AACA,MAAM,gCAAgC,GAAG,CAAC,KAAK,KAAK;AACpD,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACrG,CAAC,CAAC;AACF;AACA,MAAM,WAAW,CAAC;AAClB,IAAI,2BAA2B,GAAG;AAClC,QAAQ,GAAG,EAAE,QAAQ;AACrB,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,MAAM,EAAE,QAAQ;AACxB,QAAQ,YAAY,EAAE,WAAW;AACjC,QAAQ,KAAK,EAAE,QAAQ;AACvB,KAAK,CAAC;AACN,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO;AACf,YAAY,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9D,YAAY,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChF,YAAY,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5E,SAAS,CAAC;AACV,KAAK;AACL,IAAI,gBAAgB,CAAC,UAAU,EAAE;AACjC,QAAQ,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;AAC3B,YAAY,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gCAAgC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;AAChG,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE;AACpD,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACpD,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,QAAQ,EAAE;AACjC,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACpD,SAAS;AACT,QAAQ,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC;AAC9E,KAAK;AACL,IAAI,yBAAyB,CAAC,UAAU,EAAE;AAC1C,QAAQ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACtE,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACjE,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;AAC3B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/H,SAAS;AACT,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,+BAA+B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACzF,QAAQ,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;AACxE,QAAQ,MAAM,mBAAmB,GAAG;AACpC,YAAY,IAAI,EAAE,UAAU,CAAC,KAAK;AAClC,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,aAAa;AACzB,YAAY,cAAc,EAAE;AAC5B,gBAAgB,GAAG,cAAc;AACjC,gBAAgB,OAAO,EAAE,OAAO,KAAK,KAAK;AAC1C,sBAAsB,cAAc,CAAC,OAAO;AAC5C,sBAAsB,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC;AACpE,gBAAgB,OAAO,EAAE,aAAa;AACtC,aAAa;AACb,YAAY,KAAK,EAAE,UAAU,CAAC,KAAK;AACnC,YAAY,OAAO,EAAE,UAAU,CAAC,OAAO;AACvC,YAAY,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,OAAO,CAAC;AACjE,YAAY,OAAO,EAAE,UAAU,CAAC,WAAW;AAC3C,YAAY,IAAI,EAAE,OAAO,KAAK,KAAK,GAAG,EAAE,GAAG,UAAU,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,SAAS;AAC7F,SAAS,CAAC;AACV,QAAQ,MAAM,mBAAmB,GAAG,UAAU,CAAC,aAAa,EAAE,SAAS,IAAI,UAAU,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC;AAChH,QAAQ,IAAI,CAAC,mBAAmB,EAAE;AAClC,YAAY,OAAO,mBAAmB,CAAC;AACvC,SAAS;AACT,QAAQ,MAAM,qBAAqB,GAAG,iCAAiC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACjG,QAAQ,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE;AACvC,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3I,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAC/D,YAAY,OAAO,mBAAmB,CAAC;AACvC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,gCAAgC,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACxG,KAAK;AACL,IAAI,uBAAuB,CAAC,UAAU,EAAE;AACxC,QAAQ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACtE,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACjE,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;AAC3B,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/H,SAAS;AACT,QAAQ,IAAI,OAAO,KAAK,KAAK,EAAE;AAC/B,YAAY,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAChD,YAAY,OAAO;AACnB,gBAAgB,IAAI,EAAE,gBAAgB,CAAC,KAAK;AAC5C,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,OAAO,EAAE;AACzB,oBAAoB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;AACzD,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,gBAAgB,CAAC,OAAO;AACjD,gBAAgB,KAAK,EAAE,gBAAgB,CAAC,KAAK;AAC7C,gBAAgB,OAAO,EAAE,gBAAgB,CAAC,OAAO;AACjD,gBAAgB,OAAO,EAAE,gBAAgB,CAAC,WAAW;AACrD,gBAAgB,IAAI,EAAE,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI;AACtD,gBAAgB,OAAO,EAAE,gBAAgB,CAAC,OAAO;AACjD,gBAAgB,gBAAgB,EAAE;AAClC,oBAAoB,YAAY,EAAE,gBAAgB,CAAC,YAAY;AAC/D,oBAAoB,MAAM,EAAE,gBAAgB,CAAC,MAAM;AACnD,oBAAoB,YAAY,EAAE,gBAAgB,CAAC,YAAY;AAC/D,oBAAoB,YAAY,EAAE,gBAAgB,CAAC,YAAY;AAC/D,oBAAoB,SAAS,EAAE,gBAAgB,CAAC,SAAS;AACzD,oBAAoB,KAAK,EAAE,gBAAgB,CAAC,KAAK;AACjD,oBAAoB,YAAY,EAAE,gBAAgB,CAAC,YAAY;AAC/D,iBAAiB;AACjB,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAC5C,QAAQ,MAAM,iBAAiB,GAAG;AAClC,YAAY,IAAI,EAAE,gBAAgB,CAAC,KAAK;AACxC,YAAY,IAAI,EAAE,IAAI,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACzE,YAAY,OAAO,EAAE,gBAAgB,CAAC,OAAO;AAC7C,YAAY,OAAO,EAAE,gBAAgB,CAAC,OAAO;AAC7C,YAAY,KAAK,EAAE,gBAAgB,CAAC,KAAK;AACzC,YAAY,OAAO,EAAE,gBAAgB,CAAC,OAAO;AAC7C,YAAY,OAAO,EAAE,gBAAgB,CAAC,WAAW;AACjD,YAAY,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,KAAK,CAAC;AACrE,YAAY,OAAO,EAAE,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC;AACzE,YAAY,IAAI,EAAE,EAAE,GAAG,gBAAgB,EAAE,iBAAiB,EAAE,KAAK,EAAE;AACnE,SAAS,CAAC;AACV,QAAQ,MAAM,mBAAmB,GAAG,UAAU,CAAC,aAAa,EAAE,SAAS,IAAI,UAAU,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC;AAChH,QAAQ,IAAI,CAAC,mBAAmB,EAAE;AAClC,YAAY,OAAO,iBAAiB,CAAC;AACrC,SAAS;AACT,QAAQ,IAAI,OAAO,mBAAmB,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;AAC3F,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,yBAAyB,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3I,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,kCAAkC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;AAC/F,KAAK;AACL,IAAI,+BAA+B,CAAC,UAAU,EAAE,OAAO,EAAE;AACzD,QAAQ,IAAI,OAAO,KAAK,KAAK,EAAE;AAC/B,YAAY,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3H,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxJ,KAAK;AACL,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE;AAChC,QAAQ,IAAI,GAAG,CAAC;AAChB,QAAQ,IAAI,OAAO,KAAK,KAAK,EAAE;AAC/B,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnE,YAAY,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC;AACpE,SAAS;AACT,aAAa;AACb,YAAY,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC7C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,wCAAwC,EAAE,OAAO,KAAK,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACjJ,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,6BAA6B,CAAC,UAAU,EAAE;AAC9C,QAAQ,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC;AACpE,QAAQ,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK;AACxE,YAAY,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,UAAU,CAAC;AACxD,YAAY,OAAO;AACnB,gBAAgB,IAAI,EAAE,UAAU;AAChC,gBAAgB,GAAG,UAAU;AAC7B,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,qBAAqB,CAAC,UAAU,EAAE,OAAO,EAAE;AAC/C,QAAQ,IAAI,OAAO,KAAK,KAAK,EAAE;AAC/B,YAAY,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC;AACxF,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC;AAClF,KAAK;AACL,IAAI,gCAAgC,CAAC,WAAW,EAAE,sBAAsB,EAAE;AAC1E,QAAQ,IAAI,yBAAyB,GAAG,WAAW,CAAC;AACpD,QAAQ,IAAI,sBAAsB,CAAC,OAAO,EAAE;AAC5C,YAAY,MAAM,OAAO,GAAG,EAAE,GAAG,WAAW,CAAC,aAAa,EAAE,GAAG,sBAAsB,CAAC,OAAO,EAAE,CAAC;AAChG,YAAY,yBAAyB,CAAC,aAAa,GAAG,OAAO,CAAC;AAC9D,YAAY,yBAAyB,CAAC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC;AACvE,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE;AAC3D,YAAY,yBAAyB,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,yBAAyB,CAAC,cAAc,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAC/J,SAAS;AACT,QAAQ,yBAAyB,GAAG,EAAE,GAAG,yBAAyB,EAAE,GAAG,sBAAsB,EAAE,CAAC;AAChG,QAAQ,OAAO,yBAAyB,CAAC,OAAO,CAAC;AACjD,QAAQ,OAAO,yBAAyB,CAAC,OAAO,CAAC;AACjD,QAAQ,OAAO,yBAAyB,CAAC;AACzC,KAAK;AACL,IAAI,kCAAkC,CAAC,MAAM,EAAE,iBAAiB,EAAE;AAClE,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACzI,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;AACtD,YAAY,SAAS,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,CAAC;AACD;AACA,MAAM,UAAU,GAAG;AACnB,IAAI,MAAM,EAAE;AACZ,+BAAQA,uBAAqB;AAC7B,kCAAQC,0BAAwB;AAChC,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,qBAAqB;AAC7B,QAAQ,mBAAmB;AAC3B,QAAQ,mBAAmB;AAC3B,KAAK;AACL,CAAC,CAAC;AACF;AACA,IAAI,cAAc,CAAC;AACnB,CAAC,UAAU,cAAc,EAAE;AAC3B,IAAI,cAAc,CAAC,gBAAgB,CAAC,GAAG,4DAA4D,CAAC;AACpG,IAAI,cAAc,CAAC,oBAAoB,CAAC,GAAG,0BAA0B,CAAC;AACtE,IAAI,cAAc,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;AAClD,IAAI,cAAc,CAAC,kBAAkB,CAAC,GAAG,oBAAoB,CAAC;AAC9D,IAAI,cAAc,CAAC,mBAAmB,CAAC,GAAG,4BAA4B,CAAC;AACvE,IAAI,cAAc,CAAC,6BAA6B,CAAC,GAAG,8BAA8B,CAAC;AACnF,IAAI,cAAc,CAAC,wBAAwB,CAAC,GAAG,wCAAwC,CAAC;AACxF,IAAI,cAAc,CAAC,sBAAsB,CAAC,GAAG,iCAAiC,CAAC;AAC/E,IAAI,cAAc,CAAC,kBAAkB,CAAC,GAAG,+BAA+B,CAAC;AACzE,IAAI,cAAc,CAAC,2BAA2B,CAAC,GAAG,+CAA+C,CAAC;AAClG,IAAI,cAAc,CAAC,0BAA0B,CAAC,GAAG,yGAAyG,CAAC;AAC3J,CAAC,EAAE,cAAc,KAAK,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5C;YACA,MAAM,GAAG,CAAC;AACV,IAAI,KAAK,CAAC;AACV,IAAI,SAAS,GAAG,UAAU,CAAC;AAC3B,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,EAAE,cAAc;AAC/B,KAAK,CAAC;AACN,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACzB,YAAY,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;AACnD,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,KAAK;AACL,EAAC;AACD;AACA,MAAM,GAAG,GAAG,IAAIE,KAAG,EAAE,CAAC;AACT,GAAG,CAAC,KAAK;AACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AACf,GAAG,CAAC;;ACxnCZ,MAAM,qBAAqB,GAAoBZ,QAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;AAClH,MAAM,wBAAwB,GAAoBC,QAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,EAAE,gCAAgC,CAAC,CAAC;AACtH,MAAM,6BAA6B,GAAgCM,UAAQ,CAAC,qBAAqB,CAAC,CAAC;AAEnG,MAAM,gBAAgB,GAAwBC,OAAK,CACtDJ,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,YAAY,CAAC,EACtBA,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,eAAe,CAAC,EACzBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,WAAW,CAAC,EACrBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,OAAO,CAAC,CACpB,CAAC;AAEK,MAAM,2BAA2B,GAAkCI,OAAK,CAC3EJ,UAAQ,CAAC,YAAY,CAAC,EACtBA,UAAQ,CAAC,aAAa,CAAC,EACvBA,UAAQ,CAAC,aAAa,CAAC,EACvBA,UAAQ,CAAC,eAAe,CAAC,EACzBA,UAAQ,CAAC,WAAW,CAAC,EACrBA,UAAQ,CAAC,gBAAgB,CAAC,EAC1BA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,YAAY,CAAC,EACtBA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,aAAa,CAAC,EACvBA,UAAQ,CAAC,YAAY,CAAC,CACzB,CAAC;AAEK,MAAM,+BAA+B,GAAsCI,OAAK,CACnFJ,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,yBAAyB,CAAC,EACnCA,UAAQ,CAAC,iBAAiB,CAAC,EAC3BA,UAAQ,CAAC,iBAAiB,CAAC,EAC3BA,UAAQ,CAAC,kBAAkB,CAAC,EAC5BA,UAAQ,CAAC,cAAc,CAAC,EACxBA,UAAQ,CAAC,OAAO,CAAC,CACpB,CAAC;AAEK,MAAM,4BAA4B,GAAmCI,OAAK,CAC7EJ,UAAQ,CAAC,aAAa,CAAC,EACvBA,UAAQ,CAAC,eAAe,CAAC,EACzBA,UAAQ,CAAC,eAAe,CAAC,EACzBA,UAAQ,CAAC,eAAe,CAAC,EACzBA,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,mBAAmB,CAAC,EAC7BA,UAAQ,CAAC,0BAA0B,CAAC,EACpCA,UAAQ,CAAC,sBAAsB,CAAC,EAChCA,UAAQ,CAAC,yBAAyB,CAAC,EACnCA,UAAQ,CAAC,kBAAkB,CAAC,EAC5BA,UAAQ,CAAC,kBAAkB,CAAC,EAC5BA,UAAQ,CAAC,oBAAoB,CAAC,EAC9BA,UAAQ,CAAC,gBAAgB,CAAC,CAC7B,CAAC;AAEK,MAAM,kCAAkC,GAAyCI,OAAK,CACzFJ,UAAQ,CAAC,mBAAmB,CAAC,EAC7BA,UAAQ,CAAC,mBAAmB,CAAC,EAC7BA,UAAQ,CAAC,kBAAkB,CAAC,EAC5BA,UAAQ,CAAC,mBAAmB,CAAC,EAC7BA,UAAQ,CAAC,eAAe,CAAC,EACzBA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,oBAAoB,CAAC,EAC9BA,UAAQ,CAAC,oBAAoB,CAAC,EAC9BA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,WAAW,CAAC,EACrBA,UAAQ,CAAC,kBAAkB,CAAC,EAC5BA,UAAQ,CAAC,sBAAsB,CAAC,EAChCA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,mBAAmB,CAAC,EAC7BA,UAAQ,CAAC,aAAa,CAAC,CAC1B,CAAC;AAEK,MAAM,2BAA2B,GAAkCI,OAAK,CAC3EJ,UAAQ,CAAC,gBAAgB,CAAC,EAC1BA,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,kBAAkB,CAAC,CAC/B,CAAC;AAEK,MAAM,8BAA8B,GAAwDI,OAAK,CACpGJ,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,QAAQ,CAAC,CACrB,CAAC;AAEK,MAAM,mBAAmB,GAA6CC,QAAM,CAAC;IAChF,GAAG,EAAEJ,QAAM,EAAE;IACb,IAAI,EAAEA,QAAM,EAAE;AACd,IAAA,KAAK,EAAE,wBAAwB;AAC/B,IAAA,MAAM,EAAE,wBAAwB;AACnC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAA2DM,UAAQ,CAACF,QAAM,CAAC;AAC7G,IAAA,GAAG,EAAEE,UAAQ,CAACN,QAAM,EAAE,CAAC;AACvB,IAAA,IAAI,EAAEM,UAAQ,CAACN,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEM,UAAQ,CAAC,wBAAwB,CAAC;AACzC,IAAA,MAAM,EAAEA,UAAQ,CAAC,wBAAwB,CAAC;AAC1C,IAAA,OAAO,EAAEA,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,UAAU,EAAEI,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,IAAA,iBAAiB,EAAEA,UAAQ,CAAC,8BAA8B,CAAC;AAC3D,IAAA,QAAQ,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACzC,IAAA,iBAAiB,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACrD,CAAA,CAAC,CAAC,CAAC;AAEG,MAAM,uBAAuB,GAA8BF,QAAM,CAAC;AACrE,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,GAAG,EAAE,qBAAqB;AAC1B,IAAA,OAAO,EAAE,yBAAyB;AACrC,CAAA,CAAC,CAAC;AAEI,MAAM,kBAAkB,GAAyBA,QAAM,CAAC;AAC3D,IAAA,QAAQ,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,CAAA,CAAC,CAAC;AAEI,MAAM,qBAAqB,GAA4BF,QAAM,CAAC;AACjE,IAAA,QAAQ,EAAE,qBAAqB;AAC/B,IAAA,IAAI,EAAE,qBAAqB;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAAiCA,QAAM,CAAC;AACpE,IAAA,QAAQ,EAAE,qBAAqB;AAClC,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAA0BA,QAAM,CAAC;AAC7D,IAAA,OAAO,EAAEC,OAAK,CAAC,qBAAqB,CAAC;IACrC,gBAAgB,EAAEJ,SAAO,EAAE;AAC9B,CAAA,CAAC,CAAC;AAGI,MAAM,wBAAwB,GAA+BG,QAAM,CAAC;AACvE,IAAA,QAAQ,EAAE,qBAAqB;IAC/B,KAAK,EAAEL,QAAM,EAAE;AAClB,CAAA,CAAC,CAAC;AAEI,MAAM,qBAAqB,GAA4BK,QAAM,CAAC;AACjE,IAAA,QAAQ,EAAE,qBAAqB;IAC/B,QAAQ,EAAEH,SAAO,EAAE;AACtB,CAAA,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAoCG,QAAM,CAAC;AACjF,IAAA,QAAQ,EAAE,qBAAqB;AAC/B,IAAA,GAAG,EAAEE,UAAQ,CAACN,QAAM,EAAE,CAAC;AACvB,IAAA,IAAI,EAAEM,UAAQ,CAACN,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEM,UAAQ,CAAC,wBAAwB,CAAC;AACzC,IAAA,MAAM,EAAEA,UAAQ,CAAC,wBAAwB,CAAC;AAC1C,IAAA,QAAQ,EAAEA,UAAQ,CAACL,SAAO,EAAE,CAAC;AAChC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAAgCG,QAAM,CAAC;AACzE,IAAA,QAAQ,EAAE,qBAAqB;IAC/B,MAAM,EAAEA,QAAM,CAAC;QACX,GAAG,EAAEJ,QAAM,EAAE;QACb,IAAI,EAAEA,QAAM,EAAE;AACd,QAAA,KAAK,EAAE,wBAAwB;AAC/B,QAAA,MAAM,EAAE,wBAAwB;KACnC,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAAqCI,QAAM,CAAC;IACnF,MAAM,EAAEA,QAAM,CAAC;QACX,GAAG,EAAEJ,QAAM,EAAE;QACb,IAAI,EAAEA,QAAM,EAAE;AACd,QAAA,KAAK,EAAE,wBAAwB;AAC/B,QAAA,MAAM,EAAE,wBAAwB;KACnC,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAA6BI,QAAM,CAAC;AACnE,IAAA,QAAQ,EAAE,qBAAqB;AAC/B,IAAA,GAAG,EAAE,qBAAqB;AAC7B,CAAA,CAAC,CAAC;AAEI,MAAM,UAAU,GAAqBF,SAAO,EAAE,CAAC;AAE/C,MAAM,aAAa,GAAsDE,QAAM,CAAC;AACnF,IAAA,GAAG,EAAEE,UAAQ,CAACN,QAAM,EAAE,CAAC;AACvB,IAAA,IAAI,EAAEM,UAAQ,CAACN,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEM,UAAQ,CAAC,wBAAwB,CAAC;AACzC,IAAA,MAAM,EAAEA,UAAQ,CAAC,wBAAwB,CAAC;AAC7C,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAA0BF,QAAM,CAAC;AAC7D,IAAA,EAAE,EAAE,qBAAqB;AACzB,IAAA,eAAe,EAAE,qBAAqB;AACzC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAA2DA,QAAM,CAAC;AACpG,IAAA,GAAG,EAAE,qBAAqB;AAC1B,IAAA,GAAG,EAAEE,UAAQ,CAACN,QAAM,EAAE,CAAC;AACvB,IAAA,IAAI,EAAEM,UAAQ,CAACN,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEM,UAAQ,CAAC,wBAAwB,CAAC;AACzC,IAAA,MAAM,EAAEA,UAAQ,CAAC,wBAAwB,CAAC;AAC7C,CAAA,CAAC,CAAC;AAEI,MAAM,uBAAuB,GAAgDF,QAAM,CAAC;AACvF,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,WAAW,EAAEE,UAAQ,CAACP,QAAM,EAAE,CAAC;IAC/B,QAAQ,EAAEO,UAAQ,CAACD,OAAK,CAACN,QAAM,EAAE,CAAC,CAAC;AACnC,IAAA,YAAY,EAAEO,UAAQ,CAACF,QAAM,EAAE,CAAC;AACnC,CAAA,CAAC,CAAC;AAE8DA,QAAM,CAAC;AACpE,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,KAAK,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACtC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACxC,IAAA,KAAK,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACtC,IAAA,QAAQ,EAAE,qBAAqB;AAC/B,IAAA,YAAY,EAAE,qBAAqB;AACnC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACxC,IAAA,WAAW,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,YAAY,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC7C,IAAA,YAAY,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC7C,IAAA,SAAS,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC1C,IAAA,MAAM,EAAEA,UAAQ,CAACD,OAAK,CAACD,QAAM,CAAC,EAAE,GAAG,EAAEE,UAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,IAAA,KAAK,EAAEA,UAAQ,CAACD,OAAK,CAACD,QAAM,CAAC,EAAE,IAAI,EAAEE,UAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,YAAY,EAAEJ,SAAO,EAAE;AACvB,IAAA,OAAO,EAAEI,UAAQ,CAACD,OAAK,CAAC,uBAAuB,CAAC,CAAC;AACpD,CAAA,EAAE;AAEI,MAAM,4BAA4B,GAAoDD,QAAM,CAAC;AAChG,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,4BAA4B,CAAC;AACtF,IAAA,KAAK,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACtC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACxC,IAAA,gBAAgB,EAAEA,UAAQ,CAACJ,SAAO,EAAE,CAAC;AACrC,IAAA,IAAI,EAAEI,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,OAAO,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC3B,IAAA,OAAO,EAAE,yBAAyB;AAClC,IAAA,OAAO,EAAEO,UAAQ,CAACD,OAAK,CAAC,uBAAuB,CAAC,CAAC;AACjD,IAAA,MAAM,EAAEC,UAAQ,CAACL,SAAO,EAAE,CAAC;IAC3B,IAAI,EAAEK,UAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACpD,CAAA,CAAC,CAAC;AAEI,MAAM,gCAAgC,GAAqEC,OAAK,CACnH,4BAA4B,EAC5B,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EACjC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CACpC,CAAC;AAEsEH,QAAM,CAAC;AAC3E,IAAA,WAAW,EAAEC,OAAK,CAAC,gCAAgC,CAAC;AACpD,IAAA,IAAI,EAAEE,OAAK,CACPJ,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,OAAO,CAAC,CACpB;AACJ,CAAA,EAAE;AAEI,MAAM,sBAAsB,GAA6BC,QAAM,CAAC;AACnE,IAAA,IAAI,EAAE,qBAAqB;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCA,QAAM,CAAC;AAC3E,IAAA,WAAW,EAAEC,OAAK,CAAC,4BAA4B,CAAC;AACnD,CAAA,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAA6BD,QAAM,CAAC;AACnE,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,4BAA4B,CAAC;AACtF,IAAA,SAAS,EAAEC,OAAK,CAAC,mBAAmB,CAAC;AACrC,IAAA,cAAc,EAAEC,UAAQ,CAACJ,SAAO,EAAE,CAAC;AACnC,IAAA,KAAK,EAAEI,UAAQ,CAAC,qBAAqB,CAAC;AACtC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACxC,IAAA,IAAI,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACrC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCF,QAAM,CAAC;AAC3E,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,4BAA4B,CAAC;IACtF,cAAc,EAAEF,SAAO,EAAE;AACzB,IAAA,KAAK,EAAEI,UAAQ,CAAC,qBAAqB,CAAC;AACtC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACxC,IAAA,IAAI,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACrC,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,CAAA,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAAqCF,QAAM,CAAC;AACnF,IAAA,SAAS,EAAEC,OAAK,CAAC,0BAA0B,CAAC;AAC5C,IAAA,WAAW,EAAEA,OAAK,CAAC,0BAA0B,CAAC;AAC9C,IAAA,WAAW,EAAEA,OAAK,CAAC,0BAA0B,CAAC;AACjD,CAAA,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAA6BD,QAAM,CAAC;AACnE,IAAA,IAAI,EAAEC,OAAK,CAAC,sBAAsB,CAAC;AACnC,IAAA,gBAAgB,EAAEC,UAAQ,CAAC,qBAAqB,CAAC;AACpD,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA+BF,QAAM,CAAC;AACvE,IAAA,EAAE,EAAE,qBAAqB;AAC5B,CAAA,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAoCA,QAAM,CAAC;AACjF,IAAA,IAAI,EAAE,qBAAqB;IAC3B,eAAe,EAAEH,SAAO,EAAE;AAC1B,IAAA,EAAE,EAAEK,UAAQ,CAAC,qBAAqB,CAAC;AACnC,IAAA,OAAO,EAAEA,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,GAAG,EAAEI,UAAQ,CAACN,QAAM,EAAE,CAAC;AACvB,IAAA,IAAI,EAAEM,UAAQ,CAACN,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEM,UAAQ,CAAC,wBAAwB,CAAC;AACzC,IAAA,MAAM,EAAEA,UAAQ,CAAC,wBAAwB,CAAC;AAC1C,IAAA,UAAU,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,IAAA,iBAAiB,EAAEA,UAAQ,CAAC,8BAA8B,CAAC;AAC3D,IAAA,cAAc,EAAEA,UAAQ,CAACL,SAAO,EAAE,CAAC;AACnC,IAAA,iBAAiB,EAAEK,UAAQ,CAAC,qBAAqB,CAAC;AAClD,IAAA,SAAS,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC7C,CAAA,CAAC,CAAC;AAEI,MAAM,iBAAiB,GAAiDC,OAAK,CAChFJ,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,oBAAoB,CAAC,EAC9BA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,WAAW,CAAC,CACxB,CAAC;AAEK,MAAM,oBAAoB,GAAoDI,OAAK,CACtFJ,UAAQ,CAAC,aAAa,CAAC,EACvBA,UAAQ,CAAC,UAAU,CAAC,CACvB,CAAC;AAEK,MAAM,2BAA2B,GAA2DC,QAAM,CAAC;AACtG,IAAA,OAAO,EAAEE,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,MAAM,EAAE,mBAAmB;IAC3B,UAAU,EAAEE,QAAM,CAAC;AACf,QAAA,IAAI,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACrC,QAAA,GAAG,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACpC,QAAA,OAAO,EAAEA,UAAQ,CAACJ,SAAO,EAAE,CAAC;KAC/B,CAAC;AACF,IAAA,WAAW,EAAEI,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,YAAY,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC7C,IAAA,UAAU,EAAE,qBAAqB;AACjC,IAAA,WAAW,EAAEA,UAAQ,CAACL,SAAO,EAAE,CAAC;AAChC,IAAA,QAAQ,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;IAC7B,eAAe,EAAEG,QAAM,CAAC;AACpB,QAAA,OAAO,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACxC,QAAA,WAAW,EAAEA,UAAQ,CAACN,QAAM,EAAE,CAAC;KAClC,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,4BAA4B,GAAsDI,QAAM,CAAC;AAClG,IAAA,IAAI,EAAED,UAAQ,CAAC,QAAQ,CAAC;AACxB,IAAA,aAAa,EAAEG,UAAQ,CAAC,oBAAoB,CAAC;AAC7C,IAAA,WAAW,EAAE,qBAAqB;AAClC,IAAA,KAAK,EAAE,2BAA2B;AACrC,CAAA,CAAC,CAAC;AAEI,MAAM,uBAAuB,GAAkDF,QAAM,CAAC;AACzF,IAAA,IAAI,EAAED,UAAQ,CAAC,QAAQ,CAAC;IACxB,MAAM,EAAEC,QAAM,CAAC;AACX,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,GAAG,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACpC,QAAA,KAAK,EAAEA,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,QAAA,YAAY,EAAEO,UAAQ,CAACL,SAAO,EAAE,CAAC;AACjC,QAAA,YAAY,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AACjC,QAAA,eAAe,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AACpC,QAAA,WAAW,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;KACnC,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAAiDG,QAAM,CAAC;AACvF,IAAA,IAAI,EAAED,UAAQ,CAAC,OAAO,CAAC;IACvB,MAAM,EAAED,SAAO,EAAE;AACjB,IAAA,QAAQ,EAAEG,OAAK,CAACE,OAAK,CACjB,uBAAuB,CAC1B,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,uBAAuB,GAAkDH,QAAM,CAAC;AACzF,IAAA,IAAI,EAAED,UAAQ,CAAC,QAAQ,CAAC;IACxB,MAAM,EAAED,SAAO,EAAE;IACjB,QAAQ,EAAEG,OAAK,CAACE,OAAK,CACjB,sBAAsB,EACtB,uBAAuB,EACvB,IAAI,CAAC,MAAM,uBAAuB,CAAC,EAEnC,IAAI,CAAC,MAAM,oBAAoB,CAAC,CACnC,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,oBAAoB,GAA+CH,QAAM,CAAC;AACnF,IAAA,IAAI,EAAED,UAAQ,CAAC,KAAK,CAAC;IACrB,MAAM,EAAED,SAAO,EAAE;AACjB,IAAA,QAAQ,EAAEG,OAAK,CAACE,OAAK,CACjB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,IAAI,CAAC,MAAM,oBAAoB,CAAC,CACnC,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,oCAAoC,GAA+DH,QAAM,CAAC;IACnH,MAAM,EAAEF,SAAO,EAAE;IACjB,OAAO,EAAEA,SAAO,EAAE;AAClB,IAAA,QAAQ,EAAEG,OAAK,CAACE,OAAK,CACjB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,CAC1B,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAAoDH,QAAM,CAAC;AACnG,IAAA,IAAI,EAAED,UAAQ,CAAC,WAAW,CAAC;AAC3B,IAAA,WAAW,EAAEG,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,KAAK,EAAE,oCAAoC;AAC9C,CAAA,CAAC,CAAC;AAEI,MAAM,mCAAmC,GAAmEF,QAAM,CAAC;AACtH,IAAA,MAAM,EAAE,mBAAmB;AAC3B,IAAA,UAAU,EAAE,qBAAqB;AACjC,IAAA,iBAAiB,EAAE,wBAAwB;AAC3C,IAAA,UAAU,EAAEC,OAAK,CAAC,oCAAoC,CAAC;AACvD,IAAA,WAAW,EAAEC,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,YAAY,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC7C,IAAA,OAAO,EAAEA,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC/B,CAAA,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAA8DE,QAAM,CAAC;AAC5G,IAAA,IAAI,EAAED,UAAQ,CAAmB,gBAAgB,CAAC;AAClD,IAAA,WAAW,EAAE,qBAAqB;AAClC,IAAA,aAAa,EAAEG,UAAQ,CAAC,oBAAoB,CAAC;AAC7C,IAAA,KAAK,EAAE,mCAAmC;AAC7C,CAAA,CAAC,CAAC;AAEI,MAAM,iBAAiB,GAA6CF,QAAM,CAAC;AAC9E,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,iBAAiB;IACvB,UAAU,EAAEC,OAAK,CAACE,OAAK,CACnB,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,CACjC,CAAC;AACF,IAAA,OAAO,EAAED,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,QAAQ,EAAEI,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC7B,IAAA,OAAO,EAAEI,UAAQ,CAACN,QAAM,EAAE,CAAC;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,uBAAuB,GAAuDI,QAAM,CAAC;AAC9F,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,OAAO,EAAEE,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,QAAQ,EAAEI,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC7B,IAAA,SAAS,EAAEI,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AACjD,IAAA,eAAe,EAAEC,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AAC1D,CAAA,CAAC,CAAC;AAEI,MAAM,qBAAqB,GAAqDD,QAAM,CAAC;AAC1F,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,OAAO,EAAEE,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,oBAAoB,EAAEI,UAAQ,CAACL,SAAO,EAAE,CAAC;AACzC,IAAA,OAAO,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC5B,IAAA,OAAO,EAAEK,UAAQ,CAAC,wBAAwB,CAAC;AAC9C,CAAA,CAAC,CAAC;AAEI,MAAM,oBAAoB,GAAoDF,QAAM,CAAC;AACxF,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,OAAO,EAAEE,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,IAAA,QAAQ,EAAEI,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAChC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAAgCE,QAAM,CAAC;AACzE,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,IAAI,EAAE,iBAAiB;AAC1B,CAAA,CAAC,CAAC;AAEI,MAAM,uBAAuB,GAA8BA,QAAM,CAAC;AACrE,IAAA,MAAM,EAAE,uBAAuB;AAClC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAAgCA,QAAM,CAAC;AACzE,IAAA,MAAM,EAAE,iBAAiB;AACzB,IAAA,OAAO,EAAE,qBAAqB;AACjC,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAAmDA,QAAM,CAAC;AACtF,IAAA,MAAM,EAAE,qBAAqB;AAChC,CAAA,CAAC,CAAC;AAEI,MAAM,iCAAiC,GAAwCA,QAAM,CAAC;AACzF,IAAA,MAAM,EAAE,iBAAiB;AAC5B,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCA,QAAM,CAAC;AAC3E,IAAA,MAAM,EAAE,qBAAqB;AAChC,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCA,QAAM,CAAC;AAC3E,IAAA,IAAI,EAAE,iBAAiB;AAC1B,CAAA,CAAC,CAAC;AAEI,MAAM,2BAA2B,GAAkCA,QAAM,CAAC;AAC7E,IAAA,OAAO,EAAEC,OAAK,CAAC,iBAAiB,CAAC;AACpC,CAAA,CAAC,CAAC;AAEI,MAAM,iBAAiB,GAAiCE,OAAK,CAChEJ,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,OAAO,CAAC,CACpB,CAAC;AAEK,MAAM,0BAA0B,GAAiCC,QAAM,CAAC;AAC3E,IAAA,OAAO,EAAEC,OAAK,CAAC,iBAAiB,CAAC;AACjC,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,kBAAkB,EAAEC,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC1C,CAAA,CAAC,CAAC;AAEI,MAAM,gCAAgC,GAAuCG,QAAM,CAAC;AACvF,IAAA,SAAS,EAAEC,OAAK,CAAC,oBAAoB,CAAC;AACzC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAAgCD,QAAM,CAAC;AACzE,IAAA,MAAM,EAAE,iBAAiB;AAC5B,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAwCA,QAAM,CAAC;AAClF,IAAA,MAAM,EAAEE,UAAQ,CAAC,iBAAiB,CAAC;AACtC,CAAA,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAoCF,QAAM,CAAC;AACjF,IAAA,IAAI,EAAE,qBAAqB;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,4BAA4B,GAAmCG,OAAK,CAC7EJ,UAAQ,CAAC,YAAY,CAAC,EACtBA,UAAQ,CAAC,YAAY,CAAC,EACtBA,UAAQ,CAAC,aAAa,CAAC,EACvBA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,gBAAgB,CAAC,CAC7B,CAAC;AAEK,MAAM,oBAAoB,GAAoDC,QAAM,CAAC;AACxF,IAAA,eAAe,EAAE,qBAAqB;AACtC,IAAA,gBAAgB,EAAEE,UAAQ,CAACP,QAAM,EAAE,CAAC;AACpC,IAAA,sBAAsB,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC1C,IAAA,eAAe,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACnC,IAAA,IAAI,EAAEQ,OAAK,CAAqBJ,UAAQ,CAAC,KAAK,CAAC,EAAEA,UAAQ,CAAC,UAAU,CAAC,CAAC;AACtE,IAAA,WAAW,EAAEG,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC/B,IAAA,YAAY,EAAEO,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AACpD,IAAA,UAAU,EAAEC,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC9B,IAAA,aAAa,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACjC,IAAA,UAAU,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACjC,CAAA,CAAC,CAAC;AAEyCK,QAAM,CAAC;IAC/C,eAAe,EAAEL,QAAM,EAAE;AACzB,IAAA,eAAe,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACnC,IAAA,UAAU,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACjC,CAAA,EAAE;AAEI,MAAM,6BAA6B,GAAoCK,QAAM,CAAC;AACjF,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,OAAO,EAAE,oBAAoB;AAChC,CAAA,CAAC,CAAC;AAEH,MAAM,aAAa,GAA6CA,QAAM,CAAC;AACnE,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,QAAQ,EAAEC,OAAK,CAAC,oBAAoB,CAAC;AACxC,CAAA,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAwEE,OAAK,CAClGJ,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,OAAO,CAAC,EACjBC,QAAM,CAAC;AACH,IAAA,GAAG,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACpC,IAAA,QAAQ,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,CAAA,CAAC,CACL,CAAC;AAEF,MAAM,oBAAoB,GAAoDF,QAAM,CAAC;AACjF,IAAA,IAAI,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACrC,IAAA,IAAI,EAAEA,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC5B,CAAA,CAAC,CAAC;AAEI,MAAM,cAAc,GAA+CG,OAAK,CAAC,aAAa,CAAC,CAAC;AAExF,MAAM,qBAAqB,GAA4BD,QAAM,CAAC;AACjE,IAAA,OAAO,EAAE,cAAc;AAC1B,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAAmDA,QAAM,CAAC;AACtF,IAAA,IAAI,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACrC,IAAA,WAAW,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,UAAU,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC9C,CAAA,CAAC,CAAC;AAEI,MAAM,iBAAiB,GAA4DC,OAAK,CAC3F,qBAAqB,EACrB,mBAAmB,CACtB,CAAC;AAEK,MAAM,0BAA0B,GAAiCH,QAAM,CAAC;AAC3E,IAAA,MAAM,EAAEE,UAAQ,CAAC,mBAAmB,CAAC;AACxC,CAAA,CAAC,CAAC;AAEI,MAAM,oBAAoB,GAAoDF,QAAM,CAAC;AACxF,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,MAAM,EAAEE,UAAQ,CAAC,mBAAmB,CAAC;AACrC,IAAA,OAAO,EAAEA,UAAQ,CAAC,oBAAoB,CAAC;AACvC,IAAA,OAAO,EAAEA,UAAQ,CAAC,yBAAyB,CAAC;AAC5C,IAAA,QAAQ,EAAEA,UAAQ,CAACD,OAAK,CAAC,oBAAoB,CAAC,CAAC;AAC/C,IAAA,OAAO,EAAEC,UAAQ,CAAC,wBAAwB,CAAC;AAC3C,IAAA,4BAA4B,EAAEA,UAAQ,CAACL,SAAO,EAAE,CAAC;AACpD,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAA6DM,OAAK,CAC9F,qBAAqB,EACrB,oBAAoB,CACvB,CAAC;AAEK,MAAM,qBAAqB,GAA4BH,QAAM,CAAC;IACjE,OAAO,EAAEH,SAAO,EAAE;AAClB,IAAA,OAAO,EAAE,qBAAqB;IAC9B,mBAAmB,EAAED,QAAM,EAAE;AAChC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAA6CI,QAAM,CAAC;AACtF,IAAA,aAAa,EAAE,oBAAoB;AACnC,IAAA,cAAc,EAAE,qBAAqB;AACxC,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAAmDA,QAAM,CAAC;AACtF,IAAA,OAAO,EAAE,oBAAoB;AAC7B,IAAA,OAAO,EAAE,oBAAoB;IAC7B,MAAM,EAAEF,SAAO,EAAE;AACpB,CAAA,CAAC,CAAC;AAEI,MAAM,qBAAqB,GAAoDE,QAAM,CAAC;AACzF,IAAA,KAAK,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACtC,IAAA,YAAY,EAAEA,UAAQ,CAACL,SAAO,EAAE,CAAC;AACjC,IAAA,OAAO,EAAEK,UAAQ,CAAC,wBAAwB,CAAC;AAC3C,IAAA,MAAM,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACvC,IAAA,YAAY,EAAEA,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AACpD,IAAA,UAAU,EAAEC,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,IAAA,gBAAgB,EAAEA,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AAC3D,CAAA,CAAC,CAAC;AAEI,MAAM,2BAA2B,GAA2DD,QAAM,CAAC;AACtG,IAAA,QAAQ,EAAEC,OAAK,CAAC,oBAAoB,CAAC;AACxC,CAAA,CAAC,CAAC;AAEI,MAAM,uCAAuC,GAA8CD,QAAM,CAAC;AACrG,IAAA,qBAAqB,EAAE,qBAAqB;AAC5C,IAAA,cAAc,EAAE,qBAAqB;AACxC,CAAA,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAA+DA,QAAM,CAAC;AAC9G,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,YAAY,EAAEE,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AACpD,IAAA,WAAW,EAAEC,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC/B,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,WAAW,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC/B,IAAA,UAAU,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACjC,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAAwEQ,OAAK,CAC9G,qBAAqB,EACrB,+BAA+B,CAClC,CAAC;AAEK,MAAM,iBAAiB,GAAiDH,QAAM,CAAC;AAClF,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,YAAY,EAAEE,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AACpD,IAAA,WAAW,EAAEC,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,WAAW,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,IAAI,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AACrC,IAAA,UAAU,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC9C,CAAA,CAAC,CAAC;AAEI,MAAM,uBAAuB,GAAuDF,QAAM,CAAC;AAC9F,IAAA,OAAO,EAAEC,OAAK,CAAC,iBAAiB,CAAC;AACpC,CAAA,CAAC,CAAC;AAEI,MAAM,kBAAkB,GAAG,CAAC,YAAsB,KAAqB;AAC1E,IAAA,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC;AACvG,CAAC,CAAC;AAEK,MAAM,4BAA4B,GAAkED,QAAM,CAAC;AAC9G,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,SAAS,EAAEE,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC9B,IAAA,MAAM,EAAEI,UAAQ,CAACC,OAAK,CAClBJ,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,MAAM,CAAC,CACnB,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAA+DC,QAAM,CAAC;IAC9G,MAAM,EAAEL,QAAM,EAAE;AAChB,IAAA,KAAK,EAAE,qBAAqB;AAC5B,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,OAAO,EAAEO,UAAQ,CAAC,4BAA4B,CAAC;AAClD,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAAkDC,OAAK,CACxFJ,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,cAAc,CAAC,EACxBA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,YAAY,CAAC,CACzB,CAAC;AAEK,MAAM,qCAAqC,GAA4CC,QAAM,CAAC;IACjG,KAAK,EAAEJ,QAAM,EAAE;AAClB,CAAA,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAmEI,QAAM,CAAC;AAChH,IAAA,KAAK,EAAEE,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,IAAI,EAAEO,UAAQ,CAACJ,SAAO,EAAE,CAAC;IACzB,GAAG,EAAEI,UAAQ,CAACC,OAAK,CACfJ,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,KAAK,CAAC,CAClB,CAAC;AACF,IAAA,IAAI,EAAEG,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,QAAQ,EAAEO,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC7B,IAAA,kBAAkB,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AACvC,IAAA,MAAM,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC3B,IAAA,GAAG,EAAEK,UAAQ,CAACP,QAAM,EAAE,CAAC;AACvB,IAAA,SAAS,EAAEO,UAAQ,CAAC,wBAAwB,CAAC;IAC7C,OAAO,EAAEA,UAAQ,CAACD,OAAK,CAACL,QAAM,EAAE,CAAC,CAAC;AACrC,CAAA,CAAC,CAAC;AAEI,MAAM,gCAAgC,GAAyDI,QAAM,CAAC;AACzG,IAAA,KAAK,EAAE,qBAAqB;AAC5B,IAAA,YAAY,EAAEE,UAAQ,CAAC,4BAA4B,CAAC;AACpD,IAAA,OAAO,EAAEA,UAAQ,CAACD,OAAK,CAAC,+BAA+B,CAAC,CAAC;AACzD,IAAA,2BAA2B,EAAEC,UAAQ,CAACL,SAAO,EAAE,CAAC;AAChD,IAAA,KAAK,EAAEK,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,IAAI,EAAEO,UAAQ,CAACJ,SAAO,EAAE,CAAC;IACzB,GAAG,EAAEI,UAAQ,CAACC,OAAK,CACfJ,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,KAAK,CAAC,CAClB,CAAC;AACF,IAAA,IAAI,EAAEG,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,QAAQ,EAAEO,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC7B,IAAA,kBAAkB,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AACvC,IAAA,MAAM,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC3B,IAAA,GAAG,EAAEK,UAAQ,CAACP,QAAM,EAAE,CAAC;AACvB,IAAA,SAAS,EAAEO,UAAQ,CAAC,wBAAwB,CAAC;IAC7C,OAAO,EAAEA,UAAQ,CAACD,OAAK,CAACL,QAAM,EAAE,CAAC,CAAC;AAClC,IAAA,QAAQ,EAAEM,UAAQ,CAACC,OAAK,CACpBJ,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,UAAU,CAAC,CACvB,CAAC;AACF,IAAA,SAAS,EAAEG,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC9B,IAAA,WAAW,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AAChC,IAAA,KAAK,EAAEK,UAAQ,CAAC,wBAAwB,CAAC;AAC5C,CAAA,CAAC,CAAC;AAEI,MAAM,kCAAkC,GAAyCF,QAAM,CAAC;AAC3F,IAAA,EAAE,EAAE,qBAAqB;AACzB,IAAA,KAAK,EAAE,wBAAwB;AAClC,CAAA,CAAC,CAAC;AAEI,MAAM,qBAAqB,GAAsDA,QAAM,CAAC;AAC3F,IAAA,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAEA,QAAM,CAAC;AACT,QAAA,KAAK,EAAE,qBAAqB;KAC/B,CAAC;AACF,IAAA,IAAI,EAAEE,UAAQ,CAACF,QAAM,EAAE,CAAC;AAC3B,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA+BA,QAAM,CAAC;AACvE,IAAA,IAAI,EAAE,qBAAqB;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAA2DA,QAAM,CAAC;AACrG,IAAA,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAEH,SAAO,EAAE;IACf,KAAK,EAAEA,SAAO,EAAE;AAChB,IAAA,QAAQ,EAAEK,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,CAAA,CAAC,CAAC;AAEI,MAAM,2CAA2C,GAA6CF,QAAM,CAAC;AACxG,IAAA,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAEH,SAAO,EAAE;IACf,KAAK,EAAEA,SAAO,EAAE;AAChB,IAAA,QAAQ,EAAE,qBAAqB;AAClC,CAAA,CAAC,CAAC;AAEI,MAAM,4BAA4B,GAA2CG,QAAM,CAAC;AACvF,IAAA,MAAM,EAAE,2CAA2C;AACtD,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAAoDA,QAAM,CAAC;AACvF,IAAA,QAAQ,EAAEC,OAAK,CAAC,0BAA0B,CAAC;AAC9C,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAmCD,QAAM,CAAC;AAC7E,IAAA,QAAQ,EAAE,qBAAqB;AAClC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAA0DA,QAAM,CAAC;IACnG,IAAI,EAAEH,SAAO,EAAE;IACf,KAAK,EAAEA,SAAO,EAAE;AAChB,IAAA,QAAQ,EAAEK,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,CAAA,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAA6BF,QAAM,CAAC;AACnE,IAAA,YAAY,EAAE,yBAAyB;AAC1C,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA+BA,QAAM,CAAC;AACvE,IAAA,QAAQ,EAAE,gCAAgC;AAC1C,IAAA,EAAE,EAAE,qBAAqB;AAC5B,CAAA,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAAqCA,QAAM,CAAC;AACnF,IAAA,QAAQ,EAAE,gCAAgC;AAC7C,CAAA,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAAqCA,QAAM,CAAC;IACnF,iBAAiB,EAAEH,SAAO,EAAE;AAC/B,CAAA,CAAC,CAAC;AAEI,MAAM,4BAA4B,GAAmCG,QAAM,CAAC;AAC/E,IAAA,UAAU,EAAEG,OAAK,CACbJ,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,SAAS,CAAC,EACnBA,UAAQ,CAAC,QAAQ,CAAC,CACrB;AACJ,CAAA,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAAsCC,QAAM,CAAC;AACrF,IAAA,UAAU,EAAE,6BAA6B;AACzC,IAAA,MAAM,EAAEE,UAAQ,CAACP,QAAM,EAAE,CAAC;AAC1B,IAAA,EAAE,EAAEO,UAAQ,CAAC,qBAAqB,CAAC;AACtC,CAAA,CAAC,CAAC;AAEI,MAAM,yBAAyB,GAA+DF,QAAM,CAAC;AACxG,IAAA,OAAO,EAAEE,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AAC/C,IAAA,OAAO,EAAEC,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AAClD,CAAA,CAAC,CAAC;AAEI,MAAM,iCAAiC,GAA0DD,QAAM,CAAC;AAC3G,IAAA,MAAM,EAAEE,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC3B,IAAA,YAAY,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AACjC,IAAA,YAAY,EAAEK,UAAQ,CAAC,yBAAyB,CAAC;AACpD,CAAA,CAAC,CAAC;AAEI,MAAM,yCAAyC,GAAgDF,QAAM,CAAC;AACzG,IAAA,aAAa,EAAE,iCAAiC;AACnD,CAAA,CAAC,CAAC;AAEI,MAAM,+CAA+C,GAAsDA,QAAM,CAAC;IACrH,aAAa,EAAEA,QAAM,CAAC;QAClB,MAAM,EAAEH,SAAO,EAAE;QACjB,YAAY,EAAEA,SAAO,EAAE;QACvB,YAAY,EAAEG,QAAM,CAAC;AACjB,YAAA,OAAO,EAAEC,OAAK,CAAC,qBAAqB,CAAC;AACrC,YAAA,OAAO,EAAEA,OAAK,CAAC,qBAAqB,CAAC;SACxC,CAAC;KACL,CAAC;AACL,CAAA,CAAC,CAAC;AAEI,MAAM,gCAAgC,GAAuCD,QAAM,CAAC;AACvF,IAAA,UAAU,EAAEG,OAAK,CACbJ,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,WAAW,CAAC,CACxB;AACD,IAAA,UAAU,EAAE,qBAAqB;AACjC,IAAA,OAAO,EAAEG,UAAQ,CAACJ,SAAO,EAAE,CAAC;AAC/B,CAAA,CAAC,CAAC;AAEI,MAAM,gCAAgC,GAAuCE,QAAM,CAAC;AACvF,IAAA,aAAa,EAAEE,UAAQ,CAACJ,SAAO,EAAE,CAAC;AACrC,CAAA,CAAC,CAAC;AAEI,MAAM,4BAA4B,GAAmCE,QAAM,CAAC;AAC/E,IAAA,KAAK,EAAEG,OAAK,CACRJ,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,SAAS,CAAC,CACtB;AACJ,CAAA,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAAsCC,QAAM,CAAC;IACrF,WAAW,EAAEH,SAAO,EAAE;AACzB,CAAA,CAAC,CAAC;AAEI,MAAM,mBAAmB,GAAiCG,QAAM,CAAC;AACpE,IAAA,MAAM,EAAE,qBAAqB;AAChC,CAAA,CAAC,CAAC;AAEI,MAAM,2BAA2B,GAAkCA,QAAM,CAAC;IAC7E,WAAW,EAAEH,SAAO,EAAE;AACzB,CAAA,CAAC,CAAC;AAEI,MAAM,2BAA2B,GAAkCG,QAAM,CAAC;AAC7E,IAAA,SAAS,EAAE,qBAAqB;AACnC,CAAA,CAAC,CAAC;AAEI,MAAM,iCAAiC,GAAwCA,QAAM,CAAC;AACzF,IAAA,MAAM,EAAE,mBAAmB;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,YAAY,GAA2CA,QAAM,CAAC;AACvE,IAAA,WAAW,EAAE,qBAAqB;AAClC,IAAA,IAAI,EAAE,qBAAqB;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCA,QAAM,CAAC;AAC3E,IAAA,KAAK,EAAE,YAAY;AACtB,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA+BA,QAAM,CAAC;AACvE,IAAA,MAAM,EAAEC,OAAK,CAAC,YAAY,CAAC;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA+BD,QAAM,CAAC;AACvE,IAAA,IAAI,EAAE,qBAAqB;AAC9B,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA6DA,QAAM,CAAC;AACrG,IAAA,EAAE,EAAE,qBAAqB;AACzB,IAAA,KAAK,EAAE,qBAAqB;AAC5B,IAAA,YAAY,EAAEE,UAAQ,CAAC,4BAA4B,CAAC;AACpD,IAAA,OAAO,EAAEA,UAAQ,CAACD,OAAK,CAAC,+BAA+B,CAAC,CAAC;AACzD,IAAA,2BAA2B,EAAEC,UAAQ,CAACL,SAAO,EAAE,CAAC;AAChD,IAAA,KAAK,EAAEK,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,IAAI,EAAEO,UAAQ,CAACJ,SAAO,EAAE,CAAC;IACzB,GAAG,EAAEI,UAAQ,CAACC,OAAK,CACfJ,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,KAAK,CAAC,CAClB,CAAC;AACF,IAAA,IAAI,EAAEG,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACzB,IAAA,IAAI,EAAEO,UAAQ,CAACP,QAAM,EAAE,CAAC;AACxB,IAAA,QAAQ,EAAEO,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC7B,IAAA,kBAAkB,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AACvC,IAAA,MAAM,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC3B,IAAA,GAAG,EAAEK,UAAQ,CAACP,QAAM,EAAE,CAAC;AACvB,IAAA,SAAS,EAAEO,UAAQ,CAAC,wBAAwB,CAAC;IAC7C,OAAO,EAAEA,UAAQ,CAACD,OAAK,CAACL,QAAM,EAAE,CAAC,CAAC;AAClC,IAAA,QAAQ,EAAEM,UAAQ,CAACC,OAAK,CACpBJ,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,MAAM,CAAC,EAChBA,UAAQ,CAAC,UAAU,CAAC,CACvB,CAAC;AACF,IAAA,SAAS,EAAEG,UAAQ,CAACL,SAAO,EAAE,CAAC;AAC9B,IAAA,WAAW,EAAEK,UAAQ,CAACL,SAAO,EAAE,CAAC;AAChC,IAAA,KAAK,EAAEK,UAAQ,CAAC,wBAAwB,CAAC;AAC5C,CAAA,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAoCF,QAAM,CAAC;AACjF,IAAA,YAAY,EAAE,wBAAwB;AACzC,CAAA,CAAC,CAAC;AAEI,MAAM,2BAA2B,GAAkCA,QAAM,CAAC;AAC7E,IAAA,aAAa,EAAEC,OAAK,CAAC,wBAAwB,CAAC;AACjD,CAAA,CAAC,CAAC;AAEI,MAAM,+BAA+B,GAAsCD,QAAM,CAAC;AACrF,IAAA,EAAE,EAAE,qBAAqB;AAC5B,CAAA,CAAC,CAAC;AAEI,MAAM,gCAAgC,GAAiCA,QAAM,CAAC;AACjF,IAAA,OAAO,EAAE,qBAAqB;AACjC,CAAA,CAAC,CAAC;AAEI,MAAM,kCAAkC,GAAoCA,QAAM,CAAC;AACtF,IAAA,SAAS,EAAEC,OAAK,CAAC,qBAAqB,CAAC;AAC1C,CAAA,CAAC,CAAC;AAEI,MAAM,6BAA6B,GAAmCE,OAAK,CAC9EJ,UAAQ,CAAC,YAAY,CAAC,EACtBA,UAAQ,CAAC,cAAc,CAAC,EACxBA,UAAQ,CAAC,uBAAuB,CAAC,EACjCA,UAAQ,CAAC,0BAA0B,CAAC,EACpCA,UAAQ,CAAC,aAAa,CAAC,EACvBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,iBAAiB,CAAC,EAC3BA,UAAQ,CAAC,aAAa,CAAC,CAC1B,CAAC;AAEK,MAAM,wBAAwB,GAA2BC,QAAM,CAAC;AACnE,IAAA,OAAO,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,CAAA,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAA+DF,QAAM,CAAC;AAC7G,IAAA,WAAW,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AAC5C,IAAA,QAAQ,EAAEA,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AAChD,IAAA,SAAS,EAAEC,UAAQ,CAACD,OAAK,CAAC,qBAAqB,CAAC,CAAC;AACpD,CAAA,CAAC,CAAC;AAEI,MAAM,qCAAqC,GAA4CD,QAAM,CAAC;AACjG,IAAA,MAAM,EAAEE,UAAQ,CAAC,8BAA8B,CAAC;AACnD,CAAA,CAAC,CAAC;AAEI,MAAM,qCAAqC,GAAuCF,QAAM,CAAC;AAC5F,IAAA,qBAAqB,EAAEC,OAAK,CAACD,QAAM,CAAC;AAChC,QAAA,WAAW,EAAE,qBAAqB;AAClC,QAAA,OAAO,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AACxC,QAAA,QAAQ,EAAE,qBAAqB;AAClC,KAAA,CAAC,CAAC;AACN,CAAA,CAAC,CAAC;AACI,MAAM,8BAA8B,GAAGA,UAAQ,CAACJ,SAAO,EAAE,CAAC,CAAC;AAE3D,MAAM,8BAA8B,GAA6EI,UAAQ,CAACF,QAAM,CAAC;AACpI,IAAA,GAAG,EAAEE,UAAQ,CAACN,QAAM,EAAE,CAAC;AACvB,IAAA,IAAI,EAAEM,UAAQ,CAACN,QAAM,EAAE,CAAC;AACxB,IAAA,KAAK,EAAEM,UAAQ,CAAC,wBAAwB,CAAC;AACzC,IAAA,MAAM,EAAEA,UAAQ,CAAC,wBAAwB,CAAC;AAC1C,IAAA,UAAU,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,IAAA,iBAAiB,EAAEA,UAAQ,CAAC,8BAA8B,CAAC;AAC3D,IAAA,eAAe,EAAEA,UAAQ,CAACL,SAAO,EAAE,CAAC;AACpC,IAAA,SAAS,EAAEK,UAAQ,CAAC,qBAAqB,CAAC;AAC1C,IAAA,OAAO,EAAEA,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,CAAA,CAAC,CAAC,CAAC;AAEG,MAAM,sBAAsB,GAA6BF,QAAM,CAAC;AACnE,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,QAAQ,EAAE,qBAAqB;AAClC,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCA,QAAM,CAAC;AAC3E,IAAA,OAAO,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AAC3C,CAAA,CAAC,CAAC;AAEI,MAAM,0BAA0B,GAAiCC,OAAK,CACzEJ,UAAQ,CAAC,OAAO,CAAC,EACjBA,UAAQ,CAAC,UAAU,CAAC,EACpBA,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,KAAK,CAAC,EACfA,UAAQ,CAAC,QAAQ,CAAC,EAClBA,UAAQ,CAAC,cAAc,CAAC,EACxBA,UAAQ,CAAC,YAAY,CAAC,CACzB,CAAC;AAEK,MAAM,qBAAqB,GAAmDC,QAAM,CAAC;AACxF,IAAA,GAAG,EAAE,qBAAqB;IAC1B,IAAI,EAAEA,QAAM,EAAE;AACd,IAAA,UAAU,EAAEE,UAAQ,CAAC,qBAAqB,CAAC;AAC9C,CAAA,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAA6BF,QAAM,CAAC;AACnE,IAAA,GAAG,EAAE,qBAAqB;AAC7B,CAAA,CAAC,CAAC;AAEI,MAAM,qBAAqB,GAA8DA,QAAM,CAAC;AACnG,IAAA,KAAK,EAAE,qBAAqB;AAC/B,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA8DA,QAAM,CAAC;AACtG,IAAA,GAAG,EAAEC,OAAK,CAAC,qBAAqB,CAAC;AACpC,CAAA,CAAC,CAAC;AAEI,MAAM,sBAAsB,GAAwCD,QAAM,CAAC;AAC9E,IAAA,GAAG,EAAE,qBAAqB;IAC1B,IAAI,EAAEA,QAAM,EAAE;AACjB,CAAA,CAAC,CAAC;AAEI,MAAM,wBAAwB,GAA+BA,QAAM,CAAC;IACvE,QAAQ,EAAEA,QAAM,CAAC;AACb,QAAA,GAAG,EAAE,qBAAqB;KAC7B,CAAC;AACL,CAAA,CAAC;;ACnkCK,MAAMQ,YAAU,GAAuD;AAC1E,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE,aAAa,EAAE,qBAAqB,EAAE;AAC9G,IAAA,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE;IACzG,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE;IACxE,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE;AAC1E,IAAA,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,yBAAyB,EAAE;AAC5G,IAAA,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,8BAA8B,EAAE;AAC3H,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,sBAAsB,EAAE;IACnG,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC9E,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE;IAC1D,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE;AAC1D,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,wBAAwB,EAAE;IACzG,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,wBAAwB,EAAE;IACrE,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE;AACxE,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,0BAA0B,EAAE;CAClH;;;;;;ACxBD,SAASC,gBAAc,CAAC,OAAO,EAAE;AACjC,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa;AACxC,WAAW,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU;AACtD,WAAW,OAAO,CAAC,aAAa,KAAK,KAAK;AAC1C,WAAW,OAAO,CAAC,aAAa,KAAK,QAAQ;AAC7C,WAAW,OAAO,CAAC,aAAa,KAAK,OAAO,EAAE;AAC9C,QAAQ,MAAM,IAAI,KAAK,CAAC,iIAAiI,GAAG,OAAO,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC;AAC1M,KAAK;AACL,IAAI,IAAI,iBAAiB,GAAG,OAAO,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;AAC5G,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC;AACvB,IAAI,SAAS,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE;AACpD,QAAQ,IAAI,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,eAAe,GAAG,EAAE,CAAC;AACjC,YAAY,SAAS,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;AAC7C,SAAS;AACT,QAAQ,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,QAAQ,IAAI,kBAAkB,EAAE;AAChC,YAAY,UAAU,CAAC,YAAY;AACnC,gBAAgB,kBAAkB,CAAC,OAAO,CAAC,UAAU,cAAc,EAAE;AACrE,oBAAoB,IAAI,EAAE,CAAC;AAC3B,oBAAoB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1G,wBAAwB,IAAI;AAC5B,4BAA4B,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAC/D,gCAAgC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAC1E,6BAA6B;AAC7B,iCAAiC;AACjC,gCAAgC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5E,6BAA6B;AAC7B,yBAAyB;AACzB,wBAAwB,OAAO,GAAG,EAAE;AACpC,4BAA4B,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACnD,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa,EAAE,CAAC,CAAC,CAAC;AAClB,SAAS;AACT,QAAQ,OAAO,YAAY;AAC3B,YAAY,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;AACxE,gBAAgB,IAAI,EAAE,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE;AACrE,oBAAoB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC;AAC3B,aAAa,EAAE,EAAE,CAAC,CAAC;AACnB,YAAY,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,gBAAgB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACtC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC3C,aAAa;AACb,SAAS,CAAC;AACV,KAAK;AACL,IAAI,SAAS,OAAO,CAAC,GAAG,EAAE;AAC1B,QAAQ,IAAI,YAAY,GAAG,EAAE,CAAC;AAC9B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,IAAI,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9D,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,EAAE,CAAC;AACzB,QAAQ,eAAe,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE;AACpD,YAAY,IAAI;AAChB,gBAAgB,IAAI,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACrE,gBAAgB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC,gBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,SAAS,YAAY,CAAC,iBAAiB,EAAE,GAAG,EAAE;AAClD,QAAQ,IAAI,QAAQ,GAAG,iBAAiB,YAAY,KAAK,GAAG,iBAAiB,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAC7G,QAAQ,IAAI,iBAAiB,EAAE;AAC/B,YAAY,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACxC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,qDAAqD,GAAG,GAAG,GAAG,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC/G,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,QAAQ,OAAO,CAAC,aAAa;AACzC,gBAAgB,KAAK,KAAK;AAC1B,oBAAoB,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9C,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,OAAO;AAC3B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,SAAS,KAAK,GAAG;AACrB,QAAQ,SAAS,GAAG,EAAE,CAAC;AACvB,KAAK;AACL,IAAI,SAAS,QAAQ,CAAC,GAAG,EAAE;AAC3B,QAAQ,IAAI,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,GAAG,EAAE,GAAG;AAChB,QAAQ,OAAO,EAAE,OAAO;AACxB,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,QAAQ,EAAE,QAAQ;AAC1B,KAAK,CAAC;AACN,CAAC;AAEDA,gBAAc,CAAC,OAAO,GAAGA,gBAAc,CAAC;IACxCC,KAAc,GAAGD,gBAAc,CAAC;AAChC;;;;MC1Ga,cAAc,CAAA;AAMM,IAAA,GAAA,CAAA;AAA8B,IAAA,KAAA,CAAA;AAAgC,IAAA,OAAA,CAAA;IAL1E,QAAQ,GAAqBE,yBAAuB,EAAE,CAAC;AACvD,IAAA,QAAQ,CAAS;AAC1B,IAAA,cAAc,CAAkC;AAChD,IAAA,EAAE,CAAsC;AAEhD,IAAA,WAAA,CAA6B,GAAW,EAAmB,KAAa,EAAmB,OAAmB,EAAA;QAAjF,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;QAAmB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QAAmB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QAC1G,IAAI,CAAC,QAAQ,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,EAAE,EAAE,CAAC;KAC5C;AAED,IAAA,IAAW,EAAE,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;KAC3B;AAED,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;KAC7B;IAEM,KAAK,GAAA;QACR,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,EAAE,CAAC;AACzB,SAAA;KACJ;AAEM,IAAA,qBAAqB,CAAC,QAAiB,EAAA;AAC1C,QAAA,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;KAClD;AAEM,IAAA,MAAM,KAAK,GAAA;AAEd,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC;QAEvI,IAAI,CAAC,EAAE,GAAG;YACN,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;SACzC,CAAC;QAEF,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;AAEO,IAAA,MAAM,MAAM,GAAA;QAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAuC,SAAS,EAAEH,YAAU,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAClI,OAAO,MAAM,CAAC,GAAG,CAAC;KACrB;AAEO,IAAA,cAAc,CAAC,QAA8D,EAAA;AACjF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;AAC5G,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;KACtD;IAEO,MAAM,UAAU,CAAC,SAAmD,EAAA;QACxE,MAAM,YAAY,GAAG,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE/D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AAE5F,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA+B,SAAS,EAAEA,YAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAErG,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;AAEO,IAAA,MAAM,QAAQ,CAAC,KAAc,EAAE,MAAe,EAAA;QAClD,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YAC/D,OAAO,IAAI,CAAC,EAAE,CAAC;AAClB,SAAA;AAED,QAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAC9B,YAAA,wBAAwB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACpD,SAAA;AAED,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC/B,YAAA,wBAAwB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACrD,SAAA;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEhG,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA+B,SAAS,EAAEA,YAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAErG,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;AAEO,IAAA,MAAM,MAAM,CAAC,GAAY,EAAE,IAAa,EAAA;QAC5C,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;YAC3D,OAAO,IAAI,CAAC,EAAE,CAAC;AAClB,SAAA;AAED,QAAA,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AAC5B,YAAAZ,QAAM,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAClC,SAAA;AAED,QAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;AAC7B,YAAAA,QAAM,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACnC,SAAA;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAE5F,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA+B,SAAS,EAAEY,YAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAErG,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;AAEO,IAAA,MAAM,KAAK,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YAC1B,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnC,SAAA;AAAM,aAAA;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA4B,SAAS,EAAEA,YAAU,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1G,SAAA;QAED,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;AAEO,IAAA,MAAM,KAAK,GAAA;QACf,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA4B,SAAS,EAAEA,YAAU,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAEvG,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;AAEO,IAAA,MAAM,QAAQ,GAAA;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAyC,SAAS,EAAEA,YAAU,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAEtI,OAAO,MAAM,CAAC,KAAK,CAAC;KACvB;IAEO,MAAM,QAAQ,CAAC,KAAa,EAAA;QAChC,MAAM,GAAG,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE1D,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA0B,SAAS,EAAEA,YAAU,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAEpH,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;AAEO,IAAA,MAAM,SAAS,GAAA;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA0C,SAAS,EAAEA,YAAU,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAExI,OAAO,MAAM,CAAC,MAAM,CAAC;KACxB;AAEO,IAAA,MAAM,UAAU,GAAA;AACpB,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAG7D,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;AAElC,QAAA,OAAO,IAAI,CAAC;KACf;IAEO,MAAM,aAAa,CAAC,OAAY,EAAA;QACpC,MAAM,GAAG,GAAG,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAEjD,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAEzD,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;IAEO,MAAM,UAAU,CAAC,OAAY,EAAA;QACjC,MAAM,GAAG,GAAQ,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAEtD,QAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC;AAE/E,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEzD,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;AAEO,IAAA,gBAAgB,CAAC,QAA4E,EAAA;AACjG,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;AAC5G,SAAA;AAED,QAAA,MAAM,eAAe,GAAG,CAAC,IAAS,KAAU;YAExC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;AAEnC,YAAA,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,SAAC,CAAC;QAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;KAChE;AAEO,IAAA,MAAM,UAAU,GAAA;AACpB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAA2C,SAAS,EAAEA,YAAU,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtL,OAAO,MAAM,CAAC,OAAiB,CAAC;KACnC;AACJ;;ACrNM,MAAM,gBAAgB,GAAuD;AAChF,IAAA,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,2BAA2B,EAAE,aAAa,EAAE,2BAA2B,EAAE;AAChI,IAAA,6BAA6B,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,aAAa,EAAE,iCAAiC,EAAE,WAAW,EAAE,mBAAmB,EAAE;CAC/J;;ACNM,MAAM,WAAW,GAAG,CAAI,OAAyB,EAAE,mBAA2B,EAAE,cAAuB,KAAgB;IAC1H,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,KAAI;QAEtC,IAAI,aAAa,GAAG,IAAI,CAAC;AAEzB,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAK;YAC5B,IAAI,CAAC,aAAa,EAAE;gBAChB,OAAO;AACV,aAAA;YACD,aAAa,GAAG,KAAK,CAAC;AACtB,YAAA,MAAM,OAAO,GAAG,cAAc,IAAI,CAAwB,qBAAA,EAAA,mBAAmB,EAAE,CAAC;YAEhF,MAAM,CAAC,OAAO,CAAC,CAAC;SACnB,EAAE,mBAAmB,CAAC,CAAC;AAExB,QAAA,OAAO,EAAE;AACJ,aAAA,IAAI,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,CAAC,aAAa,EAAE;gBAChB,OAAO;AACV,aAAA;YACD,aAAa,GAAG,KAAK,CAAC;YACtB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,CAAC;AACpB,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;YACb,IAAI,CAAC,aAAa,EAAE;gBAChB,OAAO;AACV,aAAA;YACD,aAAa,GAAG,KAAK,CAAC;YACtB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,CAAC;AAClB,SAAC,CAAC,CAAC;AACX,KAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEK,MAAMI,aAAW,GAAG,CAAI,QAAgG,EAAE,mBAA2B,EAAE,cAAuB,KAAgB;IAEjM,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,KAAI;AACtC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAK;AAE5B,YAAA,MAAM,OAAO,GAAG,cAAc,IAAI,CAAwB,qBAAA,EAAA,mBAAmB,EAAE,CAAC;YAEhF,MAAM,CAAC,OAAO,CAAC,CAAC;SACnB,EAAE,mBAAmB,CAAC,CAAC;AAExB,QAAA,MAAM,eAAe,GAAG,IAAI,OAAO,CAAI,QAAQ,CAAC,CAAC;QAEjD,eAAe;AACV,aAAA,IAAI,CAAC,CAAC,MAAM,KAAI;YACb,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,CAAC;AACpB,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;YACb,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,CAAC;AAClB,SAAC,CAAC,CAAC;AACX,KAAC,CAAC,CAAC;AAEP,CAAC;;MC1CY,iBAAiB,CAAA;AAElB,IAAA,iBAAiB,CAAc;IACtB,QAAQ,GAAqBD,yBAAuB,EAAE,CAAC;AAChE,IAAA,oBAAoB,CAAiB;AACrC,IAAA,GAAG,CAAO;AACV,IAAA,MAAM,CAAc;AACpB,IAAA,cAAc,CAAU;IACxB,oBAAoB,GAAuB,EAAE,CAAC;AAC9C,IAAA,EAAE,CAAsC;AACxC,IAAA,MAAM,CAA+B;AACrC,IAAA,gBAAgB,CAAW;AAC3B,IAAA,UAAU,CAAU;AACpB,IAAA,kBAAkB,CAAsB;AAEzC,IAAA,MAAM,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;QAEpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAElE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAEzD,QAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;QAEzC,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAEnC,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAkB,CAAC;AAE/D,QAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC;QAEjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA6B,0BAAA,EAAA,IAAI,CAAC,cAAc,CAAwE,sEAAA,CAAA,CAAC,CAAC;AAE5I,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAExD,MAAM,IAAI,CAAC,oBAAoB,CAAC;AAEhC,QAAA,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAErC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iGAAiG,CAAC,CAAC;AAErH,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAExB,QAAA,QAAiC,CAAC,OAAO,GAAG,GAAG,CAAC;KACpD;IAEM,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAE/B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,OAAO;AACV,SAAA;QAED,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5D,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC9D;IAGM,MAAM,mBAAmB,CAAC,IAAS,EAAA;QACtC,MAAM,IAAI,CAAC,oBAAoB,CAAC;QAEhC,MAAM,aAAa,GAAG,2BAA2B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEnF,QAAA,MAAM,SAAS,GAAGH,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACpB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;QAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;YACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KACjD;AAGO,IAAA,MAAM,IAAI,CAAC,IAAY,EAAE,GAAW,EAAE,OAA2C,EAAA;AACrF,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE5C,MAAM,QAAQ,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAErE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAmC,SAAS,EAAEA,YAAU,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEnJ,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KAC1D;IAEO,IAAI,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC;KACxE;AAEM,IAAA,QAAQ,CAAC,EAAU,EAAA;AACtB,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAE3C,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC;KACpF;IAEO,KAAK,GAAA;QACT,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;SACvD,CAAC;KACL;IAEO,2BAA2B,GAAA;AAC/B,QAAAA,YAAU,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxE,QAAAA,YAAU,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,QAAAA,YAAU,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvE,QAAAA,YAAU,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,QAAAA,YAAU,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpE,QAAAA,YAAU,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAAA,YAAU,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD,QAAAA,YAAU,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,QAAAA,YAAU,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAAA,YAAU,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpE;IAEM,EAAE,GAAA;QACL,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;KACrC;AAEO,IAAA,aAAa,CAAC,QAA8D,EAAA;AAChF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;AACzG,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;KACtD;AAEO,IAAA,eAAe,CAAC,QAA8D,EAAA;AAClF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;AAC3G,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;KACxD;AAEO,IAAA,gBAAgB,CAAC,QAA8D,EAAA;AACnF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;AAC7G,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;KAC1D;AAEO,IAAA,iBAAiB,CAAC,QAA8D,EAAA;AACpF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;AAC9G,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;KAC3D;AAEO,IAAA,MAAM,QAAQ,GAAA;QAClB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4B,SAAS,EAAEA,YAAU,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AAE7I,QAAA,OAAO,YAAY,CAAC;KACvB;AAEO,IAAA,MAAM,oBAAoB,GAAA;QAE9B,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AAE5D,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AAEzC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAGjE,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,EAAE;AAC/C,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAE9E,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;YAEzE,IAAI,CAAC,QAAQ,EAAE;AACX,gBAAA,MAAM,IAAI,KAAK,CAAC,oGAAoG,CAAC,CAAC;AACzH,aAAA;AAED,YAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEvF,YAAA,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC;AAE3B,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChD,SAAA;AAED,QAAA,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO;AAC3C,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,cAAc,CAAC;aACjD,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAC3D,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QAEzF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;KACrD;IAEO,MAAM,sBAAsB,CAAC,SAAyB,EAAA;QAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE7G,IAAI,CAAC,eAAe,EAAE;YAClB,OAAO;AACV,SAAA;QAED,eAAe,CAAC,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEhE,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;QAEnF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;KAC5D;IAEO,MAAM,iBAAiB,CAAC,IAAoB,EAAA;AAChD,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE;YACjF,OAAO;AACV,SAAA;AAED,QAAA,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAEpD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC;KAClE;IAEO,MAAM,mBAAmB,CAAC,IAAoB,EAAA;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE9E,IAAI,CAAC,OAAO,EAAE;YACV,OAAO;AACV,SAAA;QAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE5F,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAEtB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;KACxD;AAEO,IAAA,MAAM,eAAe,GAAA;QAEzB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACpC,YAAA,MAAM,IAAI,KAAK,CAAC,6GAA6G,CAAC,CAAC;AAClI,SAAA;QAGD,OAAO;AACH,YAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC,EAAG,CAAC,EAAE;AACtD,YAAA,MAAM,EAAE;gBACJ,GAAG,EAAE,MAAM,CAAC,SAAS;gBACrB,IAAI,EAAE,MAAM,CAAC,UAAU;gBACvB,KAAK,EAAE,MAAM,CAAC,UAAU;gBACxB,MAAM,EAAE,MAAM,CAAC,WAAW;AAC7B,aAAA;SACJ,CAAC;KACL;AAEO,IAAA,MAAM,cAAc,GAAA;AAExB,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,4GAA4G,CAAC,CAAC;AACjI,SAAA;QAED,OAAO;AACH,YAAA,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE;YACpB,KAAK,EAAE,QAAQ,CAAC,KAAK;SACxB,CAAC;KACL;AAEO,IAAA,MAAM,YAAY,GAAA;AAEtB,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,0GAA0G,CAAC,CAAC;AAC/H,SAAA;QAED,OAAO;AACH,YAAA,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE;AACpB,YAAA,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;SAC5B,CAAC;KACL;IAEO,MAAM,gBAAgB,CAAC,MAA8B,EAAA;AAEzD,QAAA,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,GAAG,MAAM,CAAC,GAAG;AACzD,YAAA,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;AAE3C,QAAA,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,IAAI;AAC5D,YAAA,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;AAE5C,QAAA,MAAM,YAAY,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM;AAClE,YAAA,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;AAE7C,QAAA,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,GAAG,MAAM,CAAC,KAAK;AAC/D,YAAA,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;AAE5C,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACnE,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEzE,QAAA,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAClC,QAAA,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;KAC3C;IAEO,MAAM,cAAc,CAAC,MAAyB,EAAA;AAClD,QAAA,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;KACjC;AAEO,IAAA,MAAM,uBAAuB,GAAA;QAEjC,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;YAC3F,OAAO;AACV,SAAA;QAED,IAAI;AACA,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA6C,SAAS,EAAE,gBAAgB,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;AAChJ,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sHAAsH,CAAC,CAAC;YACzI,OAAO;AACV,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAGrC,QAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,EAAE;AAEX,YAAA,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACzC,SAAA;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC/B;IAEO,iBAAiB,GAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAErC,QAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;KACtC;AAEO,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AAEvC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;AAE/F,QAAA,IAAI,WAAW,EAAE;YACb,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC3C,SAAA;AAED,QAAA,OAAOI,aAAW,CAAqC,CAAC,OAAO,KAAI;YAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,KAAI;AACnD,gBAAA,IAAI,WAAW,CAAC,EAAE,KAAK,QAAQ,EAAE;AAC7B,oBAAA,WAAW,EAAE,CAAC;oBACd,OAAO,CAAC,WAAW,CAAC,CAAC;AACxB,iBAAA;AACL,aAAC,CAAC,CAAC;AACP,SAAC,EAAE,KAAK,EAAE,yBAAyB,QAAQ,CAAA,gBAAA,CAAkB,CAAC,CAAC;KAClE;IAEO,MAAM,mBAAmB,CAAC,QAAiB,EAAA;AAE/C,QAAA,MAAM,SAAS,GAAmB;YAC9B,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAU,OAAA,EAAA,IAAI,CAAC,UAAU,CAAE,CAAA;YACpD,QAAQ;SACX,CAAC;QAEF,IAAI,IAAI,CAAC,EAAE,EAAE;AACT,YAAA,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,QAAQ,CAAC;AAChC,SAAA;AAED,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAuB,SAAS,EAAEJ,YAAU,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;KAC9F;IAEO,oBAAoB,GAAA;QAExB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3D,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACtE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzD,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC3D;AAEO,IAAA,MAAM,gBAAgB,GAAA;AAE1B,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,8GAA8G,CAAC,CAAC;AACnI,SAAA;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC;QAE7C,OAAO;AACH,YAAA,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;SAClC,CAAC;KACL;AACJ;;AC/ZM,MAAM,0BAA0B,GAAG,0BAA0B,CAAC;AAE9D,MAAM,yBAAyB,GAAG,yBAAyB,CAAC;AAE5D,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAEvD,MAAM,wBAAwB,GAAG,6BAA6B;;MCExD,UAAU,CAAA;AAMU,IAAA,QAAA,CAAA;AAA8C,IAAA,eAAA,CAAA;IAL1D,uBAAuB,GAAG,KAAK,CAAC;AACzC,IAAA,WAAW,CAA0C;AACrD,IAAA,GAAG,CAAkC;AACrC,IAAA,OAAO,CAAW;IAE1B,WAA6B,CAAA,QAA2B,EAAmB,eAAuB,EAAA;QAArE,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAAmB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAQ;KAAI;AAEtG,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;KACjC;AAED,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAClD;AAEM,IAAA,MAAM,IAAI,GAAA;AACb,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;KACjE;IAEM,MAAM,KAAK,CAAC,WAAmD,EAAA;AAClE,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,MAAM,OAAO,CAAC,GAAG,CAAC;AACd,YAAA,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC;AAChD,YAAA,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC;AAClD,SAAA,CAAC,CAAC;AAGH,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;QAEtC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,yBAAyB,EAAE,QAAQ,GAAG,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,SAAS,CAAC;AACjI,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5I,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AAEf,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KAClE;AAEM,IAAA,kBAAkB,CAAC,QAAgB,EAAA;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QAElG,OAAO;YACH,WAAW,EAAE,MAAM,EAAE,WAAW;YAChC,eAAe,EAAE,MAAM,EAAE,eAAe;YACxC,MAAM,EAAE,MAAM,EAAE,MAAM;YACtB,QAAQ,EAAE,MAAM,EAAE,QAAQ;YAC1B,QAAQ,EAAE,MAAM,EAAE,QAAQ;SAC7B,CAAC;KACL;IAGM,MAAM,IAAI,CAAoB,MAAkB,EAAE,SAA0B,EAAE,aAAuB,EAAE,OAAyC,EAAE,UAAgD,EAAA;QAErM,IAAI,SAAS,CAAC,WAAW,EAAE;YACvB,IAAI;AACA,gBAAA,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACzD,aAAA;AAAC,YAAA,OAAO,KAAU,EAAE;gBACjB,MAAM,IAAI,KAAK,CAAC,CAAA,oDAAA,EAAuD,KAAK,CAAC,OAAO,CAAoB,iBAAA,EAAA,SAAS,CAAC,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC;AACvK,aAAA;AACJ,SAAA;AAED,QAAA,MAAM,kBAAkB,GAAG,UAAU,EAAE,qBAAqB;AACxD,YAAA,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,WAAW;AACnE,YAAA,IAAI,CAAC;QAET,IAAI,CAAC,kBAAkB,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,CAA8B,2BAAA,EAAA,SAAS,CAAC,IAAI,CAAgB,aAAA,EAAA,MAAM,CAA2E,yEAAA,CAAA,CAAC,CAAC;AAClK,SAAA;QAED,IAAI;AACA,YAAA,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YAE9F,IAAI,SAAS,CAAC,aAAa,EAAE;AACzB,gBAAA,SAAS,CAAC,aAAa,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;AAC7D,aAAA;AAED,YAAA,OAAO,eAAe,CAAC;AAE1B,SAAA;AAAC,QAAA,OAAO,KAAU,EAAE;YACjB,IAAI,KAAK,CAAC,IAAI,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,CAAA,oDAAA,EAAuD,KAAK,CAAC,OAAO,CAAoB,iBAAA,EAAA,SAAS,CAAC,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC;AACvK,aAAA;AACD,YAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAClC,SAAA;KACJ;AAEM,IAAA,MAAM,wBAAwB,GAAA;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,KAAK,wBAAwB,CAAC,CAAC;QAEhH,IAAI,CAAC,YAAY,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,uKAAuK,CAAC,CAAC;AAC5L,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,wBAAwB,EAAE,IAAI,CAAC,eAAe,GAAG,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,SAAS,CAAC,CAAC;KACvJ;AAEO,IAAA,MAAM,uBAAuB,CAAC,MAAkB,EAAE,SAA0B,EAAA;QAChF,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAA6C,MAAM,EAAE,gBAAgB,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAEnJ,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACjC,SAAA;KACJ;AAEO,IAAA,eAAe,CAAC,IAAY,EAAA;AAChC,QAAA,OAAOI,aAAW,CAAO,CAAC,OAAO,KAAI;AAEjC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAC9D,gBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;AAEvC,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe;oBACpC,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe,CAAC;AAC9E,oBAAA,IAAI,CAAC;gBAET,OAAO,SAAS,IAAI,WAAW,CAAC;AACpC,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,SAAS,EAAE;gBACX,OAAO,OAAO,EAAE,CAAC;AACpB,aAAA;AAED,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,KAAI;AAC3D,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAE3B,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe;AACpC,oBAAA,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe;AACxC,oBAAA,IAAI,CAAC;AAET,gBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,WAAW,EAAE;AACrC,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,OAAO,EAAE,CAAC;AACb,iBAAA;AACL,aAAC,CAAC,CAAC;SAEN,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAA4E,yEAAA,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;KACxH;AAGO,IAAA,qBAAqB,CAAC,IAAS,EAAE,OAA8B,EAAE,KAAqD,EAAA;QAC1H,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAEvD,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE;AAClB,YAAA,IAAI,KAAK,EAAE;AACP,gBAAA,KAAK,CAAC,CAAA,wEAAA,EAA2E,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC;AAC1H,aAAA;YACD,OAAO;AACV,SAAA;AAED,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AAEnC,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;aACnB,mBAAmB,CAAC,IAAI,CAAC;AACzB,aAAA,IAAI,CAAC,CAAC,cAAuB,KAAI;AAC9B,YAAA,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,cAAc,CAAC,CAAC;AAC3B,aAAA;AACL,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,GAAgC,KAAI;AACxC,YAAA,IAAI,KAAK,EAAE;gBACP,KAAK,CAAC,GAAG,CAAC,CAAC;AACd,aAAA;AACD,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,SAAC,CAAC,CAAC;KACV;IAGO,MAAM,eAAe,CAAC,MAAc,EAAE,SAA0B,EAAE,IAAS,EAAE,OAAyC,EAAA;AAE1H,QAAA,MAAM,WAAW,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;AAGhE,QAAA,IAAI,gBAA6D,CAAC;AAElE,QAAA,MAAM,gBAAgB,GAAG,CAAA,4DAAA,EAA+D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,YAAA,EAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAE9J,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;QAEtC,IAAI;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,gBAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,aAAA;AAED,YAAA,gBAAgB,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,0BAA0B,EAAE,WAAW,EAAE,QAAQ,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC;YAEnK,IAAI,CAAC,gBAAgB,EAAE;AACnB,gBAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;AACnF,aAAA;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;AACvG,gBAAA,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AAC9F,aAAA;AAEJ,SAAA;AAAC,QAAA,OAAO,KAAU,EAAE;YACjB,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;gBAEtD,MAAM,sBAAsB,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,CAAA,EAAG,gBAAgB,CAAsB,mBAAA,EAAA,sBAAsB,CAAE,CAAA,CAAC,CAAC;AAEtF,aAAA;YAED,MAAM,IAAI,KAAK,CAAC,CAAG,EAAA,gBAAgB,CAAsB,mBAAA,EAAA,KAAK,CAAC,OAAO,CAAE,CAAA,CAAC,CAAC;AAC7E,SAAA;QAED,OAAO,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;KACzD;AACJ;;ACvNM,MAAMJ,YAAU,GAA2D;AAC9E,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,sBAAsB,EAAE;IACtG,uBAAuB,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,8BAA8B,EAAE;IACzG,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE;IAC9E,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE;AAC9E,IAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,6BAA6B,EAAE,aAAa,EAAE,mBAAmB,EAAE;IAC9H,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,wBAAwB,EAAE;AAC7E,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;IAC/D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,0BAA0B,EAAE;AACrE,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;CAC3B;;MCDY,oBAAoB,CAAA;AACtB,IAAA,EAAE,CAAmD;IAEpD,yBAAyB,GAAG,KAAK,CAAC;IAClC,kBAAkB,GAAG,EAAE,CAAC;IACf,QAAQ,GAAqBG,yBAAuB,EAAE,CAAC;AAChE,IAAA,GAAG,CAAO;AACV,IAAA,MAAM,CAAc;AACpB,IAAA,cAAc,CAAU;IACxB,YAAY,GAA8C,EAAE,CAAC;IAC7D,SAAS,GAA2C,EAAE,CAAC;AACvD,IAAA,oBAAoB,CAAiB;AACrC,IAAA,MAAM,CAA+B;AACrC,IAAA,kBAAkB,CAAsB;AACxC,IAAA,iBAAiB,CAA4B;IAE9C,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;AAEM,IAAA,MAAM,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;QACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;AAEpE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;QAEzC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACf,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzB,QAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC;AACjD,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;AAE/C,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAExD,MAAM,IAAI,CAAC,oBAAoB,CAAC;AAEhC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oGAAoG,CAAC,CAAC;AAExH,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAExB,QAAA,QAAiC,CAAC,UAAU,GAAG,GAAG,CAAC;KACvD;IAEM,MAAM,mBAAmB,CAAC,IAAS,EAAA;QACtC,MAAM,IAAI,CAAC,oBAAoB,CAAC;QAEhC,MAAM,aAAa,GAAG,+BAA+B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEvF,QAAA,MAAM,SAAS,GAAGH,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACpB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;QAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;YACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KACjD;AAEM,IAAA,iBAAiB,CAAC,QAAiE,EAAA;AACtF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KAC1E;AAEM,IAAA,iBAAiB,CAAC,QAAiE,EAAA;AACtF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;KAC1D;AAEM,IAAA,MAAM,gBAAgB,CAAC,OAAe,EAAE,OAAgB,EAAE,OAA6D,EAAA;QAC1H,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;AAErD,QAAA,IAAI,OAAO,EAAE,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC7D,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,OAAO,CAAC,SAAS,CAAkB,gBAAA,CAAA,CAAC,CAAC;AAClF,SAAA;AAKD,QAAA,MAAM,YAAY,GAA2B;AACzC,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,eAAe,EAAE,OAAO,EAAE,eAAe,IAAI,IAAI;YACjD,OAAO;YACP,GAAG,EAAE,OAAO,EAAE,GAAG;YACjB,IAAI,EAAE,OAAO,EAAE,IAAI;YACnB,KAAK,EAAE,OAAO,EAAE,KAAK;YACrB,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,UAAU,EAAE,OAAO,EAAE,UAAU;YAC/B,iBAAiB,EAAE,OAAO,EAAE,iBAAiB;YAC7C,EAAE,EAAG,OAAe,EAAE,OAAO;YAC7B,cAAc,EAAG,OAAe,EAAE,QAAQ;YAC1C,iBAAiB,EAAG,OAAe,EAAE,iBAAiB;YACtD,SAAS,EAAE,OAAO,EAAE,SAAS;SAChC,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAuC,YAAY,EAAEA,YAAU,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;QAEzI,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,eAAe,CAA4C,CAAC;QAE5H,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;KAClD;AAEM,IAAA,cAAc,CAAC,IAAY,EAAA;QAC9B,MAAM,YAAY,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAElE,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,YAAY,CAA4C,CAAC;KAChH;IAEM,YAAY,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;KACjC;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAAoC;YACzC,UAAU,EAAE,IAAI,CAAC,EAAqD;AACtE,YAAA,QAAQ,EAAE;gBACN,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,aAAA;YACD,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3C,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YACvC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;SACvD,CAAC;AAEF,QAAA,OAAO,GAAG,CAAC;KACd;IAEO,sBAAsB,GAAA;AAC1B,QAAAA,YAAU,CAAC,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3F,QAAAA,YAAU,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClF,QAAAA,YAAU,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrF;IAEO,MAAM,6BAA6B,CAAC,IAA6B,EAAA;AACrE,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC7E;AAEO,IAAA,UAAU,CAAC,QAA+D,EAAA;AAC9E,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAC7E,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KAC9E;AAEO,IAAA,YAAY,CAAC,QAA+D,EAAA;AAChF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC/E,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;KAC7D;AAEO,IAAA,YAAY,CAAC,QAA+D,EAAA;AAChF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC/E,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;KAC7D;IAEO,MAAM,6BAA6B,CAAC,OAA4B,EAAA;AAEpE,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5D,OAAO;AACV,SAAA;AAED,QAAA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAEzD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;QAE9F,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AAEjC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;KACnD;IAEO,MAAM,+BAA+B,CAAC,OAA4B,EAAA;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAEjF,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,OAAO;AACV,SAAA;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEtC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;KACrD;IAEO,MAAM,+BAA+B,CAAC,OAA4B,EAAA;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAEvE,IAAI,CAAC,GAAG,EAAE;AACN,YAAA,OAAO,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;AACtD,SAAA;AAED,QAAA,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAe,CAAC;AACpC,QAAA,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,OAAiB,CAAC;AACxC,QAAA,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAc,CAAC;AAClC,QAAA,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,OAAiB,CAAC;AACxC,QAAA,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAE5C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;KACrD;IAEO,MAAM,4BAA4B,CAAC,YAA0B,EAAA;AACjE,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,EAAE;YACpE,OAAO;AACV,SAAA;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,eAAe,CAAC,CAAC;QAE/F,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,CAAA,qBAAA,EAAwB,YAAY,CAAC,EAAE,CAAiE,+DAAA,CAAA,CAAC,CAAC;AAC7H,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,QAAA,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;KACvD;IAEO,MAAM,4BAA4B,CAAC,YAA0B,EAAA;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;AAEtE,QAAA,IAAI,QAAQ,EAAE;YACV,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;YAChF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACrC,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/G,QAAA,IAAI,WAAW,EAAE;YACb,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;YAC3F,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAChD,SAAA;QAED,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;AACV,SAAA;QAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;KACvD;AAEO,IAAA,MAAM,MAAM,CAAC,WAAqD,EAAE,OAA4B,SAAS,EAAA;AAC7G,QAAA,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACzE,SAAA;AAED,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,KAAK,EAAE;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,SAAA;QAED,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAwB,CAAC,KAAK,EAAE,UAAU,KAAI;YAEhF,MAAM,YAAY,GAAG,gCAAgC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAEtE,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE;gBAClB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC5F,aAAA;AAAM,iBAAA;AACH,gBAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;SAChB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;AAE/B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AAE5G,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4B,YAAY,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,uBAAuB,EAAE,eAAe,EAAE,CAAC,CAAC;QAE3K,OAAO;AACH,YAAA,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC;YACtD,MAAM,EAAE,WAAW,CAAC,OAAO;SAC9B,CAAC;KACL;IAEO,MAAM,MAAM,CAAC,IAAY,EAAA;AAC7B,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAwB,YAAY,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;KACzJ;AAEO,IAAA,MAAM,KAAK,GAAA;QACf,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAa,YAAY,EAAEA,YAAU,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;KAC9I;AAEO,IAAA,MAAM,MAAM,GAAA;QAEhB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4B,YAAY,EAAEA,YAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAE5K,OAAO,QAAQ,CAAC,WAAW,CAAC;KAC/B;IAEM,eAAe,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KACpC;IAEO,MAAM,kBAAkB,CAAC,gBAAwB,EAAA;QACrD,IAAI;YACA,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACxD,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;YACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAwB,qBAAA,EAAA,IAAI,CAAC,EAAE,CAAA,wBAAA,EAA2B,gBAAgB,CAAqB,kBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AAC5I,SAAA;KACJ;AAEO,IAAA,MAAM,oBAAoB,GAAA;AAC9B,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA+B,YAAY,EAAEA,YAAU,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;AAEvM,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;AAE1F,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAE/G,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAyC,CAAC,cAAc,EAAE,GAAG,KAAI;YAEtG,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;AAEtC,YAAA,OAAO,cAAc,CAAC;SACzB,EAAE,EAAE,CAAC,CAAC;AAEP,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAEhC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,6CAAA,EAAgD,IAAI,CAAC,EAAE,GAAG,OAAO,GAAG,GAAG,CAAA,eAAA,CAAiB,CAAC,CAAC;AAE5G,QAAA,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AACjF,QAAA,MAAM,OAAO,GAAG,mBAAmB,GAAG,mBAAmB,CAAC,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEhG,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAA;KACJ;IAEO,cAAc,GAAA;AAClB,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE;YACjC,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;AAE5F,YAAA,IAAI,aAAa,EAAE;AACf,gBAAA,OAAO,aAAa,CAAC;AACxB,aAAA;AACJ,SAAA;AAGD,QAAA,OAAO,SAAS,CAAC;KACpB;AACJ;;MCpYY,aAAa,CAAA;AAIO,IAAA,IAAA,CAAA;AAAqC,IAAA,MAAA,CAAA;AAAqC,IAAA,WAAA,CAAA;AAH/F,IAAA,EAAE,CAAwC;AACjC,IAAA,QAAQ,CAAS;AAElC,IAAA,WAAA,CAA6B,IAAkB,EAAmB,MAAkB,EAAmB,WAAoD,EAAA;QAA9H,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAc;QAAmB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;QAAmB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAyC;QACvJ,IAAI,CAAC,QAAQ,GAAG,CAAiB,cAAA,EAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA,CAAE,CAAC;KACnD;IAEM,KAAK,GAAA;AACR,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEzD,QAAA,MAAM,GAAG,GAAyC;AAC9C,YAAA,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YAChB,GAAG;YACH,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;SACzC,CAAC;QAEF,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;AAGO,IAAA,MAAM,UAAU,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpD;AAEO,IAAA,MAAM,IAAI,GAAA;QACd,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA0B,YAAY,EAAEA,YAAU,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;KAChH;AACJ;;MC7BY,gBAAgB,CAAA;AAIJ,IAAA,IAAA,CAAA;AACA,IAAA,SAAA,CAAA;AACA,IAAA,UAAA,CAAA;AALb,IAAA,EAAE,CAA2C;AAErD,IAAA,WAAA,CACqB,IAAyB,EACzB,SAAiD,EACjD,UAAgC,EAAA;QAFhC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAqB;QACzB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAwC;QACjD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAsB;KAChD;IAEE,KAAK,GAAA;AACR,QAAA,MAAM,GAAG,GAA4C;AACjD,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AACpB,YAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAe;AAChC,YAAA,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAiB;AACpC,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAc;AAC9B,YAAA,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAiB;AACpC,YAAA,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;YACxC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;SACvD,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;QAEd,OAAO,IAAI,CAAC,EAAE,CAAC;KAClB;AAEO,IAAA,iBAAiB,CAAC,QAAiE,EAAA;AAEvF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,SAAA;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,QAAQ,KAAI;YAClD,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC9C,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,iBAAiB,CAAC,QAAiE,EAAA;AACvF,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,SAAA;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,QAAQ,KAAI;YAClD,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAC9C,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,MAAM,KAAK,CAAC,OAAa,EAAE,OAA6D,EAAA;QAC5F,MAAM,eAAe,GAAG,8BAA8B,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACjF,MAAM,eAAe,GAAG,8BAA8B,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAEjF,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;KAC7F;AACJ;;ACzDM,MAAMA,YAAU,GAAwD;IAC3E,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE;IACpE,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE;IACxE,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE;IACxE,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE;AACxE,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE,aAAa,EAAE,0BAA0B,EAAE;AACvG,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE,aAAa,EAAE,gCAAgC,EAAE;AACpH,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE,aAAa,EAAE,2BAA2B,EAAE;IAC/G,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACnE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;AAClE,IAAA,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE,aAAa,EAAE,mBAAmB,EAAE;AACtG,IAAA,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,aAAa,EAAE,yBAAyB,EAAE;IACtG,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,0BAA0B,EAAE;AACrE,IAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,gCAAgC,EAAE,aAAa,EAAE,gCAAgC,EAAE;IAChJ,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,aAAa,EAAE,4BAA4B,EAAE;IAC3G,uBAAuB,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,aAAa,EAAE,+BAA+B,EAAE;IAC5G,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,aAAa,EAAE,+BAA+B,EAAE;IACtG,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,0BAA0B,EAAE;IACzF,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,6BAA6B,EAAE;AAC1F,IAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE;IAClD,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,iCAAiC,EAAE;CAC7F;;MCfY,iBAAiB,CAAA;IACT,6BAA6B,GAAG,MAAM,CAAC;IACvC,QAAQ,GAAqBG,yBAAuB,EAAE,CAAC;AAChE,IAAA,MAAM,CAAc;AACpB,IAAA,MAAM,CAA+B;AACrC,IAAA,iBAAiB,CAAqB;AACtC,IAAA,uBAAuB,CAAwG;IAEhI,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACzB;AAEM,IAAA,MAAM,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;QACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAElE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAEzD,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;QAE/C,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAEzB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yFAAyF,CAAC,CAAC;AAE5G,QAAA,QAAiC,CAAC,OAAO,GAAG,GAAG,CAAC;KACpD;IAEM,MAAM,mBAAmB,CAAC,IAAS,EAAA;QACtC,MAAM,aAAa,GAAG,4BAA4B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEpF,QAAA,MAAM,SAAS,GAAGH,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACpB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;QAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;YACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KACjD;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAAiC;YACtC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,eAAe,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YACzD,6BAA6B,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;YACvE,4BAA4B,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YACrE,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YACxD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YACtD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;SACjD,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC7B;IAEO,sBAAsB,GAAA;AAC1B,QAAAA,YAAU,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,QAAAA,YAAU,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,QAAAA,YAAU,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,QAAAA,YAAU,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,QAAAA,YAAU,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5E;AAEO,IAAA,MAAM,GAAG,CAAC,IAAY,EAAE,IAAyC,EAAA;AACrE,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAA,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiD,SAAS,EAAEA,YAAU,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjI,OAAO,MAAM,CAAC,MAAM,CAAC;KACxB;IAEO,MAAM,MAAM,CAAC,IAAyC,EAAA;AAC1D,QAAA,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAEzC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiD,SAAS,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9H,OAAO,MAAM,CAAC,SAAS,CAAC;KAC3B;IAEO,MAAM,MAAM,CAAC,IAAyC,EAAA;AAC1D,QAAA,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAEzC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4C,SAAS,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzH,OAAO,MAAM,CAAC,OAAO,CAAC;KACzB;AAEO,IAAA,MAAM,MAAM,CAAC,OAA0C,EAAE,OAA4B,SAAS,EAAA;AAClG,QAAA,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACzB,YAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE;AACvB,YAAA,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;AACnF,SAAA;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAoB,CAAC,KAAK,EAAE,MAAM,KAAI;YAEpE,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEnD,IAAI,YAAY,CAAC,EAAE,EAAE;AACjB,gBAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAuB,oBAAA,EAAA,MAAM,CAAC,IAAI,CAAA,qCAAA,EAAwC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AACpI,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;AAEjB,SAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAElB,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9H,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4B,SAAS,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KACvH;IAEO,MAAM,IAAI,CAAC,MAAiD,EAAA;AAChE,QAAA,uBAAuB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEjD,QAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAuC,SAAS,EAAEA,YAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAExH,OAAO,UAAU,CAAC,MAAM,CAAC;KAC5B;IAEO,MAAM,OAAO,CAAC,OAAgD,EAAA;AAClE,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAGhD,QAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,6BAA6B,CAAC;QAErG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4B,SAAS,EAAEA,YAAU,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,CAAC,CAAC;KACzJ;AAEO,IAAA,MAAM,MAAM,CAAC,IAAyC,EAAE,IAAY,EAAA;AACxE,QAAA,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAE7C,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA2B,SAAS,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KAClG;IAEO,MAAM,iBAAiB,CAAC,MAAiC,EAAA;QAC7D,MAAM,QAAQ,GAA8B,EAAE,CAAC;QAE/C,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI;gBACA,MAAM,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAEnE,gBAAA,QAAQ,CAAC,aAAa,GAAG,qBAAqB,EAAE,aAAa,CAAC;AACjE,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAA+E,4EAAA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AAC5H,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,QAAQ,CAAC;KACnB;AAEO,IAAA,MAAM,wBAAwB,GAAA;AAClC,QAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA8B,SAAS,EAAEA,YAAU,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;AAErI,QAAA,OAAO,aAAa,CAAC;KACxB;AAEO,IAAA,MAAM,uBAAuB,GAAA;QAEjC,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,EAAE,KAAK,CAAC;QAEnE,IAAI,YAAY,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;AACvC,SAAA;QAED,IAAI,YAAY,KAAK,SAAS,EAAE;AAC5B,YAAA,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACtC,SAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC;QAE7C,MAAM,eAAe,GAAI,MAAc,CAAC,UAAU,IAAK,MAAc,CAAC,SAAS,CAAC;AAEhF,QAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,eAAe,CAAC;QAE1D,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,iBAAiB,EAAE;AACpD,YAAA,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;AACjH,SAAA;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiC,SAAS,EAAEA,YAAU,CAAC,uBAAuB,EAAE,SAAS,EAAE,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,CAAC;AAE5K,QAAA,OAAO,EAAE,iBAAiB,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC;KAC3D;AAEO,IAAA,MAAM,oBAAoB,GAAA;AAC9B,QAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiC,SAAS,EAAEA,YAAU,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;AAEpI,QAAA,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC;KACnD;AAEO,IAAA,MAAM,gBAAgB,GAAA;QAC1B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAmC,SAAS,EAAEA,YAAU,CAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9K,OAAO,aAAa,CAAC,MAAM,CAAC;KAC/B;IAEO,MAAM,gBAAgB,CAAC,IAAY,EAAA;AACvC,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA+B,SAAS,EAAEA,YAAU,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KACtJ;AAEO,IAAA,MAAM,kBAAkB,GAAA;QAC5B,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAa,SAAS,EAAEA,YAAU,CAAC,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KACvI;AAEO,IAAA,MAAM,MAAM,CAAC,MAAuC,EAAE,OAAe,EAAA;AACzE,QAAA,iBAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC3C,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAEhD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4D,SAAS,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAEhM,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,MAAM,cAAc,CAAC,MAAuC,EAAA;AAChE,QAAA,iBAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE3C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAmC,SAAS,EAAEA,YAAU,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1J;AAEO,IAAA,OAAO,CAAC,QAA2D,EAAA;AAEvE,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAO,GAAC,CAAC,CAAC;AACvG,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAO,GAAC,CAAC,CAAC;AAE1G,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,YAAU,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACnE;AAEO,IAAA,SAAS,CAAC,QAA2D,EAAA;AACzE,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,YAAU,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACrE;AAEO,IAAA,SAAS,CAAC,QAA2D,EAAA;AACzE,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,YAAU,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACrE;AAEO,IAAA,SAAS,CAAC,QAA2D,EAAA;AACzE,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;AACtG,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,YAAU,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KACrE;AAEO,IAAA,wBAAwB,CAAC,QAA8G,EAAA;AAC3I,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAC;AAC3H,SAAA;QAED,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,sKAAsK,CAAC,CAAC;AAC3L,SAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC;AAExC,QAAA,OAAO,MAAK;YACR,OAAO,IAAI,CAAC,uBAAuB,CAAC;AACxC,SAAC,CAAC;KACL;IAEO,MAAM,aAAa,CAAC,MAAuC,EAAA;AAC/D,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAU,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC9D;IAEO,MAAM,eAAe,CAAC,MAAuC,EAAA;AACjE,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAU,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAChE;IAEO,MAAM,eAAe,CAAC,MAAuC,EAAA;AACjE,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAU,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAChE;IAEO,MAAM,eAAe,CAAC,MAAuC,EAAA;AACjE,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAU,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAChE;AACJ;;ACpTM,MAAMA,YAAU,GAA8D;AACjF,IAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,wBAAwB,EAAE,aAAa,EAAC,8BAA8B,EAAE;IACrI,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,8BAA8B,EAAE;IAC/F,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,+BAA+B,EAAE;IAC5F,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,+BAA+B,EAAE;IAC9F,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,aAAa,EAAE,4BAA4B,EAAE;IACrF,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,2BAA2B,EAAE;IAClE,kBAAkB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC9F,kBAAkB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,+BAA+B,EAAE;AAChG,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AACxB,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AACxB,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;AAC9B,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;IAC9B,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,yCAAyC,EAAE;IACxF,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,+CAA+C,EAAE;IAC9G,oBAAoB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,aAAa,EAAE,+CAA+C,EAAE;IACtH,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,kCAAkC,EAAE;IAC/E,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,aAAa,EAAE,qCAAqC,EAAE;IACtG,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,kCAAkC,EAAE;CAC1F;;AC7BM,MAAMK,aAAW;AACxB,EAAE;;ACmBK,IAAIC,QAAM,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK;AACnC,EAAE,IAAI,EAAE,GAAG,GAAE;AACb,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAC;AAC1D,EAAE,OAAO,IAAI,EAAE,EAAE;AACjB,IAAI,EAAE,IAAIC,aAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAC;AAC7C,GAAG;AACH,EAAE,OAAO,EAAE;AACX;;MCZa,uBAAuB,CAAA;IACf,QAAQ,GAAqBJ,yBAAuB,EAAE,CAAC;AAChE,IAAA,MAAM,CAA+B;AACrC,IAAA,MAAM,CAAc;AACpB,IAAA,qBAAqB,CAA2C;IAChE,aAAa,GAAqE,EAAE,CAAC;AACrF,IAAA,QAAQ,CAAqB;AAC7B,IAAA,qBAAqB,CAAoH;IAE1I,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACzB;AAEM,IAAA,MAAM,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;QACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;AAExE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAE/D,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;AAEtD,QAAA,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC,iBAAiB,CAAC;AAEnD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAEzB,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAE5B,QAAA,QAAiC,CAAC,aAAa,GAAG,GAAG,CAAC;AAEvD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAChD;IAEM,MAAM,mBAAmB,CAAC,IAAS,EAAA;QACtC,MAAM,aAAa,GAAG,kCAAkC,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAE1F,QAAA,MAAM,SAAS,GAAGH,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACpB,OAAO;AACV,SAAA;AAGD,QAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;QAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;YACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KACjD;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAAuC;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAClD,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9D,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1D,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;SACjD,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC7B;AAEO,IAAA,MAAM,aAAa,GAAA;AAEvB,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA8B,eAAe,EAAEA,YAAU,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAE9H,OAAO,WAAW,CAAC,UAAU,CAAC;KACjC;AAEO,IAAA,MAAM,iBAAiB,GAAA;AAE3B,QAAA,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAgC,eAAe,EAAEA,YAAU,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;QAEzI,OAAO,gBAAgB,CAAC,iBAAiB,CAAC;KAC7C;IAEO,MAAM,KAAK,CAAC,OAAoD,EAAA;QACpE,MAAM,QAAQ,GAAG,gCAAgC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAE5E,QAAA,QAAQ,CAAC,SAAS,GAAG,OAAO,QAAQ,CAAC,SAAS,KAAK,SAAS,GAAG,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;AACzF,QAAA,QAAQ,CAAC,WAAW,GAAG,OAAO,QAAQ,CAAC,WAAW,KAAK,SAAS,GAAG,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;AAE/F,QAAA,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzD,IAAI,CAAC,iBAAiB,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;AAC1G,SAAA;AAED,QAAA,MAAM,EAAE,GAAGM,QAAM,CAAC,EAAE,CAAC,CAAC;QAEtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA6C,eAAe,EAAEN,YAAU,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAExJ,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE1E,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC;AAEtC,QAAA,OAAO,YAAY,CAAC;KACvB;AAEO,IAAA,MAAM,IAAI,GAAA;QACd,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA6B,eAAe,EAAEA,YAAU,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnK,OAAO,cAAc,CAAC,aAAa,CAAC;KACvC;AAEO,IAAA,QAAQ,CAAC,QAAiF,EAAA;AAC9F,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACnE,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;KAC7D;AAEO,IAAA,QAAQ,CAAC,QAA0D,EAAA;AACvE,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACnE,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC;KAC7D;AAEO,IAAA,MAAM,KAAK,CAAC,EAAU,EAAE,MAAe,EAAA;AAC3C,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAE3C,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,qBAAqB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClD,SAAA;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAgC,eAAe,EAAEA,YAAU,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KACxJ;IAEO,MAAM,KAAK,CAAC,EAAU,EAAA;AAC1B,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAE3C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiC,eAAe,EAAEA,YAAU,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KACjJ;AAEO,IAAA,MAAM,QAAQ,GAAA;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAa,eAAe,EAAEA,YAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KACnI;AAEO,IAAA,MAAM,QAAQ,GAAA;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAa,eAAe,EAAEA,YAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KACnI;IAEO,MAAM,SAAS,CAAC,MAAoD,EAAA;QACxE,MAAM,cAAc,GAAG,iCAAiC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAElF,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA2C,eAAe,EAAEA,YAAU,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1L;AAEO,IAAA,MAAM,gBAAgB,GAAA;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiD,eAAe,EAAEA,YAAU,CAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7L,OAAO,QAAQ,CAAC,aAAa,CAAC;KACjC;AAEO,IAAA,MAAM,SAAS,GAAA;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiD,eAAe,EAAEA,YAAU,CAAC,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAE7L,QAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC;KAC9C;IAEO,MAAM,SAAS,CAAC,MAAyD,EAAA;QAC7E,MAAM,cAAc,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE1E,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA2C,eAAe,EAAEA,YAAU,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAEzM,QAAA,OAAO,cAAc,CAAC;KACzB;AAEO,IAAA,MAAM,QAAQ,CAAC,EAAU,EAAE,KAA2C,EAAA;AAC1E,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC3C,QAAA,wBAAwB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEjD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAoC,eAAe,EAAEA,YAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KAC9J;AAEO,IAAA,sBAAsB,CAAC,QAAwE,EAAA;AACnG,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAC;AAClH,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,8BAA8B,EAAE,QAAQ,CAAC,CAAC;KACtE;AAEO,IAAA,oBAAoB,CAAC,QAA4C,EAAA;AACrE,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,oGAAoG,CAAC,CAAC;AACzH,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,oCAAoC,EAAE,QAAQ,CAAC,CAAC;KAC5E;AAEO,IAAA,cAAc,CAAC,QAA8F,EAAA;AACjH,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;AACnH,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAC;KACpE;IAEO,qBAAqB,GAAA;AACzB,QAAAA,YAAU,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7E,QAAAA,YAAU,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/E,QAAAA,YAAU,CAAC,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,QAAAA,YAAU,CAAC,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,QAAAA,YAAU,CAAC,oBAAoB,CAAC,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrF,QAAAA,YAAU,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChF,QAAAA,YAAU,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnF;IAEO,MAAM,0BAA0B,CAAC,IAA8C,EAAA;QACnF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,8BAA8B,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KAC7E;IAEO,MAAM,wBAAwB,CAAC,IAAoC,EAAA;QACvE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAC;KACrE;IAEO,MAAM,8BAA8B,CAAC,IAAiC,EAAA;AAC1E,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAClF;IAEO,MAAM,sBAAsB,CAAC,IAA8B,EAAA;AAE/D,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACV,OAAO;AACV,SAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjD,QAAA,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE;YACrC,YAAY,CAAC,MAAM,EAAE,CAAC;AACzB,SAAA;KACJ;IAEO,MAAM,uBAAuB,CAAC,IAA8B,EAAA;QAEhE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,qBAAqB,EAAE,YAAY,EAAE;AAC1D,YAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,QAAgC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACnG,SAAA;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,qBAAqB,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE;YAChH,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAsD,CAAC;YAE1K,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAgC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChF,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACV,OAAO;AACV,SAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEjD,QAAA,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,EAAE;YACtC,YAAY,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtC,SAAA;KAEJ;IAEO,MAAM,wBAAwB,CAAC,IAA4B,EAAA;QAC/D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KACnE;IAEO,MAAM,wBAAwB,CAAC,IAA8B,EAAA;QACjE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;KACtD;AACJ;;ACvSM,MAAMA,YAAU,GAAwD;IAC3E,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE;AACxE,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,0BAA0B,EAAE,aAAa,EAAE,qBAAqB,EAAE;AACjH,IAAA,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,mBAAmB,EAAE;AAC3G,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,aAAa,EAAE,mBAAmB,EAAE;AACpG,IAAA,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,uCAAuC,EAAE,aAAa,EAAE,2BAA2B,EAAE;AAC5I,IAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,uBAAuB,EAAE;CAClI;;ACbM,MAAM,iCAAiC,GAAG,sBAAsB,CAAC;AAEjE,MAAM,+BAA+B,GAAG,+BAA+B,CAAC;AAExE,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAEpD,MAAM,iCAAiC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpD,MAAM,mCAAmC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtD,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAGpC,MAAM,qBAAqB,GAAG,UAAU,CAAC;AAEzC,MAAM,+BAA+B,GAAG,EAAE,GAAG,IAAI;;MCH3C,iBAAiB,CAAA;AAClB,IAAA,MAAM,CAAc;AACpB,IAAA,MAAM,CAA+B;AACrC,IAAA,OAAO,CAAyB;AAChC,IAAA,uBAAuB,CAAuB;AAC9C,IAAA,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9B,oBAAoB,GAAG,IAAI,CAAC;AAC5B,IAAA,sBAAsB,CAAU;AAChC,IAAA,6BAA6B,CAAU;IAEvC,wBAAwB,GAAoB,EAAE,CAAC;AAEhD,IAAA,MAAM,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;QACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAElE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;AAEzD,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AAEhC,QAAA,IAAI,CAAC,uBAAuB,GAAG,GAAG,CAAC,mBAAmB,CAAC;AAEvD,QAAA,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAEjD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAEzB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yFAAyF,CAAC,CAAC;AAE5G,QAAA,QAAiC,CAAC,OAAO,GAAG,GAAG,CAAC;KACpD;IAEM,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;AACnC,QAAA,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;KACtC;IAEM,MAAM,mBAAmB,CAAC,IAAS,EAAA;QACtC,MAAM,aAAa,GAAG,4BAA4B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEpF,QAAA,MAAM,SAAS,GAAGA,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACpB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;QAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;YACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KACjD;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAAiC;YACtC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;SAClD,CAAC;AAEF,QAAA,OAAO,GAAG,CAAC;KACd;IAEO,MAAM,KAAK,CAAC,OAAwD,EAAA;QACxE,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAE7E,QAAA,MAAM,aAAa,GAA2C,OAAO,sBAAsB,KAAK,QAAQ;AACpG,cAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE;cAClC,sBAAsB,CAAC;QAE7B,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEjD,QAAA,MAAM,uBAAuB,GAAG,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,0BAA0B,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;AAEtH,QAAA,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;AAEzE,QAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAG,EAAA,yBAAyB,CAAC,MAAM,CAAgC,8BAAA,CAAA,CAAC,CAAC;AAEtF,YAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5F,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,uCAAA,EAA0C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAmC,gCAAA,EAAA,IAAI,CAAC,6BAA6B,CAAA,EAAA,CAAI,CAAC,CAAC;AAG9J,QAAA,MAAM,uBAAuB,GAAG,aAAa,CAAC,4BAA4B;AACtE,cAAE,qBAAqB;AACvB,cAAE,CAAC,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC,6BAA6B,IAAI,mCAAmC,CAAC;QAE1G,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAyE,SAAS,EAAEA,YAAU,CAAC,KAAK,EAAE,uBAAuB,EAAE,EAAE,uBAAuB,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAE3O,QAAA,OAAO,QAAQ,CAAC;KACnB;AAEO,IAAA,0BAA0B,CAAC,MAAsC,EAAA;QACrE,IAAI,MAAM,CAAC,aAAa,EAAE;YACtB,OAAO;gBACH,OAAO,EAAE,OAAO,MAAM,CAAC,aAAa,EAAE,YAAY,KAAK,SAAS,GAAG,MAAM,CAAC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAC,oBAAoB;gBACjI,OAAO,EAAE,IAAI,CAAC,sBAAsB;AACpC,gBAAA,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,OAAO,IAAI,+BAA+B;aACxF,CAAC;AACL,SAAA;AAID,QAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,aAAa,EAAE,4BAA4B,GAAG,qBAAqB,GAAG,IAAI,CAAC,6BAA6B,CAAC;QAE5I,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,oBAAoB;YAClC,OAAO,EAAE,IAAI,CAAC,sBAAsB;YACpC,mBAAmB;SACtB,CAAC;KACL;AAEO,IAAA,MAAM,yBAAyB,GAAA;QACnC,IAAI;YACA,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA6C,SAAS,EAAE,gBAAgB,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YAE/J,OAAO;AACH,gBAAA,SAAS,EAAE,WAAW;gBACtB,MAAM,EAAE,WAAW,GAAG,EAAE,GAAG,kFAAkF;aAChH,CAAC;AACL,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;YACZ,OAAO;AACH,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,MAAM,EAAE,yFAAyF;aACpG,CAAC;AACL,SAAA;KACJ;AAEO,IAAA,MAAM,GAAG,GAAA;QACb,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEjD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAuB,SAAS,EAAEA,YAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAEzG,OAAO,MAAM,CAAC,OAAO,CAAC;KACzB;IAEO,iBAAiB,CAAC,MAAkE,EAAE,OAAiE,EAAA;AAC3J,QAAA,wBAAwB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClD,QAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;AAClG,SAAA;AAGD,QAAA,IAAI,eAA8B,CAAC;AAGnC,QAAA,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAE3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAEzD,QAAA,IAAI,iBAAiB,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,CAAA,oBAAA,CAAsB,CAAC,CAAC;AACnF,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAE/B,QAAA,MAAM,MAAM,GAAG;YACX,WAAW,EAAE,MAAW;AACpB,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAElC,eAAe;AACV,qBAAA,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/C,qBAAA,KAAK,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,UAAU,CAAA,qBAAA,EAAwB,GAAG,CAAE,CAAA,CAAC,CAAC,CAAC;aAC3H;SACJ,CAAC;QAEF,IAAI,UAAU,GAAsE,EAAE,CAAC;AAEvF,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAE5B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;YAC5C,UAAU,GAAG,IAAI,CAAC;AACrB,SAAA;QAED,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,IAAqB,KAAI;YACnH,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;gBAEhC,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;AAE3C,gBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACxB,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,eAAe,CAAC,KAAK,CAAC,GAAG,IAAG;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAElC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAsC,mCAAA,EAAA,UAAU,CAAwB,qBAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAC;AACpG,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;KACjB;AAEO,IAAA,MAAM,QAAQ,CAAC,MAAkE,EAAE,OAA0G,EAAA;AACjM,QAAA,wBAAwB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAElD,QAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;AAClG,SAAA;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEjD,QAAA,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAE3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAEzD,QAAA,IAAI,iBAAiB,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,CAAA,oBAAA,CAAsB,CAAC,CAAC;AACnF,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE/B,IAAI,UAAU,GAAsE,EAAE,CAAC;AAEvF,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAE5B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;YAC5C,UAAU,GAAG,IAAI,CAAC;AACrB,SAAA;QAED,IAAI;YACA,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,IAAqB,KAAI;gBACvG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;oBAChC,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;oBAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,KAAK,gBAAgB,CAAC,CAAC;AAE7F,oBAAA,OAAO,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAChC,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;AACV,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAElC,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,mCAAA,EAAsC,UAAU,CAAwB,qBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC;AAClH,SAAA;QAED,OAAO;YACH,WAAW,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;SACxD,CAAC;KACL;IAEO,MAAM,IAAI,CAAC,YAA6D,EAAA;QAC5E,IAAI,IAAI,GAAoC,SAAS,CAAC;AAEtD,QAAA,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;YACrC,MAAM,eAAe,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AAEzE,YAAA,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;AACrC,gBAAA,IAAI,GAAG;AACH,oBAAA,MAAM,EAAE;AACJ,wBAAA,IAAI,EAAE,eAAe;AACxB,qBAAA;iBACJ,CAAC;AACL,aAAA;AAAM,iBAAA,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;AAC5C,gBAAA,IAAI,GAAG;AACH,oBAAA,MAAM,EAAE,eAAe;iBAC1B,CAAC;AACL,aAAA;AACJ,SAAA;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAEjD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAkD,SAAS,EAAEA,YAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE/H,OAAO,MAAM,CAAC,OAAO,CAAC;KACzB;AAEO,IAAA,+BAA+B,CAAC,OAAgC,EAAA;QACpE,IAAI,CAAC,oBAAoB,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,uBAAuB,KAAK,SAAS;AACrF,cAAE,OAAO,CAAC,OAAO,CAAC,uBAAuB;cACvC,IAAI,CAAC;QAEX,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,OAAO,EAAE,sBAAsB,IAAI,yBAAyB,CAAC;QAEnG,IAAI,CAAC,6BAA6B,GAAG,OAAO,CAAC,OAAO,EAAE,uBAAuB,IAAI,iCAAiC,CAAC;KACtH;AAEO,IAAA,0BAA0B,CAAC,eAA8B,EAAA;AAC7D,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,KAAK,eAAe,CAAC,CAAC;KAChH;AAEO,IAAA,sBAAsB,CAAC,UAAkB,EAAA;AAC7C,QAAA,OAAO,CAAG,EAAA,iCAAiC,CAAG,EAAA,UAAU,EAAE,CAAC;KAC9D;AAEO,IAAA,iBAAiB,CAAC,UAAkB,EAAA;AACxC,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAElC,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAG3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAA6B,CAAC;AAE1F,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEtD,iBAAiB;aACZ,IAAI,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;AACvD,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,GAAG,KAAI;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAwC,qCAAA,EAAA,UAAU,CAAwB,qBAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAC;AAEnG,YAAA,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;KACV;IAEO,MAAM,cAAc,CAAC,aAAqD,EAAA;AAC9E,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAEtD,QAAA,IAAI,CAAC,gCAAgC,CAAC,aAAa,CAAC,CAAC;QAErD,IAAI,aAAa,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC1D,YAAA,MAAM,IAAI,KAAK,CAAC,kGAAkG,CAAC,CAAC;AACvH,SAAA;QAED,MAAM,uBAAuB,GAAG,CAAC,aAAa,CAAC,OAAO,IAAI,+BAA+B,IAAI,mCAAmC,CAAC;AAEjI,QAAA,MAAM,uCAAuC,GAAqC,EAAE,qBAAqB,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,0BAA0B,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;AAE/L,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAkF,SAAS,EAAEA,YAAU,CAAC,cAAc,EAAE,uCAAuC,EAAE,EAAE,uBAAuB,EAAE,aAAa,EAAE,uBAAuB,EAAE,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAE5S,QAAA,OAAO,MAAM,CAAC;KACjB;AAEO,IAAA,gCAAgC,CAAC,MAA8C,EAAA;QACnF,MAAM,QAAQ,GAAG,sHAAsH,CAAC;QAExI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAE7B,YAAA,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC7B,SAAA;QAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;AAEtE,QAAA,MAAM,yBAAyB,GAAG,YAAY,EAAE,MAAM,CAAC;AACvD,QAAA,MAAM,6BAA6B,GAAG,gBAAgB,EAAE,MAAM,CAAC;QAE/D,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,CAAC,yBAAyB,IAAI,CAAC,6BAA6B,EAAE;AACxF,YAAA,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC7B,SAAA;KACJ;IAEO,MAAM,mBAAmB,CAAC,OAA+C,EAAA;AAC7E,QAAA,oBAAoB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAoF,SAAS,EAAEA,YAAU,CAAC,mBAAmB,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAEzN,QAAA,OAAO,MAAM,CAAC;KACjB;AACJ;;ACjXM,MAAM,sBAAsB,GAA8D;AAC7F,IAAA,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;AAC1C,IAAA,sBAAsB,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE;AAC1D,IAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE;AAC5D,IAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE;AACpD,IAAA,2BAA2B,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE;AACpE,IAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE;AACpD,IAAA,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE;AAC9D,IAAA,2BAA2B,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE;AACpE,IAAA,gCAAgC,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE;CACjF,CAAC;AAEK,MAAM,wBAAwB,GAAG,cAAc,CAAC;AAEhD,MAAM,cAAc,GAAG,kBAAkB;;ACVzC,MAAMA,YAAU,GAAwD;IAC3E,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE;IACtE,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,wBAAwB,EAAE;IAC/E,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,wBAAwB,EAAE;AAC/E,IAAA,qBAAqB,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,gCAAgC,EAAE,aAAa,EAAE,kCAAkC,EAAE;AAC1J,IAAA,wBAAwB,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,WAAW,EAAE,qCAAqC,EAAE,aAAa,EAAE,qCAAqC,EAAE;IACxK,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE;IACzE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,4BAA4B,EAAE;AACzE,IAAA,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,0BAA0B,EAAE,aAAa,EAAE,mBAAmB,EAAE;IACzH,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE;CAC5E;;MCEY,kBAAkB,CAAA;IACV,QAAQ,GAAqBG,yBAAuB,EAAE,CAAC;AAChE,IAAA,MAAM,CAA+B;AACrC,IAAA,QAAQ,CAA8B;AACtC,IAAA,MAAM,CAAc;AACpB,IAAA,kBAAkB,CAAqB;AACvC,IAAA,iBAAiB,CAAqB;AACtC,IAAA,iBAAiB,CAA4B;AAC7C,IAAA,eAAe,CAA2B;IAEjC,qBAAqB,GAAG,eAAe,CAAC;IACxC,OAAO,GAAG,MAAM,CAAC;IACjB,UAAU,GAAG,SAAS,CAAC;IAEjC,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACzB;IAEO,sBAAsB,GAAA;AAC1B,QAAAH,YAAU,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,QAAAA,YAAU,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,QAAAA,YAAU,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpE,QAAAA,YAAU,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACtF,QAAAA,YAAU,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;KACzF;AAEM,IAAA,MAAM,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;QACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;AAE1D,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAElC,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;AAE/C,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;AAE/C,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0FAA0F,CAAC,CAAC;AAE9G,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAExB,QAAA,QAAiC,CAAC,QAAQ,GAAG,GAAG,CAAC;KACrD;IAEM,MAAM,mBAAmB,CAAC,IAAS,EAAA;QACtC,MAAM,aAAa,GAAG,6BAA6B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAErF,QAAA,MAAM,SAAS,GAAGA,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,QAAA,IAAG,CAAC,SAAS,CAAC,OAAO,EAAE;YACnB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;QAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;YACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KACjD;AAEM,IAAA,MAAM,IAAI,GAAA;AACb,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE/C,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAEpG,QAAA,OAAO,eAAe,CAAC;KAC1B;IAEM,EAAE,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACzB;AAEO,IAAA,MAAM,kBAAkB,GAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE1B,OAAO,OAAO,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;KACrC;AAEM,IAAA,MAAM,IAAI,CAAC,IAAY,EAAE,QAAiB,EAAA;AAC7C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,kBAAkB,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,6BAA6B,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAEzD,QAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;AAC1D,YAAA,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACpC,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAwB,UAAU,EAAEA,YAAU,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9J,SAAA;KACJ;AAEO,IAAA,iBAAiB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAmB,EAAA;QAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KACvC;AAEM,IAAA,SAAS,CAAC,QAAmC,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACjC;AAEM,IAAA,MAAM,KAAK,GAAA;AACd,QAAA,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;KAChC;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAAkC;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YACxD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9D,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;SAC3C,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC7B;AAEO,IAAA,iBAAiB,CAAC,WAAmB,EAAA;AACzC,QAAA,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAG,EAAA,WAAW,EAAE,CAAC;KACxD;IAEO,kBAAkB,GAAA;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAEzC,MAAM,mBAAmB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAErH,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,kBAAkB,KAAK,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,CAAC;AAEjI,QAAA,OAAO,YAAY,CAAC;KACvB;IAEO,WAAW,GAAA;QACf,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AACpC,SAAA;KACJ;IAEO,MAAM,eAAe,CAAC,IAAa,EAAA;QACvC,IAAI,CAAC,WAAW,EAAE,CAAC;AAGnB,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAG/B,QAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;YAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAEjD,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,KAAI;AACjG,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACrF,aAAC,CAAC,CAAC;AACN,SAAA;QAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAE7C,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;KAC3E;AAEO,IAAA,MAAM,UAAU,CAAC,IAAY,EAAE,IAAS,EAAA;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAExC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;AAChC,YAAA,MAAM,UAAU,GAA0C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;gBACpF,OAAO;oBACH,IAAI,EAAE,CAAQ,KAAA,EAAA,GAAG,CAAE,CAAA;AACnB,oBAAA,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;iBACnB,CAAC;AACN,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,QAAQ,EAAE;AACV,gBAAA,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;AAC7D,aAAA;YAED,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACzD,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,QAAQ,EAAE;AACV,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC;AACnC,aAAA;AAGD,YAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACrD,SAAA;KACJ;AAEO,IAAA,WAAW,CAAC,IAAS,EAAA;QACzB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAW,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAE3F,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,OAAO;AACV,SAAA;AAED,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,YAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC9E,SAAA;AAED,QAAA,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxD;AAEO,IAAA,SAAS,CAAC,QAAmG,EAAA;AACjH,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;AACrG,SAAA;AAED,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAEtC,MAAM,eAAe,GAAG,IAAI,CAAC,qCAAqC,CAAC,QAAQ,CAAC,CAAC;AAE7E,QAAA,IAAI,cAAc,EAAE;AAChB,YAAA,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;AACzD,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;KAC3D;AAEO,IAAA,MAAM,YAAY,CAAC,IAAY,EAAE,QAAmG,EAAA;AACxI,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,kBAAkB,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAA,kDAAA,CAAoD,CAAC,CAAC;AAC5G,SAAA;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,eAAe,GAAG,IAAI,CAAC,qCAAqC,CAAC,QAAQ,CAAC,CAAC;AAE7E,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,KAAI;YAC3E,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACjE,SAAC,CAAC,CAAC;KACN;IAEO,OAAO,CAAC,IAAS,EAAE,IAAa,EAAA;AACpC,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;AAC7F,SAAA;AAED,QAAA,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;AAC7B,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC/C,kBAAkB,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC3D,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC;QAEpD,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;AAClF,SAAA;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAEtE,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,CAAA,oBAAA,CAAsB,CAAC,CAAC;AACnF,SAAA;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;KAC7C;AAEM,IAAA,MAAM,GAAG,GAAA;AACZ,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAE/C,QAAA,OAAO,YAAY,CAAC;KACvB;IAEO,MAAM,GAAG,CAAC,IAAY,EAAA;AAC1B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,kBAAkB,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE5D,IAAI,cAAc,CAAC,gBAAgB,EAAE;YACjC,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAC,GAAG,cAAc,CAAC;AAEpD,YAAA,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;AACtB,SAAA;AAED,QAAA,OAAO,cAAc,CAAC;KACzB;IAEO,OAAO,GAAA;QACX,OAAO,IAAI,CAAC,kBAA4B,CAAC;KAC5C;AAEO,IAAA,OAAO,CAAC,QAAmC,EAAA;AAC/C,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;AAC5G,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KACvD;IAEO,MAAM,GAAG,CAAC,IAA8C,EAAA;QAC5D,MAAM,cAAc,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAEpE,QAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAE1F,QAAA,IAAI,yBAAyB,EAAE;AAC3B,YAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACzE,SAAA;AAED,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiD,UAAU,EAAEA,YAAU,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAE1H,QAAA,OAAO,cAAc,CAAC;KACzB;IAEO,MAAM,MAAM,CAAC,IAAY,EAAA;AAC7B,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,yBAAyB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE3E,IAAI,CAAC,yBAAyB,EAAE;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACxD,SAAA;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA0B,UAAU,EAAEA,YAAU,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KAC/I;AAEO,IAAA,eAAe,GAAG,CAAC,QAAmG,EAAG,SAAiB,KAAI;AAClJ,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACd,aAAA,IAAI,CAAC,CAAC,cAAwD,KAAI;AAC/D,YAAA,IAAI,OAAO,cAAc,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;gBACpF,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAEhE,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,KAAI;oBAC3E,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC1D,iBAAC,CAAC,CAAC;AACN,aAAA;AAGD,YAAA,OAAO,SAAS,CAAC;AACrB,SAAC,CAAC;AACD,aAAA,IAAI,CAAC,CAAC,EAA4B,KAAI;AACnC,YAAA,IAAI,EAAE,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;AAChC,gBAAA,EAAE,EAAE,CAAC;AACR,aAAA;AACL,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,KAAC,CAAC;AAEM,IAAA,MAAM,KAAK,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC1B,OAAO;AACV,SAAA;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KAC5C;IAEO,MAAM,mBAAmB,CAAC,OAAe,EAAA;AAC7C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,kBAAkB,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAE3D,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA8C,UAAU,EAAEA,YAAU,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjM,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAuC,CAAC,OAAO,EAAE,QAAQ,KAAI;YACxF,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAEzD,YAAA,OAAO,MAAM,GAAG,CAAC,GAAG,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;SAClD,EAAE,EAAE,CAAC,CAAC;AAEP,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,MAAM,sBAAsB,CAAC,MAA0D,EAAA;AAC3F,QAAA,MAAM,aAAa,GAAmC,MAAM,KAAK,SAAS;cACpE,EAAE,MAAM,EAAE,8BAA8B,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;cACnE,EAAE,CAAC;QAET,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAwE,UAAU,EAAEA,YAAU,CAAC,wBAAwB,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAE5O,QAAA,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAkD,CAAC,mBAAmB,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAI;YACrJ,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEzD,OAAO,MAAM,GAAG,CAAC,GAAG,mBAAmB,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,mBAAmB,CAAC;SACpG,EAAE,EAAE,CAAC,CAAC;AAEP,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,MAAM,QAAQ,CAAC,MAAqD,EAAA;AACxE,QAAA,0BAA0B,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEpD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/C,kBAAkB,CAAC,YAAY,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAE/D,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAE/F,QAAA,IAAI,gBAAgB,EAAE;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAsC,UAAU,EAAEA,YAAU,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAmC,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1L,SAAA;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAElE,QAAA,MAAM,YAAY,GAAG,kBAAkB,EAAE,YAAY,GAAG,EAAE,GAAG,kBAAkB,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC;AAElJ,QAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAE1C,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAE5E,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,cAAc,IAAI,eAAe,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE;YAC3F,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC7C;IAEO,MAAM,eAAe,CAAC,QAAiB,EAAA;AAC3C,QAAA,6BAA6B,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAEzD,QAAA,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;AAC1D,YAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACnC,SAAA;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAgE,UAAU,EAAEA,YAAU,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KAC5L;IAEO,MAAM,WAAW,CAAC,YAA0D,EAAA;AAChF,QAAA,yBAAyB,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;AAEzD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAElD,QAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,KAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAE3G,QAAA,IAAI,gBAAgB,EAAE;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAwB,UAAU,EAAEA,YAAU,CAAC,WAAW,EAAE,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AACpJ,SAAA;QAED,MAAM,eAAe,GAAqE,EAAE,CAAC;AAE7F,QAAA,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC7B,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC;AACtD,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAE1C,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAE5E,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;QAEtE,IAAI,CAAC,cAAc,IAAI,eAAe,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YAC1D,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;KACrD;IAEO,uBAAuB,CAAC,WAAmB,EAAE,MAAwB,EAAA;QACzE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAE9C,QAAA,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;AAErF,QAAA,OAAO,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;KACnD;IAEO,iBAAiB,GAAA;QACrB,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AAElE,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC;AAE3E,QAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;KACrC;AAEO,IAAA,qCAAqC,CAAC,QAAmG,EAAA;QAC7I,MAAM,eAAe,GAAG,CAAC,IAAS,EAAE,OAAiD,EAAE,SAAiB,KAAI;AACxG,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEnE,IAAI,CAAC,OAAO,EAAE;gBACV,OAAO;AACV,aAAA;AAED,YAAA,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACvC,SAAC,CAAC;AAEF,QAAA,OAAO,eAAe,CAAC;KAC1B;AAEO,IAAA,uBAAuB,CAAC,WAAmB,EAAA;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AAExD,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,KAAI;AACpE,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACrF,SAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AACd,YAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AACtC,gBAAA,KAAK,EAAE,CAAC;AACX,aAAA;AACL,SAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3C;AAEO,IAAA,wBAAwB,CAAC,WAAoB,EAAA;QACjD,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,YAAY,CAAC;AAE7E,QAAA,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;KAC7C;AACJ;;AC1hBM,MAAMA,YAAU,GAAuD;IAC1E,cAAc,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE;IACrE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE;AACvD,IAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;CACjD;;MCFY,gBAAgB,CAAA;AACjB,IAAA,MAAM,CAAc;AACpB,IAAA,GAAG,CAAO;AAEX,IAAA,MAAM,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;AACpD,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;KAC/B;IAEM,MAAM,mBAAmB,CAAC,IAAS,EAAA;QACtC,MAAM,aAAa,GAAG,2BAA2B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEnF,QAAA,MAAM,SAAS,GAAGA,YAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACpB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;QAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;YACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KACjD;AAEO,IAAA,MAAM,uBAAuB,GAAA;AAEjC,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,sBAAsB,GAAG,UAAU,CAAC,sBAAsB,EAAE,GAAG,IAAI,CAAC,CAAC;AAE5I,QAAA,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC;AAE9C,QAAA,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAEjC,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KAE5B;AAEO,IAAA,MAAM,cAAc,GAAA;AAExB,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAY,QAAQ,EAAEA,YAAU,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAGtG,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAY,QAAQ,EAAEA,YAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAExF,MAAM,eAAe,GAAI,MAAc,CAAC,UAAU,IAAK,MAAc,CAAC,SAAS,CAAC;AAEhF,QAAA,MAAM,mBAAmB,GAAI,MAAc,CAAC,UAAU,GAAG,YAAY,GAAG,WAAW,CAAC;AAGpF,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAG3E,MAAc,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;KACnE;IAEO,sBAAsB,GAAA;AAC1B,QAAAA,YAAU,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjF;AACJ;;MCnEY,YAAY,CAAA;AAEd,IAAA,OAAO,GAAc,MAAK,GAAI,CAAC;AAC/B,IAAA,MAAM,GAAc,MAAK,GAAI,CAAC;AAC9B,IAAA,EAAE,CAAS;AACX,IAAA,KAAK,CAAS;AACd,IAAA,KAAK,CAAsB;AAC3B,IAAA,IAAI,CAAsB;AAC1B,IAAA,IAAI,CAAO;AACX,IAAA,GAAG,CAAsC;AACzC,IAAA,IAAI,CAAsB;AAC1B,IAAA,KAAK,CAAsB;AAC3B,IAAA,IAAI,CAAsB;AAC1B,IAAA,QAAQ,CAAuB;AAC/B,IAAA,kBAAkB,CAAuB;AACzC,IAAA,MAAM,CAAuB;AAC7B,IAAA,GAAG,CAAsB;AACzB,IAAA,SAAS,CAAsB;AAC/B,IAAA,OAAO,CAAwB;AAC/B,IAAA,YAAY,CAAoE;AAChF,IAAA,OAAO,CAAmE;AAC1E,IAAA,2BAA2B,CAAuB;AAClD,IAAA,QAAQ,CAA+D;AACvE,IAAA,SAAS,CAAuB;AAChC,IAAA,WAAW,CAAuB;AAClC,IAAA,KAAK,CAAwC;IAEpD,WAAY,CAAA,MAAmD,EAAE,EAAU,EAAA;AACvE,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACpD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACxC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;AACtE,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACtC,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;KAC7B;AAEJ;;ACrD+EL,OAAK,CACjFJ,UAAQ,CAAC,aAAa,CAAC,EACzB;AAEK,MAAM,sBAAsB,GAA6BC,QAAM,CAAC;IACnE,MAAM,EAAEA,QAAM,CAAC;QACX,MAAM,EAAEH,SAAO,EAAE;KACpB,CAAC;AACL,CAAA,CAAC;;ACLK,MAAMW,YAAU,GAA0D;IAC7E,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,sBAAsB,EAAE;CAC9E;;MCGY,aAAa,CAAA;AAEd,IAAA,QAAQ,CAAU;AAClB,IAAA,MAAM,CAA+B;AACrC,IAAA,MAAM,CAAc;AACpB,IAAA,gBAAgB,CAAoB;AACpC,IAAA,kBAAkB,CAAsB;AACxC,IAAA,MAAM,CAAmB;IACzB,QAAQ,GAA+C,EAAE,CAAC;IAC1D,UAAU,GAAmB,EAAE,CAAC;AAEvB,IAAA,eAAe,GAAmF;AAC/G,QAAA,6BAA6B,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,MAAM,EAAE,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrI,QAAA,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KACxF,CAAC;IAEK,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB;AAEM,IAAA,MAAM,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;QAEpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;AAEpE,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC;AAEnC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAE3D,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACzB,QAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC;AACjD,QAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,CAAC;QAG7C,IAAI;AACA,YAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACrC,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;YAIZ,OAAO;AACV,SAAA;QAED,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;AAErD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrG,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AAChE,YAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;AAChG,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACvC;IAEM,MAAM,mBAAmB,CAAC,CAAM,EAAA;KAEtC;AAEO,IAAA,oBAAoB,CAAC,OAAY,EAAA;QAErC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE;YACjD,OAAO;AACV,SAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE3D,IAAI,CAAC,YAAY,EAAE;YACf,OAAO;AACV,SAAA;AAED,QAAA,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAChC;AAEO,IAAA,MAAM,oBAAoB,GAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAwC,WAAW,EAAEA,YAAU,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE9I,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;KAClG;AAEO,IAAA,MAAM,mCAAmC,GAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAA4B,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACjI,SAAA;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC;QAEtG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAA4B,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;KAClK;IAEO,MAAM,mBAAmB,CAAC,OAAyB,EAAA;AACvD,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE;AAC/B,YAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;YACtC,OAAO;AACV,SAAA;QAED,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACpD;AACJ;;MCtGY,gBAAgB,CAAA;AAMI,IAAA,MAAA,CAAA;AALrB,IAAA,IAAI,CAAwB;IACnB,QAAQ,GAAqBG,yBAAuB,EAAE,CAAC;IACvD,eAAe,GAAG,QAAQ,CAAC;AACpC,IAAA,cAAc,CAA0B;AAEhD,IAAA,WAAA,CAA6B,MAAoB,EAAA;QAApB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAc;KAAK;AAErC,IAAA,MAAM,GAA6F;AAChH,QAAA,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrF,QAAA,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5E,QAAA,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KAClF,CAAC;IAEK,IAAI,GAAA;QACP,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KACzE;AAEM,IAAA,KAAK,CAAC,IAA0B,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAEM,IAAA,kBAAkB,CAAI,OAAU,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;KAClD;AAEM,IAAA,gBAAgB,CAAC,QAAgC,EAAA;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;KACrD;IAEO,uBAAuB,GAAA;QAE3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpD,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KACtE;AAEO,IAAA,aAAa,CAAC,KAAY,EAAA;AAC9B,QAAA,MAAM,IAAI,GAAI,KAAqB,CAAC,MAAM,CAAC;QAE3C,MAAM,SAAS,GAAG,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,UAAU,CAAC;QAEnD,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO;AACV,SAAA;AAED,QAAA,MAAM,WAAW,GAAW,SAAS,CAAC,KAAK,CAAC;QAE5C,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE9C,IAAI,CAAC,YAAY,EAAE;YACf,OAAO;AACV,SAAA;AAED,QAAA,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KAC1C;IAEO,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;KAChC;IAEO,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,wGAAwG,EAAE,CAAC,CAAC;YAChK,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KACnE;IAEO,mBAAmB,GAAA;QACvB,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;AAEO,IAAA,gBAAgB,CAAC,OAAY,EAAA;QACjC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;KACjD;AAEO,IAAA,IAAI,CAAC,SAAiB,EAAE,SAAkC,EAAE,OAAa,EAAA;QAC7E,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAEnD,QAAA,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAEzE,QAAA,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KAC/B;AACJ;;MC5FY,6BAA6B,CAAA;AAST,IAAA,QAAA,CAAA;IAPZ,kBAAkB,GAAG,KAAK,CAAC;IAC3B,gBAAgB,GAA0C,EAAE,CAAC;AACtE,IAAA,oBAAoB,CAAM;AAC1B,IAAA,8BAA8B,CAAkC;IAChE,gBAAgB,GAAG,CAAC,CAAC;AACZ,IAAA,MAAM,CAA2B;AAElD,IAAA,WAAA,CAA6B,QAA2B,EAAA;QAA3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;AACpD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;KACvF;IAEM,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;YACtC,OAAO;AACV,SAAA;QAED,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;IAEM,MAAM,KAAK,CAAC,UAAwB,EAAA;QACvC,IAAI,UAAU,CAAC,kBAAkB,EAAE;AAC/B,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gGAAgG,CAAC,CAAC;YACpH,OAAO;AACV,SAAA;AAED,QAAA,MAAM,qBAAqB,GAAI,IAAI,CAAC,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,wBAAwB,CAAC;QAE9G,IAAI,CAAC,qBAAqB,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAC;AACvI,SAAA;QAED,IAAI,CAAE,IAAI,CAAC,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,oBAAoB,EAAE;AACnE,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qHAAqH,CAAC,CAAC;YACzI,OAAO;AACV,SAAA;QAED,IAAI,CAAC,oBAAoB,GAAI,IAAI,CAAC,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC;AAExE,QAAA,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAEpH,QAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gCAAgC,EAAE,CAAC;AAErE,QAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;KACnD;AAEO,IAAA,wBAAwB,CAAC,GAAoB,EAAA;AACjD,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YACzB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,qBAAqB,GAAI,IAAI,CAAC,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,wBAAwB,CAAC;AAE9G,QAAA,MAAM,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC;AAC/B,QAAA,MAAM,IAAI,GAAI,GAAW,CAAC,IAAI,CAAC;AAC/B,QAAA,MAAM,aAAa,GAAI,GAAW,CAAC,aAAa,CAAC;AAEjD,QAAA,IAAI,IAAI,KAAK,sBAAsB,CAAC,sBAAsB,CAAC,IAAI,EAAE;YAC7D,OAAO,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACjE,SAAA;QAED,IAAI,IAAI,KAAK,sBAAsB,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC/E,YAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,IAAI,KAAK,sBAAsB,CAAC,2BAA2B,CAAC,IAAI,EAAE;YAClE,OAAO,IAAI,CAAC,iCAAiC,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACtE,SAAA;AAED,QAAA,IAAI,IAAI,KAAK,sBAAsB,CAAC,mBAAmB,CAAC,IAAI,EAAE;AAC1D,YAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;AACxD,SAAA;AAED,QAAA,IAAI,IAAI,KAAK,sBAAsB,CAAC,wBAAwB,CAAC,IAAI,EAAE;YAC/D,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACnE,SAAA;KAEJ;AAEO,IAAA,MAAM,uBAAuB,GAAA;QACjC,IAAI;AACA,YAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;AAC7C,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA+D,4DAAA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;YAC1G,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAExB,YAAA,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE;AAC3B,gBAAA,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACzC,aAAA;AAED,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+HAA+H,CAAC,CAAC;AACrJ,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAC;AAEnH,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAE1B,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;AAElC,QAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,gCAAgC,EAAE,CAAC;AAErE,QAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;KAEnD;IAEO,MAAM,oBAAoB,CAAC,MAAsB,EAAA;AACrD,QAAA,MAAM,sBAAsB,GAAY,IAAI,CAAC,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAE1F,QAAA,IAAI,sBAAsB,KAAK,MAAM,CAAC,aAAa,EAAE;AACjD,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iHAAiH,CAAC,CAAC;YACrI,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mGAAmG,sBAAsB,CAAA,6BAAA,EAAgC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC;AAErM,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEtE,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAmD,gDAAA,EAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC;KAClG;AAEO,IAAA,MAAM,gCAAgC,GAAA;AAE1C,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAE7E,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAiB,sBAAsB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAEzG,QAAA,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AAE1F,QAAA,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC;AAE9C,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAgD,6CAAA,EAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA,CAAE,CAAC,CAAC;AAEpG,QAAA,OAAO,cAAc,CAAC;KACzB;AAEO,IAAA,cAAc,CAAI,SAA2B,EAAA;QACjD,MAAM,WAAW,GAAmB,EAAoB,CAAC;AAEzD,QAAA,MAAM,aAAa,GAAGG,QAAM,CAAC,EAAE,CAAC,CAAC;QAEjC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,KAAI;YAEvD,IAAI,eAAe,GAAG,IAAI,CAAC;AAE3B,YAAA,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,KAAU;gBAC9B,eAAe,GAAG,KAAK,CAAC;AACxB,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC,CAAC;AAClB,aAAC,CAAC;AAEF,YAAA,WAAW,CAAC,IAAI,GAAG,CAAC,MAAM,KAAU;gBAChC,eAAe,GAAG,KAAK,CAAC;AACxB,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBAC5C,MAAM,CAAC,MAAM,CAAC,CAAC;AACnB,aAAC,CAAC;YAEF,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,eAAe,EAAE;oBAClB,OAAO;AACV,iBAAA;gBAED,eAAe,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAA8B,2BAAA,EAAA,SAAS,CAAa,WAAA,CAAA,CAAC,CAAC;AACvE,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAC5C,gBAAA,MAAM,CAAC,CAAA,2BAAA,EAA8B,SAAS,CAAA,WAAA,CAAa,CAAC,CAAC;AACjE,aAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;AAEH,QAAA,WAAW,CAAC,IAAI,GAAG,eAAe,CAAC;AAEnC,QAAA,WAAW,CAAC,EAAE,GAAG,aAAa,CAAC;AAE/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC;AAEnD,QAAA,OAAO,WAAW,CAAC;KACtB;AAEO,IAAA,mBAAmB,CAAC,IAAsB,EAAE,aAAqB,EAAE,IAAU,EAAA;AACjF,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,oCAAA,EAAuC,IAAI,CAAS,MAAA,EAAA,aAAa,CAAc,WAAA,EAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC;AACzH,QAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;AACjC,YAAA,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE;AAC5C,SAAA,CAAC,CAAC;KACN;IAEO,4BAA4B,CAAC,IAAS,EAAE,aAAqB,EAAA;AACjE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,aAAa,CAAA,WAAA,EAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC;QACrH,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC;AACxD,aAAA,IAAI,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAmD,gDAAA,EAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC;YAC/F,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9H,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACrH,SAAC,CAAC,CAAC;KACV;IAEO,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gHAAgH,CAAC,CAAC;QACpI,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAClC;IAEO,iCAAiC,CAAC,IAAS,EAAE,aAAqB,EAAA;AACtE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+DAA+D,aAAa,CAAA,WAAA,EAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC,CAAC;AACpI,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAgC,CAAC;QAE7D,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAEzD,QAAA,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KACrC;AAEO,IAAA,yBAAyB,CAAC,aAAqB,EAAA;AACnD,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,2BAA2B,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;KACzH;IAEO,8BAA8B,CAAC,IAAS,EAAE,aAAqB,EAAA;AACnE,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAuC,oCAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAC;AAEhE,QAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC;AAC7B,aAAA,IAAI,CAAC,CAAC,MAAM,KAAI;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAqB,kBAAA,EAAA,GAAG,CAAc,YAAA,CAAA,CAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,gCAAgC,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AAClH,SAAC,CAAC;AACD,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAqB,kBAAA,EAAA,GAAG,CAAkB,gBAAA,CAAA,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,gCAAgC,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AACrH,SAAC,CAAC,CAAC;KACV;AAEO,IAAA,wBAAwB,CAAC,GAAW,EAAA;AAExC,QAAA,OAAO,IAAI,OAAO,CAAoB,CAAC,OAAO,KAAI;AAC9C,YAAA,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;AAE9B,YAAA,EAAE,CAAC,OAAO,GAAG,MAAY,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAElD,YAAA,EAAE,CAAC,MAAM,GAAG,MAAW;gBACnB,EAAE,CAAC,KAAK,EAAE,CAAC;AACX,gBAAA,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5B,aAAC,CAAC;AAEN,SAAC,CAAC,CAAC;KAEN;IAEO,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,CAAC;KACnD;AACJ;;MCxPY,mBAAmB,CAAA;AAOP,IAAA,MAAA,CAAA;AACA,IAAA,OAAA,CAAA;AACA,IAAA,oBAAA,CAAA;AACA,IAAA,iBAAA,CAAA;AATb,IAAA,MAAM,CAA+B;IAErC,+BAA+B,GAA6D,EAAE,CAAC;IAEvG,WACI,CAAA,MAAmC,EAClB,MAAkB,EAClB,OAA8B,EAC9B,oBAA0C,EAC1C,iBAAoC,EAAA;QAHpC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;QAClB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAuB;QAC9B,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAErD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;KAC9C;AAEM,IAAA,MAAM,KAAK,CAAC,uBAAwD,EAAE,YAAuI,EAAA;AAChN,QAAA,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,uBAAuB,CAAC;QAElE,MAAM,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC;QAE/G,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,CAAA,iBAAA,EAAoB,aAAa,CAAC,MAAM,CAAY,UAAA,CAAA,CAAC,CAAC;AACzE,SAAA;AAED,QAAA,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAEnG,IAAI,CAAC,IAAI,EAAE;YACP,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAA6C,0CAAA,EAAA,MAAM,CAAE,CAAA,CAAC,CAAC;AAE1E,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAChD,SAAA;QAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,CAAC;AAEpF,QAAA,OAAO,YAAY,CAAC;KACvB;AAEO,IAAA,eAAe,CAAC,UAAuC,EAAA;AAC3D,QAAA,OAAO,UAAU,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;KAC5D;IAEO,MAAM,0BAA0B,CAAC,uBAAwD,EAAA;AAC7F,QAAA,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,uBAAuB,CAAC;QAElE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAqC,kCAAA,EAAA,cAAc,CAAC,OAAO,CAAe,aAAA,CAAA,CAAC,CAAC;AAE9F,QAAA,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA6B,0BAAA,EAAA,kBAAkB,CAAE,CAAA,CAAC,CAAC;QAErE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;QAE/G,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAqC,kCAAA,EAAA,gBAAgB,CAAC,EAAE,CAAS,OAAA,CAAA,CAAC,CAAC;QAErF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAEvE,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,KAAK;AACjC,cAAE,EAAE,GAAG,EAAE,OAAO,CAAC,eAAe,EAAE;cAChC,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;AAEvC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAsC,mCAAA,EAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC;AAElF,QAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;AAEhF,QAAA,OAAO,YAAY,CAAC;KACvB;IAEO,MAAM,sBAAsB,CAAC,UAAkB,EAAA;QACnD,IAAI;AACA,YAAA,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;AAE3F,YAAA,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,oCAAoC,MAAM,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,CAAE,CAAC,CAAC;AAE7F,YAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAEtC,YAAA,OAAO,OAAO,CAAC;AAElB,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAEtC,YAAA,MAAM,IAAI,KAAK,CAAC,KAAe,CAAC,CAAC;AACpC,SAAA;KACJ;AAEO,IAAA,iBAAiB,CAAC,UAAkD,EAAA;AACxE,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAgF,SAAS,EAAEN,YAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;KACzJ;AAEO,IAAA,MAAM,sBAAsB,GAAA;QAChC,MAAM,UAAU,GAAG,+BAA+B,GAAGM,QAAM,CAAC,EAAE,CAAC,CAAC;AAEhE,QAAA,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAEjF,QAAA,OAAO,UAAU,CAAC;KACrB;AAEO,IAAA,MAAM,6BAA6B,CAAC,uBAAwD,EAAE,UAAkB,EAAA;AACpH,QAAA,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,uBAAuB,CAAC;QAElE,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AAEvE,QAAA,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEpD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA,cAAA,EAAiB,YAAY,CAAA,CAAE,CAAC,CAAC;QAE7H,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAE1H,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAqC,kCAAA,EAAA,QAAQ,CAAC,EAAE,CAAS,OAAA,CAAA,CAAC,CAAC;AAE7E,QAAA,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;AAE1C,QAAA,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAE9G,QAAA,OAAO,QAAQ,CAAC;KACnB;IAEO,MAAM,4BAA4B,CAAC,UAAkB,EAAA;QACzD,MAAM,aAAa,GAAG,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC;QAEvE,IAAI,CAAC,aAAa,EAAE;YAChB,OAAO;AACV,SAAA;AAGD,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAA6B,CAAC;AAExG,QAAA,iBAAiB,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAE5D,QAAA,OAAO,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC;KAC3D;IAEO,iBAAiB,CAAC,UAAkD,EAAE,UAAkB,EAAA;QAC5F,OAAO;AACH,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAS;YACzC,UAAU;SACb,CAAC;KACL;AAEO,IAAA,MAAM,iBAAiB,GAAA;AAC3B,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE5C,OAAO;AACH,YAAA,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,uBAAuB,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG;AAC/D,YAAA,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,sBAAsB,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI;AAC/D,YAAA,KAAK,EAAE,sBAAsB;AAC7B,YAAA,MAAM,EAAE,uBAAuB;SAClC,CAAC;KACL;AAEO,IAAA,MAAM,eAAe,GAAA;AACzB,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE,IAAI,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAE/F,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA4C,yCAAA,EAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC;AAExF,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;AAED,QAAA,MAAM,aAAa,GAAoC;AACnD,YAAA,GAAG,EAAG,MAAc,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC;AACzC,YAAA,IAAI,EAAG,MAAc,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;AAC3C,YAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;AAC1B,YAAA,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;SAC/B,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAA6D,0DAAA,EAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA,CAAE,CAAC,CAAC;AAEhH,QAAA,OAAO,aAAa,CAAC;KACxB;AAEO,IAAA,MAAM,uBAAuB,GAAA;QACjC,IAAI;AACA,YAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC;AAErE,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAyD,sDAAA,EAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA,CAAE,CAAC,CAAC;AAE7G,YAAA,OAAO,cAAc,CAAC;AACzB,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAoC,iCAAA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AAClF,SAAA;AAGD,QAAA,OAAO,SAAS,CAAC;KACpB;AAEO,IAAA,MAAM,0BAA0B,GAAA;QACpC,IAAI;AACA,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA6C,YAA0B,EAAE,gBAAgB,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,+BAA+B,EAAE,CAAC,CAAC;AAEhL,YAAA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAkD,YAA0B,EAAE,gBAAgB,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAEvN,YAAA,MAAM,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC;AAEhD,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAyE,sEAAA,EAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA,CAAE,CAAC,CAAC;AAEhI,YAAA,OAAO,iBAAiB,CAAC;AAC5B,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAoD,iDAAA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AAClG,SAAA;AAGD,QAAA,OAAO,SAAS,CAAC;KACpB;AAEO,IAAA,0BAA0B,CAAC,QAA8C,EAAA;AAC7E,QAAA,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;QAEjC,MAAM,KAAK,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC,IAA0C,KAAI;AACvF,YAAA,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,EAAE;gBACzB,OAAO;AACV,aAAA;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEpE,IAAI,CAAC,aAAa,EAAE;gBAChB,OAAO,KAAK,EAAE,CAAC;AAClB,aAAA;AAED,YAAA,aAAa,CAAC,MAAM,CAAC,CAAA,8BAAA,EAAiC,aAAa,CAAC,MAAM,CAAA,gBAAA,EAAmB,WAAW,CAAC,IAAI,CAAA,uCAAA,CAAyC,CAAC,CAAC;AAExJ,YAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAE3C,YAAA,KAAK,EAAE,CAAC;AACZ,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,qBAAqB,CAAC,MAAc,EAAE,UAAkB,EAAE,UAAkB,EAAE,OAAe,EAAA;AACjG,QAAA,IAAI,OAAO,GAA2C,MAAK,GAAG,CAAC;AAC/D,QAAA,IAAI,MAAM,GAA6B,MAAK,GAAG,CAAC;QAEhD,MAAM,OAAO,GAAGF,aAAW,CAAyB,CAAC,GAAG,EAAE,GAAG,KAAI;YAC7D,OAAO,GAAG,GAAG,CAAC;YACd,MAAM,GAAG,GAAG,CAAC;SAChB,EAAE,OAAO,EAAE,CAAA,WAAA,EAAc,OAAO,CAA8D,2DAAA,EAAA,MAAM,CAAE,CAAA,CAAC,CAAC;AAEzG,QAAA,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;KACvG;IAEO,uBAAuB,CAAC,IAAS,EAAE,QAA2C,EAAA;QAClF,MAAM,QAAQ,GAAG,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEzD,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAErC,IAAI,QAAQ,CAAC,EAAE,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,iCAAA,EAAoC,UAAU,CAA2B,wBAAA,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC;AAE9H,YAAA,OAAO,IAAI,CAAC,+BAA+B,CAAC,UAAW,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrF,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,iCAAA,EAAoC,UAAU,CAAqC,kCAAA,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;AAEvI,QAAA,IAAI,CAAC,+BAA+B,CAAC,UAAW,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAEjF,QAAA,IAAI,CAAC,oBAAoB,CAAC,UAAW,CAAC,CAAC;KAC1C;AAEO,IAAA,oBAAoB,CAAC,UAAkB,EAAA;QAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,IAA0C,KAAK,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QAE/I,IAAI,CAAC,gBAAgB,EAAE;YACnB,OAAO;AACV,SAAA;AAED,QAAA,gBAAgB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KAChE;IAEO,kCAAkC,CAAC,MAAuC,EAAE,OAA+C,EAAA;AAE/H,QAAA,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE;AACpC,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,OAAO,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;KACtF;AAEO,IAAA,6BAA6B,CAAC,MAAuC,EAAE,aAAqD,EAAE,cAA8B,EAAA;AAChK,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YACzB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,oEAAoE,EAAE,CAAC;AACxG,SAAA;AAED,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAE5F,IAAI,CAAC,kBAAkB,EAAE;AACrB,YAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA,sBAAA,EAAyB,cAAc,CAAC,OAAO,CAAA,UAAA,CAAY,EAAE,CAAC;AAC/F,SAAA;QAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAE7F,IAAI,CAAC,qBAAqB,EAAE;YACxB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;AACxE,SAAA;AAED,QAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;KACzB;AACJ;;AC/SM,MAAMJ,YAAU,GAAuD;IAC1E,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,0BAA0B,EAAE;IAC7E,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,wBAAwB,EAAE;IAC/D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;CACpE;;MCIY,gBAAgB,CAAA;AAEjB,IAAA,MAAM,CAA+B;AACrC,IAAA,MAAM,CAAc;IACX,QAAQ,GAAqBG,yBAAuB,EAAE,CAAC;AAChE,IAAA,kBAAkB,CAA6C;IAC/D,eAAe,GAAG,CAAC,CAAC;AAErB,IAAA,MAAM,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;QACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;AAEjE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;AAExD,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAExB,QAAA,QAAiC,CAAC,MAAM,GAAG,GAAG,CAAC;AAEhD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;KACzC;IAEM,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC;QAEjC,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAEM,IAAA,MAAM,mBAAmB,GAAA;KAE/B;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAAgC;YACrC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;SACvC,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC7B;AAEO,IAAA,MAAM,UAAU,GAAA;QAEpB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA4B,QAAQ,EAAEH,YAAU,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjK,OAAO,cAAc,CAAC,KAAK,CAAC;KAC/B;AAEO,IAAA,MAAM,IAAI,GAAA;QACd,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA0B,QAAQ,EAAEA,YAAU,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzJ,OAAO,cAAc,CAAC,MAAM,CAAC;KAChC;IAEO,MAAM,MAAM,CAAC,IAAY,EAAA;AAC7B,QAAA,qBAAqB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA0B,QAAQ,EAAEA,YAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KACtI;IAEO,MAAM,SAAS,CAAC,QAAuD,EAAA;AAE3E,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB;AACpC,YAAA,OAAO,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAEtC,QAAA,MAAM,QAAQ,CAAC;QAEf,EAAE,IAAI,CAAC,eAAe,CAAC;AACvB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAEjE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;KAC3C;AAEO,IAAA,MAAM,0BAA0B,GAAA;QACpC,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,OAAO;AACV,SAAA;QAED,IAAI,CAAC,kBAAkB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC;QAEvE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AACpC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;YAE5B,MAAM,UAAU,GAAG,0BAA0B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAE7D,YAAA,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE;AAChB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0DAA0D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;gBAC/G,OAAO;AACV,aAAA;AAED,YAAA,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;YAEvC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;AACjE,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;AAC1G,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC,kBAAkB,CAAC;AACnC,SAAC,CAAC,CAAC;KAEN;AAEO,IAAA,UAAU,CAAC,aAAkC,EAAA;AACjD,QAAA,aAAa,EAAE,CAAC;QAChB,EAAE,IAAI,CAAC,eAAe,CAAC;QAEvB,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC;QAEjC,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AACJ;;MCzIY,wBAAwB,CAAA;AACzB,IAAA,cAAc,GAAY,MAAM,CAAC,cAAc,CAAC;AAChD,IAAA,QAAQ,CAAU;AAC1B,IAAA,IAAY,aAAa,GAAA;AACrB,QAAA,OAAO,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;KAClE;AAEM,IAAA,SAAS,CAAC,MAA4B,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEhC,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,KAAI;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEpD,IAAI,CAAC,IAAI,EAAE;AACP,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;AACxE,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAY,eAAe,GAAA;AACvB,QAAA,OAAO,CAAqB,kBAAA,EAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;KAC/C;IAEM,aAAa,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAW,CAAC,CAAC;KAClF;IAEM,aAAa,CAAsC,IAA4B,EAAE,GAAQ,EAAA;AAC5F,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAErC,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAEpB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;KAC9E;AACJ;;AC/BM,MAAM,UAAU,GAAsD;IACzE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE;AAC7D,IAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;AAC9B,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,aAAa,EAAE,qBAAqB,EAAE;IAC/F,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,wBAAwB,EAAE;IACnE,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE;IACzD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;IAC/D,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,qBAAqB,EAAE;IAC1E,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,wBAAwB,EAAE;CAC9E;;MCCY,eAAe,CAAA;AAChB,IAAA,MAAM,CAAc;AACpB,IAAA,MAAM,CAAgB;AACtB,IAAA,MAAM,CAA+B;AACrC,IAAA,oBAAoB,CAAwB;AAC5C,IAAA,eAAe,CAAU;IAChB,QAAQ,GAAqBG,yBAAuB,EAAE,CAAC;IAEjE,sBAAsB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KACzB;AAEM,IAAA,MAAM,KAAK,CAAC,QAA2B,EAAE,GAAQ,EAAA;QACpD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;AAEhE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAEvD,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAE9B,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AAEzB,QAAA,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC,oBAAoB,CAAC;QAErD,IAAI;YACA,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAA0B,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjK,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC;AACzD,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;YAC5F,OAAO;AACV,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAC;AAE3G,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAExB,QAAA,QAAiC,CAAC,KAAK,GAAG,GAAG,CAAC;KAClD;IAEM,MAAM,mBAAmB,CAAC,IAAS,EAAA;QACtC,MAAM,aAAa,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAElF,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACpB,OAAO;AACV,SAAA;AAED,QAAA,IAAI,aAAa,GAAQ,IAAI,CAAC,IAAI,CAAC;QAEnC,IAAI,SAAS,CAAC,WAAW,EAAE;YACvB,aAAa,GAAG,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,OAAO,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;KACjD;IAEO,sBAAsB,GAAA;AAC1B,QAAA,UAAU,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrE;IAEO,KAAK,GAAA;AACT,QAAA,MAAM,GAAG,GAA+B;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAClC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;SACvC,CAAC;AAEF,QAAA,OAAO,GAAG,CAAC;KACd;AAEO,IAAA,MAAM,KAAK,GAAA;AACf,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAEhC,QAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KAC5B;AAEO,IAAA,MAAM,QAAQ,GAAA;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAa,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAG,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KAC5H;IAEO,MAAM,QAAQ,CAAC,GAAW,EAAA;QAC9B,MAAM,WAAW,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAEhE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAwB,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KAC9I;IAEO,MAAM,GAAG,CAAC,GAAY,EAAA;QAC1B,MAAM,WAAW,GAAG,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAE1H,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAoE,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAEvM,QAAA,OAAO,KAAK,CAAC;KAChB;AAEO,IAAA,MAAM,MAAM,GAAA;QAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAyD,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;AAEjL,QAAA,OAAO,MAAM,CAAC;KACjB;AAEO,IAAA,MAAM,GAAG,CAAC,IAAS,EAAE,OAAyB,EAAA;QAClD,MAAM,eAAe,GAAGT,UAAQ,CAAC,sBAAsB,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnF,MAAM,GAAG,GAAG,eAAe,EAAE,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QAExD,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAChC;AAEO,IAAA,MAAM,MAAM,CAAC,GAAW,EAAE,IAAS,EAAA;QACvC,MAAM,WAAW,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,YAAY,GAAGF,QAAM,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAErD,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAmC,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KAC3K;AAEO,IAAA,SAAS,CAAC,QAAgE,EAAA;AAC9E,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEhC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KAC3C;IAEO,YAAY,CAAC,GAAW,EAAE,QAAgE,EAAA;QAC9F,MAAM,WAAW,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;QACjE,MAAM,UAAU,GAAG,WAAW,KAAK,IAAI,CAAC,eAAe,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAEhI,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAA,eAAA,CAAiB,CAAC,CAAC;AACnE,SAAA;AAED,QAAA,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChC,YAAA,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;AAClG,SAAA;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAE7D,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;KACvD;AAEO,IAAA,MAAM,MAAM,CAAC,IAAS,EAAE,OAAyB,EAAA;QACrD,MAAM,eAAe,GAAGE,UAAQ,CAAC,sBAAsB,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnF,MAAM,GAAG,GAAG,eAAe,EAAE,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QAExD,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACnC;AAEO,IAAA,MAAM,SAAS,CAAC,GAAW,EAAE,IAAS,EAAA;QAC1C,MAAM,WAAW,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAChE,MAAM,YAAY,GAAGF,QAAM,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAErD,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAmC,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;KAC9K;IAEO,YAAY,GAAA;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC;QAEzH,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;AACvG,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KACpB;AAEO,IAAA,kBAAkB,CAAC,GAAW,EAAA;QAClC,OAAO,CAAA,cAAA,EAAiB,GAAG,CAAA,CAAE,CAAC;KACjC;AAEO,IAAA,MAAM,eAAe,CAAC,EAAE,KAAK,EAAoD,EAAA;QACrF,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE3D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;KACjD;AACJ;;MC7KY,GAAG,CAAA;AACJ,IAAA,SAAS,CAAqB;AAC9B,IAAA,gBAAgB,CAAU;AAC1B,IAAA,eAAe,CAAU;AACzB,IAAA,UAAU,CAAgB;AAC1B,IAAA,0BAA0B,CAAqB;AAC/C,IAAA,6BAA6B,CAAwB;AACrD,IAAA,0BAA0B,CAAqB;AAC/C,IAAA,gCAAgC,CAA2B;AAC3D,IAAA,0BAA0B,CAAqB;AAC/C,IAAA,4BAA4B,CAAuB;AACnD,IAAA,2BAA2B,CAAsB;AACjD,IAAA,yBAAyB,CAAoB;AAC7C,IAAA,oBAAoB,CAAiB;AACrC,IAAA,yBAAyB,CAAoB;AAC7C,IAAA,eAAe,CAAc;AAC7B,IAAA,iBAAiB,CAAoB;AACrC,IAAA,8BAA8B,CAAiC;AAC/D,IAAA,kBAAkB,CAA4B;AAC9C,IAAA,wBAAwB,CAAmB;AAE5C,IAAA,WAAW,GAA2C;QACzD,OAAO,EAAE,IAAI,CAAC,iBAAiB;QAC/B,UAAU,EAAE,IAAI,CAAC,oBAAoB;QACrC,OAAO,EAAE,IAAI,CAAC,iBAAiB;QAC/B,aAAa,EAAE,IAAI,CAAC,uBAAuB;QAC3C,OAAO,EAAE,IAAI,CAAC,iBAAiB;QAC/B,QAAQ,EAAE,IAAI,CAAC,kBAAkB;QACjC,MAAM,EAAE,IAAI,CAAC,gBAAgB;QAC7B,SAAS,EAAE,IAAI,CAAC,mBAAmB;QACnC,MAAM,EAAE,IAAI,CAAC,gBAAgB;QAC7B,KAAK,EAAE,IAAI,CAAC,eAAe;KAC9B,CAAC;AAEF,IAAA,IAAW,eAAe,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;AAED,IAAA,IAAW,cAAc,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAClC,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC7D,SAAA;QAED,OAAO,IAAI,CAAC,0BAA0B,CAAC;KAC1C;AAED,IAAA,IAAW,oBAAoB,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE;AACrC,YAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,oBAAoB,EAAE,CAAC;AACnE,SAAA;QAED,OAAO,IAAI,CAAC,6BAA6B,CAAC;KAC7C;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAClC,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC7D,SAAA;QAED,OAAO,IAAI,CAAC,0BAA0B,CAAC;KAC1C;AAED,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;AACjC,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAC3D,SAAA;QAED,OAAO,IAAI,CAAC,yBAAyB,CAAC;KACzC;AAED,IAAA,IAAW,uBAAuB,GAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,gCAAgC,EAAE;AACxC,YAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,uBAAuB,EAAE,CAAC;AACzE,SAAA;QAED,OAAO,IAAI,CAAC,gCAAgC,CAAC;KAChD;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;AAClC,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC7D,SAAA;QAED,OAAO,IAAI,CAAC,0BAA0B,CAAC;KAC1C;AAED,IAAA,IAAW,mBAAmB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;AACpC,YAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC9K,SAAA;QAED,OAAO,IAAI,CAAC,4BAA4B,CAAC;KAC5C;AAED,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;AACjC,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAC3D,SAAA;QAED,OAAO,IAAI,CAAC,yBAAyB,CAAC;KACzC;AAED,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;AACnC,YAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAC/D,SAAA;QAED,OAAO,IAAI,CAAC,2BAA2B,CAAC;KAC3C;AAED,IAAA,IAAW,eAAe,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAChC,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,eAAe,EAAE,CAAC;AACzD,SAAA;QAED,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACxC;AAED,IAAA,IAAW,mBAAmB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC5B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,aAAa,EAAE,CAAC;AACnD,SAAA;QAED,OAAO,IAAI,CAAC,oBAAoB,CAAC;KACpC;AAED,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9D,SAAA;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC;KACjC;AAED,IAAA,IAAW,MAAM,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC/E,SAAA;QAED,OAAO,IAAI,CAAC,eAAe,CAAC;KAC/B;AAED,IAAA,IAAW,6BAA6B,GAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;YACtC,IAAI,CAAC,8BAA8B,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3F,SAAA;QAED,OAAO,IAAI,CAAC,8BAA8B,CAAC;KAC9C;AAED,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC1B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,wBAAwB,EAAE,CAAC;AAC5D,SAAA;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAClC;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AAEM,IAAA,UAAU,CAAC,QAA2B,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,CAAC,eAAe,GAAI,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC;QAE7E,MAAM,eAAe,GAAI,MAAc,CAAC,UAAU,IAAK,MAAc,CAAC,SAAS,CAAC;AAEhF,QAAA,IAAI,CAAC,gBAAgB,GAAI,QAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,eAAe,IAAI,eAAe,CAAC,eAAe,CAAC;KACrH;AAEM,IAAA,YAAY,CAAC,MAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;KAC5B;AAEM,IAAA,MAAM,cAAc,CAAC,EAAU,EAAE,IAAY,EAAA;AAEhD,QAAA,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAExD,QAAA,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;AAEhC,QAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;KAC7B;IAEM,iBAAiB,CAAC,MAAmD,EAAE,EAAU,EAAA;AACpF,QAAA,OAAO,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;KACvC;AAEM,IAAA,MAAM,gBAAgB,CAAC,GAAwB,EAAE,oBAAoC,EAAA;AAExF,QAAA,MAAM,WAAW,GAAG,CAAC,IAAI,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC;QAEvF,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;QAE5G,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AAEzC,QAAA,OAAO,WAAW,CAAC;KACtB;IAEM,aAAa,CAAC,YAA0B,EAAE,GAA4C,EAAA;AACzF,QAAA,OAAO,CAAC,IAAI,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;KACtE;AACJ;;;;AC3NM,MAAM,qBAAqB,GAAG,CAAC,mBAAiD,KAAqC;AAExH,IAAA,OAAO,OAAO,UAAoC,KAA0D;AACxG,QAAA,IAAI,MAAM,CAAC,QAAQ,IAAK,MAAc,CAAC,SAAS,EAAE;AAC9C,YAAA,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;AACjC,SAAA;AAED,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AAEtB,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAEvC,QAAA,cAAc,EAAE,CAAC;QAEjB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAuB,MAAM,mBAAmB,CAAC,MAAM,EAAE,WAAEgB,SAAO,EAAE,CAAkC,EAAE,KAAK,EAAE,gEAAgE,CAAC,CAAC;QAE/M,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;AAE5D,QAAA,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAErB,QAAA,GAAG,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAkB,EAAE,CAAC,CAAC;QAExF,MAAM,GAAG,CAAC,6BAA6B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEtD,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAExC,QAAA,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAEzB,QAAA,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;AAE1E,QAAA,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAEnG,QAAA,MAAM,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QAEpF,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAEzE,QAAA,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAE3C,QAAA,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAEjC,QAAA,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;AAEpE,QAAA,OAAO,IAAI,CAAC;AAChB,KAAC,CAAC;AACN,CAAC;;ACzDD,IAAI,WAAW,GAAG;AAClB,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,SAAS,EAAE,CAAC;AAChB,IAAI,MAAM,EAAE,CAAC;AACb,CAAC,CAAC;AACF;AACA,SAAS,oBAAoB,CAAC,MAAM,EAAE;AACtC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,SAAS,EAAE;AAC/C,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK;AACL,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,EAAE;AACjD,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,EAAE;AACjD,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,MAAM,EAAE;AACjD,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;AACD,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE;AACpC,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK;AACL,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACxC,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACxC,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACxC,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,CAAC;AACD,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,IAAI,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACjC,IAAI,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC9C,IAAI,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC3B,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AACvE,YAAY,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,YAAY,IAAI,SAAS,KAAK,QAAQ,EAAE;AACxC,gBAAgB,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3E,gBAAgB,IAAI,CAAC,GAAG,CAAC,GAAG;AAC5B,oBAAoB,IAAI,EAAE,QAAQ;AAClC,oBAAoB,WAAW,EAAE,EAAE;AACnC,oBAAoB,OAAO,EAAE,EAAE;AAC/B,oBAAoB,SAAS;AAC7B,iBAAiB,CAAC;AAClB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,GAAG,CAAC,GAAG;AAC5B,oBAAoB,IAAI,EAAE,SAAS;AACnC,oBAAoB,WAAW,EAAE,EAAE;AACnC,oBAAoB,OAAO,EAAE,EAAE;AAC/B,iBAAiB,CAAC;AAClB,aAAa;AACb,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS,EAAE,EAAE,CAAC,CAAC;AACf,QAAQ,iBAAiB,CAAC,SAAS,GAAG,MAAM,CAAC;AAC7C,KAAK;AACL,IAAI,iBAAiB,CAAC,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5F,IAAI,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC;AAClC,IAAI,iBAAiB,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACvD,IAAI,iBAAiB,CAAC,OAAO,GAAG,EAAE,CAAC;AACnC,IAAI,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AACD,SAAS,qBAAqB,CAAC,MAAM,EAAE;AACvC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AACrD,QAAQ,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC/B,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG;AACxB,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,WAAW,EAAE,EAAE;AAC/B,gBAAgB,OAAO,EAAE,EAAE;AAC3B,gBAAgB,SAAS,EAAE,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC7D,aAAa,CAAC;AACd,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG;AACxB,gBAAgB,IAAI;AACpB,gBAAgB,WAAW,EAAE,EAAE;AAC/B,gBAAgB,OAAO,EAAE,EAAE;AAC3B,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AACD,SAAS,mBAAmB,CAAC,IAAI,EAAE;AACnC,IAAI,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC3E,QAAQ,OAAO,GAAG,GAAG,IAAI,CAAC;AAC1B,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,CAAC;AACD,SAAS,oBAAoB,CAAC,MAAM,EAAE;AACtC,IAAI,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC9C,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE;AAC9B,QAAQ,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1B,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpD,KAAK;AACL,CAAC;AACD,SAAS,sBAAsB,CAAC,MAAM,EAAE;AACxC,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACpC,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AACrD,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAClC,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE;AACrE,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACtD,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE;AAC7C,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAClD,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE;AAChD,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzC,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC9B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AACD,SAAS,OAAO,CAAC,GAAG,EAAE;AACtB,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK;AAC3C,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AACtF,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AACD,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC9B,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AACtB,YAAY,OAAO,CAAC,CAAC,CAAC;AACtB,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACV,CAAC;AACD,SAAS,oBAAoB,CAAC,GAAG,EAAE;AACnC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK;AAC/B,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,QAAQ,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,YAAY,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC;AAC9D,SAAS;AACT,aAAa;AACb,YAAY,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;AACpE,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;AAC1B,QAAQ,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AACzC,KAAK;AACL,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,CAAC;AACD,SAAS,4BAA4B,CAAC,MAAM,EAAE;AAC9C,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC5D,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5C,IAAI,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACjD,IAAI,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACvD,IAAI,OAAO;AACX,QAAQ,WAAW,EAAE,aAAa;AAClC,QAAQ,KAAK,EAAE,YAAY,CAAC,KAAK;AACjC,KAAK,CAAC;AACN,CAAC;AACD;AACA,SAAS,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE;AAClC,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACvD,QAAQ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK;AAC3B,QAAQ,IAAI,mBAAmB,CAAC;AAChC,QAAQ,WAAW,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AAC/C,YAAY,mBAAmB,GAAG,OAAO,CAAC;AAC1C,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/C,QAAQ,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,KAAK;AACxC,YAAY,IAAI,CAAC,SAAS,IAAI,mBAAmB,EAAE;AACnD,gBAAgB,mBAAmB,EAAE,CAAC;AACtC,gBAAgB,mBAAmB,GAAG,SAAS,CAAC;AAChD,aAAa;AACb,YAAY,MAAM,eAAe,GAAG;AACpC,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB,WAAW,EAAE;AACjC,wBAAwB,IAAI,EAAE,QAAQ;AACtC,wBAAwB,WAAW,EAAE,EAAE;AACvC,qBAAqB;AACrB,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,IAAI,EAAE,QAAQ;AACtC,wBAAwB,WAAW,EAAE,EAAE;AACvC,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,WAAW,EAAE,cAAc;AAC3C,gBAAgB,OAAO,EAAE,EAAE;AAC3B,aAAa,CAAC;AACd,YAAY,MAAM,oBAAoB,GAAG;AACzC,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,OAAO,EAAE,CAAC,eAAe,CAAC;AAC1C,aAAa,CAAC;AACd,YAAY,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC/C,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,YAAY,MAAM,EAAE,MAAM,CAAC,MAAM;AACjC,YAAY,OAAO,EAAE,MAAM,CAAC,OAAO;AACnC,YAAY,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACrC,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,CAAC,IAAI,KAAK;AACjC,QAAQ,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK;AACrC,QAAQ,YAAY,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AACtC,YAAY,YAAY,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;AAC1C,YAAY,YAAY,CAAC,EAAE,CAAC,CAAC;AAC7B,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,OAAO,MAAM,KAAK;AAC3C,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;AACzC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,WAAW,CAAC;AAC1B,QAAQ,MAAM,MAAM,GAAG;AACvB,YAAY,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;AAC3F,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,SAAS,EAAE;AACvB,gBAAgB,WAAW,EAAE;AAC7B,oBAAoB,IAAI,EAAE,QAAQ;AAClC,oBAAoB,WAAW,EAAE,EAAE;AACnC,iBAAiB;AACjB,gBAAgB,KAAK,EAAE;AACvB,oBAAoB,IAAI,EAAE,QAAQ;AAClC,oBAAoB,WAAW,EAAE,EAAE;AACnC,iBAAiB;AACjB,aAAa;AACb,YAAY,WAAW,EAAE,cAAc;AACvC,YAAY,OAAO,EAAE,EAAE;AACvB,SAAS,CAAC;AACV,QAAQ,MAAM,gBAAgB,GAAG;AACjC,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,OAAO,EAAE,CAAC,MAAM,CAAC;AAC7B,SAAS,CAAC;AACV,QAAQ,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACvC,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,OAAO,MAAM,EAAE,KAAK,KAAK;AAClD,QAAQ,MAAM,WAAW,CAAC;AAC1B,QAAQ,MAAM,oBAAoB,GAAG;AACrC,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,MAAM,EAAE,CAAC;AACrB,oBAAoB,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;AACnG,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,WAAW,EAAE,KAAK,CAAC,WAAW;AACtD,wBAAwB,KAAK,EAAE,KAAK,CAAC,KAAK;AAC1C,qBAAqB;AACrB,oBAAoB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;AACzC,iBAAiB,CAAC;AAClB,SAAS,CAAC;AACV,QAAQ,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC3C,QAAQ,MAAM,QAAQ,GAAG,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC9D,QAAQ,MAAM,UAAU,GAAG;AAC3B,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,OAAO,EAAE,UAAU,CAAC,MAAM;AACtC,YAAY,MAAM,EAAE,CAAC;AACrB,oBAAoB,IAAI,EAAE,QAAQ;AAClC,oBAAoB,KAAK,EAAE;AAC3B,wBAAwB,WAAW,EAAE,QAAQ,CAAC,WAAW;AACzD,wBAAwB,KAAK,EAAE,QAAQ,CAAC,KAAK;AAC7C,qBAAqB;AACrB,oBAAoB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;AACzC,iBAAiB,CAAC;AAClB,SAAS,CAAC;AACV,QAAQ,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,OAAO,MAAM,KAAK;AAC3C,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAChD,QAAQ,MAAM,WAAW,CAAC;AAC1B,QAAQ,MAAM,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;AAC/C,QAAQ,MAAM,gBAAgB,GAAG;AACjC,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC;AACxB,SAAS,CAAC;AACV,QAAQ,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACvC,QAAQ,IAAI,OAAO,WAAW,CAAC,KAAK,KAAK,WAAW,EAAE;AACtD,YAAY,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAC1C,SAAS;AACT,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,OAAO,MAAM,KAAK;AAC3C,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAChD,QAAQ,MAAM,WAAW,CAAC;AAC1B,QAAQ,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACtC,KAAK,CAAC;AACN,IAAI,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AACzC,QAAQ,IAAI,SAAS,EAAE,EAAE;AACzB,YAAY,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACvD,YAAY,MAAM,iBAAiB,GAAG;AACtC,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,MAAM,EAAE,CAAC;AACzB,wBAAwB,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5F,wBAAwB,KAAK;AAC7B,wBAAwB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;AAC7C,qBAAqB,CAAC;AACtB,aAAa,CAAC;AACd,YAAY,OAAO,OAAO,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK,CAAC;AACN,IAAI,MAAM,WAAW,GAAG,CAAC,MAAM,KAAK;AACpC,QAAQ,MAAM,WAAW,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;AAC1C,QAAQ,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE;AACvE,YAAY,WAAW,CAAC,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;AACpD,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK,CAAC;AACN,IAAI,MAAM,SAAS,GAAG,MAAM;AAC5B,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,KAAK,MAAM,IAAI,CAAC,CAAC;AAChE,YAAY,OAAO,IAAI,EAAE,CAAC;AAC1B,SAAS;AACT,QAAQ,MAAM;AACd,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,KAAK,CAAC;AACN,IAAI,OAAO;AACX,QAAQ,IAAI;AACZ,QAAQ,YAAY;AACpB,QAAQ,YAAY;AACpB,QAAQ,YAAY;AACpB,QAAQ,YAAY;AACpB,KAAK,CAAC;AACN,CAAC;AACD;AACA,IAAI,OAAO,GAAG;AACd,IAAI,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,KAAK;AACjD,QAAQ,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACnE,YAAY,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAClD,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC3D,YAAY,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC9C,SAAS;AACT,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACjE,YAAY,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACjD,SAAS;AACT,KAAK;AACL,CAAC,CAAC;AACF;AACA,MAAM,UAAU,CAAC;AACjB,IAAI,UAAU,CAAC;AACf,IAAI,MAAM,CAAC;AACX,IAAI,SAAS,CAAC;AACd,IAAI,KAAK,CAAC;AACV,IAAI,IAAI,CAAC;AACT,IAAI,IAAI,GAAG,EAAE,CAAC;AACd,IAAI,IAAI,CAAC;AACT,IAAI,WAAW,CAAC;AAChB,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE;AACtD,IAAI,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;AAC5D,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;AACpC,QAAQ,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;AAClD,QAAQ,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,QAAQ,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC9B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK;AACL,CAAC;AACD;AACA,MAAM,YAAY,SAAS,UAAU,CAAC;AACtC,IAAI,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;AACtD,QAAQ,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,KAAK;AACL,CAAC;AACD;AACA,MAAM,YAAY,SAAS,UAAU,CAAC;AACtC,IAAI,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;AACtD,QAAQ,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrB,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnC,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AACtD,YAAY,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;AAClD,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1C,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,CAAC;AACD;AACA,MAAM,YAAY,SAAS,UAAU,CAAC;AACtC,IAAI,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;AACtD,QAAQ,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;AACxE,KAAK;AACL,CAAC;AACD;AACA,MAAM,eAAe,SAAS,UAAU,CAAC;AACzC,IAAI,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE;AACtD,QAAQ,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;AAC3E,KAAK;AACL,IAAI,GAAG,GAAG;AACV,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAChC,KAAK;AACL,CAAC;AACD;AACA,SAAS,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;AAC3D,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC;AAChC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC;AACvB,IAAI,MAAM,YAAY,GAAG,WAAW,IAAI,EAAE,CAAC;AAC3C,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC;AACvB,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC;AAC3B,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AACrC,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AACjD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC3B,IAAI,MAAM,WAAW,GAAG,EAAE,CAAC;AAC3B,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,SAAS,SAAS,CAAC,UAAU,EAAE,iBAAiB,EAAE;AACtD,QAAQ,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACpD,YAAY,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AACvE,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAY,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;AACrF,QAAQ,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,SAAS,QAAQ,CAAC,KAAK,EAAE,gBAAgB,EAAE;AAC/C,QAAQ,MAAM,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;AAC1D,QAAQ,UAAU,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,SAAS,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE;AAC7C,QAAQ,OAAO,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,IAAI,YAAY,CAAC,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5I,KAAK;AACL,IAAI,SAAS,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE;AAC7C,QAAQ,OAAO,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,IAAI,YAAY,CAAC,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5I,KAAK;AACL,IAAI,SAAS,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE;AAC7C,QAAQ,OAAO,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,IAAI,YAAY,CAAC,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5I,KAAK;AACL,IAAI,SAAS,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE;AAChD,QAAQ,OAAO,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,IAAI,eAAe,CAAC,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAClJ,KAAK;AACL,IAAI,SAAS,kBAAkB,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AACjF,QAAQ,IAAI,SAAS,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACrC,QAAQ,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AAC9C,YAAY,SAAS,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAC/C,SAAS;AACT,aAAa;AACb,YAAY,SAAS,GAAG,YAAY,CAAC;AACrC,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,cAAc,KAAK,cAAc,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;AACrG,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAY,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;AAChD,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;AAC5G,aAAa;AACb,YAAY,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAC9C,gBAAgB,QAAQ;AACxB,qBAAqB,MAAM,CAAC,KAAK,CAAC;AAClC,qBAAqB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACtC,aAAa;AACb,YAAY,OAAO,QAAQ,CAAC;AAC5B,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/C,QAAQ,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,SAAS,UAAU,CAAC,cAAc,EAAE;AACxC,QAAQ,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACvD,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACvD,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACvC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,SAAS,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;AAC7C,QAAQ,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE;AACvE,KAAK;AACL,IAAI,SAAS,iBAAiB,GAAG;AACjC,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,YAAY,QAAQ,CAAC,IAAI,CAAC;AAC1B,gBAAgB,IAAI,EAAE,KAAK;AAC3B,gBAAgB,IAAI,EAAE,KAAK;AAC3B,gBAAgB,KAAK,EAAE,MAAM,CAAC,KAAK;AACnC,gBAAgB,WAAW,EAAE,MAAM,CAAC,WAAW;AAC/C,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,WAAW,CAAC,OAAO,CAAC,CAAC,iBAAiB,KAAK;AACnD,YAAY,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;AACjE,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,gBAAgB,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;AACzC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,MAAM,EAAE,GAAG;AACf,QAAQ,IAAI,IAAI,GAAG;AACnB,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,WAAW,GAAG;AAC1B,YAAY,OAAO,YAAY,CAAC;AAChC,SAAS;AACT,QAAQ,IAAI,IAAI,GAAG;AACnB,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG;AACrB,YAAY,OAAO,OAAO,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,EAAE,KAAK;AACnB,QAAQ,EAAE;AACV,QAAQ,IAAI;AACZ,QAAQ,IAAI,UAAU,GAAG;AACzB,YAAY,OAAO,WAAW,CAAC;AAC/B,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG;AACtB,YAAY,OAAO,QAAQ,CAAC;AAC5B,SAAS;AACT,QAAQ,SAAS;AACjB,QAAQ,QAAQ,EAAE,MAAM;AACxB,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS;AACT,QAAQ,QAAQ;AAChB,QAAQ,YAAY;AACpB,QAAQ,eAAe;AACvB,QAAQ,YAAY;AACpB,QAAQ,YAAY;AACpB,QAAQ,iBAAiB;AACzB,KAAK,CAAC;AACN,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAChC,IAAI,OAAO,EAAE,CAAC;AACd,CAAC;AACD;AACA,MAAM,UAAU,CAAC;AACjB,IAAI,IAAI,CAAC;AACT,IAAI,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE;AACnC,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC;AACnG,KAAK;AACL,IAAI,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE;AACjD,QAAQ,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AAC9C,YAAY,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,IAAI,cAAc,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AAC/D,YAAY,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AACpE,YAAY,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK;AAChD,gBAAgB,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;AAC/B,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AACxC,gBAAgB,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AACnF,gBAAgB,WAAW,CAAC,YAAY,CAAC,kBAAkB,EAAE;AAC7D,oBAAoB,IAAI,EAAE,OAAO;AACjC,oBAAoB,SAAS,EAAE,IAAI,IAAI,EAAE;AACzC,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB,SAAS;AACjC,wBAAwB,EAAE,EAAE,MAAM,CAAC,EAAE;AACrC,wBAAwB,IAAI,EAAE,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,GAAG;AACtE,wBAAwB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;AAC/C,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa,CAAC;AACd,YAAY,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE;AAC7C,gBAAgB,KAAK,EAAE,QAAQ,CAAC,KAAK;AACrC,gBAAgB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;AAC1C,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,QAAQ,CAAC,gBAAgB,EAAE;AAC3C,gBAAgB,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;AACzE,aAAa;AACb,iBAAiB;AACjB,gBAAgB,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACtE,aAAa;AACb,SAAS;AACT,QAAQ,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AACtE,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAClE,QAAQ,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACrE,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC3C,YAAY,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE;AACxD,gBAAgB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtD,gBAAgB,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3C,aAAa;AACb,YAAY,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE;AACxD,gBAAgB,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC9D,aAAa;AACb,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA,MAAM,YAAY,CAAC;AACnB,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,KAAK;AACL,IAAI,YAAY,CAAC,MAAM,EAAE;AACzB,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE;AAChC,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,YAAY,CAAC,MAAM,EAAE;AACzB,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,YAAY,CAAC,MAAM,EAAE;AACzB,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,CAAC;AACD;AACA,MAAM,WAAW,CAAC;AAClB,IAAI,GAAG,CAAC;AACR,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,qBAAqB,GAAG,EAAE,GAAG,IAAI,CAAC;AACtC,IAAI,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC;AAChC,IAAI,MAAM,CAAC;AACX,IAAI,WAAW,CAAC,GAAG,EAAE,qBAAqB,EAAE,eAAe,EAAE;AAC7D,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACvB,QAAQ,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC;AACzF,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC;AACvE,QAAQ,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAClC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,mDAAmD,CAAC,CAAC;AAC7G,KAAK;AACL,IAAI,kBAAkB,GAAG;AACzB,QAAQ,UAAU,CAAC,MAAM;AACzB,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;AAC3B,YAAY,WAAW,CAAC,MAAM;AAC9B,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/B,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AACrC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC;AACjC,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;AAClC,SAAS;AACT,QAAQ,MAAM;AACd,SAAS;AACT,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;AACjD,QAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;AAC1D,YAAY,eAAe,EAAE,MAAM,CAAC,eAAe;AACnD,YAAY,cAAc,EAAE,MAAM,CAAC,cAAc;AACjD,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;AAC3D,QAAQ,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AACjD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;AAC3C,QAAQ,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;AAC7E,KAAK;AACL,CAAC;AACD;AACA,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK;AAC3B,IAAI,IAAI,QAAQ,CAAC;AACjB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE;AACvE,QAAQ,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AACtC,KAAK;AACL,SAAS;AACT,QAAQ,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnD,IAAI,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;AAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;AACvC,QAAQ,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAC1C,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAClD,IAAI,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AACF,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE;AAC/B,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACvC,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,sBAAsB,CAAC;AACzE,IAAI,IAAI,UAAU,EAAE;AACpB,QAAQ,MAAM,GAAG,UAAU,CAAC;AAC5B,KAAK;AACL,IAAI,IAAI,MAAM,EAAE,OAAO,EAAE;AACzB,QAAQ,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;AACnF,KAAK;AACL,CAAC;AACD,SAAS,aAAa,CAAC,MAAM,EAAE;AAC/B,IAAI,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAC1D,IAAI,MAAM,GAAG,GAAG;AAChB,QAAQ,IAAI,EAAE,UAAU;AACxB,KAAK,CAAC;AACN,IAAI,IAAI,aAAa,CAAC;AACtB,IAAI,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,KAAK;AACzD,QAAQ,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,EAAE,EAAE;AACxD,YAAY,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACjD,SAAS;AACT,aAAa,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,EAAE,EAAE;AACjE,YAAY,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACnD,SAAS;AACT,aAAa,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,EAAE,EAAE;AACnE,YAAY,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACpD,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,YAAY,aAAa,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AACzF,SAAS;AACT,aAAa;AACb,YAAY,aAAa,CAAC,MAAM,CAAC;AACjC,gBAAgB,IAAI;AACpB,gBAAgB,MAAM;AACtB,gBAAgB,OAAO;AACvB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,aAAa,GAAG,iBAAiB,CAAC;AAC7C,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD;AACA,IAAI,cAAc,GAAG,OAAO,UAAU,KAAK,WAAW,GAAG,UAAU,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,OAAO,IAAI,KAAK,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;AAChM;AACA,SAAS,uBAAuB,EAAE,CAAC,EAAE;AACrC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACnG,CAAC;AACD;AACA,SAAS,cAAc,CAAC,OAAO,EAAE;AACjC,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,aAAa;AACxC,WAAW,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU;AACtD,WAAW,OAAO,CAAC,aAAa,KAAK,KAAK;AAC1C,WAAW,OAAO,CAAC,aAAa,KAAK,QAAQ;AAC7C,WAAW,OAAO,CAAC,aAAa,KAAK,OAAO,EAAE;AAC9C,QAAQ,MAAM,IAAI,KAAK,CAAC,iIAAiI,GAAG,OAAO,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC,CAAC;AAC1M,KAAK;AACL,IAAI,IAAI,iBAAiB,GAAG,OAAO,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;AAC5G,IAAI,IAAI,SAAS,GAAG,EAAE,CAAC;AACvB,IAAI,SAAS,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,kBAAkB,EAAE;AACpD,QAAQ,IAAI,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,eAAe,GAAG,EAAE,CAAC;AACjC,YAAY,SAAS,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;AAC7C,SAAS;AACT,QAAQ,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,QAAQ,IAAI,kBAAkB,EAAE;AAChC,YAAY,UAAU,CAAC,YAAY;AACnC,gBAAgB,kBAAkB,CAAC,OAAO,CAAC,UAAU,cAAc,EAAE;AACrE,oBAAoB,IAAI,EAAE,CAAC;AAC3B,oBAAoB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC1G,wBAAwB,IAAI;AAC5B,4BAA4B,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAC/D,gCAAgC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAC1E,6BAA6B;AAC7B,iCAAiC;AACjC,gCAAgC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5E,6BAA6B;AAC7B,yBAAyB;AACzB,wBAAwB,OAAO,GAAG,EAAE;AACpC,4BAA4B,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACnD,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa,EAAE,CAAC,CAAC,CAAC;AAClB,SAAS;AACT,QAAQ,OAAO,YAAY;AAC3B,YAAY,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;AACxE,gBAAgB,IAAI,EAAE,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,EAAE;AACrE,oBAAoB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC;AAC3B,aAAa,EAAE,EAAE,CAAC,CAAC;AACnB,YAAY,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,gBAAgB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACtC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC3C,aAAa;AACb,SAAS,CAAC;AACV,KAAK;AACL,IAAI,SAAS,OAAO,CAAC,GAAG,EAAE;AAC1B,QAAQ,IAAI,YAAY,GAAG,EAAE,CAAC;AAC9B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,IAAI,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9D,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,EAAE,CAAC;AACzB,QAAQ,eAAe,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE;AACpD,YAAY,IAAI;AAChB,gBAAgB,IAAI,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACrE,gBAAgB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC,gBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACvC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,SAAS,YAAY,CAAC,iBAAiB,EAAE,GAAG,EAAE;AAClD,QAAQ,IAAI,QAAQ,GAAG,iBAAiB,YAAY,KAAK,GAAG,iBAAiB,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAC7G,QAAQ,IAAI,iBAAiB,EAAE;AAC/B,YAAY,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACxC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,qDAAqD,GAAG,GAAG,GAAG,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC/G,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAY,QAAQ,OAAO,CAAC,aAAa;AACzC,gBAAgB,KAAK,KAAK;AAC1B,oBAAoB,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9C,gBAAgB,KAAK,QAAQ;AAC7B,oBAAoB,OAAO;AAC3B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,SAAS,KAAK,GAAG;AACrB,QAAQ,SAAS,GAAG,EAAE,CAAC;AACvB,KAAK;AACL,IAAI,SAAS,QAAQ,CAAC,GAAG,EAAE;AAC3B,QAAQ,IAAI,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,GAAG,EAAE,GAAG;AAChB,QAAQ,OAAO,EAAE,OAAO;AACxB,QAAQ,KAAK,EAAE,KAAK;AACpB,QAAQ,QAAQ,EAAE,QAAQ;AAC1B,KAAK,CAAC;AACN,CAAC;AACD,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC;AACxC,IAAI,GAAG,GAAG,cAAc,CAAC;AACzB;AACA;AACA,IAAI,uBAAuB,gBAAgB,uBAAuB,CAAC,GAAG,CAAC,CAAC;AACxE;AACA,MAAM,eAAe,CAAC;AACtB,IAAI,EAAE,CAAC;AACP,IAAI,QAAQ,GAAG,uBAAuB,EAAE,CAAC;AACzC,IAAI,MAAM,CAAC;AACX,IAAI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE;AAClC,QAAQ,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;AAClC,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK;AAC9C,YAAY,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACzC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AAC5B,YAAY,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACjC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,sBAAsB,GAAG;AACjC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,YAAY,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC9C,SAAS;AACT,aAAa;AACb,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACnD,SAAS;AACT,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,kBAAkB,CAAC,QAAQ,EAAE;AACjC,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvB,QAAQ,OAAO,MAAM,GAAG,CAAC;AACzB,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,cAAc,CAAC,GAAG,EAAE;AACxB,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAChD,KAAK;AACL,CAAC;AACD;AACA,MAAM,qBAAqB,CAAC;AAC5B,IAAI,MAAM,CAAC;AACX,IAAI,MAAM,CAAC;AACX,IAAI,QAAQ,GAAG,uBAAuB,EAAE,CAAC;AACzC,IAAI,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE;AACpC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK;AAC5C,YAAY,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxC,SAAS,CAAC;AACV,KAAK;AACL,IAAI,IAAI,sBAAsB,GAAG;AACjC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1C,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,kBAAkB,CAAC,QAAQ,EAAE;AACjC,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvB,QAAQ,OAAO,MAAM,GAAG,CAAC;AACzB,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,eAAe,CAAC;AAC/B,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,cAAc,CAAC,GAAG,EAAE;AACxB,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAChD,KAAK;AACL,CAAC;AACD;AACA,MAAM,KAAK,CAAC;AACZ,IAAI,OAAO,MAAM,GAAG;AACpB,QAAQ,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,WAAW,EAAE;AAClD,YAAY,OAAO,KAAK,CAAC,OAAO,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC3C,YAAY,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAClC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,kBAAkB,CAAC;AAClG,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAClC,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC;AACD;AACA,MAAM,cAAc,CAAC;AACrB,IAAI,OAAO,KAAK,CAAC,IAAI,EAAE;AACvB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACnE,KAAK;AACL,IAAI,OAAO,CAAC;AACZ,IAAI,MAAM,CAAC;AACX,IAAI,OAAO,CAAC;AACZ,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;AAC9C,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACxD,YAAY,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK;AAClC,gBAAgB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrC,gBAAgB,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK;AACnC,gBAAgB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrC,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAa,CAAC;AACd,SAAS,CAAC,CAAC;AACX,KAAK;AACL,CAAC;AACD;AACA,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,SAAS,YAAY,GAAG;AACxB,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,KAAK,EAAE,SAAS,EAAE;AAC3B,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AACvC,IAAI,IAAI,QAAQ,EAAE;AAClB,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,SAAS,GAAG,GAAG;AACnB,QAAQ,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC7B,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,SAAS,IAAI,GAAG;AACpB,QAAQ,OAAO,GAAG,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC7B,QAAQ,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AACrC,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,SAAS,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;AAC9B,QAAQ,MAAM,WAAW,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;AAC1C,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC;AACrB,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAY,IAAI,GAAG,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,SAAS;AACT,QAAQ,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,IAAI,SAAS,GAAG;AACxB,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG;AACtB,YAAY,OAAO,OAAO,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG;AACrB,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS;AACT,QAAQ,IAAI;AACZ,QAAQ,IAAI;AACZ,QAAQ,KAAK;AACb,KAAK,CAAC;AACN,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;AACjC,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AACD;AACA,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;AAC/E,MAAM,EAAE,CAAC;AACT,IAAI,EAAE,CAAC;AACP,IAAI,MAAM,CAAC;AACX,IAAI,QAAQ,CAAC;AACb,IAAI,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;AACvC,IAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,IAAI,SAAS,GAAG,uBAAuB,EAAE,CAAC;AAC1C,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,IAAI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE;AAClC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC/B,YAAY,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAC7C,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;AACvB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,uBAAuB,CAAC,MAAM;AAC/C,gBAAgB,IAAI;AACpB,oBAAoB,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC,oBAAoB,OAAO,EAAE,CAAC;AAC9B,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,EAAE;AAC1B,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,iBAAiB;AACjB,aAAa,EAAE,MAAM,CAAC,CAAC;AACvB,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC7B,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1D,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC9B,QAAQ,IAAI,IAAI,CAAC,EAAE,EAAE;AACrB,YAAY,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;AAC5B,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,kBAAkB,CAAC,QAAQ,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChC,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;AACzB,QAAQ,MAAM,EAAE,GAAG,IAAI,cAAc,EAAE,CAAC;AACxC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,MAAM;AAC3C,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC;AACzB,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,EAAE,CAAC,OAAO,CAAC;AAC1B,KAAK;AACL,IAAI,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC9C,QAAQ,MAAM,GAAG,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC;AACvC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,MAAM,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,+BAA+B,CAAC,CAAC,CAAC;AAC5F,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,EAAE,EAAE,UAAU,KAAK,CAAC,EAAE;AACvC,YAAY,QAAQ,EAAE,CAAC;AACvB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AACnD,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,MAAM,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE;AACjD,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC,eAAe,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/H,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACjD,QAAQ,IAAI,aAAa,KAAK,SAAS,EAAE;AACzC,YAAY,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC5D,SAAS;AACT,QAAQ,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;AAChD,YAAY,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC1D,SAAS;AACT,QAAQ,IAAI,WAAW,KAAK,SAAS,EAAE;AACvC,YAAY,IAAI,WAAW,KAAK,CAAC,EAAE;AACnC,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC;AAClH,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,mBAAmB,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAClG,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AACxC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACvD,YAAY,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACxC,SAAS;AACT,QAAQ,MAAM;AACd,YAAY,UAAU,CAAC,MAAM;AAC7B,gBAAgB,MAAM,OAAO,GAAG,WAAW,KAAK,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC;AACxF,gBAAgB,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACxD,aAAa,EAAE,aAAa,CAAC,CAAC;AAC9B,SAAS;AACT,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,EAAE,GAAG,IAAI,cAAc,EAAE,CAAC;AACxC,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,KAAK;AACnC,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;AAC5B,YAAY,IAAI;AAChB,gBAAgB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7C,aAAa;AACb,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;AAC3C,gBAAgB,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK;AACjD,oBAAoB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACrE,wBAAwB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC7C,4BAA4B,OAAO;AACnC,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxC,qBAAqB;AACrB,oBAAoB,OAAO,KAAK,CAAC;AACjC,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACvD,aAAa;AACb,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7D,YAAY,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACpD,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,KAAK;AACnC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACtF,YAAY,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChC,YAAY,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAC5C,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM;AAC/B,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAChD,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AACjF,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC;AACzB,YAAY,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC3C,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,OAAO,KAAK;AACzC,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9D,SAAS,CAAC;AACV,QAAQ,OAAO,EAAE,CAAC,OAAO,CAAC;AAC1B,KAAK;AACL,IAAI,oBAAoB,CAAC,KAAK,EAAE;AAChC,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AAC/C,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,IAAI,SAAS,CAAC,MAAM,EAAE;AACtC,oBAAoB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5C,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,SAAS,CAAC,QAAQ,EAAE,CAAC;AACrC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE;AACxC,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACrE,KAAK;AACL,CAAC;AACD;AACA,MAAM,mBAAmB,CAAC;AAC1B,IAAI,KAAK,CAAC;AACV,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,IAAI,QAAQ,GAAG,EAAE,CAAC;AAClB,IAAI,MAAM,CAAC;AACX,IAAI,IAAI,GAAG,EAAE,CAAC;AACd,IAAI,YAAY,GAAG,EAAE,CAAC;AACtB,IAAI,UAAU,CAAC;AACf,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAClC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACzC,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAS;AACT,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,QAAQ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AAC5C,YAAY,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACvD,gBAAgB,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACvD,gBAAgB,IAAI,CAAC,QAAQ,EAAE;AAC/B,oBAAoB,QAAQ,GAAG,CAAC,CAAC;AACjC,iBAAiB;AACjB,gBAAgB,QAAQ,IAAI,CAAC,CAAC;AAC9B,gBAAgB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AACnD,gBAAgB,IAAI,QAAQ,GAAG,CAAC,EAAE;AAClC,oBAAoB,SAAS;AAC7B,iBAAiB;AACjB,gBAAgB,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACzF,gBAAgB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AACtC,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;AAC9B,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;AACjC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AAC5C,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7D,gBAAgB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3D,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AAC/C,gBAAgB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC1B,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnC,QAAQ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACnD,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC9C,gBAAgB,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,gBAAgB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,gBAAgB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC/C,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAChC,YAAY,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAC/B,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA,MAAM,WAAW;AACjB,EAAE,kEAAkE,CAAC;AACrE;AACA,IAAI,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK;AAC5B,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACd,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,EAAE,OAAO,IAAI,EAAE,EAAE;AACjB,IAAI,EAAE,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACxC,GAAG;AACH,EAAE,OAAO,EAAE;AACX,CAAC,CAAC;AACF;AACA,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,cAAc,KAAK;AACvE,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,QAAQ,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;AACzC,YAAY,MAAM,OAAO,GAAG,cAAc,IAAI,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC5F,YAAY,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5B,SAAS,EAAE,mBAAmB,CAAC,CAAC;AAChC,QAAQ,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtD,QAAQ,eAAe;AACvB,aAAa,IAAI,CAAC,CAAC,MAAM,KAAK;AAC9B,YAAY,YAAY,CAAC,OAAO,CAAC,CAAC;AAClC,YAAY,OAAO,CAAC,MAAM,CAAC,CAAC;AAC5B,SAAS,CAAC;AACV,aAAa,KAAK,CAAC,CAAC,KAAK,KAAK;AAC9B,YAAY,YAAY,CAAC,OAAO,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAS,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AACF;AACA,MAAM,oBAAoB,CAAC;AAC3B,IAAI,QAAQ,CAAC;AACb,IAAI,MAAM,CAAC;AACX,IAAI,QAAQ,CAAC;AACb,IAAI,oBAAoB,CAAC;AACzB,IAAI,gBAAgB,CAAC;AACrB,IAAI,cAAc,CAAC;AACnB,IAAI,oBAAoB,CAAC;AACzB,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,IAAI,iBAAiB,CAAC;AACtB,IAAI,kBAAkB,CAAC;AACvB,IAAI,iBAAiB,CAAC;AACtB,IAAI,oBAAoB,CAAC;AACzB,IAAI,mBAAmB,CAAC;AACxB,IAAI,gBAAgB,CAAC;AACrB,IAAI,IAAI,CAAC;AACT,IAAI,UAAU,CAAC;AACf,IAAI,QAAQ,GAAG,EAAE,CAAC;AAClB,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAChC,IAAI,oBAAoB,GAAG,KAAK,CAAC;AACjC,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAChC,IAAI,cAAc,CAAC;AACnB,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,IAAI,YAAY,GAAG,cAAc,CAAC;AAClC,IAAI,MAAM,CAAC;AACX,IAAI,UAAU,CAAC;AACf,IAAI,iBAAiB,GAAG,IAAI,CAAC;AAC7B,IAAI,wBAAwB,GAAG,IAAI,CAAC;AACpC,IAAI,mBAAmB,GAAG,GAAG,CAAC;AAC9B,IAAI,QAAQ,GAAG,uBAAuB,EAAE,CAAC;AACzC,IAAI,QAAQ,GAAG;AACf,QAAQ,kBAAkB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5G,QAAQ,kBAAkB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5G,QAAQ,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACzG,QAAQ,WAAW,EAAE;AACrB,YAAY,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM;AAC/C,aAAa;AACb,SAAS;AACT,QAAQ,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACpF,QAAQ,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1F,QAAQ,aAAa,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC7F,QAAQ,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1F,QAAQ,YAAY,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1F,QAAQ,qBAAqB,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrH,QAAQ,eAAe,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACnG,QAAQ,iBAAiB,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACzG,QAAQ,sBAAsB,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACxH,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC5C,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AACtD,QAAQ,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAC3C,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,WAAW,GAAG,SAAS,CAAC;AACjF,KAAK;AACL,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,iBAAiB,GAAG;AAC5B,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,UAAU,CAAC,GAAG,EAAE;AAC1B,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACvF,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACxB,YAAY,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AACxF,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,sBAAsB,GAAG;AACjC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,kBAAkB,CAAC,QAAQ,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;AACjE,KAAK;AACL,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;AAC/E,QAAQ,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,UAAU,EAAE;AACxB,gBAAgB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI;AAC1D,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,QAAQ,EAAE,IAAI,CAAC,UAAU;AAC7C,oBAAoB,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ;AACxD,iBAAiB;AACjB,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;AACxC,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;AAC/D,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,cAAc,CAAC;AAC9B,KAAK;AACL,IAAI,MAAM,SAAS,GAAG;AACtB,QAAQ,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AAC3B,QAAQ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACjC,KAAK;AACL,IAAI,0BAA0B,GAAG;AACjC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;AAC7E,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3C,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE;AACnC,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;AAC7G,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,KAAK;AAC7C,gBAAgB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE;AAClE,oBAAoB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACnE,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;AACpD,gBAAgB,IAAI,CAAC,IAAI,EAAE;AAC3B,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AAC7F,oBAAoB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACjE,oBAAoB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AAC9D,wBAAwB,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;AACrE,wBAAwB,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;AACrE,qBAAqB;AACrB,oBAAoB,OAAO,EAAE,CAAC;AAC9B,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AAC3F,oBAAoB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI;AACnE,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,wBAAwB,CAAC,MAAM,EAAE;AACrC,QAAQ,OAAO,WAAW,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;AAC7C,YAAY,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;AAC3C,YAAY,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5D,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;AACxE,YAAY,MAAM,OAAO,GAAG;AAC5B,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI;AAC9D,oBAAoB,QAAQ,EAAE,IAAI,CAAC,UAAU;AAC7C,oBAAoB,UAAU,EAAE,OAAO;AACvC,oBAAoB,gBAAgB;AACpC,oBAAoB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;AACnE,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAC5D,YAAY,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC3C,gBAAgB,OAAO,CAAC,UAAU,CAAC,UAAU,GAAG,OAAO,CAAC;AACxD,gBAAgB,OAAO,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC;AACtE,gBAAgB,OAAO,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AACxE,gBAAgB,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC7E,aAAa;AACb,YAAY,IAAI,CAAC,MAAM,EAAE;AACzB,gBAAgB,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AAC3G,aAAa;AACb,YAAY,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAClE,SAAS,EAAE,IAAI,CAAC,wBAAwB,EAAE,oDAAoD,CAAC,CAAC;AAChG,KAAK;AACL,IAAI,MAAM,oBAAoB,CAAC,WAAW,EAAE;AAC5C,QAAQ,IAAI;AACZ,YAAY,MAAM,WAAW,CAAC;AAC9B,YAAY,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACtC,SAAS;AACT,KAAK;AACL,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAChC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;AACvG,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,KAAK;AACtD,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;AAChD,YAAY,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACxC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;AACtE,YAAY,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACjF,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oEAAoE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxH,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACxD,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,6EAA6E,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/H,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1C,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,2CAA2C,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3F,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrD,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAChC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;AACpG,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM;AACtD,YAAY,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1C,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,OAAO,GAAG;AAC5B,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AACzD,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,QAAQ,EAAE,IAAI,CAAC,UAAU;AACjD,wBAAwB,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ;AAC5D,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAgB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC3E,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;AAC5C,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,mBAAmB,CAAC,KAAK,EAAE;AAC/B,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;AACpE,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAChC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,YAAY,OAAO,IAAI,CAAC,iBAAiB,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACrC,YAAY,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACnD,YAAY,OAAO,IAAI,CAAC,kBAAkB,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACnC,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,WAAW,GAAG,QAAQ,CAAC;AAChF,KAAK;AACL,IAAI,wBAAwB,CAAC,KAAK,EAAE;AACpC,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;AAC5C,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC/C,YAAY,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,mCAAmC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrE,KAAK;AACL,IAAI,2BAA2B,CAAC,IAAI,EAAE;AACtC,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC9D,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACxB,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;AACrG,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACnD,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;AACzD,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;AACzH,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3C,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;AACrD,YAAY,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;AACzD,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;AACrD,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChF,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC1F,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,YAAY,OAAO,IAAI,CAAC,iBAAiB,CAAC;AAC1C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;AAC5G,KAAK;AACL,IAAI,2BAA2B,CAAC,IAAI,EAAE;AACtC,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wFAAwF,CAAC,CAAC;AACpH,QAAQ,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAC1C,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACxC,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC;AACrE,QAAQ,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACxD,YAAY,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;AACzD,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC3C,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;AACrD,YAAY,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;AACzD,SAAS;AACT,QAAQ,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,KAAK;AACtD,YAAY,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC;AACrD,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC;AACtE,YAAY,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACjF,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oEAAoE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxH,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACxD,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC1F,YAAY,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACrC,YAAY,OAAO,IAAI,CAAC,iBAAiB,CAAC;AAC1C,YAAY,OAAO;AACnB,SAAS;AACT,KAAK;AACL,IAAI,mCAAmC,CAAC,IAAI,EAAE,KAAK,EAAE;AACrD,QAAQ,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACnE,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAC;AACvH,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,gEAAgE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9G,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClF,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,kDAAkD,EAAE,IAAI,CAAC,QAAQ,CAAC,6CAA6C,CAAC,CAAC,CAAC;AACjJ,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AAC/B,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,8BAA8B,EAAE,IAAI,CAAC,QAAQ,CAAC,+DAA+D,CAAC,CAAC,CAAC;AAC3I,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AAClD,QAAQ,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gHAAgH,CAAC,CAAC;AAC5I,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAY,IAAI,CAAC,gBAAgB,CAAC,0GAA0G,CAAC,CAAC;AAC9I,YAAY,OAAO,IAAI,CAAC,gBAAgB,CAAC;AACzC,SAAS;AACT,KAAK;AACL,IAAI,uBAAuB,CAAC,KAAK,EAAE;AACnC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;AACpG,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACpC,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3C,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,EAAE;AAClE,YAAY,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,sFAAsF,CAAC,CAAC;AAC9J,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,+EAA+E,CAAC,CAAC;AACvJ,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAY,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,+FAA+F,CAAC,CAAC;AACvK,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,gDAAgD,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9F,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5G,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,2DAA2D,CAAC,CAAC,CAAC;AACrH,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACtE,KAAK;AACL,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;AACvF,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;AAC7F,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,UAAU,EAAE;AACxB,gBAAgB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;AACpD,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,OAAO,CAAC,UAAU,CAAC,OAAO,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACvE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AACpC,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;AAC9E,QAAQ,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,2BAA2B,GAAG;AAClC,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK;AAChC,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE;AAC/C,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACpE,gBAAgB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzC,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;AACpE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,kBAAkB,GAAG;AACzB,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,UAAU,EAAE;AACxB,gBAAgB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AACrD,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,QAAQ,EAAE,IAAI,CAAC,UAAU;AAC7C,oBAAoB,WAAW,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ;AACxD,iBAAiB;AACjB,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC3F,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAC9B,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3C,QAAQ,MAAM,QAAQ,GAAG,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC7C,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;AACzG,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC;AAC1F,QAAQ,IAAI,CAAC,UAAU,EAAE;AACzB,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;AACrH,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,mCAAmC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5E,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC;AACzF,KAAK;AACL,IAAI,kBAAkB,GAAG;AACzB,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE;AACxC,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;AACnC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,qBAAqB,CAAC,cAAc,EAAE;AAC1C,QAAQ,OAAO,OAAO,cAAc,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AACrF,KAAK;AACL,IAAI,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;AACpD,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC7B,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAClC,QAAQ,MAAM,SAAS,GAAG;AAC1B,YAAY,UAAU,EAAE;AACxB,gBAAgB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI;AAC3D,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,kCAAkC,GAAG;AACzC,QAAQ,OAAO,IAAI,CAAC,oBAAoB,EAAE;AAC1C,aAAa,IAAI,CAAC,MAAM,WAAW,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACzD,YAAY,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;AAChD,YAAY,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC;AAC9C,YAAY,MAAM,OAAO,GAAG;AAC5B,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,IAAI,EAAE,iBAAiB;AAC3C,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;AAC7F,YAAY,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAClE,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,wIAAwI,CAAC,CAAC,CAAC;AAC9K,KAAK;AACL,IAAI,2BAA2B,CAAC,KAAK,EAAE;AACvC,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC;AAC5C,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,OAAO,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,2IAA2I,CAAC,GAAG,SAAS,CAAC;AAChO,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACvC,YAAY,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACxC,YAAY,OAAO,IAAI,CAAC,oBAAoB,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACzC,QAAQ,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;AACtC,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;AAChF,KAAK;AACL,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,uBAAuB,GAAG;AAC9B,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,4BAA4B,GAAG;AACnC,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;AACzD,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,CAAC,OAAO,KAAK;AACxC,YAAY,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM;AAC5D,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC,CAAC;AACf,SAAS,EAAE,IAAI,CAAC,wBAAwB,EAAE,mEAAmE,CAAC,CAAC;AAC/G,KAAK;AACL,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAChC,YAAY,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACpD,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAC5E,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;AACtE,QAAQ,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AAChC,QAAQ,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzD,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,MAAM,wBAAwB,GAAG,sFAAsF,CAAC;AAChI,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACxE,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AACtG,QAAQ,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC;AACjF,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC9D,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACtD,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC7D,YAAY,MAAM,IAAI,CAAC,kCAAkC,EAAE,CAAC;AAC5D,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAClH,QAAQ,IAAI,kBAAkB,CAAC,OAAO,EAAE;AACxC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;AAC/D,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AACvC,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACtD,SAAS;AACT,QAAQ,MAAM,IAAI,CAAC,kCAAkC,EAAE,CAAC;AACxD,KAAK;AACL,IAAI,0BAA0B,CAAC,aAAa,EAAE;AAC9C,QAAQ,OAAO,CAAC,CAAC,aAAa,IAAI,aAAa,KAAK,aAAa,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/J,KAAK;AACL,IAAI,+BAA+B,CAAC,MAAM,EAAE,OAAO,EAAE;AACrD,QAAQ,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,MAAM,KAAK,OAAO,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACvL,KAAK;AACL,IAAI,aAAa,CAAC,OAAO,EAAE;AAC3B,QAAQ,MAAM,wBAAwB,GAAG,sFAAsF,CAAC;AAChI,QAAQ,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,OAAO,KAAK;AACrD,YAAY,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;AAC7C,YAAY,MAAM,OAAO,GAAG;AAC5B,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AACzD,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,MAAM;AACxD,gBAAgB,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAC5C,oBAAoB,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC1E,iBAAiB,CAAC,CAAC;AACnB,aAAa,EAAE,IAAI,CAAC,CAAC;AACrB,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,CAAC,CAAC;AAC7D,QAAQ,WAAW,CAAC,KAAK,CAAC,MAAM;AAChC,YAAY,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzC,gBAAgB,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACvD,gBAAgB,OAAO,IAAI,CAAC,kBAAkB,CAAC;AAC/C,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,WAAW,CAAC;AAC3B,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,WAAW,EAAE;AAC7C,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACzE,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,MAAM,CAAC,GAAG,EAAE;AACnC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1C,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC;AAC/B,SAAS;AACT,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrF,QAAQ,OAAO,IAAI,CAAC,oBAAoB,CAAC;AACzC,KAAK;AACL,CAAC;AACD;AACA,MAAM,kBAAkB,GAAG,CAAC,WAAW,EAAE,QAAQ,KAAK;AACtD,IAAI,IAAI,IAAI,GAAG,WAAW,CAAC;AAC3B,IAAI,OAAO,MAAM;AACjB,QAAQ,IAAI,EAAE,CAAC;AACf,QAAQ,IAAI,IAAI,KAAK,CAAC,EAAE;AACxB,YAAY,QAAQ,EAAE,CAAC;AACvB,SAAS;AACT,KAAK,CAAC;AACN,CAAC,CAAC;AACF;AACA,MAAM,eAAe,CAAC;AACtB,IAAI,mBAAmB,CAAC;AACxB,IAAI,KAAK,GAAG,EAAE,CAAC;AACf,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC7B,IAAI,WAAW,CAAC,mBAAmB,GAAG,CAAC,EAAE;AACzC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,KAAK;AACL,IAAI,OAAO,CAAC,MAAM,EAAE;AACpB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AACzD,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;AAChC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,YAAY,GAAG;AACzB,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACrC,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAClC,YAAY,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACjD,YAAY,IAAI,CAAC,SAAS,EAAE;AAC5B,gBAAgB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9C,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI;AAChB,gBAAgB,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC;AAC9D,gBAAgB,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAChD,aAAa;AACb,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxC,aAAa;AACb,YAAY,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACtC,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC/E,KAAK;AACL,CAAC;AACD;AACA,SAAS,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE;AACpF,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;AACxB,QAAQ,MAAM,GAAG,QAAQ,CAAC;AAC1B,KAAK;AACL,IAAI,eAAe,GAAG,eAAe,IAAI,CAAC,SAAS,CAAC,CAAC;AACrD,IAAI,aAAa,GAAG,aAAa,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/C,IAAI,IAAI,QAAQ,GAAG,MAAM,KAAK,QAAQ,CAAC;AACvC,IAAI,IAAI,eAAe,GAAG,KAAK,CAAC;AAChC,IAAI,IAAI,cAAc,CAAC;AACvB,IAAI,IAAI,aAAa,GAAG,KAAK,CAAC;AAC9B,IAAI,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAC;AAChD,IAAI,UAAU,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC;AAC1D,IAAI,UAAU,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AAClD,IAAI,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,KAAK,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,IAAI,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7D,IAAI,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,IAAI,IAAI,eAAe,EAAE;AACzB,QAAQ,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;AACxC,YAAY,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,IAAI,aAAa,EAAE;AACvB,QAAQ,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;AACtC,YAAY,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,EAAE,CAAC;AAC3B,IAAI,SAAS,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAQ,cAAc,GAAG,OAAO,CAAC;AACjC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,OAAO,CAAC,EAAE,CAAC,CAAC;AAC5B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,WAAW,CAAC;AAC5B,YAAY,IAAI,MAAM,KAAK,QAAQ,EAAE;AACrC,gBAAgB,WAAW,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAC/G,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACzD,gBAAgB,MAAM,OAAO,GAAG;AAChC,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,WAAW,EAAE,MAAM;AACvC,oBAAoB,MAAM,EAAE,QAAQ;AACpC,oBAAoB,OAAO;AAC3B,iBAAiB,CAAC;AAClB,gBAAgB,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,aAAa;AACb,YAAY,WAAW;AACvB,iBAAiB,IAAI,CAAC,MAAM;AAC5B,gBAAgB,YAAY,EAAE,CAAC;AAC/B,gBAAgB,OAAO,CAAC,EAAE,CAAC,CAAC;AAC5B,aAAa,CAAC;AACd,iBAAiB,KAAK,CAAC,CAAC,GAAG,KAAK;AAChC,gBAAgB,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5F,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,SAAS,KAAK,GAAG;AACrB,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE;AACjC,YAAY,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AACrC,SAAS;AACT,QAAQ,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAC3D,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,WAAW,EAAE,MAAM;AAC/B,YAAY,MAAM,EAAE,QAAQ;AAC5B,SAAS,CAAC;AACV,QAAQ,eAAe,GAAG,KAAK,CAAC;AAChC,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC;AAC7B,aAAa,IAAI,CAAC,MAAM;AACxB,YAAY,QAAQ,GAAG,KAAK,CAAC;AAC7B,YAAY,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAS,CAAC;AACV,aAAa,KAAK,CAAC,MAAM;AACzB,YAAY,QAAQ,GAAG,KAAK,CAAC;AAC7B,YAAY,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,SAAS,YAAY,GAAG;AAC5B,QAAQ,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC;AAC3C,QAAQ,QAAQ,GAAG,IAAI,CAAC;AACxB,QAAQ,MAAM,YAAY,GAAG,eAAe,CAAC;AAC7C,QAAQ,eAAe,GAAG,KAAK,CAAC;AAChC,QAAQ,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,SAAS,4BAA4B,GAAG;AAC5C,QAAQ,aAAa,GAAG,KAAK,CAAC;AAC9B,QAAQ,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;AAC3C,QAAQ,QAAQ,GAAG,KAAK,CAAC;AACzB,QAAQ,eAAe,GAAG,IAAI,CAAC;AAC/B,QAAQ,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,SAAS,wBAAwB,GAAG;AACxC,QAAQ,aAAa,GAAG,IAAI,CAAC;AAC7B,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;AAC1E,YAAY,IAAI,CAAC,cAAc,CAAC,CAAC;AACjC,SAAS;AACT,KAAK;AACL,IAAI,SAAS,QAAQ,CAAC,QAAQ,EAAE;AAChC,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,SAAS,MAAM,CAAC,QAAQ,EAAE;AAC9B,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAY,QAAQ,EAAE,CAAC;AACvB,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACrC,QAAQ,IAAI,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;AACnC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC;AACzC,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzB,KAAK;AACL,IAAI,SAAS,oBAAoB,CAAC,GAAG,EAAE;AACvC,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;AACnC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC;AACzC,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,SAAS,gBAAgB,GAAG;AAChC,QAAQ,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,WAAW,GAAG,EAAE,CAAC;AACzB,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;AACrC,QAAQ,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACzD,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,0BAA0B,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;AACnH,gBAAgB,MAAM,EAAE,GAAG,IAAI,cAAc,EAAE,CAAC;AAChD,gBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5D,gBAAgB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9C,oBAAoB,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM;AACvD,wBAAwB,MAAM,CAAC,IAAI,CAAC,CAAC,wCAAwC,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjJ,wBAAwB,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;AACpD,4BAA4B,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC;AAC5D,iCAAiC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9D,iCAAiC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,yBAAyB,CAAC,CAAC;AAC3B,wBAAwB,WAAW,GAAG,EAAE,CAAC;AACzC,wBAAwB,WAAW,EAAE,CAAC;AACtC,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC,OAAO,CAAC;AAClC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAChC,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,gBAAgB,EAAE,CAAC;AAC9D,QAAQ,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;AAC1C,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AACjC,YAAY,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;AAC5C,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC;AACzC,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,WAAW,CAAC,SAAS,CAAC,GAAG;AACrC,gBAAgB,OAAO,EAAE,CAAC,UAAU,KAAK;AACzC,oBAAoB,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;AAClD,oBAAoB,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;AAC1C,oBAAoB,OAAO,CAAC,UAAU,CAAC,CAAC;AACxC,iBAAiB;AACjB,gBAAgB,KAAK,EAAE,CAAC,QAAQ,KAAK;AACrC,oBAAoB,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,oBAAoB,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;AAClD,oBAAoB,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;AACxC,oBAAoB,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrC,iBAAiB;AACjB,aAAa,CAAC;AACd,YAAY,UAAU;AACtB,iBAAiB,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;AACnC,iBAAiB,KAAK,CAAC,CAAC,GAAG,KAAK;AAChC,gBAAgB,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AACtD,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,SAAS,iBAAiB,CAAC,GAAG,EAAE;AACpC,QAAQ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,GAAG,gBAAgB,EAAE,CAAC;AAC9E,QAAQ,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC;AAC1C,QAAQ,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;AACxC,QAAQ,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,IAAI;AACZ,QAAQ,KAAK;AACb,QAAQ,QAAQ;AAChB,QAAQ,MAAM;AACd,QAAQ,IAAI;AACZ,QAAQ,iBAAiB;AACzB,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK;AAChC,YAAY,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK;AACzC,gBAAgB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE;AAC3C,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,IAAI;AACpB,oBAAoB,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClC,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,EAAE;AAC1B,oBAAoB,MAAM,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/G,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,QAAQ,EAAE,CAAC,QAAQ,KAAK,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC7D,QAAQ,SAAS,EAAE,CAAC,QAAQ,KAAK,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC/D,QAAQ,YAAY,EAAE,CAAC,QAAQ,KAAK,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;AACrE,QAAQ,IAAI,MAAM,GAAG;AACrB,YAAY,OAAO,UAAU,CAAC,MAAM,CAAC;AACrC,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG;AACrB,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS;AACT,KAAK,CAAC;AACN,CAAC;AACD;AACA,MAAM,UAAU,CAAC;AACjB,IAAI,QAAQ,CAAC;AACb,IAAI,MAAM,CAAC;AACX,IAAI,eAAe,GAAG,CAAC,CAAC;AACxB,IAAI,MAAM,CAAC;AACX,IAAI,KAAK,CAAC;AACV,IAAI,IAAI,CAAC;AACT,IAAI,gBAAgB,CAAC;AACrB,IAAI,gBAAgB,CAAC;AACrB,IAAI,YAAY,CAAC;AACjB,IAAI,QAAQ,CAAC;AACb,IAAI,eAAe,GAAG,EAAE,CAAC;AACzB,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,IAAI,QAAQ,GAAG,uBAAuB,EAAE,CAAC;AACzC,IAAI,UAAU,GAAG,KAAK,CAAC;AACvB,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,IAAI,SAAS,CAAC;AACd,IAAI,iBAAiB,CAAC;AACtB,IAAI,YAAY,CAAC;AACjB,IAAI,gBAAgB,CAAC;AACrB,IAAI,WAAW,CAAC;AAChB,IAAI,cAAc,GAAG,KAAK,CAAC;AAC3B,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAC9B,IAAI,uBAAuB,GAAG,EAAE,CAAC;AACjC,IAAI,UAAU,GAAG,YAAY,CAAC;AAC9B,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAC3C,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACxC,IAAI,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7C,IAAI,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;AACxC,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAI,cAAc,GAAG,IAAI,CAAC;AAC1B,IAAI,SAAS,CAAC;AACd,IAAI,QAAQ,GAAG,EAAE,CAAC;AAClB,IAAI,YAAY,CAAC;AACjB,IAAI,YAAY,GAAG,IAAI,CAAC;AACxB,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAC7B,IAAI,WAAW,CAAC;AAChB,IAAI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE;AAClC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;AAClC,QAAQ,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,IAAI,EAAE,CAAC;AACtE,QAAQ,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,IAAI,IAAI,CAAC;AACxE,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC7B,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AAChG,SAAS;AACT,aAAa,IAAI,QAAQ,CAAC,YAAY,EAAE;AACxC,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAqB,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;AACjH,SAAS;AACT,aAAa,IAAI,QAAQ,CAAC,WAAW,EAAE;AACvC,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjI,SAAS;AACT,aAAa,IAAI,QAAQ,CAAC,EAAE,KAAK,SAAS,EAAE;AAC5C,YAAY,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,SAAS;AACT,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAClD,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACzE,QAAQ,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClH,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChG,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1D,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;AAChD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,eAAe,CAAC,QAAQ,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY;AACpD,YAAY,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAC3D,gBAAgB,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;AAC1G,aAAa;AACb,YAAY,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;AACtD,gBAAgB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;AAChG,aAAa;AACb,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,yCAAyC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtG,YAAY,MAAM,qBAAqB,GAAG,QAAQ,CAAC,IAAI,KAAK,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC3I,YAAY,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC;AAC1D,YAAY,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,KAAK,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;AACtH,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1D,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACvC,YAAY,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC1C,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;AAC/F,YAAY,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACzC,YAAY,IAAI;AAChB,gBAAgB,MAAM,aAAa,CAAC;AACpC,gBAAgB,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,KAAK,qBAAqB,CAAC;AACjF,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,2EAA2E,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;AAClI,gBAAgB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/C,gBAAgB,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AACpD,aAAa;AACb,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;AAC1H,gBAAgB,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;AAC1D,gBAAgB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/C,gBAAgB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC1C,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,gBAAgB,CAAC,QAAQ,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,iBAAiB,CAAC,GAAG,EAAE;AAC3B,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AAC3B,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU;AACrC,YAAY,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE;AACnD,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC1D,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,aAAa;AACb,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3D,SAAS;AACT,aAAa;AACb,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACjE,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AACtD,aAAa;AACb,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AAC5D,SAAS;AACT,KAAK;AACL,IAAI,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE;AAC7B,QAAQ,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAClC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;AACtD,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC5C,SAAS;AACT,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC9B,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC;AACxD,QAAQ,OAAO;AACf,YAAY,IAAI;AAChB,YAAY,EAAE;AACd,SAAS,CAAC;AACV,KAAK;AACL,IAAI,GAAG,CAAC,IAAI,EAAE;AACd,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtE,KAAK;AACL,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,SAAS,CAAC,QAAQ,EAAE;AACxB,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM;AACnC,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACxD,YAAY,QAAQ,CAAC,aAAa,CAAC,CAAC;AACpC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,YAAY,CAAC,QAAQ,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,MAAM,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE;AACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,YAAY,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;AAChF,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACjD,YAAY,WAAW,GAAG,OAAO,IAAI,WAAW,CAAC;AACjD,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5H,QAAQ,IAAI;AACZ,YAAY,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACxC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACxF,YAAY,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACzD,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAC1E,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,yBAAyB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,YAAY,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC3D,YAAY,OAAO,QAAQ,CAAC;AAC5B,SAAS;AACT,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxC,gBAAgB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;AACjH,gBAAgB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1C,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AACnC,SAAS;AACT,KAAK;AACL,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AAChC,QAAQ,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACrC,KAAK;AACL,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACvB,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,QAAQ,EAAE,CAAC;AACvB,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE;AACnD,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AACrE,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;AAC7H,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,MAAM,cAAc,GAAG;AAC/B,YAAY,MAAM,EAAE,QAAQ;AAC5B,YAAY,IAAI,EAAE,cAAc;AAChC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAChC,YAAY,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACzE,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACrD,aAAa,IAAI,CAAC,CAAC,GAAG,KAAK;AAC3B,YAAY,OAAO,GAAG,CAAC,KAAK,CAAC;AAC7B,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;AAC1C,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAChD,SAAS;AACT,KAAK;AACL,IAAI,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE;AACrC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAClE,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE;AACpC,YAAY,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AACzD,gBAAgB,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AACpD,gBAAgB,IAAI,OAAO,KAAK,SAAS,EAAE;AAC3C,oBAAoB,IAAI;AACxB,wBAAwB,OAAO,CAAC,OAAO,CAAC,CAAC;AACzC,qBAAqB;AACrB,oBAAoB,OAAO,KAAK,EAAE;AAClC,wBAAwB,IAAI;AAC5B,4BAA4B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACnG,yBAAyB;AACzB,wBAAwB,OAAO,WAAW,EAAE;AAC5C,4BAA4B,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AACzE,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,uBAAuB,CAAC,SAAS,EAAE;AACvC,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AAC3C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AACpC,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE;AACpD,gBAAgB,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACnF,gBAAgB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,aAAa;AACb,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC/C,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACtC,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAClD,SAAS;AACT,KAAK;AACL,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAChC,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;AAC/C,QAAQ,IAAI,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;AAC7C,YAAY,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,EAAE;AAChD,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AACtF,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnC,gBAAgB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACjD,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;AAC9C,iBAAiB,KAAK,CAAC,MAAM;AAC7B,gBAAgB,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC;AACxG,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK;AACL,IAAI,sBAAsB,CAAC,GAAG,EAAE;AAChC,QAAQ,IAAI,MAAM,CAAC;AACnB,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AACrC,YAAY,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACpD,SAAS;AACT,aAAa;AACb,YAAY,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACpD,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,SAAS;AACT,QAAQ,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,gBAAgB,GAAG;AACvB,QAAQ,OAAO,WAAW,CAAC,CAAC,OAAO,KAAK;AACxC,YAAY,IAAI,KAAK,CAAC;AACtB,YAAY,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,EAAE,MAAM;AACtD,gBAAgB,IAAI,KAAK,EAAE;AAC3B,oBAAoB,KAAK,EAAE,CAAC;AAC5B,iBAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC,CAAC;AACf,YAAY,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,KAAK;AACnD,gBAAgB,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5C,oBAAoB,OAAO,KAAK,EAAE,CAAC;AACnC,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE;AAC7C,oBAAoB,OAAO,KAAK,EAAE,CAAC;AACnC,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,SAAS,EAAE,KAAK,EAAE,yEAAyE,CAAC,CAAC;AAC7F,KAAK;AACL,IAAI,wBAAwB,CAAC,QAAQ,EAAE;AACvC,QAAQ,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;AAC5C,YAAY,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,OAAO,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;AAC3J,KAAK;AACL,IAAI,mBAAmB,CAAC,QAAQ,EAAE;AAClC,QAAQ,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,EAAE;AAC7C,YAAY,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;AAC7E,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;AAC7C,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACzD,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,4GAA4G,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAC5O,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;AACjE,QAAQ,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC/C,QAAQ,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClH,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChG,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1D,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;AACjE,QAAQ,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;AAC1C,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,8CAA8C,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtL,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACvD,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;AAC7C,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACnC,KAAK;AACL,IAAI,oBAAoB,CAAC,OAAO,EAAE;AAClC,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AACxD,YAAY,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3C,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;AAChD,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;AAC7D,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;AAC5E,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,IAAI;AAChB,gBAAgB,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AACrG,gBAAgB,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;AACzC,oBAAoB,OAAO,KAAK,CAAC;AACjC,iBAAiB;AACjB,gBAAgB,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,aAAa;AACb,YAAY,OAAO,EAAE,EAAE;AACvB,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO;AACf,YAAY,GAAG;AACf,YAAY,OAAO,EAAE,GAAG,CAAC,IAAI;AAC7B,SAAS,CAAC;AACV,KAAK;AACL,IAAI,mBAAmB,CAAC,OAAO,EAAE;AACjC,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAChD,QAAQ,IAAI;AACZ,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/C,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAChD,gBAAgB,OAAO,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACnD,aAAa,CAAC;AACd,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACnD,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS;AACT,gBAAgB;AAChB,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC;AAC9C,SAAS;AACT,KAAK;AACL,IAAI,oBAAoB,CAAC,OAAO,EAAE;AAClC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAC3B,YAAY,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAChE,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,GAAG,EAAE,OAAO;AACxB,YAAY,OAAO,EAAE,OAAO,CAAC,IAAI;AACjC,SAAS,CAAC;AACV,KAAK;AACL,IAAI,mBAAmB,CAAC,OAAO,EAAE;AACjC,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE;AACvC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAClC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAY,IAAI,CAAC,WAAW,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC9D,SAAS;AACT,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACnC,QAAQ,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC7E,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAC5C,YAAY,cAAc;AAC1B,SAAS,CAAC;AACV,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE;AAC9B,YAAY,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AACnD,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE;AAClG,YAAY,SAAS;AACrB,YAAY,OAAO;AACnB,YAAY,wBAAwB;AACpC,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,WAAW,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACjD,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,YAAY,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AACxE,YAAY,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AACrE,SAAS;AACT,QAAQ,IAAI;AACZ,YAAY,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAC5G,YAAY,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AACtC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AACnF,YAAY,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;AAC7C,YAAY,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,iBAAiB,CAAC;AACjE,YAAY,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,iBAAiB,CAAC;AACjE,YAAY,IAAI,UAAU,CAAC,OAAO,EAAE;AACpC,gBAAgB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;AAC7D,gBAAgB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;AACpD,aAAa;AACb,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACnC,YAAY,OAAO,UAAU,CAAC,iBAAiB,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACrH,YAAY,MAAM,GAAG,CAAC;AACtB,SAAS;AACT,gBAAgB;AAChB,YAAY,IAAI,MAAM,EAAE,YAAY,IAAI,MAAM,CAAC,SAAS,EAAE;AAC1D,gBAAgB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC5D,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,MAAM,eAAe,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE;AACvE,QAAQ,IAAI,UAAU,CAAC;AACvB,QAAQ,OAAO,IAAI,EAAE;AACrB,YAAY,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAClF,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,wBAAwB,EAAE;AACvD,gBAAgB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC9E,gBAAgB,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,SAAS,EAAE;AAC7D,oBAAoB,QAAQ,CAAC,cAAc,CAAC,KAAK;AACjD,wBAAwB,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;AAC3E,6BAA6B,IAAI;AACjC,6BAA6B,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChD,iBAAiB;AACjB,gBAAgB,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AACvD,aAAa;AACb,iBAAiB,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;AAC7C,gBAAgB,UAAU,GAAG,GAAG,CAAC;AACjC,gBAAgB,MAAM;AACtB,aAAa;AACb,iBAAiB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;AAC3C,gBAAgB,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AACxE,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,iDAAiD,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9F,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL,IAAI,MAAM,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE;AAC7C,QAAQ,MAAM,cAAc,GAAG,EAAE,CAAC;AAClC,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAChD,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE;AACjC,YAAY,IAAI,SAAS,EAAE;AAC3B,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AACrE,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,EAAE;AAC1B,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,yCAAyC,EAAE,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,iBAAiB;AACjB,aAAa;AACb,YAAY,cAAc,CAAC,MAAM,GAAG,eAAe,CAAC;AACpD,YAAY,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AACvD,YAAY,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACpD,SAAS;AACT,aAAa,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE;AAC7C,YAAY,cAAc,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC5C,YAAY,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC;AACnD,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,SAAS,EAAE;AACzD,gBAAgB,cAAc,CAAC,KAAK;AACpC,oBAAoB,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC;AACtE,yBAAyB,IAAI;AAC7B,yBAAyB,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC5C,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACvD,aAAa;AACb,SAAS;AACT,aAAa,IAAI,MAAM,CAAC,KAAK,EAAE;AAC/B,YAAY,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC;AACnD,YAAY,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAChD,SAAS;AACT,aAAa,IAAI,MAAM,CAAC,QAAQ,EAAE;AAClC,YAAY,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC;AAC7C,YAAY,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;AACnD,YAAY,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;AACpD,SAAS;AACT,aAAa,IAAI,MAAM,CAAC,QAAQ,EAAE;AAClC,YAAY,cAAc,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtD,YAAY,cAAc,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACpE,SAAS;AACT,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7E,SAAS;AACT,QAAQ,OAAO,cAAc,CAAC;AAC9B,KAAK;AACL,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC5C,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AACpC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzC,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK;AACxD,YAAY,OAAO,CAAC,KAAK,EAAE,CAAC;AAC5B,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AAC3C,YAAY,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC7C,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC7C,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC9D,KAAK;AACL,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM;AAC1C,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC;AACxB,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;AACtB,KAAK;AACL,CAAC;AACD;AACA,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACjE,MAAM,MAAM,CAAC;AACb,IAAI,IAAI,CAAC;AACT,IAAI,MAAM,CAAC;AACX,IAAI,OAAO,OAAO,CAAC;AACnB,IAAI,OAAO,iBAAiB,GAAG,mBAAmB,CAAC;AACnD,IAAI,OAAO,QAAQ,CAAC;AACpB,IAAI,IAAI,CAAC;AACT,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,IAAI,aAAa,CAAC;AAClB,IAAI,aAAa,CAAC;AAClB,IAAI,cAAc,CAAC;AACnB,IAAI,mBAAmB,CAAC;AACxB,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;AACrC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAY,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACjD,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7B,SAAS;AACT,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAK,CAAC;AAC1C,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC/B,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,IAAI,EAAE;AACpB,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK;AAClE,YAAY,OAAO,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC;AAC3C,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACd,QAAQ,IAAI,WAAW,KAAK,SAAS,EAAE;AACvC,YAAY,OAAO,WAAW,CAAC;AAC/B,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC3C,YAAY,IAAI,GAAG,KAAK,IAAI,EAAE;AAC9B,gBAAgB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;AACxE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;AACtF,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AACvC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;AACjE,KAAK;AACL,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AACvC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;AACjE,KAAK;AACL,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;AAC/B,QAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,KAAK,CAAC,OAAO,EAAE;AACnB,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE;AACxB,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE;AACnC,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAQ,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,OAAO,CAAC,CAAC;AAC5F,QAAQ,OAAO,QAAQ,IAAI,cAAc,CAAC;AAC1C,KAAK;AACL,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;AAC1C,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;AAC/C,QAAQ,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,KAAK,EAAE;AACzC,YAAY,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC;AAClC,YAAY,IAAI,CAAC,CAAC,KAAK,EAAE;AACzB,gBAAgB,OAAO;AACvB,oBAAoB,OAAO;AAC3B,wBAAwB,IAAI;AAC5B,wBAAwB,CAAC,CAAC,KAAK;AAC/B,6BAA6B,KAAK,CAAC,IAAI,CAAC;AACxC,6BAA6B,KAAK,CAAC,CAAC,CAAC;AACrC,6BAA6B,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;AACzD,YAAY,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC3C,YAAY,IAAI,OAAO,EAAE;AACzB,gBAAgB,IAAI;AACpB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACxF,wBAAwB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE;AACjE,4BAA4B,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7C,4BAA4B,MAAM,EAAE,UAAU;AAC9C,4BAA4B,KAAK;AACjC,yBAAyB,CAAC,CAAC;AAC3B,qBAAqB;AACrB,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACpC,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;AAC5B,YAAY,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1C,gBAAgB,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACxC,gBAAgB,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AACtH,gBAAgB,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AACjD,aAAa;AACb,YAAY,MAAM,OAAO,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACjE,YAAY,QAAQ,KAAK;AACzB,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9C,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAC1C,wBAAwB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAClD,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChD,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,MAAM;AAC3B,oBAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,MAAM;AAC3B,oBAAoB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7C,oBAAoB,MAAM;AAC1B,gBAAgB,KAAK,OAAO;AAC5B,oBAAoB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACrD,oBAAoB,MAAM;AAC1B,aAAa;AACb,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AACnD,MAAM,2BAA2B,GAAG,SAAS,CAAC;AAC9C,MAAM,6BAA6B,GAAG,WAAW,CAAC;AAClD,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;AACrD,MAAM,wBAAwB,GAAG,eAAe,CAAC;AACjD,MAAM,4BAA4B,GAAG,mBAAmB,CAAC;AACzD,MAAM,6BAA6B,GAAG,oBAAoB,CAAC;AAC3D,MAAM,8BAA8B,GAAG,qBAAqB,CAAC;AAC7D,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;AACrD,MAAM,4BAA4B,GAAG,mBAAmB,CAAC;AACzD,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AACnD,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;AACrD,MAAM,0BAA0B,GAAG,QAAQ,CAAC;AAC5C;AACA,MAAM,wBAAwB,GAAG;AACjC,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO;AACf,YAAY,yBAAyB;AACrC,YAAY,2BAA2B;AACvC,YAAY,6BAA6B;AACzC,YAAY,0BAA0B;AACtC,YAAY,wBAAwB;AACpC,YAAY,4BAA4B;AACxC,YAAY,6BAA6B;AACzC,YAAY,8BAA8B;AAC1C,YAAY,0BAA0B;AACtC,YAAY,4BAA4B;AACxC,YAAY,yBAAyB;AACrC,YAAY,0BAA0B;AACtC,YAAY,0BAA0B;AACtC,SAAS,CAAC;AACV,KAAK;AACL,CAAC,CAAC;AACF;AACA,IAAI,OAAO,GAAG,OAAO,CAAC;AACtB;AACA,SAAS,aAAa,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE;AACtD,IAAI,IAAI,mBAAmB,CAAC;AAC5B,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;AACxB,QAAQ,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;AACxE,QAAQ,IAAI,qBAAqB,EAAE;AACnC,YAAY,IAAI;AAChB,gBAAgB,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;AACxE,aAAa;AACb,YAAY,MAAM;AAClB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,SAAS,aAAa,GAAG;AAC7B,QAAQ,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC;AAC/C,QAAQ,MAAM,eAAe,GAAG,QAAQ,EAAE,eAAe,IAAI,CAAC,CAAC;AAC/D,QAAQ,MAAM,iBAAiB,GAAG,QAAQ,EAAE,iBAAiB,CAAC;AAC9D,QAAQ,MAAM,iBAAiB,GAAG,QAAQ,EAAE,iBAAiB,CAAC;AAC9D,QAAQ,MAAM,SAAS,GAAG,qBAAqB,CAAC;AAChD,QAAQ,IAAI,EAAE,GAAG,QAAQ,EAAE,EAAE,CAAC;AAC9B,QAAQ,MAAM,YAAY,GAAG,QAAQ,EAAE,YAAY,CAAC;AACpD,QAAQ,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC;AACxC,QAAQ,MAAM,WAAW,GAAG,QAAQ,EAAE,WAAW,IAAI,SAAS,CAAC;AAC/D,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;AAChC,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,KAAK,EAAE;AAChF,YAAY,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,EAAE;AAC7C,YAAY,EAAE,GAAG,SAAS,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC;AACvB,QAAQ,IAAI,QAAQ,CAAC;AACrB,QAAQ,IAAI,GAAG,CAAC;AAChB,QAAQ,IAAI,WAAW,CAAC;AACxB,QAAQ,IAAI,MAAM,CAAC;AACnB,QAAQ,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;AACzC,QAAQ,IAAI,aAAa,GAAG,OAAO,CAAC;AACpC,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AAC7C,YAAY,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACzC,YAAY,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;AAC/B,YAAY,IAAI,QAAQ,CAAC,GAAG,EAAE;AAC9B,gBAAgB,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/C,gBAAgB,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7C,aAAa;AACb,YAAY,aAAa,GAAG,QAAQ,CAAC,WAAW,IAAI,UAAU,CAAC;AAC/D,YAAY,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC;AAChD,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;AACjC,YAAY,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AAC9B,YAAY,IAAI,mBAAmB,EAAE;AACrC,gBAAgB,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC;AACtD,gBAAgB,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC;AACpD,gBAAgB,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC;AAC5D,aAAa;AACb,SAAS;AACT,aAAa,IAAI,OAAO,MAAM,EAAE,cAAc,KAAK,WAAW,EAAE;AAChE,YAAY,QAAQ,GAAG,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;AACzD,YAAY,GAAG,GAAG,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC;AAC7C,YAAY,WAAW,GAAG,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC;AACrD,YAAY,MAAM,GAAG,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC;AACnD,YAAY,aAAa,GAAG,MAAM,EAAE,cAAc,CAAC,WAAW,IAAI,UAAU,CAAC;AAC7E,YAAY,UAAU,GAAG,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;AAC3D,SAAS;AACT,aAAa,CAAC;AACd,QAAQ,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC;AACrE,QAAQ,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACnD,QAAQ,IAAI,QAAQ,GAAG;AACvB,YAAY,WAAW,EAAE,aAAa;AACtC,YAAY,eAAe,EAAE,OAAO;AACpC,YAAY,QAAQ;AACpB,YAAY,QAAQ,EAAE,UAAU;AAChC,YAAY,OAAO,EAAE,GAAG;AACxB,YAAY,MAAM;AAClB,YAAY,WAAW;AACvB,YAAY,GAAG,EAAE,GAAG,CAAC,OAAO,IAAI,OAAO;AACvC,SAAS,CAAC;AACV,QAAQ,IAAI,aAAa,CAAC,QAAQ,EAAE;AACpC,YAAY,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AACvE,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,QAAQ;AACpB,YAAY,iBAAiB;AAC7B,YAAY,EAAE;AACd,YAAY,YAAY;AACxB,YAAY,WAAW;AACvB,YAAY,MAAM;AAClB,YAAY,eAAe;AAC3B,YAAY,iBAAiB;AAC7B,YAAY,WAAW;AACvB,SAAS,CAAC;AACV,KAAK;AACL,IAAI,SAAS,WAAW,GAAG;AAC3B,QAAQ,IAAI,OAAO,aAAa,CAAC,QAAQ,KAAK,WAAW,EAAE;AAC3D,YAAY,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,OAAO,aAAa,CAAC,QAAQ,KAAK,SAAS,IAAI,aAAa,CAAC,QAAQ,EAAE;AACnF,YAAY,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC;AACrD,SAAS;AACT,QAAQ,IAAI,OAAO,aAAa,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACxD,YAAY,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChG,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,SAAS,cAAc,GAAG;AAC9B,QAAQ,IAAI,aAAa,CAAC,WAAW,EAAE;AACvC,YAAY,OAAO,aAAa,CAAC,WAAW,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,OAAO,QAAQ,CAAC,eAAe,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,cAAc,KAAK,WAAW,EAAE;AAC3F,YAAY,OAAO,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC;AACrD,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAC/B,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;AAC5B,YAAY,IAAI,mBAAmB,EAAE;AACrC,gBAAgB,OAAO,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAClE,aAAa;AACb,YAAY,OAAO,QAAQ,GAAG,GAAG,CAAC;AAClC,SAAS;AACT,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AAC9E,YAAY,OAAO,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,SAAS,OAAO,GAAG;AACvB,QAAQ,IAAI,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE;AACpD,YAAY,OAAO;AACnB,gBAAgB,KAAK,EAAE,aAAa,CAAC,IAAI;AACzC,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,IAAI,aAAa,CAAC,IAAI,EAAE;AAChC,YAAY,OAAO,aAAa,CAAC,IAAI,CAAC;AACtC,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,OAAO,EAAE;AAClF,YAAY,OAAO;AACnB,gBAAgB,YAAY,EAAE,mBAAmB,CAAC,OAAO;AACzD,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,IAAI,aAAa,CAAC,OAAO,EAAE,WAAW,IAAI,aAAa,CAAC,OAAO,EAAE,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE;AACxH,YAAY,OAAO;AACnB,gBAAgB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACtD,aAAa,CAAC;AACd,SAAS;AACT,KAAK;AACL,IAAI,SAAS,SAAS,GAAG;AACzB,QAAQ,IAAI,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;AAC1C,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC;AACpC,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,MAAM,GAAG,YAAY,CAAC;AAClC,SAAS;AACT,QAAQ,IAAI,cAAc,CAAC;AAC3B,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC;AACtD,SAAS;AACT,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACxC,YAAY,OAAO,EAAE,OAAO,EAAE,cAAc,IAAI,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAChF,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,OAAO,EAAE,cAAc,IAAI,MAAM,CAAC,OAAO,IAAI,YAAY;AACrE,YAAY,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,YAAY;AACnD,SAAS,CAAC;AACV,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;AACvC,IAAI,IAAI,WAAW,GAAG,cAAc,EAAE,CAAC;AACvC,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACvC,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC;AACnC,QAAQ,MAAM,oBAAoB,GAAG,WAAW,CAAC,aAAa;AAC9D,YAAY,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACjG,YAAY,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC;AAC/C,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,WAAW,GAAG,oBAAoB,CAAC;AAC/C,SAAS;AACT,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,GAAG,EAAE,aAAa,CAAC,GAAG,IAAI,KAAK;AACvC,QAAQ,WAAW;AACnB,QAAQ,IAAI,EAAE,OAAO,EAAE;AACvB,QAAQ,MAAM,EAAE,SAAS,EAAE;AAC3B,QAAQ,UAAU;AAClB,QAAQ,OAAO,EAAE,aAAa,CAAC,OAAO,IAAI,IAAI;AAC9C,QAAQ,QAAQ,EAAE,WAAW,EAAE;AAC/B,QAAQ,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,OAAO;AACvC,QAAQ,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;AAC5B,QAAQ,YAAY,EAAE,aAAa,CAAC,YAAY;AAChD,KAAK,CAAC;AACN,CAAC;AACD;AACA,MAAM,cAAc,CAAC;AACrB,IAAI,IAAI,CAAC;AACT,IAAI,SAAS,CAAC;AACd,IAAI,OAAO,CAAC;AACZ,IAAI,WAAW,CAAC;AAChB,IAAI,cAAc,CAAC;AACnB,IAAI,eAAe,GAAG,EAAE,CAAC;AACzB,IAAI,UAAU,CAAC;AACf,IAAI,wBAAwB,CAAC;AAC7B,IAAI,mBAAmB,CAAC;AACxB,IAAI,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE;AAC1D,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACvC,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACrD,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACjC,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL,CAAC;AACD;AACA,IAAI,gBAAgB,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,CAAC,OAAO,CAAC;AACzB;AACA,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;AAC5B;AACA,CAAC,IAAI,gBAAgB,GAAG,GAAG,CAAC;AAC5B;AACA;AACA,CAAC,IAAI,cAAc,GAAG,2BAA2B,CAAC;AAClD;AACA;AACA,CAAC,IAAI,gBAAgB,GAAG,gBAAgB,CAAC;AACzC;AACA;AACA,CAAC,IAAI,OAAO,GAAG,oBAAoB;AACnC,KAAK,QAAQ,GAAG,gBAAgB;AAChC,KAAK,OAAO,GAAG,kBAAkB;AACjC,KAAK,OAAO,GAAG,eAAe;AAC9B,KAAK,QAAQ,GAAG,gBAAgB;AAChC,KAAK,OAAO,GAAG,mBAAmB;AAClC,KAAK,MAAM,GAAG,4BAA4B;AAC1C,KAAK,MAAM,GAAG,cAAc;AAC5B,KAAK,SAAS,GAAG,iBAAiB;AAClC,KAAK,SAAS,GAAG,iBAAiB;AAClC,KAAK,UAAU,GAAG,kBAAkB;AACpC,KAAK,SAAS,GAAG,iBAAiB;AAClC,KAAK,MAAM,GAAG,cAAc;AAC5B,KAAK,SAAS,GAAG,iBAAiB;AAClC,KAAK,SAAS,GAAG,iBAAiB;AAClC,KAAK,UAAU,GAAG,kBAAkB,CAAC;AACrC;AACA,CAAC,IAAI,cAAc,GAAG,sBAAsB;AAC5C,KAAK,WAAW,GAAG,mBAAmB;AACtC,KAAK,UAAU,GAAG,uBAAuB;AACzC,KAAK,UAAU,GAAG,uBAAuB;AACzC,KAAK,OAAO,GAAG,oBAAoB;AACnC,KAAK,QAAQ,GAAG,qBAAqB;AACrC,KAAK,QAAQ,GAAG,qBAAqB;AACrC,KAAK,QAAQ,GAAG,qBAAqB;AACrC,KAAK,eAAe,GAAG,4BAA4B;AACnD,KAAK,SAAS,GAAG,sBAAsB;AACvC,KAAK,SAAS,GAAG,sBAAsB,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,YAAY,GAAG,qBAAqB,CAAC;AAC1C;AACA;AACA,CAAC,IAAI,OAAO,GAAG,MAAM,CAAC;AACtB;AACA;AACA,CAAC,IAAI,YAAY,GAAG,6BAA6B,CAAC;AAClD;AACA;AACA,CAAC,IAAI,QAAQ,GAAG,kBAAkB,CAAC;AACnC;AACA;AACA,CAAC,IAAI,aAAa,GAAG,EAAE,CAAC;AACxB,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC;AACjD,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC;AAC3D,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;AAChD,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC;AACtD,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC;AACjD,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;AAChD,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC;AACpD,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;AACjD,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC;AACpD,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC;AACzD,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AAC5D,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;AACjD,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;AACnC;AACA;AACA,CAAC,IAAI,UAAU,GAAG,OAAO,cAAc,IAAI,QAAQ,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,MAAM,IAAI,cAAc,CAAC;AAC5H;AACA;AACA,CAAC,IAAI,QAAQ,GAAG,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC;AAClF;AACA;AACA,CAAC,IAAI,IAAI,GAAG,UAAU,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;AAChE;AACA;AACA,CAAC,IAAI,WAAW,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC;AAC3D;AACA;AACA,CAAC,IAAI,UAAU,GAAG,WAAW,IAAI,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC;AAC9F;AACA;AACA,CAAC,IAAI,aAAa,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,KAAK,WAAW,CAAC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE;AACjC;AACA,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,GAAG,OAAO,GAAG,CAAC;AACd,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;AAClC;AACA,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClB,GAAG,OAAO,GAAG,CAAC;AACd,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE;AACrC,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC;AACA,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,EAAE;AACzD,OAAO,MAAM;AACb,MAAM;AACN,IAAI;AACJ,GAAG,OAAO,KAAK,CAAC;AAChB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;AACnC,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM;AAC7B,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7B;AACA,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3C,IAAI;AACJ,GAAG,OAAO,KAAK,CAAC;AAChB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;AAC/D,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC;AACA,GAAG,IAAI,SAAS,IAAI,MAAM,EAAE;AAC5B,KAAK,WAAW,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AAClC,IAAI;AACJ,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACrE,IAAI;AACJ,GAAG,OAAO,WAAW,CAAC;AACtB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE;AACjC,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB;AACA,GAAG,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE;AACvB,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI;AACJ,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;AAChC,GAAG,OAAO,MAAM,IAAI,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACnD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE;AAC9B;AACA;AACA,GAAG,IAAI,MAAM,GAAG,KAAK,CAAC;AACtB,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,CAAC,QAAQ,IAAI,UAAU,EAAE;AAC7D,KAAK,IAAI;AACT,OAAO,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;AAC/B,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;AACnB,IAAI;AACJ,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE;AAC1B,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC;AACA,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,GAAG,EAAE;AACpC,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACpC,IAAI,CAAC,CAAC;AACN,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE;AACnC,GAAG,OAAO,SAAS,GAAG,EAAE;AACxB,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,IAAI,CAAC;AACL,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE;AAC1B,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC;AACA,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE;AAC/B,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;AAC7B,IAAI,CAAC,CAAC;AACN,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA,CAAC,IAAI,UAAU,GAAG,KAAK,CAAC,SAAS;AACjC,KAAK,SAAS,GAAG,QAAQ,CAAC,SAAS;AACnC,KAAK,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;AACpC;AACA;AACA,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC7C;AACA;AACA,CAAC,IAAI,UAAU,IAAI,WAAW;AAC9B,GAAG,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AAC5F,GAAG,OAAO,GAAG,IAAI,gBAAgB,GAAG,GAAG,IAAI,EAAE,CAAC;AAC9C,EAAE,EAAE,CAAC,CAAC;AACN;AACA;AACA,CAAC,IAAI,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC;AACvC;AACA;AACA,CAAC,IAAI,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC;AAC3C;AACA;AACA,CAAC,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG;AAC5B,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;AAClE,IAAI,OAAO,CAAC,wDAAwD,EAAE,OAAO,CAAC,GAAG,GAAG;AACpF,EAAE,CAAC;AACH;AACA;AACA,CAAC,IAAI,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS;AACrD,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM;AACzB,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU;AACjC,KAAK,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC;AAC1D,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM;AACjC,KAAK,oBAAoB,GAAG,WAAW,CAAC,oBAAoB;AAC5D,KAAK,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;AAChC;AACA;AACA,CAAC,IAAI,gBAAgB,GAAG,MAAM,CAAC,qBAAqB;AACpD,KAAK,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,GAAG,SAAS;AAC1D,KAAK,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/C;AACA;AACA,CAAC,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC;AAC3C,KAAK,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;AACjC,KAAK,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;AACzC,KAAK,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;AACjC,KAAK,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;AACzC,KAAK,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAChD;AACA;AACA,CAAC,IAAI,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAC5C,KAAK,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC;AAClC,KAAK,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC;AAC1C,KAAK,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC;AAClC,KAAK,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3C;AACA;AACA,CAAC,IAAI,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,SAAS;AACxD,KAAK,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE;AACxB,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C;AACA,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,GAAG;AACtB,GAAG,IAAI,CAAC,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE;AAC1B,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACrD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE;AACvB,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5B,GAAG,IAAI,YAAY,EAAE;AACrB,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,KAAK,OAAO,MAAM,KAAK,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC;AAC3D,IAAI;AACJ,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACjE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE;AACvB,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5B,GAAG,OAAO,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAClF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AAC9B,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5B,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK,KAAK,SAAS,IAAI,cAAc,GAAG,KAAK,CAAC;AAC9E,GAAG,OAAO,IAAI,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC;AAClC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;AACvC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;AAC9B,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;AAC9B,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,OAAO,EAAE;AAC7B,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C;AACA,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,cAAc,GAAG;AAC3B,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACtB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE;AAC/B,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC3B,OAAO,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACvC;AACA,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE;AAClB,KAAK,OAAO,KAAK,CAAC;AAClB,IAAI;AACJ,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACnC,GAAG,IAAI,KAAK,IAAI,SAAS,EAAE;AAC3B,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,IAAI,MAAM;AACV,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACjC,IAAI;AACJ,GAAG,OAAO,IAAI,CAAC;AACf,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,GAAG,EAAE;AAC5B,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC3B,OAAO,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACvC;AACA,GAAG,OAAO,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,GAAG,EAAE;AAC5B,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE;AACnC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC3B,OAAO,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACvC;AACA,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE;AAClB,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7B,IAAI,MAAM;AACV,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC5B,IAAI;AACJ,GAAG,OAAO,IAAI,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,cAAc,CAAC;AAC5C,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC;AACjD,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC;AACxC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC;AACxC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,OAAO,EAAE;AAC5B,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C;AACA,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAChB,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,aAAa,GAAG;AAC1B,GAAG,IAAI,CAAC,QAAQ,GAAG;AACnB,KAAK,MAAM,EAAE,IAAI,IAAI;AACrB,KAAK,KAAK,EAAE,KAAK,GAAG,IAAI,SAAS,CAAC;AAClC,KAAK,QAAQ,EAAE,IAAI,IAAI;AACvB,IAAI,CAAC;AACL,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,cAAc,CAAC,GAAG,EAAE;AAC9B,GAAG,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE;AAC3B,GAAG,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE;AAC3B,GAAG,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACzC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;AAClC,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzC,GAAG,OAAO,IAAI,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC;AAC1C,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC;AAC/C,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;AACtC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;AACtC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,KAAK,CAAC,OAAO,EAAE;AACzB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAC1C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,GAAG;AACvB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC;AACjC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE;AAC3B,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;AACvC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE;AACxB,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE;AACxB,GAAG,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE;AAC/B,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC7B,GAAG,IAAI,KAAK,YAAY,SAAS,EAAE;AACnC,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC;AAChC,KAAK,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAC,EAAE;AACxD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAChC,OAAO,OAAO,IAAI,CAAC;AACnB,MAAM;AACN,KAAK,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjD,IAAI;AACJ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACzB,GAAG,OAAO,IAAI,CAAC;AACf,EAAE;AACF;AACA;AACA,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC;AACpC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC;AACzC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;AAChC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;AAChC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;AAC1C;AACA;AACA,GAAG,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC;AACrD,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC;AACtC,OAAO,EAAE,CAAC;AACV;AACA,GAAG,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM;AAC7B,OAAO,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;AAC9B;AACA,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;AAC1B,KAAK,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;AACtD,SAAS,EAAE,WAAW,KAAK,GAAG,IAAI,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AACtE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,MAAM;AACN,IAAI;AACJ,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;AAC1C,GAAG,IAAI,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9B,GAAG,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACjE,QAAQ,KAAK,KAAK,SAAS,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE;AAClD,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACzB,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE;AACnC,GAAG,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7B,GAAG,OAAO,MAAM,EAAE,EAAE;AACpB,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACpC,OAAO,OAAO,MAAM,CAAC;AACrB,MAAM;AACN,IAAI;AACJ,GAAG,OAAO,CAAC,CAAC,CAAC;AACb,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE;AACrC,GAAG,OAAO,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;AAC3E,GAAG,IAAI,MAAM,CAAC;AACd,GAAG,IAAI,UAAU,EAAE;AACnB,KAAK,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AACjF,IAAI;AACJ,GAAG,IAAI,MAAM,KAAK,SAAS,EAAE;AAC7B,KAAK,OAAO,MAAM,CAAC;AACnB,IAAI;AACJ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACzB,KAAK,OAAO,KAAK,CAAC;AAClB,IAAI;AACJ,GAAG,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,GAAG,IAAI,KAAK,EAAE;AACd,KAAK,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AACpC,KAAK,IAAI,CAAC,MAAM,EAAE;AAClB,OAAO,OAAO,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,MAAM;AACN,IAAI,MAAM;AACV,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,SAAS,MAAM,GAAG,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC;AAClD;AACA,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1B,OAAO,OAAO,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzC,MAAM;AACN,KAAK,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,OAAO,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE;AACpE,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE;AAChC,SAAS,OAAO,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;AACpC,QAAQ;AACR,OAAO,MAAM,GAAG,eAAe,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;AACrD,OAAO,IAAI,CAAC,MAAM,EAAE;AACpB,SAAS,OAAO,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9D,QAAQ;AACR,MAAM,MAAM;AACZ,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;AAChC,SAAS,OAAO,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;AACpC,QAAQ;AACR,OAAO,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC9D,MAAM;AACN,IAAI;AACJ;AACA,GAAG,KAAK,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;AAChC,GAAG,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClC,GAAG,IAAI,OAAO,EAAE;AAChB,KAAK,OAAO,OAAO,CAAC;AACpB,IAAI;AACJ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5B;AACA,GAAG,IAAI,CAAC,KAAK,EAAE;AACf,KAAK,IAAI,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1D,IAAI;AACJ,GAAG,SAAS,CAAC,KAAK,IAAI,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,EAAE;AACrD,KAAK,IAAI,KAAK,EAAE;AAChB,OAAO,GAAG,GAAG,QAAQ,CAAC;AACtB,OAAO,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7B,MAAM;AACN;AACA,KAAK,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAClG,IAAI,CAAC,CAAC;AACN,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,KAAK,EAAE;AAC5B,GAAG,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACrD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE;AACxD,GAAG,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjC,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5E,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,KAAK,EAAE;AAC5B,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE;AAC9B,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC5C,KAAK,OAAO,KAAK,CAAC;AAClB,IAAI;AACJ,GAAG,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,UAAU,GAAG,YAAY,CAAC;AACxF,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AAC7B,KAAK,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/B,IAAI;AACJ,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC;AACnB,GAAG,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;AACnC,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,aAAa,EAAE;AACnE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,MAAM;AACN,IAAI;AACJ,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE;AACtC,GAAG,IAAI,MAAM,EAAE;AACf,KAAK,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AAC3B,IAAI;AACJ,GAAG,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACtD,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvB,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,gBAAgB,CAAC,WAAW,EAAE;AACxC,GAAG,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACpE,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AAC3D,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC1C,GAAG,IAAI,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC7E,GAAG,OAAO,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACrF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;AAC3C,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3E,GAAG,OAAO,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;AAC/D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE;AAC9B,GAAG,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5E,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACvC,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;AAC3C,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC3E,GAAG,OAAO,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;AAC/D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE;AAC9B,GAAG,OAAO,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;AAClE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE;AAC9C,GAAG,IAAI,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;AACjF,GAAG,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AACvF,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE;AACnC,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9B;AACA,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI;AACJ,GAAG,OAAO,KAAK,CAAC;AAChB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE;AACxD,GAAG,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC;AAC3B;AACA,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC;AACjB,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7B;AACA,GAAG,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC5B,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5B;AACA,KAAK,IAAI,QAAQ,GAAG,UAAU;AAC9B,SAAS,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;AAClE,SAAS,SAAS,CAAC;AACnB;AACA,KAAK,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC/E,IAAI;AACJ,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE;AACtC,GAAG,OAAO,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACzD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,MAAM,EAAE;AAC7B,GAAG,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACnD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC3B,GAAG,OAAO,SAAS,CAAC,GAAG,CAAC;AACxB,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AACvD,OAAO,IAAI,CAAC,GAAG,CAAC;AAChB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;AACjC,GAAG,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACrC,GAAG,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS,CAAC;AAClD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,UAAU,GAAG,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,MAAM,GAAG,UAAU,CAAC;AACzB;AACA;AACA;AACA,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW;AACzE,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC;AACvC,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,UAAU,CAAC;AACzD,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC;AACvC,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,UAAU,CAAC,EAAE;AACrD,GAAG,MAAM,GAAG,SAAS,KAAK,EAAE;AAC5B,KAAK,IAAI,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,SAAS,IAAI,GAAG,MAAM,IAAI,SAAS,GAAG,KAAK,CAAC,WAAW,GAAG,SAAS;AACnE,SAAS,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AACxD;AACA,KAAK,IAAI,UAAU,EAAE;AACrB,OAAO,QAAQ,UAAU;AACzB,SAAS,KAAK,kBAAkB,EAAE,OAAO,WAAW,CAAC;AACrD,SAAS,KAAK,aAAa,EAAE,OAAO,MAAM,CAAC;AAC3C,SAAS,KAAK,iBAAiB,EAAE,OAAO,UAAU,CAAC;AACnD,SAAS,KAAK,aAAa,EAAE,OAAO,MAAM,CAAC;AAC3C,SAAS,KAAK,iBAAiB,EAAE,OAAO,UAAU,CAAC;AACnD,QAAQ;AACR,MAAM;AACN,KAAK,OAAO,MAAM,CAAC;AACnB,IAAI,CAAC;AACL,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,cAAc,CAAC,KAAK,EAAE;AAChC,GAAG,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM;AAC5B,OAAO,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1C;AACA;AACA,GAAG,IAAI,MAAM,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AACrF,KAAK,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAChC,KAAK,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAChC,IAAI;AACJ,GAAG,OAAO,MAAM,CAAC;AACjB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,eAAe,CAAC,MAAM,EAAE;AAClC,GAAG,OAAO,CAAC,OAAO,MAAM,CAAC,WAAW,IAAI,UAAU,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC1E,OAAO,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACvC,OAAO,EAAE,CAAC;AACV,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE;AACzD,GAAG,IAAI,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,GAAG,QAAQ,GAAG;AACd,KAAK,KAAK,cAAc;AACxB,OAAO,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACvC;AACA,KAAK,KAAK,OAAO,CAAC;AAClB,KAAK,KAAK,OAAO;AACjB,OAAO,OAAO,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAChC;AACA,KAAK,KAAK,WAAW;AACrB,OAAO,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5C;AACA,KAAK,KAAK,UAAU,CAAC,CAAC,KAAK,UAAU,CAAC;AACtC,KAAK,KAAK,OAAO,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,KAAK,QAAQ,CAAC;AAChD,KAAK,KAAK,QAAQ,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,KAAK,SAAS;AACxE,OAAO,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA,KAAK,KAAK,MAAM;AAChB,OAAO,OAAO,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAClD;AACA,KAAK,KAAK,SAAS,CAAC;AACpB,KAAK,KAAK,SAAS;AACnB,OAAO,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B;AACA,KAAK,KAAK,SAAS;AACnB,OAAO,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAClC;AACA,KAAK,KAAK,MAAM;AAChB,OAAO,OAAO,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAClD;AACA,KAAK,KAAK,SAAS;AACnB,OAAO,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAClC,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;AACjC,GAAG,MAAM,GAAG,MAAM,IAAI,IAAI,GAAG,gBAAgB,GAAG,MAAM,CAAC;AACvD,GAAG,OAAO,CAAC,CAAC,MAAM;AAClB,MAAM,OAAO,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC;AACtD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE;AAC3B,GAAG,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC3B,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,SAAS;AACxF,QAAQ,KAAK,KAAK,WAAW;AAC7B,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC;AACxB,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,IAAI,EAAE;AACzB,GAAG,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,IAAI,CAAC,CAAC;AAC/C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC7B,GAAG,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,WAAW;AACxC,OAAO,KAAK,GAAG,CAAC,OAAO,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC;AAC5E;AACA,GAAG,OAAO,KAAK,KAAK,KAAK,CAAC;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,IAAI,EAAE;AACzB,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE;AACrB,KAAK,IAAI;AACT,OAAO,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;AACnB,KAAK,IAAI;AACT,OAAO,QAAQ,IAAI,GAAG,EAAE,EAAE;AAC1B,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;AACnB,IAAI;AACJ,GAAG,OAAO,EAAE,CAAC;AACb,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE;AAC3B,GAAG,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACvC,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE;AAC3B,GAAG,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC;AAClE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC7B;AACA,GAAG,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC1E,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC;AAC5F,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC7B,GAAG,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACnC,GAAG,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AACpD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,QAAQ,GAAG,cAAc,IAAI,SAAS,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,KAAK,EAAE;AAC5B;AACA;AACA,GAAG,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAC/D,GAAG,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC;AAC1C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC1B,GAAG,OAAO,OAAO,KAAK,IAAI,QAAQ;AAClC,KAAK,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,gBAAgB,CAAC;AAC/D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC1B,GAAG,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC3B,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;AAC9D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE;AAC9B,GAAG,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE;AACvB,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,GAAG;AACtB,GAAG,OAAO,EAAE,CAAC;AACb,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,GAAG;AAC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","x_google_ignoreList":[3,7,21,22]} \ No newline at end of file diff --git a/browser-platform-dev-react-seed/package.json b/browser-platform-dev-react-seed/package.json index d8f33cf..1803b45 100644 --- a/browser-platform-dev-react-seed/package.json +++ b/browser-platform-dev-react-seed/package.json @@ -1,6 +1,6 @@ { "name": "dev-react-seed", - "version": "3.2.0", + "version": "3.3.0", "description": "", "main": "index.js", "scripts": { diff --git a/browser-platform-dev-react-seed/react-client/package-lock.json b/browser-platform-dev-react-seed/react-client/package-lock.json index cb1b97e..9594752 100644 --- a/browser-platform-dev-react-seed/react-client/package-lock.json +++ b/browser-platform-dev-react-seed/react-client/package-lock.json @@ -8,8 +8,8 @@ "name": "react-client", "version": "0.1.0", "dependencies": { - "@interopio/react-hooks": "^3.2.0", - "@interopio/workspaces-api": "^3.2.0", + "@interopio/react-hooks": "^3.3.1", + "@interopio/workspaces-api": "^3.3.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -2498,102 +2498,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@glue42/gateway-web": { - "version": "3.0.19", - "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", - "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" - }, - "node_modules/@glue42/schemas": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@glue42/schemas/-/schemas-3.22.0.tgz", - "integrity": "sha512-4eC3oIci6o09DIPYwvGCHSaGHdNPqDDnqByh0XuiOw/lA6rlZii4HfamqbCYhytEZ58dqAdyTDqyqVNnEVBuQA==", - "dependencies": { - "ajv": "^6.12.6", - "ajv-keywords": "^3.4.1" - }, - "peerDependencies": { - "log4js": "^6.4.2" - }, - "peerDependenciesMeta": { - "log4js": { - "optional": true - } - } - }, - "node_modules/@glue42/server-api": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", - "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", - "dependencies": { - "@glue42/schemas": "^3.18.0", - "@types/request": "^2.48.8", - "axios": "^1.6.2", - "form-data": "^4.0.0", - "jwt-decode": "^3.1.2", - "rimraf": "^5.0.5", - "typescript": "^4.2.4" - } - }, - "node_modules/@glue42/server-api/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@glue42/server-api/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@glue42/server-api/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@glue42/server-api/node_modules/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", @@ -2625,93 +2529,56 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, "node_modules/@interopio/browser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", - "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.3.1.tgz", + "integrity": "sha512-emoQNOItICL9RFp3gpxKvpcCnM+lvlV9zxz1Adzo//uwcmwNJLGuEmQyqLYc3eSw65bdX/PjXJ+ZtQL482zElw==", "dependencies": { - "@interopio/core": "^6.2.0", + "@interopio/core": "^6.3.1", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.6.0", - "decoder-validate": "0.0.2", - "idb": "^7.1.1", - "nanoid": "^4.0.0", - "shortid": "^2.2.16" + "@interopio/search-api": "^2.3.1", + "@interopio/widget": "^1.0.1", + "@interopio/workspaces-api": "^3.3.1", + "callback-registry": "^2.7.2" } }, "node_modules/@interopio/browser-platform": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", - "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.3.1.tgz", + "integrity": "sha512-LMLVq4EWkqlxq4Z9BDEyoKizuKZbOAXfqMNCMTCkXjr46qZ/wGSo1L9NA+9L+A5xoXKkRv9aHhr1CGW3BWUeww==", "dependencies": { - "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.6.3", - "@interopio/browser": "^3.2.0", - "@interopio/core": "^6.2.0", - "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.7.1", - "decoder-validate": "0.0.2", - "deep-equal": "^2.1.0", - "deepmerge": "^4.2.2", - "fast-deep-equal": "^3.1.3", - "idb": "^7.1.1", - "jsrsasign": "^10.8.6", - "nanoid": "^4.0.0", - "shortid": "^2.2.16", - "ua-parser-js": "^1.0.35" + "@interopio/browser": "^3.3.1", + "@interopio/core": "^6.3.1", + "@interopio/desktop": "^6.0.1" } }, "node_modules/@interopio/core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", - "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.3.1.tgz", + "integrity": "sha512-qTNZ7zMAi8uElLHy4V76ugP7PgrA/hAaNi9ic3ibs8rt3jzmh2cdBmQTIdGEajlunShFZSV7rJKmj/laHL7etw==", "dependencies": { "callback-registry": "^2.7.2", - "shortid": "^2.2.16", "ws": "^8.12.1" } }, "node_modules/@interopio/desktop": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", - "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.4.0.tgz", + "integrity": "sha512-dMBArfT1nVWkyFtdA9cSJHOU9EKyac6K+F/xEwqdjfIqlcNIWtf9XDDImZYiONNxMz7oCxrAGJHwNkR0ZYjwRA==", "dependencies": { - "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.1.0", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/core": "^6.2.1", + "@interopio/schemas": "^9.3.0", + "@interopio/workspaces-api": "^3.2.1", "callback-registry": "^2.7.1", "nanoid": "^3.3.7" } }, - "node_modules/@interopio/desktop/node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/@interopio/react-hooks": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", - "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.3.1.tgz", + "integrity": "sha512-CXQJqSuqLbeajAH0uF3vKQJqcZfb0iEzV7Cg9yyu/XXOFQGbonUxijDvtRduV5dmxFn2gZRJNjsXEld3q8tUlQ==", "dependencies": { - "@interopio/browser": "^3.2.0", - "@interopio/browser-platform": "^3.2.0", + "@interopio/browser": "^3.3.1", + "@interopio/browser-platform": "^3.3.1", "@interopio/desktop": "^6.0.1", "prop-types": "^15.7.2" }, @@ -2728,119 +2595,40 @@ } } }, - "node_modules/@interopio/search-api": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", - "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", + "node_modules/@interopio/schemas": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@interopio/schemas/-/schemas-9.3.0.tgz", + "integrity": "sha512-LSZHxB4CZAeoPCywKpqzWHhiJQYHhmhhKYGnFibFOGx9ADlp4hRKOuX3q97DTBJ6/p1gNkByMH/NTjyDTDKjTg==", "dependencies": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" - } - }, - "node_modules/@interopio/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", - "dependencies": { - "decoder-validate": "^0.0.2" - } - }, - "node_modules/@interopio/workspaces-api": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", - "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", - "dependencies": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" + "ajv": "^6.12.6", + "ajv-keywords": "^3.4.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "engines": { - "node": ">=12" + "peerDependencies": { + "log4js": "^6.4.2" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependenciesMeta": { + "log4js": { + "optional": true + } } }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@interopio/search-api": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.3.1.tgz", + "integrity": "sha512-z3Gc4VDnCi37wN0RwZT/0CfdrkUUy7rtOcwHErHQiYq209dRrMuYvM9RJkLwBslZ7h6zqCwfedu3uSAmG+Cjew==", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@interopio/core": "^6.3.1" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } + "node_modules/@interopio/widget": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@interopio/widget/-/widget-1.0.1.tgz", + "integrity": "sha512-TmQ2850w4jyjJ+dbhnzqs3HssFRH9LQQlXNebaUYMrdmZQYhPYbCrgdIrrN8BUhuV0/gxjKHfdAb1U1EthInLw==" }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } + "node_modules/@interopio/workspaces-api": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.3.1.tgz", + "integrity": "sha512-9huXU5MH71WkuHBOO3f6ttLtmQX6Q+/H9TO/LehKqynLmeA8R5ZUp508dKT8fa0Ek4CTQsmv0c4gpjNCFddmeg==" }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -3307,15 +3095,6 @@ "node": ">= 8" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", @@ -3860,11 +3639,6 @@ "@types/node": "*" } }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, "node_modules/@types/connect": { "version": "3.4.36", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", @@ -4051,30 +3825,6 @@ "@types/react": "*" } }, - "node_modules/@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/request/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -4146,11 +3896,6 @@ "@types/jest": "*" } }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, "node_modules/@types/trusted-types": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.4.tgz", @@ -5019,16 +4764,6 @@ "node": ">=4" } }, - "node_modules/axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", - "dependencies": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -6432,11 +6167,6 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, - "node_modules/decoder-validate": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/decoder-validate/-/decoder-validate-0.0.2.tgz", - "integrity": "sha512-9BsqAH9Zq6CvlxKHkSrZrH2iYlhuhHcrh6uTnDvcsa9P5YEweEzt1ci+X/9STgSCE7b9BA7/QIiwhfUDDWmjxw==" - }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -6772,11 +6502,6 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -8018,32 +7743,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", @@ -8136,19 +7835,6 @@ "node": ">=6" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -9470,23 +9156,6 @@ "set-function-name": "^2.0.1" } }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -10540,14 +10209,6 @@ "node": ">=0.10.0" } }, - "node_modules/jsrsasign": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", - "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==", - "funding": { - "url": "https://github.com/kjur/jsrsasign#donations" - } - }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -10562,11 +10223,6 @@ "node": ">=4.0" } }, - "node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, "node_modules/keyv": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", @@ -10991,14 +10647,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -11038,9 +10686,9 @@ } }, "node_modules/nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -11048,10 +10696,10 @@ } ], "bin": { - "nanoid": "bin/nanoid.js" + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, "node_modules/natural-compare": { @@ -11522,29 +11170,6 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "engines": { - "node": "14 || >=16.14" - } - }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -12886,37 +12511,20 @@ "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" + "postcss-selector-parser": "^6.0.5" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -13029,11 +12637,6 @@ "node": ">= 0.10" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -14095,20 +13698,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shortid": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz", - "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dependencies": { - "nanoid": "^2.1.0" - } - }, - "node_modules/shortid/node_modules/nanoid": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", - "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -14427,25 +14016,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -14536,18 +14106,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -15309,28 +14867,6 @@ "node": ">=4.2.0" } }, - "node_modules/ua-parser-js": { - "version": "1.0.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", - "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "engines": { - "node": "*" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -16355,23 +15891,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -18083,72 +17602,6 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==" }, - "@glue42/gateway-web": { - "version": "3.0.19", - "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", - "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" - }, - "@glue42/schemas": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@glue42/schemas/-/schemas-3.22.0.tgz", - "integrity": "sha512-4eC3oIci6o09DIPYwvGCHSaGHdNPqDDnqByh0XuiOw/lA6rlZii4HfamqbCYhytEZ58dqAdyTDqyqVNnEVBuQA==", - "requires": { - "ajv": "^6.12.6", - "ajv-keywords": "^3.4.1" - } - }, - "@glue42/server-api": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", - "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", - "requires": { - "@glue42/schemas": "^3.18.0", - "@types/request": "^2.48.8", - "axios": "^1.6.2", - "form-data": "^4.0.0", - "jwt-decode": "^3.1.2", - "rimraf": "^5.0.5", - "typescript": "^4.2.4" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "requires": { - "glob": "^10.3.7" - } - } - } - }, "@humanwhocodes/config-array": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", @@ -18170,169 +17623,86 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, "@interopio/browser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", - "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.3.1.tgz", + "integrity": "sha512-emoQNOItICL9RFp3gpxKvpcCnM+lvlV9zxz1Adzo//uwcmwNJLGuEmQyqLYc3eSw65bdX/PjXJ+ZtQL482zElw==", "requires": { - "@interopio/core": "^6.2.0", + "@interopio/core": "^6.3.1", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.6.0", - "decoder-validate": "0.0.2", - "idb": "^7.1.1", - "nanoid": "^4.0.0", - "shortid": "^2.2.16" + "@interopio/search-api": "^2.3.1", + "@interopio/widget": "^1.0.1", + "@interopio/workspaces-api": "^3.3.1", + "callback-registry": "^2.7.2" } }, "@interopio/browser-platform": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", - "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.3.1.tgz", + "integrity": "sha512-LMLVq4EWkqlxq4Z9BDEyoKizuKZbOAXfqMNCMTCkXjr46qZ/wGSo1L9NA+9L+A5xoXKkRv9aHhr1CGW3BWUeww==", "requires": { - "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.6.3", - "@interopio/browser": "^3.2.0", - "@interopio/core": "^6.2.0", - "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.7.1", - "decoder-validate": "0.0.2", - "deep-equal": "^2.1.0", - "deepmerge": "^4.2.2", - "fast-deep-equal": "^3.1.3", - "idb": "^7.1.1", - "jsrsasign": "^10.8.6", - "nanoid": "^4.0.0", - "shortid": "^2.2.16", - "ua-parser-js": "^1.0.35" + "@interopio/browser": "^3.3.1", + "@interopio/core": "^6.3.1", + "@interopio/desktop": "^6.0.1" } }, "@interopio/core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", - "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.3.1.tgz", + "integrity": "sha512-qTNZ7zMAi8uElLHy4V76ugP7PgrA/hAaNi9ic3ibs8rt3jzmh2cdBmQTIdGEajlunShFZSV7rJKmj/laHL7etw==", "requires": { "callback-registry": "^2.7.2", - "shortid": "^2.2.16", "ws": "^8.12.1" } }, "@interopio/desktop": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", - "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.4.0.tgz", + "integrity": "sha512-dMBArfT1nVWkyFtdA9cSJHOU9EKyac6K+F/xEwqdjfIqlcNIWtf9XDDImZYiONNxMz7oCxrAGJHwNkR0ZYjwRA==", "requires": { - "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.1.0", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/core": "^6.2.1", + "@interopio/schemas": "^9.3.0", + "@interopio/workspaces-api": "^3.2.1", "callback-registry": "^2.7.1", "nanoid": "^3.3.7" - }, - "dependencies": { - "nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" - } } }, "@interopio/react-hooks": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", - "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.3.1.tgz", + "integrity": "sha512-CXQJqSuqLbeajAH0uF3vKQJqcZfb0iEzV7Cg9yyu/XXOFQGbonUxijDvtRduV5dmxFn2gZRJNjsXEld3q8tUlQ==", "requires": { - "@interopio/browser": "^3.2.0", - "@interopio/browser-platform": "^3.2.0", + "@interopio/browser": "^3.3.1", + "@interopio/browser-platform": "^3.3.1", "@interopio/desktop": "^6.0.1", "prop-types": "^15.7.2" } }, - "@interopio/search-api": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", - "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", + "@interopio/schemas": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@interopio/schemas/-/schemas-9.3.0.tgz", + "integrity": "sha512-LSZHxB4CZAeoPCywKpqzWHhiJQYHhmhhKYGnFibFOGx9ADlp4hRKOuX3q97DTBJ6/p1gNkByMH/NTjyDTDKjTg==", "requires": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" + "ajv": "^6.12.6", + "ajv-keywords": "^3.4.1" } }, - "@interopio/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", + "@interopio/search-api": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.3.1.tgz", + "integrity": "sha512-z3Gc4VDnCi37wN0RwZT/0CfdrkUUy7rtOcwHErHQiYq209dRrMuYvM9RJkLwBslZ7h6zqCwfedu3uSAmG+Cjew==", "requires": { - "decoder-validate": "^0.0.2" + "@interopio/core": "^6.3.1" } }, - "@interopio/workspaces-api": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", - "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", - "requires": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" - } + "@interopio/widget": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@interopio/widget/-/widget-1.0.1.tgz", + "integrity": "sha512-TmQ2850w4jyjJ+dbhnzqs3HssFRH9LQQlXNebaUYMrdmZQYhPYbCrgdIrrN8BUhuV0/gxjKHfdAb1U1EthInLw==" }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } + "@interopio/workspaces-api": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.3.1.tgz", + "integrity": "sha512-9huXU5MH71WkuHBOO3f6ttLtmQX6Q+/H9TO/LehKqynLmeA8R5ZUp508dKT8fa0Ek4CTQsmv0c4gpjNCFddmeg==" }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -18700,12 +18070,6 @@ "fastq": "^1.6.0" } }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true - }, "@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", @@ -19063,11 +18427,6 @@ "@types/node": "*" } }, - "@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, "@types/connect": { "version": "3.4.36", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", @@ -19254,29 +18613,6 @@ "@types/react": "*" } }, - "@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "requires": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - }, - "dependencies": { - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - } - } - }, "@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -19348,11 +18684,6 @@ "@types/jest": "*" } }, - "@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, "@types/trusted-types": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.4.tgz", @@ -19972,16 +19303,6 @@ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.2.tgz", "integrity": "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==" }, - "axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", - "requires": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -20998,11 +20319,6 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, - "decoder-validate": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/decoder-validate/-/decoder-validate-0.0.2.tgz", - "integrity": "sha512-9BsqAH9Zq6CvlxKHkSrZrH2iYlhuhHcrh6uTnDvcsa9P5YEweEzt1ci+X/9STgSCE7b9BA7/QIiwhfUDDWmjxw==" - }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -21259,11 +20575,6 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -22199,22 +21510,6 @@ "is-callable": "^1.1.3" } }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "dependencies": { - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" - } - } - }, "fork-ts-checker-webpack-plugin": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", @@ -22275,16 +21570,6 @@ } } }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -23191,15 +22476,6 @@ "set-function-name": "^2.0.1" } }, - "jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, "jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -23994,11 +23270,6 @@ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==" }, - "jsrsasign": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", - "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==" - }, "jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -24010,11 +23281,6 @@ "object.values": "^1.1.6" } }, - "jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, "keyv": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", @@ -24335,11 +23601,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, - "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" - }, "mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -24373,9 +23634,9 @@ } }, "nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" }, "natural-compare": { "version": "1.4.0", @@ -24713,22 +23974,6 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "requires": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==" - } - } - }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -24863,13 +24108,6 @@ "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" - }, - "dependencies": { - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" - } } }, "postcss-attribute-case-insensitive": { @@ -25614,11 +24852,6 @@ } } }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -26398,21 +25631,6 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==" }, - "shortid": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz", - "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==", - "requires": { - "nanoid": "^2.1.0" - }, - "dependencies": { - "nanoid": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", - "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" - } - } - }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -26669,23 +25887,6 @@ } } }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - } - } - }, "string.prototype.matchall": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", @@ -26750,14 +25951,6 @@ "ansi-regex": "^5.0.1" } }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -27312,11 +26505,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" }, - "ua-parser-js": { - "version": "1.0.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", - "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==" - }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -28115,16 +27303,6 @@ "strip-ansi": "^6.0.0" } }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/browser-platform-dev-react-seed/react-client/package.json b/browser-platform-dev-react-seed/react-client/package.json index 7af5aa9..74c980a 100644 --- a/browser-platform-dev-react-seed/react-client/package.json +++ b/browser-platform-dev-react-seed/react-client/package.json @@ -3,8 +3,8 @@ "version": "0.1.0", "private": true, "dependencies": { - "@interopio/react-hooks": "^3.2.0", - "@interopio/workspaces-api": "^3.2.0", + "@interopio/react-hooks": "^3.3.1", + "@interopio/workspaces-api": "^3.3.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", diff --git a/browser-platform-dev-react-seed/workspace-platform/package-lock.json b/browser-platform-dev-react-seed/workspace-platform/package-lock.json index 9c06104..5a8a977 100644 --- a/browser-platform-dev-react-seed/workspace-platform/package-lock.json +++ b/browser-platform-dev-react-seed/workspace-platform/package-lock.json @@ -8,11 +8,11 @@ "name": "workspaces-react-template", "version": "0.1.0", "dependencies": { - "@interopio/browser-platform": "^3.2.0", - "@interopio/desktop": "^6.2.2", - "@interopio/react-hooks": "^3.2.0", - "@interopio/workspaces-api": "^3.2.0", - "@interopio/workspaces-ui-react": "^3.2.2", + "@interopio/browser-platform": "^3.3.1", + "@interopio/desktop": "^6.4.0", + "@interopio/react-hooks": "^3.3.1", + "@interopio/workspaces-api": "^3.3.1", + "@interopio/workspaces-ui-react": "^3.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, @@ -2695,131 +2695,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@glue42/gateway-web": { - "version": "3.0.19", - "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", - "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" - }, - "node_modules/@glue42/schemas": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@glue42/schemas/-/schemas-3.22.0.tgz", - "integrity": "sha512-4eC3oIci6o09DIPYwvGCHSaGHdNPqDDnqByh0XuiOw/lA6rlZii4HfamqbCYhytEZ58dqAdyTDqyqVNnEVBuQA==", - "dependencies": { - "ajv": "^6.12.6", - "ajv-keywords": "^3.4.1" - }, - "peerDependencies": { - "log4js": "^6.4.2" - }, - "peerDependenciesMeta": { - "log4js": { - "optional": true - } - } - }, - "node_modules/@glue42/server-api": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", - "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", - "dependencies": { - "@glue42/schemas": "^3.18.0", - "@types/request": "^2.48.8", - "axios": "^1.6.2", - "form-data": "^4.0.0", - "jwt-decode": "^3.1.2", - "rimraf": "^5.0.5", - "typescript": "^4.2.4" - } - }, - "node_modules/@glue42/server-api/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@glue42/server-api/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@glue42/server-api/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@glue42/server-api/node_modules/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@glue42/theme": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@glue42/theme/-/theme-4.0.8.tgz", - "integrity": "sha512-aMKAOdw8GJWd9MjlsVgNOOskq4ii5w1PwhPEileHfSBjEHDH0aPVfEZo/aYSlfJKO8fD2IZQUxJt8jB4rbkhAw==", - "dependencies": { - "ajv": "^7.0.3", - "bootstrap": "5.1.3" - } - }, - "node_modules/@glue42/theme/node_modules/ajv": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.4.tgz", - "integrity": "sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@glue42/theme/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", @@ -2854,101 +2729,56 @@ "dev": true }, "node_modules/@interopio/browser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", - "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.3.1.tgz", + "integrity": "sha512-emoQNOItICL9RFp3gpxKvpcCnM+lvlV9zxz1Adzo//uwcmwNJLGuEmQyqLYc3eSw65bdX/PjXJ+ZtQL482zElw==", "dependencies": { - "@interopio/core": "^6.2.0", + "@interopio/core": "^6.3.1", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.6.0", - "decoder-validate": "0.0.2", - "idb": "^7.1.1", - "nanoid": "^4.0.0", - "shortid": "^2.2.16" + "@interopio/search-api": "^2.3.1", + "@interopio/widget": "^1.0.1", + "@interopio/workspaces-api": "^3.3.1", + "callback-registry": "^2.7.2" } }, "node_modules/@interopio/browser-platform": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", - "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.3.1.tgz", + "integrity": "sha512-LMLVq4EWkqlxq4Z9BDEyoKizuKZbOAXfqMNCMTCkXjr46qZ/wGSo1L9NA+9L+A5xoXKkRv9aHhr1CGW3BWUeww==", "dependencies": { - "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.6.3", - "@interopio/browser": "^3.2.0", - "@interopio/core": "^6.2.0", - "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.7.1", - "decoder-validate": "0.0.2", - "deep-equal": "^2.1.0", - "deepmerge": "^4.2.2", - "fast-deep-equal": "^3.1.3", - "idb": "^7.1.1", - "jsrsasign": "^10.8.6", - "nanoid": "^4.0.0", - "shortid": "^2.2.16", - "ua-parser-js": "^1.0.35" + "@interopio/browser": "^3.3.1", + "@interopio/core": "^6.3.1", + "@interopio/desktop": "^6.0.1" } }, "node_modules/@interopio/core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", - "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.3.1.tgz", + "integrity": "sha512-qTNZ7zMAi8uElLHy4V76ugP7PgrA/hAaNi9ic3ibs8rt3jzmh2cdBmQTIdGEajlunShFZSV7rJKmj/laHL7etw==", "dependencies": { "callback-registry": "^2.7.2", - "shortid": "^2.2.16", "ws": "^8.12.1" } }, "node_modules/@interopio/desktop": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", - "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.4.0.tgz", + "integrity": "sha512-dMBArfT1nVWkyFtdA9cSJHOU9EKyac6K+F/xEwqdjfIqlcNIWtf9XDDImZYiONNxMz7oCxrAGJHwNkR0ZYjwRA==", "dependencies": { - "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.1.0", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/core": "^6.2.1", + "@interopio/schemas": "^9.3.0", + "@interopio/workspaces-api": "^3.2.1", "callback-registry": "^2.7.1", "nanoid": "^3.3.7" } }, - "node_modules/@interopio/desktop/node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/@interopio/golden-layout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/golden-layout/-/golden-layout-3.2.0.tgz", - "integrity": "sha512-2SHrxBuf+0CEnjLltjOxdPkdJLZi1BdYEa65jlm3r7GEVuSYdswbAzo+X8f+kd856uNEdCxUOXnnSF8FnJcoqw==", - "peerDependencies": { - "jquery": "3.5.0" - } - }, "node_modules/@interopio/react-hooks": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", - "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.3.1.tgz", + "integrity": "sha512-CXQJqSuqLbeajAH0uF3vKQJqcZfb0iEzV7Cg9yyu/XXOFQGbonUxijDvtRduV5dmxFn2gZRJNjsXEld3q8tUlQ==", "dependencies": { - "@interopio/browser": "^3.2.0", - "@interopio/browser-platform": "^3.2.0", + "@interopio/browser": "^3.3.1", + "@interopio/browser-platform": "^3.3.1", "@interopio/desktop": "^6.0.1", "prop-types": "^15.7.2" }, @@ -2965,91 +2795,60 @@ } } }, - "node_modules/@interopio/search-api": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", - "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", + "node_modules/@interopio/schemas": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@interopio/schemas/-/schemas-9.3.0.tgz", + "integrity": "sha512-LSZHxB4CZAeoPCywKpqzWHhiJQYHhmhhKYGnFibFOGx9ADlp4hRKOuX3q97DTBJ6/p1gNkByMH/NTjyDTDKjTg==", "dependencies": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" - } - }, - "node_modules/@interopio/theme": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@interopio/theme/-/theme-1.0.4.tgz", - "integrity": "sha512-8tqY9P6IJALnIHQ5PI8EYs/8Y3zTpNZ+uQbjY4lRbEjmhyUUf8P1D9N1C7zN/KefEvBsKtSv9vqpqcZjALyQhg==" - }, - "node_modules/@interopio/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", - "dependencies": { - "decoder-validate": "^0.0.2" + "ajv": "^6.12.6", + "ajv-keywords": "^3.4.1" + }, + "peerDependencies": { + "log4js": "^6.4.2" + }, + "peerDependenciesMeta": { + "log4js": { + "optional": true + } } }, - "node_modules/@interopio/workspaces-api": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", - "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", + "node_modules/@interopio/search-api": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.3.1.tgz", + "integrity": "sha512-z3Gc4VDnCi37wN0RwZT/0CfdrkUUy7rtOcwHErHQiYq209dRrMuYvM9RJkLwBslZ7h6zqCwfedu3uSAmG+Cjew==", "dependencies": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" + "@interopio/core": "^6.3.1" } }, - "node_modules/@interopio/workspaces-ui-core": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-core/-/workspaces-ui-core-3.2.2.tgz", - "integrity": "sha512-4ILBR4tISApAuGlWQG+///sdw65zFAgDEEJ6Q9si/jnXy3Ve+W7aIQpZAAqeVq932JsQYCSYiQUwh0rNI28kQA==", - "dependencies": { - "@glue42/theme": "^4.0.6", - "@interopio/browser": "^3.2.0", - "@interopio/golden-layout": "^3.2.0", - "@interopio/theme": "^1.0.3", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.7.2", - "jquery": "3.5.0", - "nanoid": "^5.0.4", - "resize-observer-polyfill": "^1.5.1" - } + "node_modules/@interopio/widget": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@interopio/widget/-/widget-1.0.1.tgz", + "integrity": "sha512-TmQ2850w4jyjJ+dbhnzqs3HssFRH9LQQlXNebaUYMrdmZQYhPYbCrgdIrrN8BUhuV0/gxjKHfdAb1U1EthInLw==" }, - "node_modules/@interopio/workspaces-ui-core/node_modules/nanoid": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.6.tgz", - "integrity": "sha512-rRq0eMHoGZxlvaFOUdK1Ev83Bd1IgzzR+WJ3IbDJ7QOSdAxYjlurSPqFs9s4lJg29RT6nPwizFtJhQS6V5xgiA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^18 || >=20" - } + "node_modules/@interopio/workspaces-api": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.3.1.tgz", + "integrity": "sha512-9huXU5MH71WkuHBOO3f6ttLtmQX6Q+/H9TO/LehKqynLmeA8R5ZUp508dKT8fa0Ek4CTQsmv0c4gpjNCFddmeg==" }, "node_modules/@interopio/workspaces-ui-react": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-react/-/workspaces-ui-react-3.2.2.tgz", - "integrity": "sha512-qPxW8hXmZf7jsQvp2/P6vBknCPuR1GvC1lWaclxIoE2EzJ65ay55uRiddh6bBySablsa7sX1UreCK/vYdG269w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-react/-/workspaces-ui-react-3.3.1.tgz", + "integrity": "sha512-7GoxhbzuxgNCYLqAQ2JzfIKmrPJp8PZFYklW6pmRYgCHLy0PyfdXsTqg4mynD/xGxyMbd1kzgfJ2uiHEjD6zQA==", "dependencies": { - "@interopio/workspaces-ui-core": "^3.2.2", - "reactjs-popup": "^2.0.5", - "use-sync-external-store": "^1.2.0" + "resize-observer-polyfill": "^1.5.1" }, "engines": { "node": ">=10" }, "peerDependencies": { + "@interopio/react-hooks": "^3.2.1", "react": ">=16.8.0", "react-dom": ">=16.8.0" }, "peerDependenciesMeta": { + "@interopio/react-hooks": { + "optional": true + }, "react": { "autoinstall": false }, @@ -3058,90 +2857,6 @@ } } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -3643,15 +3358,6 @@ "node": ">= 8" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", @@ -3702,16 +3408,6 @@ } } }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -4305,11 +4001,6 @@ "@types/node": "*" } }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, "node_modules/@types/connect": { "version": "3.4.36", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", @@ -4504,7 +4195,8 @@ "node_modules/@types/node": { "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -4562,30 +4254,6 @@ "@types/react": "^16" } }, - "node_modules/@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/request/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -4667,11 +4335,6 @@ "@types/jest": "*" } }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, "node_modules/@types/trusted-types": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.4.tgz", @@ -5296,6 +4959,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -5304,6 +4968,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -5361,6 +5026,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -5541,7 +5207,8 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/at-least-node": { "version": "1.0.0", @@ -5593,6 +5260,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -5609,16 +5277,6 @@ "node": ">=4" } }, - "node_modules/axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", - "dependencies": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -5862,7 +5520,8 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/batch": { "version": "0.6.1", @@ -5988,18 +5647,6 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, - "node_modules/bootstrap": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", - "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - }, - "peerDependencies": { - "@popperjs/core": "^2.10.2" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -6100,6 +5747,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -6431,6 +6079,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6441,7 +6090,8 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/colord": { "version": "2.9.3", @@ -6459,6 +6109,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -6671,6 +6322,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7157,11 +6809,6 @@ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, - "node_modules/decoder-validate": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/decoder-validate/-/decoder-validate-0.0.2.tgz", - "integrity": "sha512-9BsqAH9Zq6CvlxKHkSrZrH2iYlhuhHcrh6uTnDvcsa9P5YEweEzt1ci+X/9STgSCE7b9BA7/QIiwhfUDDWmjxw==" - }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -7172,6 +6819,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", + "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", @@ -7206,6 +6854,7 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -7226,6 +6875,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -7248,6 +6898,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -7264,6 +6915,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "engines": { "node": ">=0.4.0" } @@ -7528,11 +7180,6 @@ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -7575,7 +7222,8 @@ "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "node_modules/emojis-list": { "version": "3.0.0", @@ -7698,6 +7346,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -8852,6 +8501,7 @@ "version": "1.15.5", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "dev": true, "funding": [ { "type": "individual", @@ -8871,36 +8521,11 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, "dependencies": { "is-callable": "^1.1.3" } }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", @@ -8998,19 +8623,6 @@ "node": ">=6" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -9085,7 +8697,8 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/function.prototype.name": { "version": "1.1.6", @@ -9109,6 +8722,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9135,6 +8749,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -9312,6 +8927,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -9362,6 +8978,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, "engines": { "node": ">= 0.4.0" } @@ -9370,6 +8987,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9387,6 +9005,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, "dependencies": { "get-intrinsic": "^1.1.1" }, @@ -9398,6 +9017,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -9409,6 +9029,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -9420,6 +9041,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -9722,7 +9344,8 @@ "node_modules/idb": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "dev": true }, "node_modules/identity-obj-proxy": { "version": "3.0.0", @@ -9843,6 +9466,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, "dependencies": { "get-intrinsic": "^1.2.0", "has": "^1.0.3", @@ -9865,6 +9489,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -9880,6 +9505,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -9914,6 +9540,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -9937,6 +9564,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -9952,6 +9580,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -9975,6 +9604,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -10025,6 +9655,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "engines": { "node": ">=8" } @@ -10069,6 +9700,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10104,6 +9736,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -10154,6 +9787,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -10187,6 +9821,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10195,6 +9830,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -10218,6 +9854,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -10232,6 +9869,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -10246,6 +9884,7 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, "dependencies": { "which-typed-array": "^1.1.11" }, @@ -10266,6 +9905,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10286,6 +9926,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -10309,12 +9950,14 @@ "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", @@ -10428,23 +10071,6 @@ "set-function-name": "^2.0.1" } }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -11511,11 +11137,6 @@ "jiti": "bin/jiti.js" } }, - "node_modules/jquery": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.0.tgz", - "integrity": "sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ==" - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -11713,14 +11334,6 @@ "node": ">=0.10.0" } }, - "node_modules/jsrsasign": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", - "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==", - "funding": { - "url": "https://github.com/kjur/jsrsasign#donations" - } - }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -11736,11 +11349,6 @@ "node": ">=4.0" } }, - "node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, "node_modules/keyv": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", @@ -12079,6 +11687,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -12087,6 +11696,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -12211,14 +11821,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -12262,9 +11864,9 @@ } }, "node_modules/nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -12272,10 +11874,10 @@ } ], "bin": { - "nanoid": "bin/nanoid.js" + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, "node_modules/natural-compare": { @@ -12417,6 +12019,7 @@ "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12425,6 +12028,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -12440,6 +12044,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -12448,6 +12053,7 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -12777,6 +12383,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "engines": { "node": ">=8" } @@ -12787,29 +12394,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "engines": { - "node": "14 || >=16.14" - } - }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -14260,24 +13844,6 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, - "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -14400,11 +13966,6 @@ "node": ">= 0.10" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -14717,18 +14278,6 @@ } } }, - "node_modules/reactjs-popup": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-2.0.6.tgz", - "integrity": "sha512-A+tt+x9wdgZiZjv0e2WzYLD3IfFwJALaRaqwrCSXGjo0iQdsry/EtBEbQXRSmQs7cHmOi5eytCiSlOm8k4C+dg==", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": ">=16", - "react-dom": ">=16" - } - }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -14852,6 +14401,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -14937,6 +14487,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -15524,6 +15075,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, "dependencies": { "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", @@ -15543,6 +15095,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -15554,6 +15107,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "engines": { "node": ">=8" } @@ -15567,24 +15121,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shortid": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz", - "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dependencies": { - "nanoid": "^2.1.0" - } - }, - "node_modules/shortid/node_modules/nanoid": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", - "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -15881,6 +15422,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, "dependencies": { "internal-slot": "^1.0.4" }, @@ -15920,6 +15462,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -15929,29 +15472,11 @@ "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/string.prototype.matchall": { "version": "4.0.10", @@ -16036,18 +15561,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -16876,6 +16390,7 @@ "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -16884,28 +16399,6 @@ "node": ">=4.2.0" } }, - "node_modules/ua-parser-js": { - "version": "1.0.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", - "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "engines": { - "node": "*" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -17061,14 +16554,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -17589,6 +17074,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -17603,6 +17089,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -17644,6 +17131,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, "dependencies": { "is-map": "^2.0.1", "is-set": "^2.0.1", @@ -17658,6 +17146,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -18020,23 +17509,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -19947,99 +19419,6 @@ "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", "dev": true }, - "@glue42/gateway-web": { - "version": "3.0.19", - "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", - "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" - }, - "@glue42/schemas": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@glue42/schemas/-/schemas-3.22.0.tgz", - "integrity": "sha512-4eC3oIci6o09DIPYwvGCHSaGHdNPqDDnqByh0XuiOw/lA6rlZii4HfamqbCYhytEZ58dqAdyTDqyqVNnEVBuQA==", - "requires": { - "ajv": "^6.12.6", - "ajv-keywords": "^3.4.1" - } - }, - "@glue42/server-api": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", - "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", - "requires": { - "@glue42/schemas": "^3.18.0", - "@types/request": "^2.48.8", - "axios": "^1.6.2", - "form-data": "^4.0.0", - "jwt-decode": "^3.1.2", - "rimraf": "^5.0.5", - "typescript": "^4.2.4" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "requires": { - "glob": "^10.3.7" - } - } - } - }, - "@glue42/theme": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@glue42/theme/-/theme-4.0.8.tgz", - "integrity": "sha512-aMKAOdw8GJWd9MjlsVgNOOskq4ii5w1PwhPEileHfSBjEHDH0aPVfEZo/aYSlfJKO8fD2IZQUxJt8jB4rbkhAw==", - "requires": { - "ajv": "^7.0.3", - "bootstrap": "5.1.3" - }, - "dependencies": { - "ajv": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.4.tgz", - "integrity": "sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - } - } - }, "@humanwhocodes/config-array": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", @@ -20064,212 +19443,93 @@ "dev": true }, "@interopio/browser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", - "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.3.1.tgz", + "integrity": "sha512-emoQNOItICL9RFp3gpxKvpcCnM+lvlV9zxz1Adzo//uwcmwNJLGuEmQyqLYc3eSw65bdX/PjXJ+ZtQL482zElw==", "requires": { - "@interopio/core": "^6.2.0", + "@interopio/core": "^6.3.1", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.6.0", - "decoder-validate": "0.0.2", - "idb": "^7.1.1", - "nanoid": "^4.0.0", - "shortid": "^2.2.16" + "@interopio/search-api": "^2.3.1", + "@interopio/widget": "^1.0.1", + "@interopio/workspaces-api": "^3.3.1", + "callback-registry": "^2.7.2" } }, "@interopio/browser-platform": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", - "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.3.1.tgz", + "integrity": "sha512-LMLVq4EWkqlxq4Z9BDEyoKizuKZbOAXfqMNCMTCkXjr46qZ/wGSo1L9NA+9L+A5xoXKkRv9aHhr1CGW3BWUeww==", "requires": { - "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.6.3", - "@interopio/browser": "^3.2.0", - "@interopio/core": "^6.2.0", - "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.7.1", - "decoder-validate": "0.0.2", - "deep-equal": "^2.1.0", - "deepmerge": "^4.2.2", - "fast-deep-equal": "^3.1.3", - "idb": "^7.1.1", - "jsrsasign": "^10.8.6", - "nanoid": "^4.0.0", - "shortid": "^2.2.16", - "ua-parser-js": "^1.0.35" + "@interopio/browser": "^3.3.1", + "@interopio/core": "^6.3.1", + "@interopio/desktop": "^6.0.1" } }, "@interopio/core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", - "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.3.1.tgz", + "integrity": "sha512-qTNZ7zMAi8uElLHy4V76ugP7PgrA/hAaNi9ic3ibs8rt3jzmh2cdBmQTIdGEajlunShFZSV7rJKmj/laHL7etw==", "requires": { "callback-registry": "^2.7.2", - "shortid": "^2.2.16", "ws": "^8.12.1" } }, - "@interopio/desktop": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", - "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", - "requires": { - "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.1.0", - "@interopio/workspaces-api": "^3.1.0", - "callback-registry": "^2.7.1", - "nanoid": "^3.3.7" - }, - "dependencies": { - "nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" - } - } - }, - "@interopio/golden-layout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/golden-layout/-/golden-layout-3.2.0.tgz", - "integrity": "sha512-2SHrxBuf+0CEnjLltjOxdPkdJLZi1BdYEa65jlm3r7GEVuSYdswbAzo+X8f+kd856uNEdCxUOXnnSF8FnJcoqw==", - "requires": {} - }, - "@interopio/react-hooks": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", - "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", - "requires": { - "@interopio/browser": "^3.2.0", - "@interopio/browser-platform": "^3.2.0", - "@interopio/desktop": "^6.0.1", - "prop-types": "^15.7.2" - } - }, - "@interopio/search-api": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", - "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", - "requires": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" - } - }, - "@interopio/theme": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@interopio/theme/-/theme-1.0.4.tgz", - "integrity": "sha512-8tqY9P6IJALnIHQ5PI8EYs/8Y3zTpNZ+uQbjY4lRbEjmhyUUf8P1D9N1C7zN/KefEvBsKtSv9vqpqcZjALyQhg==" - }, - "@interopio/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", + "@interopio/desktop": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.4.0.tgz", + "integrity": "sha512-dMBArfT1nVWkyFtdA9cSJHOU9EKyac6K+F/xEwqdjfIqlcNIWtf9XDDImZYiONNxMz7oCxrAGJHwNkR0ZYjwRA==", "requires": { - "decoder-validate": "^0.0.2" + "@interopio/core": "^6.2.1", + "@interopio/schemas": "^9.3.0", + "@interopio/workspaces-api": "^3.2.1", + "callback-registry": "^2.7.1", + "nanoid": "^3.3.7" } }, - "@interopio/workspaces-api": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", - "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", + "@interopio/react-hooks": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.3.1.tgz", + "integrity": "sha512-CXQJqSuqLbeajAH0uF3vKQJqcZfb0iEzV7Cg9yyu/XXOFQGbonUxijDvtRduV5dmxFn2gZRJNjsXEld3q8tUlQ==", "requires": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" + "@interopio/browser": "^3.3.1", + "@interopio/browser-platform": "^3.3.1", + "@interopio/desktop": "^6.0.1", + "prop-types": "^15.7.2" } }, - "@interopio/workspaces-ui-core": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-core/-/workspaces-ui-core-3.2.2.tgz", - "integrity": "sha512-4ILBR4tISApAuGlWQG+///sdw65zFAgDEEJ6Q9si/jnXy3Ve+W7aIQpZAAqeVq932JsQYCSYiQUwh0rNI28kQA==", + "@interopio/schemas": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@interopio/schemas/-/schemas-9.3.0.tgz", + "integrity": "sha512-LSZHxB4CZAeoPCywKpqzWHhiJQYHhmhhKYGnFibFOGx9ADlp4hRKOuX3q97DTBJ6/p1gNkByMH/NTjyDTDKjTg==", "requires": { - "@glue42/theme": "^4.0.6", - "@interopio/browser": "^3.2.0", - "@interopio/golden-layout": "^3.2.0", - "@interopio/theme": "^1.0.3", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.7.2", - "jquery": "3.5.0", - "nanoid": "^5.0.4", - "resize-observer-polyfill": "^1.5.1" - }, - "dependencies": { - "nanoid": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.6.tgz", - "integrity": "sha512-rRq0eMHoGZxlvaFOUdK1Ev83Bd1IgzzR+WJ3IbDJ7QOSdAxYjlurSPqFs9s4lJg29RT6nPwizFtJhQS6V5xgiA==" - } + "ajv": "^6.12.6", + "ajv-keywords": "^3.4.1" } }, - "@interopio/workspaces-ui-react": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-react/-/workspaces-ui-react-3.2.2.tgz", - "integrity": "sha512-qPxW8hXmZf7jsQvp2/P6vBknCPuR1GvC1lWaclxIoE2EzJ65ay55uRiddh6bBySablsa7sX1UreCK/vYdG269w==", + "@interopio/search-api": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.3.1.tgz", + "integrity": "sha512-z3Gc4VDnCi37wN0RwZT/0CfdrkUUy7rtOcwHErHQiYq209dRrMuYvM9RJkLwBslZ7h6zqCwfedu3uSAmG+Cjew==", "requires": { - "@interopio/workspaces-ui-core": "^3.2.2", - "reactjs-popup": "^2.0.5", - "use-sync-external-store": "^1.2.0" + "@interopio/core": "^6.3.1" } }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "@interopio/widget": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@interopio/widget/-/widget-1.0.1.tgz", + "integrity": "sha512-TmQ2850w4jyjJ+dbhnzqs3HssFRH9LQQlXNebaUYMrdmZQYhPYbCrgdIrrN8BUhuV0/gxjKHfdAb1U1EthInLw==" + }, + "@interopio/workspaces-api": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.3.1.tgz", + "integrity": "sha512-9huXU5MH71WkuHBOO3f6ttLtmQX6Q+/H9TO/LehKqynLmeA8R5ZUp508dKT8fa0Ek4CTQsmv0c4gpjNCFddmeg==" + }, + "@interopio/workspaces-ui-react": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-react/-/workspaces-ui-react-3.3.1.tgz", + "integrity": "sha512-7GoxhbzuxgNCYLqAQ2JzfIKmrPJp8PZFYklW6pmRYgCHLy0PyfdXsTqg4mynD/xGxyMbd1kzgfJ2uiHEjD6zQA==", "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } + "resize-observer-polyfill": "^1.5.1" } }, "@istanbuljs/load-nyc-config": { @@ -20674,12 +19934,6 @@ "fastq": "^1.6.0" } }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true - }, "@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", @@ -20697,12 +19951,6 @@ "source-map": "^0.7.3" } }, - "@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true - }, "@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -21133,11 +20381,6 @@ "@types/node": "*" } }, - "@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, "@types/connect": { "version": "3.4.36", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", @@ -21328,7 +20571,8 @@ "@types/node": { "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true }, "@types/parse-json": { "version": "4.0.0", @@ -21386,29 +20630,6 @@ "@types/react": "^16" } }, - "@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "requires": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - }, - "dependencies": { - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - } - } - }, "@types/resolve": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", @@ -21490,11 +20711,6 @@ "@types/jest": "*" } }, - "@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, "@types/trusted-types": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.4.tgz", @@ -21958,12 +21174,14 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -22012,6 +21230,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, "requires": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -22150,7 +21369,8 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "at-least-node": { "version": "1.0.0", @@ -22175,7 +21395,8 @@ "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true }, "axe-core": { "version": "4.8.2", @@ -22183,16 +21404,6 @@ "integrity": "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==", "dev": true }, - "axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", - "requires": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -22387,7 +21598,8 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "batch": { "version": "0.6.1", @@ -22496,12 +21708,6 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, - "bootstrap": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", - "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", - "requires": {} - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -22570,6 +21776,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -22812,6 +22019,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "requires": { "color-name": "~1.1.4" } @@ -22819,7 +22027,8 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "colord": { "version": "2.9.3", @@ -22837,6 +22046,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -23007,6 +22217,7 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -23338,11 +22549,6 @@ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", "dev": true }, - "decoder-validate": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/decoder-validate/-/decoder-validate-0.0.2.tgz", - "integrity": "sha512-9BsqAH9Zq6CvlxKHkSrZrH2iYlhuhHcrh6uTnDvcsa9P5YEweEzt1ci+X/9STgSCE7b9BA7/QIiwhfUDDWmjxw==" - }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -23353,6 +22559,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", + "dev": true, "requires": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", @@ -23383,7 +22590,8 @@ "deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true }, "default-gateway": { "version": "6.0.3", @@ -23398,6 +22606,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "dev": true, "requires": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -23414,6 +22623,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, "requires": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -23423,7 +22633,8 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true }, "depd": { "version": "2.0.0", @@ -23630,11 +22841,6 @@ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -23665,7 +22871,8 @@ "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "emojis-list": { "version": "3.0.0", @@ -23770,6 +22977,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -24660,32 +23868,18 @@ "follow-redirects": { "version": "1.15.5", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "dev": true }, "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, "requires": { "is-callable": "^1.1.3" } }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "dependencies": { - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" - } - } - }, "fork-ts-checker-webpack-plugin": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", @@ -24751,16 +23945,6 @@ } } }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -24812,7 +23996,8 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "function.prototype.name": { "version": "1.1.6", @@ -24829,7 +24014,8 @@ "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true }, "gensync": { "version": "1.0.0-beta.2", @@ -24847,6 +24033,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -24975,6 +24162,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "requires": { "get-intrinsic": "^1.1.3" } @@ -25015,12 +24203,14 @@ "has": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==" + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true }, "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true }, "has-flag": { "version": "4.0.0", @@ -25032,6 +24222,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, "requires": { "get-intrinsic": "^1.1.1" } @@ -25039,17 +24230,20 @@ "has-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -25272,7 +24466,8 @@ "idb": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "dev": true }, "identity-obj-proxy": { "version": "3.0.0", @@ -25361,6 +24556,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, "requires": { "get-intrinsic": "^1.2.0", "has": "^1.0.3", @@ -25377,6 +24573,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -25386,6 +24583,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -25411,6 +24609,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, "requires": { "has-bigints": "^1.0.1" } @@ -25428,6 +24627,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -25436,7 +24636,8 @@ "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true }, "is-core-module": { "version": "2.13.0", @@ -25451,6 +24652,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -25479,7 +24681,8 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "is-generator-fn": { "version": "2.1.0", @@ -25508,7 +24711,8 @@ "is-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true }, "is-module": { "version": "1.0.0", @@ -25532,6 +24736,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -25564,6 +24769,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -25584,12 +24790,14 @@ "is-set": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true }, "is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, "requires": { "call-bind": "^1.0.2" } @@ -25604,6 +24812,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -25612,6 +24821,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -25620,6 +24830,7 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, "requires": { "which-typed-array": "^1.1.11" } @@ -25633,7 +24844,8 @@ "is-weakmap": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true }, "is-weakref": { "version": "1.0.2", @@ -25648,6 +24860,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -25665,12 +24878,14 @@ "isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "istanbul-lib-coverage": { "version": "3.2.0", @@ -25763,15 +24978,6 @@ "set-function-name": "^2.0.1" } }, - "jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, "jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -26608,11 +25814,6 @@ "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", "dev": true }, - "jquery": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.0.tgz", - "integrity": "sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ==" - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -26759,11 +25960,6 @@ "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "dev": true }, - "jsrsasign": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", - "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==" - }, "jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -26776,11 +25972,6 @@ "object.values": "^1.1.6" } }, - "jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, "keyv": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", @@ -27054,12 +26245,14 @@ "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "requires": { "mime-db": "1.52.0" } @@ -27147,11 +26340,6 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, - "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" - }, "mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -27189,9 +26377,9 @@ } }, "nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" }, "natural-compare": { "version": "1.4.0", @@ -27301,12 +26489,14 @@ "object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true }, "object-is": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -27315,12 +26505,14 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "object.assign": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -27562,7 +26754,8 @@ "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true }, "path-parse": { "version": "1.0.7", @@ -27570,22 +26763,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "requires": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==" - } - } - }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -27739,14 +26916,6 @@ "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" - }, - "dependencies": { - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true - } } }, "postcss-attribute-case-insensitive": { @@ -28577,11 +27746,6 @@ } } }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -28826,12 +27990,6 @@ "workbox-webpack-plugin": "^6.4.1" } }, - "reactjs-popup": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-2.0.6.tgz", - "integrity": "sha512-A+tt+x9wdgZiZjv0e2WzYLD3IfFwJALaRaqwrCSXGjo0iQdsry/EtBEbQXRSmQs7cHmOi5eytCiSlOm8k4C+dg==", - "requires": {} - }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -28934,6 +28092,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -28999,7 +28158,8 @@ "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true }, "requires-port": { "version": "1.0.0", @@ -29425,6 +28585,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, "requires": { "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", @@ -29441,6 +28602,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -29448,7 +28610,8 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true }, "shell-quote": { "version": "1.8.1", @@ -29456,25 +28619,11 @@ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true }, - "shortid": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz", - "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==", - "requires": { - "nanoid": "^2.1.0" - }, - "dependencies": { - "nanoid": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", - "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" - } - } - }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -29711,6 +28860,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, "requires": { "internal-slot": "^1.0.4" } @@ -29744,6 +28894,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -29753,24 +28904,8 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - } - } - }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true } } }, @@ -29839,14 +28974,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -30471,12 +29599,8 @@ "typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" - }, - "ua-parser-js": { - "version": "1.0.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", - "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==" + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true }, "unbox-primitive": { "version": "1.0.2", @@ -30585,12 +29709,6 @@ "requires-port": "^1.0.0" } }, - "use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "requires": {} - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -30991,6 +30109,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -30999,6 +30118,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -31031,6 +30151,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, "requires": { "is-map": "^2.0.1", "is-set": "^2.0.1", @@ -31042,6 +30163,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -31364,16 +30486,6 @@ "strip-ansi": "^6.0.0" } }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/browser-platform-dev-react-seed/workspace-platform/package.json b/browser-platform-dev-react-seed/workspace-platform/package.json index 5e1cb44..9c44f29 100644 --- a/browser-platform-dev-react-seed/workspace-platform/package.json +++ b/browser-platform-dev-react-seed/workspace-platform/package.json @@ -4,11 +4,11 @@ "private": true, "homepage": "./", "dependencies": { - "@interopio/browser-platform": "^3.2.0", - "@interopio/desktop": "^6.2.2", - "@interopio/react-hooks": "^3.2.0", - "@interopio/workspaces-api": "^3.2.0", - "@interopio/workspaces-ui-react": "^3.2.2", + "@interopio/browser-platform": "^3.3.1", + "@interopio/desktop": "^6.4.0", + "@interopio/react-hooks": "^3.3.1", + "@interopio/workspaces-api": "^3.3.1", + "@interopio/workspaces-ui-react": "^3.3.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/browser-platform-home-react-wsp/package-lock.json b/browser-platform-home-react-wsp/package-lock.json index 9bb9ff1..558942f 100644 --- a/browser-platform-home-react-wsp/package-lock.json +++ b/browser-platform-home-react-wsp/package-lock.json @@ -9,12 +9,12 @@ "version": "3.2.0", "dependencies": { "@auth0/auth0-react": "^2.1.0", - "@interopio/browser-platform": "^3.2.0", - "@interopio/browser-worker": "^3.2.0", - "@interopio/home-ui-react": "^1.2.1", - "@interopio/react-hooks": "^3.2.0", - "@interopio/workspaces-api": "^3.2.0", - "@interopio/workspaces-ui-react": "^3.2.2", + "@interopio/browser-platform": "^3.3.1", + "@interopio/browser-worker": "^3.3.1", + "@interopio/home-ui-react": "^1.3.0", + "@interopio/react-hooks": "^3.3.1", + "@interopio/workspaces-api": "^3.3.1", + "@interopio/workspaces-ui-react": "^3.3.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -2101,144 +2101,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@glue42/gateway-web": { - "version": "3.0.19", - "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", - "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" - }, - "node_modules/@glue42/schemas": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@glue42/schemas/-/schemas-3.22.0.tgz", - "integrity": "sha512-4eC3oIci6o09DIPYwvGCHSaGHdNPqDDnqByh0XuiOw/lA6rlZii4HfamqbCYhytEZ58dqAdyTDqyqVNnEVBuQA==", - "dependencies": { - "ajv": "^6.12.6", - "ajv-keywords": "^3.4.1" - }, - "peerDependencies": { - "log4js": "^6.4.2" - }, - "peerDependenciesMeta": { - "log4js": { - "optional": true - } - } - }, - "node_modules/@glue42/server-api": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", - "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", - "dependencies": { - "@glue42/schemas": "^3.18.0", - "@types/request": "^2.48.8", - "axios": "^1.6.2", - "form-data": "^4.0.0", - "jwt-decode": "^3.1.2", - "rimraf": "^5.0.5", - "typescript": "^4.2.4" - } - }, - "node_modules/@glue42/server-api/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@glue42/server-api/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@glue42/server-api/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@glue42/server-api/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@glue42/server-api/node_modules/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@glue42/theme": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@glue42/theme/-/theme-4.0.8.tgz", - "integrity": "sha512-aMKAOdw8GJWd9MjlsVgNOOskq4ii5w1PwhPEileHfSBjEHDH0aPVfEZo/aYSlfJKO8fD2IZQUxJt8jB4rbkhAw==", - "dependencies": { - "ajv": "^7.0.3", - "bootstrap": "5.1.3" - } - }, - "node_modules/@glue42/theme/node_modules/ajv": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.4.tgz", - "integrity": "sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@glue42/theme/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "license": "Apache-2.0", @@ -2267,122 +2129,46 @@ "license": "BSD-3-Clause" }, "node_modules/@interopio/browser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", - "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.3.1.tgz", + "integrity": "sha512-emoQNOItICL9RFp3gpxKvpcCnM+lvlV9zxz1Adzo//uwcmwNJLGuEmQyqLYc3eSw65bdX/PjXJ+ZtQL482zElw==", "dependencies": { - "@interopio/core": "^6.2.0", + "@interopio/core": "^6.3.1", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.6.0", - "decoder-validate": "0.0.2", - "idb": "^7.1.1", - "nanoid": "^4.0.0", - "shortid": "^2.2.16" + "@interopio/search-api": "^2.3.1", + "@interopio/widget": "^1.0.1", + "@interopio/workspaces-api": "^3.3.1", + "callback-registry": "^2.7.2" } }, "node_modules/@interopio/browser-platform": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", - "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.3.1.tgz", + "integrity": "sha512-LMLVq4EWkqlxq4Z9BDEyoKizuKZbOAXfqMNCMTCkXjr46qZ/wGSo1L9NA+9L+A5xoXKkRv9aHhr1CGW3BWUeww==", "dependencies": { - "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.6.3", - "@interopio/browser": "^3.2.0", - "@interopio/core": "^6.2.0", - "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.7.1", - "decoder-validate": "0.0.2", - "deep-equal": "^2.1.0", - "deepmerge": "^4.2.2", - "fast-deep-equal": "^3.1.3", - "idb": "^7.1.1", - "jsrsasign": "^10.8.6", - "nanoid": "^4.0.0", - "shortid": "^2.2.16", - "ua-parser-js": "^1.0.35" - } - }, - "node_modules/@interopio/browser-platform/node_modules/nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^14 || ^16 || >=18" + "@interopio/browser": "^3.3.1", + "@interopio/core": "^6.3.1", + "@interopio/desktop": "^6.0.1" } }, "node_modules/@interopio/browser-worker": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser-worker/-/browser-worker-3.2.0.tgz", - "integrity": "sha512-C8DI8gQvjBmUse2nFL6DDX0PdQfDRbAbiU51yIT1LEZVV/hHWPKGgxhnHN4s1/kFMwaScKBaU4xj5Wwo/qkGcQ==", - "dependencies": { - "decoder-validate": "0.0.2", - "idb": "^7.1.1", - "nanoid": "^4.0.0" - } - }, - "node_modules/@interopio/browser-worker/node_modules/nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^14 || ^16 || >=18" - } - }, - "node_modules/@interopio/browser/node_modules/nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^14 || ^16 || >=18" - } + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser-worker/-/browser-worker-3.3.1.tgz", + "integrity": "sha512-rTJyF+I2CEjP6udelylbnjRS7ZU8Z0t4H6Zv0TWT+y7K1NK7R8STskgh4d+WwNRUxMnEsKrHWuW1daqQ0QCOFQ==" }, "node_modules/@interopio/core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", - "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.3.1.tgz", + "integrity": "sha512-qTNZ7zMAi8uElLHy4V76ugP7PgrA/hAaNi9ic3ibs8rt3jzmh2cdBmQTIdGEajlunShFZSV7rJKmj/laHL7etw==", "dependencies": { "callback-registry": "^2.7.2", - "shortid": "^2.2.16", "ws": "^8.12.1" } }, "node_modules/@interopio/core/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "engines": { "node": ">=10.0.0" }, @@ -2400,46 +2186,21 @@ } }, "node_modules/@interopio/desktop": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", - "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.4.0.tgz", + "integrity": "sha512-dMBArfT1nVWkyFtdA9cSJHOU9EKyac6K+F/xEwqdjfIqlcNIWtf9XDDImZYiONNxMz7oCxrAGJHwNkR0ZYjwRA==", "dependencies": { - "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.1.0", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/core": "^6.2.1", + "@interopio/schemas": "^9.3.0", + "@interopio/workspaces-api": "^3.2.1", "callback-registry": "^2.7.1", "nanoid": "^3.3.7" } }, - "node_modules/@interopio/desktop/node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/@interopio/golden-layout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/golden-layout/-/golden-layout-3.2.0.tgz", - "integrity": "sha512-2SHrxBuf+0CEnjLltjOxdPkdJLZi1BdYEa65jlm3r7GEVuSYdswbAzo+X8f+kd856uNEdCxUOXnnSF8FnJcoqw==", - "peerDependencies": { - "jquery": "3.5.0" - } - }, "node_modules/@interopio/home-ui-react": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@interopio/home-ui-react/-/home-ui-react-1.2.1.tgz", - "integrity": "sha512-wDLckSMPprJtjykUFLUqClElZ1LK+d0MykiwoWXAe2g0SiEnioivPmNAQkzH/p7bbKwXVhTD3pq0kUOfJD/Xkw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@interopio/home-ui-react/-/home-ui-react-1.3.0.tgz", + "integrity": "sha512-bSsA5z+uDv/7/lO7P89LAglC9cVxs8fFY93CrI9nNR17+QTWc+7UXYvAuprQEcScy3B6Amb88+3EijHinp7FMw==", "peerDependencies": { "@interopio/react-hooks": ">=3.0.0", "@interopio/workspaces-api": ">=3.0.0", @@ -2457,12 +2218,12 @@ } }, "node_modules/@interopio/react-hooks": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", - "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.3.1.tgz", + "integrity": "sha512-CXQJqSuqLbeajAH0uF3vKQJqcZfb0iEzV7Cg9yyu/XXOFQGbonUxijDvtRduV5dmxFn2gZRJNjsXEld3q8tUlQ==", "dependencies": { - "@interopio/browser": "^3.2.0", - "@interopio/browser-platform": "^3.2.0", + "@interopio/browser": "^3.3.1", + "@interopio/browser-platform": "^3.3.1", "@interopio/desktop": "^6.0.1", "prop-types": "^15.7.2" }, @@ -2479,125 +2240,60 @@ } } }, - "node_modules/@interopio/search-api": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", - "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", + "node_modules/@interopio/schemas": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@interopio/schemas/-/schemas-9.3.0.tgz", + "integrity": "sha512-LSZHxB4CZAeoPCywKpqzWHhiJQYHhmhhKYGnFibFOGx9ADlp4hRKOuX3q97DTBJ6/p1gNkByMH/NTjyDTDKjTg==", "dependencies": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" - } - }, - "node_modules/@interopio/search-api/node_modules/nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" + "ajv": "^6.12.6", + "ajv-keywords": "^3.4.1" }, - "engines": { - "node": "^14 || ^16 || >=18" - } - }, - "node_modules/@interopio/theme": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@interopio/theme/-/theme-1.0.4.tgz", - "integrity": "sha512-8tqY9P6IJALnIHQ5PI8EYs/8Y3zTpNZ+uQbjY4lRbEjmhyUUf8P1D9N1C7zN/KefEvBsKtSv9vqpqcZjALyQhg==" - }, - "node_modules/@interopio/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", - "dependencies": { - "decoder-validate": "^0.0.2" - } - }, - "node_modules/@interopio/workspaces-api": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", - "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", - "dependencies": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" - } - }, - "node_modules/@interopio/workspaces-api/node_modules/nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" + "peerDependencies": { + "log4js": "^6.4.2" }, - "engines": { - "node": "^14 || ^16 || >=18" + "peerDependenciesMeta": { + "log4js": { + "optional": true + } } }, - "node_modules/@interopio/workspaces-ui-core": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-core/-/workspaces-ui-core-3.2.2.tgz", - "integrity": "sha512-4ILBR4tISApAuGlWQG+///sdw65zFAgDEEJ6Q9si/jnXy3Ve+W7aIQpZAAqeVq932JsQYCSYiQUwh0rNI28kQA==", + "node_modules/@interopio/search-api": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.3.1.tgz", + "integrity": "sha512-z3Gc4VDnCi37wN0RwZT/0CfdrkUUy7rtOcwHErHQiYq209dRrMuYvM9RJkLwBslZ7h6zqCwfedu3uSAmG+Cjew==", "dependencies": { - "@glue42/theme": "^4.0.6", - "@interopio/browser": "^3.2.0", - "@interopio/golden-layout": "^3.2.0", - "@interopio/theme": "^1.0.3", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.7.2", - "jquery": "3.5.0", - "nanoid": "^5.0.4", - "resize-observer-polyfill": "^1.5.1" + "@interopio/core": "^6.3.1" } }, - "node_modules/@interopio/workspaces-ui-core/node_modules/nanoid": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.6.tgz", - "integrity": "sha512-rRq0eMHoGZxlvaFOUdK1Ev83Bd1IgzzR+WJ3IbDJ7QOSdAxYjlurSPqFs9s4lJg29RT6nPwizFtJhQS6V5xgiA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^18 || >=20" - } + "node_modules/@interopio/widget": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@interopio/widget/-/widget-1.0.1.tgz", + "integrity": "sha512-TmQ2850w4jyjJ+dbhnzqs3HssFRH9LQQlXNebaUYMrdmZQYhPYbCrgdIrrN8BUhuV0/gxjKHfdAb1U1EthInLw==" + }, + "node_modules/@interopio/workspaces-api": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.3.1.tgz", + "integrity": "sha512-9huXU5MH71WkuHBOO3f6ttLtmQX6Q+/H9TO/LehKqynLmeA8R5ZUp508dKT8fa0Ek4CTQsmv0c4gpjNCFddmeg==" }, "node_modules/@interopio/workspaces-ui-react": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-react/-/workspaces-ui-react-3.2.2.tgz", - "integrity": "sha512-qPxW8hXmZf7jsQvp2/P6vBknCPuR1GvC1lWaclxIoE2EzJ65ay55uRiddh6bBySablsa7sX1UreCK/vYdG269w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-react/-/workspaces-ui-react-3.3.1.tgz", + "integrity": "sha512-7GoxhbzuxgNCYLqAQ2JzfIKmrPJp8PZFYklW6pmRYgCHLy0PyfdXsTqg4mynD/xGxyMbd1kzgfJ2uiHEjD6zQA==", "dependencies": { - "@interopio/workspaces-ui-core": "^3.2.2", - "reactjs-popup": "^2.0.5", - "use-sync-external-store": "^1.2.0" + "resize-observer-polyfill": "^1.5.1" }, "engines": { "node": ">=10" }, "peerDependencies": { + "@interopio/react-hooks": "^3.2.1", "react": ">=16.8.0", "react-dom": ">=16.8.0" }, "peerDependenciesMeta": { + "@interopio/react-hooks": { + "optional": true + }, "react": { "autoinstall": false }, @@ -2606,90 +2302,6 @@ } } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "license": "ISC", @@ -3409,15 +3021,6 @@ "node": ">= 8" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.10", "license": "MIT", @@ -3466,16 +3069,6 @@ } } }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", "license": "MIT", @@ -4098,11 +3691,6 @@ "@types/node": "*" } }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, "node_modules/@types/connect": { "version": "3.4.35", "license": "MIT", @@ -4258,30 +3846,6 @@ "@types/react": "*" } }, - "node_modules/@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - } - }, - "node_modules/@types/request/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/@types/resolve": { "version": "1.17.1", "license": "MIT", @@ -4342,11 +3906,6 @@ "@types/jest": "*" } }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, "node_modules/@types/trusted-types": { "version": "2.0.3", "license": "MIT" @@ -5089,29 +4648,6 @@ "node": ">=4" } }, - "node_modules/axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", - "dependencies": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/axobject-query": { "version": "3.1.1", "license": "Apache-2.0", @@ -5481,18 +5017,6 @@ "version": "1.0.0", "license": "ISC" }, - "node_modules/bootstrap": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", - "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - }, - "peerDependencies": { - "@popperjs/core": "^2.10.2" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "license": "MIT", @@ -6383,11 +5907,6 @@ "version": "10.4.3", "license": "MIT" }, - "node_modules/decoder-validate": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/decoder-validate/-/decoder-validate-0.0.2.tgz", - "integrity": "sha512-9BsqAH9Zq6CvlxKHkSrZrH2iYlhuhHcrh6uTnDvcsa9P5YEweEzt1ci+X/9STgSCE7b9BA7/QIiwhfUDDWmjxw==" - }, "node_modules/dedent": { "version": "0.7.0", "license": "MIT" @@ -6667,11 +6186,6 @@ "version": "0.1.2", "license": "MIT" }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, "node_modules/ee-first": { "version": "1.1.1", "license": "MIT" @@ -7904,32 +7418,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "6.5.3", "license": "MIT", @@ -9233,23 +8721,6 @@ "node": ">=8" } }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/jake": { "version": "10.8.5", "license": "Apache-2.0", @@ -11059,11 +10530,6 @@ "jiti": "bin/jiti.js" } }, - "node_modules/jquery": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.0.tgz", - "integrity": "sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ==" - }, "node_modules/js-sdsl": { "version": "4.4.0", "license": "MIT", @@ -11184,14 +10650,6 @@ "node": ">=0.10.0" } }, - "node_modules/jsrsasign": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", - "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==", - "funding": { - "url": "https://github.com/kjur/jsrsasign#donations" - } - }, "node_modules/jsx-ast-utils": { "version": "3.3.3", "license": "MIT", @@ -11203,11 +10661,6 @@ "node": ">=4.0" } }, - "node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, "node_modules/kind-of": { "version": "6.0.3", "license": "MIT", @@ -11576,14 +11029,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/mkdirp": { "version": "0.5.6", "license": "MIT", @@ -11619,14 +11064,15 @@ } }, "node_modules/nanoid": { - "version": "3.3.6", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -12045,29 +11491,6 @@ "version": "1.0.7", "license": "MIT" }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "engines": { - "node": "14 || >=16.14" - } - }, "node_modules/path-to-regexp": { "version": "0.1.7", "license": "MIT" @@ -13428,11 +12851,6 @@ "node": ">= 0.10" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "node_modules/psl": { "version": "1.9.0", "license": "MIT" @@ -13768,18 +13186,6 @@ } } }, - "node_modules/reactjs-popup": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-2.0.6.tgz", - "integrity": "sha512-A+tt+x9wdgZiZjv0e2WzYLD3IfFwJALaRaqwrCSXGjo0iQdsry/EtBEbQXRSmQs7cHmOi5eytCiSlOm8k4C+dg==", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": ">=16", - "react-dom": ">=16" - } - }, "node_modules/read-cache": { "version": "1.0.0", "license": "MIT", @@ -14463,20 +13869,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shortid": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz", - "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dependencies": { - "nanoid": "^2.1.0" - } - }, - "node_modules/shortid/node_modules/nanoid": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", - "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" - }, "node_modules/side-channel": { "version": "1.0.4", "license": "MIT", @@ -14675,25 +14067,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", "license": "MIT" @@ -14776,18 +14149,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { "version": "4.0.0", "license": "MIT", @@ -15395,28 +14756,6 @@ "node": ">=4.2.0" } }, - "node_modules/ua-parser-js": { - "version": "1.0.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", - "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "engines": { - "node": "*" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "license": "MIT", @@ -15541,14 +14880,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "license": "MIT" @@ -16337,64 +15668,17 @@ "version": "7.0.0", "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", @@ -17647,109 +16931,6 @@ "@eslint/js": { "version": "8.40.0" }, - "@glue42/gateway-web": { - "version": "3.0.19", - "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", - "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" - }, - "@glue42/schemas": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@glue42/schemas/-/schemas-3.22.0.tgz", - "integrity": "sha512-4eC3oIci6o09DIPYwvGCHSaGHdNPqDDnqByh0XuiOw/lA6rlZii4HfamqbCYhytEZ58dqAdyTDqyqVNnEVBuQA==", - "requires": { - "ajv": "^6.12.6", - "ajv-keywords": "^3.4.1" - } - }, - "@glue42/server-api": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", - "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", - "requires": { - "@glue42/schemas": "^3.18.0", - "@types/request": "^2.48.8", - "axios": "^1.6.2", - "form-data": "^4.0.0", - "jwt-decode": "^3.1.2", - "rimraf": "^5.0.5", - "typescript": "^4.2.4" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "requires": { - "glob": "^10.3.7" - } - } - } - }, - "@glue42/theme": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@glue42/theme/-/theme-4.0.8.tgz", - "integrity": "sha512-aMKAOdw8GJWd9MjlsVgNOOskq4ii5w1PwhPEileHfSBjEHDH0aPVfEZo/aYSlfJKO8fD2IZQUxJt8jB4rbkhAw==", - "requires": { - "ajv": "^7.0.3", - "bootstrap": "5.1.3" - }, - "dependencies": { - "ajv": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.4.tgz", - "integrity": "sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - } - } - }, "@humanwhocodes/config-array": { "version": "0.11.8", "requires": { @@ -17765,271 +16946,112 @@ "version": "1.2.1" }, "@interopio/browser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", - "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.3.1.tgz", + "integrity": "sha512-emoQNOItICL9RFp3gpxKvpcCnM+lvlV9zxz1Adzo//uwcmwNJLGuEmQyqLYc3eSw65bdX/PjXJ+ZtQL482zElw==", "requires": { - "@interopio/core": "^6.2.0", + "@interopio/core": "^6.3.1", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.6.0", - "decoder-validate": "0.0.2", - "idb": "^7.1.1", - "nanoid": "^4.0.0", - "shortid": "^2.2.16" - }, - "dependencies": { - "nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" - } + "@interopio/search-api": "^2.3.1", + "@interopio/widget": "^1.0.1", + "@interopio/workspaces-api": "^3.3.1", + "callback-registry": "^2.7.2" } }, "@interopio/browser-platform": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", - "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.3.1.tgz", + "integrity": "sha512-LMLVq4EWkqlxq4Z9BDEyoKizuKZbOAXfqMNCMTCkXjr46qZ/wGSo1L9NA+9L+A5xoXKkRv9aHhr1CGW3BWUeww==", "requires": { - "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.6.3", - "@interopio/browser": "^3.2.0", - "@interopio/core": "^6.2.0", - "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.2.0", - "@interopio/utils": "^1.2.0", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.7.1", - "decoder-validate": "0.0.2", - "deep-equal": "^2.1.0", - "deepmerge": "^4.2.2", - "fast-deep-equal": "^3.1.3", - "idb": "^7.1.1", - "jsrsasign": "^10.8.6", - "nanoid": "^4.0.0", - "shortid": "^2.2.16", - "ua-parser-js": "^1.0.35" - }, - "dependencies": { - "nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" - } + "@interopio/browser": "^3.3.1", + "@interopio/core": "^6.3.1", + "@interopio/desktop": "^6.0.1" } }, "@interopio/browser-worker": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/browser-worker/-/browser-worker-3.2.0.tgz", - "integrity": "sha512-C8DI8gQvjBmUse2nFL6DDX0PdQfDRbAbiU51yIT1LEZVV/hHWPKGgxhnHN4s1/kFMwaScKBaU4xj5Wwo/qkGcQ==", - "requires": { - "decoder-validate": "0.0.2", - "idb": "^7.1.1", - "nanoid": "^4.0.0" - }, - "dependencies": { - "nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" - } - } + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/browser-worker/-/browser-worker-3.3.1.tgz", + "integrity": "sha512-rTJyF+I2CEjP6udelylbnjRS7ZU8Z0t4H6Zv0TWT+y7K1NK7R8STskgh4d+WwNRUxMnEsKrHWuW1daqQ0QCOFQ==" }, "@interopio/core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", - "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.3.1.tgz", + "integrity": "sha512-qTNZ7zMAi8uElLHy4V76ugP7PgrA/hAaNi9ic3ibs8rt3jzmh2cdBmQTIdGEajlunShFZSV7rJKmj/laHL7etw==", "requires": { "callback-registry": "^2.7.2", - "shortid": "^2.2.16", "ws": "^8.12.1" }, "dependencies": { "ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "requires": {} } } }, "@interopio/desktop": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", - "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.4.0.tgz", + "integrity": "sha512-dMBArfT1nVWkyFtdA9cSJHOU9EKyac6K+F/xEwqdjfIqlcNIWtf9XDDImZYiONNxMz7oCxrAGJHwNkR0ZYjwRA==", "requires": { - "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.1.0", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/core": "^6.2.1", + "@interopio/schemas": "^9.3.0", + "@interopio/workspaces-api": "^3.2.1", "callback-registry": "^2.7.1", "nanoid": "^3.3.7" - }, - "dependencies": { - "nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" - } } }, - "@interopio/golden-layout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/golden-layout/-/golden-layout-3.2.0.tgz", - "integrity": "sha512-2SHrxBuf+0CEnjLltjOxdPkdJLZi1BdYEa65jlm3r7GEVuSYdswbAzo+X8f+kd856uNEdCxUOXnnSF8FnJcoqw==", - "requires": {} - }, "@interopio/home-ui-react": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@interopio/home-ui-react/-/home-ui-react-1.2.1.tgz", - "integrity": "sha512-wDLckSMPprJtjykUFLUqClElZ1LK+d0MykiwoWXAe2g0SiEnioivPmNAQkzH/p7bbKwXVhTD3pq0kUOfJD/Xkw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@interopio/home-ui-react/-/home-ui-react-1.3.0.tgz", + "integrity": "sha512-bSsA5z+uDv/7/lO7P89LAglC9cVxs8fFY93CrI9nNR17+QTWc+7UXYvAuprQEcScy3B6Amb88+3EijHinp7FMw==", "requires": {} }, "@interopio/react-hooks": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", - "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.3.1.tgz", + "integrity": "sha512-CXQJqSuqLbeajAH0uF3vKQJqcZfb0iEzV7Cg9yyu/XXOFQGbonUxijDvtRduV5dmxFn2gZRJNjsXEld3q8tUlQ==", "requires": { - "@interopio/browser": "^3.2.0", - "@interopio/browser-platform": "^3.2.0", + "@interopio/browser": "^3.3.1", + "@interopio/browser-platform": "^3.3.1", "@interopio/desktop": "^6.0.1", "prop-types": "^15.7.2" } }, - "@interopio/search-api": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", - "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", + "@interopio/schemas": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@interopio/schemas/-/schemas-9.3.0.tgz", + "integrity": "sha512-LSZHxB4CZAeoPCywKpqzWHhiJQYHhmhhKYGnFibFOGx9ADlp4hRKOuX3q97DTBJ6/p1gNkByMH/NTjyDTDKjTg==", "requires": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" - }, - "dependencies": { - "nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" - } + "ajv": "^6.12.6", + "ajv-keywords": "^3.4.1" } }, - "@interopio/theme": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@interopio/theme/-/theme-1.0.4.tgz", - "integrity": "sha512-8tqY9P6IJALnIHQ5PI8EYs/8Y3zTpNZ+uQbjY4lRbEjmhyUUf8P1D9N1C7zN/KefEvBsKtSv9vqpqcZjALyQhg==" - }, - "@interopio/utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", - "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", + "@interopio/search-api": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.3.1.tgz", + "integrity": "sha512-z3Gc4VDnCi37wN0RwZT/0CfdrkUUy7rtOcwHErHQiYq209dRrMuYvM9RJkLwBslZ7h6zqCwfedu3uSAmG+Cjew==", "requires": { - "decoder-validate": "^0.0.2" + "@interopio/core": "^6.3.1" } }, - "@interopio/workspaces-api": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", - "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", - "requires": { - "@interopio/core": "^6.2.0", - "callback-registry": "^2.5.2", - "decoder-validate": "0.0.2", - "nanoid": "^4.0.0" - }, - "dependencies": { - "nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" - } - } + "@interopio/widget": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@interopio/widget/-/widget-1.0.1.tgz", + "integrity": "sha512-TmQ2850w4jyjJ+dbhnzqs3HssFRH9LQQlXNebaUYMrdmZQYhPYbCrgdIrrN8BUhuV0/gxjKHfdAb1U1EthInLw==" }, - "@interopio/workspaces-ui-core": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-core/-/workspaces-ui-core-3.2.2.tgz", - "integrity": "sha512-4ILBR4tISApAuGlWQG+///sdw65zFAgDEEJ6Q9si/jnXy3Ve+W7aIQpZAAqeVq932JsQYCSYiQUwh0rNI28kQA==", - "requires": { - "@glue42/theme": "^4.0.6", - "@interopio/browser": "^3.2.0", - "@interopio/golden-layout": "^3.2.0", - "@interopio/theme": "^1.0.3", - "@interopio/workspaces-api": "^3.2.0", - "callback-registry": "^2.7.2", - "jquery": "3.5.0", - "nanoid": "^5.0.4", - "resize-observer-polyfill": "^1.5.1" - }, - "dependencies": { - "nanoid": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.6.tgz", - "integrity": "sha512-rRq0eMHoGZxlvaFOUdK1Ev83Bd1IgzzR+WJ3IbDJ7QOSdAxYjlurSPqFs9s4lJg29RT6nPwizFtJhQS6V5xgiA==" - } - } + "@interopio/workspaces-api": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.3.1.tgz", + "integrity": "sha512-9huXU5MH71WkuHBOO3f6ttLtmQX6Q+/H9TO/LehKqynLmeA8R5ZUp508dKT8fa0Ek4CTQsmv0c4gpjNCFddmeg==" }, "@interopio/workspaces-ui-react": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-react/-/workspaces-ui-react-3.2.2.tgz", - "integrity": "sha512-qPxW8hXmZf7jsQvp2/P6vBknCPuR1GvC1lWaclxIoE2EzJ65ay55uRiddh6bBySablsa7sX1UreCK/vYdG269w==", - "requires": { - "@interopio/workspaces-ui-core": "^3.2.2", - "reactjs-popup": "^2.0.5", - "use-sync-external-store": "^1.2.0" - } - }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-react/-/workspaces-ui-react-3.3.1.tgz", + "integrity": "sha512-7GoxhbzuxgNCYLqAQ2JzfIKmrPJp8PZFYklW6pmRYgCHLy0PyfdXsTqg4mynD/xGxyMbd1kzgfJ2uiHEjD6zQA==", "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } + "resize-observer-polyfill": "^1.5.1" } }, "@istanbuljs/load-nyc-config": { @@ -18489,12 +17511,6 @@ "fastq": "^1.6.0" } }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true - }, "@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.10", "requires": { @@ -18509,12 +17525,6 @@ "source-map": "^0.7.3" } }, - "@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", - "peer": true - }, "@rollup/plugin-babel": { "version": "5.3.1", "requires": { @@ -18872,11 +17882,6 @@ "@types/node": "*" } }, - "@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" - }, "@types/connect": { "version": "3.4.35", "requires": { @@ -19006,29 +18011,6 @@ "@types/react": "*" } }, - "@types/request": { - "version": "2.48.12", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", - "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", - "requires": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - }, - "dependencies": { - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - } - } - }, "@types/resolve": { "version": "1.17.1", "requires": { @@ -19079,11 +18061,6 @@ "@types/jest": "*" } }, - "@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" - }, "@types/trusted-types": { "version": "2.0.3" }, @@ -19523,28 +18500,6 @@ "axe-core": { "version": "4.7.0" }, - "axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", - "requires": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - }, - "dependencies": { - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } - } - }, "axobject-query": { "version": "3.1.1", "requires": { @@ -19794,12 +18749,6 @@ "boolbase": { "version": "1.0.0" }, - "bootstrap": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", - "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", - "requires": {} - }, "brace-expansion": { "version": "1.1.11", "requires": { @@ -20305,11 +19254,6 @@ "decimal.js": { "version": "10.4.3" }, - "decoder-validate": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/decoder-validate/-/decoder-validate-0.0.2.tgz", - "integrity": "sha512-9BsqAH9Zq6CvlxKHkSrZrH2iYlhuhHcrh6uTnDvcsa9P5YEweEzt1ci+X/9STgSCE7b9BA7/QIiwhfUDDWmjxw==" - }, "dedent": { "version": "0.7.0" }, @@ -20482,11 +19426,6 @@ "duplexer": { "version": "0.1.2" }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, "ee-first": { "version": "1.1.1" }, @@ -21268,22 +20207,6 @@ "is-callable": "^1.1.3" } }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "dependencies": { - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" - } - } - }, "fork-ts-checker-webpack-plugin": { "version": "6.5.3", "requires": { @@ -22006,15 +20929,6 @@ "istanbul-lib-report": "^3.0.0" } }, - "jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, "jake": { "version": "10.8.5", "requires": { @@ -23133,11 +22047,6 @@ "jiti": { "version": "1.18.2" }, - "jquery": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.0.tgz", - "integrity": "sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ==" - }, "js-sdsl": { "version": "4.4.0" }, @@ -23211,11 +22120,6 @@ "jsonpointer": { "version": "5.0.1" }, - "jsrsasign": { - "version": "10.9.0", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", - "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==" - }, "jsx-ast-utils": { "version": "3.3.3", "requires": { @@ -23223,11 +22127,6 @@ "object.assign": "^4.1.3" } }, - "jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" - }, "kind-of": { "version": "6.0.3" }, @@ -23444,11 +22343,6 @@ "minimist": { "version": "1.2.8" }, - "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" - }, "mkdirp": { "version": "0.5.6", "requires": { @@ -23474,7 +22368,9 @@ } }, "nanoid": { - "version": "3.3.6" + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" }, "natural-compare": { "version": "1.4.0" @@ -23709,22 +22605,6 @@ "path-parse": { "version": "1.0.7" }, - "path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "requires": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==" - } - } - }, "path-to-regexp": { "version": "0.1.7" }, @@ -24389,11 +23269,6 @@ } } }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "psl": { "version": "1.9.0" }, @@ -24604,12 +23479,6 @@ "workbox-webpack-plugin": "^6.4.1" } }, - "reactjs-popup": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/reactjs-popup/-/reactjs-popup-2.0.6.tgz", - "integrity": "sha512-A+tt+x9wdgZiZjv0e2WzYLD3IfFwJALaRaqwrCSXGjo0iQdsry/EtBEbQXRSmQs7cHmOi5eytCiSlOm8k4C+dg==", - "requires": {} - }, "read-cache": { "version": "1.0.0", "requires": { @@ -25014,21 +23883,6 @@ "shell-quote": { "version": "1.8.1" }, - "shortid": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz", - "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==", - "requires": { - "nanoid": "^2.1.0" - }, - "dependencies": { - "nanoid": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", - "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" - } - } - }, "side-channel": { "version": "1.0.4", "requires": { @@ -25165,23 +24019,6 @@ } } }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - } - } - }, "string.prototype.matchall": { "version": "4.0.8", "requires": { @@ -25233,14 +24070,6 @@ "ansi-regex": "^5.0.1" } }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, "strip-bom": { "version": "4.0.0" }, @@ -25607,11 +24436,6 @@ "typescript": { "version": "4.9.5" }, - "ua-parser-js": { - "version": "1.0.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", - "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==" - }, "unbox-primitive": { "version": "1.0.2", "requires": { @@ -25675,12 +24499,6 @@ "requires-port": "^1.0.0" } }, - "use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "requires": {} - }, "util-deprecate": { "version": "1.0.2" }, @@ -26239,39 +25057,6 @@ } } }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - } - } - }, "wrappy": { "version": "1.0.2" }, diff --git a/browser-platform-home-react-wsp/package.json b/browser-platform-home-react-wsp/package.json index 3322e64..b80f1a8 100644 --- a/browser-platform-home-react-wsp/package.json +++ b/browser-platform-home-react-wsp/package.json @@ -1,15 +1,15 @@ { "name": "workspaces-home", - "version": "3.2.0", + "version": "3.3.0", "private": true, "dependencies": { "@auth0/auth0-react": "^2.1.0", - "@interopio/browser-platform": "^3.2.0", - "@interopio/browser-worker": "^3.2.0", - "@interopio/home-ui-react": "^1.2.1", - "@interopio/react-hooks": "^3.2.0", - "@interopio/workspaces-api": "^3.2.0", - "@interopio/workspaces-ui-react": "^3.2.2", + "@interopio/browser-platform": "^3.3.1", + "@interopio/browser-worker": "^3.3.1", + "@interopio/home-ui-react": "^1.3.0", + "@interopio/react-hooks": "^3.3.1", + "@interopio/workspaces-api": "^3.3.1", + "@interopio/workspaces-ui-react": "^3.3.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", diff --git a/browser-platform-home-react-wsp/src/main/auth0-main.tsx b/browser-platform-home-react-wsp/src/main/auth0-main.tsx index 603acc2..2004561 100644 --- a/browser-platform-home-react-wsp/src/main/auth0-main.tsx +++ b/browser-platform-home-react-wsp/src/main/auth0-main.tsx @@ -5,7 +5,7 @@ import { useMemo } from "react"; export const Auth0Main = () => { const ioConnectHomeConfig: IOConnectHomeConfig = useMemo( () => ({ - ioConnectConfig: getIoConfig(), + getIOConnectConfig: getIoConfig, login: { type: 'auth0', providerOptions: { diff --git a/browser-platform-home-react-wsp/src/main/no-auth-main.tsx b/browser-platform-home-react-wsp/src/main/no-auth-main.tsx index 289ebd7..9b68e22 100644 --- a/browser-platform-home-react-wsp/src/main/no-auth-main.tsx +++ b/browser-platform-home-react-wsp/src/main/no-auth-main.tsx @@ -5,7 +5,7 @@ import { useMemo } from "react"; export const NoAuthMain = () => { const ioConnectHomeConfig: IOConnectHomeConfig = useMemo( () => ({ - ioConnectConfig: getIoConfig(), + getIOConnectConfig: getIoConfig, }), [] ); diff --git a/browser-platform-vanilla-js/package.json b/browser-platform-vanilla-js/package.json index 1944182..c74494b 100644 --- a/browser-platform-vanilla-js/package.json +++ b/browser-platform-vanilla-js/package.json @@ -1,6 +1,6 @@ { "name": "browser-platform-vanilla-js", - "version": "3.2.0", + "version": "3.3.0", "description": "", "main": "index.js", "scripts": { diff --git a/browser-platform-vanilla-js/public/index.js b/browser-platform-vanilla-js/public/index.js index 47903ea..96b50b7 100644 --- a/browser-platform-vanilla-js/public/index.js +++ b/browser-platform-vanilla-js/public/index.js @@ -1,6 +1,6 @@ import IOBrowserPlatform from "./libs/browser.platform.es.js"; -import config from "./config.json" assert { type: "json" }; +import config from "./config.json" with { type: "json" }; document.getElementById("connection-status").innerHTML = "IO.Connect Browser Platform Not Connected"; diff --git a/browser-platform-vanilla-js/public/libs/browser.platform.es.js b/browser-platform-vanilla-js/public/libs/browser.platform.es.js index 1ca481a..3945a32 100644 --- a/browser-platform-vanilla-js/public/libs/browser.platform.es.js +++ b/browser-platform-vanilla-js/public/libs/browser.platform.es.js @@ -1,44 +1,27 @@ -const global=window; -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */function __rest$4(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{var t,n,r;const i=!!(null===(n=null===(t=null==e?void 0:e.gateway)||void 0===t?void 0:t.webPlatform)||void 0===n?void 0:n.port),o=Object.assign({},defaultConfig,e,{isPlatformInternal:i});return o.systemLogger&&(o.logger=null!==(r=o.systemLogger.level)&&void 0!==r?r:"info"),o},checkSingleton=()=>{const e=window.glue42core||window.iobrowser;if(e&&e.webStarted)throw new Error("IoConnect Browser has already been started for this application.");e?e.webStarted=!0:window.iobrowser={webStarted:!0}},enterprise=e=>{var t,n,r;const i={windows:!0,layouts:"full",appManager:"full",channels:!0,libraries:null!==(t=null==e?void 0:e.libraries)&&void 0!==t?t:[],logger:null!==(r=null===(n=null==e?void 0:e.systemLogger)||void 0===n?void 0:n.level)&&void 0!==r?r:"warn"};return(window.IODesktop||window.Glue)(i)};var ok$1$1=function(e){return{ok:!0,result:e}},err$1$1=function(e){return{ok:!1,error:e}},asPromise$1$1=function(e){return!0===e.ok?Promise.resolve(e.result):Promise.reject(e.error)},withDefault$1$1=function(e,t){return!0===t.ok?t.result:e},withException$1$1=function(e){if(!0===e.ok)return e.result;throw e.error},map$1$1=function(e,t){return!0===t.ok?ok$1$1(e(t.result)):t},map2$1$1=function(e,t,n){return!1===t.ok?t:!1===n.ok?n:ok$1$1(e(t.result,n.result))},mapError$1$1=function(e,t){return!0===t.ok?t:err$1$1(e(t.error))},andThen$1$1=function(e,t){return!0===t.ok?e(t.result):t},__assign$2$1=function(){return __assign$2$1=Object.assign||function(e){for(var t,n=1,r=arguments.length;ne.length>0),"Expected a non-empty string"),nonNegativeNumberDecoder$1$1=number$3().where((e=>e>=0),"Expected a non-negative number"),intentDefinitionDecoder$1$1=object$3({name:nonEmptyStringDecoder$1$1,displayName:optional$3(string$3()),contexts:optional$3(array$3(string$3())),customConfig:optional$3(object$3())}),v2TypeDecoder$1=oneOf$3(constant$3("web"),constant$3("native"),constant$3("citrix"),constant$3("onlineNative"),constant$3("other")),v2DetailsDecoder$1=object$3({url:nonEmptyStringDecoder$1$1}),v2IconDecoder$1=object$3({src:nonEmptyStringDecoder$1$1,size:optional$3(nonEmptyStringDecoder$1$1),type:optional$3(nonEmptyStringDecoder$1$1)}),v2ScreenshotDecoder$1=object$3({src:nonEmptyStringDecoder$1$1,size:optional$3(nonEmptyStringDecoder$1$1),type:optional$3(nonEmptyStringDecoder$1$1),label:optional$3(nonEmptyStringDecoder$1$1)}),v2ListensForIntentDecoder$1=object$3({contexts:array$3(nonEmptyStringDecoder$1$1),displayName:optional$3(nonEmptyStringDecoder$1$1),resultType:optional$3(nonEmptyStringDecoder$1$1),customConfig:optional$3(anyJson$3())}),v2IntentsDecoder$1=object$3({listensFor:optional$3(dict$1(v2ListensForIntentDecoder$1)),raises:optional$3(dict$1(array$3(nonEmptyStringDecoder$1$1)))}),v2UserChannelDecoder$1=object$3({broadcasts:optional$3(array$3(nonEmptyStringDecoder$1$1)),listensFor:optional$3(array$3(nonEmptyStringDecoder$1$1))}),v2AppChannelDecoder$1=object$3({name:nonEmptyStringDecoder$1$1,description:optional$3(nonEmptyStringDecoder$1$1),broadcasts:optional$3(array$3(nonEmptyStringDecoder$1$1)),listensFor:optional$3(array$3(nonEmptyStringDecoder$1$1))}),v2InteropDecoder$1=object$3({intents:optional$3(v2IntentsDecoder$1),userChannels:optional$3(v2UserChannelDecoder$1),appChannels:optional$3(array$3(v2AppChannelDecoder$1))}),glue42ApplicationDetailsDecoder$1=object$3({url:nonEmptyStringDecoder$1$1,top:optional$3(number$3()),left:optional$3(number$3()),width:optional$3(nonNegativeNumberDecoder$1$1),height:optional$3(nonNegativeNumberDecoder$1$1)}),glue42HostManifestsBrowserDecoder$1=object$3({name:optional$3(nonEmptyStringDecoder$1$1),type:optional$3(nonEmptyStringDecoder$1$1.where((e=>"window"===e),"Expected a value of window")),title:optional$3(nonEmptyStringDecoder$1$1),version:optional$3(nonEmptyStringDecoder$1$1),customProperties:optional$3(anyJson$3()),icon:optional$3(string$3()),caption:optional$3(string$3()),details:optional$3(glue42ApplicationDetailsDecoder$1),intents:optional$3(array$3(intentDefinitionDecoder$1$1)),hidden:optional$3(boolean$2())}),hostManifestsBrowserDecoder$1=oneOf$3(object$3({Glue42:oneOf$3(glue42HostManifestsBrowserDecoder$1,anyJson$3())}),anyJson$3()),v1DefinitionDecoder$1=object$3({name:nonEmptyStringDecoder$1$1,appId:nonEmptyStringDecoder$1$1,title:optional$3(nonEmptyStringDecoder$1$1),version:optional$3(nonEmptyStringDecoder$1$1),manifest:nonEmptyStringDecoder$1$1,manifestType:nonEmptyStringDecoder$1$1,tooltip:optional$3(nonEmptyStringDecoder$1$1),description:optional$3(nonEmptyStringDecoder$1$1),contactEmail:optional$3(nonEmptyStringDecoder$1$1),supportEmail:optional$3(nonEmptyStringDecoder$1$1),publisher:optional$3(nonEmptyStringDecoder$1$1),images:optional$3(array$3(object$3({url:optional$3(nonEmptyStringDecoder$1$1)}))),icons:optional$3(array$3(object$3({icon:optional$3(nonEmptyStringDecoder$1$1)}))),customConfig:anyJson$3(),intents:optional$3(array$3(intentDefinitionDecoder$1$1))}),v2LocalizedDefinitionDecoder$1=object$3({appId:optional$3(nonEmptyStringDecoder$1$1),name:optional$3(nonEmptyStringDecoder$1$1),details:optional$3(v2DetailsDecoder$1),version:optional$3(nonEmptyStringDecoder$1$1),title:optional$3(nonEmptyStringDecoder$1$1),tooltip:optional$3(nonEmptyStringDecoder$1$1),lang:optional$3(nonEmptyStringDecoder$1$1),description:optional$3(nonEmptyStringDecoder$1$1),categories:optional$3(array$3(nonEmptyStringDecoder$1$1)),icons:optional$3(array$3(v2IconDecoder$1)),screenshots:optional$3(array$3(v2ScreenshotDecoder$1)),contactEmail:optional$3(nonEmptyStringDecoder$1$1),supportEmail:optional$3(nonEmptyStringDecoder$1$1),moreInfo:optional$3(nonEmptyStringDecoder$1$1),publisher:optional$3(nonEmptyStringDecoder$1$1),customConfig:optional$3(array$3(anyJson$3())),hostManifests:optional$3(hostManifestsBrowserDecoder$1),interop:optional$3(v2InteropDecoder$1)}),v2DefinitionDecoder$1=object$3({appId:nonEmptyStringDecoder$1$1,name:nonEmptyStringDecoder$1$1,type:v2TypeDecoder$1,details:v2DetailsDecoder$1,version:optional$3(nonEmptyStringDecoder$1$1),title:optional$3(nonEmptyStringDecoder$1$1),tooltip:optional$3(nonEmptyStringDecoder$1$1),lang:optional$3(nonEmptyStringDecoder$1$1),description:optional$3(nonEmptyStringDecoder$1$1),categories:optional$3(array$3(nonEmptyStringDecoder$1$1)),icons:optional$3(array$3(v2IconDecoder$1)),screenshots:optional$3(array$3(v2ScreenshotDecoder$1)),contactEmail:optional$3(nonEmptyStringDecoder$1$1),supportEmail:optional$3(nonEmptyStringDecoder$1$1),moreInfo:optional$3(nonEmptyStringDecoder$1$1),publisher:optional$3(nonEmptyStringDecoder$1$1),customConfig:optional$3(array$3(anyJson$3())),hostManifests:optional$3(hostManifestsBrowserDecoder$1),interop:optional$3(v2InteropDecoder$1),localizedVersions:optional$3(dict$1(v2LocalizedDefinitionDecoder$1))}),allDefinitionsDecoder$1=oneOf$3(v1DefinitionDecoder$1,v2DefinitionDecoder$1),parseDecoderErrorToStringMessage$1=e=>`${e.kind} at ${e.at}: ${JSON.stringify(e.input)}. Reason - ${e.message}`;let FDC3Service$1=class{constructor(){this.fdc3ToDesktopDefinitionType={web:"window",native:"exe",citrix:"citrix",onlineNative:"clickonce",other:"window"}}toApi(){return{isFdc3Definition:this.isFdc3Definition.bind(this),parseToBrowserBaseAppData:this.parseToBrowserBaseAppData.bind(this),parseToDesktopAppConfig:this.parseToDesktopAppConfig.bind(this)}}isFdc3Definition(e){const t=allDefinitionsDecoder$1.run(e);return t.ok?e.appId&&e.details?{isFdc3:!0,version:"2.0"}:e.manifest?{isFdc3:!0,version:"1.2"}:{isFdc3:!1,reason:"The passed definition is not FDC3"}:{isFdc3:!1,reason:parseDecoderErrorToStringMessage$1(t.error)}}parseToBrowserBaseAppData(e){var t;const{isFdc3:n,version:r}=this.isFdc3Definition(e);if(!n)throw new Error("The passed definition is not FDC3");const i=allDefinitionsDecoder$1.run(e);if(!i.ok)throw new Error(`Invalid FDC3 ${r} definition. Error: ${parseDecoderErrorToStringMessage$1(i.error)}`);const o=this.getUserPropertiesFromDefinition(e,r),l={url:this.getUrl(e,r)};let s={name:e.appId,type:"window",createOptions:l,userProperties:Object.assign(Object.assign({},o),{intents:"1.2"===r?o.intents:this.getIntentsFromV2AppDefinition(e),details:l}),title:e.title,version:e.version,icon:this.getIconFromDefinition(e,r),caption:e.description,fdc3:"2.0"===r?Object.assign(Object.assign({},e),{definitionVersion:"2.0"}):void 0};if(null===(t=e.hostManifests)||void 0===t?void 0:t.Glue42){const t=glue42HostManifestsBrowserDecoder$1.run(e.hostManifests.Glue42);if(!t.ok)throw new Error(`Invalid FDC3 ${r} definition. Error: ${parseDecoderErrorToStringMessage$1(t.error)}`);if(!Object.keys(t.result).length)throw new Error("Invalid 'hostManifests['Glue42]' key");s=this.mergeBaseAppDataWithGlueManifest(s,t.result)}return s}parseToDesktopAppConfig(e){var t,n,r;const{isFdc3:i,version:o}=this.isFdc3Definition(e);if(!i)throw new Error("The passed definition is not FDC3");const l=allDefinitionsDecoder$1.run(e);if(!l.ok)throw new Error(`Invalid FDC3 ${o} definition. Error: ${parseDecoderErrorToStringMessage$1(l.error)}`);if("1.2"===o){const n=e;return{name:n.appId,type:"window",details:{url:this.getUrl(e,o)},version:n.version,title:n.title,tooltip:n.tooltip,caption:n.description,icon:null===(t=n.icons)||void 0===t?void 0:t[0].icon,intents:n.intents,customProperties:{manifestType:n.manifestType,images:n.images,contactEmail:n.contactEmail,supportEmail:n.supportEmail,publisher:n.publisher,icons:n.icons,customConfig:n.customConfig}}}const s=e;let a={name:s.appId,type:this.fdc3ToDesktopDefinitionType[s.type],details:s.details,version:s.version,title:s.title,tooltip:s.tooltip,caption:s.description,icon:this.getIconFromDefinition(s,"2.0"),intents:this.getIntentsFromV2AppDefinition(s),fdc3:Object.assign(Object.assign({},s),{definitionVersion:"2.0"})};if(null===(n=s.hostManifests)||void 0===n?void 0:n.Glue42){if("object"!=typeof s.hostManifests.Glue42||Array.isArray(s.hostManifests.Glue42))throw new Error("Invalid 'hostManifests['Glue42]' key");a=this.mergeDesktopConfigWithGlueManifest(a,null===(r=s.hostManifests)||void 0===r?void 0:r.Glue42)}return a}getUserPropertiesFromDefinition(e,t){return"1.2"===t?Object.fromEntries(Object.entries(e).filter((([e])=>!connectBrowserAppProps$1.includes(e)))):Object.fromEntries(Object.entries(e).filter((([e])=>!connectBrowserAppProps$1.includes(e)&&!fdc3v2AppProps$1.includes(e))))}getUrl(e,t){var n,r;let i;if("1.2"===t){const t=JSON.parse(e.manifest);i=(null===(n=t.details)||void 0===n?void 0:n.url)||t.url}else i=null===(r=e.details)||void 0===r?void 0:r.url;if(!i||"string"!=typeof i)throw new Error(`Invalid FDC3 ${t} definition. Provide valid 'url' under '${"1.2"===t?"manifest":"details"}' key`);return i}getIntentsFromV2AppDefinition(e){var t,n;const r=null===(n=null===(t=e.interop)||void 0===t?void 0:t.intents)||void 0===n?void 0:n.listensFor;if(!r)return;return Object.entries(r).map((e=>{const[t,n]=e;return Object.assign({name:t},n)}))}getIconFromDefinition(e,t){var n,r,i,o;return"1.2"===t?(null===(r=null===(n=e.icons)||void 0===n?void 0:n.find((e=>e.icon)))||void 0===r?void 0:r.icon)||void 0:(null===(o=null===(i=e.icons)||void 0===i?void 0:i.find((e=>e.src)))||void 0===o?void 0:o.src)||void 0}mergeBaseAppDataWithGlueManifest(e,t){let n=e;if(t.details){const r=Object.assign(Object.assign({},e.createOptions),t.details);n.createOptions=r,n.userProperties.details=r}return Array.isArray(t.intents)&&(n.userProperties.intents=(n.userProperties.intents||[]).concat(t.intents)),n=Object.assign(Object.assign({},n),t),delete n.details,delete n.intents,n}mergeDesktopConfigWithGlueManifest(e,t){const n=Object.assign({},e,t,{details:Object.assign(Object.assign({},e.details),t.details)});return Array.isArray(t.intents)&&(n.intents=(e.intents||[]).concat(t.intents)),n}};const decoders$1$1={common:{nonEmptyStringDecoder:nonEmptyStringDecoder$1$1,nonNegativeNumberDecoder:nonNegativeNumberDecoder$1$1},fdc3:{allDefinitionsDecoder:allDefinitionsDecoder$1,v1DefinitionDecoder:v1DefinitionDecoder$1,v2DefinitionDecoder:v2DefinitionDecoder$1}};var INTENTS_ERRORS$1;!function(e){e.USER_CANCELLED="User Closed Intents Resolver UI without choosing a handler",e.CALLER_NOT_DEFINED="Caller Id is not defined",e.TIMEOUT_HIT="Timeout hit",e.INTENT_NOT_FOUND="Cannot find Intent",e.HANDLER_NOT_FOUND="Cannot find Intent Handler",e.TARGET_INSTANCE_UNAVAILABLE="Cannot start Target Instance",e.INTENT_DELIVERY_FAILED="Target Instance did not add a listener",e.RESOLVER_UNAVAILABLE="Intents Resolver UI unavailable",e.RESOLVER_TIMEOUT="User did not choose a handler",e.INVALID_RESOLVER_RESPONSE="Intents Resolver UI returned invalid response",e.INTENT_HANDLER_REJECTION="Intent Handler function processing the raised intent threw an error or rejected the promise it returned"}(INTENTS_ERRORS$1||(INTENTS_ERRORS$1={}));let IoC$1$1=class{constructor(){this._decoders=decoders$1$1,this._errors={intents:INTENTS_ERRORS$1}}get fdc3(){return this._fdc3||(this._fdc3=(new FDC3Service$1).toApi()),this._fdc3}get decoders(){return this._decoders}get errors(){return this._errors}};const ioc$1=new IoC$1$1;ioc$1.fdc3;const decoders$2=ioc$1.decoders;ioc$1.errors;const nonEmptyStringDecoder$3=string$1$1().where((e=>e.length>0),"Expected a non-empty string"),nonNegativeNumberDecoder$3=number$1$1().where((e=>e>=0),"Expected a non-negative number"),optionalNonEmptyStringDecoder=optional$1$1(nonEmptyStringDecoder$3),libDomainDecoder$1=oneOf$1$1(constant$1$1("system"),constant$1$1("windows"),constant$1$1("appManager"),constant$1$1("layouts"),constant$1$1("intents"),constant$1$1("notifications"),constant$1$1("channels"),constant$1$1("extension"),constant$1$1("themes"),constant$1$1("prefs")),windowOperationTypesDecoder=oneOf$1$1(constant$1$1("openWindow"),constant$1$1("windowHello"),constant$1$1("windowAdded"),constant$1$1("windowRemoved"),constant$1$1("getBounds"),constant$1$1("getFrameBounds"),constant$1$1("getUrl"),constant$1$1("moveResize"),constant$1$1("focus"),constant$1$1("close"),constant$1$1("getTitle"),constant$1$1("setTitle"),constant$1$1("focusChange"),constant$1$1("getChannel")),appManagerOperationTypesDecoder$1=oneOf$1$1(constant$1$1("appHello"),constant$1$1("appDirectoryStateChange"),constant$1$1("instanceStarted"),constant$1$1("instanceStopped"),constant$1$1("applicationStart"),constant$1$1("instanceStop"),constant$1$1("clear")),layoutsOperationTypesDecoder$1=oneOf$1$1(constant$1$1("layoutAdded"),constant$1$1("layoutChanged"),constant$1$1("layoutRemoved"),constant$1$1("get"),constant$1$1("getAll"),constant$1$1("export"),constant$1$1("import"),constant$1$1("remove"),constant$1$1("clientSaveRequest"),constant$1$1("getGlobalPermissionState"),constant$1$1("checkGlobalActivated"),constant$1$1("requestGlobalPermission"),constant$1$1("getDefaultGlobal"),constant$1$1("setDefaultGlobal"),constant$1$1("clearDefaultGlobal")),notificationsOperationTypesDecoder=oneOf$1$1(constant$1$1("raiseNotification"),constant$1$1("requestPermission"),constant$1$1("notificationShow"),constant$1$1("notificationClick"),constant$1$1("getPermission"),constant$1$1("list"),constant$1$1("notificationRaised"),constant$1$1("notificationClosed"),constant$1$1("click"),constant$1$1("clear"),constant$1$1("clearAll"),constant$1$1("configure"),constant$1$1("getConfiguration"),constant$1$1("configurationChanged"),constant$1$1("setState"),constant$1$1("clearOld"),constant$1$1("activeCountChange"),constant$1$1("stateChange")),systemOperationTypesDecoder$1=oneOf$1$1(constant$1$1("getEnvironment"),constant$1$1("getBase"),constant$1$1("platformShutdown")),windowRelativeDirectionDecoder$1=oneOf$1$1(constant$1$1("top"),constant$1$1("left"),constant$1$1("right"),constant$1$1("bottom")),windowBoundsDecoder$1=object$1$1({top:number$1$1(),left:number$1$1(),width:nonNegativeNumberDecoder$3,height:nonNegativeNumberDecoder$3}),windowOpenSettingsDecoder$1=optional$1$1(object$1$1({top:optional$1$1(number$1$1()),left:optional$1$1(number$1$1()),width:optional$1$1(nonNegativeNumberDecoder$3),height:optional$1$1(nonNegativeNumberDecoder$3),context:optional$1$1(anyJson$1$1()),relativeTo:optional$1$1(nonEmptyStringDecoder$3),relativeDirection:optional$1$1(windowRelativeDirectionDecoder$1),windowId:optional$1$1(nonEmptyStringDecoder$3),layoutComponentId:optional$1$1(nonEmptyStringDecoder$3)})),openWindowConfigDecoder$1=object$1$1({name:nonEmptyStringDecoder$3,url:nonEmptyStringDecoder$3,options:windowOpenSettingsDecoder$1}),windowHelloDecoder=object$1$1({windowId:optional$1$1(nonEmptyStringDecoder$3)}),coreWindowDataDecoder=object$1$1({windowId:nonEmptyStringDecoder$3,name:nonEmptyStringDecoder$3}),simpleWindowDecoder$1=object$1$1({windowId:nonEmptyStringDecoder$3}),helloSuccessDecoder=object$1$1({windows:array$1$1(coreWindowDataDecoder),isWorkspaceFrame:boolean$1$1()}),windowTitleConfigDecoder$1=object$1$1({windowId:nonEmptyStringDecoder$3,title:string$1$1()}),focusEventDataDecoder$1=object$1$1({windowId:nonEmptyStringDecoder$3,hasFocus:boolean$1$1()}),windowMoveResizeConfigDecoder$1=object$1$1({windowId:nonEmptyStringDecoder$3,top:optional$1$1(number$1$1()),left:optional$1$1(number$1$1()),width:optional$1$1(nonNegativeNumberDecoder$3),height:optional$1$1(nonNegativeNumberDecoder$3),relative:optional$1$1(boolean$1$1())}),windowBoundsResultDecoder$1=object$1$1({windowId:nonEmptyStringDecoder$3,bounds:object$1$1({top:number$1$1(),left:number$1$1(),width:nonNegativeNumberDecoder$3,height:nonNegativeNumberDecoder$3})}),frameWindowBoundsResultDecoder$1=object$1$1({bounds:object$1$1({top:number$1$1(),left:number$1$1(),width:nonNegativeNumberDecoder$3,height:nonNegativeNumberDecoder$3})}),windowUrlResultDecoder$1=object$1$1({windowId:nonEmptyStringDecoder$3,url:nonEmptyStringDecoder$3}),anyDecoder$1=anyJson$1$1(),boundsDecoder=object$1$1({top:optional$1$1(number$1$1()),left:optional$1$1(number$1$1()),width:optional$1$1(nonNegativeNumberDecoder$3),height:optional$1$1(nonNegativeNumberDecoder$3)}),instanceDataDecoder$1=object$1$1({id:nonEmptyStringDecoder$3,applicationName:nonEmptyStringDecoder$3}),applicationDetailsDecoder$1=object$1$1({url:nonEmptyStringDecoder$3,top:optional$1$1(number$1$1()),left:optional$1$1(number$1$1()),width:optional$1$1(nonNegativeNumberDecoder$3),height:optional$1$1(nonNegativeNumberDecoder$3)}),intentDefinitionDecoder$2=object$1$1({name:nonEmptyStringDecoder$3,displayName:optional$1$1(string$1$1()),contexts:optional$1$1(array$1$1(string$1$1())),customConfig:optional$1$1(object$1$1())});object$1$1({name:nonEmptyStringDecoder$3,title:optional$1$1(nonEmptyStringDecoder$3),version:optional$1$1(nonEmptyStringDecoder$3),appId:optional$1$1(nonEmptyStringDecoder$3),manifest:nonEmptyStringDecoder$3,manifestType:nonEmptyStringDecoder$3,tooltip:optional$1$1(nonEmptyStringDecoder$3),description:optional$1$1(nonEmptyStringDecoder$3),contactEmail:optional$1$1(nonEmptyStringDecoder$3),supportEmail:optional$1$1(nonEmptyStringDecoder$3),publisher:optional$1$1(nonEmptyStringDecoder$3),images:optional$1$1(array$1$1(object$1$1({url:optional$1$1(nonEmptyStringDecoder$3)}))),icons:optional$1$1(array$1$1(object$1$1({icon:optional$1$1(nonEmptyStringDecoder$3)}))),customConfig:anyJson$1$1(),intents:optional$1$1(array$1$1(intentDefinitionDecoder$2))});const applicationDefinitionDecoder=object$1$1({name:nonEmptyStringDecoder$3,type:nonEmptyStringDecoder$3.where((e=>"window"===e),"Expected a value of window"),title:optional$1$1(nonEmptyStringDecoder$3),version:optional$1$1(nonEmptyStringDecoder$3),customProperties:optional$1$1(anyJson$1$1()),icon:optional$1$1(string$1$1()),caption:optional$1$1(string$1$1()),details:applicationDetailsDecoder$1,intents:optional$1$1(array$1$1(intentDefinitionDecoder$2)),hidden:optional$1$1(boolean$1$1()),fdc3:optional$1$1(decoders$2.fdc3.v2DefinitionDecoder)}),allApplicationDefinitionsDecoder$1=oneOf$1$1(applicationDefinitionDecoder,decoders$2.fdc3.v2DefinitionDecoder,decoders$2.fdc3.v1DefinitionDecoder);object$1$1({definitions:array$1$1(allApplicationDefinitionsDecoder$1),mode:oneOf$1$1(constant$1$1("replace"),constant$1$1("merge"))});const appRemoveConfigDecoder$1=object$1$1({name:nonEmptyStringDecoder$3}),appsExportOperationDecoder$1=object$1$1({definitions:array$1$1(applicationDefinitionDecoder)}),applicationDataDecoder$1=object$1$1({name:nonEmptyStringDecoder$3,type:nonEmptyStringDecoder$3.where((e=>"window"===e),"Expected a value of window"),instances:array$1$1(instanceDataDecoder$1),userProperties:optional$1$1(anyJson$1$1()),title:optional$1$1(nonEmptyStringDecoder$3),version:optional$1$1(nonEmptyStringDecoder$3),icon:optional$1$1(nonEmptyStringDecoder$3),caption:optional$1$1(nonEmptyStringDecoder$3)}),baseApplicationDataDecoder=object$1$1({name:nonEmptyStringDecoder$3,type:nonEmptyStringDecoder$3.where((e=>"window"===e),"Expected a value of window"),userProperties:anyJson$1$1(),title:optional$1$1(nonEmptyStringDecoder$3),version:optional$1$1(nonEmptyStringDecoder$3),icon:optional$1$1(nonEmptyStringDecoder$3),caption:optional$1$1(nonEmptyStringDecoder$3)}),appDirectoryStateChangeDecoder=object$1$1({appsAdded:array$1$1(baseApplicationDataDecoder),appsChanged:array$1$1(baseApplicationDataDecoder),appsRemoved:array$1$1(baseApplicationDataDecoder)}),appHelloSuccessDecoder$1=object$1$1({apps:array$1$1(applicationDataDecoder$1),initialChannelId:optional$1$1(nonEmptyStringDecoder$3)}),basicInstanceDataDecoder$1=object$1$1({id:nonEmptyStringDecoder$3}),applicationStartConfigDecoder$1=object$1$1({name:nonEmptyStringDecoder$3,waitForAGMReady:boolean$1$1(),id:optional$1$1(nonEmptyStringDecoder$3),context:optional$1$1(anyJson$1$1()),top:optional$1$1(number$1$1()),left:optional$1$1(number$1$1()),width:optional$1$1(nonNegativeNumberDecoder$3),height:optional$1$1(nonNegativeNumberDecoder$3),relativeTo:optional$1$1(nonEmptyStringDecoder$3),relativeDirection:optional$1$1(windowRelativeDirectionDecoder$1),forceChromeTab:optional$1$1(boolean$1$1()),layoutComponentId:optional$1$1(nonEmptyStringDecoder$3),channelId:optional$1$1(nonEmptyStringDecoder$3)}),layoutTypeDecoder$1=oneOf$1$1(constant$1$1("Global"),constant$1$1("Activity"),constant$1$1("ApplicationDefault"),constant$1$1("Swimlane"),constant$1$1("Workspace")),componentTypeDecoder$1=oneOf$1$1(constant$1$1("application"),constant$1$1("activity")),windowComponentStateDecoder$1=object$1$1({context:optional$1$1(anyJson$1$1()),bounds:windowBoundsDecoder$1,createArgs:object$1$1({name:optional$1$1(nonEmptyStringDecoder$3),url:optional$1$1(nonEmptyStringDecoder$3),context:optional$1$1(anyJson$1$1())}),windowState:optional$1$1(nonEmptyStringDecoder$3),restoreState:optional$1$1(nonEmptyStringDecoder$3),instanceId:nonEmptyStringDecoder$3,isCollapsed:optional$1$1(boolean$1$1()),isSticky:optional$1$1(boolean$1$1()),restoreSettings:object$1$1({groupId:optional$1$1(nonEmptyStringDecoder$3),groupZOrder:optional$1$1(number$1$1())})}),windowLayoutComponentDecoder$1=object$1$1({type:constant$1$1("window"),componentType:optional$1$1(componentTypeDecoder$1),application:nonEmptyStringDecoder$3,state:windowComponentStateDecoder$1}),windowLayoutItemDecoder$1=object$1$1({type:constant$1$1("window"),config:object$1$1({appName:nonEmptyStringDecoder$3,url:optional$1$1(nonEmptyStringDecoder$3),title:optional$1$1(string$1$1()),allowExtract:optional$1$1(boolean$1$1()),allowReorder:optional$1$1(boolean$1$1()),showCloseButton:optional$1$1(boolean$1$1()),isMaximized:optional$1$1(boolean$1$1())})}),groupLayoutItemDecoder$2=object$1$1({type:constant$1$1("group"),config:anyJson$1$1(),children:array$1$1(oneOf$1$1(windowLayoutItemDecoder$1))}),columnLayoutItemDecoder$2=object$1$1({type:constant$1$1("column"),config:anyJson$1$1(),children:array$1$1(oneOf$1$1(groupLayoutItemDecoder$2,windowLayoutItemDecoder$1,lazy$1((()=>columnLayoutItemDecoder$2)),lazy$1((()=>rowLayoutItemDecoder$2))))}),rowLayoutItemDecoder$2=object$1$1({type:constant$1$1("row"),config:anyJson$1$1(),children:array$1$1(oneOf$1$1(columnLayoutItemDecoder$2,groupLayoutItemDecoder$2,windowLayoutItemDecoder$1,lazy$1((()=>rowLayoutItemDecoder$2))))}),workspaceLayoutComponentStateDecoder$1=object$1$1({config:anyJson$1$1(),context:anyJson$1$1(),children:array$1$1(oneOf$1$1(rowLayoutItemDecoder$2,columnLayoutItemDecoder$2,groupLayoutItemDecoder$2,windowLayoutItemDecoder$1))}),workspaceLayoutComponentDecoder$1=object$1$1({type:constant$1$1("Workspace"),application:optional$1$1(nonEmptyStringDecoder$3),state:workspaceLayoutComponentStateDecoder$1}),workspaceFrameComponentStateDecoder$1=object$1$1({bounds:windowBoundsDecoder$1,instanceId:nonEmptyStringDecoder$3,selectedWorkspace:nonNegativeNumberDecoder$3,workspaces:array$1$1(workspaceLayoutComponentStateDecoder$1),windowState:optional$1$1(nonEmptyStringDecoder$3),restoreState:optional$1$1(nonEmptyStringDecoder$3),context:optional$1$1(anyJson$1$1())}),workspaceFrameComponentDecoder$1=object$1$1({type:constant$1$1("workspaceFrame"),application:nonEmptyStringDecoder$3,componentType:optional$1$1(componentTypeDecoder$1),state:workspaceFrameComponentStateDecoder$1}),glueLayoutDecoder$1=object$1$1({name:nonEmptyStringDecoder$3,type:layoutTypeDecoder$1,components:array$1$1(oneOf$1$1(windowLayoutComponentDecoder$1,workspaceLayoutComponentDecoder$1,workspaceFrameComponentDecoder$1)),context:optional$1$1(anyJson$1$1()),metadata:optional$1$1(anyJson$1$1()),version:optional$1$1(number$1$1())}),newLayoutOptionsDecoder$1=object$1$1({name:nonEmptyStringDecoder$3,context:optional$1$1(anyJson$1$1()),metadata:optional$1$1(anyJson$1$1()),instances:optional$1$1(array$1$1(nonEmptyStringDecoder$3)),ignoreInstances:optional$1$1(array$1$1(nonEmptyStringDecoder$3))}),restoreOptionsDecoder$1=object$1$1({name:nonEmptyStringDecoder$3,context:optional$1$1(anyJson$1$1()),closeRunningInstance:optional$1$1(boolean$1$1()),closeMe:optional$1$1(boolean$1$1()),timeout:optional$1$1(nonNegativeNumberDecoder$3)}),layoutSummaryDecoder$2=object$1$1({name:nonEmptyStringDecoder$3,type:layoutTypeDecoder$1,context:optional$1$1(anyJson$1$1()),metadata:optional$1$1(anyJson$1$1())}),simpleLayoutConfigDecoder$1=object$1$1({name:nonEmptyStringDecoder$3,type:layoutTypeDecoder$1}),saveLayoutConfigDecoder$1=object$1$1({layout:newLayoutOptionsDecoder$1}),restoreLayoutConfigDecoder$1=object$1$1({layout:restoreOptionsDecoder$1}),getAllLayoutsConfigDecoder$1=object$1$1({type:layoutTypeDecoder$1}),allLayoutsFullConfigDecoder$1=object$1$1({layouts:array$1$1(glueLayoutDecoder$1)}),importModeDecoder$1=oneOf$1$1(constant$1$1("replace"),constant$1$1("merge")),layoutsImportConfigDecoder$1=object$1$1({layouts:array$1$1(glueLayoutDecoder$1),mode:importModeDecoder$1,isManagerOperation:optional$1$1(boolean$1$1())}),allLayoutsSummariesResultDecoder$1=object$1$1({summaries:array$1$1(layoutSummaryDecoder$2)}),simpleLayoutResultDecoder=object$1$1({layout:glueLayoutDecoder$1}),optionalSimpleLayoutResult$1=object$1$1({layout:optional$1$1(glueLayoutDecoder$1)}),setDefaultGlobalConfigDecoder$1=object$1$1({name:nonEmptyStringDecoder$3}),intentsOperationTypesDecoder$1=oneOf$1$1(constant$1$1("findIntent"),constant$1$1("getIntents"),constant$1$1("raiseIntent"),constant$1$1("raise"),constant$1$1("filterHandlers")),intentHandlerDecoder$1=object$1$1({applicationName:nonEmptyStringDecoder$3,applicationTitle:optional$1$1(string$1$1()),applicationDescription:optional$1$1(string$1$1()),applicationIcon:optional$1$1(string$1$1()),type:oneOf$1$1(constant$1$1("app"),constant$1$1("instance")),displayName:optional$1$1(string$1$1()),contextTypes:optional$1$1(array$1$1(nonEmptyStringDecoder$3)),instanceId:optional$1$1(string$1$1()),instanceTitle:optional$1$1(string$1$1()),resultType:optional$1$1(string$1$1())});object$1$1({applicationName:string$1$1(),applicationIcon:optional$1$1(string$1$1()),instanceId:optional$1$1(string$1$1())});const intentResolverResponseDecoder=object$1$1({intent:nonEmptyStringDecoder$3,handler:intentHandlerDecoder$1}),intentDecoder$1=object$1$1({name:nonEmptyStringDecoder$3,handlers:array$1$1(intentHandlerDecoder$1)}),intentTargetDecoder$1=oneOf$1$1(constant$1$1("startNew"),constant$1$1("reuse"),object$1$1({app:optional$1$1(nonEmptyStringDecoder$3),instance:optional$1$1(nonEmptyStringDecoder$3)})),intentContextDecoder$1=object$1$1({type:optional$1$1(nonEmptyStringDecoder$3),data:optional$1$1(anyJson$1$1())}),intentsDecoder$1=array$1$1(intentDecoder$1),wrappedIntentsDecoder$1=object$1$1({intents:intentsDecoder$1}),intentFilterDecoder=object$1$1({name:optional$1$1(nonEmptyStringDecoder$3),contextType:optional$1$1(nonEmptyStringDecoder$3),resultType:optional$1$1(nonEmptyStringDecoder$3)}),findFilterDecoder=oneOf$1$1(nonEmptyStringDecoder$3,intentFilterDecoder),wrappedIntentFilterDecoder$1=object$1$1({filter:optional$1$1(intentFilterDecoder)}),intentRequestDecoder$1=object$1$1({intent:nonEmptyStringDecoder$3,target:optional$1$1(intentTargetDecoder$1),context:optional$1$1(intentContextDecoder$1),options:optional$1$1(windowOpenSettingsDecoder$1),handlers:optional$1$1(array$1$1(intentHandlerDecoder$1)),timeout:optional$1$1(nonNegativeNumberDecoder$3),waitUserResponseIndefinitely:optional$1$1(boolean$1$1())}),raiseRequestDecoder=oneOf$1$1(nonEmptyStringDecoder$3,intentRequestDecoder$1),resolverConfigDecoder$1=object$1$1({enabled:boolean$1$1(),appName:nonEmptyStringDecoder$3,waitResponseTimeout:number$1$1()}),raiseIntentRequestDecoder$1=object$1$1({intentRequest:intentRequestDecoder$1,resolverConfig:resolverConfigDecoder$1}),intentResultDecoder$1=object$1$1({request:intentRequestDecoder$1,handler:intentHandlerDecoder$1,result:anyJson$1$1()}),handlersFilterDecoder$1=object$1$1({title:optional$1$1(nonEmptyStringDecoder$3),openResolver:optional$1$1(boolean$1$1()),timeout:optional$1$1(nonNegativeNumberDecoder$3),intent:optional$1$1(nonEmptyStringDecoder$3),contextTypes:optional$1$1(array$1$1(nonEmptyStringDecoder$3)),resultType:optional$1$1(nonEmptyStringDecoder$3),applicationNames:optional$1$1(array$1$1(nonEmptyStringDecoder$3))}),filterHandlersResultDecoder$1=object$1$1({handlers:array$1$1(intentHandlerDecoder$1)}),filterHandlersWithResolverConfigDecoder$1=object$1$1({filterHandlersRequest:handlersFilterDecoder$1,resolverConfig:resolverConfigDecoder$1}),AddIntentListenerRequestDecoder=object$1$1({intent:nonEmptyStringDecoder$3,contextTypes:optional$1$1(array$1$1(nonEmptyStringDecoder$3)),displayName:optional$1$1(string$1$1()),icon:optional$1$1(string$1$1()),description:optional$1$1(string$1$1()),resultType:optional$1$1(string$1$1())}),AddIntentListenerDecoder=oneOf$1$1(nonEmptyStringDecoder$3,AddIntentListenerRequestDecoder),intentInfoDecoder$1=object$1$1({intent:nonEmptyStringDecoder$3,contextTypes:optional$1$1(array$1$1(nonEmptyStringDecoder$3)),description:optional$1$1(nonEmptyStringDecoder$3),displayName:optional$1$1(nonEmptyStringDecoder$3),icon:optional$1$1(nonEmptyStringDecoder$3),resultType:optional$1$1(nonEmptyStringDecoder$3)}),getIntentsResultDecoder$1=object$1$1({intents:array$1$1(intentInfoDecoder$1)}),channelNameDecoder=e=>nonEmptyStringDecoder$3.where((t=>e.includes(t)),"Expected a valid channel name"),interopActionSettingsDecoder$1=object$1$1({method:nonEmptyStringDecoder$3,arguments:optional$1$1(anyJson$1$1()),target:optional$1$1(oneOf$1$1(constant$1$1("all"),constant$1$1("best")))}),glue42NotificationActionDecoder$1=object$1$1({action:string$1$1(),title:nonEmptyStringDecoder$3,icon:optional$1$1(string$1$1()),interop:optional$1$1(interopActionSettingsDecoder$1)}),notificationStateDecoder$1=oneOf$1$1(constant$1$1("Active"),constant$1$1("Acknowledged"),constant$1$1("Seen"),constant$1$1("Closed"),constant$1$1("Stale"),constant$1$1("Snoozed"),constant$1$1("Processing")),activeNotificationsCountChangeDecoder=object$1$1({count:number$1$1()}),notificationDefinitionDecoder=object$1$1({badge:optional$1$1(string$1$1()),body:optional$1$1(string$1$1()),data:optional$1$1(anyJson$1$1()),dir:optional$1$1(oneOf$1$1(constant$1$1("auto"),constant$1$1("ltr"),constant$1$1("rtl"))),icon:optional$1$1(string$1$1()),image:optional$1$1(string$1$1()),lang:optional$1$1(string$1$1()),renotify:optional$1$1(boolean$1$1()),requireInteraction:optional$1$1(boolean$1$1()),silent:optional$1$1(boolean$1$1()),tag:optional$1$1(string$1$1()),timestamp:optional$1$1(nonNegativeNumberDecoder$3),vibrate:optional$1$1(array$1$1(number$1$1()))}),glue42NotificationOptionsDecoder$1=object$1$1({title:nonEmptyStringDecoder$3,clickInterop:optional$1$1(interopActionSettingsDecoder$1),actions:optional$1$1(array$1$1(glue42NotificationActionDecoder$1)),focusPlatformOnDefaultClick:optional$1$1(boolean$1$1()),badge:optional$1$1(string$1$1()),body:optional$1$1(string$1$1()),data:optional$1$1(anyJson$1$1()),dir:optional$1$1(oneOf$1$1(constant$1$1("auto"),constant$1$1("ltr"),constant$1$1("rtl"))),icon:optional$1$1(string$1$1()),image:optional$1$1(string$1$1()),lang:optional$1$1(string$1$1()),renotify:optional$1$1(boolean$1$1()),requireInteraction:optional$1$1(boolean$1$1()),silent:optional$1$1(boolean$1$1()),tag:optional$1$1(string$1$1()),timestamp:optional$1$1(nonNegativeNumberDecoder$3),vibrate:optional$1$1(array$1$1(number$1$1())),severity:optional$1$1(oneOf$1$1(constant$1$1("Low"),constant$1$1("None"),constant$1$1("Medium"),constant$1$1("High"),constant$1$1("Critical"))),showToast:optional$1$1(boolean$1$1()),showInPanel:optional$1$1(boolean$1$1()),state:optional$1$1(notificationStateDecoder$1)}),notificationSetStateRequestDecoder$1=object$1$1({id:nonEmptyStringDecoder$3,state:notificationStateDecoder$1}),channelContextDecoder$1=object$1$1({name:nonEmptyStringDecoder$3,meta:object$1$1({color:nonEmptyStringDecoder$3}),data:optional$1$1(object$1$1())}),raiseNotificationDecoder$1=object$1$1({settings:glue42NotificationOptionsDecoder$1,id:nonEmptyStringDecoder$3}),raiseNotificationResultDecoder$1=object$1$1({settings:glue42NotificationOptionsDecoder$1}),permissionRequestResultDecoder$1=object$1$1({permissionGranted:boolean$1$1()}),permissionQueryResultDecoder$1=object$1$1({permission:oneOf$1$1(constant$1$1("default"),constant$1$1("granted"),constant$1$1("denied"))}),notificationEventPayloadDecoder=object$1$1({definition:notificationDefinitionDecoder,action:optional$1$1(string$1$1()),id:optional$1$1(nonEmptyStringDecoder$3)}),notificationFilterDecoder$1=object$1$1({allowed:optional$1$1(array$1$1(nonEmptyStringDecoder$3)),blocked:optional$1$1(array$1$1(nonEmptyStringDecoder$3))}),notificationsConfigurationDecoder$1=object$1$1({enable:optional$1$1(boolean$1$1()),enableToasts:optional$1$1(boolean$1$1()),sourceFilter:optional$1$1(notificationFilterDecoder$1)}),notificationsConfigurationProtocolDecoder$1=object$1$1({configuration:notificationsConfigurationDecoder$1}),strictNotificationsConfigurationProtocolDecoder=object$1$1({configuration:object$1$1({enable:boolean$1$1(),enableToasts:boolean$1$1(),sourceFilter:object$1$1({allowed:array$1$1(nonEmptyStringDecoder$3),blocked:array$1$1(nonEmptyStringDecoder$3)})})}),platformSaveRequestConfigDecoder=object$1$1({layoutType:oneOf$1$1(constant$1$1("Global"),constant$1$1("Workspace")),layoutName:nonEmptyStringDecoder$3,context:optional$1$1(anyJson$1$1())}),saveRequestClientResponseDecoder=object$1$1({windowContext:optional$1$1(anyJson$1$1())}),permissionStateResultDecoder$1=object$1$1({state:oneOf$1$1(constant$1$1("prompt"),constant$1$1("denied"),constant$1$1("granted"))}),simpleAvailabilityResultDecoder$1=object$1$1({isAvailable:boolean$1$1()}),simpleItemIdDecoder=object$1$1({itemId:nonEmptyStringDecoder$3}),operationCheckResultDecoder$1=object$1$1({isSupported:boolean$1$1()}),operationCheckConfigDecoder$1=object$1$1({operation:nonEmptyStringDecoder$3}),workspaceFrameBoundsResultDecoder=object$1$1({bounds:windowBoundsDecoder$1}),themeDecoder$1=object$1$1({displayName:nonEmptyStringDecoder$3,name:nonEmptyStringDecoder$3}),simpleThemeResponseDecoder$1=object$1$1({theme:themeDecoder$1}),allThemesResponseDecoder$1=object$1$1({themes:array$1$1(themeDecoder$1)}),selectThemeConfigDecoder$1=object$1$1({name:nonEmptyStringDecoder$3}),notificationsDataDecoder$1=object$1$1({id:nonEmptyStringDecoder$3,title:nonEmptyStringDecoder$3,clickInterop:optional$1$1(interopActionSettingsDecoder$1),actions:optional$1$1(array$1$1(glue42NotificationActionDecoder$1)),focusPlatformOnDefaultClick:optional$1$1(boolean$1$1()),badge:optional$1$1(string$1$1()),body:optional$1$1(string$1$1()),data:optional$1$1(anyJson$1$1()),dir:optional$1$1(oneOf$1$1(constant$1$1("auto"),constant$1$1("ltr"),constant$1$1("rtl"))),icon:optional$1$1(string$1$1()),image:optional$1$1(string$1$1()),lang:optional$1$1(string$1$1()),renotify:optional$1$1(boolean$1$1()),requireInteraction:optional$1$1(boolean$1$1()),silent:optional$1$1(boolean$1$1()),tag:optional$1$1(string$1$1()),timestamp:optional$1$1(nonNegativeNumberDecoder$3),vibrate:optional$1$1(array$1$1(number$1$1())),severity:optional$1$1(oneOf$1$1(constant$1$1("Low"),constant$1$1("None"),constant$1$1("Medium"),constant$1$1("High"),constant$1$1("Critical"))),showToast:optional$1$1(boolean$1$1()),showInPanel:optional$1$1(boolean$1$1()),state:optional$1$1(notificationStateDecoder$1)}),simpleNotificationDataDecoder=object$1$1({notification:notificationsDataDecoder$1}),allNotificationsDataDecoder$1=object$1$1({notifications:array$1$1(notificationsDataDecoder$1)}),simpleNotificationSelectDecoder$1=object$1$1({id:nonEmptyStringDecoder$3}),getWindowIdsOnChannelDataDecoder$1=object$1$1({channel:nonEmptyStringDecoder$3}),getWindowIdsOnChannelResultDecoder$1=object$1$1({windowIds:array$1$1(nonEmptyStringDecoder$3)}),channelsOperationTypesDecoder=oneOf$1$1(constant$1$1("addChannel"),constant$1$1("getMyChannel"),constant$1$1("getWindowIdsOnChannel"),constant$1$1("getWindowIdsWithChannels"),constant$1$1("joinChannel")),getMyChanelResultDecoder$1=object$1$1({channel:optional$1$1(nonEmptyStringDecoder$3)}),windowWithChannelFilterDecoder$1=object$1$1({application:optional$1$1(nonEmptyStringDecoder$3),channels:optional$1$1(array$1$1(nonEmptyStringDecoder$3)),windowIds:optional$1$1(array$1$1(nonEmptyStringDecoder$3))}),wrappedWindowWithChannelFilterDecoder$1=object$1$1({filter:optional$1$1(windowWithChannelFilterDecoder$1)}),getWindowIdsWithChannelsResultDecoder$1=object$1$1({windowIdsWithChannels:array$1$1(object$1$1({application:nonEmptyStringDecoder$3,channel:optional$1$1(nonEmptyStringDecoder$3),windowId:nonEmptyStringDecoder$3}))}),startApplicationContextDecoder=optional$1$1(anyJson$1$1()),startApplicationOptionsDecoder=optional$1$1(object$1$1({top:optional$1$1(number$1$1()),left:optional$1$1(number$1$1()),width:optional$1$1(nonNegativeNumberDecoder$3),height:optional$1$1(nonNegativeNumberDecoder$3),relativeTo:optional$1$1(nonEmptyStringDecoder$3),relativeDirection:optional$1$1(windowRelativeDirectionDecoder$1),waitForAGMReady:optional$1$1(boolean$1$1()),channelId:optional$1$1(nonEmptyStringDecoder$3),reuseId:optional$1$1(nonEmptyStringDecoder$3)})),joinChannelDataDecoder$1=object$1$1({channel:nonEmptyStringDecoder$3,windowId:nonEmptyStringDecoder$3}),windowChannelResultDecoder$1=object$1$1({channel:optional$1$1(nonEmptyStringDecoder$3)}),prefsOperationTypesDecoder$1=oneOf$1$1(constant$1$1("clear"),constant$1$1("clearAll"),constant$1$1("get"),constant$1$1("getAll"),constant$1$1("set"),constant$1$1("update"),constant$1$1("prefsChanged"),constant$1$1("prefsHello")),appPreferencesDecoder$1=object$1$1({app:nonEmptyStringDecoder$3,data:object$1$1(),lastUpdate:optional$1$1(nonEmptyStringDecoder$3)}),basePrefsConfigDecoder$1=object$1$1({app:nonEmptyStringDecoder$3}),getPrefsResultDecoder$1=object$1$1({prefs:appPreferencesDecoder$1}),getAllPrefsResultDecoder$1=object$1$1({all:array$1$1(appPreferencesDecoder$1)}),changePrefsDataDecoder$1=object$1$1({app:nonEmptyStringDecoder$3,data:object$1$1()}),prefsHelloSuccessDecoder$1=object$1$1({platform:object$1$1({app:nonEmptyStringDecoder$3})}),operations$9={openWindow:{name:"openWindow",dataDecoder:openWindowConfigDecoder$1,resultDecoder:coreWindowDataDecoder},windowHello:{name:"windowHello",dataDecoder:windowHelloDecoder,resultDecoder:helloSuccessDecoder},windowAdded:{name:"windowAdded",dataDecoder:coreWindowDataDecoder},windowRemoved:{name:"windowRemoved",dataDecoder:simpleWindowDecoder$1},getBounds:{name:"getBounds",dataDecoder:simpleWindowDecoder$1,resultDecoder:windowBoundsResultDecoder$1},getFrameBounds:{name:"getFrameBounds",dataDecoder:simpleWindowDecoder$1,resultDecoder:frameWindowBoundsResultDecoder$1},getUrl:{name:"getUrl",dataDecoder:simpleWindowDecoder$1,resultDecoder:windowUrlResultDecoder$1},moveResize:{name:"moveResize",dataDecoder:windowMoveResizeConfigDecoder$1},focus:{name:"focus",dataDecoder:simpleWindowDecoder$1},close:{name:"close",dataDecoder:simpleWindowDecoder$1},getTitle:{name:"getTitle",dataDecoder:simpleWindowDecoder$1,resultDecoder:windowTitleConfigDecoder$1},setTitle:{name:"setTitle",dataDecoder:windowTitleConfigDecoder$1},focusChange:{name:"focusChange",dataDecoder:focusEventDataDecoder$1},getChannel:{name:"getChannel",dataDecoder:simpleWindowDecoder$1,resultDecoder:windowChannelResultDecoder$1}};function getDefaultExportFromCjs$1$1(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function createRegistry$1$1(e){if(e&&e.errorHandling&&"function"!=typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"==typeof e.errorHandling&&e.errorHandling,n={};function r(n,r){var i=n instanceof Error?n:new Error(n);if(t)t(i);else{var o='[ERROR] callback-registry: User callback for key "'+r+'" failed: '+i.stack;if(e)switch(e.errorHandling){case"log":return console.error(o);case"silent":return;case"throw":throw new Error(o)}console.error(o)}}return{add:function(e,t,i){var o=n[e];return o||(o=[],n[e]=o),o.push(t),i&&setTimeout((function(){i.forEach((function(i){var o;if(null===(o=n[e])||void 0===o?void 0:o.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(t){r(t,e)}}))}),0),function(){var r=n[e];r&&(0===(r=r.reduce((function(e,n,r){return n===t&&e.length===r||e.push(n),e}),[])).length?delete n[e]:n[e]=r)}},execute:function(e){for(var t=[],i=1;ithis.registry.execute("context-updated",e))),this.me={id:this.id,name:this.name,isFocused:!1,getURL:this.getURL.bind(this),moveResize:this.moveResize.bind(this),resizeTo:this.resizeTo.bind(this),moveTo:this.moveTo.bind(this),focus:this.focus.bind(this),close:this.close.bind(this),getTitle:this.getTitle.bind(this),setTitle:this.setTitle.bind(this),getBounds:this.getBounds.bind(this),getContext:this.getContext.bind(this),updateContext:this.updateContext.bind(this),setContext:this.setContext.bind(this),onContextUpdated:this.onContextUpdated.bind(this),onFocusChanged:this.onFocusChanged.bind(this),getChannel:this.getChannel.bind(this)},this.me}))}getURL(){return __awaiter$1$1(this,void 0,void 0,(function*(){return(yield this._bridge.send("windows",operations$9.getUrl,{windowId:this.id})).url}))}onFocusChanged(e){if("function"!=typeof e)throw new Error("Cannot subscribe to context changes, because the provided callback is not a function!");return this.registry.add("focus-change",e)}moveResize(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=boundsDecoder.runWithException(e),n=Object.assign({},t,{windowId:this.id,relative:!1});return yield this._bridge.send("windows",operations$9.moveResize,n),this.me}))}resizeTo(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){if(void 0===e&&void 0===t)return this.me;void 0!==e&&nonNegativeNumberDecoder$3.runWithException(e),void 0!==t&&nonNegativeNumberDecoder$3.runWithException(t);const n=Object.assign({},{width:e,height:t},{windowId:this.id,relative:!0});return yield this._bridge.send("windows",operations$9.moveResize,n),this.me}))}moveTo(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){if(void 0===e&&void 0===t)return this.me;void 0!==e&&number$1$1().runWithException(e),void 0!==t&&number$1$1().runWithException(t);const n=Object.assign({},{top:e,left:t},{windowId:this.id,relative:!0});return yield this._bridge.send("windows",operations$9.moveResize,n),this.me}))}focus(){return __awaiter$1$1(this,void 0,void 0,(function*(){return"Platform"===this.name?window.open(void 0,this.id):yield this._bridge.send("windows",operations$9.focus,{windowId:this.id}),this.me}))}close(){return __awaiter$1$1(this,void 0,void 0,(function*(){return yield this._bridge.send("windows",operations$9.close,{windowId:this.id}),this.me}))}getTitle(){return __awaiter$1$1(this,void 0,void 0,(function*(){return(yield this._bridge.send("windows",operations$9.getTitle,{windowId:this.id})).title}))}setTitle(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=nonEmptyStringDecoder$3.runWithException(e);return yield this._bridge.send("windows",operations$9.setTitle,{windowId:this.id,title:t}),this.me}))}getBounds(){return __awaiter$1$1(this,void 0,void 0,(function*(){return(yield this._bridge.send("windows",operations$9.getBounds,{windowId:this.id})).bounds}))}getContext(){return __awaiter$1$1(this,void 0,void 0,(function*(){return yield this._bridge.contextLib.get(this.myCtxKey)}))}updateContext(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=anyDecoder$1.runWithException(e);return yield this._bridge.contextLib.update(this.myCtxKey,t),this.me}))}setContext(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=anyDecoder$1.runWithException(e);return yield this._bridge.contextLib.set(this.myCtxKey,t),this.me}))}onContextUpdated(e){if("function"!=typeof e)throw new Error("Cannot subscribe to context changes, because the provided callback is not a function!");return this.registry.add("context-updated",(t=>{e(t,this.me)}))}getChannel(){return __awaiter$1$1(this,void 0,void 0,(function*(){return(yield this._bridge.send("windows",operations$9.getChannel,{windowId:this.id},void 0,{includeOperationCheck:!0})).channel}))}}const systemOperations={operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder$1,resultDecoder:operationCheckResultDecoder$1},getWorkspaceWindowFrameBounds:{name:"getWorkspaceWindowFrameBounds",resultDecoder:workspaceFrameBoundsResultDecoder,dataDecoder:simpleItemIdDecoder}},PromiseWrap$1=(e,t,n)=>new Promise(((r,i)=>{let o=!0;const l=setTimeout((()=>{if(!o)return;o=!1;i(n||`Promise timeout hit: ${t}`)}),t);e().then((e=>{o&&(o=!1,clearTimeout(l),r(e))})).catch((e=>{o&&(o=!1,clearTimeout(l),i(e))}))})),PromisePlus$1$1=(e,t,n)=>new Promise(((r,i)=>{const o=setTimeout((()=>{i(n||`Promise timeout hit: ${t}`)}),t);new Promise(e).then((e=>{clearTimeout(o),r(e)})).catch((e=>{clearTimeout(o),i(e)}))}));let WindowsController$1=class{constructor(){this.registry=lib$3$1(),this.allWindowProjections=[]}start(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){this.logger=e.logger.subLogger("windows.controller.web"),this.logger.trace("starting the web windows controller"),this.publicWindowId=t.publicWindowId,this.addWindowOperationExecutors(),this.ioc=t,this.bridge=t.bridge,this.instanceId=e.interop.instance.instance,this.channelsController=t.channelsController,this.logger.trace(`set the public window id: ${this.publicWindowId}, set the bridge operations and ioc, registering with the platform now`),this.platformRegistration=this.registerWithPlatform(),yield this.platformRegistration,yield this.initializeFocusTracking(),this.logger.trace("registration with the platform successful, attaching the windows property to glue and returning");const n=this.toApi();e.windows=n}))}handlePlatformShutdown(){this.registry.clear(),this.allWindowProjections=[],this.focusEventHandler&&(document.removeEventListener("visibilityChange",this.focusEventHandler),window.removeEventListener("focus",this.focusEventHandler),window.removeEventListener("blur",this.focusEventHandler))}handleBridgeMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){yield this.platformRegistration;const t=windowOperationTypesDecoder.runWithException(e.operation),n=operations$9[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),yield n.execute(r)}))}open(e,t,n){return __awaiter$1$1(this,void 0,void 0,(function*(){nonEmptyStringDecoder$3.runWithException(e),nonEmptyStringDecoder$3.runWithException(t);const r=windowOpenSettingsDecoder$1.runWithException(n),i=yield this.bridge.send("windows",operations$9.openWindow,{name:e,url:t,options:r});return this.waitForWindowAdded(i.windowId)}))}list(){return this.allWindowProjections.map((e=>e.api))}findById(e){var t;return nonEmptyStringDecoder$3.runWithException(e),null===(t=this.allWindowProjections.find((t=>t.id===e)))||void 0===t?void 0:t.api}toApi(){return{open:this.open.bind(this),my:this.my.bind(this),list:this.list.bind(this),findById:this.findById.bind(this),onWindowAdded:this.onWindowAdded.bind(this),onWindowRemoved:this.onWindowRemoved.bind(this),onWindowGotFocus:this.onWindowGotFocus.bind(this),onWindowLostFocus:this.onWindowLostFocus.bind(this)}}addWindowOperationExecutors(){operations$9.focusChange.execute=this.handleFocusChangeEvent.bind(this),operations$9.windowAdded.execute=this.handleWindowAdded.bind(this),operations$9.windowRemoved.execute=this.handleWindowRemoved.bind(this),operations$9.getBounds.execute=this.handleGetBounds.bind(this),operations$9.getFrameBounds.execute=this.handleGetBounds.bind(this),operations$9.getTitle.execute=this.handleGetTitle.bind(this),operations$9.getUrl.execute=this.handleGetUrl.bind(this),operations$9.moveResize.execute=this.handleMoveResize.bind(this),operations$9.setTitle.execute=this.handleSetTitle.bind(this),operations$9.getChannel.execute=this.handleGetChannel.bind(this)}my(){return Object.assign({},this.me)}onWindowAdded(e){if("function"!=typeof e)throw new Error("Cannot subscribe to window added, because the provided callback is not a function!");return this.registry.add("window-added",e)}onWindowRemoved(e){if("function"!=typeof e)throw new Error("Cannot subscribe to window removed, because the provided callback is not a function!");return this.registry.add("window-removed",e)}onWindowGotFocus(e){if("function"!=typeof e)throw new Error("Cannot subscribe to onWindowGotFocus, because the provided callback is not a function!");return this.registry.add("window-got-focus",e)}onWindowLostFocus(e){if("function"!=typeof e)throw new Error("Cannot subscribe to onWindowLostFocus, because the provided callback is not a function!");return this.registry.add("window-lost-focus",e)}sayHello(){return __awaiter$1$1(this,void 0,void 0,(function*(){return yield this.bridge.send("windows",operations$9.windowHello,{windowId:this.publicWindowId})}))}registerWithPlatform(){return __awaiter$1$1(this,void 0,void 0,(function*(){const{windows:e,isWorkspaceFrame:t}=yield this.sayHello();if(this.isWorkspaceFrame=t,this.logger.trace("the platform responded to the hello message"),!this.isWorkspaceFrame&&this.publicWindowId){this.logger.trace("i am not treated as a workspace frame, setting my window");const t=e.find((e=>e.windowId===this.publicWindowId));if(!t)throw new Error("Cannot initialize the window library, because I received no information about me from the platform");const n=yield this.ioc.buildWebWindow(this.publicWindowId,t.name);this.me=n.api,this.allWindowProjections.push(n)}const n=yield Promise.all(e.filter((e=>e.windowId!==this.publicWindowId)).map((e=>this.ioc.buildWebWindow(e.windowId,e.name))));this.logger.trace("all windows projections are completed, building the list collection"),this.allWindowProjections.push(...n)}))}handleFocusChangeEvent(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=this.allWindowProjections.find((t=>t.id===e.windowId));if(!t)return;t.model.processSelfFocusEvent(e.hasFocus);const n=e.hasFocus?"window-got-focus":"window-lost-focus";this.registry.execute(n,t.api)}))}handleWindowAdded(e){return __awaiter$1$1(this,void 0,void 0,(function*(){if(this.allWindowProjections.some((t=>t.id===e.windowId)))return;const t=yield this.ioc.buildWebWindow(e.windowId,e.name);this.allWindowProjections.push(t),this.registry.execute("window-added",t.api)}))}handleWindowRemoved(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=this.allWindowProjections.find((t=>t.id===e.windowId));t&&(this.allWindowProjections=this.allWindowProjections.filter((t=>t.id!==e.windowId)),t.model.clean(),this.registry.execute("window-removed",t.api))}))}handleGetBounds(){return __awaiter$1$1(this,void 0,void 0,(function*(){if(!this.me&&!this.isWorkspaceFrame)throw new Error("This window cannot report it's bounds, because it is not a Glue Window, most likely because it is an iframe");return{windowId:this.isWorkspaceFrame?"noop":this.me.id,bounds:{top:window.screenTop,left:window.screenLeft,width:window.innerWidth,height:window.innerHeight}}}))}handleGetTitle(){return __awaiter$1$1(this,void 0,void 0,(function*(){if(!this.me)throw new Error("This window cannot report it's title, because it is not a Glue Window, most likely because it is an iframe");return{windowId:this.me.id,title:document.title}}))}handleGetUrl(){return __awaiter$1$1(this,void 0,void 0,(function*(){if(!this.me)throw new Error("This window cannot report it's url, because it is not a Glue Window, most likely because it is an iframe");return{windowId:this.me.id,url:window.location.href}}))}handleMoveResize(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t="number"==typeof e.top?e.top:e.relative?0:window.screenTop,n="number"==typeof e.left?e.left:e.relative?0:window.screenLeft,r="number"==typeof e.height?e.height:e.relative?0:window.innerHeight,i="number"==typeof e.width?e.width:e.relative?0:window.innerWidth,o=e.relative?window.moveBy:window.moveTo,l=e.relative?window.resizeBy:window.resizeTo;o(n,t),l(i,r)}))}handleSetTitle(e){return __awaiter$1$1(this,void 0,void 0,(function*(){document.title=e.title}))}initializeFocusTracking(){return __awaiter$1$1(this,void 0,void 0,(function*(){if(this.isWorkspaceFrame)return void this.logger.trace("Ignoring the focus tracking, because this client is a workspace frame");try{yield this.bridge.send("windows",systemOperations.operationCheck,{operation:"focusChange"})}catch(e){return void this.logger.warn("The platform of this client is outdated and does not support focus tracking, disabling focus events for this client.")}const e=document.hasFocus();yield this.transmitFocusChange(!0),e||(yield this.transmitFocusChange(!1)),this.defineEventListeners()}))}processFocusEvent(){const e=document.hasFocus();this.transmitFocusChange(e)}waitForWindowAdded(e){const t=this.allWindowProjections.find((t=>t.id===e));return t?Promise.resolve(t.api):PromisePlus$1$1((t=>{const n=this.onWindowAdded((r=>{r.id===e&&(n(),t(r))}))}),3e4,`Timed out waiting for ${e} to be announced`)}transmitFocusChange(e){var t;return __awaiter$1$1(this,void 0,void 0,(function*(){const n={windowId:(null===(t=this.me)||void 0===t?void 0:t.id)||`iframe-${this.instanceId}`,hasFocus:e};this.me&&(this.me.isFocused=e),yield this.bridge.send("windows",operations$9.focusChange,n)}))}defineEventListeners(){this.focusEventHandler=this.processFocusEvent.bind(this),document.addEventListener("visibilityChange",this.focusEventHandler),window.addEventListener("focus",this.focusEventHandler),window.addEventListener("blur",this.focusEventHandler)}handleGetChannel(){return __awaiter$1$1(this,void 0,void 0,(function*(){if(!this.me)throw new Error("This window cannot report it's channel, because it is not a Glue Window, most likely because it is an iframe");const e=this.channelsController.my();return Object.assign({},e?{channel:e}:{})}))}};const GlueWebPlatformControlName$1="T42.Web.Platform.Control",GlueWebPlatformStreamName$1="T42.Web.Platform.Stream",GlueClientControlName$1="T42.Web.Client.Control",GlueCorePlusThemesStream$1="T42.Core.Plus.Themes.Stream";class GlueBridge{constructor(e,t){this.coreGlue=e,this.communicationId=t,this.platformMethodTimeoutMs=1e4}get contextLib(){return this.coreGlue.contexts}get interopInstance(){return this.coreGlue.interop.instance.instance}stop(){return __awaiter$1$1(this,void 0,void 0,(function*(){this.running=!1,this.sub.close(),yield this.coreGlue.interop.unregister(GlueClientControlName$1)}))}start(e){return __awaiter$1$1(this,void 0,void 0,(function*(){this.running=!0,this.controllers=e,yield Promise.all([this.checkWaitMethod(GlueWebPlatformControlName$1),this.checkWaitMethod(GlueWebPlatformStreamName$1)]);const t=this.communicationId,[n]=yield Promise.all([this.coreGlue.interop.subscribe(GlueWebPlatformStreamName$1,t?{target:{instance:this.communicationId}}:void 0),this.coreGlue.interop.registerAsync(GlueClientControlName$1,((e,t,n,r)=>this.passMessageController(e,n,r)))]);this.sub=n,this.sub.onData((e=>this.passMessageController(e.data)))}))}getInteropInstance(e){const t=this.coreGlue.interop.servers().find((t=>t.windowId&&t.windowId===e));return{application:null==t?void 0:t.application,applicationName:null==t?void 0:t.applicationName,peerId:null==t?void 0:t.peerId,instance:null==t?void 0:t.instance,windowId:null==t?void 0:t.windowId}}send(e,t,n,r,i){return __awaiter$1$1(this,void 0,void 0,(function*(){if(t.dataDecoder)try{t.dataDecoder.runWithException(n)}catch(e){throw new Error(`Unexpected Web->Platform outgoing validation error: ${e.message}, for operation: ${t.name} and input: ${JSON.stringify(e.input)}`)}if(!(!(null==i?void 0:i.includeOperationCheck)||(yield this.checkOperationSupported(e,t)).isSupported))throw new Error(`Cannot complete operation: ${t.name} for domain: ${e} because this client is connected to a platform which does not support it`);try{const i=yield this.transmitMessage(e,t,n,r);return t.resultDecoder&&t.resultDecoder.runWithException(i),i}catch(e){if(e.kind)throw new Error(`Unexpected Web<-Platform incoming validation error: ${e.message}, for operation: ${t.name} and input: ${JSON.stringify(e.input)}`);throw new Error(e.message)}}))}createNotificationsSteam(){return __awaiter$1$1(this,void 0,void 0,(function*(){if(!this.coreGlue.interop.methods().some((e=>e.name===GlueCorePlusThemesStream$1)))throw new Error("Cannot subscribe to theme changes, because the underlying interop stream does not exist. Most likely this is the case when this client is not connected to Core Plus.");return this.coreGlue.interop.subscribe(GlueCorePlusThemesStream$1,this.communicationId?{target:{instance:this.communicationId}}:void 0)}))}checkOperationSupported(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){try{return yield this.send(e,systemOperations.operationCheck,{operation:t.name})}catch(e){return{isSupported:!1}}}))}checkWaitMethod(e){return PromisePlus$1$1((t=>{if(this.coreGlue.interop.methods().some((t=>{const n=t.name===e,r=!this.communicationId||t.getServers().some((e=>e.instance===this.communicationId));return n&&r})))return t();const n=this.coreGlue.interop.serverMethodAdded((r=>{const i=r.method,o=r.server,l=!this.communicationId||o.instance===this.communicationId;i.name===e&&l&&(n(),t())}))}),this.platformMethodTimeoutMs,`Cannot initiate Glue Web, because a system method's discovery timed out: ${e}`)}passMessageController(e,t,n){const r=libDomainDecoder$1.run(e.domain);if(!r.ok)return void(n&&n(`Cannot execute this client control, because of domain validation error: ${JSON.stringify(r.error)}`));const i=r.result;this.controllers[i].handleBridgeMessage(e).then((e=>{t&&t(e)})).catch((e=>{n&&n(e),console.warn(e)}))}transmitMessage(e,t,n,r){return __awaiter$1$1(this,void 0,void 0,(function*(){const i={domain:e,data:n,operation:t.name};let o;const l=`Internal Platform Communication Error. Attempted operation: ${JSON.stringify(t.name)} with data: ${JSON.stringify(n)}. `,s=this.communicationId;try{if(!this.running)throw new Error("Cannot send a control message, because the platform shut down");if(o=yield this.coreGlue.interop.invoke(GlueWebPlatformControlName$1,i,s?{instance:this.communicationId}:void 0,r),!o)throw new Error("Received unsupported result from the platform - empty result");if(!Array.isArray(o.all_return_values)||0===o.all_return_values.length)throw new Error("Received unsupported result from the platform - empty values collection")}catch(e){if(e&&e.all_errors&&e.all_errors.length){const t=e.all_errors[0].message;throw new Error(`${l} -> Inner message: ${t}`)}throw new Error(`${l} -> Inner message: ${e.message}`)}return o.all_return_values[0].returned}))}}const operations$8={appHello:{name:"appHello",dataDecoder:windowHelloDecoder,resultDecoder:appHelloSuccessDecoder$1},appDirectoryStateChange:{name:"appDirectoryStateChange",dataDecoder:appDirectoryStateChangeDecoder},instanceStarted:{name:"instanceStarted",dataDecoder:instanceDataDecoder$1},instanceStopped:{name:"instanceStopped",dataDecoder:instanceDataDecoder$1},applicationStart:{name:"applicationStart",dataDecoder:applicationStartConfigDecoder$1,resultDecoder:instanceDataDecoder$1},instanceStop:{name:"instanceStop",dataDecoder:basicInstanceDataDecoder$1},import:{name:"import"},remove:{name:"remove",dataDecoder:appRemoveConfigDecoder$1},export:{name:"export",resultDecoder:appsExportOperationDecoder$1},clear:{name:"clear"}};class AppManagerController{constructor(){this.baseApplicationsTimeoutMS=6e4,this.appImportTimeoutMS=20,this.registry=lib$3$1(),this.applications=[],this.instances=[]}handlePlatformShutdown(){this.registry.clear(),this.applications=[],this.instances=[],delete this.me}start(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){this.logger=e.logger.subLogger("appManger.controller.web"),this.logger.trace("starting the web appManager controller"),this.publicWindowId=t.publicWindowId,this.addOperationsExecutors(),this.ioc=t,this.bridge=t.bridge,this.channelsController=t.channelsController,this.sessionController=t.sessionController,this.platformRegistration=this.registerWithPlatform(),yield this.platformRegistration,this.logger.trace("registration with the platform successful, attaching the appManager property to glue and returning");const n=this.toApi();e.appManager=n}))}handleBridgeMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){yield this.platformRegistration;const t=appManagerOperationTypesDecoder$1.runWithException(e.operation),n=operations$8[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),yield n.execute(r)}))}onInstanceStarted(e){if("function"!=typeof e)throw new Error("onInstanceStarted requires a single argument of type function");return this.registry.add("instance-started",e,this.instances)}onInstanceStopped(e){if("function"!=typeof e)throw new Error("onInstanceStopped requires a single argument of type function");return this.registry.add("instance-stopped",e)}startApplication(e,t,n){var r;return __awaiter$1$1(this,void 0,void 0,(function*(){const i=yield this.channelsController.all();if((null==n?void 0:n.channelId)&&!i.includes(n.channelId))throw new Error(`The channel with name "${n.channelId}" doesn't exist!`);const o={name:e,waitForAGMReady:null===(r=null==n?void 0:n.waitForAGMReady)||void 0===r||r,context:t,top:null==n?void 0:n.top,left:null==n?void 0:n.left,width:null==n?void 0:n.width,height:null==n?void 0:n.height,relativeTo:null==n?void 0:n.relativeTo,relativeDirection:null==n?void 0:n.relativeDirection,id:null==n?void 0:n.reuseId,forceChromeTab:null==n?void 0:n.forceTab,layoutComponentId:null==n?void 0:n.layoutComponentId,channelId:null==n?void 0:n.channelId},l=yield this.bridge.send("appManager",operations$8.applicationStart,o),s=this.applications.find((e=>e.name===l.applicationName));return this.ioc.buildInstance(l,s)}))}getApplication(e){const t=nonEmptyStringDecoder$3.runWithException(e);return this.applications.find((e=>e.name===t))}getInstances(){return this.instances.slice()}toApi(){return{myInstance:this.me,inMemory:{import:this.import.bind(this),remove:this.remove.bind(this),export:this.export.bind(this),clear:this.clear.bind(this)},application:this.getApplication.bind(this),applications:this.getApplications.bind(this),instances:this.getInstances.bind(this),onAppAdded:this.onAppAdded.bind(this),onAppChanged:this.onAppChanged.bind(this),onAppRemoved:this.onAppRemoved.bind(this),onInstanceStarted:this.onInstanceStarted.bind(this),onInstanceStopped:this.onInstanceStopped.bind(this)}}addOperationsExecutors(){operations$8.appDirectoryStateChange.execute=this.handleAppDirectoryStateChange.bind(this),operations$8.instanceStarted.execute=this.handleInstanceStartedMessage.bind(this),operations$8.instanceStopped.execute=this.handleInstanceStoppedMessage.bind(this)}handleAppDirectoryStateChange(e){return __awaiter$1$1(this,void 0,void 0,(function*(){e.appsAdded.forEach(this.handleApplicationAddedMessage.bind(this)),e.appsChanged.forEach(this.handleApplicationChangedMessage.bind(this)),e.appsRemoved.forEach(this.handleApplicationRemovedMessage.bind(this))}))}onAppAdded(e){if("function"!=typeof e)throw new Error("onAppAdded requires a single argument of type function");return this.registry.add("application-added",e,this.applications)}onAppRemoved(e){if("function"!=typeof e)throw new Error("onAppRemoved requires a single argument of type function");return this.registry.add("application-removed",e)}onAppChanged(e){if("function"!=typeof e)throw new Error("onAppChanged requires a single argument of type function");return this.registry.add("application-changed",e)}handleApplicationAddedMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){if(this.applications.some((t=>t.name===e.name)))return;const t=yield this.ioc.buildApplication(e,[]),n=this.instances.filter((e=>e.application.name===t.name));t.instances.push(...n),this.applications.push(t),this.registry.execute("application-added",t)}))}handleApplicationRemovedMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=this.applications.findIndex((t=>t.name===e.name));if(t<0)return;const n=this.applications[t];this.applications.splice(t,1),this.registry.execute("application-removed",n)}))}handleApplicationChangedMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=this.applications.find((t=>t.name===e.name));if(!t)return this.handleApplicationAddedMessage(e);t.title=e.title,t.version=e.version,t.icon=e.icon,t.caption=e.caption,t.userProperties=e.userProperties,this.registry.execute("application-changed",t)}))}handleInstanceStartedMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){if(this.instances.some((t=>t.id===e.id)))return;const t=this.applications.find((t=>t.name===e.applicationName));if(!t)throw new Error(`Cannot add instance: ${e.id}, because there is no application definition associated with it`);const n=this.ioc.buildInstance(e,t);this.instances.push(n),t.instances.push(n),this.registry.execute("instance-started",n)}))}handleInstanceStoppedMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=this.instances.find((t=>t.id===e.id));if(t){const t=this.instances.findIndex((t=>t.id===e.id));this.instances.splice(t,1)}const n=this.applications.find((t=>t.instances.some((t=>t.id===e.id))));if(n){const t=n.instances.findIndex((t=>t.id===e.id));n.instances.splice(t,1)}t&&this.registry.execute("instance-stopped",t)}))}import(e,t="replace"){return __awaiter$1$1(this,void 0,void 0,(function*(){if(importModeDecoder$1.runWithException(t),!Array.isArray(e))throw new Error("Import must be called with an array of definitions");if(e.length>1e4)throw new Error("Cannot import more than 10000 app definitions in Glue42 Core.");const n=e.reduce(((e,t)=>{const n=allApplicationDefinitionsDecoder$1.run(t);return n.ok?e.valid.push(t):e.invalid.push({app:null==t?void 0:t.name,error:JSON.stringify(n.error)}),e}),{valid:[],invalid:[]}),r=this.baseApplicationsTimeoutMS+this.appImportTimeoutMS*n.valid.length;return yield this.bridge.send("appManager",operations$8.import,{definitions:n.valid,mode:t},{methodResponseTimeoutMs:r}),{imported:n.valid.map((e=>e.name)),errors:n.invalid}}))}remove(e){return __awaiter$1$1(this,void 0,void 0,(function*(){nonEmptyStringDecoder$3.runWithException(e),yield this.bridge.send("appManager",operations$8.remove,{name:e},{methodResponseTimeoutMs:this.baseApplicationsTimeoutMS})}))}clear(){return __awaiter$1$1(this,void 0,void 0,(function*(){yield this.bridge.send("appManager",operations$8.clear,void 0,{methodResponseTimeoutMs:this.baseApplicationsTimeoutMS})}))}export(){return __awaiter$1$1(this,void 0,void 0,(function*(){return(yield this.bridge.send("appManager",operations$8.export,void 0,{methodResponseTimeoutMs:this.baseApplicationsTimeoutMS})).definitions}))}getApplications(){return this.applications.slice()}joinInitialChannel(e){return __awaiter$1$1(this,void 0,void 0,(function*(){try{yield this.channelsController.join(e)}catch(t){this.logger.warn(`Application instance ${this.me} was unable to join the ${e} channel. Reason: ${JSON.stringify(t)}`)}}))}registerWithPlatform(){return __awaiter$1$1(this,void 0,void 0,(function*(){const e=yield this.bridge.send("appManager",operations$8.appHello,{windowId:this.publicWindowId},{methodResponseTimeoutMs:this.baseApplicationsTimeoutMS});this.logger.trace("the platform responded to the hello message with a full list of apps"),this.applications=yield Promise.all(e.apps.map((e=>this.ioc.buildApplication(e,e.instances)))),this.instances=this.applications.reduce(((e,t)=>(e.push(...t.instances),e)),[]),this.me=this.findMyInstance(),this.logger.trace(`all applications were parsed and saved. I am ${this.me?"NOT a":"a"} valid instance`);const{channels:t}=this.sessionController.getWindowData(),n=t?t.currentName:e.initialChannelId;n&&(yield this.joinInitialChannel(n))}))}findMyInstance(){for(const e of this.applications){const t=e.instances.find((e=>e.id===this.publicWindowId));if(t)return t}}}class InstanceModel{constructor(e,t,n){this.data=e,this.bridge=t,this.application=n,this.myCtxKey=`___instance___${this.data.id}`}toApi(){const e=this.bridge.getInteropInstance(this.data.id),t={id:this.data.id,agm:e,application:this.application,stop:this.stop.bind(this),getContext:this.getContext.bind(this)};return this.me=Object.freeze(t),this.me}getContext(){return __awaiter$1$1(this,void 0,void 0,(function*(){return this.bridge.contextLib.get(this.myCtxKey)}))}stop(){return __awaiter$1$1(this,void 0,void 0,(function*(){yield this.bridge.send("appManager",operations$8.instanceStop,{id:this.data.id})}))}}class ApplicationModel{constructor(e,t,n){this.data=e,this.instances=t,this.controller=n}toApi(){const e={name:this.data.name,title:this.data.title,version:this.data.version,icon:this.data.icon,caption:this.data.caption,userProperties:this.data.userProperties,instances:this.instances,start:this.start.bind(this),onInstanceStarted:this.onInstanceStarted.bind(this),onInstanceStopped:this.onInstanceStopped.bind(this)};return this.me=e,this.me}onInstanceStarted(e){if("function"!=typeof e)throw new Error("OnInstanceStarted requires a single argument of type function");return this.controller.onInstanceStarted((t=>{t.application.name===this.data.name&&e(t)}))}onInstanceStopped(e){if("function"!=typeof e)throw new Error("OnInstanceStarted requires a single argument of type function");return this.controller.onInstanceStopped((t=>{t.application.name===this.data.name&&e(t)}))}start(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){const n=startApplicationContextDecoder.runWithException(e),r=startApplicationOptionsDecoder.runWithException(t);return this.controller.startApplication(this.data.name,n,r)}))}}const operations$7={layoutAdded:{name:"layoutAdded",dataDecoder:glueLayoutDecoder$1},layoutChanged:{name:"layoutChanged",dataDecoder:glueLayoutDecoder$1},layoutRemoved:{name:"layoutRemoved",dataDecoder:glueLayoutDecoder$1},get:{name:"get",dataDecoder:simpleLayoutConfigDecoder$1,resultDecoder:optionalSimpleLayoutResult$1},getAll:{name:"getAll",dataDecoder:getAllLayoutsConfigDecoder$1,resultDecoder:allLayoutsSummariesResultDecoder$1},export:{name:"export",dataDecoder:getAllLayoutsConfigDecoder$1,resultDecoder:allLayoutsFullConfigDecoder$1},import:{name:"import",dataDecoder:layoutsImportConfigDecoder$1},remove:{name:"remove",dataDecoder:simpleLayoutConfigDecoder$1},save:{name:"save",dataDecoder:saveLayoutConfigDecoder$1,resultDecoder:simpleLayoutResultDecoder},restore:{name:"restore",dataDecoder:restoreLayoutConfigDecoder$1},clientSaveRequest:{name:"clientSaveRequest",dataDecoder:platformSaveRequestConfigDecoder,resultDecoder:saveRequestClientResponseDecoder},getGlobalPermissionState:{name:"getGlobalPermissionState",resultDecoder:permissionStateResultDecoder$1},requestGlobalPermission:{name:"requestGlobalPermission",resultDecoder:simpleAvailabilityResultDecoder$1},checkGlobalActivated:{name:"checkGlobalActivated",resultDecoder:simpleAvailabilityResultDecoder$1},getDefaultGlobal:{name:"getDefaultGlobal",resultDecoder:optionalSimpleLayoutResult$1},setDefaultGlobal:{name:"setDefaultGlobal",dataDecoder:setDefaultGlobalConfigDecoder$1},clearDefaultGlobal:{name:"clearDefaultGlobal"}};let LayoutsController$1=class{constructor(){this.defaultLayoutRestoreTimeoutMS=12e4,this.registry=lib$3$1()}handlePlatformShutdown(){this.registry.clear()}start(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){this.logger=e.logger.subLogger("layouts.controller.web"),this.logger.trace("starting the web layouts controller"),this.bridge=t.bridge,this.windowsController=t.windowsController,this.addOperationsExecutors();const n=this.toApi();this.logger.trace("no need for platform registration, attaching the layouts property to glue and returning"),e.layouts=n}))}handleBridgeMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=layoutsOperationTypesDecoder$1.runWithException(e.operation),n=operations$7[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),yield n.execute(r)}))}toApi(){const e={get:this.get.bind(this),getAll:this.getAll.bind(this),export:this.export.bind(this),import:this.import.bind(this),save:this.save.bind(this),restore:this.restore.bind(this),remove:this.remove.bind(this),onAdded:this.onAdded.bind(this),onChanged:this.onChanged.bind(this),onRemoved:this.onRemoved.bind(this),onSaveRequested:this.subscribeOnSaveRequested.bind(this),getMultiScreenPermissionState:this.getGlobalPermissionState.bind(this),requestMultiScreenPermission:this.requestGlobalPermission.bind(this),getGlobalTypeState:this.checkGlobalActivated.bind(this),getDefaultGlobal:this.getDefaultGlobal.bind(this),setDefaultGlobal:this.setDefaultGlobal.bind(this),clearDefaultGlobal:this.clearDefaultGlobal.bind(this)};return Object.freeze(e)}addOperationsExecutors(){operations$7.layoutAdded.execute=this.handleOnAdded.bind(this),operations$7.layoutChanged.execute=this.handleOnChanged.bind(this),operations$7.layoutRemoved.execute=this.handleOnRemoved.bind(this),operations$7.clientSaveRequest.execute=this.handleSaveRequest.bind(this)}get(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){nonEmptyStringDecoder$3.runWithException(e),layoutTypeDecoder$1.runWithException(t);return(yield this.bridge.send("layouts",operations$7.get,{name:e,type:t})).layout}))}getAll(e){return __awaiter$1$1(this,void 0,void 0,(function*(){layoutTypeDecoder$1.runWithException(e);return(yield this.bridge.send("layouts",operations$7.getAll,{type:e})).summaries}))}export(e){return __awaiter$1$1(this,void 0,void 0,(function*(){layoutTypeDecoder$1.runWithException(e);return(yield this.bridge.send("layouts",operations$7.export,{type:e})).layouts}))}import(e,t="replace"){return __awaiter$1$1(this,void 0,void 0,(function*(){if(importModeDecoder$1.runWithException(t),!Array.isArray(e))throw new Error("Import must be called with an array of layouts");if(e.length>1e3)throw new Error("Cannot import more than 1000 layouts at once in Glue42 Core.");const n=e.reduce(((e,t)=>{const n=glueLayoutDecoder$1.run(t);return n.ok?e.valid.push(t):this.logger.warn(`A layout with name: ${t.name} was not imported, because of error: ${JSON.stringify(n.error)}`),e}),{valid:[]}),r=e.filter((e=>n.valid.some((t=>t.name===e.name))));yield this.bridge.send("layouts",operations$7.import,{layouts:r,mode:t})}))}save(e){return __awaiter$1$1(this,void 0,void 0,(function*(){newLayoutOptionsDecoder$1.runWithException(e);return(yield this.bridge.send("layouts",operations$7.save,{layout:e})).layout}))}restore(e){return __awaiter$1$1(this,void 0,void 0,(function*(){restoreOptionsDecoder$1.runWithException(e);const t=e.timeout?2*e.timeout:this.defaultLayoutRestoreTimeoutMS;yield this.bridge.send("layouts",operations$7.restore,{layout:e},{methodResponseTimeoutMs:t})}))}remove(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){layoutTypeDecoder$1.runWithException(e),nonEmptyStringDecoder$3.runWithException(t),yield this.bridge.send("layouts",operations$7.remove,{type:e,name:t})}))}handleSaveRequest(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t={};if(this.saveRequestSubscription)try{const n=this.saveRequestSubscription(e);t.windowContext=null==n?void 0:n.windowContext}catch(e){this.logger.warn(`An error was thrown by the onSaveRequested callback, ignoring the callback: ${JSON.stringify(e)}`)}return t}))}getGlobalPermissionState(){return __awaiter$1$1(this,void 0,void 0,(function*(){return yield this.bridge.send("layouts",operations$7.getGlobalPermissionState,void 0)}))}requestGlobalPermission(){return __awaiter$1$1(this,void 0,void 0,(function*(){const e=(yield this.getGlobalPermissionState()).state;if("denied"===e)return{permissionGranted:!1};if("granted"===e)return{permissionGranted:!0};const t=this.windowsController.my(),n=(window.glue42core||window.iobrowser).isPlatformFrame;if("Platform"!==t.name&&!n)throw new Error("Cannot request permission for multi-window placement from any app other than the Platform.");return{permissionGranted:(yield this.bridge.send("layouts",operations$7.requestGlobalPermission,void 0,{methodResponseTimeoutMs:18e4})).isAvailable}}))}checkGlobalActivated(){return __awaiter$1$1(this,void 0,void 0,(function*(){return{activated:(yield this.bridge.send("layouts",operations$7.checkGlobalActivated,void 0)).isAvailable}}))}getDefaultGlobal(){return __awaiter$1$1(this,void 0,void 0,(function*(){return(yield this.bridge.send("layouts",operations$7.getDefaultGlobal,void 0,void 0,{includeOperationCheck:!0})).layout}))}setDefaultGlobal(e){return __awaiter$1$1(this,void 0,void 0,(function*(){nonEmptyStringDecoder$3.runWithException(e),yield this.bridge.send("layouts",operations$7.setDefaultGlobal,{name:e},void 0,{includeOperationCheck:!0})}))}clearDefaultGlobal(){return __awaiter$1$1(this,void 0,void 0,(function*(){yield this.bridge.send("layouts",operations$7.clearDefaultGlobal,void 0,void 0,{includeOperationCheck:!0})}))}onAdded(e){return this.export("Global").then((t=>t.forEach((t=>e(t))))).catch((()=>{})),this.export("Workspace").then((t=>t.forEach((t=>e(t))))).catch((()=>{})),this.registry.add(operations$7.layoutAdded.name,e)}onChanged(e){return this.registry.add(operations$7.layoutChanged.name,e)}onRemoved(e){return this.registry.add(operations$7.layoutRemoved.name,e)}subscribeOnSaveRequested(e){if("function"!=typeof e)throw new Error("Cannot subscribe to onSaveRequested, because the provided argument is not a valid callback function.");if(this.saveRequestSubscription)throw new Error("Cannot subscribe to onSaveRequested, because this client has already subscribed and only one subscription is supported. Consider unsubscribing from the initial one.");return this.saveRequestSubscription=e,()=>{delete this.saveRequestSubscription}}handleOnAdded(e){return __awaiter$1$1(this,void 0,void 0,(function*(){this.registry.execute(operations$7.layoutAdded.name,e)}))}handleOnChanged(e){return __awaiter$1$1(this,void 0,void 0,(function*(){this.registry.execute(operations$7.layoutChanged.name,e)}))}handleOnRemoved(e){return __awaiter$1$1(this,void 0,void 0,(function*(){this.registry.execute(operations$7.layoutRemoved.name,e)}))}};const operations$6={raiseNotification:{name:"raiseNotification",dataDecoder:raiseNotificationDecoder$1,resultDecoder:raiseNotificationResultDecoder$1},requestPermission:{name:"requestPermission",resultDecoder:permissionRequestResultDecoder$1},notificationShow:{name:"notificationShow",dataDecoder:notificationEventPayloadDecoder},notificationClick:{name:"notificationClick",dataDecoder:notificationEventPayloadDecoder},getPermission:{name:"getPermission",resultDecoder:permissionQueryResultDecoder$1},list:{name:"list",resultDecoder:allNotificationsDataDecoder$1},notificationRaised:{name:"notificationRaised",dataDecoder:simpleNotificationDataDecoder},notificationClosed:{name:"notificationClosed",dataDecoder:simpleNotificationSelectDecoder$1},click:{name:"click"},clear:{name:"clear"},clearAll:{name:"clearAll"},clearOld:{name:"clearOld"},configure:{name:"configure",dataDecoder:notificationsConfigurationProtocolDecoder$1},getConfiguration:{name:"getConfiguration",resultDecoder:strictNotificationsConfigurationProtocolDecoder},configurationChanged:{name:"configurationChanged",resultDecoder:strictNotificationsConfigurationProtocolDecoder},setState:{name:"setState",dataDecoder:notificationSetStateRequestDecoder$1},activeCountChange:{name:"activeCountChange",resultDecoder:activeNotificationsCountChangeDecoder},stateChange:{name:"stateChange",resultDecoder:notificationSetStateRequestDecoder$1}};var shortidExports$1={},shortid$3$1={get exports(){return shortidExports$1},set exports(e){shortidExports$1=e}},libExports$1$1={},lib$2$1={get exports(){return libExports$1$1},set exports(e){libExports$1$1=e}},seed$1$1=1;function getNextValue$1$1(){return(seed$1$1=(9301*seed$1$1+49297)%233280)/233280}function setSeed$3$1(e){seed$1$1=e}var randomFromSeed$3$1={nextValue:getNextValue$1$1,seed:setSeed$3$1},randomFromSeed$2$1=randomFromSeed$3$1,ORIGINAL$1$1="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-",alphabet$5$1,previousSeed$1$1,shuffled$1$1;function reset$1$1(){shuffled$1$1=!1}function setCharacters$1$1(e){if(e){if(e!==alphabet$5$1){if(e.length!==ORIGINAL$1$1.length)throw new Error("Custom alphabet for shortid must be "+ORIGINAL$1$1.length+" unique characters. You submitted "+e.length+" characters: "+e);var t=e.split("").filter((function(e,t,n){return t!==n.lastIndexOf(e)}));if(t.length)throw new Error("Custom alphabet for shortid must be "+ORIGINAL$1$1.length+" unique characters. These characters were not unique: "+t.join(", "));alphabet$5$1=e,reset$1$1()}}else alphabet$5$1!==ORIGINAL$1$1&&(alphabet$5$1=ORIGINAL$1$1,reset$1$1())}function characters$1$1(e){return setCharacters$1$1(e),alphabet$5$1}function setSeed$2$1(e){randomFromSeed$2$1.seed(e),previousSeed$1$1!==e&&(reset$1$1(),previousSeed$1$1=e)}function shuffle$1$1(){alphabet$5$1||setCharacters$1$1(ORIGINAL$1$1);for(var e,t=alphabet$5$1.split(""),n=[],r=randomFromSeed$2$1.nextValue();t.length>0;)r=randomFromSeed$2$1.nextValue(),e=Math.floor(r*t.length),n.push(t.splice(e,1)[0]);return n.join("")}function getShuffled$1$1(){return shuffled$1$1||(shuffled$1$1=shuffle$1$1())}function lookup$1$1(e){return getShuffled$1$1()[e]}function get$1$1(){return alphabet$5$1||ORIGINAL$1$1}var alphabet_1$1$1={get:get$1$1,characters:characters$1$1,seed:setSeed$2$1,lookup:lookup$1$1,shuffled:getShuffled$1$1},crypto$1$1="object"==typeof window&&(window.crypto||window.msCrypto),randomByte$1$1;randomByte$1$1=crypto$1$1&&crypto$1$1.getRandomValues?function(e){return crypto$1$1.getRandomValues(new Uint8Array(e))}:function(e){for(var t=[],n=0;n0&&(t+=generate$2$1(counter$1$1)),t+=generate$2$1(n)}var build_1$1$1=build$1$1,alphabet$3$1=alphabet_1$1$1;function isShortId$1$1(e){return!(!e||"string"!=typeof e||e.length<6)&&!new RegExp("[^"+alphabet$3$1.get().replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&")+"]").test(e)}var isValid$1$1=isShortId$1$1;!function(e){var t=alphabet_1$1$1,n=build_1$1$1,r=isValid$1$1,i=0;function o(){return n(i)}e.exports=o,e.exports.generate=o,e.exports.seed=function(n){return t.seed(n),e.exports},e.exports.worker=function(t){return i=t,e.exports},e.exports.characters=function(e){return void 0!==e&&t.characters(e),t.shuffled()},e.exports.isValid=r}(lib$2$1),shortid$3$1.exports=libExports$1$1;var shortid$2$1=getDefaultExportFromCjs$1$1(shortidExports$1);let NotificationsController$1=class{constructor(){this.registry=lib$3$1(),this.notifications={}}handlePlatformShutdown(){this.notifications={},this.registry.clear()}start(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){this.logger=e.logger.subLogger("notifications.controller.web"),this.logger.trace("starting the web notifications controller"),this.bridge=t.bridge,this.coreGlue=e,this.notificationsSettings=t.config.notifications,this.buildNotificationFunc=t.buildNotification;const n=this.toApi();this.addOperationExecutors(),e.notifications=n,this.logger.trace("notifications are ready")}))}handleBridgeMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=notificationsOperationTypesDecoder.runWithException(e.operation),n=operations$6[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),yield n.execute(r)}))}toApi(){const e={raise:this.raise.bind(this),requestPermission:this.requestPermission.bind(this),getPermission:this.getPermission.bind(this),list:this.list.bind(this),onRaised:this.onRaised.bind(this),onClosed:this.onClosed.bind(this),click:this.click.bind(this),clear:this.clear.bind(this),clearAll:this.clearAll.bind(this),clearOld:this.clearOld.bind(this),configure:this.configure.bind(this),getConfiguration:this.getConfiguration.bind(this),getFilter:this.getFilter.bind(this),setFilter:this.setFilter.bind(this),setState:this.setState.bind(this),onConfigurationChanged:this.onConfigurationChanged.bind(this),onActiveCountChanged:this.onActiveCountChanged.bind(this),onStateChanged:this.onStateChanged.bind(this)};return Object.freeze(e)}getPermission(){return __awaiter$1$1(this,void 0,void 0,(function*(){return(yield this.bridge.send("notifications",operations$6.getPermission,void 0)).permission}))}requestPermission(){return __awaiter$1$1(this,void 0,void 0,(function*(){return(yield this.bridge.send("notifications",operations$6.requestPermission,void 0)).permissionGranted}))}raise(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=glue42NotificationOptionsDecoder$1.runWithException(e);t.showToast="boolean"!=typeof t.showToast||t.showToast,t.showInPanel="boolean"!=typeof t.showInPanel||t.showInPanel;if(!(yield this.requestPermission()))throw new Error("Cannot raise the notification, because the user has declined the permission request");const n=shortidExports$1.generate(),r=yield this.bridge.send("notifications",operations$6.raiseNotification,{settings:t,id:n}),i=this.buildNotificationFunc(r.settings,n);return this.notifications[n]=i,i}))}list(){return __awaiter$1$1(this,void 0,void 0,(function*(){return(yield this.bridge.send("notifications",operations$6.list,void 0,void 0,{includeOperationCheck:!0})).notifications}))}onRaised(e){if("function"!=typeof e)throw new Error("onRaised expects a callback of type function");return this.registry.add("notification-raised",e)}onClosed(e){if("function"!=typeof e)throw new Error("onRaised expects a callback of type function");return this.registry.add("notification-closed",e)}click(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){nonEmptyStringDecoder$3.runWithException(e),t&&nonEmptyStringDecoder$3.runWithException(t),yield this.bridge.send("notifications",operations$6.click,{id:e,action:t},void 0,{includeOperationCheck:!0})}))}clear(e){return __awaiter$1$1(this,void 0,void 0,(function*(){nonEmptyStringDecoder$3.runWithException(e),yield this.bridge.send("notifications",operations$6.clear,{id:e},void 0,{includeOperationCheck:!0})}))}clearAll(){return __awaiter$1$1(this,void 0,void 0,(function*(){yield this.bridge.send("notifications",operations$6.clearAll,void 0,void 0,{includeOperationCheck:!0})}))}clearOld(){return __awaiter$1$1(this,void 0,void 0,(function*(){yield this.bridge.send("notifications",operations$6.clearOld,void 0,void 0,{includeOperationCheck:!0})}))}configure(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=notificationsConfigurationDecoder$1.runWithException(e);yield this.bridge.send("notifications",operations$6.configure,{configuration:t},void 0,{includeOperationCheck:!0})}))}getConfiguration(){return __awaiter$1$1(this,void 0,void 0,(function*(){return(yield this.bridge.send("notifications",operations$6.getConfiguration,void 0,void 0,{includeOperationCheck:!0})).configuration}))}getFilter(){return __awaiter$1$1(this,void 0,void 0,(function*(){return(yield this.bridge.send("notifications",operations$6.getConfiguration,void 0,void 0,{includeOperationCheck:!0})).configuration.sourceFilter}))}setFilter(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=notificationFilterDecoder$1.runWithException(e);return yield this.bridge.send("notifications",operations$6.configure,{configuration:{sourceFilter:t}},void 0,{includeOperationCheck:!0}),t}))}setState(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){nonEmptyStringDecoder$3.runWithException(e),notificationStateDecoder$1.runWithException(t),yield this.bridge.send("notifications",operations$6.setState,{id:e,state:t},void 0,{includeOperationCheck:!0})}))}onConfigurationChanged(e){if("function"!=typeof e)throw new Error("Cannot subscribe to configuration changed, because the provided callback is not a function!");return this.registry.add("notifications-config-changed",e)}onActiveCountChanged(e){if("function"!=typeof e)throw new Error("Cannot subscribe to onActiveCountChanged changed, because the provided callback is not a function!");return this.registry.add("notifications-active-count-changed",e)}onStateChanged(e){if("function"!=typeof e)throw new Error("Cannot subscribe to onStateChanged changed, because the provided callback is not a function!");return this.registry.add("notification-state-changed",e)}addOperationExecutors(){operations$6.notificationShow.execute=this.handleNotificationShow.bind(this),operations$6.notificationClick.execute=this.handleNotificationClick.bind(this),operations$6.notificationRaised.execute=this.handleNotificationRaised.bind(this),operations$6.notificationClosed.execute=this.handleNotificationClosed.bind(this),operations$6.configurationChanged.execute=this.handleConfigurationChanged.bind(this),operations$6.activeCountChange.execute=this.handleActiveCountChanged.bind(this),operations$6.stateChange.execute=this.handleNotificationStateChanged.bind(this)}handleConfigurationChanged(e){return __awaiter$1$1(this,void 0,void 0,(function*(){this.registry.execute("notifications-config-changed",e.configuration)}))}handleActiveCountChanged(e){return __awaiter$1$1(this,void 0,void 0,(function*(){this.registry.execute("notifications-active-count-changed",e)}))}handleNotificationStateChanged(e){return __awaiter$1$1(this,void 0,void 0,(function*(){this.registry.execute("notification-state-changed",{id:e.id},e.state)}))}handleNotificationShow(e){return __awaiter$1$1(this,void 0,void 0,(function*(){if(!e.id)return;const t=this.notifications[e.id];t&&t.onshow&&t.onshow()}))}handleNotificationClick(e){var t,n,r,i,o;return __awaiter$1$1(this,void 0,void 0,(function*(){if(!e.action&&(null===(t=this.notificationsSettings)||void 0===t?void 0:t.defaultClick)&&this.notificationsSettings.defaultClick(this.coreGlue,e.definition),e.action&&(null===(r=null===(n=this.notificationsSettings)||void 0===n?void 0:n.actionClicks)||void 0===r?void 0:r.some((t=>t.action===e.action)))){(null===(o=null===(i=this.notificationsSettings)||void 0===i?void 0:i.actionClicks)||void 0===o?void 0:o.find((t=>t.action===e.action))).handler(this.coreGlue,e.definition)}if(!e.id)return;const l=this.notifications[e.id];l&&l.onclick&&(l.onclick(),delete this.notifications[e.id])}))}handleNotificationRaised(e){return __awaiter$1$1(this,void 0,void 0,(function*(){this.registry.execute("notification-raised",e.notification)}))}handleNotificationClosed(e){return __awaiter$1$1(this,void 0,void 0,(function*(){this.registry.execute("notification-closed",e)}))}};const operations$5={getIntents:{name:"getIntents",resultDecoder:wrappedIntentsDecoder$1},findIntent:{name:"findIntent",dataDecoder:wrappedIntentFilterDecoder$1,resultDecoder:wrappedIntentsDecoder$1},raiseIntent:{name:"raiseIntent",dataDecoder:intentRequestDecoder$1,resultDecoder:intentResultDecoder$1},raise:{name:"raise",dataDecoder:raiseIntentRequestDecoder$1,resultDecoder:intentResultDecoder$1},filterHandlers:{name:"filterHandlers",dataDecoder:filterHandlersWithResolverConfigDecoder$1,resultDecoder:filterHandlersResultDecoder$1},getIntentsByHandler:{name:"getIntentsByHandler",dataDecoder:intentHandlerDecoder$1,resultDecoder:getIntentsResultDecoder$1}},GLUE42_FDC3_INTENTS_METHOD_PREFIX="Tick42.FDC3.Intents.",INTENTS_RESOLVER_INTEROP_PREFIX$1="T42.Intents.Resolver.Control.",INTENTS_RESOLVER_APP_NAME="intentsResolver",DEFAULT_RESOLVER_RESPONSE_TIMEOUT=6e4,ADDITIONAL_BRIDGE_OPERATION_TIMEOUT=3e4,INTENTS_RESOLVER_WIDTH$1=400,INTENTS_RESOLVER_HEIGHT$1=440,MAX_SET_TIMEOUT_DELAY=2147483647,DEFAULT_PICK_HANDLER_BY_TIMEOUT=9e4;let IntentsController$1=class{constructor(){this.myIntents=new Set,this.useIntentsResolverUI=!0,this.unregisterIntentPromises=[]}start(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){this.logger=e.logger.subLogger("intents.controller.web"),this.logger.trace("starting the web intents controller"),this.bridge=t.bridge,this.interop=e.interop,this.legacyIntentsController=t.legacyIntentsHelper,this.checkIfIntentsResolverIsEnabled(t.config);const n=this.toApi();this.logger.trace("no need for platform registration, attaching the intents property to glue and returning"),e.intents=n}))}handlePlatformShutdown(){this.myIntents=new Set,this.unregisterIntentPromises=[]}handleBridgeMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=intentsOperationTypesDecoder$1.runWithException(e.operation),n=operations$5[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),yield n.execute(r)}))}toApi(){return{raise:this.raise.bind(this),all:this.all.bind(this),addIntentListener:this.addIntentListener.bind(this),register:this.register.bind(this),find:this.find.bind(this),filterHandlers:this.filterHandlers.bind(this),getIntents:this.getIntentsByHandler.bind(this)}}raise(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=raiseRequestDecoder.runWithException(e),n="string"==typeof t?{intent:t}:t;yield Promise.all(this.unregisterIntentPromises);const r={intentRequest:n,resolverConfig:this.getResolverConfigByRequest({intentRequest:n})},i=yield this.isRaiseOperationSupported();if(!i.supported)return this.logger.warn(`${i.reason}. Invoking legacy raise method`),this.legacyIntentsController.raise(r,this.find.bind(this));this.logger.trace(`Sending raise request to the platform: ${JSON.stringify(e)} and method response timeout of ${this.intentResolverResponseTimeout}ms`);const o=n.waitUserResponseIndefinitely?MAX_SET_TIMEOUT_DELAY:(n.timeout||this.intentResolverResponseTimeout)+ADDITIONAL_BRIDGE_OPERATION_TIMEOUT;return yield this.bridge.send("intents",operations$5.raise,r,{methodResponseTimeoutMs:o,waitTimeoutMs:o})}))}getResolverConfigByRequest(e){var t,n,r,i;if(e.handlerFilter)return{enabled:"boolean"==typeof(null===(t=e.handlerFilter)||void 0===t?void 0:t.openResolver)?null===(n=e.handlerFilter)||void 0===n?void 0:n.openResolver:this.useIntentsResolverUI,appName:this.intentsResolverAppName,waitResponseTimeout:(null===(r=e.handlerFilter)||void 0===r?void 0:r.timeout)||DEFAULT_PICK_HANDLER_BY_TIMEOUT};const o=(null===(i=e.intentRequest)||void 0===i?void 0:i.waitUserResponseIndefinitely)?MAX_SET_TIMEOUT_DELAY:this.intentResolverResponseTimeout;return{enabled:this.useIntentsResolverUI,appName:this.intentsResolverAppName,waitResponseTimeout:o}}isRaiseOperationSupported(){return __awaiter$1$1(this,void 0,void 0,(function*(){try{const{isSupported:e}=yield this.bridge.send("intents",systemOperations.operationCheck,{operation:"raise"});return{supported:e,reason:e?"":'The platform of this client is outdated and does not support "raise" operation'}}catch(e){return{supported:!1,reason:'The platform of this client is outdated and does not support "operationCheck" command'}}}))}all(){return __awaiter$1$1(this,void 0,void 0,(function*(){yield Promise.all(this.unregisterIntentPromises);return(yield this.bridge.send("intents",operations$5.getIntents,void 0)).intents}))}addIntentListener(e,t){if(AddIntentListenerDecoder.runWithException(e),"function"!=typeof t)throw new Error("Cannot add intent listener, because the provided handler is not a function!");let n;const r="string"==typeof e?e:e.intent,i=this.buildInteropMethodName(r);if(this.myIntents.has(r))throw new Error(`Intent listener for intent ${r} already registered!`);this.myIntents.add(r);const o={unsubscribe:()=>{this.myIntents.delete(r),n.then((()=>this.interop.unregister(i))).catch((e=>this.logger.trace(`Unregistration of a method with name ${i} failed with reason: ${e}`)))}};let l={};if("object"==typeof e){l=__rest$2$1(e,["intent"])}return n=this.interop.register({name:i,flags:{intent:l}},(e=>{if(this.myIntents.has(r)){const n=__rest$2$1(e,["_initialCallerId"]);return t(n)}})),n.catch((e=>{this.myIntents.delete(r),this.logger.warn(`Registration of a method with name ${i} failed with reason: ${e}`)})),o}register(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){if(AddIntentListenerDecoder.runWithException(e),"function"!=typeof t)throw new Error("Cannot add intent listener, because the provided handler is not a function!");yield Promise.all(this.unregisterIntentPromises);const n="string"==typeof e?e:e.intent,r=this.buildInteropMethodName(n);if(this.myIntents.has(n))throw new Error(`Intent listener for intent ${n} already registered!`);this.myIntents.add(n);let i={};if("object"==typeof e){i=__rest$2$1(e,["intent"])}try{yield this.interop.register({name:r,flags:{intent:i}},(e=>{if(this.myIntents.has(n)){const{_initialCallerId:n}=e,r=__rest$2$1(e,["_initialCallerId"]),i=this.interop.servers().find((e=>e.instance===n));return t(r,i)}}))}catch(e){throw this.myIntents.delete(n),new Error(`Registration of a method with name ${r} failed with reason: ${JSON.stringify(e)}`)}return{unsubscribe:()=>this.unsubscribeIntent(n)}}))}find(e){return __awaiter$1$1(this,void 0,void 0,(function*(){let t;if(void 0!==e){const n=findFilterDecoder.runWithException(e);"string"==typeof n?t={filter:{name:n}}:"object"==typeof n&&(t={filter:n})}yield Promise.all(this.unregisterIntentPromises);return(yield this.bridge.send("intents",operations$5.findIntent,t)).intents}))}checkIfIntentsResolverIsEnabled(e){var t,n,r,i,o;this.useIntentsResolverUI="boolean"!=typeof(null===(t=e.intents)||void 0===t?void 0:t.enableIntentsResolverUI)||e.intents.enableIntentsResolverUI,this.intentsResolverAppName=null!==(r=null===(n=e.intents)||void 0===n?void 0:n.intentsResolverAppName)&&void 0!==r?r:INTENTS_RESOLVER_APP_NAME,this.intentResolverResponseTimeout=null!==(o=null===(i=e.intents)||void 0===i?void 0:i.methodResponseTimeoutMs)&&void 0!==o?o:DEFAULT_RESOLVER_RESPONSE_TIMEOUT}clearUnregistrationPromise(e){this.unregisterIntentPromises=this.unregisterIntentPromises.filter((t=>t!==e))}buildInteropMethodName(e){return`${GLUE42_FDC3_INTENTS_METHOD_PREFIX}${e}`}unsubscribeIntent(e){this.myIntents.delete(e);const t=this.buildInteropMethodName(e),n=this.interop.unregister(t);this.unregisterIntentPromises.push(n),n.then((()=>{this.clearUnregistrationPromise(n)})).catch((e=>{this.logger.error(`Unregistration of a method with name ${t} failed with reason: ${e}`),this.clearUnregistrationPromise(n)}))}filterHandlers(e){return __awaiter$1$1(this,void 0,void 0,(function*(){if(handlersFilterDecoder$1.runWithException(e),this.checkIfAtLeastOneFilterIsPresent(e),e.openResolver&&!this.useIntentsResolverUI)throw new Error("Cannot resolve 'filterHandlers' request using Intents Resolver UI because it's globally disabled");const t=(e.timeout||DEFAULT_PICK_HANDLER_BY_TIMEOUT)+ADDITIONAL_BRIDGE_OPERATION_TIMEOUT,n={filterHandlersRequest:e,resolverConfig:this.getResolverConfigByRequest({handlerFilter:e})};return yield this.bridge.send("intents",operations$5.filterHandlers,n,{methodResponseTimeoutMs:t,waitTimeoutMs:t},{includeOperationCheck:!0})}))}checkIfAtLeastOneFilterIsPresent(e){const t="Provide at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'";if(!Object.keys(e).length)throw new Error(t);const{intent:n,resultType:r,contextTypes:i,applicationNames:o}=e,l=null==i?void 0:i.length,s=null==o?void 0:o.length;if(!(n||r||l||s))throw new Error(t)}getIntentsByHandler(e){return __awaiter$1$1(this,void 0,void 0,(function*(){intentHandlerDecoder$1.runWithException(e);return yield this.bridge.send("intents",operations$5.getIntentsByHandler,e,void 0,{includeOperationCheck:!0})}))}};const Glue42CoreMessageTypes$1={platformUnload:{name:"platformUnload"},transportSwitchRequest:{name:"transportSwitchRequest"},transportSwitchResponse:{name:"transportSwitchResponse"},getCurrentTransport:{name:"getCurrentTransport"},getCurrentTransportResponse:{name:"getCurrentTransportResponse"},checkPreferredLogic:{name:"checkPreferredLogic"},checkPreferredConnection:{name:"checkPreferredConnection"},checkPreferredLogicResponse:{name:"checkPreferredLogicResponse"},checkPreferredConnectionResponse:{name:"checkPreferredConnectionResponse"}},webPlatformTransportName$1="web-platform",latestFDC3Type="latest_fdc3_type",operations$4={addChannel:{name:"addChannel",dataDecoder:channelContextDecoder$1},getMyChannel:{name:"getMyChannel",resultDecoder:getMyChanelResultDecoder$1},getWindowIdsOnChannel:{name:"getWindowIdsOnChannel",dataDecoder:getWindowIdsOnChannelDataDecoder$1,resultDecoder:getWindowIdsOnChannelResultDecoder$1},getWindowIdsWithChannels:{name:"getWindowIdsWithChannels",dataDecoder:wrappedWindowWithChannelFilterDecoder$1,resultDecoder:getWindowIdsWithChannelsResultDecoder$1},joinChannel:{name:"joinChannel",dataDecoder:joinChannelDataDecoder$1}};let ChannelsController$1=class{constructor(){this.registry=lib$3$1(),this.GlueWebChannelsPrefix="___channel___",this.SubsKey="subs",this.ChangedKey="changed",this.replaySubscribe=(e,t)=>{this.get(t).then((t=>{if("object"==typeof t.data&&Object.keys(t.data).length){const n=this.createContextName(t.name);return this.contexts.subscribe(n,((t,n,r,i,o)=>{e(t.data,t,null==o?void 0:o.updaterId)}))}})).then((e=>{e&&"function"==typeof e&&e()})).catch((e=>this.logger.trace(e)))}}handlePlatformShutdown(){this.registry.clear()}addOperationsExecutors(){operations$4.getMyChannel.execute=this.handleGetMyChannel.bind(this),operations$4.joinChannel.execute=this.handleJoinChannel.bind(this)}start(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){this.logger=e.logger.subLogger("channels.controller.web"),this.logger.trace("starting the web channels controller"),this.contexts=e.contexts,this.addOperationsExecutors(),this.bridge=t.bridge,this.windowsController=t.windowsController,this.sessionController=t.sessionController,this.logger.trace("no need for platform registration, attaching the channels property to glue and returning");const n=this.toApi();e.channels=n}))}handleBridgeMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=channelsOperationTypesDecoder.runWithException(e.operation),n=operations$4[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),yield n.execute(r)}))}list(){return __awaiter$1$1(this,void 0,void 0,(function*(){const e=this.getAllChannelNames();return yield Promise.all(e.map((e=>this.get(e))))}))}my(){return this.current()}handleGetMyChannel(){return __awaiter$1$1(this,void 0,void 0,(function*(){const e=this.my();return e?{channel:e}:{}}))}join(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){const n=this.getAllChannelNames();channelNameDecoder(n).runWithException(e),optionalNonEmptyStringDecoder.runWithException(t),t&&t!==this.windowsController.my().id?yield this.bridge.send("channels",operations$4.joinChannel,{channel:e,windowId:t},void 0,{includeOperationCheck:!0}):yield this.switchToChannel(e)}))}handleJoinChannel({channel:e,windowId:t}){return this.join(e,t)}onChanged(e){return this.changed(e)}leave(){return __awaiter$1$1(this,void 0,void 0,(function*(){yield this.switchToChannel()}))}toApi(){const e={subscribe:this.subscribe.bind(this),subscribeFor:this.subscribeFor.bind(this),publish:this.publish.bind(this),all:this.all.bind(this),list:this.list.bind(this),get:this.get.bind(this),join:this.join.bind(this),leave:this.leave.bind(this),current:this.current.bind(this),my:this.my.bind(this),changed:this.changed.bind(this),onChanged:this.onChanged.bind(this),add:this.add.bind(this),getMy:this.getMy.bind(this),getWindowsOnChannel:this.getWindowsOnChannel.bind(this),getWindowsWithChannels:this.getWindowsWithChannels.bind(this)};return Object.freeze(e)}createContextName(e){return`${this.GlueWebChannelsPrefix}${e}`}getAllChannelNames(){return this.contexts.all().filter((e=>e.startsWith(this.GlueWebChannelsPrefix))).map((e=>e.replace(this.GlueWebChannelsPrefix,"")))}unsubscribe(){this.unsubscribeFunc&&(this.unsubscribeFunc(),this.unsubscribeFunc=void 0)}switchToChannel(e){return __awaiter$1$1(this,void 0,void 0,(function*(){if(this.unsubscribe(),this.currentChannelName=e,void 0!==e){const t=this.createContextName(e);this.unsubscribeFunc=yield this.contexts.subscribe(t,((e,t,n,r,i)=>{this.registry.execute(this.SubsKey,e.data,e,null==i?void 0:i.updaterId)}))}this.registry.execute(this.ChangedKey,e),this.sessionController.setWindowData({currentName:e},"channels")}))}updateData(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){const n=this.createContextName(e),r=this.getFDC3Type(t);if(this.contexts.setPathSupported){const e=Object.keys(t).map((e=>({path:`data.${e}`,value:t[e]})));r&&e.push({path:latestFDC3Type,value:r}),yield this.contexts.setPaths(n,e)}else r&&(t[latestFDC3Type]=r),yield this.contexts.update(n,{data:t})}))}getFDC3Type(e){const t=Object.keys(e).filter((e=>0===e.indexOf("fdc3_")));if(0!==t.length){if(t.length>1)throw new Error("FDC3 does not support updating of multiple context keys");return t[0].split("_").slice(1).join("_")}}subscribe(e){if("function"!=typeof e)throw new Error("Cannot subscribe to channels, because the provided callback is not a function!");const t=this.current();return t&&this.replaySubscribe(e,t),this.registry.add(this.SubsKey,e)}subscribeFor(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){const n=this.getAllChannelNames();if(channelNameDecoder(n).runWithException(e),"function"!=typeof t)throw new Error(`Cannot subscribe to channel ${e}, because the provided callback is not a function!`);const r=this.createContextName(e);return this.contexts.subscribe(r,((e,n,r,i,o)=>{t(e.data,e,null==o?void 0:o.updaterId)}))}))}publish(e,t){if("object"!=typeof e)throw new Error("Cannot publish to channel, because the provided data is not an object!");if(void 0!==t){const n=this.getAllChannelNames();return channelNameDecoder(n).runWithException(t),this.updateData(t,e)}if(void 0===this.currentChannelName)throw new Error("Cannot publish to channel, because not joined to a channel!");return this.updateData(this.currentChannelName,e)}all(){return __awaiter$1$1(this,void 0,void 0,(function*(){return this.getAllChannelNames()}))}get(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=this.getAllChannelNames();channelNameDecoder(t).runWithException(e);const n=this.createContextName(e),r=yield this.contexts.get(n);if(r.latest_fdc3_type){const e=__rest$2$1(r,["latest_fdc3_type"]);return Object.assign({},e)}return r}))}current(){return this.currentChannelName}changed(e){if("function"!=typeof e)throw new Error("Cannot subscribe to channel changed, because the provided callback is not a function!");return this.registry.add(this.ChangedKey,e)}add(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=channelContextDecoder$1.runWithException(e);if(this.getAllChannelNames().includes(t.name))throw new Error("There's an already existing channel with such name");return yield this.bridge.send("channels",operations$4.addChannel,t),t}))}getMy(){return __awaiter$1$1(this,void 0,void 0,(function*(){if(this.currentChannelName)return this.get(this.currentChannelName)}))}getWindowsOnChannel(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=this.getAllChannelNames();channelNameDecoder(t).runWithException(e);const{windowIds:n}=yield this.bridge.send("channels",operations$4.getWindowIdsOnChannel,{channel:e},void 0,{includeOperationCheck:!0});return n.reduce(((e,t)=>{const n=this.windowsController.findById(t);return n?[...e,n]:e}),[])}))}getWindowsWithChannels(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=void 0!==e?{filter:windowWithChannelFilterDecoder$1.runWithException(e)}:{},{windowIdsWithChannels:n}=yield this.bridge.send("channels",operations$4.getWindowIdsWithChannels,t,void 0,{includeOperationCheck:!0}),r=n.reduce(((e,{application:t,channel:n,windowId:r})=>{const i=this.windowsController.findById(r);return i?[...e,{application:t,channel:n,window:i}]:e}),[]);return r}))}};const operations$3={getEnvironment:{name:"getEnvironment",resultDecoder:anyDecoder$1},getBase:{name:"getBase",resultDecoder:anyDecoder$1},platformShutdown:{name:"platformShutdown"}};let SystemController$1=class{start(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){this.bridge=t.bridge,this.ioc=t,this.addOperationsExecutors(),yield this.setEnvironment()}))}handleBridgeMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=systemOperationTypesDecoder$1.runWithException(e.operation),n=operations$3[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),yield n.execute(r)}))}processPlatformShutdown(){return __awaiter$1$1(this,void 0,void 0,(function*(){Object.values(this.ioc.controllers).forEach((e=>e.handlePlatformShutdown?e.handlePlatformShutdown():null)),this.ioc.preferredConnectionController.stop(),this.ioc.eventsDispatcher.stop(),yield this.bridge.stop()}))}setEnvironment(){return __awaiter$1$1(this,void 0,void 0,(function*(){const e=yield this.bridge.send("system",operations$3.getEnvironment,void 0),t=yield this.bridge.send("system",operations$3.getBase,void 0),n=window.glue42core||window.iobrowser,r=window.glue42core?"glue42core":"iobrowser",i=Object.assign({},n,t,{environment:e});window[r]=Object.freeze(i)}))}addOperationsExecutors(){operations$3.platformShutdown.execute=this.processPlatformShutdown.bind(this)}},Notification$1=class{constructor(e,t){this.onclick=()=>{},this.onshow=()=>{},this.id=t,this.badge=e.badge,this.body=e.body,this.data=e.data,this.dir=e.dir,this.icon=e.icon,this.image=e.image,this.lang=e.lang,this.renotify=e.renotify,this.requireInteraction=e.requireInteraction,this.silent=e.silent,this.tag=e.tag,this.timestamp=e.timestamp,this.vibrate=e.vibrate,this.title=e.title,this.clickInterop=e.clickInterop,this.actions=e.actions,this.focusPlatformOnDefaultClick=e.focusPlatformOnDefaultClick,this.severity=e.severity,this.showToast=e.showToast,this.showInPanel=e.showInPanel,this.state=e.state}};oneOf$1$1(constant$1$1("clientHello"));const extensionConfigDecoder=object$1$1({widget:object$1$1({inject:boolean$1$1()})}),operations$2={clientHello:{name:"clientHello",resultDecoder:extensionConfigDecoder}};class ExtController{constructor(){this.channels=[],this.unsubFuncs=[],this.contentCommands={widgetVisualizationPermission:{name:"widgetVisualizationPermission",handle:this.handleWidgetVisualizationPermission.bind(this)},changeChannel:{name:"changeChannel",handle:this.handleChangeChannel.bind(this)}}}handlePlatformShutdown(){this.unsubFuncs.forEach((e=>e())),this.channels=[],this.unsubFuncs=[]}start(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){this.logger=e.logger.subLogger("extension.controller.web"),this.windowId=t.publicWindowId,this.logger.trace("starting the extension web controller"),this.bridge=t.bridge,this.channelsController=t.channelsController,this.eventsDispatcher=t.eventsDispatcher;try{yield this.registerWithPlatform()}catch(e){return}this.channels=yield this.channelsController.list();const n=this.eventsDispatcher.onContentMessage(this.handleContentMessage.bind(this)),r=this.channelsController.onChanged((e=>{this.eventsDispatcher.sendContentMessage({command:"channelChange",newChannel:e})}));this.unsubFuncs.push(n),this.unsubFuncs.push(r)}))}handleBridgeMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){}))}handleContentMessage(e){if(!e||"string"!=typeof e.command)return;const t=this.contentCommands[e.command];t&&t.handle(e)}registerWithPlatform(){return __awaiter$1$1(this,void 0,void 0,(function*(){this.logger.trace("registering with the platform"),this.config=yield this.bridge.send("extension",operations$2.clientHello,{windowId:this.windowId}),this.logger.trace("the platform responded to the hello message with a valid extension config")}))}handleWidgetVisualizationPermission(){var e;return __awaiter$1$1(this,void 0,void 0,(function*(){if(!(null===(e=this.config)||void 0===e?void 0:e.widget.inject))return this.eventsDispatcher.sendContentMessage({command:"permissionResponse",allowed:!1});const t=this.channels.find((e=>e.name===this.channelsController.my()));this.eventsDispatcher.sendContentMessage({command:"permissionResponse",allowed:!0,channels:this.channels,currentChannel:t})}))}handleChangeChannel(e){return __awaiter$1$1(this,void 0,void 0,(function*(){"no-channel"!==e.name?yield this.channelsController.join(e.name):yield this.channelsController.leave()}))}}class EventsDispatcher{constructor(e){this.config=e,this.registry=lib$3$1(),this.glue42EventName="Glue42",this.events={notifyStarted:{name:"notifyStarted",handle:this.handleNotifyStarted.bind(this)},contentInc:{name:"contentInc",handle:this.handleContentInc.bind(this)},requestGlue:{name:"requestGlue",handle:this.handleRequestGlue.bind(this)}}}stop(){window.removeEventListener(this.glue42EventName,this._handleMessage)}start(e){this.glue=e,this.wireCustomEventListener(),this.announceStarted()}sendContentMessage(e){this.send("contentOut","glue42core",e)}onContentMessage(e){return this.registry.add("content-inc",e)}wireCustomEventListener(){this._handleMessage=this.handleMessage.bind(this),window.addEventListener(this.glue42EventName,this._handleMessage)}handleMessage(e){var t;const n=e.detail,r=null!==(t=null==n?void 0:n.glue42)&&void 0!==t?t:null==n?void 0:n.glue42core;if(!r)return;const i=r.event,o=this.events[i];o&&o.handle(r.message)}announceStarted(){this.send("start","glue42")}handleRequestGlue(){this.config.exposeAPI?this.send("requestGlueResponse","glue42",{glue:this.glue}):this.send("requestGlueResponse","glue42",{error:"Will not give access to the underlying Glue API, because it was explicitly denied upon initialization."})}handleNotifyStarted(){this.announceStarted()}handleContentInc(e){this.registry.execute("content-inc",e)}send(e,t,n){const r={};r[t]={event:e,message:n};const i=new CustomEvent(this.glue42EventName,{detail:r});window.dispatchEvent(i)}}let PreferredConnectionController$1=class{constructor(e){this.coreGlue=e,this.transactionTimeout=15e3,this.transactionLocks={},this.reconnectCounter=0,this.logger=this.coreGlue.logger.subLogger("web.preferred.connection.controller")}stop(){this.webPlatformMessagesUnsubscribe&&this.webPlatformMessagesUnsubscribe()}start(e){return __awaiter$1$1(this,void 0,void 0,(function*(){if(e.isPlatformInternal)return void this.logger.trace("This is an internal client to the platform, skipping all client preferred communication logic.");if(!(this.coreGlue.connection.transport.name()===webPlatformTransportName$1))throw new Error("Cannot initiate the Glue Web Bridge, because the initial connection was not handled by a Web Platform transport.");if(!this.coreGlue.connection.transport.isPreferredActivated)return void this.logger.trace("The platform of this client was configured without a preferred connection, skipping the rest of the initialization.");this.webPlatformTransport=this.coreGlue.connection.transport,this.webPlatformMessagesUnsubscribe=this.webPlatformTransport.onMessage(this.handleWebPlatformMessage.bind(this));const t=yield this.getCurrentPlatformTransportState();yield this.checkSwitchTransport(t)}))}handleWebPlatformMessage(e){if("string"==typeof e)return;const t=this.coreGlue.connection.transport.name()===webPlatformTransportName$1,n=e.type,r=e.args,i=e.transactionId;return n===Glue42CoreMessageTypes$1.transportSwitchRequest.name?this.handleTransportSwitchRequest(r,i):n!==Glue42CoreMessageTypes$1.platformUnload.name||t?n===Glue42CoreMessageTypes$1.getCurrentTransportResponse.name?this.handleGetCurrentTransportResponse(r,i):n===Glue42CoreMessageTypes$1.checkPreferredLogic.name?this.handleCheckPreferredLogic(i):n===Glue42CoreMessageTypes$1.checkPreferredConnection.name?this.handleCheckPreferredConnection(r,i):void 0:this.handlePlatformUnload()}reEstablishPlatformPort(){return __awaiter$1$1(this,void 0,void 0,(function*(){try{yield this.webPlatformTransport.connect()}catch(e){if(this.logger.trace(`Error when re-establishing port connection to the platform: ${JSON.stringify(e)}`),--this.reconnectCounter,this.reconnectCounter>0)return this.reEstablishPlatformPort();this.logger.warn("This client lost connection to the platform while connected to a preferred GW and was not able to re-connect to the platform.")}this.logger.trace("The connection to the platform was re-established, closing the connection to the web gateway."),this.reconnectCounter=0,this.webPlatformTransport.close();const e=yield this.getCurrentPlatformTransportState();yield this.checkSwitchTransport(e)}))}checkSwitchTransport(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=this.coreGlue.connection.transport.name();if(t===e.transportName)return void this.logger.trace("A check switch was requested, but the platform transport and my transport are identical, no switch is necessary");this.logger.trace(`A check switch was requested and a transport switch is necessary, because this client is now on ${t}, but it should reconnect to ${JSON.stringify(e)}`);const n=yield this.coreGlue.connection.switchTransport(e);this.setConnected(),this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(n)}`)}))}getCurrentPlatformTransportState(){return __awaiter$1$1(this,void 0,void 0,(function*(){this.logger.trace("Requesting the current transport state of the platform.");const e=this.setTransaction(Glue42CoreMessageTypes$1.getCurrentTransport.name);this.sendPlatformMessage(Glue42CoreMessageTypes$1.getCurrentTransport.name,e.id);const t=yield e.lock;return this.logger.trace(`The platform responded with transport state: ${JSON.stringify(t)}`),t}))}setTransaction(e){const t={},n=shortidExports$1.generate(),r=new Promise(((r,i)=>{let o=!0;t.lift=e=>{o=!1,delete this.transactionLocks[n],r(e)},t.fail=e=>{o=!1,delete this.transactionLocks[n],i(e)},setTimeout((()=>{o&&(o=!1,this.logger.warn(`Transaction for operation: ${e} timed out.`),delete this.transactionLocks[n],i(`Transaction for operation: ${e} timed out.`))}),this.transactionTimeout)}));return t.lock=r,t.id=n,this.transactionLocks[n]=t,t}sendPlatformMessage(e,t,n){this.logger.trace(`Sending a platform message of type: ${e}, id: ${t} and args: ${JSON.stringify(n)}`),this.webPlatformTransport.sendObject({glue42core:{type:e,args:n,transactionId:t}})}handleTransportSwitchRequest(e,t){this.logger.trace(`Received a transport switch request with id: ${t} and data: ${JSON.stringify(e)}`),this.coreGlue.connection.switchTransport(e.switchSettings).then((e=>{this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(e)}`),this.setConnected(),this.sendPlatformMessage(Glue42CoreMessageTypes$1.transportSwitchResponse.name,t,{success:e.success})})).catch((e=>{this.logger.error(e),this.sendPlatformMessage(Glue42CoreMessageTypes$1.transportSwitchResponse.name,t,{success:!1})}))}handlePlatformUnload(){this.reconnectCounter=5,this.logger.trace("The platform was unloaded while I am connected to a preferred connection, re-establishing the port connection."),this.reEstablishPlatformPort()}handleGetCurrentTransportResponse(e,t){this.logger.trace(`Got a current transport response from the platform with id: ${t} and data: ${JSON.stringify(e)}`);const n=e.transportState,r=this.transactionLocks[t];null==r||r.lift(n)}handleCheckPreferredLogic(e){setTimeout((()=>this.sendPlatformMessage(Glue42CoreMessageTypes$1.checkPreferredLogicResponse.name,e)),0)}handleCheckPreferredConnection(e,t){const n=e.url;this.logger.trace(`Testing the possible connection to: ${n}`),this.checkPreferredConnection(n).then((e=>{this.logger.trace(`The connection to ${n} is possible`),this.sendPlatformMessage(Glue42CoreMessageTypes$1.checkPreferredConnectionResponse.name,t,e)})).catch((e=>{this.logger.trace(`The connection to ${n} is not possible`),this.sendPlatformMessage(Glue42CoreMessageTypes$1.checkPreferredConnectionResponse.name,t,{error:e})}))}checkPreferredConnection(e){return new Promise((t=>{const n=new WebSocket(e);n.onerror=()=>t({live:!1}),n.onopen=()=>{n.close(),t({live:!0})}}))}setConnected(){this.webPlatformTransport.manualSetReadyState()}};class LegacyIntentsHelper{constructor(e,t,n,r,i){this.bridge=t,this.interop=n,this.appManagerController=r,this.windowsController=i,this.intentsResolverResponsePromises={},this.logger=this.configureLogger(e)}raise(e,t){var n;return __awaiter$1$1(this,void 0,void 0,(function*(){const{intentRequest:r,resolverConfig:i}=e,o=(yield t(r.intent)).find((e=>e.name===r.intent));if(!o)throw new Error(`Intent with name ${r.intent} not found`);const{open:l,reason:s}=this.checkIfResolverShouldBeOpened(o,r,i);if(!l)return null===(n=this.logger)||void 0===n||n.trace(`Intent Resolver UI won't be used. Reason: ${s}`),this.invokeRaiseIntent(r);return yield this.raiseIntentWithResolverApp(e)}))}configureLogger(e){return e.subLogger("intents.legacy.helper.web")}raiseIntentWithResolverApp(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const{intentRequest:t,resolverConfig:n}=e;this.logger.trace(`Intents Resolver UI with app name ${n.appName} will be used`);const r=yield this.registerResponseMethod();this.logger.trace(`Registered interop method ${r}`);const i=yield this.openIntentResolverApplication(e,r);this.logger.trace(`Intents Resolver Instance with id ${i.id} opened`);const o=yield this.handleInstanceResponse(i.id),l="app"===o.type?{app:o.applicationName}:{instance:o.instanceId};this.logger.trace(`Intent handler chosen by the user: ${JSON.stringify(l)}`);return yield this.invokeRaiseIntent(Object.assign(Object.assign({},t),{target:l}))}))}handleInstanceResponse(e){var t;return __awaiter$1$1(this,void 0,void 0,(function*(){try{const{handler:n,intent:r}=yield this.intentsResolverResponsePromises[e].promise;return null===(t=this.logger)||void 0===t||t.trace(`Intent handler chosen for intent ${r}: ${JSON.stringify(n)}`),this.stopResolverInstance(e),n}catch(t){throw this.stopResolverInstance(e),new Error(t)}}))}invokeRaiseIntent(e){return this.bridge.send("intents",operations$5.raiseIntent,e)}registerResponseMethod(){return __awaiter$1$1(this,void 0,void 0,(function*(){const e=INTENTS_RESOLVER_INTEROP_PREFIX$1+shortid$2$1();return yield this.interop.register(e,this.resolverResponseHandler.bind(this)),e}))}openIntentResolverApplication(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){const{intentRequest:n,resolverConfig:r}=e,i=this.buildStartContext(n,t),o=yield this.buildStartOptions();this.logger.trace(`Starting Intents Resolver UI with context: ${JSON.stringify(i)} and options: ${o}`);const l=yield this.appManagerController.getApplication(r.appName).start(i,o);return this.logger.trace(`Intents Resolver instance with id ${l.id} opened`),this.subscribeOnInstanceStopped(l),this.createResponsePromise(n.intent,l.id,t,r.waitResponseTimeout),l}))}cleanUpIntentResolverPromise(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=this.intentsResolverResponsePromises[e];if(!t)return;this.interop.unregister(t.methodName).catch((e=>this.logger.warn(e))),delete this.intentsResolverResponsePromises[e]}))}buildStartContext(e,t){return{intent:e,callerId:this.interop.instance.instance,methodName:t}}buildStartOptions(){return __awaiter$1$1(this,void 0,void 0,(function*(){const e=yield this.getTargetBounds();return{top:(e.height-INTENTS_RESOLVER_HEIGHT$1)/2+e.top,left:(e.width-INTENTS_RESOLVER_WIDTH$1)/2+e.left,width:INTENTS_RESOLVER_WIDTH$1,height:INTENTS_RESOLVER_HEIGHT$1}}))}getTargetBounds(){return __awaiter$1$1(this,void 0,void 0,(function*(){const e=(yield this.tryGetWindowBasedBounds())||(yield this.tryGetWorkspaceBasedBounds());if(e)return this.logger.trace(`Opening Intents Resolver UI with bounds: ${JSON.stringify(e)}`),e;const t={top:window.screen.availTop||0,left:window.screen.availLeft||0,width:window.screen.width,height:window.screen.height};return this.logger.trace(`Opening Intents Resolver UI relative to my screen bounds: ${JSON.stringify(t)}`),t}))}tryGetWindowBasedBounds(){return __awaiter$1$1(this,void 0,void 0,(function*(){try{const e=yield this.windowsController.my().getBounds();return this.logger.trace(`Opening the resolver UI relative to my window bounds: ${JSON.stringify(e)}`),e}catch(e){this.logger.trace(`Failure to get my window bounds: ${JSON.stringify(e)}`)}}))}tryGetWorkspaceBasedBounds(){return __awaiter$1$1(this,void 0,void 0,(function*(){try{yield this.bridge.send("workspaces",systemOperations.operationCheck,{operation:"getWorkspaceWindowFrameBounds"});const e=(yield this.bridge.send("workspaces",systemOperations.getWorkspaceWindowFrameBounds,{itemId:this.windowsController.my().id})).bounds;return this.logger.trace(`Opening the resolver UI relative to my workspace frame window bounds: ${JSON.stringify(e)}`),e}catch(e){this.logger.trace(`Failure to get my workspace frame window bounds: ${JSON.stringify(e)}`)}}))}subscribeOnInstanceStopped(e){const{application:t}=e,n=t.onInstanceStopped((r=>{if(r.id!==e.id)return;const i=this.intentsResolverResponsePromises[r.id];if(!i)return n();i.reject(`Cannot resolve raised intent "${i.intent}" - User closed ${t.name} app without choosing an intent handler`),this.cleanUpIntentResolverPromise(r.id),n()}))}createResponsePromise(e,t,n,r){let i=()=>{},o=()=>{};const l=PromisePlus$1$1(((e,t)=>{i=e,o=t}),r,`Timeout of ${r}ms hit waiting for the user to choose a handler for intent ${e}`);this.intentsResolverResponsePromises[t]={intent:e,resolve:i,reject:o,promise:l,methodName:n}}resolverResponseHandler(e,t){const n=intentResolverResponseDecoder.run(e),r=t.instance;if(n.ok)return this.logger.trace(`Intent Resolver instance with id ${r} send a valid response: ${JSON.stringify(n.result)}`),this.intentsResolverResponsePromises[r].resolve(n.result);this.logger.trace(`Intent Resolver instance with id ${r} sent an invalid response. Error: ${JSON.stringify(n.error)}`),this.intentsResolverResponsePromises[r].reject(n.error.message),this.stopResolverInstance(r)}stopResolverInstance(e){const t=this.appManagerController.getInstances().find((t=>t.id===e));t&&t.stop().catch((e=>this.logger.error(e)))}checkIfIntentHasMoreThanOneHandler(e,t){return"object"!=typeof t.target&&(t.handlers?t.handlers.length>1:e.handlers.length>1)}checkIfResolverShouldBeOpened(e,t,n){if(!n.enabled)return{open:!1,reason:"Intent Resolver is disabled. Raising intent to first found handler"};if(!this.appManagerController.getApplication(n.appName))return{open:!1,reason:`Application with name ${n.appName} not found`};return this.checkIfIntentHasMoreThanOneHandler(e,t)?{open:!0}:{open:!1,reason:"Raised intent has only one handler"}}}const operations$1={getCurrent:{name:"getCurrent",resultDecoder:simpleThemeResponseDecoder$1},list:{name:"list",resultDecoder:allThemesResponseDecoder$1},select:{name:"select",dataDecoder:selectThemeConfigDecoder$1}};let ThemesController$1=class{constructor(){this.registry=lib$3$1(),this.activeThemeSubs=0}start(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){this.logger=e.logger.subLogger("themes.controller.web"),this.logger.trace("starting the web themes controller"),this.bridge=t.bridge;const n=this.toApi();e.themes=n,this.logger.trace("themes are ready")}))}handlePlatformShutdown(){var e;this.registry.clear(),this.activeThemeSubs=0,null===(e=this.themesSubscription)||void 0===e||e.close(),delete this.themesSubscription}handleBridgeMessage(){return __awaiter$1$1(this,void 0,void 0,(function*(){}))}toApi(){const e={getCurrent:this.getCurrent.bind(this),list:this.list.bind(this),select:this.select.bind(this),onChanged:this.onChanged.bind(this)};return Object.freeze(e)}getCurrent(){return __awaiter$1$1(this,void 0,void 0,(function*(){return(yield this.bridge.send("themes",operations$1.getCurrent,void 0,void 0,{includeOperationCheck:!0})).theme}))}list(){return __awaiter$1$1(this,void 0,void 0,(function*(){return(yield this.bridge.send("themes",operations$1.list,void 0,void 0,{includeOperationCheck:!0})).themes}))}select(e){return __awaiter$1$1(this,void 0,void 0,(function*(){nonEmptyStringDecoder$3.runWithException(e),yield this.bridge.send("themes",operations$1.select,{name:e},void 0,{includeOperationCheck:!0})}))}onChanged(e){return __awaiter$1$1(this,void 0,void 0,(function*(){if("function"!=typeof e)throw new Error("onChanged requires a callback of type function");const t=this.themesSubscription?Promise.resolve():this.configureThemeSubscription();yield t,++this.activeThemeSubs;const n=this.registry.add("on-theme-change",e);return()=>this.themeUnsub(n)}))}configureThemeSubscription(){return __awaiter$1$1(this,void 0,void 0,(function*(){this.themesSubscription||(this.themesSubscription=yield this.bridge.createNotificationsSteam(),this.themesSubscription.onData((e=>{const t=e.data,n=simpleThemeResponseDecoder$1.run(t);if(!n.ok)return void this.logger.warn(`Received invalid theme data on the theme event stream: ${JSON.stringify(n.error)}`);const r=n.result;this.registry.execute("on-theme-change",r.theme)})),this.themesSubscription.onClosed((()=>{this.logger.warn("The Themes interop stream was closed, no theme changes notifications will be received"),this.registry.clear(),this.activeThemeSubs=0,delete this.themesSubscription})))}))}themeUnsub(e){var t;e(),--this.activeThemeSubs,this.activeThemeSubs||(null===(t=this.themesSubscription)||void 0===t||t.close(),delete this.themesSubscription)}},SessionStorageController$1=class{constructor(){this.sessionStorage=window.sessionStorage}get allNamespaces(){return[{namespace:this.windowNamespace,defaultValue:{}}]}configure(e){this.windowId=e.windowId,this.allNamespaces.forEach((({namespace:e,defaultValue:t})=>{this.sessionStorage.getItem(e)||this.sessionStorage.setItem(e,JSON.stringify(t))}))}get windowNamespace(){return`io_connect_window_${this.windowId}`}getWindowData(){return JSON.parse(this.sessionStorage.getItem(this.windowNamespace))}setWindowData(e,t){const n=this.getWindowData();n[t]=e,this.sessionStorage.setItem(this.windowNamespace,JSON.stringify(n))}};const operations={clear:{name:"clear",dataDecoder:basePrefsConfigDecoder$1},clearAll:{name:"clearAll"},get:{name:"get",dataDecoder:basePrefsConfigDecoder$1,resultDecoder:getPrefsResultDecoder$1},getAll:{name:"getAll",resultDecoder:getAllPrefsResultDecoder$1},set:{name:"set",dataDecoder:changePrefsDataDecoder$1},update:{name:"update",dataDecoder:changePrefsDataDecoder$1},prefsChanged:{name:"prefsChanged",dataDecoder:getPrefsResultDecoder$1},prefsHello:{name:"prefsHello",resultDecoder:prefsHelloSuccessDecoder$1}};let PrefsController$1=class{constructor(){this.registry=lib$3$1()}handlePlatformShutdown(){this.registry.clear()}start(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){this.logger=e.logger.subLogger("prefs.controller.web"),this.logger.trace("starting the web prefs controller"),this.addOperationsExecutors(),this.bridge=t.bridge,this.config=t.config,this.appManagerController=t.appManagerController;try{const e=yield this.bridge.send("prefs",operations.prefsHello,void 0,void 0,{includeOperationCheck:!0});this.platformAppName=e.platform.app}catch(e){return void this.logger.warn("The platform of this client is outdated and does not support Prefs API.")}this.logger.trace("no need for platform registration, attaching the prefs property to glue and returning");const n=this.toApi();e.prefs=n}))}handleBridgeMessage(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=prefsOperationTypesDecoder$1.runWithException(e.operation),n=operations[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),yield n.execute(r)}))}addOperationsExecutors(){operations.prefsChanged.execute=this.handleOnChanged.bind(this)}toApi(){return{clear:this.clear.bind(this),clearAll:this.clearAll.bind(this),clearFor:this.clearFor.bind(this),get:this.get.bind(this),getAll:this.getAll.bind(this),set:this.set.bind(this),setFor:this.setFor.bind(this),subscribe:this.subscribe.bind(this),subscribeFor:this.subscribeFor.bind(this),update:this.update.bind(this),updateFor:this.updateFor.bind(this)}}clear(){return __awaiter$1$1(this,void 0,void 0,(function*(){const e=this.getMyAppName();yield this.clearFor(e)}))}clearAll(){return __awaiter$1$1(this,void 0,void 0,(function*(){yield this.bridge.send("prefs",operations.clearAll,void 0,void 0,{includeOperationCheck:!0})}))}clearFor(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=nonEmptyStringDecoder$3.runWithException(e);yield this.bridge.send("prefs",operations.clear,{app:t},void 0,{includeOperationCheck:!0})}))}get(e){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=null==e?this.getMyAppName():nonEmptyStringDecoder$3.runWithException(e),{prefs:n}=yield this.bridge.send("prefs",operations.get,{app:t},void 0,{includeOperationCheck:!0});return n}))}getAll(){return __awaiter$1$1(this,void 0,void 0,(function*(){return yield this.bridge.send("prefs",operations.getAll,void 0,void 0,{includeOperationCheck:!0})}))}set(e,t){var n;return __awaiter$1$1(this,void 0,void 0,(function*(){const r=optional$1$1(basePrefsConfigDecoder$1).runWithException(t),i=null!==(n=null==r?void 0:r.app)&&void 0!==n?n:this.getMyAppName();yield this.setFor(i,e)}))}setFor(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){const n=nonEmptyStringDecoder$3.runWithException(e),r=object$1$1().runWithException(t);yield this.bridge.send("prefs",operations.set,{app:n,data:r},void 0,{includeOperationCheck:!0})}))}subscribe(e){const t=this.getMyAppName();return this.subscribeFor(t,e)}subscribeFor(e,t){const n=nonEmptyStringDecoder$3.runWithException(e),r=this.appManagerController.getApplications();if(!(n===this.platformAppName||r.some((e=>e.name===n))))throw new Error(`The provided app name "${e}" is not valid.`);if("function"!=typeof t)throw new Error("Cannot subscribe to prefs, because the provided callback is not a function!");const i=this.getSubscriptionKey(n);return this.get(n).then(t),this.registry.add(i,t)}update(e,t){var n;return __awaiter$1$1(this,void 0,void 0,(function*(){const r=optional$1$1(basePrefsConfigDecoder$1).runWithException(t),i=null!==(n=null==r?void 0:r.app)&&void 0!==n?n:this.getMyAppName();yield this.updateFor(i,e)}))}updateFor(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){const n=nonEmptyStringDecoder$3.runWithException(e),r=object$1$1().runWithException(t);yield this.bridge.send("prefs",operations.update,{app:n,data:r},void 0,{includeOperationCheck:!0})}))}getMyAppName(){var e;const t=this.config.isPlatformInternal?this.platformAppName:null===(e=this.appManagerController.me)||void 0===e?void 0:e.application.name;if(!t)throw new Error("App Preferences operations can not be executed for windows that do not have app!");return t}getSubscriptionKey(e){return`prefs-changed-${e}`}handleOnChanged({prefs:e}){return __awaiter$1$1(this,void 0,void 0,(function*(){const t=this.getSubscriptionKey(e.app);this.registry.execute(t,e)}))}},IoC$3=class{constructor(){this.controllers={windows:this.windowsController,appManager:this.appManagerController,layouts:this.layoutsController,notifications:this.notificationsController,intents:this.intentsController,channels:this.channelsController,system:this.systemController,extension:this.extensionController,themes:this.themesController,prefs:this.prefsController}}get communicationId(){return this._communicationId}get publicWindowId(){return this._publicWindowId}get windowsController(){return this._windowsControllerInstance||(this._windowsControllerInstance=new WindowsController$1),this._windowsControllerInstance}get appManagerController(){return this._appManagerControllerInstance||(this._appManagerControllerInstance=new AppManagerController),this._appManagerControllerInstance}get layoutsController(){return this._layoutsControllerInstance||(this._layoutsControllerInstance=new LayoutsController$1),this._layoutsControllerInstance}get themesController(){return this._themesControllerInstance||(this._themesControllerInstance=new ThemesController$1),this._themesControllerInstance}get notificationsController(){return this._notificationsControllerInstance||(this._notificationsControllerInstance=new NotificationsController$1),this._notificationsControllerInstance}get intentsController(){return this._intentsControllerInstance||(this._intentsControllerInstance=new IntentsController$1),this._intentsControllerInstance}get legacyIntentsHelper(){return this._legacyIntentsHelperInstance||(this._legacyIntentsHelperInstance=new LegacyIntentsHelper(this._coreGlue.logger,this.bridge,this._coreGlue.interop,this.appManagerController,this.windowsController)),this._legacyIntentsHelperInstance}get systemController(){return this._systemControllerInstance||(this._systemControllerInstance=new SystemController$1),this._systemControllerInstance}get channelsController(){return this._channelsControllerInstance||(this._channelsControllerInstance=new ChannelsController$1),this._channelsControllerInstance}get prefsController(){return this._prefsControllerInstance||(this._prefsControllerInstance=new PrefsController$1),this._prefsControllerInstance}get extensionController(){return this._extensionController||(this._extensionController=new ExtController),this._extensionController}get eventsDispatcher(){return this._eventsDispatcher||(this._eventsDispatcher=new EventsDispatcher(this.config)),this._eventsDispatcher}get bridge(){return this._bridgeInstance||(this._bridgeInstance=new GlueBridge(this._coreGlue,this.communicationId)),this._bridgeInstance}get preferredConnectionController(){return this._preferredConnectionController||(this._preferredConnectionController=new PreferredConnectionController$1(this._coreGlue)),this._preferredConnectionController}get sessionController(){return this._sessionController||(this._sessionController=new SessionStorageController$1),this._sessionController}get config(){return this._webConfig}defineGlue(e){this._coreGlue=e,this._publicWindowId=e.connection.transport.publicWindowId;const t=window.glue42core||window.iobrowser;this._communicationId=e.connection.transport.communicationId||t.communicationId}defineConfig(e){this._webConfig=e}buildWebWindow(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){const n=new WebWindowModel(e,t,this.bridge),r=yield n.toApi();return{id:e,model:n,api:r}}))}buildNotification(e,t){return new Notification$1(e,t)}buildApplication(e,t){return __awaiter$1$1(this,void 0,void 0,(function*(){const n=new ApplicationModel(e,[],this.appManagerController).toApi(),r=t.map((e=>this.buildInstance(e,n)));return n.instances.push(...r),n}))}buildInstance(e,t){return new InstanceModel(e,this.bridge,t).toApi()}};var version$2$1="3.2.0";const createFactoryFunction=e=>t=>__awaiter$1$1(void 0,void 0,void 0,(function*(){if(window.glue42gd||window.iodesktop)return enterprise(t);const n=new IoC$3,r=parseConfig(t);checkSingleton();const i=yield PromiseWrap$1((()=>e(r,{version:version$2$1})),3e4,"Glue Web initialization timed out, because core didn't resolve"),o=i.logger.subLogger("web.main.controller");return n.defineGlue(i),n.sessionController.configure({windowId:i.interop.instance.instance}),yield n.preferredConnectionController.start(r),yield n.bridge.start(n.controllers),n.defineConfig(r),o.trace("the bridge has been started, initializing all controllers"),yield Promise.all(Object.values(n.controllers).map((e=>e.start(i,n)))),o.trace("all controllers reported started, starting all additional libraries"),yield Promise.all(r.libraries.map((e=>e(i,r)))),o.trace("all libraries were started"),n.eventsDispatcher.start(i),o.trace("start event dispatched, glue is ready, returning it"),i}));var extendStatics$1=function(e,t){return extendStatics$1=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},extendStatics$1(e,t)};function __extends$1(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}extendStatics$1(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var __assign$4=function(){return __assign$4=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==s[0]&&2!==s[0])){l=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&"/"!==e[0]?"/"+e:e}function getMetricValueByType$1(e){return"timestamp"===getMetricTypeByValue$1(e)?Date.now():publishNestedComposite$1(e.value)}function publishNestedComposite$1(e){return"object"!=typeof e?e:Object.keys(e).reduce((function(t,n){var r=e[n];return"object"==typeof r&&r.constructor!==Date?t[n]=publishNestedComposite$1(r):r.constructor===Date?t[n]=new Date(r).getTime():r.constructor===Boolean?t[n]=r.toString():t[n]=r,t}),{})}function flatten$1(e){return e.reduce((function(e,t){return e.concat(Array.isArray(t)?flatten$1(t):t)}),[])}function getHighestState$1(e){return e.sort((function(e,t){return e.state?t.state?t.state-e.state:-1:1}))[0]}function aggregateDescription$1(e){var t="";return e.forEach((function(e,n,r){var i=e.path.join(".");n===r.length-1?t+=i+"."+e.name+": "+e.description:t+=i+"."+e.name+": "+e.description+","})),t.length>100?t.slice(0,100)+"...":t}function composeMsgForRootStateMetric$1(e){var t=flatten$1(e.root.getAggregateState()),n=getHighestState$1(t);return{description:aggregateDescription$1(t),value:n.state}}function gw3$1(e,t){var n,r,i=this;if(!e||"object"!=typeof e)throw new Error("Connection is required parameter");var o=function(e){l(e.root)},l=function(e){s(e),e.metrics.forEach((function(e){a(e)})),e.subSystems.forEach((function(e){l(e)}))},s=function(e){return __awaiter$6(i,void 0,void 0,(function(){var t,i;return __generator$1(this,(function(o){switch(o.label){case 0:return void 0===e.parent?[2]:[4,n];case 1:return o.sent(),t={name:normalizeMetricName$1(e.path.join("/")+"/"+e.name+"/State"),type:"object",composite:{Description:{type:"string",description:""},Value:{type:"number",description:""}},description:"System state",context:{}},i={type:"define",metrics:[t]},r.send(i),[2]}}))}))},a=function(e){return __awaiter$6(i,void 0,void 0,(function(){var t,i,o;return __generator$1(this,(function(l){switch(l.label){case 0:return t=c(e),[4,n];case 1:return l.sent(),i=serializeMetric$1(t),o={type:"define",metrics:[i]},r.send(o),void 0!==t.value&&u(t),[2]}}))}))},u=function(e){if(h()){var t=getMetricValueByType$1(e),n={type:"publish",values:[{name:normalizeMetricName$1(e.path.join("/")+"/"+e.name),value:t,timestamp:Date.now()}]};return r.sendFireAndForget(n)}return Promise.resolve()},c=function(e){var t=__assign$4({},e);return"object"==typeof e.value&&null!==e.value&&(t.value=__assign$4({},e.value)),t},h=function(){var e;try{return(null!==(e=t.canUpdateMetric)&&void 0!==e?e:function(){return!0})()}catch(e){return!0}};return{init:function(i){var l;n=new Promise((function(e){l=e})),(r=e.domain("metrics")).onJoined((function(e){!e&&l&&(l(),l=void 0);var t={type:"define",metrics:[{name:"/State",type:"object",composite:{Description:{type:"string",description:""},Value:{type:"number",description:""}},description:"System state",context:{}}]};r.send(t),e&&o(i)})),r.join({system:t.system,service:t.service,instance:t.instance})},createSystem:s,updateSystem:function(t,o){return __awaiter$6(i,void 0,void 0,(function(){var i,l,s;return __generator$1(this,(function(a){switch(a.label){case 0:return[4,n];case 1:return a.sent(),i={type:"publish",values:[{name:normalizeMetricName$1(t.path.join("/")+"/"+t.name+"/State"),value:{Description:o.description,Value:o.state},timestamp:Date.now()}]},r.send(i),l=composeMsgForRootStateMetric$1(t),s={type:"publish",peer_id:e.peerId,values:[{name:"/State",value:{Description:l.description,Value:l.value},timestamp:Date.now()}]},r.send(s),[2]}}))}))},createMetric:a,updateMetric:function(e){return __awaiter$6(i,void 0,void 0,(function(){var t;return __generator$1(this,(function(r){switch(r.label){case 0:return t=c(e),[4,n];case 1:return r.sent(),u(t),[2]}}))}))}}}var Helpers$1={validate:function(e,t,n){if(null===e||"object"!=typeof e)throw new Error("Missing definition");if(null===t||"object"!=typeof t)throw new Error("Missing parent");if(null===n||"object"!=typeof n)throw new Error("Missing transport")}},BaseMetric$1=function(){function e(e,t,n,r,i){this.definition=e,this.system=t,this.transport=n,this.value=r,this.type=i,this.path=[],Helpers$1.validate(e,t,n),this.path=t.path.slice(0),this.path.push(t.name),this.name=e.name,this.description=e.description,n.createMetric(this)}return Object.defineProperty(e.prototype,"repo",{get:function(){var e;return null===(e=this.system)||void 0===e?void 0:e.repo},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return"".concat(this.system.path,"/").concat(name)},enumerable:!1,configurable:!0}),e.prototype.update=function(e){return this.value=e,this.transport.updateMetric(this)},e}(),NumberMetric$1=function(e){function t(t,n,r,i){return e.call(this,t,n,r,i,MetricTypes$1.NUMBER)||this}return __extends$1(t,e),t.prototype.incrementBy=function(e){this.update(this.value+e)},t.prototype.increment=function(){this.incrementBy(1)},t.prototype.decrement=function(){this.incrementBy(-1)},t.prototype.decrementBy=function(e){this.incrementBy(-1*e)},t}(BaseMetric$1),ObjectMetric$1=function(e){function t(t,n,r,i){return e.call(this,t,n,r,i,MetricTypes$1.OBJECT)||this}return __extends$1(t,e),t.prototype.update=function(e){return this.mergeValues(e),this.transport.updateMetric(this)},t.prototype.mergeValues=function(e){var t=this;return Object.keys(this.value).forEach((function(n){void 0!==e[n]&&(t.value[n]=e[n])}))},t}(BaseMetric$1),StringMetric$1=function(e){function t(t,n,r,i){return e.call(this,t,n,r,i,MetricTypes$1.STRING)||this}return __extends$1(t,e),t}(BaseMetric$1),TimestampMetric$1=function(e){function t(t,n,r,i){return e.call(this,t,n,r,i,MetricTypes$1.TIMESTAMP)||this}return __extends$1(t,e),t.prototype.now=function(){this.update(new Date)},t}(BaseMetric$1);function system$1(e,t,n,r,i){if(!t)throw new Error("Repository is required");if(!n)throw new Error("Transport is required");var o,l,s=n,a=e,u=i||"",c=t,h=r,d=function e(t){if(!t||!t.parent)return[];var n=e(t.parent);return n.push(t.name),n}(r),f={},p=(l="/",((o=d)&&o.length>0?o.join(l):"")+e),g=t.root,w=[],m=[];function v(e,t,n,r){var i={name:""};i="string"==typeof e?{name:e}:e;var o=m.filter((function(e){return e.name===i.name}));if(o.length>0){var l=o[0];if(l.type!==t)throw new Error("A metric named ".concat(i.name," is already defined with different type."));return void 0!==n&&l.update(n).catch((function(){})),l}var s=r(i);return m.push(s),s}var y={get name(){return a},get description(){return u},get repo(){return c},get parent(){return h},path:d,id:p,root:g,get subSystems(){return w},get metrics(){return m},subSystem:function(e,t){if(!e||0===e.length)throw new Error("name is required");var n=w.filter((function(t){return t.name===e}));if(n.length>0)return n[0];var r=system$1(e,c,s,y,t);return w.push(r),r},getState:function(){return f},setState:function(e,t){f={state:e,description:t},s.updateSystem(y,f)},stringMetric:function(e,t){return v(e,MetricTypes$1.STRING,t,(function(e){return new StringMetric$1(e,y,s,t)}))},timestampMetric:function(e,t){return v(e,MetricTypes$1.TIMESTAMP,t,(function(e){return new TimestampMetric$1(e,y,s,t)}))},objectMetric:function(e,t){return v(e,MetricTypes$1.OBJECT,t,(function(e){return new ObjectMetric$1(e,y,s,t)}))},numberMetric:function(e,t){return v(e,MetricTypes$1.NUMBER,t,(function(e){return new NumberMetric$1(e,y,s,t)}))},getAggregateState:function(){var e=[];return Object.keys(f).length>0&&e.push({name:a,path:d,state:f.state,description:f.description}),w.forEach((function(t){var n=t.getAggregateState();n.length>0&&e.push.apply(e,n)})),e}};return s.createSystem(y),y}var Repository$1=function(){function e(e,t){t.init(this),this.root=system$1("",this,t),this.addSystemMetrics(this.root,e.clickStream||void 0===e.clickStream)}return e.prototype.addSystemMetrics=function(e,t){if("undefined"!=typeof navigator&&e.stringMetric("UserAgent",navigator.userAgent),t&&"undefined"!=typeof document){var n=e.subSystem("ClickStream"),r=function(e){var t;if(e.target){var r=e.target,i=r&&null!==(t=r.getAttribute("class"))&&void 0!==t?t:"";n.objectMetric("LastBrowserEvent",{type:"click",timestamp:new Date,target:{className:i,id:r.id,type:"<"+r.tagName.toLowerCase()+">",href:r.href||""}})}};n.objectMetric("Page",{title:document.title,page:window.location.href}),document.addEventListener?document.addEventListener("click",r):document.attachEvent("onclick",r)}e.stringMetric("StartTime",(new Date).toString());var i=e.stringMetric("StartURL",""),o=e.stringMetric("AppName","");if("undefined"!=typeof window){if(void 0!==window.location){var l=window.location.href;i.update(l)}void 0!==window.glue42gd&&o.update(window.glue42gd.appName)}},e}(),NullProtocol$1=function(){function e(){}return e.prototype.init=function(e){},e.prototype.createSystem=function(e){return Promise.resolve()},e.prototype.updateSystem=function(e,t){return Promise.resolve()},e.prototype.createMetric=function(e){return Promise.resolve()},e.prototype.updateMetric=function(e){return Promise.resolve()},e}(),PerfTracker$1=function(){function e(e,t,n){this.api=e,this.lastCount=0,this.initialPublishTimeout=1e4,this.publishInterval=6e4,this.initialPublishTimeout=null!=t?t:this.initialPublishTimeout,this.publishInterval=null!=n?n:this.publishInterval,this.scheduleCollection(),this.system=this.api.subSystem("performance","Performance data published by the web application")}return e.prototype.scheduleCollection=function(){var e=this;setTimeout((function(){e.collect(),setInterval((function(){e.collect()}),e.publishInterval)}),this.initialPublishTimeout)},e.prototype.collect=function(){try{this.collectMemory(),this.collectEntries()}catch(e){}},e.prototype.collectMemory=function(){var e=window.performance.memory;this.system.stringMetric("memory",JSON.stringify({totalJSHeapSize:e.totalJSHeapSize,usedJSHeapSize:e.usedJSHeapSize}))},e.prototype.collectEntries=function(){var e=window.performance.getEntries();if(!(e.length<=this.lastCount)){this.lastCount=e.length;var t=e.map((function(e){return e.toJSON()}));this.system.stringMetric("entries",JSON.stringify(t))}},e}(),metrics$1=function(e){var t;t=e.connection&&"object"==typeof e.connection?gw3$1(e.connection,e):new NullProtocol$1;var n=new Repository$1(e,t).root;e.disableAutoAppSystem||(n=n.subSystem("App"));var r=addFAVSupport$1(n);return initPerf$1(r,e.pagePerformanceMetrics),r};function initPerf$1(e,t){var n,r;if("undefined"!=typeof window){var i=null===(r=null===(n=null===window||void 0===window?void 0:window.glue42gd)||void 0===n?void 0:n.metrics)||void 0===r?void 0:r.pagePerformanceMetrics;i&&(t=i),(null==t?void 0:t.enabled)&&new PerfTracker$1(e,t.initialPublishTimeout,t.publishInterval)}}function addFAVSupport$1(e){var t,n=e.subSystem("reporting"),r={name:"features"};return e.featureMetric=function(e,i,o){if(void 0===e||""===e)throw new Error("name is mandatory");if(void 0===i||""===i)throw new Error("action is mandatory");if(void 0===o||""===o)throw new Error("payload is mandatory");t?t.update({name:e,action:i,payload:o}):t=n.objectMetric(r,{name:e,action:i,payload:o})},e}var commonjsGlobal$2="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==global?global:"undefined"!=typeof self?self:{};function getDefaultExportFromCjs$2(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function createRegistry$3(e){if(e&&e.errorHandling&&"function"!=typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"==typeof e.errorHandling&&e.errorHandling,n={};function r(n,r){var i=n instanceof Error?n:new Error(n);if(t)t(i);else{var o='[ERROR] callback-registry: User callback for key "'+r+'" failed: '+i.stack;if(e)switch(e.errorHandling){case"log":return console.error(o);case"silent":return;case"throw":throw new Error(o)}console.error(o)}}return{add:function(e,t,i){var o=n[e];return o||(o=[],n[e]=o),o.push(t),i&&setTimeout((function(){i.forEach((function(i){var o;if(null===(o=n[e])||void 0===o?void 0:o.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(t){r(t,e)}}))}),0),function(){var r=n[e];r&&(0===(r=r.reduce((function(e,n,r){return n===t&&e.length===r||e.push(n),e}),[])).length?delete n[e]:n[e]=r)}},execute:function(e){for(var t=[],i=1;i0&&(o=i-n[n.length-1].time),n.push({name:e,time:i,diff:o})}s("start",l);var a={get startTime(){return l},get endTime(){return i},get period(){return o},stop:function(){return s("end",i=r()),o=i-l},mark:s,marks:n};return timers$1[e]=a,a}var WebSocketConstructor$1=Utils$1.isNode()?require("ws"):window.WebSocket,WS$1=function(){function e(e,t){if(this.startupTimer=timer$1("connection"),this._running=!0,this._registry=lib$1$1(),this.wsRequests=[],this.settings=e,this.logger=t,!this.settings.ws)throw new Error("ws is missing")}return e.prototype.onMessage=function(e){return this._registry.add("onMessage",e)},e.prototype.send=function(e,t){var n=this;return new Promise((function(t,r){n.waitForSocketConnection((function(){var i;try{null===(i=n.ws)||void 0===i||i.send(e),t()}catch(e){r(e)}}),r)}))},e.prototype.open=function(){var e=this;return this.logger.info("opening ws..."),this._running=!0,new Promise((function(t,n){e.waitForSocketConnection(t,n)}))},e.prototype.close=function(){return this._running=!1,this.ws&&this.ws.close(),Promise.resolve()},e.prototype.onConnectedChanged=function(e){return this._registry.add("onConnectedChanged",e)},e.prototype.name=function(){return this.settings.ws},e.prototype.reconnect=function(){var e;null===(e=this.ws)||void 0===e||e.close();var t=new PromiseWrapper$2;return this.waitForSocketConnection((function(){t.resolve()})),t.promise},e.prototype.waitForSocketConnection=function(e,t){var n;t=null!=t?t:function(){},this._running?1!==(null===(n=this.ws)||void 0===n?void 0:n.readyState)?(this.wsRequests.push({callback:e,failed:t}),this.wsRequests.length>1||this.openSocket()):e():t("wait for socket on ".concat(this.settings.ws," failed - socket closed by user"))},e.prototype.openSocket=function(e,t){return __awaiter$6(this,void 0,void 0,(function(){var n=this;return __generator$1(this,(function(r){switch(r.label){case 0:if(this.startupTimer.mark("opening-socket"),void 0===e&&(e=this.settings.reconnectInterval),void 0===t&&(t=this.settings.reconnectAttempts),void 0!==t){if(0===t)return this.notifyForSocketState("wait for socket on ".concat(this.settings.ws," failed - no more retries left")),[2];this.logger.debug("will retry ".concat(t," more times (every ").concat(e," ms)"))}r.label=1;case 1:return r.trys.push([1,3,,4]),[4,this.initiateSocket()];case 2:return r.sent(),this.startupTimer.mark("socket-initiated"),this.notifyForSocketState(),[3,4];case 3:return r.sent(),setTimeout((function(){var r=void 0===t?void 0:t-1;n.openSocket(e,r)}),e),[3,4];case 4:return[2]}}))}))},e.prototype.initiateSocket=function(){var e=this,t=new PromiseWrapper$2;return this.logger.debug("initiating ws to ".concat(this.settings.ws,"...")),this.ws=new WebSocketConstructor$1(this.settings.ws||""),this.ws.onerror=function(n){var r="";try{r=JSON.stringify(n)}catch(e){var i=new WeakSet;r=JSON.stringify(n,(function(e,t){if("object"==typeof t&&null!==t){if(i.has(t))return;i.add(t)}return t}))}t.reject("error"),e.notifyStatusChanged(!1,r)},this.ws.onclose=function(n){e.logger.info("ws closed ".concat(n)),t.reject("closed"),e.notifyStatusChanged(!1)},this.ws.onopen=function(){var n;e.startupTimer.mark("ws-opened"),e.logger.info("ws opened ".concat(null===(n=e.settings.identity)||void 0===n?void 0:n.application)),t.resolve(),e.notifyStatusChanged(!0)},this.ws.onmessage=function(t){e._registry.execute("onMessage",t.data)},t.promise},e.prototype.notifyForSocketState=function(e){this.wsRequests.forEach((function(t){e?t.failed&&t.failed(e):t.callback()})),this.wsRequests=[]},e.prototype.notifyStatusChanged=function(e,t){this._registry.execute("onConnectedChanged",e,t)},e}(),shortidExports$2={},shortid$1$1={get exports(){return shortidExports$2},set exports(e){shortidExports$2=e}},libExports$2={},lib$5={get exports(){return libExports$2},set exports(e){libExports$2=e}},seed$2=1;function getNextValue$2(){return(seed$2=(9301*seed$2+49297)%233280)/233280}function setSeed$1$1(e){seed$2=e}var randomFromSeed$1$1={nextValue:getNextValue$2,seed:setSeed$1$1},randomFromSeed$4=randomFromSeed$1$1,ORIGINAL$2="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-",alphabet$2$1,previousSeed$2,shuffled$2;function reset$2(){shuffled$2=!1}function setCharacters$2(e){if(e){if(e!==alphabet$2$1){if(e.length!==ORIGINAL$2.length)throw new Error("Custom alphabet for shortid must be "+ORIGINAL$2.length+" unique characters. You submitted "+e.length+" characters: "+e);var t=e.split("").filter((function(e,t,n){return t!==n.lastIndexOf(e)}));if(t.length)throw new Error("Custom alphabet for shortid must be "+ORIGINAL$2.length+" unique characters. These characters were not unique: "+t.join(", "));alphabet$2$1=e,reset$2()}}else alphabet$2$1!==ORIGINAL$2&&(alphabet$2$1=ORIGINAL$2,reset$2())}function characters$2(e){return setCharacters$2(e),alphabet$2$1}function setSeed$4(e){randomFromSeed$4.seed(e),previousSeed$2!==e&&(reset$2(),previousSeed$2=e)}function shuffle$2(){alphabet$2$1||setCharacters$2(ORIGINAL$2);for(var e,t=alphabet$2$1.split(""),n=[],r=randomFromSeed$4.nextValue();t.length>0;)r=randomFromSeed$4.nextValue(),e=Math.floor(r*t.length),n.push(t.splice(e,1)[0]);return n.join("")}function getShuffled$2(){return shuffled$2||(shuffled$2=shuffle$2())}function lookup$2(e){return getShuffled$2()[e]}function get$2(){return alphabet$2$1||ORIGINAL$2}var alphabet_1$2={get:get$2,characters:characters$2,seed:setSeed$4,lookup:lookup$2,shuffled:getShuffled$2},crypto$4="object"==typeof window&&(window.crypto||window.msCrypto),randomByte$2;randomByte$2=crypto$4&&crypto$4.getRandomValues?function(e){return crypto$4.getRandomValues(new Uint8Array(e))}:function(e){for(var t=[],n=0;n0&&(t+=generate$4(counter$2)),t+=generate$4(n)}var build_1$2=build$2,alphabet$6=alphabet_1$2;function isShortId$2(e){return!(!e||"string"!=typeof e||e.length<6)&&!new RegExp("[^"+alphabet$6.get().replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&")+"]").test(e)}var isValid$2=isShortId$2;!function(e){var t=alphabet_1$2,n=build_1$2,r=isValid$2,i=0;function o(){return n(i)}e.exports=o,e.exports.generate=o,e.exports.seed=function(n){return t.seed(n),e.exports},e.exports.worker=function(t){return i=t,e.exports},e.exports.characters=function(e){return void 0!==e&&t.characters(e),t.shuffled()},e.exports.isValid=r}(lib$5),shortid$1$1.exports=libExports$2;var shortid$4=getDefaultExportFromCjs$2(shortidExports$2);function domainSession$1(e,t,n,r,i){null==e&&(e="global"),r=r||["success"],i=i||["error"];var o,l=!1,s=!1,a=!1,u=lib$1$1();t.disconnected((function(){a=!1,n.debug("connection is down"),l=!1,s=!0,u.execute("onLeft",{disconnected:!0})})),t.loggedIn((function(){a=!0,s&&(n.debug("connection is now up - trying to reconnect..."),h(o))})),t.on("success",(function(e){return f(e)})),t.on("error",(function(e){return d(e)})),t.on("result",(function(e){return f(e)})),r&&r.forEach((function(e){t.on(e,(function(e){return f(e)}))})),i&&i.forEach((function(e){t.on(e,(function(e){return d(e)}))}));var c={};function h(t){return o=t,new Promise((function(r,i){if(l)r({});else{var o;if("global"===e)o=a?Promise.resolve({}):Promise.reject("not connected to gateway");else n.debug("joining domain ".concat(e)),o=g({type:"join",destination:e,domain:"global",options:t});o.then((function(){!function(){n.debug("did join "+e),l=!0;var t=s;s=!1,u.execute("onJoined",t)}(),r({})})).catch((function(t){n.debug("error joining "+e+" domain: "+JSON.stringify(t)),i(t)}))}}))}function d(t){if(e===t.domain){var n=t.request_id;if(n){var r=c[n];r&&r.error(t)}}}function f(t){if(t.domain===e){var n=t.request_id;if(n){var r=c[n];r&&r.success(t)}}}function p(){return shortid$4()}function g(r,i,o){o=o||{},r.request_id=r.request_id||p(),r.domain=r.domain||e,o.skipPeerId||(r.peer_id=t.peerId);var l=r.request_id;return new Promise((function(e,s){c[l]={success:function(t){delete c[l],t._tag=i,e(t)},error:function(e){n.warn("GW error - ".concat(JSON.stringify(e)," for request ").concat(JSON.stringify(r))),delete c[l],e._tag=i,s(e)}},t.send(r,o).catch((function(e){c[l].error({err:e})}))}))}return{join:h,leave:function(){return"global"===e?Promise.resolve():(n.debug("stopping session "+e+"..."),s=!1,g({type:"leave",destination:e,domain:"global"}).then((function(){l=!1,u.execute("onLeft")})).catch((function(){l=!1,u.execute("onLeft")})))},onJoined:function(e){return l&&e(!1),u.add("onJoined",e)},onLeft:function(e){return l||e(),u.add("onLeft",e)},send:g,sendFireAndForget:function(n){return n.request_id=n.request_id?n.request_id:p(),n.domain=n.domain||e,n.peer_id=t.peerId,t.send(n)},on:function(r,i){t.on(r,(function(t){if(t.domain===e)try{i(t)}catch(e){n.error("Callback failed: ".concat(e," \n ").concat(e.stack," \n msg was: ").concat(JSON.stringify(t)),e)}}))},loggedIn:function(e){return t.loggedIn(e)},connected:function(e){return t.connected(e)},disconnected:function(e){return t.disconnected(e)},get peerId(){return t.peerId},get domain(){return e}}}var GW3ProtocolImpl$1=function(){function e(e,t,n){var r=this;this.connection=e,this.settings=t,this.logger=n,this.protocolVersion=3,this.datePrefix="#T42_DATE#",this.datePrefixLen=this.datePrefix.length,this.dateMinLen=this.datePrefixLen+1,this.datePrefixFirstChar=this.datePrefix[0],this.registry=lib$1$1(),this._isLoggedIn=!1,this.shouldTryLogin=!0,this.initialLogin=!0,this.initialLoginAttempts=3,this.sessions=[],e.disconnected((function(){r.handleDisconnected()})),this.ping()}return Object.defineProperty(e.prototype,"isLoggedIn",{get:function(){return this._isLoggedIn},enumerable:!1,configurable:!0}),e.prototype.processStringMessage=function(e){var t=this,n=JSON.parse(e,(function(e,n){if("string"!=typeof n)return n;if(n.length1)return"continue";var i=e.on(n,(function(e){return t.processMessage(n,e)}));l.subs[n]=i},l=this,s=0,a=this.specs[i].types;s> ".concat(JSON.stringify(n))),this.transport.sendObject(n,t)}var r=this.protocol.createStringMessage(e);return this.isTrace&&this.logger.trace(">> ".concat(r)),this.transport.send(r,t)},e.prototype.on=function(e,t){e=e.toLowerCase(),void 0===this.messageHandlers[e]&&(this.messageHandlers[e]={});var n=this.ids++;return this.messageHandlers[e][n]=t,{type:e,id:n}},e.prototype.off=function(e){delete this.messageHandlers[e.type.toLowerCase()][e.id]},Object.defineProperty(e.prototype,"isConnected",{get:function(){return this.protocol.isLoggedIn},enumerable:!1,configurable:!0}),e.prototype.connected=function(e){var t=this;return this.protocol.loggedIn((function(){var n=t.transport.name();e(n)}))},e.prototype.disconnected=function(e){return this.registry.add("disconnected",e)},e.prototype.login=function(e,t){return __awaiter$6(this,void 0,void 0,(function(){var n,r,i;return __generator$1(this,(function(o){switch(o.label){case 0:this._defaultAuth||(this._defaultAuth=e),this._swapTransport&&(this.logger.trace("Detected a transport swap, swapping transports"),n=this.transportSwap(),e=null!=n?n:e),this.logger.trace("Starting login for transport: ".concat(this.transport.name()," and auth ").concat(JSON.stringify(e))),o.label=1;case 1:return o.trys.push([1,4,,5]),[4,this.transport.open()];case 2:return o.sent(),this.logger.trace("Transport: ".concat(this.transport.name()," opened, logging in")),timer$1("connection").mark("transport-opened"),[4,this.protocol.login(e,t)];case 3:return r=o.sent(),this.logger.trace("Logged in with identity: ".concat(JSON.stringify(r))),timer$1("connection").mark("protocol-logged-in"),[2,r];case 4:throw i=o.sent(),this._switchInProgress&&(this.logger.trace("An error while logging in after a transport swap, preparing a default swap."),this.prepareDefaultSwap()),new Error(i);case 5:return[2]}}))}))},e.prototype.logout=function(){return __awaiter$6(this,void 0,void 0,(function(){return __generator$1(this,(function(e){switch(e.label){case 0:return[4,this.protocol.logout()];case 1:return e.sent(),[4,this.transport.close()];case 2:return e.sent(),[2]}}))}))},e.prototype.loggedIn=function(e){return this.protocol.loggedIn(e)},e.prototype.domain=function(e,t,n){return this.protocol.domain(e,this.logger.subLogger("domain=".concat(e)),t,n)},e.prototype.authToken=function(){return this.protocol.authToken()},e.prototype.reconnect=function(){return this.transport.reconnect()},e.prototype.distributeMessage=function(e,t){var n=this,r=this.messageHandlers[t.toLowerCase()];void 0!==r&&Object.keys(r).forEach((function(t){var i=r[t];if(void 0!==i)try{i(e)}catch(e){try{n.logger.error("Message handler failed with ".concat(e.stack),e)}catch(t){console.log("Message handler failed",e)}}}))},e.prototype.handleConnectionChanged=function(e){this._connected!==e&&(this._connected=e,e?(this.settings.replaySpecs&&this.settings.replaySpecs.length&&(this.replayer=new MessageReplayerImpl$1(this.settings.replaySpecs),this.replayer.init(this)),this.registry.execute("connected")):this.registry.execute("disconnected"))},e.prototype.handleTransportMessage=function(e){var t;t="string"==typeof e?this.protocol.processStringMessage(e):this.protocol.processObjectMessage(e),this.isTrace&&this.logger.trace("<< ".concat(JSON.stringify(t))),this.distributeMessage(t.msg,t.msgType)},e.prototype.verifyConnection=function(){var e=this;return PromisePlus$2((function(t){var n,r=waitForInvocations$1(2,(function(){n&&n(),t()}));n=e.onLibReAnnounced((function(e){return"interop"===e.name||"contexts"===e.name?r():void 0}))}),1e4,"Transport switch timed out waiting for all libraries to be re-announced")},e.prototype.getNewSecondaryTransport=function(e){var t;if(!(null===(t=e.transportConfig)||void 0===t?void 0:t.url))throw new Error("Missing secondary transport URL.");return new WS$1(Object.assign({},this.settings,{ws:e.transportConfig.url,reconnectAttempts:1}),this.logger.subLogger("ws-secondary"))},e.prototype.getNewSecondaryAuth=function(e){var t;if(!(null===(t=e.transportConfig)||void 0===t?void 0:t.auth))throw new Error("Missing secondary transport auth information.");return e.transportConfig.auth},e.prototype.transportSwap=function(){if(this._swapTransport=!1,this._targetTransport&&this._targetAuth){this._transportSubscriptions.forEach((function(e){return e()})),this._transportSubscriptions=[],this.transport=this._targetTransport;var e=this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)),t=this.transport.onMessage(this.handleTransportMessage.bind(this));return this._transportSubscriptions.push(e),this._transportSubscriptions.push(t),this._targetAuth}this.logger.warn("Error while switching transports - either the target transport or auth is not defined: transport defined -> ".concat(!!this._defaultTransport,", auth defined -> ").concat(!!this._targetAuth,". Staying on the current one."))},e.prototype.prepareDefaultSwap=function(){var e=this;this._transportSubscriptions.forEach((function(e){return e()})),this._transportSubscriptions=[],this.transport.close().catch((function(t){return e.logger.warn("Error closing the ".concat(e.transport.name()," transport after a failed connection attempt: ").concat(JSON.stringify(t)))})),this._targetTransport=this._defaultTransport,this._targetAuth=this._defaultAuth,this._swapTransport=!0},e}(),order$1=["trace","debug","info","warn","error","off"],Logger$1=function(){function e(e,t,n){this.name=e,this.parent=t,this.subLoggers=[],this.logFn=console,this.customLogFn=!1,this.name=e,this.path=t?"".concat(t.path,".").concat(e):e,this.loggerFullName="[".concat(this.path,"]"),this.includeTimeAndLevel=!n,n&&(this.logFn=n,this.customLogFn=!0)}return e.prototype.subLogger=function(t){var n=this.subLoggers.filter((function(e){return e.name===t}))[0];if(void 0!==n)return n;Object.keys(this).forEach((function(e){if(e===t)throw new Error("This sub logger name is not allowed.")}));var r=new e(t,this,this.customLogFn?this.logFn:void 0);return this.subLoggers.push(r),r},e.prototype.publishLevel=function(e){var t;return e&&(this._publishLevel=e),this._publishLevel||(null===(t=this.parent)||void 0===t?void 0:t.publishLevel())},e.prototype.consoleLevel=function(e){var t;return e&&(this._consoleLevel=e),this._consoleLevel||(null===(t=this.parent)||void 0===t?void 0:t.consoleLevel())},e.prototype.log=function(e,t,n){this.publishMessage(t||"info",e,n)},e.prototype.trace=function(e){this.log(e,"trace")},e.prototype.debug=function(e){this.log(e,"debug")},e.prototype.info=function(e){this.log(e,"info")},e.prototype.warn=function(e){this.log(e,"warn")},e.prototype.error=function(e,t){this.log(e,"error")},e.prototype.canPublish=function(e,t){return order$1.indexOf(e)>=order$1.indexOf(t||this.consoleLevel()||"trace")},e.prototype.publishMessage=function(t,n,r){var i=this.loggerFullName;if("error"===t&&!r){var o=new Error;o.stack&&(n=n+"\n"+o.stack.split("\n").slice(3).join("\n"))}if(this.canPublish(t,this.publishLevel())){var l=e.Interop;if(l)try{l.methods({name:e.InteropMethodName}).length>0&&l.invoke(e.InteropMethodName,{msg:"".concat(n),logger:i,level:t})}catch(e){}}if(this.canPublish(t)){var s="";if(this.includeTimeAndLevel){var a=new Date,u="".concat(a.getHours(),":").concat(a.getMinutes(),":").concat(a.getSeconds(),":").concat(a.getMilliseconds());s="[".concat(u,"] [").concat(t,"] ")}var c="".concat(s).concat(i,": ").concat(n);switch(t){case"trace":this.logFn.debug(c);break;case"debug":this.logFn.debug?this.logFn.debug(c):this.logFn.log(c);break;case"info":this.logFn.info(c);break;case"warn":this.logFn.warn(c);break;case"error":this.logFn.error(c,r)}}},e.InteropMethodName="T42.AppLogger.Log",e}(),GW_MESSAGE_CREATE_CONTEXT$1="create-context",GW_MESSAGE_ACTIVITY_CREATED$1="created",GW_MESSAGE_ACTIVITY_DESTROYED$1="destroyed",GW_MESSAGE_CONTEXT_CREATED$1="context-created",GW_MESSAGE_CONTEXT_ADDED$1="context-added",GW_MESSAGE_SUBSCRIBE_CONTEXT$1="subscribe-context",GW_MESSAGE_SUBSCRIBED_CONTEXT$1="subscribed-context",GW_MESSAGE_UNSUBSCRIBE_CONTEXT$1="unsubscribe-context",GW_MESSAGE_DESTROY_CONTEXT$1="destroy-context",GW_MESSAGE_CONTEXT_DESTROYED$1="context-destroyed",GW_MESSAGE_UPDATE_CONTEXT$1="update-context",GW_MESSAGE_CONTEXT_UPDATED$1="context-updated",GW_MESSAGE_JOINED_ACTIVITY$1="joined",ContextMessageReplaySpec$1={get name(){return"context"},get types(){return[GW_MESSAGE_CREATE_CONTEXT$1,GW_MESSAGE_ACTIVITY_CREATED$1,GW_MESSAGE_ACTIVITY_DESTROYED$1,GW_MESSAGE_CONTEXT_CREATED$1,GW_MESSAGE_CONTEXT_ADDED$1,GW_MESSAGE_SUBSCRIBE_CONTEXT$1,GW_MESSAGE_SUBSCRIBED_CONTEXT$1,GW_MESSAGE_UNSUBSCRIBE_CONTEXT$1,GW_MESSAGE_DESTROY_CONTEXT$1,GW_MESSAGE_CONTEXT_DESTROYED$1,GW_MESSAGE_UPDATE_CONTEXT$1,GW_MESSAGE_CONTEXT_UPDATED$1,GW_MESSAGE_JOINED_ACTIVITY$1]}},version$5="6.2.0";function prepareConfig$1(e,t,n){var r,i,o,l,s;if(Utils$1.isNode()){var a=process.env._GD_STARTING_CONTEXT_;if(a)try{s=JSON.parse(a)}catch(e){}}function u(){if(e.application)return e.application;if(n)return n.applicationName;if("undefined"!=typeof window&&void 0!==window.glue42electron)return window.glue42electron.application;var t=shortid$4();return Utils$1.isNode()?s?s.applicationConfig.name:"NodeJS"+t:"undefined"!=typeof window&&"undefined"!=typeof document?document.title+" (".concat(t,")"):t}var c=function(){var r,i,o,l,a,c,h,d,f,p,g,w=e.gateway,m=null!==(r=null==w?void 0:w.protocolVersion)&&void 0!==r?r:3,v=null==w?void 0:w.reconnectInterval,y=null==w?void 0:w.reconnectAttempts,b=null==w?void 0:w.ws,S=null==w?void 0:w.sharedWorker,$=null==w?void 0:w.inproc,C=null!==(i=null==w?void 0:w.webPlatform)&&void 0!==i?i:void 0;n&&(b=n.gwURL),Utils$1.isNode()&&s&&s.gwURL&&(b=s.gwURL),b||S||$||(b="ws://localhost:8385");var I=u(),x=I;void 0!==n?(d=n.windowId,f=n.pid,n.env&&(p=n.env.env,g=n.env.region),x=null!==(o=n.application)&&void 0!==o?o:"glue-app",h=n.appInstanceId):Utils$1.isNode()?(f=process.pid,s&&(p=s.env,g=s.region,h=s.instanceId)):void 0!==(null===window||void 0===window?void 0:window.glue42electron)&&(d=null===window||void 0===window?void 0:window.glue42electron.instanceId,f=null===window||void 0===window?void 0:window.glue42electron.pid,p=null===window||void 0===window?void 0:window.glue42electron.env,g=null===window||void 0===window?void 0:window.glue42electron.region,x=null!==(l=null===window||void 0===window?void 0:window.glue42electron.application)&&void 0!==l?l:"glue-app",h=null===window||void 0===window?void 0:window.glue42electron.instanceId);var E=null!==(c=null===(a=e.gateway)||void 0===a?void 0:a.replaySpecs)&&void 0!==c?c:[];E.push(ContextMessageReplaySpec$1);var D={application:x,applicationName:I,windowId:d,instance:h,process:f,region:g,environment:p,api:t.version||version$5};return e.identity&&(D=Object.assign(D,e.identity)),{identity:D,reconnectInterval:v,ws:b,sharedWorker:S,webPlatform:C,inproc:$,protocolVersion:m,reconnectAttempts:y,replaySpecs:E}}(),h=u();if("undefined"!=typeof window){var d=window,f=d.htmlContainer?"".concat(d.htmlContainer.containerName,".").concat(d.htmlContainer.application):null===(r=null==d?void 0:d.glue42gd)||void 0===r?void 0:r.application;f&&(h=f)}return{bus:null!==(i=e.bus)&&void 0!==i&&i,application:h,auth:function(){var t,n,r;return"string"==typeof e.auth?{token:e.auth}:e.auth?e.auth:Utils$1.isNode()&&s&&s.gwToken?{gatewayToken:s.gwToken}:(null===(t=e.gateway)||void 0===t?void 0:t.webPlatform)||(null===(n=e.gateway)||void 0===n?void 0:n.inproc)||(null===(r=e.gateway)||void 0===r?void 0:r.sharedWorker)?{username:"glue42",password:"glue42"}:void 0}(),logger:function(){var t,r,i,o=e.logger,l="warn";return o||(o=l),n&&(i=n.consoleLogLevel),"string"==typeof o?{console:null!=i?i:o,publish:l}:{console:null!==(t=null!=i?i:o.console)&&void 0!==t?t:l,publish:null!==(r=o.publish)&&void 0!==r?r:l}}(),connection:c,metrics:null===(o=e.metrics)||void 0===o||o,contexts:void 0===e.contexts||"boolean"==typeof e.contexts&&e.contexts?{reAnnounceKnownContexts:!0}:"object"==typeof e.contexts&&Object.assign({},{reAnnounceKnownContexts:!0},e.contexts),version:t.version||version$5,libs:null!==(l=t.libs)&&void 0!==l?l:[],customLogger:e.customLogger}}var GW3ContextData$1=function(){function e(e,t,n,r){this.updateCallbacks={},this.contextId=e,this.name=t,this.isAnnounced=n,this.activityId=r,this.context={}}return e.prototype.hasCallbacks=function(){return Object.keys(this.updateCallbacks).length>0},e.prototype.getState=function(){return this.isAnnounced&&this.hasCallbacks()?3:this.isAnnounced?2:this.hasCallbacks()?1:0},e}(),lodash_clonedeepExports$1={},lodash_clonedeep$1={get exports(){return lodash_clonedeepExports$1},set exports(e){lodash_clonedeepExports$1=e}};!function(e,t){var n="__lodash_hash_undefined__",r=9007199254740991,i="[object Arguments]",o="[object Boolean]",l="[object Date]",s="[object Function]",a="[object GeneratorFunction]",u="[object Map]",c="[object Number]",h="[object Object]",d="[object Promise]",f="[object RegExp]",p="[object Set]",g="[object String]",w="[object Symbol]",m="[object WeakMap]",v="[object ArrayBuffer]",y="[object DataView]",b="[object Float32Array]",S="[object Float64Array]",$="[object Int8Array]",C="[object Int16Array]",I="[object Int32Array]",x="[object Uint8Array]",E="[object Uint8ClampedArray]",D="[object Uint16Array]",A="[object Uint32Array]",k=/\w*$/,_=/^\[object .+?Constructor\]$/,j=/^(?:0|[1-9]\d*)$/,N={};N[i]=N["[object Array]"]=N[v]=N[y]=N[o]=N[l]=N[b]=N[S]=N[$]=N[C]=N[I]=N[u]=N[c]=N[h]=N[f]=N[p]=N[g]=N[w]=N[x]=N[E]=N[D]=N[A]=!0,N["[object Error]"]=N[s]=N[m]=!1;var R="object"==typeof commonjsGlobal$2&&commonjsGlobal$2&&commonjsGlobal$2.Object===Object&&commonjsGlobal$2,T="object"==typeof self&&self&&self.Object===Object&&self,P=R||T||Function("return this")(),O=t&&!t.nodeType&&t,F=O&&e&&!e.nodeType&&e,B=F&&F.exports===O;function M(e,t){return e.set(t[0],t[1]),e}function Q(e,t){return e.add(t),e}function G(e,t,n,r){var i=-1,o=e?e.length:0;for(r&&o&&(n=e[++i]);++i-1},Ee.prototype.set=function(e,t){var n=this.__data__,r=je(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},De.prototype.clear=function(){this.__data__={hash:new xe,map:new(fe||Ee),string:new xe}},De.prototype.delete=function(e){return Oe(this,e).delete(e)},De.prototype.get=function(e){return Oe(this,e).get(e)},De.prototype.has=function(e){return Oe(this,e).has(e)},De.prototype.set=function(e,t){return Oe(this,e).set(e,t),this},Ae.prototype.clear=function(){this.__data__=new Ee},Ae.prototype.delete=function(e){return this.__data__.delete(e)},Ae.prototype.get=function(e){return this.__data__.get(e)},Ae.prototype.has=function(e){return this.__data__.has(e)},Ae.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Ee){var r=n.__data__;if(!fe||r.length<199)return r.push([e,t]),this;n=this.__data__=new De(r)}return n.set(e,t),this};var Be=ue?W(ue,Object):function(){return[]},Me=function(e){return ee.call(e)};function Qe(e,t){return!!(t=null==t?r:t)&&("number"==typeof e||j.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=r}(e.length)&&!Ke(e)}var Le=ce||function(){return!1};function Ke(e){var t=He(e)?ee.call(e):"";return t==s||t==a}function He(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function ze(e){return qe(e)?ke(e):function(e){if(!Ge(e))return he(e);var t=[];for(var n in Object(e))Y.call(e,n)&&"constructor"!=n&&t.push(n);return t}(e)}e.exports=function(e){return Ne(e,!0,!0)}}(lodash_clonedeep$1,lodash_clonedeepExports$1);var cloneDeep$1=lodash_clonedeepExports$1;function applyContextDelta$1(e,t,n){try{if((null==n?void 0:n.canPublish("trace"))&&(null==n||n.trace("applying context delta ".concat(JSON.stringify(t)," on context ").concat(JSON.stringify(e)))),!t)return e;if(t.reset)return e=__assign$4({},t.reset);if(e=deepClone$1(e,void 0),t.commands){for(var r=0,i=t.commands;r=2},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){for(var e=0,t=this._gw3Subscriptions;e0)l(h,h[0].methods[0],s,a);else{var d=function(){if(u&&t.waitTimeoutMs)if(c+=500,(h=o.getServerMethodsByFilterAndTarget(i,u)).length>0){var n=h[0].methods[0];l(h,n,s,a)}else if(c>=t.waitTimeoutMs){l(h,"string"==typeof e?{name:e}:e,s,a)}else setTimeout(d,500)};setTimeout(d,500)}}else r(new Error('"'.concat(u,'" is not a valid target. Valid targets are "all", "best", or an instance.')))}else r("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");else r("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.")}));return promisify$1(s,n,r)},e.prototype.servers=function(e){var t=void 0===e?void 0:__assign$4({},e);return this.getServers(t).map((function(e){return e.server.instance}))},e.prototype.methods=function(e){return e="string"==typeof e?{name:e}:__assign$4({},e),this.getMethods(e)},e.prototype.methodsForInstance=function(e){return this.getMethodsForInstance(e)},e.prototype.methodAdded=function(e){return this.repo.onMethodAdded(e)},e.prototype.methodRemoved=function(e){return this.repo.onMethodRemoved(e)},e.prototype.serverAdded=function(e){return this.repo.onServerAdded(e)},e.prototype.serverRemoved=function(e){return this.repo.onServerRemoved((function(t,n){e(t,n)}))},e.prototype.serverMethodAdded=function(e){return this.repo.onServerMethodAdded((function(t,n){e({server:t,method:n})}))},e.prototype.serverMethodRemoved=function(e){return this.repo.onServerMethodRemoved((function(t,n){e({server:t,method:n})}))},e.prototype.invoke=function(e,t,n,r,i,o){return __awaiter$6(this,void 0,void 0,(function(){var l,s=this;return __generator$1(this,(function(a){return l=function(){return __awaiter$6(s,void 0,void 0,(function(){var i,o,l,s,a,u,c,h,d,f,p,g,w=this;return __generator$1(this,(function(m){switch(m.label){case 0:if(!(i="string"==typeof e?{name:e}:__assign$4({},e)).name)return[2,Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.")];if(t||(t={}),n||(n="best"),"string"==typeof n&&"all"!==n&&"best"!==n&&"skipMine"!==n)return[2,Promise.reject(new Error('"'.concat(n,'" is not a valid target. Valid targets are "all" and "best".')))];if(r||(r={}),void 0===r.methodResponseTimeoutMs&&(r.methodResponseTimeoutMs=r.method_response_timeout,void 0===r.methodResponseTimeoutMs&&(r.methodResponseTimeoutMs=this.configuration.methodResponseTimeout)),void 0===r.waitTimeoutMs&&(r.waitTimeoutMs=r.wait_for_method_timeout,void 0===r.waitTimeoutMs&&(r.waitTimeoutMs=this.configuration.waitTimeoutMs)),void 0!==r.waitTimeoutMs&&"number"!=typeof r.waitTimeoutMs)return[2,Promise.reject(new Error('"'.concat(r.waitTimeoutMs,'" is not a valid number for "waitTimeoutMs" ')))];if("object"!=typeof t)return[2,Promise.reject(new Error("The method arguments must be an object. method: ".concat(i.name)))];if(0!==(o=this.getServerMethodsByFilterAndTarget(i,n)).length)return[3,4];m.label=1;case 1:return m.trys.push([1,3,,4]),[4,this.tryToAwaitForMethods(i,n,r)];case 2:return o=m.sent(),[3,4];case 3:return m.sent(),l=__assign$4(__assign$4({},i),{getServers:function(){return[]},supportsStreaming:!1,objectTypes:null!==(f=i.objectTypes)&&void 0!==f?f:[],flags:null!==(g=null===(p=i.flags)||void 0===p?void 0:p.metadata)&&void 0!==g?g:{}}),s={method:l,called_with:t,message:"Can not find a method matching ".concat(JSON.stringify(e)," with server filter ").concat(JSON.stringify(n)),executed_by:void 0,returned:void 0,status:void 0},[2,Promise.reject(s)];case 4:return a=r.methodResponseTimeoutMs,u=r,c=o.map((function(e){var n=shortid$4(),r=e.methods[0],i=e.server,o=w.protocol.client.invoke(n,r,t,i,u);return Promise.race([o,rejectAfter$1(a,o,{invocationId:n,message:"Invocation timeout (".concat(a," ms) reached for method name: ").concat(null==r?void 0:r.name,", target instance: ").concat(JSON.stringify(i.instance),", options: ").concat(JSON.stringify(u)),status:InvokeStatus$1.Error})])})),[4,Promise.all(c)];case 5:return h=m.sent(),d=this.getInvocationResultObj(h,i,t),h.every((function(e){return e.status===InvokeStatus$1.Error}))?[2,Promise.reject(d)]:[2,d]}}))}))},[2,promisify$1(l(),i,o)]}))}))},e.prototype.getInvocationResultObj=function(e,t,n){var r=e.filter((function(e){return e.status===InvokeStatus$1.Success})).reduce((function(e,r){return e=__spreadArray$1(__spreadArray$1([],e,!0),[{executed_by:r.instance,returned:r.result,called_with:n,method:t,message:r.message,status:r.status}],!1)}),[]),i=e.filter((function(e){return e.status===InvokeStatus$1.Error})).reduce((function(e,r){return e=__spreadArray$1(__spreadArray$1([],e,!0),[{executed_by:r.instance,called_with:n,name:t.name,message:r.message}],!1)}),[]),o=e[0];return{method:t,called_with:n,returned:o.result,executed_by:o.instance,all_return_values:r,all_errors:i,message:o.message,status:o.status}},e.prototype.tryToAwaitForMethods=function(e,t,n){var r=this;return new Promise((function(i,o){if(0!==n.waitTimeoutMs)var l=0,s=setInterval((function(){l+=500;var a=r.getServerMethodsByFilterAndTarget(e,t);if(a.length>0)clearInterval(s),i(a);else if(l>=(n.waitTimeoutMs||1e4))return clearInterval(s),void o()}),500);else o()}))},e.prototype.filterByTarget=function(e,t){var n=this;if("string"!=typeof e){return(Array.isArray(e)?e:[e]).reduce((function(e,r){var i=t.filter((function(e){return n.instanceMatch(r,e.server.instance)}));return e.concat(i)}),[])}if("all"===e)return __spreadArray$1([],t,!0);if("best"===e){var r=t.find((function(e){return e.server.instance.isLocal}));if(r)return[r];if(void 0!==t[0])return[t[0]]}else if("skipMine"===e)return t.filter((function(e){return e.server.instance.peerId!==n.instance.peerId}));return[]},e.prototype.instanceMatch=function(e,t){return this.containsProps(e,t)},e.prototype.methodMatch=function(e,t){return this.containsProps(e,t)},e.prototype.containsProps=function(e,t){return Object.keys(e).filter((function(t){return void 0!==e[t]&&null!==e[t]&&"function"!=typeof e[t]&&"object_types"!==t&&"display_name"!==t&&"id"!==t&&"gatewayId"!==t&&"identifier"!==t&&"_"!==t[0]})).every((function(n){var r,i=e[n],o=t[n];switch(n){case"objectTypes":r=(i||[]).every((function(e){return(o||[]).includes(e)}));break;case"flags":r=isSubset$1(o||{},i||{});break;default:r=String(i).toLowerCase()===String(o).toLowerCase()}return r}))},e.prototype.getMethods=function(e){var t=this;return void 0===e?this.repo.getMethods():this.repo.getMethods().filter((function(n){return t.methodMatch(e,n)}))},e.prototype.getMethodsForInstance=function(e){var t=this,n=this.repo.getServers().filter((function(n){return t.instanceMatch(e,n.instance)}));if(0===n.length)return[];var r={};return 1===n.length?r=n[0].methods:n.forEach((function(e){Object.keys(e.methods).forEach((function(t){var n=e.methods[t];r[n.identifier]=n}))})),Object.keys(r).map((function(e){return r[e]}))},e.prototype.getServers=function(e){var t=this,n=this.repo.getServers();return void 0===e?n.map((function(e){return{server:e,methods:[]}})):n.reduce((function(n,r){var i=Object.values(r.methods).filter((function(n){return t.methodMatch(e,n)}));return i.length>0&&n.push({server:r,methods:i}),n}),[])},e.prototype.getServerMethodsByFilterAndTarget=function(e,t){var n=this.getServers(e);return this.filterByTarget(t,n)},e}(),ServerSubscription$1=function(){function e(e,t,n){this.protocol=e,this.repoMethod=t,this.subscription=n}return Object.defineProperty(e.prototype,"stream",{get:function(){if(!this.repoMethod.stream)throw new Error("no stream");return this.repoMethod.stream},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"arguments",{get:function(){return this.subscription.arguments||{}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"branchKey",{get:function(){return this.subscription.branchKey},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"instance",{get:function(){if(!this.subscription.instance)throw new Error("no instance");return this.subscription.instance},enumerable:!1,configurable:!0}),e.prototype.close=function(){this.protocol.server.closeSingleSubscription(this.repoMethod,this.subscription)},e.prototype.push=function(e){this.protocol.server.pushDataToSingle(this.repoMethod,this.subscription,e)},e}(),Request$2=function(){function e(e,t,n){this.protocol=e,this.repoMethod=t,this.requestContext=n,this.arguments=n.arguments,this.instance=n.instance}return e.prototype.accept=function(){this.protocol.server.acceptRequestOnBranch(this.requestContext,this.repoMethod,"")},e.prototype.acceptOnBranch=function(e){this.protocol.server.acceptRequestOnBranch(this.requestContext,this.repoMethod,e)},e.prototype.reject=function(e){this.protocol.server.rejectRequest(this.requestContext,this.repoMethod,e)},e}(),ServerStreaming$1$1=function(){function e(e,t){var n=this;this.protocol=e,this.server=t,e.server.onSubRequest((function(e,t){return n.handleSubRequest(e,t)})),e.server.onSubAdded((function(e,t){return n.handleSubAdded(e,t)})),e.server.onSubRemoved((function(e,t){return n.handleSubRemoved(e,t)}))}return e.prototype.handleSubRequest=function(e,t){if(t&&t.streamCallbacks&&"function"==typeof t.streamCallbacks.subscriptionRequestHandler){var n=new Request$2(this.protocol,t,e);t.streamCallbacks.subscriptionRequestHandler(n)}},e.prototype.handleSubAdded=function(e,t){if(t&&t.streamCallbacks&&"function"==typeof t.streamCallbacks.subscriptionAddedHandler){var n=new ServerSubscription$1(this.protocol,t,e);t.streamCallbacks.subscriptionAddedHandler(n)}},e.prototype.handleSubRemoved=function(e,t){if(t&&t.streamCallbacks&&"function"==typeof t.streamCallbacks.subscriptionRemovedHandler){var n=new ServerSubscription$1(this.protocol,t,e);t.streamCallbacks.subscriptionRemovedHandler(n)}},e}(),ServerBranch$1=function(){function e(e,t,n){this.key=e,this.protocol=t,this.repoMethod=n}return e.prototype.subscriptions=function(){var e=this;return this.protocol.server.getSubscriptionList(this.repoMethod,this.key).map((function(t){return new ServerSubscription$1(e.protocol,e.repoMethod,t)}))},e.prototype.close=function(){this.protocol.server.closeAllSubscriptions(this.repoMethod,this.key)},e.prototype.push=function(e){this.protocol.server.pushData(this.repoMethod,e,[this.key])},e}(),ServerStream$1=function(){function e(e,t,n){this._protocol=e,this._repoMethod=t,this._server=n,this.name=this._repoMethod.definition.name}return e.prototype.branches=function(e){var t=this,n=this._protocol.server.getBranchList(this._repoMethod);return e?n.indexOf(e)>-1?new ServerBranch$1(e,this._protocol,this._repoMethod):void 0:n.map((function(e){return new ServerBranch$1(e,t._protocol,t._repoMethod)}))},e.prototype.branch=function(e){return this.branches(e)},e.prototype.subscriptions=function(){var e=this;return this._protocol.server.getSubscriptionList(this._repoMethod).map((function(t){return new ServerSubscription$1(e._protocol,e._repoMethod,t)}))},Object.defineProperty(e.prototype,"definition",{get:function(){var e,t=this._repoMethod.definition;return{accepts:t.accepts,description:t.description,displayName:t.displayName,name:t.name,objectTypes:t.objectTypes,returns:t.returns,supportsStreaming:t.supportsStreaming,flags:null===(e=t.flags)||void 0===e?void 0:e.metadata}},enumerable:!1,configurable:!0}),e.prototype.close=function(){this._protocol.server.closeAllSubscriptions(this._repoMethod),this._server.unregister(this._repoMethod.definition,!0)},e.prototype.push=function(e,t){if("string"!=typeof t&&!Array.isArray(t)&&void 0!==t)throw new Error("invalid branches should be string or string array");if("object"!=typeof e)throw new Error("Invalid arguments. Data must be an object.");this._protocol.server.pushData(this._repoMethod,e,t)},e.prototype.updateRepoMethod=function(e){this._repoMethod=e},e}(),Server$1=function(){function e(e,t){this.protocol=e,this.serverRepository=t,this.invocations=0,this.currentlyUnregistering={},this.streaming=new ServerStreaming$1$1(e,this),this.protocol.server.onInvoked(this.onMethodInvoked.bind(this))}return e.prototype.createStream=function(e,t,n,r,i){var o=this,l=new Promise((function(n,r){if(e){var l;if(!(l="string"==typeof e?{name:""+e}:__assign$4({},e)).name)return r("The “name” property is required for the “streamDefinition” object and must be unique. Stream definition: ".concat(JSON.stringify(l)));if(o.serverRepository.getList().some((function(e){return e.definition.name===l.name})))return r('A stream with the name "'.concat(l.name,'" already exists! Please, provide a unique name for the stream.'));l.supportsStreaming=!0,t||(t={}),"function"!=typeof t.subscriptionRequestHandler&&(t.subscriptionRequestHandler=function(e){e.accept()});var s=o.serverRepository.add({definition:l,streamCallbacks:t,protocolState:{}});o.protocol.server.createStream(s).then((function(){var e;i?(e=i,i.updateRepoMethod(s)):e=new ServerStream$1(o.protocol,s,o),s.stream=e,n(e)})).catch((function(e){s.repoId&&o.serverRepository.remove(s.repoId),r(e)}))}else r("The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream.")}));return promisify$1(l,n,r)},e.prototype.register=function(e,t){var n=this;if(!e)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");if("function"!=typeof t)return Promise.reject("The second parameter must be a callback function. Method: ".concat("string"==typeof e?e:e.name));var r=function(e,r){return __awaiter$6(n,void 0,void 0,(function(){var n,i,o;return __generator$1(this,(function(l){switch(l.label){case 0:return l.trys.push([0,4,,5]),(n=t(e.args,e.instance))&&"function"==typeof n.then?[4,n]:[3,2];case 1:return i=l.sent(),r(void 0,i),[3,3];case 2:r(void 0,n),l.label=3;case 3:return[3,5];case 4:return o=l.sent(),r(null!=o?o:"",null!=o?o:""),[3,5];case 5:return[2]}}))}))};return r.userCallback=t,this.registerCore(e,r)},e.prototype.registerAsync=function(e,t){var n=this;if(!e)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");if("function"!=typeof t)return Promise.reject("The second parameter must be a callback function. Method: ".concat("string"==typeof e?e:e.name));var r=function(e,r){return __awaiter$6(n,void 0,void 0,(function(){var n,i,o,l;return __generator$1(this,(function(s){try{n=!1,i=function(e){n||r(void 0,e),n=!0},o=function(e){n||(e||(e=""),r(e,e)),n=!0},(l=t(e.args,e.instance,i,o))&&"function"==typeof l.then&&l.then(i).catch(o)}catch(e){r(e,void 0)}return[2]}))}))};return r.userCallbackAsync=t,this.registerCore(e,r)},e.prototype.unregister=function(e,t){return void 0===t&&(t=!1),__awaiter$6(this,void 0,void 0,(function(){var n,r;return __generator$1(this,(function(i){switch(i.label){case 0:return void 0===e?[2,Promise.reject("Please, provide either a unique string for a name or an object containing a “name” property.")]:"function"!=typeof e?[3,2]:[4,this.unregisterWithPredicate(e,t)];case 1:case 3:return i.sent(),[2];case 2:return void 0===(n="string"==typeof e?{name:e}:e).name?[2,Promise.reject("Method name is required. Cannot find a method if the method name is undefined!")]:(r=this.serverRepository.getList().find((function(e){return e.definition.name===n.name&&(e.definition.supportsStreaming||!1)===t})))?[4,this.removeMethodsOrStreams([r])]:[2,Promise.reject('Method with a name "'.concat(n.name,'" does not exist or is not registered by your application!'))]}}))}))},e.prototype.unregisterWithPredicate=function(e,t){return __awaiter$6(this,void 0,void 0,(function(){var n;return __generator$1(this,(function(r){switch(r.label){case 0:return(n=this.serverRepository.getList().filter((function(t){return e(t.definition)})).filter((function(e){return(e.definition.supportsStreaming||!1)===t})))&&0!==n.length?[4,this.removeMethodsOrStreams(n)]:[2,Promise.reject("Could not find a ".concat(t?"stream":"method"," matching the specified condition!"))];case 1:return r.sent(),[2]}}))}))},e.prototype.removeMethodsOrStreams=function(e){var t=this,n=[];return e.forEach((function(e){var r=t.protocol.server.unregister(e).then((function(){e.repoId&&t.serverRepository.remove(e.repoId)}));n.push(r),t.addAsCurrentlyUnregistering(e.definition.name,r)})),Promise.all(n)},e.prototype.addAsCurrentlyUnregistering=function(e,t){return __awaiter$6(this,void 0,void 0,(function(){var n,r=this;return __generator$1(this,(function(i){return n=new Promise((function(e){return setTimeout(e,5e3)})),this.currentlyUnregistering[e]=Promise.race([t,n]).then((function(){delete r.currentlyUnregistering[e]})),[2]}))}))},e.prototype.registerCore=function(e,t){return __awaiter$6(this,void 0,void 0,(function(){var n,r,i,o=this;return __generator$1(this,(function(l){switch(l.label){case 0:return(n="string"==typeof e?{name:""+e}:__assign$4({},e)).name?void 0===(r=this.currentlyUnregistering[n.name])?[3,2]:[4,r]:[2,Promise.reject("Please, provide a (unique) string value for the “name” property in the “methodDefinition” object: ".concat(JSON.stringify(e)))];case 1:l.sent(),l.label=2;case 2:return this.serverRepository.getList().some((function(e){return e.definition.name===n.name}))?[2,Promise.reject('A method with the name "'.concat(n.name,'" already exists! Please, provide a unique name for the method.'))]:n.supportsStreaming?[2,Promise.reject("When you create methods with “glue.interop.register()” or “glue.interop.registerAsync()” the property “supportsStreaming” cannot be “true”. If you want “".concat(n.name,"” to be a stream, please use the “glue.interop.createStream()” method."))]:(i=this.serverRepository.add({definition:n,theFunction:t,protocolState:{}}),[2,this.protocol.server.register(i).catch((function(e){throw(null==i?void 0:i.repoId)&&o.serverRepository.remove(i.repoId),e}))])}}))}))},e.prototype.onMethodInvoked=function(e,t,n){var r=this;e&&e.theFunction&&e.theFunction(n,(function(n,i){if(null!=n)if(n.message&&"string"==typeof n.message)n=n.message;else if("string"!=typeof n)try{n=JSON.stringify(n)}catch(e){n="un-stringifyable error in onMethodInvoked! Top level prop names: ".concat(Object.keys(n))}i?("object"!=typeof i||Array.isArray(i))&&(i={_value:i}):i={},r.protocol.server.methodInvocationResult(e,t,n,i)}))},e}(),InstanceWrapper$1=function(){function e(e,t,n){var r=this;this.wrapped={},this.wrapped.getMethods=function(){return e.methodsForInstance(this)},this.wrapped.getStreams=function(){return e.methodsForInstance(this).filter((function(e){return e.supportsStreaming}))},t&&this.refreshWrappedObject(t),n&&(n.loggedIn((function(){r.refresh(n)})),this.refresh(n))}return e.prototype.unwrap=function(){return this.wrapped},e.prototype.refresh=function(e){if(e){var t=null==e?void 0:e.resolvedIdentity,n=Object.assign({},null!=t?t:{},{peerId:null==e?void 0:e.peerId});this.refreshWrappedObject(n)}},e.prototype.refreshWrappedObject=function(e){var t,n,r,i,o=this;Object.keys(e).forEach((function(t){o.wrapped[t]=e[t]})),this.wrapped.user=e.user,this.wrapped.instance=e.instance,this.wrapped.application=null!==(t=e.application)&&void 0!==t?t:shortid$4(),this.wrapped.applicationName=e.applicationName,this.wrapped.pid=null!==(r=null!==(n=e.pid)&&void 0!==n?n:e.process)&&void 0!==r?r:Math.floor(1e10*Math.random()),this.wrapped.machine=e.machine,this.wrapped.environment=e.environment,this.wrapped.region=e.region,this.wrapped.windowId=e.windowId,this.wrapped.isLocal=null===(i=e.isLocal)||void 0===i||i,this.wrapped.api=e.api,this.wrapped.service=e.service,this.wrapped.peerId=e.peerId},e}(),hideMethodSystemFlags$1=function(e){return __assign$4(__assign$4({},e),{flags:e.flags.metadata||{}})},ClientRepository$1=function(){function e(e,t){this.logger=e,this.API=t,this.servers={},this.methodsCount={},this.callbacks=lib$1$1();var n=this.API.instance.peerId;this.myServer={id:n,methods:{},instance:this.API.instance,wrapper:this.API.unwrappedInstance},this.servers[n]=this.myServer}return e.prototype.addServer=function(e,t){this.logger.debug("adding server ".concat(t));var n=this.servers[t];if(n)return n.id;var r=new InstanceWrapper$1(this.API,e),i={id:t,methods:{},instance:r.unwrap(),wrapper:r};return this.servers[t]=i,this.callbacks.execute("onServerAdded",i.instance),t},e.prototype.removeServerById=function(e,t){var n=this,r=this.servers[e];r?(this.logger.debug("removing server ".concat(e)),Object.keys(r.methods).forEach((function(t){n.removeServerMethod(e,t)})),delete this.servers[e],this.callbacks.execute("onServerRemoved",r.instance,t)):this.logger.warn("not aware of server ".concat(e,", my state ").concat(JSON.stringify(Object.keys(this.servers))))},e.prototype.addServerMethod=function(e,t){var n,r=this.servers[e];if(!r)throw new Error("server does not exists");if(!r.methods[t.id]){var i=this.createMethodIdentifier(t),o=this,l={identifier:i,gatewayId:t.id,name:t.name,displayName:t.display_name,description:t.description,version:t.version,objectTypes:t.object_types||[],accepts:t.input_signature,returns:t.result_signature,supportsStreaming:void 0!==t.flags&&t.flags.streaming,flags:null!==(n=t.flags)&&void 0!==n?n:{},getServers:function(){return o.getServersByMethod(i)}};l.object_types=l.objectTypes,l.display_name=l.displayName,l.version=l.version,r.methods[t.id]=l;var s=hideMethodSystemFlags$1(l);return this.methodsCount[i]||(this.methodsCount[i]=0,this.callbacks.execute("onMethodAdded",s)),this.methodsCount[i]=this.methodsCount[i]+1,this.callbacks.execute("onServerMethodAdded",r.instance,s),l}},e.prototype.removeServerMethod=function(e,t){var n=this.servers[e];if(!n)throw new Error("server does not exists");var r=n.methods[t];delete n.methods[t];var i=hideMethodSystemFlags$1(r);this.methodsCount[r.identifier]=this.methodsCount[r.identifier]-1,0===this.methodsCount[r.identifier]&&this.callbacks.execute("onMethodRemoved",i),this.callbacks.execute("onServerMethodRemoved",n.instance,i)},e.prototype.getMethods=function(){return this.extractMethodsFromServers(Object.values(this.servers)).map(hideMethodSystemFlags$1)},e.prototype.getServers=function(){return Object.values(this.servers).map(this.hideServerMethodSystemFlags)},e.prototype.onServerAdded=function(e){var t=this.callbacks.add("onServerAdded",e),n=this.getServers().map((function(e){return e.instance}));return this.returnUnsubWithDelayedReplay(t,n,e)},e.prototype.onMethodAdded=function(e){var t=this.callbacks.add("onMethodAdded",e),n=this.getMethods();return this.returnUnsubWithDelayedReplay(t,n,e)},e.prototype.onServerMethodAdded=function(e){var t=this.callbacks.add("onServerMethodAdded",e),n=!1,r=this.getServers();return setTimeout((function(){r.forEach((function(t){var r=t.methods;Object.keys(r).forEach((function(i){n||e(t.instance,r[i])}))}))}),0),function(){n=!0,t()}},e.prototype.onMethodRemoved=function(e){return this.callbacks.add("onMethodRemoved",e)},e.prototype.onServerRemoved=function(e){return this.callbacks.add("onServerRemoved",e)},e.prototype.onServerMethodRemoved=function(e){return this.callbacks.add("onServerMethodRemoved",e)},e.prototype.getServerById=function(e){return this.hideServerMethodSystemFlags(this.servers[e])},e.prototype.reset=function(){var e,t=this;Object.keys(this.servers).forEach((function(e){t.removeServerById(e,"reset")})),this.servers=((e={})[this.myServer.id]=this.myServer,e),this.methodsCount={}},e.prototype.createMethodIdentifier=function(e){var t,n,r=null!==(t=e.input_signature)&&void 0!==t?t:"",i=null!==(n=e.result_signature)&&void 0!==n?n:"";return(e.name+r+i).toLowerCase()},e.prototype.getServersByMethod=function(e){var t=[];return Object.values(this.servers).forEach((function(n){Object.values(n.methods).forEach((function(r){r.identifier===e&&t.push(n.instance)}))})),t},e.prototype.returnUnsubWithDelayedReplay=function(e,t,n){var r=!1;return setTimeout((function(){t.forEach((function(e){r||n(e)}))}),0),function(){r=!0,e()}},e.prototype.hideServerMethodSystemFlags=function(e){var t={};return Object.entries(e.methods).forEach((function(e){var n=e[0],r=e[1];t[n]=hideMethodSystemFlags$1(r)})),__assign$4(__assign$4({},e),{methods:t})},e.prototype.extractMethodsFromServers=function(e){return Object.values(e).reduce((function(e,t){return __spreadArray$1(__spreadArray$1([],e,!0),Object.values(t.methods),!0)}),[])},e}(),ServerRepository$1=function(){function e(){this.nextId=0,this.methods=[]}return e.prototype.add=function(e){return e.repoId=String(this.nextId),this.nextId+=1,this.methods.push(e),e},e.prototype.remove=function(e){if("string"!=typeof e)return new TypeError("Expecting a string");this.methods=this.methods.filter((function(t){return t.repoId!==e}))},e.prototype.getById=function(e){if("string"==typeof e)return this.methods.find((function(t){return t.repoId===e}))},e.prototype.getList=function(){return this.methods.map((function(e){return e}))},e.prototype.length=function(){return this.methods.length},e.prototype.reset=function(){this.methods=[]},e}(),SUBSCRIPTION_REQUEST$1="onSubscriptionRequest",SUBSCRIPTION_ADDED$1="onSubscriptionAdded",SUBSCRIPTION_REMOVED$1="onSubscriptionRemoved",ServerStreaming$2=function(){function e(e,t,n){var r=this;this.session=e,this.repository=t,this.serverRepository=n,this.ERR_URI_SUBSCRIPTION_FAILED="com.tick42.agm.errors.subscription.failure",this.callbacks=lib$1$1(),this.nextStreamId=0,e.on("add-interest",(function(e){r.handleAddInterest(e)})),e.on("remove-interest",(function(e){r.handleRemoveInterest(e)}))}return e.prototype.acceptRequestOnBranch=function(e,t,n){if("string"!=typeof n&&(n=""),"object"!=typeof t.protocolState.subscriptionsMap)throw new TypeError("The streaming method is missing its subscriptions.");if(!Array.isArray(t.protocolState.branchKeyToStreamIdMap))throw new TypeError("The streaming method is missing its branches.");var r=this.getStreamId(t,n),i=e.msg.subscription_id,o={id:i,arguments:e.arguments,instance:e.instance,branchKey:n,streamId:r,subscribeMsg:e.msg};t.protocolState.subscriptionsMap[i]=o,this.session.sendFireAndForget({type:"accepted",subscription_id:i,stream_id:r}),this.callbacks.execute(SUBSCRIPTION_ADDED$1,o,t)},e.prototype.rejectRequest=function(e,t,n){"string"!=typeof n&&(n=""),this.sendSubscriptionFailed("Subscription rejected by user. "+n,e.msg.subscription_id)},e.prototype.pushData=function(e,t,n){var r=this;if("object"==typeof e&&Array.isArray(e.protocolState.branchKeyToStreamIdMap)){if("object"!=typeof t)throw new Error("Invalid arguments. Data must be an object.");"string"==typeof n?n=[n]:(!Array.isArray(n)||n.length<=0)&&(n=[]),e.protocolState.branchKeyToStreamIdMap.filter((function(e){return!n||0===n.length||n.indexOf(e.key)>=0})).map((function(e){return e.streamId})).forEach((function(e){var n={type:"publish",stream_id:e,data:t};r.session.sendFireAndForget(n)}))}},e.prototype.pushDataToSingle=function(e,t,n){if("object"!=typeof n)throw new Error("Invalid arguments. Data must be an object.");var r={type:"post",subscription_id:t.id,data:n};this.session.sendFireAndForget(r)},e.prototype.closeSingleSubscription=function(e,t){e.protocolState.subscriptionsMap&&delete e.protocolState.subscriptionsMap[t.id];var n={type:"drop-subscription",subscription_id:t.id,reason:"Server dropping a single subscription"};this.session.sendFireAndForget(n),t.instance,this.callbacks.execute(SUBSCRIPTION_REMOVED$1,t,e)},e.prototype.closeMultipleSubscriptions=function(e,t){var n=this;if("object"==typeof e&&"object"==typeof e.protocolState.subscriptionsMap&&e.protocolState.subscriptionsMap){var r=e.protocolState.subscriptionsMap,i=Object.keys(r).map((function(e){return r[e]}));"string"==typeof t&&(i=i.filter((function(e){return e.branchKey===t}))),i.forEach((function(e){delete r[e.id];var t={type:"drop-subscription",subscription_id:e.id,reason:"Server dropping all subscriptions on stream_id: "+e.streamId};n.session.sendFireAndForget(t)}))}},e.prototype.getSubscriptionList=function(e,t){if("object"!=typeof e)return[];if(!e.protocolState.subscriptionsMap)return[];var n=e.protocolState.subscriptionsMap,r=Object.keys(n).map((function(e){return n[e]}));return"string"!=typeof t?r:r.filter((function(e){return e.branchKey===t}))},e.prototype.getBranchList=function(e){if("object"!=typeof e)return[];if(!e.protocolState.subscriptionsMap)return[];var t=e.protocolState.subscriptionsMap,n=Object.keys(t).map((function(e){return t[e]})),r=[];return n.forEach((function(e){var t="";"object"==typeof e&&"string"==typeof e.branchKey&&(t=e.branchKey),-1===r.indexOf(t)&&r.push(t)})),r},e.prototype.onSubAdded=function(e){this.onSubscriptionLifetimeEvent(SUBSCRIPTION_ADDED$1,e)},e.prototype.onSubRequest=function(e){this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REQUEST$1,e)},e.prototype.onSubRemoved=function(e){this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REMOVED$1,e)},e.prototype.handleRemoveInterest=function(e){var t=this.serverRepository.getById(e.method_id);if("string"==typeof e.subscription_id&&"object"==typeof t&&t.protocolState.subscriptionsMap&&"object"==typeof t.protocolState.subscriptionsMap[e.subscription_id]){var n=t.protocolState.subscriptionsMap[e.subscription_id];delete t.protocolState.subscriptionsMap[e.subscription_id],this.callbacks.execute(SUBSCRIPTION_REMOVED$1,n,t)}},e.prototype.onSubscriptionLifetimeEvent=function(e,t){this.callbacks.add(e,t)},e.prototype.getNextStreamId=function(){return this.nextStreamId+++""},e.prototype.handleAddInterest=function(e){var t=this.repository.getServerById(e.caller_id).instance,n={msg:e,arguments:e.arguments_kv||{},instance:t},r=this.serverRepository.getById(e.method_id);if(void 0!==r)r.protocolState.subscriptionsMap&&r.protocolState.subscriptionsMap[e.subscription_id]?this.sendSubscriptionFailed("A subscription with id "+e.subscription_id+" already exists.",e.subscription_id):this.callbacks.execute(SUBSCRIPTION_REQUEST$1,n,r);else{var i="No method with id "+e.method_id+" on this server.";this.sendSubscriptionFailed(i,e.subscription_id)}},e.prototype.sendSubscriptionFailed=function(e,t){var n={type:"error",reason_uri:this.ERR_URI_SUBSCRIPTION_FAILED,reason:e,request_id:t};this.session.sendFireAndForget(n)},e.prototype.getStreamId=function(e,t){if("string"!=typeof t&&(t=""),!e.protocolState.branchKeyToStreamIdMap)throw new Error("streaming ".concat(e.definition.name," method without protocol state"));var n=e.protocolState.branchKeyToStreamIdMap.filter((function(e){return e.key===t}))[0],r=n?n.streamId:void 0;return"string"==typeof r&&""!==r||(r=this.getNextStreamId(),e.protocolState.branchKeyToStreamIdMap.push({key:t,streamId:r})),r},e}(),ServerProtocol$1=function(){function e(e,t,n,r){var i=this;this.session=e,this.clientRepository=t,this.serverRepository=n,this.logger=r,this.callbacks=lib$1$1(),this.streaming=new ServerStreaming$2(e,t,n),this.session.on("invoke",(function(e){return i.handleInvokeMessage(e)}))}return e.prototype.createStream=function(e){return e.protocolState.subscriptionsMap={},e.protocolState.branchKeyToStreamIdMap=[],this.register(e,!0)},e.prototype.register=function(e,t){var n,r=this,i=e.definition,o=Object.assign({},{metadata:null!==(n=i.flags)&&void 0!==n?n:{}},{streaming:t||!1}),l={type:"register",methods:[{id:e.repoId,name:i.name,display_name:i.displayName,description:i.description,version:i.version,flags:o,object_types:i.objectTypes||i.object_types,input_signature:i.accepts,result_signature:i.returns,restrictions:void 0}]};return this.session.send(l,{methodId:e.repoId}).then((function(){r.logger.debug("registered method "+e.definition.name+" with id "+e.repoId)})).catch((function(t){throw r.logger.warn("failed to register method ".concat(e.definition.name," with id ").concat(e.repoId," - ").concat(JSON.stringify(t))),t}))},e.prototype.onInvoked=function(e){this.callbacks.add("onInvoked",e)},e.prototype.methodInvocationResult=function(e,t,n,r){var i;i=n||""===n?{type:"error",request_id:t,reason_uri:"agm.errors.client_error",reason:n,context:r,peer_id:void 0}:{type:"yield",invocation_id:t,peer_id:this.session.peerId,result:r,request_id:void 0},this.session.sendFireAndForget(i)},e.prototype.unregister=function(e){return __awaiter$6(this,void 0,void 0,(function(){var t;return __generator$1(this,(function(n){switch(n.label){case 0:return t={type:"unregister",methods:[e.repoId]},[4,this.session.send(t)];case 1:return n.sent(),[2]}}))}))},e.prototype.getBranchList=function(e){return this.streaming.getBranchList(e)},e.prototype.getSubscriptionList=function(e,t){return this.streaming.getSubscriptionList(e,t)},e.prototype.closeAllSubscriptions=function(e,t){this.streaming.closeMultipleSubscriptions(e,t)},e.prototype.pushData=function(e,t,n){this.streaming.pushData(e,t,n)},e.prototype.pushDataToSingle=function(e,t,n){this.streaming.pushDataToSingle(e,t,n)},e.prototype.closeSingleSubscription=function(e,t){this.streaming.closeSingleSubscription(e,t)},e.prototype.acceptRequestOnBranch=function(e,t,n){this.streaming.acceptRequestOnBranch(e,t,n)},e.prototype.rejectRequest=function(e,t,n){this.streaming.rejectRequest(e,t,n)},e.prototype.onSubRequest=function(e){this.streaming.onSubRequest(e)},e.prototype.onSubAdded=function(e){this.streaming.onSubAdded(e)},e.prototype.onSubRemoved=function(e){this.streaming.onSubRemoved(e)},e.prototype.handleInvokeMessage=function(e){var t=e.invocation_id,n=e.caller_id,r=e.method_id,i=e.arguments_kv,o=this.serverRepository.getList().filter((function(e){return e.repoId===r}))[0];if(void 0!==o){var l={args:i,instance:this.clientRepository.getServerById(n).instance};this.callbacks.execute("onInvoked",o,t,l)}},e}(),UserSubscription$1=function(){function e(e,t){this.repository=e,this.subscriptionData=t}return Object.defineProperty(e.prototype,"requestArguments",{get:function(){return this.subscriptionData.params.arguments||{}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"servers",{get:function(){var e=this;return this.subscriptionData.trackedServers.filter((function(e){return e.subscriptionId})).map((function(t){return e.repository.getServerById(t.serverId).instance}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serverInstance",{get:function(){return this.servers[0]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"stream",{get:function(){return this.subscriptionData.method},enumerable:!1,configurable:!0}),e.prototype.onData=function(e){if("function"!=typeof e)throw new TypeError("The data callback must be a function.");this.subscriptionData.handlers.onData.push(e),1===this.subscriptionData.handlers.onData.length&&this.subscriptionData.queued.data.length>0&&this.subscriptionData.queued.data.forEach((function(t){e(t)}))},e.prototype.onClosed=function(e){if("function"!=typeof e)throw new TypeError("The callback must be a function.");this.subscriptionData.handlers.onClosed.push(e)},e.prototype.onFailed=function(e){},e.prototype.onConnected=function(e){if("function"!=typeof e)throw new TypeError("The callback must be a function.");this.subscriptionData.handlers.onConnected.push(e)},e.prototype.close=function(){this.subscriptionData.close()},e.prototype.setNewSubscription=function(e){this.subscriptionData=e},e}(),TimedCache$1=function(){function e(e){this.config=e,this.cache=[],this.timeoutIds=[]}return e.prototype.add=function(e){var t=this,n=shortid$4();this.cache.push({id:n,element:e});var r=setTimeout((function(){var e=t.cache.findIndex((function(e){return e.id===n}));e<0||t.cache.splice(e,1)}),this.config.ELEMENT_TTL_MS);this.timeoutIds.push(r)},e.prototype.flush=function(){var e=this.cache.map((function(e){return e.element}));return this.timeoutIds.forEach((function(e){return clearInterval(e)})),this.cache=[],this.timeoutIds=[],e},e}(),STATUS_AWAITING_ACCEPT$1="awaitingAccept",STATUS_SUBSCRIBED$1="subscribed",ERR_MSG_SUB_FAILED$1="Subscription failed.",ERR_MSG_SUB_REJECTED$1="Subscription rejected.",ON_CLOSE_MSG_SERVER_INIT$1="ServerInitiated",ON_CLOSE_MSG_CLIENT_INIT$1="ClientInitiated",ClientStreaming$1=function(){function e(e,t,n){var r=this;this.session=e,this.repository=t,this.logger=n,this.subscriptionsList={},this.timedCache=new TimedCache$1({ELEMENT_TTL_MS:1e4}),this.subscriptionIdToLocalKeyMap={},this.nextSubLocalKey=0,this.handleErrorSubscribing=function(e){var t=e._tag,n=t.subLocalKey,i=r.subscriptionsList[n];if("object"==typeof i&&(i.trackedServers=i.trackedServers.filter((function(e){return e.serverId!==t.serverId})),i.trackedServers.length<=0)){if(clearTimeout(i.timeoutId),i.status===STATUS_AWAITING_ACCEPT$1){var o="string"==typeof e.reason&&""!==e.reason?' Publisher said "'+e.reason+'".':" No reason given.",l="object"==typeof i.params.arguments?JSON.stringify(i.params.arguments):"{}";i.error({message:ERR_MSG_SUB_REJECTED$1+o+" Called with:"+l,called_with:i.params.arguments,method:i.method})}else i.status===STATUS_SUBSCRIBED$1&&r.callOnClosedHandlers(i);delete r.subscriptionsList[n]}},this.handleSubscribed=function(e){var t=e._tag.subLocalKey,n=r.subscriptionsList[t];if("object"==typeof n){var i=e._tag.serverId,o=n.trackedServers.filter((function(e){return e.serverId===i}))[0];if("object"==typeof o){o.subscriptionId=e.subscription_id,r.subscriptionIdToLocalKeyMap[e.subscription_id]=t;var l=n.status===STATUS_AWAITING_ACCEPT$1;if(n.status=STATUS_SUBSCRIBED$1,l){var s=!1,a=n.subscription;a?(a.setNewSubscription(n),n.success(a),s=!0):(a=new UserSubscription$1(r.repository,n),n.subscription=a,n.success(a));for(var u=0,c=n.handlers.onConnected;u0?a.forEach((function(e){"function"==typeof e&&e(s())})):u.push(s())}}}},this.handleSubscriptionCancelled=function(e){var t=r.subscriptionIdToLocalKeyMap[e.subscription_id];if(void 0!==t){var n=r.subscriptionsList[t];if("object"==typeof n){var i=n.trackedServers.length-1;n.trackedServers=n.trackedServers.filter((function(t){return t.subscriptionId!==e.subscription_id||(n.queued.closers.push(t.serverId),!1)})),n.trackedServers.length===i&&(n.trackedServers.length<=0&&(r.timedCache.add(n),clearTimeout(n.timeoutId),r.callOnClosedHandlers(n),delete r.subscriptionsList[t]),delete r.subscriptionIdToLocalKeyMap[e.subscription_id])}}},e.on("subscribed",this.handleSubscribed),e.on("event",this.handleEventData),e.on("subscription-cancelled",this.handleSubscriptionCancelled)}return e.prototype.subscribe=function(e,t,n,r,i,o){var l=this;if(0!==n.length){var s=this.getNextSubscriptionLocalKey(),a=this.registerSubscription(s,e,t,r,i,t.methodResponseTimeout||1e4,o);"object"==typeof a?n.forEach((function(n){var r=n.server.id,i=n.methods.find((function(t){return t.name===e.name}));if(i){a.trackedServers.push({serverId:r,subscriptionId:void 0});var o={type:"subscribe",server_id:r,method_id:i.gatewayId,arguments_kv:t.arguments};l.session.send(o,{serverId:r,subLocalKey:s}).then((function(e){return l.handleSubscribed(e)})).catch((function(e){return l.handleErrorSubscribing(e)}))}else l.logger.error("can not find method ".concat(e.name," for target ").concat(n.server.id))})):i({method:e,called_with:t.arguments,message:ERR_MSG_SUB_FAILED$1+" Unable to register the user callbacks."})}else i({method:e,called_with:t.arguments,message:ERR_MSG_SUB_FAILED$1+" No available servers matched the target params."})},e.prototype.drainSubscriptions=function(){var e=Object.values(this.subscriptionsList);return this.subscriptionsList={},this.subscriptionIdToLocalKeyMap={},e},e.prototype.drainSubscriptionsCache=function(){return this.timedCache.flush()},e.prototype.getNextSubscriptionLocalKey=function(){var e=this.nextSubLocalKey;return this.nextSubLocalKey+=1,e},e.prototype.registerSubscription=function(e,t,n,r,i,o,l){var s=this,a={localKey:e,status:STATUS_AWAITING_ACCEPT$1,method:t,params:n,success:r,error:i,trackedServers:[],handlers:{onData:(null==l?void 0:l.handlers.onData)||[],onClosed:(null==l?void 0:l.handlers.onClosed)||[],onConnected:(null==l?void 0:l.handlers.onConnected)||[]},queued:{data:[],closers:[]},timeoutId:void 0,close:function(){return s.closeSubscription(e)},subscription:null==l?void 0:l.subscription};return l||(n.onData&&a.handlers.onData.push(n.onData),n.onClosed&&a.handlers.onClosed.push(n.onClosed),n.onConnected&&a.handlers.onConnected.push(n.onConnected)),this.subscriptionsList[e]=a,a.timeoutId=setTimeout((function(){if(void 0!==s.subscriptionsList[e]){var r=s.subscriptionsList[e];r.status===STATUS_AWAITING_ACCEPT$1?(i({method:t,called_with:n.arguments,message:ERR_MSG_SUB_FAILED$1+" Subscription attempt timed out after "+o+" ms."}),delete s.subscriptionsList[e]):r.status===STATUS_SUBSCRIBED$1&&r.trackedServers.length>0&&(r.trackedServers=r.trackedServers.filter((function(e){return void 0!==e.subscriptionId})),delete r.timeoutId,r.trackedServers.length<=0&&(s.callOnClosedHandlers(r),delete s.subscriptionsList[e]))}}),o),a},e.prototype.callOnClosedHandlers=function(e,t){var n,r=e.queued.closers.length,i=r>0?e.queued.closers[r-1]:null;void 0!==i&&"string"==typeof i&&(n=this.repository.getServerById(i).instance),e.handlers.onClosed.forEach((function(r){"function"==typeof r&&r({message:t||ON_CLOSE_MSG_SERVER_INIT$1,requestArguments:e.params.arguments||{},server:n,stream:e.method})}))},e.prototype.closeSubscription=function(e){var t=this,n=this.subscriptionsList[e];"object"==typeof n&&(n.trackedServers.forEach((function(e){void 0!==e.subscriptionId&&(n.queued.closers.push(e.serverId),t.session.sendFireAndForget({type:"unsubscribe",subscription_id:e.subscriptionId,reason_uri:"",reason:ON_CLOSE_MSG_CLIENT_INIT$1}),delete t.subscriptionIdToLocalKeyMap[e.subscriptionId])})),n.trackedServers=[],this.callOnClosedHandlers(n,ON_CLOSE_MSG_CLIENT_INIT$1),delete this.subscriptionsList[e])},e}(),ClientProtocol$1=function(){function e(e,t,n){var r=this;this.session=e,this.repository=t,this.logger=n,e.on("peer-added",(function(e){return r.handlePeerAdded(e)})),e.on("peer-removed",(function(e){return r.handlePeerRemoved(e)})),e.on("methods-added",(function(e){return r.handleMethodsAddedMessage(e)})),e.on("methods-removed",(function(e){return r.handleMethodsRemovedMessage(e)})),this.streaming=new ClientStreaming$1(e,t,n)}return e.prototype.subscribe=function(e,t,n,r,i,o){this.streaming.subscribe(e,t,n,r,i,o)},e.prototype.invoke=function(e,t,n,r){var i=this,o=r.id,l={type:"call",server_id:o,method_id:t.gatewayId,arguments_kv:n};return this.session.send(l,{invocationId:e,serverId:o}).then((function(e){return i.handleResultMessage(e)})).catch((function(e){return i.handleInvocationError(e)}))},e.prototype.drainSubscriptions=function(){return this.streaming.drainSubscriptions()},e.prototype.drainSubscriptionsCache=function(){return this.streaming.drainSubscriptionsCache()},e.prototype.handlePeerAdded=function(e){var t=e.new_peer_id,n=e.identity,r=!e.meta||e.meta.local,i=Number(n.process),o={machine:n.machine,pid:isNaN(i)?n.process:i,instance:n.instance,application:n.application,applicationName:n.applicationName,environment:n.environment,region:n.region,user:n.user,windowId:n.windowId,peerId:t,api:n.api,isLocal:r};this.repository.addServer(o,t)},e.prototype.handlePeerRemoved=function(e){var t=e.removed_id,n=e.reason;this.repository.removeServerById(t,n)},e.prototype.handleMethodsAddedMessage=function(e){var t=this,n=e.server_id;e.methods.forEach((function(e){t.repository.addServerMethod(n,e)}))},e.prototype.handleMethodsRemovedMessage=function(e){var t=this,n=e.server_id,r=e.methods,i=this.repository.getServerById(n);Object.keys(i.methods).forEach((function(e){var o=i.methods[e];r.indexOf(o.gatewayId)>-1&&t.repository.removeServerMethod(n,e)}))},e.prototype.handleResultMessage=function(e){var t=e._tag.invocationId,n=e.result,r=e._tag.serverId;return{invocationId:t,result:n,instance:this.repository.getServerById(r).instance,status:InvokeStatus$1.Success,message:""}},e.prototype.handleInvocationError=function(e){if(this.logger.debug("handle invocation error ".concat(JSON.stringify(e))),"_tag"in e){var t=e._tag.invocationId,n=e._tag.serverId,r=this.repository.getServerById(n),i=e.reason;return{invocationId:t,result:e.context,instance:r.instance,status:InvokeStatus$1.Error,message:i}}return{invocationId:"",message:e.message,status:InvokeStatus$1.Error,error:e}},e}();function gW3ProtocolFactory$1(e,t,n,r,i,o){var l,s=i.logger.subLogger("gw3-protocol"),a=new Promise((function(e){l=e})),u=t.domain("agm",["subscribed"]),c=new ServerProtocol$1(u,n,r,s.subLogger("server")),h=new ClientProtocol$1(u,n,s.subLogger("client"));return u.onJoined((function(i){n.addServer(e,t.peerId),i?function(){return __awaiter$6(this,void 0,void 0,(function(){var e,t,n,i,l,a,u,c,d,f,p;return __generator$1(this,(function(g){switch(g.label){case 0:for(s.info("reconnected - will replay registered methods and subscriptions"),h.drainSubscriptionsCache().forEach((function(e){var t=e.method,n=Object.assign({},e.params);s.info("trying to soft-re-subscribe to method ".concat(t.name,", with params: ").concat(JSON.stringify(n))),o.client.subscribe(t,n,void 0,void 0,e).then((function(){return s.info("soft-subscribing to method ".concat(t.name," DONE"))})).catch((function(e){return s.warn("subscribing to method ".concat(t.name," failed: ").concat(JSON.stringify(e),"}"))}))})),e=[],t=h.drainSubscriptions(),n=function(t){var n=t.method,r=Object.assign({},t.params);s.info("trying to re-subscribe to method ".concat(n.name,", with params: ").concat(JSON.stringify(r))),e.push(o.client.subscribe(n,r,void 0,void 0,t).then((function(){return s.info("subscribing to method ".concat(n.name," DONE"))})))},i=0,l=t;i0))return[3,4];i.label=1;case 1:return i.trys.push([1,3,,4]),[4,o.invoke(t,{appName:null==e?void 0:e.application,pid:process.pid})];case 2:return i.sent(),[3,4];case 3:return n=i.sent(),r=n,l.error("Cannot register as an instance: ".concat(JSON.stringify(r.message))),[3,4];case 4:return[2]}}))}))}()})).then((function(){return b(p.libs||[])})).then((function(){var e=Object.keys(g).map((function(e){var t=g[e];return t.ready?t.ready():Promise.resolve()}));return Promise.all(e)})).then((function(){var n={coreVersion:version$5,version:p.version};f.stop();var r={feedback:function(e){o&&o.invoke("T42.ACS.Feedback",e,"best")},info:n,logger:l,interop:o,agm:o,connection:i,metrics:s,contexts:a,bus:u,version:p.version,userConfig:e,done:function(){return null==l||l.info("done called by user..."),i.logout()}};if(r.performance={get glueVer(){return p.version},get glueConfig(){return JSON.stringify(e)},get browser(){return window.performance.timing.toJSON()},get memory(){return window.performance.memory},get initTimes(){var e=getAllTimers$1();return Object.keys(e).map((function(t){var n=e[t];return{name:t,duration:n.endTime-n.startTime,marks:n.marks,startTime:n.startTime,endTime:n.endTime}}))}},Object.keys(g).forEach((function(e){var t=g[e];r[e]=t})),r.config={},Object.keys(p).forEach((function(e){r.config[e]=p[e]})),t&&t.extOptions&&Object.keys(t.extOptions).forEach((function(e){r.config[e]=null==t?void 0:t.extOptions[e]})),(null==t?void 0:t.enrichGlue)&&t.enrichGlue(r),h&&h.updatePerfData&&h.updatePerfData(r.performance),r.agm){var c=function(e,t,n){return function(){return r.logger.warn("glue.js - 'glue.agm.".concat(t,"' method is deprecated, use 'glue.interop.").concat(n,"' instead.")),e.apply(r.agm,arguments)}},d=r.agm;d.method_added=c(r.agm.methodAdded,"method_added","methodAdded"),d.method_removed=c(r.agm.methodRemoved,"method_removed","methodRemoved"),d.server_added=c(r.agm.serverAdded,"server_added","serverAdded"),d.server_method_aded=c(r.agm.serverMethodAdded,"server_method_aded","serverMethodAdded"),d.server_method_removed=c(r.agm.serverMethodRemoved,"server_method_removed","serverMethodRemoved")}return r})).catch((function(e){return Promise.reject({err:e,libs:g})}))};"undefined"!=typeof window&&(window.IOConnectCore=IOConnectCoreFactory$1),IOConnectCoreFactory$1.version=version$5,IOConnectCoreFactory$1.default=IOConnectCoreFactory$1;const iOConnectBrowserFactory=createFactoryFunction(IOConnectCoreFactory$1);if("undefined"!=typeof window){const e=window;e.IOBrowser=iOConnectBrowserFactory,delete e.GlueCore,delete e.IOConnectCore}const legacyGlobal$1=window.glue42gd||window.glue42core,ioGlobal$1=window.iodesktop||window.iobrowser;legacyGlobal$1||ioGlobal$1||(window.iobrowser={webStarted:!1}),iOConnectBrowserFactory.version=version$2$1;const Glue42CoreMessageTypes={connectionRequest:{name:"connectionRequest"},connectionAccepted:{name:"connectionAccepted"},platformPing:{name:"platformPing"},platformReady:{name:"platformReady"},platformUnload:{name:"platformUnload"},clientUnload:{name:"clientUnload"},parentPing:{name:"parentPing"},parentReady:{name:"parentReady"},gatewayDisconnect:{name:"gatewayDisconnect"},gatewayInternalConnect:{name:"gatewayInternalConnect"},transportSwitchRequest:{name:"transportSwitchRequest"},transportSwitchResponse:{name:"transportSwitchResponse"},getCurrentTransport:{name:"getCurrentTransport"},getCurrentTransportResponse:{name:"getCurrentTransportResponse"},checkPreferredLogic:{name:"checkPreferredLogic"},checkPreferredConnection:{name:"checkPreferredConnection"},checkPreferredLogicResponse:{name:"checkPreferredLogicResponse"},checkPreferredConnectionResponse:{name:"checkPreferredConnectionResponse"}},GlueWebPlatformControlName="T42.Web.Platform.Control",GlueWebPlatformStreamName="T42.Web.Platform.Stream",GlueClientControlName="T42.Web.Client.Control",GlueWebPlatformWorkspacesStreamName="T42.Web.Platform.WSP.Stream",GlueWorkspaceFrameClientControlName="T42.Workspaces.Control",GlueWorkspacesEventsReceiverName="T42.Workspaces.Events",GlueWebIntentsPrefix="Tick42.FDC3.Intents.",ChannelContextPrefix="___channel___",serviceWorkerBroadcastChannelName="glue42-core-worker",webPlatformTransportName="web-platform",defaultNoAppWindowComponentAppName$1="no-app-window",defaultPlatformConfig={windows:{windowResponseTimeoutMs:1e4,defaultWindowOpenBounds:{top:0,left:0,width:800,height:600}},applications:{local:[]},layouts:{mode:"idb",local:[]},channels:{definitions:[]},plugins:{definitions:[]},licenseKey:"",gateway:{logging:{level:"info"}},themes:{defaultTheme:"dark"},connection:{},browser:{},environment:{},workspacesFrameCache:!0},defaultNotificationsConfig={enable:!0,enableToasts:!0,sourceFilter:{allowed:["*"],blocked:[]},clearNotificationOnClick:!0},defaultTargetString="*",defaultFetchTimeoutMs=3e3,defaultOpenerTimeoutMs=1e3,defaultPreferredDiscoveryIntervalMS=15e3,defaultClientPortRequestTimeoutMS=15e3,defaultClientPreferredLogicTestTimeoutMS=5e3,checkIsOpenerIOConnect=e=>{if(!window.opener)return Promise.resolve(!1);if(window.name.includes("g42-"))return Promise.resolve(!0);const t=(null==e?void 0:e.allowedClientFallbackOrigin)||defaultTargetString;return new Promise((e=>{const n=t=>{var r;const i=null===(r=t.data)||void 0===r?void 0:r.glue42core;i&&i.type===Glue42CoreMessageTypes.platformReady.name&&(window.removeEventListener("message",n),e(!0))};window.addEventListener("message",n);const r={glue42core:{type:Glue42CoreMessageTypes.platformPing.name}};window.opener.postMessage(r,t),setTimeout((()=>e(!1)),defaultOpenerTimeoutMs)}))},checkIfPlacedInWorkspace=()=>-1!==window.name.indexOf("#wsp"),fallbackToEnterprise=e=>__awaiter$7(void 0,void 0,void 0,(function*(){var t,n,r,i;const o=(null==e?void 0:e.browserFactory)?yield null==e?void 0:e.browserFactory(null==e?void 0:e.browser):yield iOConnectBrowserFactory(null==e?void 0:e.browser);return(null===(n=null===(t=null==e?void 0:e.applications)||void 0===t?void 0:t.local)||void 0===n?void 0:n.length)&&(yield o.appManager.inMemory.import(e.applications.local,"merge")),(null===(i=null===(r=null==e?void 0:e.layouts)||void 0===r?void 0:r.local)||void 0===i?void 0:i.length)&&(yield o.layouts.import(e.layouts.local,"merge")),{io:o}}));var commonjsGlobal$1="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==global?global:"undefined"!=typeof self?self:{};function getDefaultExportFromCjs$1(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function getAugmentedNamespace(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})})),n}function createRegistry$2(e){if(e&&e.errorHandling&&"function"!=typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"==typeof e.errorHandling&&e.errorHandling,n={};function r(n,r){var i=n instanceof Error?n:new Error(n);if(t)t(i);else{var o='[ERROR] callback-registry: User callback for key "'+r+'" failed: '+i.stack;if(e)switch(e.errorHandling){case"log":return console.error(o);case"silent":return;case"throw":throw new Error(o)}console.error(o)}}return{add:function(e,t,i){var o=n[e];return o||(o=[],n[e]=o),o.push(t),i&&setTimeout((function(){i.forEach((function(i){var o;if(null===(o=n[e])||void 0===o?void 0:o.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(t){r(t,e)}}))}),0),function(){var r=n[e];r&&(0===(r=r.reduce((function(e,n,r){return n===t&&e.length===r||e.push(n),e}),[])).length?delete n[e]:n[e]=r)}},execute:function(e){for(var t=[],i=1;i>(-2*o&6)):0)i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(i);return s};function t$1(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw"Illegal base64url string!"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,t){var n=t.charCodeAt(0).toString(16).toUpperCase();return n.length<2&&(n="0"+n),"%"+n})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,t){if("string"!=typeof e)throw new n("Invalid token specified");var r=!0===(t=t||{}).header?0:1;try{return JSON.parse(t$1(e.split(".")[r]))}catch(e){throw new n("Invalid token specified: "+e.message)}}n.prototype=new Error,n.prototype.name="InvalidTokenError";var jwtDecode_esm=Object.freeze({__proto__:null,InvalidTokenError:n,default:o}),require$$0$1=getAugmentedNamespace(jwtDecode_esm),browser="object"==typeof self?self.FormData:window.FormData,base={};function bind$2(e,t){return function(){return e.apply(t,arguments)}}const{toString:toString$1}=Object.prototype,{getPrototypeOf:getPrototypeOf$1}=Object,kindOf=(e=>t=>{const n=toString$1.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),kindOfTest=e=>(e=e.toLowerCase(),t=>kindOf(t)===e),typeOfTest=e=>t=>typeof t===e,{isArray:isArray$3}=Array,isUndefined=typeOfTest("undefined");function isBuffer$1(e){return null!==e&&!isUndefined(e)&&null!==e.constructor&&!isUndefined(e.constructor)&&isFunction$1(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const isArrayBuffer$3=kindOfTest("ArrayBuffer");function isArrayBufferView(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&isArrayBuffer$3(e.buffer),t}const isString$4=typeOfTest("string"),isFunction$1=typeOfTest("function"),isNumber$2=typeOfTest("number"),isObject=e=>null!==e&&"object"==typeof e,isBoolean$2=e=>!0===e||!1===e,isPlainObject=e=>{if("object"!==kindOf(e))return!1;const t=getPrototypeOf$1(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},isDate$2=kindOfTest("Date"),isFile=kindOfTest("File"),isBlob=kindOfTest("Blob"),isFileList=kindOfTest("FileList"),isStream=e=>isObject(e)&&isFunction$1(e.pipe),isFormData=e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||isFunction$1(e.append)&&("formdata"===(t=kindOf(e))||"object"===t&&isFunction$1(e.toString)&&"[object FormData]"===e.toString()))},isURLSearchParams=kindOfTest("URLSearchParams"),trim=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function forEach$2(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,i;if("object"!=typeof e&&(e=[e]),isArray$3(e))for(r=0,i=e.length;r0;)if(r=n[i],t===r.toLowerCase())return r;return null}const _global="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:commonjsGlobal$1,isContextDefined=e=>!isUndefined(e)&&e!==_global;function merge(){const{caseless:e}=isContextDefined(this)&&this||{},t={},n=(n,r)=>{const i=e&&findKey(t,r)||r;isPlainObject(t[i])&&isPlainObject(n)?t[i]=merge(t[i],n):isPlainObject(n)?t[i]=merge({},n):isArray$3(n)?t[i]=n.slice():t[i]=n};for(let e=0,t=arguments.length;e(forEach$2(t,((t,r)=>{n&&isFunction$1(t)?e[r]=bind$2(t,n):e[r]=t}),{allOwnKeys:r}),e),stripBOM=e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject=(e,t,n,r)=>{let i,o,l;const s={};if(t=t||{},null==e)return t;do{for(i=Object.getOwnPropertyNames(e),o=i.length;o-- >0;)l=i[o],r&&!r(l,e,t)||s[l]||(t[l]=e[l],s[l]=!0);e=!1!==n&&getPrototypeOf$1(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},endsWith=(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray=e=>{if(!e)return null;if(isArray$3(e))return e;let t=e.length;if(!isNumber$2(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},isTypedArray$2=(e=>t=>e&&t instanceof e)("undefined"!=typeof Uint8Array&&getPrototypeOf$1(Uint8Array)),forEachEntry=(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll=(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm=kindOfTest("HTMLFormElement"),toCamelCase=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),hasOwnProperty$1=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),isRegExp$1=kindOfTest("RegExp"),reduceDescriptors=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};forEach$2(n,((n,i)=>{let o;!1!==(o=t(n,i,e))&&(r[i]=o||n)})),Object.defineProperties(e,r)},freezeMethods=e=>{reduceDescriptors(e,((t,n)=>{if(isFunction$1(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];isFunction$1(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet=(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return isArray$3(e)?r(e):r(String(e).split(t)),n},noop=()=>{},toFiniteNumber=(e,t)=>(e=+e,Number.isFinite(e)?e:t),ALPHA="abcdefghijklmnopqrstuvwxyz",DIGIT="0123456789",ALPHABET={DIGIT:DIGIT,ALPHA:ALPHA,ALPHA_DIGIT:ALPHA+ALPHA.toUpperCase()+DIGIT},generateString=(e=16,t=ALPHABET.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function isSpecCompliantForm(e){return!!(e&&isFunction$1(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])}const toJSONObject=e=>{const t=new Array(10),n=(e,r)=>{if(isObject(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const i=isArray$3(e)?[]:{};return forEach$2(e,((e,t)=>{const o=n(e,r+1);!isUndefined(o)&&(i[t]=o)})),t[r]=void 0,i}}return e};return n(e,0)},isAsyncFn=kindOfTest("AsyncFunction"),isThenable=e=>e&&(isObject(e)||isFunction$1(e))&&isFunction$1(e.then)&&isFunction$1(e.catch);var utils$1={isArray:isArray$3,isArrayBuffer:isArrayBuffer$3,isBuffer:isBuffer$1,isFormData:isFormData,isArrayBufferView:isArrayBufferView,isString:isString$4,isNumber:isNumber$2,isBoolean:isBoolean$2,isObject:isObject,isPlainObject:isPlainObject,isUndefined:isUndefined,isDate:isDate$2,isFile:isFile,isBlob:isBlob,isRegExp:isRegExp$1,isFunction:isFunction$1,isStream:isStream,isURLSearchParams:isURLSearchParams,isTypedArray:isTypedArray$2,isFileList:isFileList,forEach:forEach$2,merge:merge,extend:extend,trim:trim,stripBOM:stripBOM,inherits:inherits,toFlatObject:toFlatObject,kindOf:kindOf,kindOfTest:kindOfTest,endsWith:endsWith,toArray:toArray,forEachEntry:forEachEntry,matchAll:matchAll,isHTMLForm:isHTMLForm,hasOwnProperty:hasOwnProperty$1,hasOwnProp:hasOwnProperty$1,reduceDescriptors:reduceDescriptors,freezeMethods:freezeMethods,toObjectSet:toObjectSet,toCamelCase:toCamelCase,noop:noop,toFiniteNumber:toFiniteNumber,findKey:findKey,global:_global,isContextDefined:isContextDefined,ALPHABET:ALPHABET,generateString:generateString,isSpecCompliantForm:isSpecCompliantForm,toJSONObject:toJSONObject,isAsyncFn:isAsyncFn,isThenable:isThenable};function AxiosError(e,t,n,r,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),i&&(this.response=i)}utils$1.inherits(AxiosError,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:utils$1.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const prototype$1=AxiosError.prototype,descriptors={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{descriptors[e]={value:e}})),Object.defineProperties(AxiosError,descriptors),Object.defineProperty(prototype$1,"isAxiosError",{value:!0}),AxiosError.from=(e,t,n,r,i,o)=>{const l=Object.create(prototype$1);return utils$1.toFlatObject(e,l,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),AxiosError.call(l,e.message,t,n,r,i),l.cause=e,l.name=e.name,o&&Object.assign(l,o),l};var httpAdapter=null;function isVisitable(e){return utils$1.isPlainObject(e)||utils$1.isArray(e)}function removeBrackets(e){return utils$1.endsWith(e,"[]")?e.slice(0,-2):e}function renderKey(e,t,n){return e?e.concat(t).map((function(e,t){return e=removeBrackets(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}function isFlatArray(e){return utils$1.isArray(e)&&!e.some(isVisitable)}const predicates=utils$1.toFlatObject(utils$1,{},null,(function(e){return/^is[A-Z]/.test(e)}));function toFormData(e,t,n){if(!utils$1.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=utils$1.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!utils$1.isUndefined(t[e])}))).metaTokens,i=n.visitor||u,o=n.dots,l=n.indexes,s=(n.Blob||"undefined"!=typeof Blob&&Blob)&&utils$1.isSpecCompliantForm(t);if(!utils$1.isFunction(i))throw new TypeError("visitor must be a function");function a(e){if(null===e)return"";if(utils$1.isDate(e))return e.toISOString();if(!s&&utils$1.isBlob(e))throw new AxiosError("Blob is not supported. Use a Buffer instead.");return utils$1.isArrayBuffer(e)||utils$1.isTypedArray(e)?s&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function u(e,n,i){let s=e;if(e&&!i&&"object"==typeof e)if(utils$1.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(utils$1.isArray(e)&&isFlatArray(e)||(utils$1.isFileList(e)||utils$1.endsWith(n,"[]"))&&(s=utils$1.toArray(e)))return n=removeBrackets(n),s.forEach((function(e,r){!utils$1.isUndefined(e)&&null!==e&&t.append(!0===l?renderKey([n],r,o):null===l?n:n+"[]",a(e))})),!1;return!!isVisitable(e)||(t.append(renderKey(i,n,o),a(e)),!1)}const c=[],h=Object.assign(predicates,{defaultVisitor:u,convertValue:a,isVisitable:isVisitable});if(!utils$1.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!utils$1.isUndefined(n)){if(-1!==c.indexOf(n))throw Error("Circular reference detected in "+r.join("."));c.push(n),utils$1.forEach(n,(function(n,o){!0===(!(utils$1.isUndefined(n)||null===n)&&i.call(t,n,utils$1.isString(o)?o.trim():o,r,h))&&e(n,r?r.concat(o):[o])})),c.pop()}}(e),t}function encode$1(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function AxiosURLSearchParams(e,t){this._pairs=[],e&&toFormData(e,this,t)}const prototype=AxiosURLSearchParams.prototype;function encode(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function buildURL(e,t,n){if(!t)return e;const r=n&&n.encode||encode,i=n&&n.serialize;let o;if(o=i?i(t,n):utils$1.isURLSearchParams(t)?t.toString():new AxiosURLSearchParams(t,n).toString(r),o){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}prototype.append=function(e,t){this._pairs.push([e,t])},prototype.toString=function(e){const t=e?function(t){return e.call(this,t,encode$1)}:encode$1;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};class InterceptorManager{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){utils$1.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}var InterceptorManager$1=InterceptorManager,transitionalDefaults={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},URLSearchParams$1="undefined"!=typeof URLSearchParams?URLSearchParams:AxiosURLSearchParams,FormData$1="undefined"!=typeof FormData?FormData:null,Blob$1="undefined"!=typeof Blob?Blob:null,platform$1={isBrowser:!0,classes:{URLSearchParams:URLSearchParams$1,FormData:FormData$1,Blob:Blob$1},protocols:["http","https","file","blob","url","data"]};const hasBrowserEnv="undefined"!=typeof window&&"undefined"!=typeof document,hasStandardBrowserEnv=(product="undefined"!=typeof navigator&&navigator.product,hasBrowserEnv&&["ReactNative","NativeScript","NS"].indexOf(product)<0);var product;const hasStandardBrowserWebWorkerEnv="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts;var utils=Object.freeze({__proto__:null,hasBrowserEnv:hasBrowserEnv,hasStandardBrowserWebWorkerEnv:hasStandardBrowserWebWorkerEnv,hasStandardBrowserEnv:hasStandardBrowserEnv}),platform={...utils,...platform$1};function toURLEncodedForm(e,t){return toFormData(e,new platform.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return platform.isNode&&utils$1.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}function parsePropPath(e){return utils$1.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}function arrayToObject(e){const t={},n=Object.keys(e);let r;const i=n.length;let o;for(r=0;r=e.length;if(o=!o&&utils$1.isArray(r)?r.length:o,s)return utils$1.hasOwnProp(r,o)?r[o]=[r[o],n]:r[o]=n,!l;r[o]&&utils$1.isObject(r[o])||(r[o]=[]);return t(e,n,r[o],i)&&utils$1.isArray(r[o])&&(r[o]=arrayToObject(r[o])),!l}if(utils$1.isFormData(e)&&utils$1.isFunction(e.entries)){const n={};return utils$1.forEachEntry(e,((e,r)=>{t(parsePropPath(e),r,n,0)})),n}return null}function stringifySafely(e,t,n){if(utils$1.isString(e))try{return(t||JSON.parse)(e),utils$1.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}const defaults={transitional:transitionalDefaults,adapter:["xhr","http"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,i=utils$1.isObject(e);i&&utils$1.isHTMLForm(e)&&(e=new FormData(e));if(utils$1.isFormData(e))return r&&r?JSON.stringify(formDataToJSON(e)):e;if(utils$1.isArrayBuffer(e)||utils$1.isBuffer(e)||utils$1.isStream(e)||utils$1.isFile(e)||utils$1.isBlob(e))return e;if(utils$1.isArrayBufferView(e))return e.buffer;if(utils$1.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let o;if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return toURLEncodedForm(e,this.formSerializer).toString();if((o=utils$1.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return toFormData(o?{"files[]":e}:e,t&&new t,this.formSerializer)}}return i||r?(t.setContentType("application/json",!1),stringifySafely(e)):e}],transformResponse:[function(e){const t=this.transitional||defaults.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(e&&utils$1.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw AxiosError.from(e,AxiosError.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:platform.classes.FormData,Blob:platform.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};utils$1.forEach(["delete","get","head","post","put","patch"],(e=>{defaults.headers[e]={}}));var defaults$1=defaults;const ignoreDuplicateOf=utils$1.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);var parseHeaders=e=>{const t={};let n,r,i;return e&&e.split("\n").forEach((function(e){i=e.indexOf(":"),n=e.substring(0,i).trim().toLowerCase(),r=e.substring(i+1).trim(),!n||t[n]&&ignoreDuplicateOf[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t};const $internals=Symbol("internals");function normalizeHeader(e){return e&&String(e).trim().toLowerCase()}function normalizeValue(e){return!1===e||null==e?e:utils$1.isArray(e)?e.map(normalizeValue):String(e)}function parseTokens(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const isValidHeaderName=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function matchHeaderValue(e,t,n,r,i){return utils$1.isFunction(r)?r.call(this,t,n):(i&&(t=n),utils$1.isString(t)?utils$1.isString(r)?-1!==t.indexOf(r):utils$1.isRegExp(r)?r.test(t):void 0:void 0)}function formatHeader(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}function buildAccessors(e,t){const n=utils$1.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,i){return this[r].call(this,t,e,n,i)},configurable:!0})}))}class AxiosHeaders{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function i(e,t,n){const i=normalizeHeader(t);if(!i)throw new Error("header name must be a non-empty string");const o=utils$1.findKey(r,i);(!o||void 0===r[o]||!0===n||void 0===n&&!1!==r[o])&&(r[o||t]=normalizeValue(e))}const o=(e,t)=>utils$1.forEach(e,((e,n)=>i(e,n,t)));return utils$1.isPlainObject(e)||e instanceof this.constructor?o(e,t):utils$1.isString(e)&&(e=e.trim())&&!isValidHeaderName(e)?o(parseHeaders(e),t):null!=e&&i(t,e,n),this}get(e,t){if(e=normalizeHeader(e)){const n=utils$1.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return parseTokens(e);if(utils$1.isFunction(t))return t.call(this,e,n);if(utils$1.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=normalizeHeader(e)){const n=utils$1.findKey(this,e);return!(!n||void 0===this[n]||t&&!matchHeaderValue(this,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function i(e){if(e=normalizeHeader(e)){const i=utils$1.findKey(n,e);!i||t&&!matchHeaderValue(n,n[i],i,t)||(delete n[i],r=!0)}}return utils$1.isArray(e)?e.forEach(i):i(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const i=t[n];e&&!matchHeaderValue(this,this[i],i,e,!0)||(delete this[i],r=!0)}return r}normalize(e){const t=this,n={};return utils$1.forEach(this,((r,i)=>{const o=utils$1.findKey(n,i);if(o)return t[o]=normalizeValue(r),void delete t[i];const l=e?formatHeader(i):String(i).trim();l!==i&&delete t[i],t[l]=normalizeValue(r),n[l]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return utils$1.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&utils$1.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[$internals]=this[$internals]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=normalizeHeader(e);t[r]||(buildAccessors(n,e),t[r]=!0)}return utils$1.isArray(e)?e.forEach(r):r(e),this}}AxiosHeaders.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),utils$1.reduceDescriptors(AxiosHeaders.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),utils$1.freezeMethods(AxiosHeaders);var AxiosHeaders$1=AxiosHeaders;function transformData(e,t){const n=this||defaults$1,r=t||n,i=AxiosHeaders$1.from(r.headers);let o=r.data;return utils$1.forEach(e,(function(e){o=e.call(n,o,i.normalize(),t?t.status:void 0)})),i.normalize(),o}function isCancel(e){return!(!e||!e.__CANCEL__)}function CanceledError(e,t,n){AxiosError.call(this,null==e?"canceled":e,AxiosError.ERR_CANCELED,t,n),this.name="CanceledError"}function settle(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new AxiosError("Request failed with status code "+n.status,[AxiosError.ERR_BAD_REQUEST,AxiosError.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}utils$1.inherits(CanceledError,AxiosError,{__CANCEL__:!0});var cookies=platform.hasStandardBrowserEnv?{write(e,t,n,r,i,o){const l=[e+"="+encodeURIComponent(t)];utils$1.isNumber(n)&&l.push("expires="+new Date(n).toGMTString()),utils$1.isString(r)&&l.push("path="+r),utils$1.isString(i)&&l.push("domain="+i),!0===o&&l.push("secure"),document.cookie=l.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function isAbsoluteURL(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function combineURLs(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function buildFullPath(e,t){return e&&!isAbsoluteURL(t)?combineURLs(e,t):t}var isURLSameOrigin=platform.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=utils$1.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0};function parseProtocol(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function speedometer(e,t){e=e||10;const n=new Array(e),r=new Array(e);let i,o=0,l=0;return t=void 0!==t?t:1e3,function(s){const a=Date.now(),u=r[l];i||(i=a),n[o]=s,r[o]=a;let c=l,h=0;for(;c!==o;)h+=n[c++],c%=e;if(o=(o+1)%e,o===l&&(l=(l+1)%e),a-i{const o=i.loaded,l=i.lengthComputable?i.total:void 0,s=o-n,a=r(s);n=o;const u={loaded:o,total:l,progress:l?o/l:void 0,bytes:s,rate:a||void 0,estimated:a&&l&&o<=l?(l-o)/a:void 0,event:i};u[t?"download":"upload"]=!0,e(u)}}const isXHRAdapterSupported="undefined"!=typeof XMLHttpRequest;var xhrAdapter=isXHRAdapterSupported&&function(e){return new Promise((function(t,n){let r=e.data;const i=AxiosHeaders$1.from(e.headers).normalize();let o,l,{responseType:s,withXSRFToken:a}=e;function u(){e.cancelToken&&e.cancelToken.unsubscribe(o),e.signal&&e.signal.removeEventListener("abort",o)}if(utils$1.isFormData(r))if(platform.hasStandardBrowserEnv||platform.hasStandardBrowserWebWorkerEnv)i.setContentType(!1);else if(!1!==(l=i.getContentType())){const[e,...t]=l?l.split(";").map((e=>e.trim())).filter(Boolean):[];i.setContentType([e||"multipart/form-data",...t].join("; "))}let c=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",n=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";i.set("Authorization","Basic "+btoa(t+":"+n))}const h=buildFullPath(e.baseURL,e.url);function d(){if(!c)return;const r=AxiosHeaders$1.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders());settle((function(e){t(e),u()}),(function(e){n(e),u()}),{data:s&&"text"!==s&&"json"!==s?c.response:c.responseText,status:c.status,statusText:c.statusText,headers:r,config:e,request:c}),c=null}if(c.open(e.method.toUpperCase(),buildURL(h,e.params,e.paramsSerializer),!0),c.timeout=e.timeout,"onloadend"in c?c.onloadend=d:c.onreadystatechange=function(){c&&4===c.readyState&&(0!==c.status||c.responseURL&&0===c.responseURL.indexOf("file:"))&&setTimeout(d)},c.onabort=function(){c&&(n(new AxiosError("Request aborted",AxiosError.ECONNABORTED,e,c)),c=null)},c.onerror=function(){n(new AxiosError("Network Error",AxiosError.ERR_NETWORK,e,c)),c=null},c.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const r=e.transitional||transitionalDefaults;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new AxiosError(t,r.clarifyTimeoutError?AxiosError.ETIMEDOUT:AxiosError.ECONNABORTED,e,c)),c=null},platform.hasStandardBrowserEnv&&(a&&utils$1.isFunction(a)&&(a=a(e)),a||!1!==a&&isURLSameOrigin(h))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&cookies.read(e.xsrfCookieName);t&&i.set(e.xsrfHeaderName,t)}void 0===r&&i.setContentType(null),"setRequestHeader"in c&&utils$1.forEach(i.toJSON(),(function(e,t){c.setRequestHeader(t,e)})),utils$1.isUndefined(e.withCredentials)||(c.withCredentials=!!e.withCredentials),s&&"json"!==s&&(c.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&c.addEventListener("progress",progressEventReducer(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&c.upload&&c.upload.addEventListener("progress",progressEventReducer(e.onUploadProgress)),(e.cancelToken||e.signal)&&(o=t=>{c&&(n(!t||t.type?new CanceledError(null,e,c):t),c.abort(),c=null)},e.cancelToken&&e.cancelToken.subscribe(o),e.signal&&(e.signal.aborted?o():e.signal.addEventListener("abort",o)));const f=parseProtocol(h);f&&-1===platform.protocols.indexOf(f)?n(new AxiosError("Unsupported protocol "+f+":",AxiosError.ERR_BAD_REQUEST,e)):c.send(r||null)}))};const knownAdapters={http:httpAdapter,xhr:xhrAdapter};utils$1.forEach(knownAdapters,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const renderReason=e=>`- ${e}`,isResolvedHandle=e=>utils$1.isFunction(e)||null===e||!1===e;var adapters={getAdapter:e=>{e=utils$1.isArray(e)?e:[e];const{length:t}=e;let n,r;const i={};for(let o=0;o`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new AxiosError("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(renderReason).join("\n"):" "+renderReason(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r},adapters:knownAdapters};function throwIfCancellationRequested(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new CanceledError(null,e)}function dispatchRequest(e){throwIfCancellationRequested(e),e.headers=AxiosHeaders$1.from(e.headers),e.data=transformData.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return adapters.getAdapter(e.adapter||defaults$1.adapter)(e).then((function(t){return throwIfCancellationRequested(e),t.data=transformData.call(e,e.transformResponse,t),t.headers=AxiosHeaders$1.from(t.headers),t}),(function(t){return isCancel(t)||(throwIfCancellationRequested(e),t&&t.response&&(t.response.data=transformData.call(e,e.transformResponse,t.response),t.response.headers=AxiosHeaders$1.from(t.response.headers))),Promise.reject(t)}))}const headersToObject=e=>e instanceof AxiosHeaders$1?e.toJSON():e;function mergeConfig(e,t){t=t||{};const n={};function r(e,t,n){return utils$1.isPlainObject(e)&&utils$1.isPlainObject(t)?utils$1.merge.call({caseless:n},e,t):utils$1.isPlainObject(t)?utils$1.merge({},t):utils$1.isArray(t)?t.slice():t}function i(e,t,n){return utils$1.isUndefined(t)?utils$1.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function o(e,t){if(!utils$1.isUndefined(t))return r(void 0,t)}function l(e,t){return utils$1.isUndefined(t)?utils$1.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function s(n,i,o){return o in t?r(n,i):o in e?r(void 0,n):void 0}const a={url:o,method:o,data:o,baseURL:l,transformRequest:l,transformResponse:l,paramsSerializer:l,timeout:l,timeoutMessage:l,withCredentials:l,withXSRFToken:l,adapter:l,responseType:l,xsrfCookieName:l,xsrfHeaderName:l,onUploadProgress:l,onDownloadProgress:l,decompress:l,maxContentLength:l,maxBodyLength:l,beforeRedirect:l,transport:l,httpAgent:l,httpsAgent:l,cancelToken:l,socketPath:l,responseEncoding:l,validateStatus:s,headers:(e,t)=>i(headersToObject(e),headersToObject(t),!0)};return utils$1.forEach(Object.keys(Object.assign({},e,t)),(function(r){const o=a[r]||i,l=o(e[r],t[r],r);utils$1.isUndefined(l)&&o!==s||(n[r]=l)})),n}const VERSION="1.6.3",validators$1={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{validators$1[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const deprecatedWarnings={};function assertOptions(e,t,n){if("object"!=typeof e)throw new AxiosError("options must be an object",AxiosError.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let i=r.length;for(;i-- >0;){const o=r[i],l=t[o];if(l){const t=e[o],n=void 0===t||l(t,o,e);if(!0!==n)throw new AxiosError("option "+o+" must be "+n,AxiosError.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new AxiosError("Unknown option "+o,AxiosError.ERR_BAD_OPTION)}}validators$1.transitional=function(e,t,n){function r(e,t){return"[Axios v"+VERSION+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,i,o)=>{if(!1===e)throw new AxiosError(r(i," has been removed"+(t?" in "+t:"")),AxiosError.ERR_DEPRECATED);return t&&!deprecatedWarnings[i]&&(deprecatedWarnings[i]=!0,console.warn(r(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,i,o)}};var validator={assertOptions:assertOptions,validators:validators$1};const validators=validator.validators;class Axios{constructor(e){this.defaults=e,this.interceptors={request:new InterceptorManager$1,response:new InterceptorManager$1}}request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=mergeConfig(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:i}=t;void 0!==n&&validator.assertOptions(n,{silentJSONParsing:validators.transitional(validators.boolean),forcedJSONParsing:validators.transitional(validators.boolean),clarifyTimeoutError:validators.transitional(validators.boolean)},!1),null!=r&&(utils$1.isFunction(r)?t.paramsSerializer={serialize:r}:validator.assertOptions(r,{encode:validators.function,serialize:validators.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let o=i&&utils$1.merge(i.common,i[t.method]);i&&utils$1.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete i[e]})),t.headers=AxiosHeaders$1.concat(o,i);const l=[];let s=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(s=s&&e.synchronous,l.unshift(e.fulfilled,e.rejected))}));const a=[];let u;this.interceptors.response.forEach((function(e){a.push(e.fulfilled,e.rejected)}));let c,h=0;if(!s){const e=[dispatchRequest.bind(this),void 0];for(e.unshift.apply(e,l),e.push.apply(e,a),c=e.length,u=Promise.resolve(t);h{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,i){n.reason||(n.reason=new CanceledError(e,r,i),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new CancelToken((function(t){e=t})),cancel:e}}}var CancelToken$1=CancelToken;function spread(e){return function(t){return e.apply(null,t)}}function isAxiosError(e){return utils$1.isObject(e)&&!0===e.isAxiosError}const HttpStatusCode={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(HttpStatusCode).forEach((([e,t])=>{HttpStatusCode[t]=e}));var HttpStatusCode$1=HttpStatusCode;function createInstance(e){const t=new Axios$1(e),n=bind$2(Axios$1.prototype.request,t);return utils$1.extend(n,Axios$1.prototype,t,{allOwnKeys:!0}),utils$1.extend(n,t,null,{allOwnKeys:!0}),n.create=function(t){return createInstance(mergeConfig(e,t))},n}const axios=createInstance(defaults$1);axios.Axios=Axios$1,axios.CanceledError=CanceledError,axios.CancelToken=CancelToken$1,axios.isCancel=isCancel,axios.VERSION=VERSION,axios.toFormData=toFormData,axios.AxiosError=AxiosError,axios.Cancel=axios.CanceledError,axios.all=function(e){return Promise.all(e)},axios.spread=spread,axios.isAxiosError=isAxiosError,axios.mergeConfig=mergeConfig,axios.AxiosHeaders=AxiosHeaders$1,axios.formToJSON=e=>formDataToJSON(utils$1.isHTMLForm(e)?new FormData(e):e),axios.getAdapter=adapters.getAdapter,axios.HttpStatusCode=HttpStatusCode$1,axios.default=axios;var axios_1$1=axios,__awaiter$5=commonjsGlobal$1&&commonjsGlobal$1.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function l(e){try{a(r.next(e))}catch(e){o(e)}}function s(e){try{a(r.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(l,s)}a((r=r.apply(e,t||[])).next())}))},__importDefault$1=commonjsGlobal$1&&commonjsGlobal$1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(base,"__esModule",{value:!0}),base.BaseAPI=void 0;const axios_1=__importDefault$1(axios_1$1);class BaseAPI{constructor(e){this.options=e,this.setOptions(e)}setOptions(e){var t,n;if(this.options=e,!e.auth)throw new Error("please provide auth info");this.eject(this.currentInterceptorsId,this.axiosInstance);const r=this.getHeaders(e);this.axiosInstance=axios_1.default.create({transformResponse:e.transformResponse,baseURL:e.baseUrl,headers:r,auth:(null===(t=e.auth)||void 0===t?void 0:t.basic)?e.auth.basic:void 0,withCredentials:null===(n=null==e?void 0:e.auth)||void 0===n?void 0:n.includeCredentials}),this.currentInterceptorsId=this.intercept(this.axiosInstance)}whoAmI(){return __awaiter$5(this,void 0,void 0,(function*(){return(yield this.axiosInstance.get("/whoami")).data}))}onResponseSuccessCallback(e){this.responseSuccessCallback=e}onResponseErrorCallback(e){this.responseErrorCallback=e}unloadClient(e,t){var n;if(!e||!t)return;const r=this.options.auth.basic?`Basic ${window.btoa(this.options.auth.basic.username+":"+this.options.auth.basic.password)}`:`Bearer ${null===(n=this.options.auth.token)||void 0===n?void 0:n.bearer}`,i=new Headers(Object.assign({"Content-Type":"application/json","serverx-token":t,Authorization:r},this.options.headers)),o=new Request(`${this.options.baseUrl}/user/goodbye`,{method:"POST",headers:i,mode:"cors",cache:"default",keepalive:!0,body:JSON.stringify({session:e})});window.fetch(o)}getHeaders(e){const t={};if(e.auth.username&&(t.user=e.auth.username),e.auth.token&&e.auth.token.bearer&&(t.Authorization=`Bearer ${e.auth.token.bearer}`),e.headers)for(const n of Object.keys(e.headers))t[n]=e.headers[n];return t}intercept(e){var t,n;try{return null===(n=null===(t=null==e?void 0:e.interceptors)||void 0===t?void 0:t.response)||void 0===n?void 0:n.use((e=>{var t;try{null===(t=this.responseSuccessCallback)||void 0===t||t.call(this,e)}catch(e){}return e}),(e=>{var t;try{null===(t=this.responseErrorCallback)||void 0===t||t.call(this,e)}catch(e){}return Promise.reject(e)}))}catch(e){return}}eject(e,t){var n,r;try{e&&(null===(r=null===(n=null==t?void 0:t.interceptors)||void 0===n?void 0:n.response)||void 0===r||r.eject(e))}catch(e){}}}base.BaseAPI=BaseAPI;var systemConfig={},__awaiter$4=commonjsGlobal$1&&commonjsGlobal$1.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function l(e){try{a(r.next(e))}catch(e){o(e)}}function s(e){try{a(r.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(l,s)}a((r=r.apply(e,t||[])).next())}))};Object.defineProperty(systemConfig,"__esModule",{value:!0}),systemConfig.SystemConfigAPI=void 0;class SystemConfigAPI{constructor(e){this.axios=e}getAll(e){return __awaiter$4(this,void 0,void 0,(function*(){let t="/systemConfig";if(e){t+=`?params=${encodeURIComponent(JSON.stringify(e))}`}return(yield this.axios.get(t)).data}))}getExactEntry(e){return __awaiter$4(this,void 0,void 0,(function*(){return(yield this.axios.post("/systemConfig/get",{identifier:e,exact:!0})).data}))}getComputed(e){return __awaiter$4(this,void 0,void 0,(function*(){return(yield this.axios.post("/systemConfig/get",{identifier:e,exact:!1})).data}))}addOrReplace(e){return __awaiter$4(this,void 0,void 0,(function*(){yield this.axios.post("/systemConfig/",e)}))}remove(e){return __awaiter$4(this,void 0,void 0,(function*(){yield this.axios.post("/systemConfig/delete",e)}))}removeConfigForIdentifier(e,t){return __awaiter$4(this,void 0,void 0,(function*(){yield this.axios.post("/systemConfig/deleteConfig",{identifier:e,config:t})}))}}systemConfig.SystemConfigAPI=SystemConfigAPI;var promise={},__awaiter$3=commonjsGlobal$1&&commonjsGlobal$1.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function l(e){try{a(r.next(e))}catch(e){o(e)}}function s(e){try{a(r.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(l,s)}a((r=r.apply(e,t||[])).next())}))};Object.defineProperty(promise,"__esModule",{value:!0}),promise.PromiseWrapper=void 0;let PromiseWrapper$1=class{constructor(){this.resolve=()=>{},this.reject=()=>{},this.rejected=!1,this.resolved=!1,this.promise=new Promise(((e,t)=>{this.resolve=t=>{this.resolved=!0,e(t)},this.reject=e=>{this.rejected=!0,t(e)}}))}static delay(e){return new Promise((t=>setTimeout(t,e)))}static delayForever(){return __awaiter$3(this,void 0,void 0,(function*(){for(;;)yield this.delay(2147483647)}))}get ended(){return this.rejected||this.resolved}};promise.PromiseWrapper=PromiseWrapper$1;var __awaiter$2=commonjsGlobal$1&&commonjsGlobal$1.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function l(e){try{a(r.next(e))}catch(e){o(e)}}function s(e){try{a(r.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(l,s)}a((r=r.apply(e,t||[])).next())}))},__importDefault=commonjsGlobal$1&&commonjsGlobal$1.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(client,"__esModule",{value:!0}),client.ClientAPI=void 0;const jwt_decode_1=__importDefault(require$$0$1),form_data_1=__importDefault(browser),base_1=base,systemConfig_1=systemConfig,promise_1=promise;class ClientAPI extends base_1.BaseAPI{constructor(e){super(e),this.customRequest=e.req,this.systemConfig=new systemConfig_1.SystemConfigAPI(this.axiosInstance)}unload(){this.unloadClient(this.sessionToken.session,this.sessionTokenString)}refreshData(e){return __awaiter$2(this,void 0,void 0,(function*(){return(yield this.post("/user",e)).data}))}getApps(){return __awaiter$2(this,void 0,void 0,(function*(){return(yield this.get("/user/apps")).data}))}getLayouts(){return __awaiter$2(this,void 0,void 0,(function*(){return(yield this.get("/user/layouts")).data}))}saveLayout(e){return __awaiter$2(this,void 0,void 0,(function*(){return(yield this.post("/user/layouts",e)).data}))}deleteUserLayout(e){return __awaiter$2(this,void 0,void 0,(function*(){yield this.delete(`/user/layouts/${e}`)}))}deleteAllUserLayouts(){return __awaiter$2(this,void 0,void 0,(function*(){return(yield this.delete("/user/layouts/")).data}))}renameLayout(e,t){return __awaiter$2(this,void 0,void 0,(function*(){return(yield this.post(`/user/layouts/${e}/rename`,{newName:t})).data}))}getDefaultLayout(){return __awaiter$2(this,void 0,void 0,(function*(){const e=yield this.get("/user/layouts/default");if(204!==e.status)return e.data}))}setDefaultLayout(e){return __awaiter$2(this,void 0,void 0,(function*(){const t=yield this.post("/user/layouts/default",{id:e});if(204!==t.status)return t.data}))}openSession(e,t){return __awaiter$2(this,void 0,void 0,(function*(){const n=yield this.post("/user/hello",{machine:e,glue:t});return{token:this.updateToken(n.data.token),data:n.data.data}}))}closeSession(e){return __awaiter$2(this,void 0,void 0,(function*(){if(!(e=null!=e?e:this.sessionToken.session))throw new Error("no active session");const t={session:e};yield this.post("/user/goodbye",t)}))}refreshToken(){return __awaiter$2(this,void 0,void 0,(function*(){const e={token:this.sessionTokenString},t=yield this.post("/user/refresh",e);return this.updateToken(t.data.token)}))}getCommands(){return __awaiter$2(this,void 0,void 0,(function*(){return(yield this.get(`/user/commands/${this.sessionToken.session}`)).data}))}setCommandResult(e,t){return __awaiter$2(this,void 0,void 0,(function*(){yield this.post(`/user/commands/${e}`,t)}))}setCommandFileResult(e,t,n){return __awaiter$2(this,void 0,void 0,(function*(){const r={fileName:t,contents:n};yield this.post(`/user/commands/${e}/file`,r)}))}getPrefs(e,t){return __awaiter$2(this,void 0,void 0,(function*(){try{let n=`/user/prefs/${e}`;if(t){n+=`?last=${t.getTime()}`}return(yield this.get(n)).data}catch(e){return}}))}getAllPrefs(){return __awaiter$2(this,void 0,void 0,(function*(){return(yield this.get("/user/prefs/")).data}))}setPrefs(e){return __awaiter$2(this,void 0,void 0,(function*(){return(yield this.post("/user/prefs/",e)).data}))}deletePrefs(e){return __awaiter$2(this,void 0,void 0,(function*(){yield this.delete(`/user/prefs/${e}`)}))}deleteAllPrefs(){return __awaiter$2(this,void 0,void 0,(function*(){yield this.delete("/user/prefs/")}))}addFeedback(e,t){return __awaiter$2(this,void 0,void 0,(function*(){const n=new form_data_1.default;n.append("description",e),n.append("attachment",t);try{return(yield this.post("/user/feedbacks",n,n.getHeaders())).data}catch(e){throw e}}))}setOptions(e){super.setOptions(e),this.sessionTokenString&&this.updateToken(this.sessionTokenString)}updateToken(e){var t;return this.sessionTokenString=e,this.axiosInstance.defaults.headers.common["serverx-token"]=e,this.options.headers=null!==(t=this.options.headers)&&void 0!==t?t:{},this.options.headers["serverx-token"]=e,this.sessionToken=jwt_decode_1.default(e),this.sessionToken}get(e,t){return __awaiter$2(this,void 0,void 0,(function*(){return this.customRequest?this.withRequest(e,"GET",t):this.axiosInstance.get(e,t)}))}post(e,t,n){return __awaiter$2(this,void 0,void 0,(function*(){return this.customRequest?this.withRequest(e,"POST",t,n):this.axiosInstance.post(e,t,{headers:n})}))}delete(e,t){return __awaiter$2(this,void 0,void 0,(function*(){return this.customRequest?this.withRequest(e,"DELETE",t):this.axiosInstance.delete(e,t)}))}withRequest(e,t,n,r){return __awaiter$2(this,void 0,void 0,(function*(){if(!this.customRequest)throw new Error("invalid call");const i=new promise_1.PromiseWrapper;let o=this.getHeaders(this.options);r&&(o=Object.assign(Object.assign({},o),{extraHeaders:r})),e.startsWith("/")&&(e=e.substring(1));let l=this.options.baseUrl;l.endsWith("/")||(l+="/");const s=new URL(e,l).href,a={method:t,url:s,headers:o,json:null==n||n};return this.customRequest(a,((e,t)=>{if(e)return void i.reject(e);if(t.statusCode>=400)return void i.reject(`received error with code ${t.statusCode}`);let n={};if(t.body)try{n=t.body}catch(e){}i.resolve({data:n,status:t.statusCode})})),i.promise}))}}client.ClientAPI=ClientAPI,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ClientAPI=void 0;var t=client;Object.defineProperty(e,"ClientAPI",{enumerable:!0,get:function(){return t.ClientAPI}})}(client$1);var uaParser={exports:{}},module,exports;module=uaParser,exports=uaParser.exports,function(e,t){var n="function",r="undefined",i="object",o="string",l="major",s="model",a="name",u="type",c="vendor",h="version",d="architecture",f="console",p="mobile",g="tablet",w="smarttv",m="wearable",v="embedded",y="Amazon",b="Apple",S="ASUS",$="BlackBerry",C="Browser",I="Chrome",x="Firefox",E="Google",D="Huawei",A="LG",k="Microsoft",_="Motorola",j="Opera",N="Samsung",R="Sharp",T="Sony",P="Xiaomi",O="Zebra",F="Facebook",B="Chromium OS",M="Mac OS",Q=function(e){for(var t={},n=0;n0?2===a.length?typeof a[1]==n?this[a[0]]=a[1].call(this,c):this[a[0]]=a[1]:3===a.length?typeof a[1]!==n||a[1].exec&&a[1].test?this[a[0]]=c?c.replace(a[1],a[2]):t:this[a[0]]=c?a[1].call(this,c,a[2]):t:4===a.length&&(this[a[0]]=c?a[3].call(this,c.replace(a[1],a[2])):t):this[a]=c||t;h+=2}},q=function(e,n){for(var r in n)if(typeof n[r]===i&&n[r].length>0){for(var o=0;o2&&(e[s]="iPad",e[u]=g),e},this.getEngine=function(){var e={};return e[a]=t,e[h]=t,W.call(e,v,b.engine),e},this.getOS=function(){var e={};return e[a]=t,e[h]=t,W.call(e,v,b.os),S&&!e[a]&&y&&"Unknown"!=y.platform&&(e[a]=y.platform.replace(/chrome os/i,B).replace(/macos/i,M)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return v},this.setUA=function(e){return v=typeof e===o&&e.length>350?J(e,350):e,this},this.setUA(v),this};H.VERSION="1.0.35",H.BROWSER=Q([a,h,l]),H.CPU=Q([d]),H.DEVICE=Q([s,c,u,f,p,w,g,m,v]),H.ENGINE=H.OS=Q([a,h]),module.exports&&(exports=module.exports=H),exports.UAParser=H;var z=typeof e!==r&&(e.jQuery||e.Zepto);if(z&&!z.ua){var V=new H;z.ua=V.getResult(),z.ua.get=function(){return V.getUA()},z.ua.set=function(e){V.setUA(e);var t=V.getResult();for(var n in t)z.ua[n]=t[n]}}}("object"==typeof window?window:commonjsGlobal$1);var uaParserExports=uaParser.exports;(function(){var h,aa=this||self;function ba(e){var t=typeof e;return"object"!=t?t:e?Array.isArray(e)?"array":t:"null"}function ea(e){var t=ba(e);return"array"==t||"object"==t&&"number"==typeof e.length}function fa(e){return Object.prototype.hasOwnProperty.call(e,ha)&&e[ha]||(e[ha]=++ia)}var ha="closure_uid_"+(1e9*Math.random()>>>0),ia=0;function ja(e,t,n){return e.call.apply(e.bind,arguments)}function ka(e,t,n){if(!e)throw Error();if(2e?-0x8000000000000000>=e?ua:va(new qa(-e,-e/4294967296)):wa}function va(e){var t=1+~e.la|0;return pa(t,~e.ha+!t|0)}function xa(e){return 4294967296*e.ha+(e.la>>>0)}function ya(e,t){if(za(t))throw Error("division by zero");if(0>e.ha){if(Aa(e,ua)){if(Aa(t,Ba)||Aa(t,Ca))return ua;if(Aa(t,ua))return Ba;var n=1;if(0==n)n=e;else{var r=e.ha;n=32>n?pa(e.la>>>n|r<<32-n,r>>n):pa(r>>n-32,0<=r?0:-1)}return Aa(n=ya(n,t).shiftLeft(1),wa)?0>t.ha?Ba:Ca:(r=t.multiply(n),e=e.add(va(r)),n.add(ya(e,t)))}return 0>t.ha?ya(va(e),va(t)):va(ya(va(e),t))}if(za(e))return wa;if(0>t.ha)return Aa(t,ua)?wa:va(ya(e,va(t)));for(r=wa;0<=e.compare(t);){n=Math.max(1,Math.floor(xa(e)/xa(t)));var i=Math.ceil(Math.log(n)/Math.LN2);i=48>=i?1:Math.pow(2,i-48);for(var o=ra(n),l=o.multiply(t);0>l.ha||0>21;return 0==e||-1==e&&!(0==this.la&&-2097152==this.ha)}toString(e){if(2>(e=e||10)||36>2);var n=Math.pow(e,t),r=pa(n,n/4294967296);n=ya(this,r);var i=Math,o=i.abs;return r=n.multiply(r),r=this.add(va(r)),i=o.call(i,xa(r)),(o=10==e?""+i:i.toString(e)).length>>0>e.la>>>0?1:-1:this.ha>e.ha?1:-1}add(e){var t=this.ha>>>16,n=65535&this.ha,r=this.la>>>16,i=e.ha>>>16,o=65535&e.ha,l=e.la>>>16;return r=(l=((e=(65535&this.la)+(65535&e.la))>>>16)+(r+l))>>>16,pa((65535&l)<<16|65535&e,(t=((r+=n+o)>>>16)+(t+i)&65535)<<16|65535&r)}multiply(e){if(za(this))return this;if(za(e))return e;var t=this.ha>>>16,n=65535&this.ha,r=this.la>>>16,i=65535&this.la,o=e.ha>>>16,l=65535&e.ha,s=e.la>>>16,a=i*(e=65535&e.la),u=(a>>>16)+r*e,c=u>>>16;c+=(u=(65535&u)+i*s)>>>16;var h=(c+=n*e)>>>16;return pa((65535&u)<<16|65535&a,(h=(h+=(c=(65535&c)+r*s)>>>16)+((c=(65535&c)+i*l)>>>16)+(t*e+n*s+r*l+i*o)&65535)<<16|65535&c)}and(e){return pa(this.la&e.la,this.ha&e.ha)}or(e){return pa(this.la|e.la,this.ha|e.ha)}xor(e){return pa(this.la^e.la,this.ha^e.ha)}shiftLeft(e){if(0==(e&=63))return this;var t=this.la;return 32>e?pa(t<>>32-e):pa(0,t<=arguments.length?Array.prototype.slice.call(e,t):Array.prototype.slice.call(e,t,n)}function Na(e,t){e.sort(t||Oa)}function Pa(e,t){const n=Array(e.length);for(let t=0;tt?1:e=e||"€"<=e&&"�">=e}var Xa=String.prototype.repeat?function(e,t){return e.repeat(t)}:function(e,t){return Array(t+1).join(e)};function Ya(e,t){let n=(e=String(e)).indexOf(".");-1===n&&(n=e.length);const r="-"===e[0]?"-":"";return r&&(e=e.substring(1)),r+Xa("0",Math.max(0,t-n))+e}function Za(e,t){null!=e&&this.append.apply(this,arguments)}h=Za.prototype,h.Lc="",h.set=function(e){this.Lc=""+e},h.append=function(e,t,n){if(this.Lc+=String(e),null!=t)for(let e=1;e":"_GT_"},Jb={_RBRACE_:"}",_COLON_:":",_BANG_:"!",_QMARK_:"?",_BSLASH_:"\\\\",_SLASH_:"/",_PERCENT_:"%",_PLUS_:"+",_SHARP_:"#",_LBRACE_:"{",_BAR_:"|",_LBRACK_:"[",_EQ_:"=",_:"-",_TILDE_:"~",_RBRACK_:"]",_GT_:">",_SINGLEQUOTE_:"'",_CIRCA_:"@",_AMPERSAND_:"&",_DOUBLEQUOTE_:'\\"',_CARET_:"^",_LT_:"<",_STAR_:"*"},Kb=null;function Lb(e){for(var t=e.length,n=Array(t),r=0;r>>16&65535)*r+n*(t>>>16&65535)<<16>>>0)|0};function rd(e){return e=qd(0|e,-862048943),qd(e<<15|e>>>-15,461845907)}function sd(e,t){return qd((e=(0|e)^(0|t))<<13|e>>>-13,5)+-430675100|0}function td(e,t){return e=qd((e=(0|e)^t)^e>>>16,-2048144789),(e=qd(e^e>>>13,-1028477387))^e>>>16}var ud={},vd=0;function wd(e){if(255>2)}function zd(e,t){if(e.uc===t.uc)return 0;var r=yb(e.yb);return n(r?t.yb:r)?-1:n(e.yb)?yb(t.yb)?1:0===(r=Oa(e.yb,t.yb))?Oa(e.name,t.name):r:Oa(e.name,t.name)}function Ad(e,t,n,r,i){this.yb=e,this.name=t,this.uc=n,this.ed=r,this.Mb=i,this.B=2154168321,this.M=4096}h=Ad.prototype,h.toString=function(){return this.uc},h.aa=function(e,t){return t instanceof Ad&&this.uc===t.uc},h.call=function(e){switch(arguments.length-1){case 1:return this.g(arguments[1]);case 2:return this.h(arguments[1],arguments[2]);default:throw Error(["Invalid arity: ",p.g(arguments.length-1)].join(""))}},h.apply=function(e,t){return this.call.apply(this,[this].concat(Lb(t)))},h.g=function(e){return u.h?u.h(e,this):u.call(null,e,this)},h.h=function(e,t){return u.j?u.j(e,this,t):u.call(null,e,this,t)},h.R=function(){return this.Mb},h.S=function(e,t){return new Ad(this.yb,this.name,this.uc,this.ed,t)},h.ba=function(){var e=this.ed;return null!=e?e:this.ed=e=yd(this)},h.Ad=function(){return this.name},h.Bd=function(){return this.yb},h.U=function(e,t){return Qc(t,this.uc)};var Bd=function e(t){switch(arguments.length){case 1:return e.g(arguments[0]);case 2:return e.h(arguments[0],arguments[1]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}};function Cd(e,t,n){this.v=e,this.ad=t,this.Mb=n,this.B=6717441,this.M=0}function Ed(e){return null!=e?!!(131072&e.M||cb===e.pi)||!e.M&&Cb(md,e):Cb(md,e)}function z(e){if(null==e)return null;if(null!=e&&(8388608&e.B||cb===e.Bf))return e.ca(null);if(wb(e)||"string"==typeof e)return 0===e.length?null:new Fd(e,0,null);if(null!=e&&null!=e[Gb])return e=Ia(e,Gb).call(e),Gd.g?Gd.g(e):Gd.call(null,e);if(Cb(Jc,e))return Kc(e);throw Error([p.g(e)," is not ISeqable"].join(""))}function A(e){return null==e?null:null!=e&&(64&e.B||cb===e.hd)?e.Ga(null):null==(e=z(e))?null:bc(e)}function Hd(e){return null!=e&&(null!=e&&(64&e.B||cb===e.hd)||(e=z(e)))?e.Ia(null):Id}function B(e){return null==e?null:null!=e&&(128&e.B||cb===e.Cd)?e.Aa(null):z(Hd(e))}Bd.g=function(e){for(;;){if(e instanceof Ad)return e;if("string"==typeof e){var t=e.indexOf("/");return 1>t?Bd.h(null,e):Bd.h(e.substring(0,t),e.substring(t+1,e.length))}if(e instanceof Cd)return e.ad;if(!(e instanceof w))throw Error("no conversion to symbol");e=e.W}},Bd.h=function(e,t){return new Ad(e,t,null!=e?[p.g(e),"/",p.g(t)].join(""):t,null,null)},Bd.I=2,h=Cd.prototype,h.toString=function(){return["#'",p.g(this.ad)].join("")},h.Jb=function(){return this.v.A?this.v.A():this.v.call(null)},h.R=function(){return this.Mb},h.S=function(e,t){return new Cd(this.v,this.ad,t)},h.aa=function(e,t){return t instanceof Cd&&(e=this.ad,t=t.ad,x.h?x.h(e,t):x.call(null,e,t))},h.ba=function(){return yd(this.ad)},h.xf=cb,h.call=function(e){switch(arguments.length-1){case 0:return this.A();case 1:return this.g(arguments[1]);case 2:return this.h(arguments[1],arguments[2]);case 3:return this.j(arguments[1],arguments[2],arguments[3]);case 4:return this.F(arguments[1],arguments[2],arguments[3],arguments[4]);case 5:return this.O(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]);case 6:return this.oa(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6]);case 7:return this.lb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7]);case 8:return this.Ma(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8]);case 9:return this.ab(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9]);case 10:return this.pb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10]);case 11:return this.gb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11]);case 12:return this.qb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12]);case 13:return this.hb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13]);case 14:return this.rb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14]);case 15:return this.ib(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15]);case 16:return this.sb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16]);case 17:return this.jb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17]);case 18:return this.tb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17],arguments[18]);case 19:return this.kb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17],arguments[18],arguments[19]);case 20:return this.ub(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17],arguments[18],arguments[19],arguments[20]);case 21:return this.Sc(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17],arguments[18],arguments[19],arguments[20],arguments[21]);default:throw Error(["Invalid arity: ",p.g(arguments.length-1)].join(""))}},h.apply=function(e,t){return this.call.apply(this,[this].concat(Lb(t)))},h.A=function(){var e=this.v.A?this.v.A():this.v.call(null);return e.A?e.A():e.call(null)},h.g=function(e){var t=this.v.A?this.v.A():this.v.call(null);return t.g?t.g(e):t.call(null,e)},h.h=function(e,t){var n=this.v.A?this.v.A():this.v.call(null);return n.h?n.h(e,t):n.call(null,e,t)},h.j=function(e,t,n){var r=this.v.A?this.v.A():this.v.call(null);return r.j?r.j(e,t,n):r.call(null,e,t,n)},h.F=function(e,t,n,r){var i=this.v.A?this.v.A():this.v.call(null);return i.F?i.F(e,t,n,r):i.call(null,e,t,n,r)},h.O=function(e,t,n,r,i){var o=this.v.A?this.v.A():this.v.call(null);return o.O?o.O(e,t,n,r,i):o.call(null,e,t,n,r,i)},h.oa=function(e,t,n,r,i,o){var l=this.v.A?this.v.A():this.v.call(null);return l.oa?l.oa(e,t,n,r,i,o):l.call(null,e,t,n,r,i,o)},h.lb=function(e,t,n,r,i,o,l){var s=this.v.A?this.v.A():this.v.call(null);return s.lb?s.lb(e,t,n,r,i,o,l):s.call(null,e,t,n,r,i,o,l)},h.Ma=function(e,t,n,r,i,o,l,s){var a=this.v.A?this.v.A():this.v.call(null);return a.Ma?a.Ma(e,t,n,r,i,o,l,s):a.call(null,e,t,n,r,i,o,l,s)},h.ab=function(e,t,n,r,i,o,l,s,a){var u=this.v.A?this.v.A():this.v.call(null);return u.ab?u.ab(e,t,n,r,i,o,l,s,a):u.call(null,e,t,n,r,i,o,l,s,a)},h.pb=function(e,t,n,r,i,o,l,s,a,u){var c=this.v.A?this.v.A():this.v.call(null);return c.pb?c.pb(e,t,n,r,i,o,l,s,a,u):c.call(null,e,t,n,r,i,o,l,s,a,u)},h.gb=function(e,t,n,r,i,o,l,s,a,u,c){var h=this.v.A?this.v.A():this.v.call(null);return h.gb?h.gb(e,t,n,r,i,o,l,s,a,u,c):h.call(null,e,t,n,r,i,o,l,s,a,u,c)},h.qb=function(e,t,n,r,i,o,l,s,a,u,c,h){var d=this.v.A?this.v.A():this.v.call(null);return d.qb?d.qb(e,t,n,r,i,o,l,s,a,u,c,h):d.call(null,e,t,n,r,i,o,l,s,a,u,c,h)},h.hb=function(e,t,n,r,i,o,l,s,a,u,c,h,d){var f=this.v.A?this.v.A():this.v.call(null);return f.hb?f.hb(e,t,n,r,i,o,l,s,a,u,c,h,d):f.call(null,e,t,n,r,i,o,l,s,a,u,c,h,d)},h.rb=function(e,t,n,r,i,o,l,s,a,u,c,h,d,f){var p=this.v.A?this.v.A():this.v.call(null);return p.rb?p.rb(e,t,n,r,i,o,l,s,a,u,c,h,d,f):p.call(null,e,t,n,r,i,o,l,s,a,u,c,h,d,f)},h.ib=function(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p){var g=this.v.A?this.v.A():this.v.call(null);return g.ib?g.ib(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p):g.call(null,e,t,n,r,i,o,l,s,a,u,c,h,d,f,p)},h.sb=function(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g){var w=this.v.A?this.v.A():this.v.call(null);return w.sb?w.sb(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g):w.call(null,e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g)},h.jb=function(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w){var m=this.v.A?this.v.A():this.v.call(null);return m.jb?m.jb(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w):m.call(null,e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w)},h.tb=function(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m){var v=this.v.A?this.v.A():this.v.call(null);return v.tb?v.tb(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m):v.call(null,e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m)},h.kb=function(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v){var y=this.v.A?this.v.A():this.v.call(null);return y.kb?y.kb(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v):y.call(null,e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v)},h.ub=function(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y){var b=this.v.A?this.v.A():this.v.call(null);return b.ub?b.ub(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y):b.call(null,e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y)},h.Sc=function(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y,b){var S=this.v.A?this.v.A():this.v.call(null);return Dd.Ge?Dd.Ge(S,e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y,b):Dd.call(null,S,e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y,b)};var x=function e(t){switch(arguments.length){case 1:return e.g(arguments[0]);case 2:return e.h(arguments[0],arguments[1]);default:for(var n=[],r=arguments.length,i=0;i=r)return-1;for(!(0n&&(n=0>(n+=r)?0:n);;){if(!(nn?r+n:n;;){if(!(0<=n))return-1;if(x.h(ee?ee(e,n):fe.call(null,e,n),t))return n;--n}}function he(e,t){this.o=e,this.N=t}function Fd(e,t,n){this.o=e,this.N=t,this.K=n,this.B=166592766,this.M=139264}function D(e){return 0e?0:e},h.Ac=function(){var e=this.da(null);return 0t)throw Error("Index out of bounds");e:for(;;){if(null==e)throw Error("Index out of bounds");if(0===t){if(z(e)){e=A(e);break e}throw Error("Index out of bounds")}if(ce(e)){e=Zb(e,t);break e}if(!z(e))throw Error("Index out of bounds");e=B(e),--t}return e}if(Cb(Yb,e))return Zb(e,t);throw Error(["nth not supported on this type ",p.g(Fb(Db(e)))].join(""))}function G(e,t,n){if("number"!=typeof t)throw Error("Index argument to nth must be a number.");if(null==e)return n;if(null!=e&&(16&e.B||cb===e.Af))return e.Ba(null,t,n);if(wb(e))return-1t?n:ue(e,t,n);if(Cb(Yb,e))return Zb(e,t,n);throw Error(["nth not supported on this type ",p.g(Fb(Db(e)))].join(""))}re.A=function(){return F},re.g=function(e){return e},re.h=function(e,t){return null!=e?Xb(e,t):new se(null,t,null,1,null)},re.l=function(e,t,r){for(;;){if(!n(r))return re.h(e,t);e=re.h(e,t),t=A(r),r=B(r)}},re.J=function(e){var t=A(e),n=B(e);return e=A(n),n=B(n),this.l(t,e,n)},re.I=2;var u=function e(t){switch(arguments.length){case 2:return e.h(arguments[0],arguments[1]);case 3:return e.j(arguments[0],arguments[1],arguments[2]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}};u.h=function(e,t){return null==e?null:null!=e&&(256&e.B||cb===e.Ig)?e.na(null,t):wb(e)?null!=t&&tr)e=1;else if(0===n)e=0;else e:for(r=0;;){var i=Ue(ee(e,r),ee(t,r));if(!(0===i&&r+1>1&1431655765))+(e>>2&858993459))+(e>>4)&252645135)>>24}function nf(e){switch(arguments.length){case 1:return!0;case 2:return Hc(arguments[0],arguments[1]);default:for(var t=[],n=arguments.length,r=0;rt},gf.l=function(e,t,n){for(;;){if(!(e>t))return!1;if(!B(n))return t>A(n);e=t,t=A(n),n=B(n)}},gf.J=function(e){var t=A(e),n=B(e);return e=A(n),n=B(n),this.l(t,e,n)},gf.I=2;var p=function e(t){switch(arguments.length){case 0:return e.A();case 1:return e.g(arguments[0]);default:for(var n=[],r=arguments.length,i=0;ii:o))return Jf(new Gf(r,0,i),e.g?e.g(t):e.call(null,t));r[i]=t.next(),i+=1}}),null,null)};function rg(e){this.buffer=pg,this.Ib=mg,this.Se=!1,this.nc=null,this.cf=e,this.Ph=!1}function sg(e,t){var n,r=new rg(t);return r.nc=(n=function(){function e(e,t){return r.buffer=r.buffer.add(t),e}var t;return t=function(t,n){switch(arguments.length){case 0:return null;case 1:return t;case 2:return e.call(this,t,n)}throw Error("Invalid arity: "+arguments.length)},t.A=function(){return null},t.g=function(e){return e},t.h=e,t}(),e.g?e.g(n):e.call(null,n)),r}function tg(e){return Qe(e)||(e=z(e))?e:Id}function ug(e,t){for(;;){if(null==z(t))return!0;var r=A(t);if(!n(r=e.g?e.g(r):e.call(null,r)))return!1;t=B(t)}}function vg(e,t){for(;;){if(!(t=z(t)))return null;var r=A(t);if(n(r=e.g?e.g(r):e.call(null,r)))return r;t=B(t)}}function wg(e){if(Se(e))return 0==(1&e);throw Error(["Argument must be an integer: ",p.g(e)].join(""))}function xg(e){return function(){function t(t,n){return yb(e.h?e.h(t,n):e.call(null,t,n))}function n(t){return yb(e.g?e.g(t):e.call(null,t))}function r(){return yb(e.A?e.A():e.call(null))}var i,o=function(){function t(e,t,r){var i=null;if(2(e=e.H)?0:e-1>>>5<<5}function mh(e,t,n){for(;;){if(0===t)return n;var r=jh(e);r.o[0]=n,n=r,t-=5}}fh.j=function(e,t,n){var r=z(t);if(t=A(r),r=B(r))e=I.j(e,t,fh.j(u.h(e,t),r,n));else{r=I.j;var i=u.h(e,t);n=n.g?n.g(i):n.call(null,i),e=r.call(I,e,t,n)}return e},fh.F=function(e,t,n,r){var i=z(t);if(t=A(i),i=B(i))e=I.j(e,t,fh.F(u.h(e,t),i,n,r));else{i=I.j;var o=u.h(e,t);n=n.h?n.h(o,r):n.call(null,o,r),e=i.call(I,e,t,n)}return e},fh.O=function(e,t,n,r,i){var o=z(t);if(t=A(o),o=B(o))e=I.j(e,t,fh.O(u.h(e,t),o,n,r,i));else{o=I.j;var l=u.h(e,t);n=n.j?n.j(l,r,i):n.call(null,l,r,i),e=o.call(I,e,t,n)}return e},fh.oa=function(e,t,n,r,i,o){var l=z(t);if(t=A(l),l=B(l))e=I.j(e,t,fh.oa(u.h(e,t),l,n,r,i,o));else{l=I.j;var s=u.h(e,t);n=n.F?n.F(s,r,i,o):n.call(null,s,r,i,o),e=l.call(I,e,t,n)}return e},fh.l=function(e,t,n,r,i,o,l){var s=z(t);return t=A(s),(s=B(s))?I.j(e,t,ag(fh,u.h(e,t),s,n,r,D([i,o,l]))):I.j(e,t,ag(n,u.h(e,t),r,i,o,D([l])))},fh.J=function(e){var t=A(e),n=B(e);e=A(n);var r=B(n);n=A(r);var i=B(r);r=A(i);var o=B(i);i=A(o);var l=B(o);return o=A(l),l=B(l),this.l(t,e,n,r,i,o,l)},fh.I=6;var nh=function e(t,n,r,i){var o=kh(r),l=t.H-1>>>n&31;return 5===n?o.o[l]=i:(null!=(r=r.o[l])?(n-=5,t=e.F?e.F(t,n,r,i):e.call(null,t,n,r,i)):t=mh(null,n-5,i),o.o[l]=t),o};function oh(e,t){throw Error(["No item ",p.g(e)," in vector of length ",p.g(t)].join(""))}function ph(e,t){if(t>=lh(e))return e.wa;var n=e.root;for(e=e.shift;;){if(!(0>>e&31],e=r}}function qh(e,t){return 0<=t&&t>>n&31;n-=5,r=r.o[s],t=e.O?e.O(t,n,r,i,o):e.call(null,t,n,r,i,o),l.o[s]=t}return l},sh=function e(t,n,r){var i=t.H-2>>>n&31;if(5=this.H)return new Fd(this.wa,0,null);e:for(var e=this.root,t=this.shift;;){if(!(0this.H-lh(this)){e=this.wa.length;for(var n=Array(e+1),r=0;r>>5>1<n)return new Q(null,n,5,S,e,null);t=32;for(var r=new Q(null,32,5,S,e.slice(0,32),null).gd(null);;){if(!(tn||rC(t))throw Error("Index out of bounds");return new Lh(e,t,n,r,i)}n=t.start+n,r=t.start+r,t=t.ma}}function Nh(e,t,n){return Mh(null,e,0|t,0|n,null)}function Oh(e,t){return e===t.ya?t:new ih(e,Lb(t.o))}function zh(e){return new ih({},Lb(e.o))}function Ah(e){var t=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];return Ne(e,0,t,0,e.length),t}Ih.l=function(e){return e instanceof Fd&&0===e.N?Dh(e.o,!wb(e.o)):Eh(e)},Ih.I=0,Ih.J=function(e){return this.l(z(e))},h=Jh.prototype,h.toString=function(){return pd(this)},h.indexOf=function(){var e;return e=function(e,t){switch(arguments.length){case 1:return de(this,e,0);case 2:return de(this,e,t)}throw Error("Invalid arity: "+arguments.length)},e.g=function(e){return de(this,e,0)},e.h=function(e,t){return de(this,e,t)},e}(),h.lastIndexOf=function(){function e(e){return ge(this,e,C(this))}var t;return t=function(t,n){switch(arguments.length){case 1:return e.call(this,t);case 2:return ge(this,t,n)}throw Error("Invalid arity: "+arguments.length)},t.g=e,t.h=function(e,t){return ge(this,e,t)},t}(),h.R=function(){return this.K},h.Aa=function(){if(this.eb+1t?null:(e=this.start+t)t||this.end<=this.start+t?oh(t,this.end-this.start):Zb(this.ma,this.start+t)},h.Ba=function(e,t,n){return 0>t||this.end<=this.start+t?n:Zb(this.ma,this.start+t,n)},h.Kb=function(e,t,n){if(e=this.start+t,0>t||this.end+1<=e)throw Error(["Index ",p.g(t)," out of bounds [0,",p.g(this.da(null)),"]"].join(""));t=this.K,n=I.j(this.ma,e,n);var r=this.start,i=this.end;return e=i>(e+=1)?i:e,Mh.O?Mh.O(t,n,r,e,null):Mh.call(null,t,n,r,e,null)},h.xa=function(){return null!=this.ma&&cb===this.ma.Ee?uh(this.ma,this.start,this.end):new jg(this)},h.R=function(){return this.K},h.da=function(){return this.end-this.start},h.Ub=function(){return this.start===this.end?null:Zb(this.ma,this.end-1)},h.Vb=function(){if(this.start===this.end)throw Error("Can't pop empty vector");var e=this.K,t=this.ma,n=this.start,r=this.end-1;return Mh.O?Mh.O(e,t,n,r,null):Mh.call(null,e,t,n,r,null)},h.Ac=function(){return this.start!==this.end?new ie(this,this.end-this.start-1,null):null},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=Nd(this)},h.aa=function(e,t){return je(this,t)},h.sa=function(){return Bc(F,this.K)},h.Ea=function(e,t){return null!=this.ma&&cb===this.ma.Ee?vh(this.ma,t,this.start,this.end):Xd(this,t)},h.Fa=function(e,t,n){return null!=this.ma&&cb===this.ma.Ee?wh(this.ma,t,n,this.start,this.end):Yd(this,t,n)},h.ja=function(e,t,n){if("number"==typeof t)return this.Kb(null,t,n);throw Error("Subvec's key for assoc must be a number.")},h.za=function(e,t){return!!Se(t)&&(0<=t&&t>>n&31;if(5===n)t=i;else{var l=r.o[o];null!=l?(n-=5,t=e.F?e.F(t,n,l,i):e.call(null,t,n,l,i)):t=mh(t.root.ya,n-5,i)}return r.o[o]=t,r};function yh(e,t,n,r){this.H=e,this.shift=t,this.root=n,this.wa=r,this.M=88,this.B=275}function Qh(e,t,n){if(e.root.ya){if(0<=t&&t>>i&31;i=r(i-5,o.o[l]),o.o[l]=i}return o}(e.shift,e.root);e.root=r}return e}if(t===e.H)return e.kd(null,n);throw Error(["Index ",p.g(t)," out of bounds for TransientVector of length",p.g(e.H)].join(""))}throw Error("assoc! after persistent!")}function Rh(e,t){this.pd=e,this.Ud=t}function Sh(e,t,n,r){this.K=e,this.Cb=t,this.Gb=n,this.G=r,this.B=31850700,this.M=0}function Th(e,t,n,r,i){this.K=e,this.count=t,this.Cb=n,this.Gb=r,this.G=i,this.M=139264,this.B=31858766}h=yh.prototype,h.kd=function(e,t){if(this.root.ya){if(32>this.H-lh(this))this.wa[31&this.H]=t;else{e=new ih(this.root.ya,this.wa);var n=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];n[0]=t,this.wa=n,this.H>>>5>1<=e)return new k(this.K,this.H-1,n,null);x.h(t,this.o[r])||(n[i]=this.o[r],n[i+1]=this.o[r+1],i+=2),r+=2}},h.ja=function(e,t,n){if(-1===(e=ai(this.o,t))){if(this.H=i))return e;if(ji(n[i],n[e]))return e;e-=2}}(),e[o]=n[i],e[o+1]=n[t+1],i=2+i,o=t=2+o):(i=2+i,o=t=o);return new k(null,e.length/2,e,null)}return new k(null,n.length/2,n,null)}function fi(e,t){this.Uc={},this.hc=e,this.o=t,this.B=259,this.M=56}function ni(e,t){for(var n=Xc(hi),r=0;;){if(!(rt?4:2*(t+1));return Ne(this.o,0,n,0,2*t),new ui(e,this.ra,n)},h.Pd=function(e,t,n,r,i){var o=1<<(n>>>t&31);if(0==(this.ra&o))return this;var l=mf(this.ra&o-1),s=this.o[2*l],a=this.o[2*l+1];return null==s?(t=a.Pd(e,t+5,n,r,i))===a?this:null!=t?ri(this,e,2*l+1,t):this.ra===o?null:vi(this,e,o,l):ji(r,s)?(i.v=!0,vi(this,e,o,l)):this},h.Nd=function(){return wi?wi(this.o):xi.call(null,this.o)},h.$c=function(e,t){return si(this.o,e,t)},h.Pc=function(e,t,n,r){var i=1<<(t>>>e&31);if(0==(this.ra&i))return r;var o=mf(this.ra&i-1);return i=this.o[2*o],o=this.o[2*o+1],null==i?o.Pc(e+5,t,n,r):ji(n,i)?o:r},h.fc=function(e,t,n,r,i,o){var l=1<<(n>>>t&31),s=mf(this.ra&l-1);if(0==(this.ra&l)){var a=mf(this.ra);if(2*a>>t&31]=yi.fc(e,t+5,n,r,i,o),i=r=0;32>r;)0==(this.ra>>>r&1)||(s[r]=null!=this.o[i]?yi.fc(e,t+5,xd(this.o[i]),this.o[i],this.o[i+1],o):this.o[i+1],i+=2),r+=1;return new zi(e,a+1,s)}return t=Array(2*(a+4)),Ne(this.o,0,t,0,2*s),t[2*s]=r,t[2*s+1]=i,Ne(this.o,2*s,t,2*(s+1),2*(a-s)),o.v=!0,(e=this.Ec(e)).o=t,e.ra|=l,e}return a=this.o[2*s],l=this.o[2*s+1],null==a?(a=l.fc(e,t+5,n,r,i,o))===l?this:ri(this,e,2*s+1,a):ji(r,a)?i===l?this:ri(this,e,2*s+1,i):(o.v=!0,o=t+5,r=Ai?Ai(e,o,a,l,n,r,i):Bi.call(null,e,o,a,l,n,r,i),i=2*s,s=2*s+1,(e=this.Ec(e)).o[i]=null,e.o[s]=r,e)},h.ec=function(e,t,n,r,i){var o=1<<(t>>>e&31),l=mf(this.ra&o-1);if(0==(this.ra&o)){var s=mf(this.ra);if(16<=s){for((l=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null])[t>>>e&31]=yi.ec(e+5,t,n,r,i),r=n=0;32>n;)0==(this.ra>>>n&1)||(l[n]=null!=this.o[r]?yi.ec(e+5,xd(this.o[r]),this.o[r],this.o[r+1],i):this.o[r+1],r+=2),n+=1;return new zi(null,s+1,l)}return e=Array(2*(s+1)),Ne(this.o,0,e,0,2*l),e[2*l]=n,e[2*l+1]=r,Ne(this.o,2*l,e,2*(l+1),2*(s-l)),i.v=!0,new ui(null,this.ra|o,e)}var a=this.o[2*l];return o=this.o[2*l+1],null==a?(s=o.ec(e+5,t,n,r,i))===o?this:new ui(null,this.ra,pi(this.o,2*l+1,s)):ji(n,a)?r===o?this:new ui(null,this.ra,pi(this.o,2*l+1,r)):(i.v=!0,i=this.ra,s=this.o,e+=5,e=Ci?Ci(e,a,o,t,n,r):Bi.call(null,e,a,o,t,n,r),n=2*l,l=2*l+1,(r=Lb(s))[n]=null,r[l]=e,new ui(null,i,r))},h.Md=function(e,t,n,r){var i=1<<(t>>>e&31);if(0==(this.ra&i))return r;var o=mf(this.ra&i-1);return i=this.o[2*o],o=this.o[2*o+1],null==i?o.Md(e+5,t,n,r):ji(n,i)?new xh(i,o):r},h.Od=function(e,t,n){var r=1<<(t>>>e&31);if(0==(this.ra&r))return this;var i=mf(this.ra&r-1),o=this.o[2*i],l=this.o[2*i+1];return null==o?(e=l.Od(e+5,t,n))===l?this:null!=e?new ui(null,this.ra,pi(this.o,2*i+1,e)):this.ra===r?null:new ui(null,this.ra^r,qi(this.o,i)):ji(n,o)?this.ra===r?null:new ui(null,this.ra^r,qi(this.o,i)):this},h.xa=function(){return new ti(this.o)};var yi=new ui(null,0,[]);function Di(e,t,n){var r=e.o,i=r.length;e=Array(2*(e.H-1));for(var o=0,l=1,s=0;;){if(!(o>>t&31,l=this.o[o];return null==l||(t=l.Pd(e,t+5,n,r,i))===l?this:null==t?8>=this.H?Di(this,e,o):(--(e=ri(this,e,o,t)).H,e):ri(this,e,o,t)},h.Nd=function(){return Fi?Fi(this.o):Gi.call(null,this.o)},h.$c=function(e,t){for(var n=this.o.length,r=0;;){if(!(r>>e&31];return null!=i?i.Pc(e+5,t,n,r):r},h.fc=function(e,t,n,r,i,o){var l=n>>>t&31,s=this.o[l];return null==s?((e=ri(this,e,l,yi.fc(e,t+5,n,r,i,o))).H+=1,e):(t=s.fc(e,t+5,n,r,i,o))===s?this:ri(this,e,l,t)},h.ec=function(e,t,n,r,i){var o=t>>>e&31,l=this.o[o];return null==l?new zi(null,this.H+1,pi(this.o,o,yi.ec(e+5,t,n,r,i))):(e=l.ec(e+5,t,n,r,i))===l?this:new zi(null,this.H,pi(this.o,o,e))},h.Md=function(e,t,n,r){var i=this.o[t>>>e&31];return null!=i?i.Md(e+5,t,n,r):r},h.Od=function(e,t,n){var r=t>>>e&31,i=this.o[r];return null!=i?(e=i.Od(e+5,t,n))===i?this:null==e?8>=this.H?Di(this,null,r):new zi(null,this.H-1,pi(this.o,r,e)):new zi(null,this.H,pi(this.o,r,e)):this},h.xa=function(){return new Ei(this.o)},h=Ii.prototype,h.Ec=function(e){if(e===this.ya)return this;var t=Array(2*(this.H+1));return Ne(this.o,0,t,0,2*this.H),new Ii(e,this.Cc,this.H,t)},h.Pd=function(e,t,n,r,i){return-1===(t=Hi(this.o,this.H,r))?this:(i.v=!0,1===this.H?null:((i=(e=this.Ec(e)).o)[t]=i[2*this.H-2],i[t+1]=i[2*this.H-1],i[2*this.H-1]=null,i[2*this.H-2]=null,--e.H,e))},h.Nd=function(){return wi?wi(this.o):xi.call(null,this.o)},h.$c=function(e,t){return si(this.o,e,t)},h.Pc=function(e,t,n,r){return 0>(e=Hi(this.o,this.H,n))?r:ji(n,this.o[e])?this.o[e+1]:r},h.fc=function(e,t,n,r,i,o){return n===this.Cc?-1===(t=Hi(this.o,this.H,r))?this.o.length>2*this.H?(t=2*this.H,n=2*this.H+1,(e=this.Ec(e)).o[t]=r,e.o[n]=i,o.v=!0,e.H+=1,e):(n=this.o.length,t=Array(n+2),Ne(this.o,0,t,0,n),t[n]=r,t[n+1]=i,o.v=!0,r=this.H+1,e===this.ya?(this.o=t,this.H=r,e=this):e=new Ii(this.ya,this.Cc,r,t),e):this.o[t+1]===i?this:ri(this,e,t+1,i):new ui(e,1<<(this.Cc>>>t&31),[null,this,null,null]).fc(e,t,n,r,i,o)},h.ec=function(e,t,n,r,i){return t===this.Cc?-1===(e=Hi(this.o,this.H,n))?(e=2*this.H,t=Array(e+2),Ne(this.o,0,t,0,e),t[e]=n,t[e+1]=r,i.v=!0,new Ii(null,this.Cc,this.H+1,t)):x.h(this.o[e+1],r)?this:new Ii(null,this.Cc,this.H,pi(this.o,e+1,r)):new ui(null,1<<(this.Cc>>>e&31),[null,this]).ec(e,t,n,r,i)},h.Md=function(e,t,n,r){return 0>(e=Hi(this.o,this.H,n))?r:ji(n,this.o[e])?new xh(this.o[e],this.o[e+1]):r},h.Od=function(e,t,n){return-1===(e=Hi(this.o,this.H,n))?this:1===this.H?null:new Ii(null,this.Cc,this.H-1,qi(this.o,kf(e,2)))},h.xa=function(){return new ti(this.o)},h=Ji.prototype,h.toString=function(){return pd(this)},h.indexOf=function(){var e;return e=function(e,t){switch(arguments.length){case 1:return de(this,e,0);case 2:return de(this,e,t)}throw Error("Invalid arity: "+arguments.length)},e.g=function(e){return de(this,e,0)},e.h=function(e,t){return de(this,e,t)},e}(),h.lastIndexOf=function(){function e(e){return ge(this,e,C(this))}var t;return t=function(t,n){switch(arguments.length){case 1:return e.call(this,t);case 2:return ge(this,t,n)}throw Error("Invalid arity: "+arguments.length)},t.g=e,t.h=function(e,t){return ge(this,e,t)},t}(),h.R=function(){return this.K},h.Aa=function(){if(null==this.ka){var e=this.va,t=this.N+2;return Ki?Ki(e,t,null):xi.call(null,e,t,null)}e=this.va,t=this.N;var n=B(this.ka);return Ki?Ki(e,t,n):xi.call(null,e,t,n)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=Nd(this)},h.aa=function(e,t){return je(this,t)},h.sa=function(){return Id},h.Ea=function(e,t){return le(t,this)},h.Fa=function(e,t,n){return ne(t,n,this)},h.Ga=function(){return null==this.ka?new xh(this.va[this.N],this.va[this.N+1]):A(this.ka)},h.Ia=function(){var e,t,n=this,r=null==n.ka?(e=n.va,t=n.N+2,Ki?Ki(e,t,null):xi.call(null,e,t,null)):function(){var e=n.va,t=n.N,r=B(n.ka);return Ki?Ki(e,t,r):xi.call(null,e,t,r)}();return null!=r?r:Id},h.ca=function(){return this},h.S=function(e,t){return t===this.K?this:new Ji(t,this.va,this.N,this.ka,this.G)},h.ia=function(e,t){return ke(t,this)},Ji.prototype[Gb]=function(){return Kd(this)},h=Li.prototype,h.toString=function(){return pd(this)},h.indexOf=function(){var e;return e=function(e,t){switch(arguments.length){case 1:return de(this,e,0);case 2:return de(this,e,t)}throw Error("Invalid arity: "+arguments.length)},e.g=function(e){return de(this,e,0)},e.h=function(e,t){return de(this,e,t)},e}(),h.lastIndexOf=function(){function e(e){return ge(this,e,C(this))}var t;return t=function(t,n){switch(arguments.length){case 1:return e.call(this,t);case 2:return ge(this,t,n)}throw Error("Invalid arity: "+arguments.length)},t.g=e,t.h=function(e,t){return ge(this,e,t)},t}(),h.R=function(){return this.K},h.Aa=function(){var e=this.va,t=this.N,n=B(this.ka);return Mi?Mi(e,t,n):Gi.call(null,e,t,n)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=Nd(this)},h.aa=function(e,t){return je(this,t)},h.sa=function(){return Id},h.Ea=function(e,t){return le(t,this)},h.Fa=function(e,t,n){return ne(t,n,this)},h.Ga=function(){return A(this.ka)},h.Ia=function(){var e=this.va,t=this.N,n=B(this.ka);return null!=(e=Mi?Mi(e,t,n):Gi.call(null,e,t,n))?e:Id},h.ca=function(){return this},h.S=function(e,t){return t===this.K?this:new Li(t,this.va,this.N,this.ka,this.G)},h.ia=function(e,t){return ke(t,this)},Li.prototype[Gb]=function(){return Kd(this)},Ni.prototype.ua=function(){return!this.bf||this.ag.ua()},Ni.prototype.next=function(){return this.bf?this.ag.next():(this.bf=!0,new xh(null,this.cb))},Ni.prototype.remove=function(){return Error("Unsupported operation")},h=Oi.prototype,h.zc=function(e,t){return null==t?this.Ta?new xh(null,this.cb):null:null==this.root?null:this.root.Md(0,xd(t),t,null)},h.toString=function(){return pd(this)},h.keys=function(){return Kd(di.g?di.g(this):di.call(null,this))},h.entries=function(){return new Zh(z(z(this)))},h.values=function(){return Kd(ei.g?ei.g(this):ei.call(null,this))},h.has=function(e){return M(this,e)},h.get=function(e,t){return this.P(null,e,t)},h.forEach=function(e){for(var t=z(this),n=null,r=0,i=0;;)if(ithis.H?C(B(this))+1:this.H},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=Nd(this)},h.aa=function(e,t){return je(this,t)},h.sa=function(){return Id},h.Ea=function(e,t){return le(t,this)},h.Fa=function(e,t,n){return ne(t,n,this)},h.Ga=function(){return Be(this.stack)},h.Ia=function(){var e=A(this.stack);return null!=(e=Ti(this.Rc?e.right:e.left,B(this.stack),this.Rc))?new Ui(null,e,this.Rc,this.H-1,null):Id},h.ca=function(){return this},h.S=function(e,t){return t===this.K?this:new Ui(t,this.stack,this.Rc,this.H,this.G)},h.ia=function(e,t){return ke(t,this)},Ui.prototype[Gb]=function(){return Kd(this)};var bj=function e(t,n,r){var i,o=null!=t.left?(i=t.left,e.j?e.j(i,n,r):e.call(null,i,n,r)):r;if(Ud(o))return o;var l=function(){var e=t.key,r=t.v;return n.j?n.j(o,e,r):n.call(null,o,e,r)}();if(Ud(l))return l;if(null!=t.right){var s=t.right;return e.j?e.j(s,n,l):e.call(null,s,n,l)}return l};function Yi(e,t,n,r){this.key=e,this.v=t,this.left=n,this.right=r,this.G=null,this.B=166619935,this.M=0}function Xi(e,t,n,r){this.key=e,this.v=t,this.left=n,this.right=r,this.G=null,this.B=166619935,this.M=0}h=Yi.prototype,h.zc=function(e,t){switch(t){case 0:return new xh(0,this.key);case 1:return new xh(1,this.v);default:return null}},h.lastIndexOf=function(){function e(e){return ge(this,e,C(this))}var t;return t=function(t,n){switch(arguments.length){case 1:return e.call(this,t);case 2:return ge(this,t,n)}throw Error("Invalid arity: "+arguments.length)},t.g=e,t.h=function(e,t){return ge(this,e,t)},t}(),h.indexOf=function(){var e;return e=function(e,t){switch(arguments.length){case 1:return de(this,e,0);case 2:return de(this,e,t)}throw Error("Invalid arity: "+arguments.length)},e.g=function(e){return de(this,e,0)},e.h=function(e,t){return de(this,e,t)},e}(),h.rf=function(e){return e.uf(this)},h.Td=function(){return new Xi(this.key,this.v,this.left,this.right)},h.vc=function(){return this},h.qf=function(e){return e.tf(this)},h.replace=function(e,t,n,r){return new Yi(e,t,n,r)},h.tf=function(e){return new Yi(e.key,e.v,this,e.right)},h.uf=function(e){return new Yi(e.key,e.v,e.left,this)},h.$c=function(e,t){return bj(this,e,t)},h.na=function(e,t){return this.Ba(null,t,null)},h.P=function(e,t,n){return this.Ba(null,t,n)},h.$=function(e,t){if(0===t)return this.key;if(1===t)return this.v;throw Error("Index out of bounds")},h.Ba=function(e,t,n){return 0===t?this.key:1===t?this.v:n},h.Kb=function(e,t,n){return new Q(null,2,5,S,[this.key,this.v],null).Kb(null,t,n)},h.R=function(){return null},h.da=function(){return 2},h.He=function(){return this.key},h.Ie=function(){return this.v},h.Ub=function(){return this.v},h.Vb=function(){return new Q(null,1,5,S,[this.key],null)},h.Ac=function(){return new Fd([this.v,this.key],0,null)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=Nd(this)},h.aa=function(e,t){return je(this,t)},h.sa=function(){return null},h.Ea=function(e,t){return Xd(this,t)},h.Fa=function(e,t,n){return Yd(this,t,n)},h.ja=function(e,t,n){return I.j(new Q(null,2,5,S,[this.key,this.v],null),t,n)},h.za=function(e,t){return 0===t||1===t},h.ca=function(){return new Fd([this.key,this.v],0,null)},h.S=function(e,t){return Bc(new Q(null,2,5,S,[this.key,this.v],null),t)},h.ia=function(e,t){return new Q(null,3,5,S,[this.key,this.v,t],null)},h.call=function(e){switch(arguments.length-1){case 1:return this.g(arguments[1]);case 2:return this.h(arguments[1],arguments[2]);default:throw Error(["Invalid arity: ",p.g(arguments.length-1)].join(""))}},h.apply=function(e,t){return this.call.apply(this,[this].concat(Lb(t)))},h.g=function(e){return this.$(null,e)},h.h=function(e,t){return this.Ba(null,e,t)},Yi.prototype[Gb]=function(){return Kd(this)},h=Xi.prototype,h.zc=function(e,t){switch(t){case 0:return new xh(0,this.key);case 1:return new xh(1,this.v);default:return null}},h.lastIndexOf=function(){function e(e){return ge(this,e,C(this))}var t;return t=function(t,n){switch(arguments.length){case 1:return e.call(this,t);case 2:return ge(this,t,n)}throw Error("Invalid arity: "+arguments.length)},t.g=e,t.h=function(e,t){return ge(this,e,t)},t}(),h.indexOf=function(){var e;return e=function(e,t){switch(arguments.length){case 1:return de(this,e,0);case 2:return de(this,e,t)}throw Error("Invalid arity: "+arguments.length)},e.g=function(e){return de(this,e,0)},e.h=function(e,t){return de(this,e,t)},e}(),h.rf=function(e){return new Xi(this.key,this.v,this.left,e)},h.Td=function(){throw Error("red-black tree invariant violation")},h.vc=function(){return new Yi(this.key,this.v,this.left,this.right)},h.qf=function(e){return new Xi(this.key,this.v,e,this.right)},h.replace=function(e,t,n,r){return new Xi(e,t,n,r)},h.tf=function(e){return this.left instanceof Xi?new Xi(this.key,this.v,this.left.vc(),new Yi(e.key,e.v,this.right,e.right)):this.right instanceof Xi?new Xi(this.right.key,this.right.v,new Yi(this.key,this.v,this.left,this.right.left),new Yi(e.key,e.v,this.right.right,e.right)):new Yi(e.key,e.v,this,e.right)},h.uf=function(e){return this.right instanceof Xi?new Xi(this.key,this.v,new Yi(e.key,e.v,e.left,this.left),this.right.vc()):this.left instanceof Xi?new Xi(this.left.key,this.left.v,new Yi(e.key,e.v,e.left,this.left.left),new Yi(this.key,this.v,this.left.right,this.right)):new Yi(e.key,e.v,e.left,this)},h.$c=function(e,t){return bj(this,e,t)},h.na=function(e,t){return this.Ba(null,t,null)},h.P=function(e,t,n){return this.Ba(null,t,n)},h.$=function(e,t){if(0===t)return this.key;if(1===t)return this.v;throw Error("Index out of bounds")},h.Ba=function(e,t,n){return 0===t?this.key:1===t?this.v:n},h.Kb=function(e,t,n){return new Q(null,2,5,S,[this.key,this.v],null).Kb(null,t,n)},h.R=function(){return null},h.da=function(){return 2},h.He=function(){return this.key},h.Ie=function(){return this.v},h.Ub=function(){return this.v},h.Vb=function(){return new Q(null,1,5,S,[this.key],null)},h.Ac=function(){return new Fd([this.v,this.key],0,null)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=Nd(this)},h.aa=function(e,t){return je(this,t)},h.sa=function(){return null},h.Ea=function(e,t){return Xd(this,t)},h.Fa=function(e,t,n){return Yd(this,t,n)},h.ja=function(e,t,n){return I.j(new Q(null,2,5,S,[this.key,this.v],null),t,n)},h.za=function(e,t){return 0===t||1===t},h.ca=function(){return new Fd([this.key,this.v],0,null)},h.S=function(e,t){return Bc(new Q(null,2,5,S,[this.key,this.v],null),t)},h.ia=function(e,t){return new Q(null,3,5,S,[this.key,this.v,t],null)},h.call=function(e){switch(arguments.length-1){case 1:return this.g(arguments[1]);case 2:return this.h(arguments[1],arguments[2]);default:throw Error(["Invalid arity: ",p.g(arguments.length-1)].join(""))}},h.apply=function(e,t){return this.call.apply(this,[this].concat(Lb(t)))},h.g=function(e){return this.$(null,e)},h.h=function(e,t){return this.Ba(null,e,t)},Xi.prototype[Gb]=function(){return Kd(this)};var cj=function e(t,n,r,i,o){if(null==n)return new Xi(r,i,null,null);var l,s=(l=n.key,t.h?t.h(r,l):t.call(null,r,l));return 0===s?(o[0]=n,null):0>s?(s=function(){var l=n.left;return e.O?e.O(t,l,r,i,o):e.call(null,t,l,r,i,o)}(),null!=s?n.qf(s):null):(s=function(){var l=n.right;return e.O?e.O(t,l,r,i,o):e.call(null,t,l,r,i,o)}(),null!=s?n.rf(s):null)},dj=function e(t,n){if(null==t)return n;if(null==n)return t;if(t instanceof Xi){if(n instanceof Xi){var r=function(){var r=t.right,i=n.left;return e.h?e.h(r,i):e.call(null,r,i)}();return r instanceof Xi?new Xi(r.key,r.v,new Xi(t.key,t.v,t.left,r.left),new Xi(n.key,n.v,r.right,n.right)):new Xi(t.key,t.v,t.left,new Xi(n.key,n.v,r,n.right))}return new Xi(t.key,t.v,t.left,function(){var r=t.right;return e.h?e.h(r,n):e.call(null,r,n)}())}return n instanceof Xi?new Xi(n.key,n.v,function(){var r=n.left;return e.h?e.h(t,r):e.call(null,t,r)}(),n.right):(r=function(){var r=t.right,i=n.left;return e.h?e.h(r,i):e.call(null,r,i)}(),r instanceof Xi?new Xi(r.key,r.v,new Yi(t.key,t.v,t.left,r.left),new Yi(n.key,n.v,r.right,n.right)):$i(t.key,t.v,t.left,new Yi(n.key,n.v,r,n.right)))},ej=function e(t,n,r,i){if(null!=n){var o=function(){var e=n.key;return t.h?t.h(r,e):t.call(null,r,e)}();return 0===o?(i[0]=n,dj(n.left,n.right)):0>o?(o=function(){var o=n.left;return e.F?e.F(t,o,r,i):e.call(null,t,o,r,i)}(),null!=o||null!=i[0]?n.left instanceof Yi?$i(n.key,n.v,o,n.right):new Xi(n.key,n.v,o,n.right):null):(o=function(){var o=n.right;return e.F?e.F(t,o,r,i):e.call(null,t,o,r,i)}(),null!=o||null!=i[0]?n.right instanceof Yi?aj(n.key,n.v,n.left,o):new Xi(n.key,n.v,n.left,o):null)}return null},fj=function e(t,n,r,i){var o,l=n.key,s=t.h?t.h(r,l):t.call(null,r,l);return 0===s?n.replace(l,i,n.left,n.right):0>s?n.replace(l,n.v,(o=n.left,e.F?e.F(t,o,r,i):e.call(null,t,o,r,i)),n.right):n.replace(l,n.v,n.left,function(){var o=n.right;return e.F?e.F(t,o,r,i):e.call(null,t,o,r,i)}())};function gj(e,t,n,r,i){this.Ob=e,this.Kc=t,this.H=n,this.K=r,this.G=i,this.B=418776847,this.M=8192}function hj(e,t){for(var n=e.Kc;;){if(null==n)return null;var r=n.key;if(0===(r=e.Ob.h?e.Ob.h(t,r):e.Ob.call(null,t,r)))return n;n=0>r?n.left:n.right}}h=gj.prototype,h.zc=function(e,t){return hj(this,t)},h.forEach=function(e){for(var t=z(this),n=null,r=0,i=0;;)if(i=e?Id:Se(1)&&Se(e)&&Se(1)?new Ij(null,1,e,1,null,null,null):new Jj(null,1,e,1,null,null,null)}function Lj(e,t){return new Df(null,(function(){var n=z(t);return n?ke(A(n),Lj(e,Pg(e,n))):null}),null,null)}function Mj(e){return Zc(Nb.j((function(e,t){return Qf(e,t,u.j(e,t,0)+1)}),Xc(P),e))}function Nj(e,t){return function(){function n(n,r,i){return new Q(null,2,5,S,[e.j?e.j(n,r,i):e.call(null,n,r,i),t.j?t.j(n,r,i):t.call(null,n,r,i)],null)}function r(n,r){return new Q(null,2,5,S,[e.h?e.h(n,r):e.call(null,n,r),t.h?t.h(n,r):t.call(null,n,r)],null)}function i(n){return new Q(null,2,5,S,[e.g?e.g(n):e.call(null,n),t.g?t.g(n):t.call(null,n)],null)}function o(){return new Q(null,2,5,S,[e.A?e.A():e.call(null),t.A?t.A():t.call(null)],null)}var l,s=function(){function n(e,t,n,i){var o=null;if(3(e.g?e.g(n):e.call(null,n))?t:n},Cj.l=function(e,t,n,r){return Nb.j((function(t,n){return Cj.j(e,t,n)}),Cj.j(e,t,n),r)},Cj.J=function(e){var t=A(e),n=B(e);e=A(n);var r=B(n);return n=A(r),r=B(r),this.l(t,e,n,r)},Cj.I=3,Dj.prototype.add=function(e){return this.o.push(e)},Dj.prototype.size=function(){return this.o.length},Dj.prototype.clear=function(){return this.o=[]},Dj.prototype.Qd=function(){return 0===this.o.length},h=Gj.prototype,h.da=function(){return this.count},h.Ga=function(){return this.start},h.$=function(e,t){return this.start+t*this.step},h.Ba=function(e,t,n){return 0<=t&&t=this.count)throw Error("-drop-first of empty chunk");return new Gj(this.start+this.step,this.step,this.count-1)},Hj.prototype.ua=function(){return 0this.end},Hj.prototype.next=function(){var e=this.N;return this.N+=this.step,e},h=Ij.prototype,h.toString=function(){return pd(this)},h.indexOf=function(){var e;return e=function(e,t){switch(arguments.length){case 1:return de(this,e,0);case 2:return de(this,e,t)}throw Error("Invalid arity: "+arguments.length)},e.g=function(e){return de(this,e,0)},e.h=function(e,t){return de(this,e,t)},e}(),h.lastIndexOf=function(){function e(e){return ge(this,e,C(this))}var t;return t=function(t,n){switch(arguments.length){case 1:return e.call(this,t);case 2:return ge(this,t,n)}throw Error("Invalid arity: "+arguments.length)},t.g=e,t.h=function(e,t){return ge(this,e,t)},t}(),h.Kd=function(){if(null==this.Oa){var e=this.da(null);32this.end&&0===this.step)return this.start;throw Error("Index out of bounds")},h.Ba=function(e,t,n){return 0<=t&&tthis.end&&0===this.step?this.start:n},h.xa=function(){return new Hj(this.start,this.end,this.step)},h.R=function(){return this.K},h.Aa=function(){return 0this.end?new Ij(null,this.start+this.step,this.end,this.step,null,null,null):null},h.da=function(){return Math.ceil((this.end-this.start)/this.step)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=Nd(this)},h.aa=function(e,t){return je(this,t)},h.sa=function(){return Id},h.Ea=function(e,t){return Xd(this,t)},h.Fa=function(e,t,n){for(e=this.start;;){if(!(0this.end))return n;if(Ud(n=t.h?t.h(n,e):t.call(null,n,e)))return r(n);e+=this.step}},h.Ga=function(){return this.start},h.Ia=function(){var e=this.Aa(null);return null==e?Id:e},h.ca=function(){return this},h.yd=function(){return this.Kd(),this.Oa},h.Mc=function(){return this.Kd(),null==this.yc?Id:this.yc},h.S=function(e,t){return t===this.K?this:new Ij(t,this.start,this.end,this.step,this.Oa,this.yc,this.G)},h.ia=function(e,t){return ke(t,this)},h.be=function(){return z(this.Mc(null))},Ij.prototype[Gb]=function(){return Kd(this)},h=Jj.prototype,h.toString=function(){return pd(this)},h.indexOf=function(){var e;return e=function(e,t){switch(arguments.length){case 1:return de(this,e,0);case 2:return de(this,e,t)}throw Error("Invalid arity: "+arguments.length)},e.g=function(e){return de(this,e,0)},e.h=function(e,t){return de(this,e,t)},e}(),h.lastIndexOf=function(){function e(e){return ge(this,e,C(this))}var t;return t=function(t,n){switch(arguments.length){case 1:return e.call(this,t);case 2:return ge(this,t,n)}throw Error("Invalid arity: "+arguments.length)},t.g=e,t.h=function(e,t){return ge(this,e,t)},t}(),h.Kd=function(){if(null==this.Oa){var e=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];e:for(var t=0,n=this.start;;){if(!(32>t)){t=n;break e}if(e[t]=n,t+=1,n+=this.step,!(0this.end)){t=this.Oa=new Gf(e,0,t);break e}}null==this.Oa&&(this.Oa=new Gf(e,0,32),(0this.end)&&(this.yc=new Jj(null,t,this.end,this.step,null,null,null)))}},h.xa=function(){return new Hj(this.start,this.end,this.step)},h.R=function(){return this.K},h.Aa=function(){return 0this.end?new Jj(null,this.start+this.step,this.end,this.step,null,null,null):null},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=Nd(this)},h.aa=function(e,t){return je(this,t)},h.sa=function(){return Id},h.Ea=function(e,t){return le(t,this)},h.Fa=function(e,t,n){for(e=this.start;;){if(!(0this.end))return n;if(Ud(n=t.h?t.h(n,e):t.call(null,n,e)))return r(n);e+=this.step}},h.Ga=function(){return this.start},h.Ia=function(){var e=this.Aa(null);return null==e?Id:e},h.ca=function(){return this},h.yd=function(){return this.Kd(),this.Oa},h.Mc=function(){return this.Kd(),null==this.yc?Id:this.yc},h.S=function(e,t){return t===this.K?this:new Jj(t,this.start,this.end,this.step,this.Oa,this.yc,this.G)},h.ia=function(e,t){return ke(t,this)},h.be=function(){return z(this.Mc(null))},Jj.prototype[Gb]=function(){return Kd(this)};var Rj=function e(t,n){var r=t.exec(n);if(null==r)return null;var i=r[0];return ke(1===r.length?i:Eh(r),new Df(null,(function(){var o=i.length;return(o=r.index+(1>o?1:o))<=n.length?(o=n.substring(o),e.h?e.h(t,o):e.call(null,t,o)):null}),null,null))};function Sj(e){if(e instanceof RegExp)return e;var t=Qj(/^\(\?([idmsux]*)\)/,e),r=G(t,0,null);return t=G(t,1,null),new RegExp(e.substring(null==r?0:r.length),n(t)?t:"")}function Tj(e,t,r,i,o,l,s){var a,u=jb;jb=null==jb?null:jb-1;try{if(null!=jb&&0>jb)return Qc(e,"#");if(Qc(e,r),0===tb.g(l))z(s)&&Qc(e,n(a=Uj.g(l))?a:"...");else{if(z(s)){var c=A(s);t.j?t.j(c,e,l):t.call(null,c,e,l)}for(var h=B(s),d=tb.g(l)-1;;){if(!h||null!=d&&0===d){z(h)&&0===d&&(Qc(e,i),Qc(e,function(){var e=Uj.g(l);return n(e)?e:"..."}()));break}Qc(e,i);var f=A(h);r=e,s=l,t.j?t.j(f,r,s):t.call(null,f,r,s),h=B(h),d=r=d-1}}return Qc(e,o)}finally{jb=u}}function Vj(e,t){t=z(t);for(var n=null,r=0,i=0;;)if(ijs",e);e=t.g?t.g(e):t.call(null,e)}}return e}function zk(e,t){return(null!=e?cb===e.Gg||!e.Pe&&Cb(xk,e):Cb(xk,e))?yk(e):"string"==typeof e||"number"==typeof e||e instanceof w||e instanceof Ad?t.g?t.g(e):t.call(null,e):hk.l(D([e]))}jk.l=function(e){return fk(e,I.j(kb(),qb,!1))},jk.I=0,jk.J=function(e){return this.l(z(e))},Lg.prototype.pa=cb,Lg.prototype.U=function(e,t,n){return Qc(t,"#object[cljs.core.Volatile "),bk(new k(null,1,[pk,this.state],null),t,n),Qc(t,"]")},Cd.prototype.pa=cb,Cd.prototype.U=function(e,t,n){return Qc(t,"#'"),bk(this.ad,t,n)},Fd.prototype.pa=cb,Fd.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},Df.prototype.pa=cb,Df.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},xh.prototype.pa=cb,xh.prototype.U=function(e,t,n){return Tj(t,bk,"["," ","]",n,this)},Ui.prototype.pa=cb,Ui.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},Ji.prototype.pa=cb,Ji.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},Yi.prototype.pa=cb,Yi.prototype.U=function(e,t,n){return Tj(t,bk,"["," ","]",n,this)},bi.prototype.pa=cb,bi.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},Ld.prototype.pa=cb,Ld.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},Jh.prototype.pa=cb,Jh.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},wf.prototype.pa=cb,wf.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},dt.prototype.pa=cb,dt.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},ie.prototype.pa=cb,ie.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},Ij.prototype.pa=cb,Ij.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},Oi.prototype.pa=cb,Oi.prototype.U=function(e,t,n){return ck(this,bk,t,n)},Li.prototype.pa=cb,Li.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},Lh.prototype.pa=cb,Lh.prototype.U=function(e,t,n){return Tj(t,bk,"["," ","]",n,this)},gj.prototype.pa=cb,gj.prototype.U=function(e,t,n){return ck(this,bk,t,n)},uj.prototype.pa=cb,uj.prototype.U=function(e,t,n){return Tj(t,bk,"#{"," ","}",n,this)},If.prototype.pa=cb,If.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},Eg.prototype.pa=cb,Eg.prototype.U=function(e,t,n){return Qc(t,"#object[cljs.core.Atom "),bk(new k(null,1,[pk,this.state],null),t,n),Qc(t,"]")},oj.prototype.pa=cb,oj.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},Xi.prototype.pa=cb,Xi.prototype.U=function(e,t,n){return Tj(t,bk,"["," ","]",n,this)},Rg.prototype.pa=cb,Rg.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},Q.prototype.pa=cb,Q.prototype.U=function(e,t,n){return Tj(t,bk,"["," ","]",n,this)},Sh.prototype.pa=cb,Sh.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},uf.prototype.pa=cb,uf.prototype.U=function(e,t){return Qc(t,"()")},Th.prototype.pa=cb,Th.prototype.U=function(e,t,n){return Tj(t,bk,"#queue ["," ","]",n,z(this))},k.prototype.pa=cb,k.prototype.U=function(e,t,n){return ck(this,bk,t,n)},Jj.prototype.pa=cb,Jj.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},rg.prototype.pa=cb,rg.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},nj.prototype.pa=cb,nj.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},se.prototype.pa=cb,se.prototype.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},Ad.prototype.Nc=cb,Ad.prototype.Tb=function(e,t){if(t instanceof Ad)return zd(this,t);throw Error(["Cannot compare ",p.g(this)," to ",p.g(t)].join(""))},w.prototype.Nc=cb,w.prototype.Tb=function(e,t){if(t instanceof w)return xf(this,t);throw Error(["Cannot compare ",p.g(this)," to ",p.g(t)].join(""))},Lh.prototype.Nc=cb,Lh.prototype.Tb=function(e,t){if(Le(t))return Ve(this,t);throw Error(["Cannot compare ",p.g(this)," to ",p.g(t)].join(""))},Q.prototype.Nc=cb,Q.prototype.Tb=function(e,t){if(Le(t))return Ve(this,t);throw Error(["Cannot compare ",p.g(this)," to ",p.g(t)].join(""))},xh.prototype.Nc=cb,xh.prototype.Tb=function(e,t){if(Le(t))return Ve(this,t);throw Error(["Cannot compare ",p.g(this)," to ",p.g(t)].join(""))},Yi.prototype.Nc=cb,Yi.prototype.Tb=function(e,t){if(Le(t))return Ve(this,t);throw Error(["Cannot compare ",p.g(this)," to ",p.g(t)].join(""))},Xi.prototype.Nc=cb,Xi.prototype.Tb=function(e,t){if(Le(t))return Ve(this,t);throw Error(["Cannot compare ",p.g(this)," to ",p.g(t)].join(""))},qk.prototype.Jb=function(){return n(this.f)&&(this.value=this.f.A?this.f.A():this.f.call(null),this.f=null),this.value},qk.prototype.Dd=function(){return yb(this.f)},qk.prototype.U=function(e,t,n){return Qc(t,"#object[cljs.core.Delay "),bk(new k(null,2,[rk,null==this.f?sk:tk,pk,this.value],null),t,n),Qc(t,"]")},h=vk.prototype,h.indexOf=function(){var e;return e=function(e,t){switch(arguments.length){case 1:return de(this,e,0);case 2:return de(this,e,t)}throw Error("Invalid arity: "+arguments.length)},e.g=function(e){return de(this,e,0)},e.h=function(e,t){return de(this,e,t)},e}(),h.lastIndexOf=function(){function e(e){return ge(this,e,C(this))}var t;return t=function(t,n){switch(arguments.length){case 1:return e.call(this,t);case 2:return ge(this,t,n)}throw Error("Invalid arity: "+arguments.length)},t.g=e,t.h=function(e,t){return ge(this,e,t)},t}(),h.xa=function(){var e=kg(this.de);return sg(this.ze,e)},h.ca=function(){var e=kg(this.de);return e=sg(this.ze,e),z(n(e=qg(e))?e:Id)},h.Ea=function(e,t){return df(this.ze,cf(t,bf),this.de)},h.Fa=function(e,t,n){return ef(this.ze,cf(t,bf),n,this.de)},h.U=function(e,t,n){return Tj(t,bk,"("," ",")",n,this)},vk.prototype[Gb]=function(){return Kd(this)};var Ak=function e(t){for(var n=[],r=arguments.length,i=0;iclj",e);e=n.h?n.h(e,t):n.call(null,e,t)}}return e}function Ek(e){return Fk(e,D([Gk,!1]))}function Fk(e,t){var r=bg(t),i=n(r=u.h(r,Gk))?Bf:p;return function e(n){return(null!=n?cb===n.mi||!n.Pe&&Cb(Ck,n):Cb(Ck,n))?Dk(n,Xf(kj,t)):Qe(n)?Oj(Ng.h(e,n)):Fh(n)?new xh(e(pc(n)),e(qc(n))):Fe(n)?ah.j(te(n),Ng.g(e),n):wb(n)?Zc(Nb.j((function(t,n){return Pf.h(t,e(n))}),Xc(F),n)):Db(n)===Object?Zc(Nb.j((function(t,r){return Qf(t,i.g?i.g(r):i.call(null,r),e(Ia(n,r)))}),Xc(P),Ga(n))):n}(e)}function Hk(e){var t=Fg(P);return function(){function n(e){var t=null;if(0 ",p.g(l)," and ",p.g(A(e)),", and neither is preferred"].join(""));return e}return e}),null,r(l)),f=((h=null==d)&&(h=(h=r(l)).g?h.g(c):h.call(null,c)),n(h)?new Q(null,2,5,S,[c,h],null):d);return n(f)?x.h(r(u),r(o))?(Ig.F(a,I,i,oe(f)),oe(f)):(Qk(a,l,u,o),e.Ma?e.Ma(t,i,o,l,s,a,u,c):e.call(null,t,i,o,l,s,a,u,c)):null};function Uk(e,t,n){if(null!=e&&null!=e.C)e.C(e,t,n);else{var r=Uk[ba(null==e?null:e)];if(null!=r)r.j?r.j(e,t,n):r.call(null,e,t,n);else{if(null==(r=Uk._))throw Eb("IMultiFn.-add-method",e);r.j?r.j(e,t,n):r.call(null,e,t,n)}}}function Vk(e,t){if(null!=e&&null!=e.La)e=e.La(e,t);else{var n=Vk[ba(null==e?null:e)];if(null!=n)e=n.h?n.h(e,t):n.call(null,e,t);else{if(null==(n=Vk._))throw Eb("IMultiFn.-get-method",e);e=n.h?n.h(e,t):n.call(null,e,t)}}return e}function Wk(e){if(null!=e&&null!=e.Jg)e=e.V;else{var t=Wk[ba(null==e?null:e)];if(null!=t)e=t.g?t.g(e):t.call(null,e);else{if(null==(t=Wk._))throw Eb("IMultiFn.-dispatch-fn",e);e=t.g?t.g(e):t.call(null,e)}}return e}function Xk(e,t){throw Error(["No method in multimethod '",p.g(e),"' for dispatch value: ",p.g(t)].join(""))}function Yk(e,t,n,r,i,o,l){var s=Zk;this.name=e,this.V=t,this.Wg=s,this.he=n,this.me=r,this.Yh=i,this.le=o,this.Xd=l,this.B=4194305,this.M=4352}function $k(e){this.dd=e,this.G=null,this.B=2153775104,this.M=2048}function al(){function e(){return Math.floor(16*Math.random()).toString(16)}var t=(8|3&Math.floor(16*Math.random())).toString(16);return new $k([p.g(e()),p.g(e()),p.g(e()),p.g(e()),p.g(e()),p.g(e()),p.g(e()),p.g(e()),"-",p.g(e()),p.g(e()),p.g(e()),p.g(e()),"-4",p.g(e()),p.g(e()),p.g(e()),"-",p.g(t),p.g(e()),p.g(e()),p.g(e()),"-",p.g(e()),p.g(e()),p.g(e()),p.g(e()),p.g(e()),p.g(e()),p.g(e()),p.g(e()),p.g(e()),p.g(e()),p.g(e()),p.g(e())].join("").toLowerCase())}function bl(e,t,n){var r=Error(e);return this.message=e,this.data=t,this.cause=n,this.name=r.name,this.description=r.description,this.number=r.number,this.fileName=r.fileName,this.lineNumber=r.lineNumber,this.columnNumber=r.columnNumber,this.stack=r.stack,this}function cl(e,t){return dl(e,t,null)}function dl(e,t,n){return new bl(e,t,n)}function el(e){return e instanceof bl?e.data:null}function fl(e){return e instanceof Error?e.message:null}function gl(e){return M(new uj(null,new k(null,24,[hl,"null",il,"null",jl,"null",kl,"null",ll,"null",ml,"null",nl,"null",ol,"null",pl,"null",ql,"null",rl,"null",sl,"null",tl,"null",ul,"null",vl,"null",wl,"null",xl,"null",yl,"null",zl,"null",Al,"null",Bl,"null",Cl,"null",Dl,"null",El,"null"],null),null),e)}function Fl(e,t){this.tag=e,this.form=t,this.B=2153775360,this.M=0}h=Yk.prototype,h.call=function(e){switch(arguments.length-1){case 0:return this.A();case 1:return this.g(arguments[1]);case 2:return this.h(arguments[1],arguments[2]);case 3:return this.j(arguments[1],arguments[2],arguments[3]);case 4:return this.F(arguments[1],arguments[2],arguments[3],arguments[4]);case 5:return this.O(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]);case 6:return this.oa(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6]);case 7:return this.lb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7]);case 8:return this.Ma(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8]);case 9:return this.ab(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9]);case 10:return this.pb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10]);case 11:return this.gb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11]);case 12:return this.qb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12]);case 13:return this.hb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13]);case 14:return this.rb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14]);case 15:return this.ib(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15]);case 16:return this.sb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16]);case 17:return this.jb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17]);case 18:return this.tb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17],arguments[18]);case 19:return this.kb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17],arguments[18],arguments[19]);case 20:return this.ub(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17],arguments[18],arguments[19],arguments[20]);case 21:return this.Sc(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17],arguments[18],arguments[19],arguments[20],arguments[21]);default:throw Error(["Invalid arity: ",p.g(arguments.length-1)].join(""))}},h.apply=function(e,t){return this.call.apply(this,[this].concat(Lb(t)))},h.A=function(){var e=this.V.A?this.V.A():this.V.call(null),t=this.La(null,e);return n(t)||Xk(this.name,e),t.A?t.A():t.call(null)},h.g=function(e){var t=this.V.g?this.V.g(e):this.V.call(null,e),r=this.La(null,t);return n(r)||Xk(this.name,t),r.g?r.g(e):r.call(null,e)},h.h=function(e,t){var r=this.V.h?this.V.h(e,t):this.V.call(null,e,t),i=this.La(null,r);return n(i)||Xk(this.name,r),i.h?i.h(e,t):i.call(null,e,t)},h.j=function(e,t,r){var i=this.V.j?this.V.j(e,t,r):this.V.call(null,e,t,r),o=this.La(null,i);return n(o)||Xk(this.name,i),o.j?o.j(e,t,r):o.call(null,e,t,r)},h.F=function(e,t,r,i){var o=this.V.F?this.V.F(e,t,r,i):this.V.call(null,e,t,r,i),l=this.La(null,o);return n(l)||Xk(this.name,o),l.F?l.F(e,t,r,i):l.call(null,e,t,r,i)},h.O=function(e,t,r,i,o){var l=this.V.O?this.V.O(e,t,r,i,o):this.V.call(null,e,t,r,i,o),s=this.La(null,l);return n(s)||Xk(this.name,l),s.O?s.O(e,t,r,i,o):s.call(null,e,t,r,i,o)},h.oa=function(e,t,r,i,o,l){var s=this.V.oa?this.V.oa(e,t,r,i,o,l):this.V.call(null,e,t,r,i,o,l),a=this.La(null,s);return n(a)||Xk(this.name,s),a.oa?a.oa(e,t,r,i,o,l):a.call(null,e,t,r,i,o,l)},h.lb=function(e,t,r,i,o,l,s){var a=this.V.lb?this.V.lb(e,t,r,i,o,l,s):this.V.call(null,e,t,r,i,o,l,s),u=this.La(null,a);return n(u)||Xk(this.name,a),u.lb?u.lb(e,t,r,i,o,l,s):u.call(null,e,t,r,i,o,l,s)},h.Ma=function(e,t,r,i,o,l,s,a){var u=this.V.Ma?this.V.Ma(e,t,r,i,o,l,s,a):this.V.call(null,e,t,r,i,o,l,s,a),c=this.La(null,u);return n(c)||Xk(this.name,u),c.Ma?c.Ma(e,t,r,i,o,l,s,a):c.call(null,e,t,r,i,o,l,s,a)},h.ab=function(e,t,r,i,o,l,s,a,u){var c=this.V.ab?this.V.ab(e,t,r,i,o,l,s,a,u):this.V.call(null,e,t,r,i,o,l,s,a,u),h=this.La(null,c);return n(h)||Xk(this.name,c),h.ab?h.ab(e,t,r,i,o,l,s,a,u):h.call(null,e,t,r,i,o,l,s,a,u)},h.pb=function(e,t,r,i,o,l,s,a,u,c){var h=this.V.pb?this.V.pb(e,t,r,i,o,l,s,a,u,c):this.V.call(null,e,t,r,i,o,l,s,a,u,c),d=this.La(null,h);return n(d)||Xk(this.name,h),d.pb?d.pb(e,t,r,i,o,l,s,a,u,c):d.call(null,e,t,r,i,o,l,s,a,u,c)},h.gb=function(e,t,r,i,o,l,s,a,u,c,h){var d=this.V.gb?this.V.gb(e,t,r,i,o,l,s,a,u,c,h):this.V.call(null,e,t,r,i,o,l,s,a,u,c,h),f=this.La(null,d);return n(f)||Xk(this.name,d),f.gb?f.gb(e,t,r,i,o,l,s,a,u,c,h):f.call(null,e,t,r,i,o,l,s,a,u,c,h)},h.qb=function(e,t,r,i,o,l,s,a,u,c,h,d){var f=this.V.qb?this.V.qb(e,t,r,i,o,l,s,a,u,c,h,d):this.V.call(null,e,t,r,i,o,l,s,a,u,c,h,d),p=this.La(null,f);return n(p)||Xk(this.name,f),p.qb?p.qb(e,t,r,i,o,l,s,a,u,c,h,d):p.call(null,e,t,r,i,o,l,s,a,u,c,h,d)},h.hb=function(e,t,r,i,o,l,s,a,u,c,h,d,f){var p=this.V.hb?this.V.hb(e,t,r,i,o,l,s,a,u,c,h,d,f):this.V.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f),g=this.La(null,p);return n(g)||Xk(this.name,p),g.hb?g.hb(e,t,r,i,o,l,s,a,u,c,h,d,f):g.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f)},h.rb=function(e,t,r,i,o,l,s,a,u,c,h,d,f,p){var g=this.V.rb?this.V.rb(e,t,r,i,o,l,s,a,u,c,h,d,f,p):this.V.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p),w=this.La(null,g);return n(w)||Xk(this.name,g),w.rb?w.rb(e,t,r,i,o,l,s,a,u,c,h,d,f,p):w.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p)},h.ib=function(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g){var w=this.V.ib?this.V.ib(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g):this.V.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p,g),m=this.La(null,w);return n(m)||Xk(this.name,w),m.ib?m.ib(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g):m.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p,g)},h.sb=function(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w){var m=this.V.sb?this.V.sb(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w):this.V.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w),v=this.La(null,m);return n(v)||Xk(this.name,m),v.sb?v.sb(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w):v.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w)},h.jb=function(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m){var v=this.V.jb?this.V.jb(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m):this.V.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m),y=this.La(null,v);return n(y)||Xk(this.name,v),y.jb?y.jb(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m):y.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m)},h.tb=function(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v){var y=this.V.tb?this.V.tb(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v):this.V.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v),b=this.La(null,y);return n(b)||Xk(this.name,y),b.tb?b.tb(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v):b.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v)},h.kb=function(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y){var b=this.V.kb?this.V.kb(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y):this.V.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y),S=this.La(null,b);return n(S)||Xk(this.name,b),S.kb?S.kb(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y):S.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y)},h.ub=function(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y,b){var S=this.V.ub?this.V.ub(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y,b):this.V.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y,b),$=this.La(null,S);return n($)||Xk(this.name,S),$.ub?$.ub(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y,b):$.call(null,e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y,b)},h.Sc=function(e,t,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v,y,b,S){var $=ag(this.V,e,t,r,i,D([o,l,s,a,u,c,h,d,f,p,g,w,m,v,y,b,S])),C=this.La(null,$);return n(C)||Xk(this.name,$),ag(C,e,t,r,i,D([o,l,s,a,u,c,h,d,f,p,g,w,m,v,y,b,S]))},h.Jg=function(){return this.V},h.C=function(e,t,n){return Ig.F(this.me,I,t,n),Qk(this.le,this.me,this.Xd,this.he),this},h.La=function(e,t){return x.h(r(this.Xd),r(this.he))||Qk(this.le,this.me,this.Xd,this.he),n(e=(e=r(this.le)).g?e.g(t):e.call(null,t))?e:Tk(this.name,t,this.he,this.me,this.Yh,this.le,this.Xd,this.Wg)},h.Ad=function(){return gd(this.name)},h.Bd=function(){return hd(this.name)},h.ba=function(){return fa(this)},h=$k.prototype,h.Sg=cb,h.toString=function(){return this.dd},h.aa=function(e,t){return(e=null!=t&&cb===t.Sg)?this.dd===t.dd:e},h.U=function(e,t){return Qc(t,['#uuid "',p.g(this.dd),'"'].join(""))},h.ba=function(){return null==this.G&&(this.G=xd(this.dd)),this.G},h.Tb=function(e,t){if(t instanceof $k)return Oa(this.dd,t.dd);throw Error(["Cannot compare ",p.g(this)," to ",p.g(t)].join(""))},bl.prototype.__proto__=Error.prototype,bl.prototype.pa=cb,bl.prototype.U=function(e,t,r){return Qc(t,"#error {:message "),bk(this.message,t,r),n(this.data)&&(Qc(t,", :data "),bk(this.data,t,r)),n(this.cause)&&(Qc(t,", :cause "),bk(this.cause,t,r)),Qc(t,"}")},bl.prototype.toString=function(){return pd(this)},h=Fl.prototype,h.toString=function(){return pd(this)},h.aa=function(e,t){return t instanceof Fl&&x.h(this.tag,t.tag)&&x.h(this.form,t.form)},h.ba=function(){return 31*xd(this.tag)+xd(this.form)},h.na=function(e,t){return this.P(null,t,null)},h.P=function(e,t,n){switch(t instanceof w?t.W:null){case"tag":return this.tag;case"form":return this.form;default:return n}},h.U=function(e,t,n){return Qc(t,["#",p.g(this.tag)," "].join("")),bk(this.form,t,n)};var Gl="arguments abstract await boolean break byte case catch char class const continue debugger default delete do double else enum export extends final finally float for function goto if implements import in instanceof int interface let long native new package private protected public return short static super switch synchronized this throw throws transient try typeof var void volatile while with yield methods null constructor".split(" "),Hl=null;function Il(e){return null==Hl&&(Hl=Nb.j((function(e,t){return e[t]=!0,e}),{},Gl)),Hl.hasOwnProperty(e)}function Jl(){return n(Kb)||(Kb=function(){for(var e=Xe((function(e,t){return t.length-e.length})),t="";;){if(!z(e))return[t,"|\\$"].join("");var n=B(e),r=[function(){var e=t;return""!==t?[e,"|"].join(""):e}(),p.g(A(e))].join("");e=n,t=r}}()),Kb}function Kl(e){var t=p.g(e);if("_DOT__DOT_"===t)var r="..";else e:{r=new RegExp(Jl(),"g"),t=n(Ea(t,"$"))?t.substring(0,t.length-1):t;for(var i="",o=0;;){var l=r.exec(t);if(!n(l)){r=[i,p.g(t.substring(o,t.length))].join("");break e}l=G(l,0,null),i=[i,p.g(t.substring(o,r.lastIndex-l.length)),p.g("$"===l?"/":Ia(Jb,l))].join(""),o=r.lastIndex}}return(e=e instanceof Ad?Bd:p).g?e.g(r):e.call(null,r)}function Ll(e){this.name=e,this.B=6291456,this.M=0}Ll.prototype.toString=function(){return p.g(this.name)},Ll.prototype.aa=function(e,t){return t instanceof Ll&&x.h(this.name,t.name)},Ll.prototype.ba=function(){return xd(this.name)};var Ml=null;"undefined"!=typeof console&&ub(),ub();var Nl=new w(null,"nil","nil",99600501),Ol=new w(null,"token","token",-1211463215),Pl=new w("gateway.state.spec.common","keyword","gateway.state.spec.common/keyword",-1409778786),Ql=new w("gateway.common.spec.messages","response","gateway.common.spec.messages/response",69665082),Rl=new w(null,"exp","exp",-261706262),Kv=new w(null,"stop","stop",-2140911342),Sl=new w(null,"subscribe","subscribe",416253756),Tl=new w(null,"bin-char","bin-char",-1662780697),Ul=new w("gateway.state.spec.activity","children","gateway.state.spec.activity/children",651398237),Vl=new w(null,"pattern","pattern",242135423),Wl=new w(null,"spying?","spying?",1753444487),Xl=new w("gateway.domains.global.spec.requests","updated","gateway.domains.global.spec.requests/updated",-1219870803),Yl=new w(null,"reader-exception","reader-exception",-1938323098),Zl=new w(null,"trailing-white-space","trailing-white-space",1496006996),$l=new w("gateway.domains.agm.spec.requests","server_id","gateway.domains.agm.spec.requests/server_id",172340651),am=new w(null,"relative-to","relative-to",-470100051),bm=new w("gateway.state.spec.agm","stream-id","gateway.state.spec.agm/stream-id",-1404324586),cm=new w("gateway.common.context.spec.requests","path","gateway.common.context.spec.requests/path",614939647),dm=new w(null,"intra-block-nl","intra-block-nl",1808826875),em=new w(null,"peer-id","peer-id",387144350),fm=new w(null,"exponentchar","exponentchar",1986664222),gm=new w("gateway.domains.global.spec.requests","delta","gateway.domains.global.spec.requests/delta",299143136),hm=new w(null,"and","and",-971899817),im=new w("gateway.state.spec.state","activity-types","gateway.state.spec.state/activity-types",1532142687),jm=new w(null,"number","number",1570378438),km=new w("gateway.state.spec.activity","context","gateway.state.spec.activity/context",798551178),lm=new w(null,"any","any",1705907423),mm=new w(null,"req-specs","req-specs",553962313),nm=new w("gateway.state.spec.state","options","gateway.state.spec.state/options",-722288524),om=new Ad("cljs.core","map","cljs.core/map",-338988913,null),pm=new w("gateway.state.spec.domain-registry","info","gateway.state.spec.domain-registry/info",754617108),qm=new w("gateway.state.spec.restrictions","string-restrictions","gateway.state.spec.restrictions/string-restrictions",-382592371),rm=new Ad(null,"when-let","when-let",-1383043480,null),sm=new Ad(null,"cljs.core","cljs.core",770546058,null),tm=new w(null,"miser","miser",-556060186),Hw=new w(null,"priority","priority",1431093715),um=new w(null,"amp","amp",271690571),vm=new Ad("s","coll-of","s/coll-of",-1705285349,null),wm=new w(null,"publish","publish",-1178026850),xm=new w(null,"neg","neg",1800032960),ym=new w("gateway.auth.spec","access_token","gateway.auth.spec/access_token",-1170576318),zm=new w(null,"current","current",-1088038603),Am=new w(null,"alg","alg",-830920638),Bm=new w(null,"neq","neq",1883246164),Cm=new Ad(null,"->","->",-2139605430,null),Dm=new w("gateway.domains.agm.spec.messages","oob","gateway.domains.agm.spec.messages/oob",-285361976),Em=new Ad(null,"Inf","Inf",647172781,null),Fm=new w(null,"all","all",892129742),Gm=new w(null,"index","index",-1531685915),Uy=new w(null,"expires-at","expires-at",1654982210),Hm=new w(null,"alt","alt",-3214426),Im=new Ad(null,"..","..",-300507420,null),Zk=new w(null,"default","default",-1987822328),Jm=new w(null,"fail-index","fail-index",248726923),Km=new w(null,"timestamp_","timestamp_",-954533417),Lm=new w(null,"ex-kind","ex-kind",1581199296),Mm=new w(null,"request-id","request-id",-985684093),Nm=new w(null,"hello","hello",-245025397),Om=new Ad(null,"opts","opts",1795607228,null),Pm=new w(null,"err","err",-2089457205),Qm=new w("gateway.state.spec.agm","invocation_id","gateway.state.spec.agm/invocation_id",-822050570),Rm=new w(null,"define","define",-2006590705),Sm=new w(null,"reload","reload",863702807),Tm=new w(null,"optional","optional",2053951509),Um=new w("cljs.spec.alpha","kfn","cljs.spec.alpha/kfn",672643897),Vm=new w(null,"nbf","nbf",-1785694926),Wm=new w(null,"callee","callee",-156445786),Xm=new w(null,"peer_name","peer_name",-245526270),Ym=new w(null,"negative-lookahead","negative-lookahead",874382387),Zm=new w(null,"method-filter-fn","method-filter-fn",-283131748),$m=new w(null,"end-pos","end-pos",-1643883926),an=new w("gateway.domains.global.internal","authenticated","gateway.domains.global.internal/authenticated",-1621463770),bn=new w(null,"caller","caller",-1275362879),cn=new Ad("gateway.state.spec.common","address-type","gateway.state.spec.common/address-type",-283204142,null),dn=new w(null,"per-line-prefix","per-line-prefix",846941813),en=new w(null,"content","content",15833224),fn=new w(null,"source_type","source_type",-144028049),gn=new w("gateway.state.spec.activity","context_id","gateway.state.spec.activity/context_id",1100878008),hn=new w(null,"msg_","msg_",-1925147e3),jn=new w(null,"create-peer","create-peer",631977540),kn=new Ad("cljs.core","nil?","cljs.core/nil?",945071861,null),ln=new w(null,"continue","continue",-207346553),mn=new w(null,"println","println",1920840330),nn=new w(null,"gateway-requests","gateway-requests",2114123587),on=new w(null,"rules-or-parser","rules-or-parser",-314380386),pn=new w(null,"routing-key","routing-key",238118868),qn=new w(null,"eof","eof",-489063237),rn=new w(null,"ready-members","ready-members",757058983),sn=new w(null,"initiated","initiated",2096076574),tn=new w("gateway.state.spec.activity","activity-domain","gateway.state.spec.activity/activity-domain",292185460),un=new Ad("cljs.core","pos?","cljs.core/pos?",-652182749,null),vn=new w("gateway.state.spec.context","creator","gateway.state.spec.context/creator",-11360985),wn=new w(null,"queue","queue",1455835879),xn=new w("gateway.state.spec.tokens","impersonate-peer","gateway.state.spec.tokens/impersonate-peer",1018065912),yn=new Ad(null,"if-let","if-let",1803593690,null),zn=new w(null,"segment","segment",-964921196),An=new w("cljs.spec.alpha","name","cljs.spec.alpha/name",205233570),T=new w(null,"req-un","req-un",1074571008),Bn=new w(null,"end","end",-268185958),Cn=new w(null,"paren","paren",-294107600),Dn=new w(null,"subscriber_id","subscriber_id",972810975),En=new w("gateway.domains.agm.spec.messages","reason","gateway.domains.agm.spec.messages/reason",-1483891292),Fn=new Ad(null,"gateway.common.spec.messages","gateway.common.spec.messages",-1797487288,null),Gn=new Ad(null,"not-native","not-native",-236392494,null),Hn=new w(null,"provider","provider",-302056900),In=new w(null,"reason","reason",-2070751759),Jn=new w(null,"num-val","num-val",1497434478),Kn=new w("gateway.common.spec.messages","domain","gateway.common.spec.messages/domain",755510455),Ln=new w(null,"properties","properties",685819552),Mn=new w(null,"post","post",269697687),Nn=new w(null,"rules","rules",1198912366),pl=new Ad(null,"letfn*","letfn*",-110097810,null),On=new Ad("cljs.core","empty?","cljs.core/empty?",1866613644,null),Pn=new w(null,"unregister","unregister",2105339971),Qn=new w(null,"red","red",-969428204),Lk=new w(null,"parents","parents",-2027538891),Rn=new w(null,"arg-filter-fn","arg-filter-fn",1576945932),Sn=new w(null,"context-created","context-created",-436520594),Tn=new w(null,"rep","rep",-1226820564),Un=new w("gateway.state.spec.domain-registry","domain","gateway.state.spec.domain-registry/domain",-1376202493),Vn=new w(null,"remaining-arg-count","remaining-arg-count",-1216589335),Wn=new w(null,"logical-blocks","logical-blocks",-1466339776),Xn=new w(null,"process-id","process-id",-2118975265),Yn=new w(null,"ret","ret",-468222814),Zn=new w(null,"req","req",-326448303),$n=new w(null,"appender-id","appender-id",-1917983538),ao=new Ad(null,"defmacro","defmacro",2054157304,null),bo=new Ad(null,"NaN","NaN",666918153,null),Tz=new w("zip","make-node","zip/make-node",1103800591),co=new w("gateway.common.context.spec.requests","updated","gateway.common.context.spec.requests/updated",-286888249),eo=new w(null,"runtime-exception","runtime-exception",-1495664514),fo=new w(null,"iss","iss",1130086696),go=new w("gateway.state.spec.mthds","version","gateway.state.spec.mthds/version",1762403198),ho=new w(null,"signature-key","signature-key",-1652526996),io=new w(null,"results","results",-1134170113),jo=new w("gateway.state.spec.activity","types","gateway.state.spec.activity/types",-2083568052),ko=new w(null,"updater_id","updater_id",-2125909548),lo=new w("gateway.state.spec.state","state","gateway.state.spec.state/state",-1032276972),sk=new w(null,"ready","ready",1086465795),mo=new w(null,"peer-created","peer-created",-1509421151),no=new w(null,"output_","output_",-36797880),oo=new w(null,"arglists","arglists",1661989754),po=new w(null,"match","match",1220059550),qo=new w(null,"output-fn","output-fn",1600951539),ro=new Ad(null,"when-first","when-first",821699168,null),so=new w(null,"end-column","end-column",1425389514),to=new w(null,"accepted","accepted",-1953464374),uo=new w(null,"peer-factories-removed","peer-factories-removed",-1429529592),vo=new w("gateway.state.spec.restrictions","restrictions","gateway.state.spec.restrictions/restrictions",181113171),wo=new w(null,"interests","interests",1200294902),xo=new w("gateway.common.spec.messages","outgoing-messages","gateway.common.spec.messages/outgoing-messages",-924999491),yo=new w(null,"remove-interest","remove-interest",-1017752998),zo=new w(null,"expr","expr",745722291),Ao=new w("gateway.auth.spec","request","gateway.auth.spec/request",-1915554438),Bo=new w(null,"dump","dump",-356261477),Co=new w(null,"raw","raw",1604651272),Do=new w(null,"start-block-t","start-block-t",-373430594),Eo=new Ad(null,"binding","binding",-2114503176,null),Fo=new w("cljs.spec.alpha","kind-form","cljs.spec.alpha/kind-form",-1047104697),Go=new w(null,"OCTET","OCTET",-743420682),Ho=new w(null,"destroy-context","destroy-context",-1305625710),Io=new w("gateway.state.spec.common","node","gateway.state.spec.common/node",-570411717),Jo=new w("gateway.domains.agm.spec.requests","stream_id","gateway.domains.agm.spec.requests/stream_id",-1290121066),Ko=new w("gateway.common.spec.messages","broadcast","gateway.common.spec.messages/broadcast",-1460237246),Lo=new w(null,"activities","activities",1654844313),Mo=new w(null,"bracket-info","bracket-info",-1600092774),No=new w("gateway.state.spec.activity","owner_type","gateway.state.spec.activity/owner_type",-1823895667),Oo=new w(null,"member","member",-2012020816),Po=new w(null,"given","given",716253602),Qo=new w(null,"?line","?line",-631853385),Ro=new w(null,"body","body",-2049205669),So=new w(null,"mode","mode",654403691),To=new w("gateway.common.spec.messages","reason_uri","gateway.common.spec.messages/reason_uri",-14574488),Uo=new w(null,"console","console",1228072057),Vo=new w(null,"method_id","method_id",1349548671),Wo=new w(null,"distinct","distinct",-1788879121),Xo=new w(null,"parsed-restrictions","parsed-restrictions",-1665101931),ek=new w(null,"fallback-impl","fallback-impl",-1501286995),Yo=new w(null,"name","name",1843675177),Zo=new w(null,"subscribed","subscribed",1012088257),$o=new w("gateway.common.context.spec.requests","commands","gateway.common.context.spec.requests/commands",1656863185),ap=new Ad("s","map-of","s/map-of",-1464752791,null),bp=new w(null,"initiator","initiator",217480362),cp=new w(null,"service?","service?",-2064761863),dp=new w("cljs.spec.alpha","pcat","cljs.spec.alpha/pcat",26406623),ep=new w("gateway.state.spec.domain-registry","version","gateway.state.spec.domain-registry/version",-650577592),fp=new w(null,"illegal-argument","illegal-argument",-1845493170),gp=new w(null,"factory_ids","factory_ids",1173653523),hp=new w(null,"types","types",590030639),ip=new w(null,"subscriber","subscriber",-2064338413),jp=new w(null,"writing","writing",-1486865108),kp=new w("gateway.state.spec.restrictions","parsed-restrictions","gateway.state.spec.restrictions/parsed-restrictions",1374812996),lp=new w("gateway.state.spec.mthds","description","gateway.state.spec.mthds/description",-129583756),mp=new w(null,"deny-spec","deny-spec",-1074984268),np=new w(null,"parameter-from-args","parameter-from-args",-758446196),op=new w("gateway.common.context.spec.requests","lifetime","gateway.common.context.spec.requests/lifetime",-228133926),pp=new w("gateway.domains.global.spec.messages","remote-identity","gateway.domains.global.spec.messages/remote-identity",1498525882),Gk=new w(null,"keywordize-keys","keywordize-keys",1310784252),qp=new w("gateway.state.spec.bus","topic","gateway.state.spec.bus/topic",-1241703207),rp=new w(null,"logical-block-callback","logical-block-callback",1612691194),sp=new Ad(null,"inst","inst",-2008473268,null),tp=new w("gateway.common.spec.messages","receiver","gateway.common.spec.messages/receiver",679023931),up=new w(null,"selector","selector",762528866),vp=new Ad(null,"struct","struct",325972931,null),wp=new w(null,"participants","participants",673603367),xp=new w(null,"topic-repattern","topic-repattern",1187945138),yp=new w(null,"call","call",-519999866),zp=new Ad("cljs.core","partial","cljs.core/partial",1483172485,null),Ap=new w(null,"hours","hours",58380855),Bp=new w(null,"start-production","start-production",687546537),Cp=new w(null,"buffer","buffer",617295198),Dp=new w(null,"repo-id","repo-id",-402847325),Ep=new Ad("cljs.core","sequence","cljs.core/sequence",1908459032,null),Fp=new w(null,"context","context",-830191113),Gp=new w(null,"restrictions","restrictions",1874752994),Hp=new Ad("cljs.spec.alpha","or","cljs.spec.alpha/or",-831679639,null),Ip=new w(null,"services","services",970478783),Jp=new w(null,"access_token","access_token",1591156073),Kp=new w(null,"input-format","input-format",-422703481),Lp=new w(null,"invocations","invocations",-1981777494),Mp=new w("gateway.state.spec.agm","stream-peer-info","gateway.state.spec.agm/stream-peer-info",1892226854),Np=new w(null,"opt-keys","opt-keys",1262688261),Op=new w(null,"raw-console?","raw-console?",-2061489061),Pp=new w(null,"ref-counted","ref-counted",-1035328654),Qp=new Ad(null,"reader","reader",1810192380,null),Rp=new w(null,"indent","indent",-148200125),Mk=new w(null,"descendants","descendants",1824886031),Sp=new w(null,"context-compatibility-mode?","context-compatibility-mode?",564867301),Tp=new w("gateway.domains.global.spec.requests","reset","gateway.domains.global.spec.requests/reset",-116815601),Up=new w(null,"types-added","types-added",1274011029),Vp=new w(null,"publisher-identity","publisher-identity",1716891391),Wp=new w("gateway.state.spec.mthds","peer-methods","gateway.state.spec.mthds/peer-methods",-639609469),Xp=new w(null,"ALPHA","ALPHA",-1463859144),Yp=new w(null,"context-domain","context-domain",-563887528),Zp=new w("gateway.domains.global.spec.requests","context-destroy","gateway.domains.global.spec.requests/context-destroy",1322892186),$p=new w(null,"pred-forms","pred-forms",172611832),aq=new w(null,"location","location",1815599388),pk=new w(null,"val","val",128701612),bq=new w("gateway.state.spec.context","data","gateway.state.spec.context/data",790358174),cq=new w("gateway.state.spec.pending-requests","client-request","gateway.state.spec.pending-requests/client-request",1663875818),U=new Ad("cljs.core","contains?","cljs.core/contains?",-976526835,null),dq=new w(null,"destroyed","destroyed",-427566535),eq=new w(null,"subscribed-context","subscribed-context",-451582146),fq=new w(null,"DQUOTE","DQUOTE",-571169808),lb=new w(null,"flush-on-newline","flush-on-newline",-151457939),gq=new Ad("cljs.spec.alpha","and","cljs.spec.alpha/and",-2060279705,null),gE=new w(null,"changed?","changed?",-437828330),hq=new Ad(null,"loop","loop",1244978678,null),iq=new w("gateway.state.spec.context","timestamp","gateway.state.spec.context/timestamp",1704984480),jq=new w(null,"dispose-peer","dispose-peer",68303444),kq=new w("gateway.state.spec.tokens","gateway-token","gateway.state.spec.tokens/gateway-token",1169641187),lq=new w(null,"timeout","timeout",-318625318),mq=new w(null,"joined_name","joined_name",-1159730335),nq=new w(null,"illegal-state","illegal-state",-1519851182),oq=new w(null,"max-columns","max-columns",1742323262),pq=new w(null,"ids","ids",-998535796),qq=new w("gateway.domains.global.spec.requests","context-create","gateway.domains.global.spec.requests/context-create",-1370416261),rq=new w(null,"peer-factories-added","peer-factories-added",-2010470480),sq=new w(null,"reader-error","reader-error",1610253121),tq=new w("gateway.state.spec.common","string","gateway.state.spec.common/string",885967163),uq=new w(null,"result_signature","result_signature",-1204398780),vq=new w(null,"keep","keep",-2133338530),wq=new w("gateway.domains.agm.spec.requests","arguments","gateway.domains.agm.spec.requests/arguments",-1906298417),xq=new w(null,"both","both",-393648840),jH=new w(null,"blacklist-ns","blacklist-ns",1200193567),zq=new w(null,"symbol","symbol",-1038572696),Aq=new w(null,"CHAR","CHAR",-1280338086),Bq=new w(null,"context-updated","context-updated",744419706),Cq=new w("gateway.common.spec.requests","join","gateway.common.spec.requests/join",-1713603460),Dq=new w(null,"msg-cache","msg-cache",-733775070),Eq=new w(null,"parser","parser",-1543495310),Fq=new w(null,"colnum","colnum",2023796854),Gq=new Ad(null,"doseq","doseq",221164135,null),Hq=new w(null,"req-id","req-id",-471642231),Iq=new w(null,"char-val","char-val",1408617933),Jq=new w(null,"min","min",444991522),Kq=new Ad("clojure.core","list","clojure.core/list",-1119203325,null),Lq=new w(null,"timestamp-opts","timestamp-opts",-1359534807),Dl=new Ad(null,"throw","throw",595905694,null),Mq=new w(null,"iat","iat",-353315170),Nq=new w(null,"splice","splice",449588165),Oq=new Ad(null,"gateway.domains.agm.subscriptions","gateway.domains.agm.subscriptions",-340272132,null),Pq=new w(null,"length","length",588987862),Qq=new w(null,"error-level?","error-level?",778415885),Rq=new w("gateway.state.spec.pending-requests","gw-request-id","gateway.state.spec.pending-requests/gw-request-id",-996681140),Sq=new w(null,"char-format","char-format",-1016499218),Tq=new w(null,"rep+","rep+",-281382396),Uq=new w("gateway.domains.global.spec.messages","resolved_identity","gateway.domains.global.spec.messages/resolved_identity",-685850501),Vq=new w("gateway.domains.agm.spec.requests","methods","gateway.domains.agm.spec.requests/methods",-366393681),Wq=new w("gateway.domains.global.spec.messages","available_domains","gateway.domains.global.spec.messages/available_domains",-1472037229),Xq=new w("gateway.state.spec.tokens","gw-request-id","gateway.state.spec.tokens/gw-request-id",146927020),Yq=new w("gateway.domains.global.spec.requests","leave","gateway.domains.global.spec.requests/leave",101292368),Zq=new Ad("cljs.spec.alpha","map-of","cljs.spec.alpha/map-of",153715093,null),$q=new w("gateway.state.spec.tokens","token-data","gateway.state.spec.tokens/token-data",-481150767),ar=new w("gateway.domains.agm.spec.messages","new_peer_id","gateway.domains.agm.spec.messages/new_peer_id",-2026004018),br=new w("gateway.domains.agm.spec.register","register","gateway.domains.agm.spec.register/register",-572048018),cr=new w("gateway.common.context.spec.messages","context_id","gateway.common.context.spec.messages/context_id",745790948),dr=new w(null,"req-in","req-in",960021885),er=new w("gateway.state.spec.agm","call","gateway.state.spec.agm/call",399063183),fr=new w(null,"context-added","context-added",-639543900),gr=new w("gateway.common.spec.messages","body","gateway.common.spec.messages/body",-1028765771),hr=new w(null,"grammar","grammar",1881328267),ir=new w(null,"epsilon","epsilon",-730158570),jr=new w(null,"prefix","prefix",-265908465),kr=new w(null,"arguments","arguments",-1182834456),lr=new w("gateway.state.spec.state","id","gateway.state.spec.state/id",2050905551),mr=new w(null,"hi","hi",-1821422114),nr=new w("gateway.state.spec.agm","interest","gateway.state.spec.agm/interest",1248511583),or=new w("gateway.common.spec.messages","peer_id","gateway.common.spec.messages/peer_id",-1253667286),wl=new Ad(null,"fn*","fn*",-752876845,null),pr=new w(null,"description","description",-1428560544),qr=new w(null,"visibility","visibility",1338380893),rr=new w("gateway.domains.agm.spec.requests","invocation_id","gateway.domains.agm.spec.requests/invocation_id",-621605438),sr=new w(null,"peer_factory","peer_factory",1685625260),tr=new w(null,"dispatch","dispatch",1319337009),ur=new w(null,"rest","rest",-1241696419),vr=new w(null,"sqn","sqn",2076851999),wr=new w("rl","reset","rl/reset",-800926172),xr=new w(null,"user","user",1532431356),yr=new w(null,"colon-up-arrow","colon-up-arrow",244853007),zr=new w(null,"activity-domain","activity-domain",1896268503),Ar=new w(null,"message","message",-406056002),Br=new w(null,"alternation","alternation",-1162147630),Cr=new w(null,"eq","eq",-618539067),Dr=new w(null,"required","required",1807647006),Er=new w("gateway.state.spec.state","no-user","gateway.state.spec.state/no-user",-565346809),Fr=new w(null,"new_peer_id","new_peer_id",1380469887),Gr=new w("gateway.domains.agm.spec.requests","remove-interest","gateway.domains.agm.spec.requests/remove-interest",-328528457),V=new Ad("cljs.core","fn","cljs.core/fn",-1065745098,null),Hr=new w(null,"string-ci","string-ci",374631805),Ir=new w(null,"fn","fn",-1175266204),Jr=new w(null,"kind","kind",-717265803),Kr=new w(null,"types_override","types_override",391099757),Lr=new w(null,"histo","histo",-821552278),Mr=new w("gateway.state.spec.mthds","no-methods","gateway.state.spec.mthds/no-methods",658181793),Nr=new w(null,"hide-tag-rule","hide-tag-rule",150267589),Or=new w("gateway.state.spec.mthds","id","gateway.state.spec.mthds/id",2078923376),Pr=new w("gateway.state.spec.pending-requests","gateway-requests","gateway.state.spec.pending-requests/gateway-requests",-1212651271),Qr=new w(null,"parser1","parser1",-439601422),Rr=new w(null,"parser2","parser2",1013754688),Sr=new w(null,"types-removed","types-removed",-1458332519),Tr=new w(null,"target_identity","target_identity",-786887198),Ur=new w(null,"joined_type","joined_type",973647374),Vr=new Ad("cljs.spec.alpha","conform","cljs.spec.alpha/conform",763100824,null),Wr=new w(null,"generation","generation",-2132542044),Xr=new w("gateway.common.context.spec.messages","reason","gateway.common.context.spec.messages/reason",-795974116),Yr=new Ad(null,"pending-forms","pending-forms",-1225172071,null),Zr=new Ad("clojure.walk","keywordize-keys","clojure.walk/keywordize-keys",-1055520580,null),$r=new w(null,"vargs","vargs",-966597273),vl=new Ad(null,"js*","js*",-1134233646,null),as=new w(null,"repeat","repeat",832692087),bs=new w(null,"suffix","suffix",367373057),cs=new w(null,"whitelist","whitelist",-979294437),ds=new w(null,"fatal","fatal",1874419888),es=new Ad("s","keys","s/keys",-1586011188,null),fs=new w("gateway.common.context.spec.requests","context-update","gateway.common.context.spec.requests/context-update",562123698),gs=new w(null,"rulename-right","rulename-right",1125609193),hs=new w(null,"at","at",1476951349),is=new w(null,"created_id","created_id",-1653142250),js=new w(null,"nl-t","nl-t",-1608382114),ks=new w(null,"activity_types","activity_types",-1792673047),ls=new Ad("cljs.tools.reader","read-string*","cljs.tools.reader/read-string*",1492661621,null),AH=new w(null,"interval","interval",1708495417),ms=new w(null,"remaining","remaining",-138926777),ns=new w("gateway.state.spec.state","handler-ch","gateway.state.spec.state/handler-ch",-891933338),os=new w(null,"read-cond","read-cond",1056899244),ps=new w("gateway.auth.spec","message","gateway.auth.spec/message",212934373),qs=new w(null,"gen-max","gen-max",-793680445),rs=new w(null,"column","column",2078222095),ss=new w(null,"metrics","metrics",394093469),ts=new w(null,"joined","joined",-231861661),us=new w(null,"or","or",235744169),vs=new w(null,"os","os",795021913),ws=new w(null,"directive","directive",793559132),xs=new w(null,"unsubscribe-context","unsubscribe-context",-1695207834),ys=new w(null,"buffer-level","buffer-level",928864731),zs=new w(null,"ps","ps",292358046),As=new Ad(null,"keyword?","keyword?",1917797069,null),Bs=new w("gateway.state.spec.activity","context-id","gateway.state.spec.activity/context-id",341891962),Cs=new w("gateway.domains.global.spec.requests","authentication","gateway.domains.global.spec.requests/authentication",2133771245),Ds=new w(null,"form","form",-1624062471),Es=new w(null,"group","group",582596132),Fs=new w(null,"ms","ms",-1152709733),Gs=new w(null,"?err","?err",549653299),DL=new w(null,"non_matched","non_matched",1326798534),Hs=new Ad("cljs.core","any?","cljs.core/any?",-2068111842,null),Is=new w(null,"mandatory","mandatory",542802336),Js=new w(null,"rulelist","rulelist",-1871218473),Ks=new w("gateway.state.spec.mthds","flags","gateway.state.spec.mthds/flags",408816343),Ls=new w(null,"parsers","parsers",-804353827),Ms=new w(null,"p1","p1",-936759954),Ns=new w(null,"pretty-writer","pretty-writer",-1222834267),Os=new w(null,"nt","nt",-835425781),Ps=new w("gateway.domains.global.spec.messages","context_id","gateway.domains.global.spec.messages/context_id",-1799893258),Qs=new w(null,"p2","p2",905500641),Rs=new w(null,"ns","ns",441598760),Ss=new w("gateway.state.spec.common","type","gateway.state.spec.common/type",-877512429),Ts=new w(null,"config","config",994861415),Us=new w(null,"done-nl","done-nl",-381024340),Vs=new w(null,"initial_context","initial_context",-797433349),Ws=new w(null,"removed","removed",609626430),Xs=new Ad(null,"address-type","address-type",-1732576165,null),Ys=new w("gateway.domains.agm.spec.unregister","methods","gateway.domains.agm.spec.unregister/methods",1593198071),Zs=new w(null,"ks","ks",1900203942),$s=new w(null,"source","source",-433931539),at=new Ad(null,"condp","condp",1054325175,null),bt=new w(null,"keyword","keyword",811389747),ct=new w("gateway.domains.agm.spec.requests","context","gateway.domains.agm.spec.requests/context",-1915055426),EL=new w(null,"authenticator","authenticator",728866366),et=new w(null,"vargs_","vargs_",552132148),ft=new w(null,"lo","lo",-931799889),gt=new w("gateway.state.spec.activity","ready-members","gateway.state.spec.activity/ready-members",-939559218),ht=new w("gateway.domains.global.spec.requests","added","gateway.domains.global.spec.requests/added",-1820753011),it=new w(null,"debug","debug",-1608172596),jt=new w(null,"hide","hide",-596913169),kt=new w(null,"id","id",-1388402092),lt=new w(null,"else","else",-1508377146),mt=new w(null,"seq","seq",-1817803783),nt=new Ad(null,"defn","defn",-126010802,null),ot=new w("gateway.state.spec.agm","calls","gateway.state.spec.agm/calls",16611731),pt=new w(null,"set","set",304602554),qt=new w(null,"join","join",-758861890),rt=new w("gateway.state.spec.context","owner","gateway.state.spec.context/owner",-1445790718),st=new w("gateway.domains.agm.spec.requests","accepted","gateway.domains.agm.spec.requests/accepted",1383451047),FL=new w(null,"js","js",1768080579),ut=new w(null,"origin","origin",1037372088),vt=new w(null,"LWSP","LWSP",782998598),wt=new w("instaparse.gll","end-index","instaparse.gll/end-index",-1851404441),xt=new w(null,"colinc","colinc",-584873385),yt=new w("gateway.domains.agm.spec.register","methods","gateway.domains.agm.spec.register/methods",-209946928),zt=new w(null,"node","node",581201198),hl=new Ad(null,"&","&",-2144855648,null),At=new w(null,"deny","deny",1589338523),W=new Ad(null,"%","%",-950237169,null),tb=new w(null,"print-length","print-length",1931866356),Bt=new w(null,"up-arrow","up-arrow",1705310333),zl=new Ad(null,".",".",1975675962,null),Ct=new Ad(null,"/","/",-1371932971,null),Dt=new w(null,"ns-filter","ns-filter",108598448),Et=new w("gateway.state.spec.factory","factories","gateway.state.spec.factory/factories",-1725265010),Ft=new w("gateway.domains.global.internal","authentication-failed","gateway.domains.global.internal/authentication-failed",1518002013),Gt=new w(null,"input_signature","input_signature",158735218),Ht=new w("gateway.common.context.spec.messages","creator_id","gateway.common.context.spec.messages/creator_id",2137586424),It=new w(null,"partial","partial",241141745),Jt=new w(null,"hostname_","hostname_",-2091647379),Kt=new w(null,"char-range","char-range",1443391389),Lt=new w("cljs.spec.alpha","kvs->map","cljs.spec.alpha/kvs->map",579713455),Mt=new w(null,"large-msg","large-msg",2140041016),Nt=new w("gateway.state.spec.context","contexts","gateway.state.spec.context/contexts",-1052863269),Ot=new w(null,"right-bracket","right-bracket",951856080),Pt=new w("gateway.domains.agm.spec.requests","publish","gateway.domains.agm.spec.requests/publish",-1020033829),Qt=new Ad(null,"_","_",-1201019570,null),Rt=new w(null,"context_id","context_id",1618636315),GL=new w(null,"definition","definition",-1198729982),St=new w("gateway.state.spec.activity","helper_types","gateway.state.spec.activity/helper_types",-920321960),Tt=new Ad(null,"k","k",-505765866,null),Ut=new Ad(null,"m","m",-1021758608,null),Vt=new w(null,"options","options",99638489),Wt=new Ad(null,"v","v",1661996586,null),Xt=new w(null,"service","service",-1963054559),HL=new w(null,"auth","auth",1389754926),Zt=new Ad(null,"=","=",-1501502141,null),$t=new w(null,"high","high",2027297808),au=new w(null,"auto","auto",-566279492),bu=new w(null,"whitespace","whitespace",-1340035483),pQ=new w(null,"function","function",-2127255473),cu=new w("gateway.state.spec.pending-requests","gateway-request","gateway.state.spec.pending-requests/gateway-request",796467142),du=new w(null,"authentication","authentication",1746273042),eu=new Ad("cljs.core","number?","cljs.core/number?",-811857295,null),fu=new w(null,"hierarchy","hierarchy",-1053470341),gu=new w(null,"plus","plus",211540661),hu=new w("gateway.state.spec.tokens","lifetime","gateway.state.spec.tokens/lifetime",887565809),iu=new w(null,"hex-val","hex-val",1267737401),ju=new w(null,"comma","comma",1699024745),ku=new w(null,"radix","radix",857016463),lu=new w(null,"subscribe-context","subscribe-context",1009129400),mu=new w(null,"first","first",-644103046),nu=new w(null,"add-peer-factories","add-peer-factories",-1612194889),ou=new w(null,"methods-added","methods-added",2044022595),pu=new w(null,"stream_id","stream_id",-871396659),qu=new w(null,"middleware-fn","middleware-fn",-61585752),ru=new Ad("cljs.core","vec","cljs.core/vec",307622519,null),su=new w(null,"state","state",-1988618099),tu=new w(null,"enlive","enlive",1679023921),uu=new w(null,"allow","allow",-1857325745),wu=new w(null,"domain","domain",1847214937),xu=new w("gateway.domain","operation-result","gateway.domain/operation-result",-1509018323),yu=new w(null,"sections","sections",-886710106),zu=new w(null,"activity-subscribers","activity-subscribers",12051372),qQ=new w(null,"split_size","split_size",-1272219234),Au=new w(null,"secs","secs",1532330091),Bu=new w(null,"drop-subscription","drop-subscription",-1853238873),Cu=new Ad(null,"partial","partial",1881673272,null),Du=new w(null,"identities","identities",-2100677764),Eu=new w(null,"instant","instant",655498374),Fu=new w(null,"min-count","min-count",1594709013),Gu=new w(null,"snapshot","snapshot",-1274785710),Hu=new w(null,"hide-tag","hide-tag",1347642501),Iu=new w(null,"alt-or-ord","alt-or-ord",310249425),Ju=new w(null,"HTAB","HTAB",11392612),Ku=new w(null,"start","start",-355208981),Lu=new w("gateway.state.spec.state","peer","gateway.state.spec.state/peer",-2119577277),Mu=new w(null,"nodes","nodes",-2099585805),Nu=new w(null,"trace?","trace?",1730690679),Ou=new w(null,"metrics-domain","metrics-domain",-1136423917),Pu=new w(null,"commands","commands",161008658),Qu=new w(null,"create-context","create-context",-1362772644),Ru=new w(null,"owner","owner",-392611939),Su=new w(null,"non-matched","non-matched",-624651186),Tu=new w("gateway.common.context.spec.requests","context-unsubscribe","gateway.common.context.spec.requests/context-unsubscribe",46104946),Uu=new w(null,"owner-changed","owner-changed",-1569176886),Vu=new w(null,"allowed","allowed",1436019743),Wu=new Ad("cljs.core","map?","cljs.core/map?",-1390345523,null),Xu=new w(null,"min-version","min-version",-1697197126),xl=new Ad(null,"recur","recur",1202958259,null),Yu=new w("gateway.state.spec.common","activity-id","gateway.state.spec.common/activity-id",245315645),Zu=new w(null,"current-id","current-id",210783650),$u=new w(null,"created","created",-704993748),av=new w(null,"element","element",1974019749),bv=new w(null,"now","now",-1650525531),rQ=new w(null,"metric","metric",408798077),cv=new w(null,"middleware","middleware",1462115504),dv=new w("gateway.domains.global.spec.requests","removed","gateway.domains.global.spec.requests/removed",-1641157465),ev=new w(null,"skip-validation","skip-validation",-195677600),fv=new w(null,"recur","recur",-437573268),gv=new w("gateway.state.spec.agm","method_id","gateway.state.spec.agm/method_id",1007252604),hv=new Ad(null,"message-body","message-body",-554118051,null),iv=new w(null,"available_domains","available_domains",-981328192),jv=new w(null,"invocation_id","invocation_id",1947784937),kv=new w(null,"aud","aud",357659490),lv=new Ad("cljs.core","unquote","cljs.core/unquote",1013085760,null),mv=new w("gateway.domain","leave","gateway.domain/leave",-1366936831),nv=new Ad("cljs.core","hash-set","cljs.core/hash-set",1130426749,null),ov=new w(null,"allow-spec","allow-spec",448749872),pv=new Ad(null,"defn-","defn-",1097765044,null),qv=new w(null,"no-user","no-user",793713538),rv=new w(null,"output-format","output-format",-1826382676),sv=new Ad("cljs.core","deref","cljs.core/deref",1901963335,null),tv=new w(null,"measurements","measurements",82224007),uv=new w("gateway.common.spec.messages","meta","gateway.common.spec.messages/meta",-2108831238),vv=new w(null,"block","block",664686210),wv=new w(null,"context_snapshot","context_snapshot",-703318056),xv=new w(null,"enabled","enabled",1195909756),yv=new w(null,"endpoint","endpoint",447890044),zv=new Ad(null,"when","when",1064114221,null),Av=new w("gateway.auth.spec","login","gateway.auth.spec/login",532129350),Bv=new w(null,"register","register",1968522516),Cv=new w(null,"handler-ch","handler-ch",2044105199),Dv=new w(null,"unhide","unhide",-413983695),Uj=new w(null,"more-marker","more-marker",-14717935),Ev=new w(null,"default_context","default_context",-1148569539),Fv=new w(null,"stacktrace-fonts","stacktrace-fonts",830799382),Gv=new w(null,"repos","repos",647483789),Hv=new w(null,"context-destroyed","context-destroyed",-1281742589),Iv=new w("gateway.domains.agm.spec.requests","data","gateway.domains.agm.spec.requests/data",688691322),Jv=new w("gateway.state.spec.activity","ready?","gateway.state.spec.activity/ready?",-1768127396),vQ=new w(null,"basic","basic",1043717368),ll=new Ad(null,"ns*","ns*",1840949383,null),Lv=new w("gateway.state.spec.activity","type","gateway.state.spec.activity/type",-462200009),wQ=new w(null,"initial","initial",1854648214),X=new w(null,"type","type",1174270348),Mv=new w(null,"none","none",1333468478),Nv=new w("cljs.spec.alpha","gfn","cljs.spec.alpha/gfn",-593120375),Ov=new w(null,"activity_id","activity_id",-240070853),sQ=new w(null,"hidden","hidden",-312506092),Pv=new w(null,"messages","messages",345434482),Qv=new w(null,"cause","cause",231901252),Rv=new w("cljs.spec.alpha","conform-all","cljs.spec.alpha/conform-all",45201917),Sv=new w(null,"creation-request","creation-request",1261647120),tQ=new w(null,"conflation","conflation",-1145614586),Tv=new w("gateway.domains.global.spec.requests","write_permissions","gateway.domains.global.spec.requests/write_permissions",774911915),Uv=new w(null,"else-params","else-params",-832171646),Vv=new w("gateway.state.spec.state","node-id","gateway.state.spec.state/node-id",-982277841),Wv=new w(null,"instance","instance",-2121349050),Xv=new w(null,"reduction-type","reduction-type",-488293450),Yv=new Ad("cljs.core","int?","cljs.core/int?",50730120,null),Zv=new w(null,"creator","creator",-1069241724),$v=new w(null,"left","left",-399115937),aw=new w(null,"async?","async?",1523057758),bw=new w(null,"publishers","publishers",1474752298),cw=new w(null,"line","line",212345235),dw=new w(null,"subscription-cancelled","subscription-cancelled",1868207049),ew=new w(null,"methods","methods",453930866),fw=new w(null,"method","method",55703592),gw=new Ad(null,"js","js",-886355190,null),hw=new w("gateway.state.spec.state","creation-request","gateway.state.spec.state/creation-request",473028997),iw=new Ad(null,"gateway.state.spec.common","gateway.state.spec.common",27478502,null),il=new Ad(null,"case*","case*",-1938255072,null),jw=new w(null,"node-id","node-id",779482292),kw=new w(null,"clients","clients",1436018090),lw=new w("gateway.state.spec.context","name","gateway.state.spec.context/name",-1494107954),mw=new w(null,"count","count",2139924085),nw=new w(null,"available","available",-1470697127),ow=new w(null,"right","right",-452581833),pw=new w("gateway.state.spec.state","peers","gateway.state.spec.state/peers",75810773),qw=new w(null,"linear","linear",872268697),rw=new w(null,"removed_id","removed_id",1940625745),yQ=new w(null,"heartbeats","heartbeats",-577028371),sw=new w("gateway.state.spec.common","identity","gateway.state.spec.common/identity",-343306948),tw=new w(null,"next-stack","next-stack",-481930728),uw=new w(null,"add-interest","add-interest",-1148631141),qb=new w(null,"readably","readably",1129599760),vw=new w(null,"ttl","ttl",-1115275118),ww=new w("gateway.common.context.spec.requests","read_permissions","gateway.common.context.spec.requests/read_permissions",-45173714),xw=new w(null,"sequence","sequence",926807414),yw=new w("gateway.state.spec.activity","user","gateway.state.spec.activity/user",-93065379),zw=new w("gateway.state.spec.domain-registry","uri","gateway.state.spec.domain-registry/uri",301088755),Aw=new w("gateway.state.spec.bus","subscription-id","gateway.state.spec.bus/subscription-id",-1920104157),Bw=new w("gateway.state.spec.bus","subscription","gateway.state.spec.bus/subscription",1556343370),Cw=new w(null,"added","added",2057651688),Dw=new w(null,"environment","environment",-666037640),Ew=new w(null,"optimize","optimize",-1912349448),Fw=new w(null,"data","data",-232669377),Gw=new w(null,"VCHAR","VCHAR",1962437706),zQ=new w(null,"whitelist-ns","whitelist-ns",868974100),Iw=new w(null,"?meta","?meta",-793560773),Jw=new w("gateway.state.spec.agm","subscription","gateway.state.spec.agm/subscription",1556334291),Kw=new w("gateway.common.context.spec.requests","command","gateway.common.context.spec.requests/command",-1702281587),Lw=new w(null,"appender","appender",1267426510),Mw=new Ad("cljs.core","boolean?","cljs.core/boolean?",1400713761,null),Nw=new w(null,"gw-request-id","gw-request-id",2114687330),Ow=new w(null,"lookahead","lookahead",-400102393),Pw=new w(null,"client-request","client-request",-1402967032),Qw=new w(null,"validation","validation",-2141396518),Rw=new Ad(null,"when-not","when-not",-1223136340,null),Sw=new w(null,"CR","CR",-1654295403),Tw=new w(null,"create","create",-1301499256),sl=new Ad(null,"ns","ns",2082130287,null),Uw=new w(null,"stack","stack",-793405930),Vw=new w("gateway.common.spec.messages","reason","gateway.common.spec.messages/reason",1129095963),tk=new w(null,"pending","pending",-220036727),Ww=new w("gateway.state.spec.mthds","input_signature","gateway.state.spec.mthds/input_signature",2082802494),Xw=new w(null,"subscription","subscription",1949009182),Yw=new w(null,"padchar","padchar",2018584530),Zw=new w(null,"strable","strable",1877668047),$w=new w(null,"peer-removed","peer-removed",1752359546),ax=new w(null,"defined-as","defined-as",-474679152),bx=new w(null,"col","col",-1959363084),cx=new w(null,"days","days",-1394072564),dx=new w("gateway.common.context.spec.requests","context-destroy","gateway.common.context.spec.requests/context-destroy",-2019226956),ex=new w("gateway.state.spec.restrictions","empty-restrictions","gateway.state.spec.restrictions/empty-restrictions",1011650447),fx=new w(null,"destroy","destroy",-843660405),gx=new w(null,"failure","failure",720415879),hx=new w(null,"factories","factories",1443149712),ix=new w("gateway.state.spec.activity","configuration","gateway.state.spec.activity/configuration",1853083827),jx=new w(null,"offset","offset",296498311),kx=new w(null,"conform-keys","conform-keys",-1800041814),lx=new Ad(null,"set?","set?",1636014792,null),mx=new w(null,"resolved_identity","resolved_identity",-874947112),nx=new w(null,"mincol","mincol",1230695445),ox=new w("gateway.domains.agm.spec.requests","data-message","gateway.domains.agm.spec.requests/data-message",-153411654),px=new w(null,"dec-val","dec-val",-1263870894),yl=new Ad(null,"set!","set!",250714521,null),qx=new w("gateway.state.spec.mthds","method-def","gateway.state.spec.mthds/method-def",858475302),rx=new w(null,"not-delivered","not-delivered",1599158697),sx=new w("gateway.common.context.spec.requests","removed","gateway.common.context.spec.requests/removed",-732316803),tx=new w(null,"hash_","hash_",-827203612),ux=new w(null,"miser-width","miser-width",-1310049437),vx=new w(null,"hash","hash",-13781596),wx=new w(null,"hide-nt","hide-nt",-228813845),xx=new w(null,"hiccup","hiccup",1218876238),yx=new w(null,"welcome","welcome",-578152123),zx=new Ad("cljs.spec.alpha","tuple","cljs.spec.alpha/tuple",-415901908,null),Ax=new w("gateway.domains.agm.spec.requests","method_id","gateway.domains.agm.spec.requests/method_id",926663112),Bx=new w("gateway.state.spec.factory","flags","gateway.state.spec.factory/flags",-1898127651),Cx=new w(null,"error","error",-978969032),Dx=new w(null,"WSP","WSP",-1046948716),Ex=new w(null,"rule-separator","rule-separator",1539322213),Fx=new Ad(null,"with-local-vars","with-local-vars",837642072,null),Gx=new Ad("cljs.spec.alpha","multi-spec","cljs.spec.alpha/multi-spec",175821274,null),Hx=new w("gateway.common.context.spec.requests","join","gateway.common.context.spec.requests/join",94453629),Ix=new w("gateway.common.spec.messages","request","gateway.common.spec.messages/request",712202569),Jx=new w(null,"args","args",1315556576),Kx=new w("gateway.state.spec.agm","interests","gateway.state.spec.agm/interests",1622331889),xQ=new w("zip","children","zip/children",-940194589),Lx=new w("gateway.state.spec.agm","caller","gateway.state.spec.agm/caller",-1898628116),Mx=new w("gateway.domains.agm.core","peer-methods","gateway.domains.agm.core/peer-methods",639951360),Nx=new w(null,"display_name","display_name",-1494335013),Ox=new w("gateway.domains.global.spec.requests","lifetime","gateway.domains.global.spec.requests/lifetime",-1145821948),Px=new w("gateway.state.spec.agm","callee","gateway.state.spec.agm/callee",1100257697),Qx=new w(null,"BIT","BIT",-1854474115),rl=new Ad(null,"new","new",-444906321,null),Rx=new Ad("cljs.core","with-meta","cljs.core/with-meta",749126446,null),Sx=new w(null,"cache?","cache?",-1601953949),Tx=new Ad("cljs.core","list","cljs.core/list",-1331406371,null),Ux=new w(null,"calls","calls",-433802344),Vx=new Ad(null,"lift-ns","lift-ns",602311926,null),Wx=new w(null,"allows-separator","allows-separator",-818967742),Xx=new w(null,"list","list",765357683),Yx=new Ad("cljs.core","seq","cljs.core/seq",-1649497689,null),Zx=new w(null,"node-builder","node-builder",-1956562605),$x=new w(null,"buffering","buffering",-876713613),UR=new w(null,"supports-clojure-structures?","supports-clojure-structures?",1492573457),ay=new w(null,"arg1","arg1",951899358),by=new w(null,"base-args","base-args",-1268706822),cy=new w(null,"arg3","arg3",-1486822496),dy=new w(null,"arg2","arg2",1729550917),ey=new w(null,"owner_type","owner_type",846064882),fy=new w("gateway.state.spec.activity","activity-peer","gateway.state.spec.activity/activity-peer",-1499406427),gy=new w(null,"event","event",301435442),hy=new Ad("gateway.domains.agm.subscriptions","drop-interest-rq","gateway.domains.agm.subscriptions/drop-interest-rq",1736302176,null),iy=new w(null,"rate-limit","rate-limit",1748082022),jy=new w(null,"?ns-str","?ns-str",2012733966),ky=new w(null,"commainterval","commainterval",-1980061083),ly=new w("gateway.state.spec.activity","default_context","gateway.state.spec.activity/default_context",1517722536),my=new w(null,"ping","ping",-1670114784),ny=new w(null,"min-level","min-level",1634684919),oy=new w(null,"value","value",305978217),py=new w("gateway.domains.agm.spec.requests","flags","gateway.domains.agm.spec.requests/flags",989202486),qy=new w(null,"peer","peer",1319662792),ry=new w("gateway.state.spec.activity","activities","gateway.state.spec.activity/activities",1132481734),sy=new w(null,"LF","LF",1177033158),ty=new w("gateway.state.spec.state","ids","gateway.state.spec.state/ids",259664151),uy=new w(null,"ns-blacklist","ns-blacklist",1957763142),vy=new w(null,"composite","composite",-257118970),wy=new Ad("cljs.core","concat","cljs.core/concat",-1133584918,null),xy=new Ad("cljs.spec.alpha","coll-of","cljs.spec.alpha/coll-of",1019430407,null),yy=new w("gateway.auth.spec","type","gateway.auth.spec/type",552402611),zy=new w(null,"ready?","ready?",-105765697),VR=new w(null,"startup","startup",1974425703),WR=new w(null,"cleanup","cleanup",1045776959),Ay=new w(null,"machine","machine",-1389886154),BT=new w(null,"stopped","stopped",-1490414640),By=new w("gateway.state.spec.activity","activity-subscribers","gateway.state.spec.activity/activity-subscribers",-1579465715),Cy=new w(null,"trace","trace",-1082747415),Dy=new w("instaparse.gll","start-index","instaparse.gll/start-index",404653620),Ey=new w(null,"subscriptions","subscriptions",1250949776),Fy=new w(null,"right-margin","right-margin",-810413306),Gy=new w("gateway.state.spec.state","user-name","gateway.state.spec.state/user-name",-1129365610),Hy=new w("gateway.auth.spec","remote_identity","gateway.auth.spec/remote_identity",-1701598746),Iy=new w(null,"ident","ident",-742346),Jy=new Ad("cljs.core","set?","cljs.core/set?",-1176684971,null),Ky=new Ad("cljs.core","keyword","cljs.core/keyword",-337316415,null),Ly=new w("gateway.state.spec.activity","properties","gateway.state.spec.activity/properties",-914053381),My=new w("gateway.domains.global.spec.requests","context-update","gateway.domains.global.spec.requests/context-update",-1728804708),Ny=new w("gateway.state.spec.domain-registry","registered-domains","gateway.state.spec.domain-registry/registered-domains",511803772),Oy=new Ad("cljs.core","list?","cljs.core/list?",-684796618,null),Py=new w("gateway.auth.spec","authentication","gateway.auth.spec/authentication",-2005184469),Qy=new w(null,"buffer-blob","buffer-blob",-1830112173),Ry=new w("gateway.domains.global.spec.requests","read_permissions","gateway.domains.global.spec.requests/read_permissions",75711320),Sy=new w(null,"features","features",-1146962336),Ty=new w(null,"context-id","context-id",1979873501),DT=new w(null,"inactive_seconds","inactive_seconds",-1714688448),Vy=new w(null,"full-listeners","full-listeners",50621827),Wy=new Ad(null,"with-open","with-open",172119667,null),Xy=new Ad("cljs.spec.alpha","merge","cljs.spec.alpha/merge",1420080689,null),Yy=new w("gateway.state.spec.state","activity-subscribers","gateway.state.spec.state/activity-subscribers",-776389065),Zy=new Ad(null,"p1__14969#","p1__14969#",-962076966,null),$y=new Ad(null,"response-type","response-type",146761069,null),ET=new w(null,"max-size","max-size",-874966132),az=new w(null,"cat","cat",-1457810207),bz=new w("gateway.state.spec.state","users","gateway.state.spec.state/users",-2072351172),cz=new w(null,"activity","activity",-1179221455),dz=new w("gateway.common.spec.messages","new_peer_id","gateway.common.spec.messages/new_peer_id",326805829),SS=new w(null,"max_size","max_size",1259311709),ez=new Ad("cljs.spec.alpha","conformer","cljs.spec.alpha/conformer",2140085535,null),FT=new w(null,"datapoint","datapoint",-1083555577),fz=new w(null,"gw-request","gw-request",1009584674),gz=new w(null,"local","local",-1497766724),hz=new w("gateway.state.spec.domain-registry","description","gateway.state.spec.domain-registry/description",-350920838),iz=new w(null,"login","login",55217519),jz=new Ad("cljs.spec.alpha","nilable","cljs.spec.alpha/nilable",1628308748,null),kz=new Ad("cljs.core","lift-ns","cljs.core/lift-ns",463499081,null),lz=new w("gateway.domains.agm.spec.requests","add-interest","gateway.domains.agm.spec.requests/add-interest",1660124918),mz=new w("gateway.state.spec.agm","subscription-id","gateway.state.spec.agm/subscription-id",-1920105558),nz=new w("gateway.domains.global.spec.requests","context-unsubscribe","gateway.domains.global.spec.requests/context-unsubscribe",-602451908),oz=new w(null,"channel","channel",734187692),pz=new w(null,"caller_id","caller_id",5404558),qz=new w(null,"remote-identity","remote-identity",1289489893),rz=new w(null,"full","full",436801220),sz=new w(null,"lines","lines",-700165781),tz=new w(null,"warn","warn",-436710552),uz=new w(null,"SP","SP",124290284),vz=new w("gateway.common.context.spec.requests","value","gateway.common.context.spec.requests/value",1114622378),Y=new w(null,"tag","tag",-1290361223),wz=new w(null,"indent-t","indent-t",528318969),xz=new w(null,"destination","destination",-253872483),CT=new w(null,"metadata","metadata",1799301597),yz=new w(null,"routing_key","routing_key",1236069137),zz=new w(null,"rulename","rulename",948914160),Az=new Ad(null,"p1__15595#","p1__15595#",-858324958,null),Bz=new w("gateway.state.spec.activity","name","gateway.state.spec.activity/name",113237718),Cz=new w(null,"gfn","gfn",791517474),Dz=new w(null,"activity-types","activity-types",-397260556),Ez=new w("gateway.state.spec.bus","subscriptions","gateway.state.spec.bus/subscriptions",359149340),Fz=new w(null,"years","years",-1298579689),Gz=new w("gateway.state.spec.agm","subscriptions","gateway.state.spec.agm/subscriptions",359122069),Hz=new w(null,"regex","regex",939488856),Iz=new w(null,"streams","streams",1465783789),nl=new Ad(null,"loop*","loop*",615029416,null),Jz=new w("cljs.spec.alpha","cpred","cljs.spec.alpha/cpred",-693471218),Kz=new w("gateway.state.spec.context","lifetime","gateway.state.spec.context/lifetime",-510268810),Lz=new w(null,"DIGIT","DIGIT",341251338),Mz=new w(null,"activity_type","activity_type",-194821832),Nz=new w("gateway.domains.global.spec.messages","creator_id","gateway.domains.global.spec.messages/creator_id",2015161290),Oz=new w(null,"NUM","NUM",-218662260),Pz=new w(null,"leave","leave",1022579443),Qz=new w("gateway.domains.agm.spec.requests","snapshot","gateway.domains.agm.spec.requests/snapshot",476154767),Rz=new Ad("cljs.core","apply","cljs.core/apply",1757277831,null),Sz=new w(null,"right-params","right-params",-1790676237),zX=new w(null,"scavenger","scavenger",107984617),Uz=new w(null,"identity","identity",1647396035),Vz=new w("gateway.state.spec.common","endpoint","gateway.state.spec.common/endpoint",-2063041997),Wz=new w(null,"colon","colon",-965200945),Xz=new w(null,"owner?","owner?",-839891990),Yz=new w("gateway.state.spec.state","contexts","gateway.state.spec.state/contexts",-1321025323),Zz=new w("gateway.state.spec.agm","server","gateway.state.spec.agm/server",1918098797),$z=new w(null,"CRLF","CRLF",11418756),aA=new Ad(null,"if-not","if-not",-265415609,null),bA=new w("gateway.state.spec.activity","participants","gateway.state.spec.activity/participants",-1995832242),cA=new w("gateway.domains.agm.spec.requests","unsubscribe","gateway.domains.agm.spec.requests/unsubscribe",-1898794870),sj=new w("cljs.core","not-found","cljs.core/not-found",-1572889185),dA=new w(null,"appenders","appenders",1245583998),eA=new w("gateway.state.spec.context","updates","gateway.state.spec.context/updates",-1191134395),fA=new w(null,"concatenation","concatenation",-951369614),gA=new w("gateway.state.spec.pending-requests","activity","gateway.state.spec.pending-requests/activity",1935677687),hA=new w(null,"vector","vector",1902966158),iA=new Ad(null,"drop-interest-rq","drop-interest-rq",-842860790,null),jA=new w("gateway.common.context.spec.requests","context-subscribe","gateway.common.context.spec.requests/context-subscribe",-318176635),kA=new w(null,"weeks","weeks",1844596125),lA=new w("gateway.domains.agm.spec.requests","arguments_kv","gateway.domains.agm.spec.requests/arguments_kv",-220182488),mA=new w(null,"remove","remove",-131428414),nA=new w(null,"token-ttl","token-ttl",-103977687),oA=new w(null,"last-access","last-access",1110221580),pA=new w(null,"peer_type","peer_type",371163309),qA=new w("gateway.state.spec.factory","peer_type","gateway.state.spec.factory/peer_type",-885367633),rA=new w(null,"bin-val","bin-val",1705209105),sA=new w("cljs.spec.alpha","accept","cljs.spec.alpha/accept",370988198),tA=new Ad("cljs.core","keyword?","cljs.core/keyword?",713156450,null),uA=new w(null,"timestamp","timestamp",579478971),ml=new Ad(null,"finally","finally",-1065347064,null),vA=new w(null,"func","func",-238706040),wA=new w(null,"yield","yield",177875009),xA=new w(null,"result","result",1415092211),yA=new w(null,"ord","ord",1142548323),zA=new w("gateway.state.spec.mthds","methods","gateway.state.spec.mthds/methods",-868139122),ol=new Ad(null,"do","do",1686842252,null),AA=new w(null,"NOT","NOT",-1689245341),BA=new w(null,"opt","opt",-794706369),CA=new w(null,"msecs","msecs",1711980553),DA=new w("gateway.state.spec.common","source","gateway.state.spec.common/source",1883706108),EA=new w(null,"comment","comment",532206069),FA=new w(null,"requestor_id","requestor_id",-1253857801),GA=new w(null,"sym","sym",-1444860305),HA=new w(null,"auto-whitespace","auto-whitespace",741152317),Bl=new Ad(null,"quote","quote",1377916282,null),IA=new w(null,"last","last",1105735132),JA=new w(null,"preserve","preserve",1276846509),KA=new w("gateway.state.spec.pending-requests","owner?","gateway.state.spec.pending-requests/owner?",346289860),LA=new w(null,"join-activity","join-activity",1683531460),MA=new w(null,"buffer-size","buffer-size",1047120420),NA=new w(null,"secret","secret",618547054),AX=new w(null,"updated-at","updated-at",-1592622336),OA=new w(null,"joined_id","joined_id",35485948),PA=new w(null,"read_permissions","read_permissions",766082539),QA=new w("gateway.domains.global.spec.requests","join","gateway.domains.global.spec.requests/join",-837980557),RA=new w(null,"regexp","regexp",-541372782),SA=new w("gateway.state.spec.activity","initiator","gateway.state.spec.activity/initiator",735796495),TA=new w("gateway.common.spec.messages","peer-message","gateway.common.spec.messages/peer-message",823378764),UA=new w(null,"deref","deref",-145586795),VA=new w("rl","all","rl/all",892118056),WA=new Ad(null,"fn","fn",465265323,null),XA=new w("gateway.state.spec.state","current-id","gateway.state.spec.state/current-id",798109991),YA=new w("gateway.state.spec.pending-requests","type","gateway.state.spec.pending-requests/type",-1681171358),ZA=new Ad(null,"dotimes","dotimes",-818708397,null),$A=new w("gateway.domains.agm.spec.requests","yield","gateway.domains.agm.spec.requests/yield",1398099968),aB=new w(null,"max-iterations","max-iterations",2021275563),bB=new w(null,"char","char",-641587586),cB=new w(null,"oob","oob",707302005),dB=new w(null,"start-time","start-time",814801386),eB=new Ad(null,"cond","cond",1606708055,null),fB=new w(null,"unsubscribe","unsubscribe",632650147),gB=new w(null,"key","key",-1516042587),hB=new w(null,"opt-whitespace","opt-whitespace",1115207927),iB=new Ad("cljs.core","vector?","cljs.core/vector?",-1550392028,null),jB=new w("gateway.state.spec.common","peer_id","gateway.state.spec.common/peer_id",1217199451),kB=new w(null,"your-version","your-version",-351781765),lB=new Ad("clojure.core","deref","clojure.core/deref",188719157,null),dk=new w(null,"alt-impl","alt-impl",670969595),mB=new w(null,"str","str",1089608819),nB=new w("gateway.state.spec.state","identities","gateway.state.spec.state/identities",-204237049),Al=new Ad(null,"var","var",870848730,null),oB=new w(null,"minpad","minpad",323570901),pB=new w("cljs.spec.alpha","invalid","cljs.spec.alpha/invalid",-1220295119),qB=new w("gateway.state.spec.mthds","display_name","gateway.state.spec.mthds/display_name",1469788607),rB=new w(null,"logical-block","logical-block",-581022564),ql=new Ad(null,"if","if",1181717262,null),sB=new w(null,"initial-context","initial-context",-32910095),tB=new w(null,"receiver","receiver",1768630781),uB=new w("gateway.domains.global.spec.messages","reason","gateway.domains.global.spec.messages/reason",-1756219178),vB=new w("gateway.domains.agm.spec.messages","meta","gateway.domains.agm.spec.messages/meta",520804499),wB=new Ad("cljs.core","some?","cljs.core/some?",-440439360,null),xB=new w(null,"users","users",-713552705),yB=new w(null,"max-age","max-age",-270129271),zB=new w("gateway.common.commands","source-removed","gateway.common.commands/source-removed",701959101),AB=new w(null,"pred-exprs","pred-exprs",1792271395),BB=new Ad(null,"any?","any?",-318999933,null),CB=new w(null,"string","string",-1989541586),DB=new w(null,"configuration","configuration",1431842520),EB=new w("gateway.common.context.spec.messages","updater_id","gateway.common.context.spec.messages/updater_id",-850230629),FB=new w(null,"repetition","repetition",1938392115),GB=new w("gateway.domains.global.spec.messages","updater_id","gateway.domains.global.spec.messages/updater_id",-1794190419),HB=new w(null,"updated","updated",-1627192056),IB=new w("gateway.state.spec.common","peer-id","gateway.state.spec.common/peer-id",-1398853323),JB=new w(null,"domains","domains",1410387719),RX=new w(null,"datapoints","datapoints",-1250577876),KB=new Ad(null,"uuid","uuid",-504564192,null),LB=new w(null,"repository-factories","repository-factories",-545628132),MB=new w(null,"CTL","CTL",-9995632),sb=new w(null,"dup","dup",556298533),NB=new w(null,"enabled?","enabled?",-1376075057),OB=new w(null,"updates","updates",2013983452),PB=new w("gateway.domains.global.spec.requests","context_id","gateway.domains.global.spec.requests/context_id",-1750912658),rk=new w(null,"status","status",-1997798413),QB=new w(null,"server","server",1499190120),RB=new w(null,"memory","memory",-1449401430),SB=new w(null,"ownership","ownership",892314581),TB=new w("cljs.spec.alpha","nil","cljs.spec.alpha/nil",1733813950),UB=new w(null,"creator_id","creator_id",1398967087),VB=new w("cljs.spec.alpha","k","cljs.spec.alpha/k",-1602615178),WB=new w("gateway.common.spec.messages","removed_id","gateway.common.spec.messages/removed_id",-1304577413),XB=new w("gateway.domains.global.spec.messages","reason_uri","gateway.domains.global.spec.messages/reason_uri",1393708653),YB=new w("gateway.state.spec.activity","child","gateway.state.spec.activity/child",-942548506),ZB=new w(null,"destroy-peer","destroy-peer",-1747489061),$B=new Ad(null,"struct-map","struct-map",-1387540878,null),aC=new w(null,"end-block-t","end-block-t",1544648735),bC=new w(null,"owner_id","owner_id",1001956033),cC=new w("gateway.state.spec.context","version","gateway.state.spec.context/version",-664315203),dC=new w("cljs.spec.alpha","v","cljs.spec.alpha/v",552625740),tl=new Ad(null,"deftype*","deftype*",962659890,null),eC=new w(null,"filters","filters",974726919),fC=new w(null,"report","report",1394055010),gC=new w(null,"qualifier","qualifier",125841738),hC=new w("gateway.state.spec.bus","routing-key","gateway.state.spec.bus/routing-key",554216520),iC=new w(null,"negative-listeners","negative-listeners",55241092),jC=new w(null,"success","success",1890645906),kC=new w(null,"stream","stream",1534941648),lC=new w(null,"target_id","target_id",-124012080),mC=new w(null,"retained","retained",630238157),nC=new w(null,"children","children",-940561982),oC=new Ad(null,"string?","string?",-1129175764,null),pC=new w("gateway.common.spec.requests","restrictions","gateway.common.spec.requests/restrictions",-1264539352),qC=new w(null,"HEXDIG","HEXDIG",-200221072),rC=new w(null,"listeners","listeners",394544445),sC=new w("gateway.state.spec.common","request_id","gateway.state.spec.common/request_id",2099278405),tC=new w("gateway.domains.agm.spec.requests","call","gateway.domains.agm.spec.requests/call",442214083),uC=new w(null,"mins","mins",467369676),vC=new w(null,"option","option",65132272),wC=new w(null,"months","months",-45571637),xC=new w("gateway.domains.agm.spec.requests","drop-subscription","gateway.domains.agm.spec.requests/drop-subscription",938907886),yC=new w("gateway.common.context.spec.requests","added","gateway.common.context.spec.requests/added",-1410443097),zC=new w("gateway.state.spec.context","id","gateway.state.spec.context/id",1782620593),AC=new w("gateway.common.context.spec.requests","write_permissions","gateway.common.context.spec.requests/write_permissions",-194247007),El=new Ad(null,"def","def",597100991,null),BC=new w(null,"map","map",1371690461),CC=new w(null,"params","params",710516235),DC=new w(null,"iso8601","iso8601",609352650),EC=new w(null,"max","max",61366548),FC=new w(null,"interop","interop",-1183783726),GC=new w(null,"uri","uri",-774711847),HC=new w("gateway.state.spec.factory","id","gateway.state.spec.factory/id",-395012522),IC=new w(null,"arguments_kv","arguments_kv",739148125),JC=new w(null,"activity-joined","activity-joined",-1584889318),KC=new w(null,"doc","doc",1913296891),LC=new w(null,"readers","readers",-2118263030),Cl=new Ad(null,"catch","catch",-1616370245,null),MC=new w(null,"dec-char","dec-char",-646625154),NC=new w(null,"path","path",-188191168),OC=new w(null,"server_id","server_id",-518165566),PC=new w(null,"tags","tags",1771418977),QC=new w("gateway.state.spec.agm","subscriber","gateway.state.spec.agm/subscriber",2009954326),RC=new w("gateway.state.spec.activity","visibility","gateway.state.spec.activity/visibility",-1264422156),SC=new Ad("cljs.core","string?","cljs.core/string?",-2072921719,null),TC=new w(null,"max-count","max-count",1539185305),UC=new w(null,"request_id","request_id",-208950594),VC=new w("gateway.state.spec.domain-registry","domain-uri","gateway.state.spec.domain-registry/domain-uri",636341057),WC=new w("gateway.domains.global.spec.requests","context-subscribe","gateway.domains.global.spec.requests/context-subscribe",614257563),XC=new w(null,"separator","separator",-1628749125),YC=new w(null,"contexts","contexts",4351546),ZC=new w(null,"create-token","create-token",-1564000484),$C=new w("gateway.auth.spec","user","gateway.auth.spec/user",803364081),aD=new w("gateway.state.spec.agm","request_id","gateway.state.spec.agm/request_id",-1401687879),bD=new w(null,"version","version",425292698),cD=new Ad("clojure.core","unquote","clojure.core/unquote",843087510,null),dD=new w(null,"opt-un","opt-un",883442496),eD=new Ad("cljs.spec.alpha","keys","cljs.spec.alpha/keys",1109346032,null),fD=new w(null,"circle","circle",1903212362),gD=new Ad(null,"gateway.auth.spec","gateway.auth.spec",1721169563,null),hD=new w("gateway.state.spec.context","members","gateway.state.spec.context/members",1219498589),iD=new w(null,"impersonate-peer","impersonate-peer",-1409232482),jD=new w(null,"cluster","cluster",535175621),kD=new Ad(null,"-Inf","-Inf",-2123243689,null),lD=new w("gateway.state.spec.agm","streams","gateway.state.spec.agm/streams",-460960790),mD=new w(null,"limits","limits",-2101003399),nD=new w(null,"start-pos","start-pos",668789086),oD=new w(null,"flags","flags",1775418075),pD=new w(null,"info","info",-317069002),qD=new w(null,"subscription_id","subscription_id",1241304848),rD=new w(null,"splicing?","splicing?",-428596366),sD=new w(null,"write_permissions","write_permissions",-2075461534),tD=new w("cljs.spec.alpha","describe","cljs.spec.alpha/describe",1883026911),uD=new w("gateway.state.spec.context","read_permissions","gateway.state.spec.context/read_permissions",-559958390),vD=new w("gateway.domains.agm.spec.requests","sequence","gateway.domains.agm.spec.requests/sequence",1051925549),wD=new w(null,"test","test",577538877),xD=new w("gateway.common.context.spec.requests","context-create","gateway.common.context.spec.requests/context-create",-947794767),yD=new w(null,"fill","fill",883462889),SX=new w(null,"heartbeat-interval","heartbeat-interval",-1509739653),zD=new w(null,"end-of-string","end-of-string",1567354241),AD=new w(null,"reset","reset",-800929946),BD=new w("cljs.spec.alpha","amp","cljs.spec.alpha/amp",831147508),CD=new w(null,"file","file",-1269645878),DD=new w("rl","peek","rl/peek",-291391771),ED=new w(null,"buffer-block","buffer-block",-10937307),FD=new Ad(null,"p1__14968#","p1__14968#",-1002975068,null),GD=new w("cljs.spec.alpha","alt","cljs.spec.alpha/alt",523685437),HD=new w("gateway.state.spec.activity","activity","gateway.state.spec.activity/activity",449324238),ID=new w("gateway.state.spec.state","signature-key","gateway.state.spec.state/signature-key",1283598087),JD=new w(null,"generator-fn","generator-fn",811851656),KD=new w(null,"keys-pred","keys-pred",858984739),LD=new w("gateway.domains.agm.spec.messages","reason_uri","gateway.domains.agm.spec.messages/reason_uri",577151711),MD=new Ad("cljs.core","array-map","cljs.core/array-map",-1519210683,null),ND=new w(null,"topic","topic",-1960480691),OD=new w("gateway.common.context.spec.requests","delta","gateway.common.context.spec.requests/delta",-694068490),PD=new w("gateway.domains.agm.spec.requests","invoke","gateway.domains.agm.spec.requests/invoke",1837084336),QD=new w(null,"members","members",159001018),RD=new w(null,"?msg-fmt","?msg-fmt",-852453891),UD=new w(null,"buffer_size","buffer_size",-2122723051),SD=new Ad(null,"queue","queue",-1198599890,null),TD=new w(null,"text","text",-1790561697),YD=new w("gateway.domains.global.spec.requests","hello","gateway.domains.global.spec.requests/hello",-398737422),VD=new w("gateway.state.spec.mthds","result_signature","gateway.state.spec.mthds/result_signature",-1987803736),WD=new Ad("s","or","s/or",1876282981,null),XD=new w("gateway.state.spec.activity","parent","gateway.state.spec.activity/parent",-359694046),$D=new w("gateway.common.context.spec.messages","reason_uri","gateway.common.context.spec.messages/reason_uri",-1687789209),ZD=new w(null,"?err_","?err_",789480858),cE=new w("gateway.domains.agm.spec.unregister","unregister","gateway.domains.agm.spec.unregister/unregister",388278210),aE=new w("gateway.state.spec.agm","stream","gateway.state.spec.agm/stream",1961075649),bE=new w(null,"level","level",1290497552),fE=new w(null,"start-col","start-col",668080143),dE=new w("gateway.common.spec.messages","outgoing-message","gateway.common.spec.messages/outgoing-message",1952031218),rb=new w(null,"meta","meta",1499536964),eE=new w("gateway.state.spec.pending-requests","id","gateway.state.spec.pending-requests/id",-199997554),eY=new w(null,"started?","started?",-1301062863),iE=new w(null,"invoke","invoke",1145927159),hE=new w(null,"local-ip","local-ip",302001740),kE=new w(null,"w","w",354169001),jE=new w(null,"rulename-left","rulename-left",-1824251564),BX=new w(null,"r","r",-471384190),Nk=new w(null,"ancestors","ancestors",-776045424),nE=new w(null,"n","n",562130025),lE=new w(null,"p","p",151049309),mE=new w(null,"helper_types","helper_types",1747427755),oE=new w(null,"system","system",-29381724),qE=new w(null,"def","def",-1043430536),CX=new w(null,"pnodes","pnodes",1739080565),pE=new w(null,"reason_uri","reason_uri",1062203786),sE=new w(null,"leeway","leeway",-355669977),rE=new w(null,"req-keys","req-keys",514319221),jl=new Ad(null,"defrecord*","defrecord*",-1936366207,null),tE=new w("gateway.domains.global.internal","authentication-request","gateway.domains.global.internal/authentication-request",502904463),vE=new w(null,"k","k",-2146297393),DX=new w(null,"l","l",1395893423),uE=new w(null,"f","f",-1597136552),wE=new w(null,"e","e",1381269198),zE=new w(null,"d","d",1972142424),xE=new Ad(null,"cljs.tools.reader","cljs.tools.reader",-831293977,null),yE=new w("gateway.state.spec.common","address","gateway.state.spec.common/address",394563279),BE=new w(null,"overflowchar","overflowchar",-1620088106),AE=new w(null,"opt-specs","opt-specs",-384905450),CE=new w(null,"min-remaining","min-remaining",962687677),FE=new w(null,"application","application",551185447),DE=new w("gateway.state.spec.factory","factory","gateway.state.spec.factory/factory",1055781172),EE=new w("gateway.common.spec.messages","incoming-message","gateway.common.spec.messages/incoming-message",-528171747),GE=new w(null,"max-connections-per-user","max-connections-per-user",-1995174555),HE=new w("gateway.common.context.spec.requests","restrictions","gateway.common.context.spec.requests/restrictions",-1766361),LE=new w(null,"commachar","commachar",652859327),ul=new Ad(null,"let*","let*",1920721458,null),IE=new w(null,"inherit","inherit",-1840815422),JE=new Ad("cljs.core","hash-map","cljs.core/hash-map",303385767,null),KE=new w("gateway.state.spec.factory","configuration","gateway.state.spec.factory/configuration",154272470),OE=new w("gateway.domains.global.spec.requests","destination","gateway.domains.global.spec.requests/destination",165081940),P2=new w(null,"running","running",1554969103),ME=new w("gateway.state.spec.common","channel","gateway.state.spec.common/channel",426185507),NE=new w("gateway.common.spec.messages","local","gateway.common.spec.messages/local",1736687122),TE=new w(null,"add-types","add-types",-711550002),PE=new w(null,"registered-domains","registered-domains",-559729182),kl=new Ad(null,"try","try",-1273693247,null),QE=new w(null,"ns-whitelist","ns-whitelist",-1717299774),RE=new Ad("clojure.core","unquote-splicing","clojure.core/unquote-splicing",-552003150,null),SE=new w("gateway.state.spec.pending-requests","gateway_token","gateway.state.spec.pending-requests/gateway_token",-1747123785),UE=new w("gateway.auth.spec","response","gateway.auth.spec/response",1690727657),VE=new w("gateway.domains.global.spec.messages","type","gateway.domains.global.spec.messages/type",708595817),Bk=new w(null,"keyword-fn","keyword-fn",-64566675),eF=new w(null,"section","section",-300141526),WE=new w("gateway.state.spec.mthds","method","gateway.state.spec.mthds/method",1887447044),XE=new w("gateway.common.spec.messages","type","gateway.common.spec.messages/type",2118883938),YE=new w(null,"hex-char","hex-char",764443568),ZE=new w(null,"private","private",-558947994),$E=new w("gateway.state.spec.context","write_permissions","gateway.state.spec.context/write_permissions",1195182789),aF=new w(null,"into","into",-150836029),bF=new w("cljs.spec.alpha","rep","cljs.spec.alpha/rep",1483217317),cF=new w(null,"star","star",279424429),dF=new w("cljs.spec.alpha","op","cljs.spec.alpha/op",-1269055252),Q2=new w(null,"split-size","split-size",-1210797067),iF=new w(null,"reloading","reloading",961158984),fF=new w(null,"full-results","full-results",-1500225407),gF=new w(null,"low","low",-1601362409),hF=new Ad(null,"some?","some?",234752293,null),kF=new w(null,"pretty","pretty",-1916372486),jF=new w("gateway.state.spec.context","context","gateway.state.spec.context/context",-1884667246),nF=new w("gateway.domains.agm.spec.messages","removed_id","gateway.domains.agm.spec.messages/removed_id",-1904544764),lF=new w(null,"own-ident","own-ident",1422237852),mF=new w("gateway.state.spec.mthds","name","gateway.state.spec.mthds/name",393834509),oF=new w(null,"authentication-request","authentication-request",-2091151542),pF=new Ad("gateway.auth.spec","response-type","gateway.auth.spec/response-type",724325508,null),qF=new w(null,"remove-peer-factories","remove-peer-factories",-316522514),sF=new w(null,"values","values",372645556),rF=new w(null,"unsupported-operation","unsupported-operation",1890540953),vF=new Ad(null,"let","let",358118826,null),tF=new w(null,"bus-domain","bus-domain",1136396472),uF=new w("gateway.state.spec.bus","bus-domain","gateway.state.spec.bus/bus-domain",1755593660),TX=new w(null,"ppath","ppath",-1758182784),wF=new w(null,"leave-activity","leave-activity",-484899731),xF=new w(null,"peer-requested","peer-requested",1452118887),AF=new w("gateway.domains.agm.spec.requests","post","gateway.domains.agm.spec.requests/post",-1221170496),yF=new Ad("gateway.common.spec.messages","message-body","gateway.common.spec.messages/message-body",-1647648637,null),zF=new w(null,"forms","forms",2045992350),BF=new w("gateway.domains.agm.spec.requests","result","gateway.domains.agm.spec.requests/result",1027857196),DF=new w("gateway.domains.agm.spec.messages","source_type","gateway.domains.agm.spec.messages/source_type",276727970),CF=new w(null,"agm-domain","agm-domain",1137239322),GF=new w(null,"destroy_peer_id","destroy_peer_id",388079342),EF=new w(null,"expecting","expecting",-57706705),FF=new w(null,"rule","rule",729973257),HF=new w("gateway.domains.agm.spec.requests","caller_id","gateway.domains.agm.spec.requests/caller_id",-211861801),IF=new w(null,"parent","parent",-878878779),KF=new w("gateway.common.context.spec.requests","type","gateway.common.context.spec.requests/type",372560587),JF=new w(null,"lifetime","lifetime",-1568939561),MF=new w(null,"update-context","update-context",1410241659),LF=new w(null,"standard","standard",-1769206695),OF=new w(null,"clauses","clauses",1454841241),NF=new w(null,"blacklist","blacklist",1248093170),SF=new Ad(null,"defonce","defonce",-1681484013,null),R2=new w(null,"latest-status","latest-status",875691533),PF=new w("gateway.state.spec.agm","agm-domain","gateway.state.spec.agm/agm-domain",686860067),QF=new w("gateway.state.spec.state","services","gateway.state.spec.state/services",-925305284),RF=new w(null,"Epsilon","Epsilon",133418452),XF=new w(null,"base","base",185279322),WF=new Ad(null,"read-string*","read-string*",1046768315,null),bG=new w(null,"remove-types","remove-types",-1777229898),YF=new w(null,"inside-comment","inside-comment",1258069708),ZF=new w(null,"no-stacktrace?","no-stacktrace?",1701072694),$F=new w("gateway.state.spec.agm","invocations","gateway.state.spec.agm/invocations",-1391969355),aG=new w(null,"character","character",380652989),cG=new w(null,"publisher","publisher",-153364540),eG=new w("gateway.domains.agm.subscriptions","drop-interest","gateway.domains.agm.subscriptions/drop-interest",-1584375112),dG=new w("gateway.state.spec.bus","topic-repattern","gateway.state.spec.bus/topic-repattern",736554526),fG=new w(null,"delta","delta",108939957),jG=new w("promesa.core","default","promesa.core/default",1773193826),gG=new w("gateway.state.spec.agm","invocation","gateway.state.spec.agm/invocation",-928333769),hG=new Ad("cljs.core","=","cljs.core/=",-1891498332,null),iG=new w(null,"look","look",-539441433),kG=new w(null,"methods-removed","methods-removed",-724408194),mG=new w(null,"local?","local?",-1422786101),fY=new w("zip","branch?","zip/branch?",-998880862),lG=new w("cljs.spec.alpha","unknown","cljs.spec.alpha/unknown",651034818),qG=new w(null,"type-tag","type-tag",-1873863267),nG=new w(null,"peer-added","peer-added",322139575),oG=new w(null,"namespaced-map","namespaced-map",1235665380),pG=new w(null,"peer_id","peer_id",1920005364),sG=new Ad(null,"locking","locking",1542862874,null),rG=new w("gateway.state.spec.activity","id","gateway.state.spec.activity/id",1251756953),vG=new w("gateway.common.context.spec.requests","context_id","gateway.common.context.spec.requests/context_id",1348419676),tG=new w(null,"factor","factor",-2103172748),uG=new w("gateway.state.spec.activity","activity-type","gateway.state.spec.activity/activity-type",1221900323),xG=new w("gateway.common.context.spec.requests","reset","gateway.common.context.spec.requests/reset",6157861),wG=new w(null,"peers","peers",2005345354),yG=new w("gateway.domains.agm.spec.requests","subscribe","gateway.domains.agm.spec.requests/subscribe",1050374291),zG=new w("gateway.domains.agm.spec.requests","subscription_id","gateway.domains.agm.spec.requests/subscription_id",1666574151),AG=new w("gateway.domains.agm.spec.messages","local","gateway.domains.agm.spec.messages/local",63355787),CG=new w(null,"typ","typ",-1304536900),BG=new w("gateway.state.spec.activity","owner","gateway.state.spec.activity/owner",-1983556102),DG=new w(null,"pos","pos",-864607220),EG=new w(null,"remote_identity","remote_identity",1864550587),HG=new w(null,"max-pending-requests","max-pending-requests",-1862384536),FG=new w(null,"?file","?file",1533429675),GG=new Ad("cljs.core","zipmap","cljs.core/zipmap",-1902130674,null),JG=new w(null,"left_id","left_id",730267975),IG=new w(null,"total","total",1916810418),NG=new w(null,"suppress-namespaces","suppress-namespaces",2130686956),KG=new w("gateway.common.spec.messages","message-type","gateway.common.spec.messages/message-type",929650450),LG=new w("instaparse","failure","instaparse/failure",1422918607),MG=new w(null,"end-line","end-line",1837326455),OG=new w("gateway.domain","join","gateway.domain/join",1465372684),PG=new w(null,"gateway_token","gateway_token",1638490713),TR=new w(null,"cur","cur",1153190599),QG=new w(null,"ebnf","ebnf",31967825),RG={},SG,aZ,bZ,TG={};function cZ(e,t){if(null!=e&&null!=e.Li)e=e.Li(e,t);else{var n=cZ[ba(null==e?null:e)];if(null!=n)e=n.h?n.h(e,t):n.call(null,e,t);else{if(null==(n=cZ._))throw Eb("ReadPort.take!",e);e=n.h?n.h(e,t):n.call(null,e,t)}}return e}function UG(e,t,n){if(null!=e&&null!=e.Oe)e=e.Oe(e,t,n);else{var r=UG[ba(null==e?null:e)];if(null!=r)e=r.j?r.j(e,t,n):r.call(null,e,t,n);else{if(null==(r=UG._))throw Eb("WritePort.put!",e);e=r.j?r.j(e,t,n):r.call(null,e,t,n)}}return e}function WG(e){if(null!=e&&null!=e.Gd)e=e.Gd(e);else{var t=WG[ba(null==e?null:e)];if(null!=t)e=t.g?t.g(e):t.call(null,e);else{if(null==(t=WG._))throw Eb("Channel.close!",e);e=t.g?t.g(e):t.call(null,e)}}return e}function XG(e){if(null!=e&&null!=e.Df)e=e.Df(e);else{var t=XG[ba(null==e?null:e)];if(null!=t)e=t.g?t.g(e):t.call(null,e);else{if(null==(t=XG._))throw Eb("Handler.active?",e);e=t.g?t.g(e):t.call(null,e)}}return e}function YG(e){if(null!=e&&null!=e.Ef)e=e.Ef(e);else{var t=YG[ba(null==e?null:e)];if(null!=t)e=t.g?t.g(e):t.call(null,e);else{if(null==(t=YG._))throw Eb("Handler.commit",e);e=t.g?t.g(e):t.call(null,e)}}return e}function ZG(e,t){if(null!=e&&null!=e.ce)e=e.ce(e,t);else{var n=ZG[ba(null==e?null:e)];if(null!=n)e=n.h?n.h(e,t):n.call(null,e,t);else{if(null==(n=ZG._))throw Eb("Buffer.add!*",e);e=n.h?n.h(e,t):n.call(null,e,t)}}return e}var $G=function e(t){switch(arguments.length){case 1:return e.g(arguments[0]);case 2:return e.h(arguments[0],arguments[1]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}};function aH(e,t,n,r,i){for(var o=0;othis.head?(aH(this.o,this.wa,e,0,this.o.length-this.wa),aH(this.o,0,e,this.o.length-this.wa,this.head),this.wa=0,this.head=this.length,this.o=e):this.wa===this.head?(this.head=this.wa=0,this.o=e):null},h.cleanup=function(e){for(var t=this.length,n=0;;){if(!(n=this.n},dH.prototype.ce=function(e,t){return this.ga.unbounded_unshift(t),this},dH.prototype.da=function(){return this.ga.length},eH.prototype.Fd=function(){return!1},eH.prototype.ce=function(e,t){return this.ga.length!==this.n&&this.ga.unshift(t),this},eH.prototype.da=function(){return this.ga.length},dZ.prototype.Fd=function(){return!1},dZ.prototype.ce=function(e,t){return this.ga.length===this.n&&this.ga.pop(),this.ga.unshift(t),this},dZ.prototype.da=function(){return this.ga.length},Ta("Opera");var gH=Ta("Trident")||Ta("MSIE");Ta("Edge");var hH=Ta("Gecko")&&!(-1!=Sa.toLowerCase().indexOf("webkit")&&!Ta("Edge"))&&!(Ta("Trident")||Ta("MSIE"))&&!Ta("Edge"),iH=-1!=Sa.toLowerCase().indexOf("webkit")&&!Ta("Edge");iH&&Ta("Mobile"),Ta("Macintosh"),Ta("Windows"),Ta("Linux")||Ta("CrOS");var eZ=aa.navigator||null,lH;function kH(){var e=document,t="IFRAME";return"application/xhtml+xml"===e.contentType&&(t=t.toLowerCase()),e.createElement(t)}function mH(){var e=aa.MessageChannel;if(void 0===e&&"undefined"!=typeof window&&window.postMessage&&window.addEventListener&&!Ta("Presto")&&(e=function(){var e=kH();e.style.display="none",document.documentElement.appendChild(e);var t=e.contentWindow;(e=t.document).open(),e.close();var n="callImmediate"+Math.random(),r="file:"==t.location.protocol?"*":t.location.protocol+"//"+t.location.host;e=la((function(e){"*"!=r&&e.origin!=r||e.data!=n||this.port1.onmessage()}),this),t.addEventListener("message",e,!1),this.port1={},this.port2={postMessage:function(){t.postMessage(n,r)}}}),void 0!==e&&!Ta("Trident")&&!Ta("MSIE")){var t=new e,n={},r=n;return t.port1.onmessage=function(){if(void 0!==n.next){var e=(n=n.next).Zd;n.Zd=null,e()}},function(e){r.next={Zd:e},r=r.next,t.port2.postMessage(0)}}return function(e){aa.setTimeout(e,0)}}eZ&&(eZ.appVersion||"").indexOf("X11"),Ta("Android"),fH(),Ta("iPad"),Ta("iPod"),fH()||Ta("iPad")||Ta("iPod"),Sa.toLowerCase().indexOf("kaios");var nH=cH(32),oH=!1,pH=!1;function qH(){oH=!0,pH=!1;for(var e=0;;){var t=nH.pop();if(!(null!=t&&(t.A?t.A():t.call(null),1024>e)))break;e+=1}return oH=!1,0r)return e;e:for(;;){var o=rMath.random()&&15>r;)r+=1;if(r>this.level){for(var i=this.level+1;i<=r+1;)n[i]=this.Hc,i+=1;this.level=r}for(e=FH(e,t,Array(r)),t=0;;){if(!(t<=this.level))return null;r=n[t].forward,tr)return x.h(t.key,e)?t:t.forward[0];var i;e:for(i=t;;){var o=re)break e;i=o}n(i)?(--r,t=i):--r}},h.floorEntry=function(e){for(var t=this.Hc,r=this.level;;){if(0>r)return t===this.Hc?null:t;var i;e:for(i=t;;){var o=re)break e;i=o}n(i)?(--r,t=i):--r}},h.ca=function(){return function e(t){return new Df(null,(function(){return null==t?null:ke(new Q(null,2,5,S,[t.key,t.v],null),e(t.forward[0]))}),null,null)}(this.Hc.forward[0])},h.U=function(e,t,n){return Tj(t,(function(e){return Tj(t,bk,""," ","",n,e)}),"{",", ","}",n,this)};var r2=new HH;function s2(e){var t=(new Date).valueOf()+e,r=r2.ceilingEntry(t);if(r=n(n(r)?r.key=C(t)){e=II.h?II.h(this,t):II.call(null,this,t);var r=this.H+C(t),i=ah.h(this.ma,t),o=this.nd;return new GI(i,e,Md(e,r),r,o||t.nd)}return e=II.h?II.h(this,t):II.call(null,this,t),r=this.H+C(t),new GI(re.h(this.ma,t),e,Md(e,r),r,!0)}return e=qd(31,this.se)+xd(t),r=this.H+1,new GI(re.h(this.ma,t),e,Md(e,r),r,this.nd)},h.pa=cb,h.U=function(e,t,n){return Tc(z(this),t,n)};var HI=JI(F);function DI(e){return e instanceof GI}function FI(e){return DI(e)?C(e.ma):C(e)}var KI=function e(t,n){for(;;){if(!z(n))return t;var r=A(n);DI(r)?(t=e.h?e.h(t,r):e.call(null,t,r),n=B(n)):(t=Pf.h(t,r),n=B(n))}};function LI(e,t,n,r){this.ma=e,this.Gc=t,this.H=n,this.flat=r,this.B=167142175,this.M=2048}function MI(e){return yb(r(e.flat))&&(Ig.h(e.flat,(function(){var t=r(e.ma);return ze(t=Zc(KI(Xc(F),t)),Ae(r(e.ma)))})),Ig.h(e.ma,(function(){return null}))),r(e.flat)}function NI(e){return n(e.nd)?n(e.Yd)?Eh(z(e)):new LI(Fg(e.ma),e.Gc,e.H,Fg(null)):e.ma}function OI(e,t,r){var i=n(t.ignoreCase)?"gi":"g";return i=n(t.multiline)?[i,"m"].join(""):i,e.replace(new RegExp(t.source,n(t.unicode)?[i,"u"].join(""):i),r)}function PI(e){return function(){function t(e){var t=null;if(0=t||t>=2+C(e)?re.h(Eh(ke("",Ng.h(p,z(e)))),""):n(of?Hc(1,t):nf.call(null,1,t))?new Q(null,1,5,S,[e],null):n(of?Hc(2,t):nf.call(null,2,t))?new Q(null,2,5,S,["",e],null):(t-=2,re.h(Eh(ke("",Nh(Eh(Ng.h(p,z(e))),0,t))),e.substring(t)))}function TI(e,t,n){if("/(?:)/"===p.g(t))t=SI(e,n);else if(1>n)t=Eh(p.g(e).split(t));else e:for(var r=n,i=F;;){if(1===r){t=re.h(i,e);break e}var o=Qj(t,e);if(null==o){t=re.h(i,e);break e}var l=e.indexOf(o);o=e.substring(l+C(o)),--r,i=re.h(i,e.substring(0,l)),e=o}if(0===n&&1=e?["0000",p.g(e.toString(16))].join("").substr(-4):e.toString(16)}function aJ(e){var t=bg(e);return e=u.h(t,ft),t=u.h(t,mr),x.h(e,t)?["%x",p.g($I(e))].join(""):["%x",p.g($I(e)),"-",p.g($I(t))].join("")}function WI(e){switch(arguments.length){case 1:return VI(arguments[0],!1);case 2:return VI(arguments[0],arguments[1]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}}function VI(e,t){var r=bg(e);e=u.h(r,Eq);var i,o=u.h(r,Qr),l=u.h(r,Rr),s=u.h(r,Ls),a=u.h(r,Y);if(n((i=yb(t))?jt.g(r):i))return["<",p.g(VI(r,!0)),">"].join("");switch(a=a instanceof w?a.W:null){case"epsilon":return"ε";case"opt":return[p.g(XI(t,e)),"?"].join("");case"plus":return[p.g(XI(t,e)),"+"].join("");case"star":return[p.g(XI(t,e)),"*"].join("");case"rep":return cg.h(Jq.g(r),EC.g(r))?[p.g(XI(t,e)),"{",p.g(Jq.g(r)),",",p.g(EC.g(r)),"}"].join(""):[p.g(XI(t,e)),"{",p.g(Jq.g(r)),"}"].join("");case"alt":return RI(" | ",Ng.h(Bg(UI,new uj(null,new k(null,1,[yA,null],null),null),t),s));case"ord":return[p.g(UI(new uj(null,new k(null,1,[Hm,null],null),null),t,o))," / ",p.g(UI(new uj(null,new k(null,1,[Hm,null],null),null),t,l))].join("");case"cat":return RI(" ",Ng.h(Bg(UI,new uj(null,new k(null,2,[yA,null,Hm,null],null),null),t),s));case"string":var c=new Za;e=fb,o=eb,fb=!0,eb=function(e){return c.append(e)};try{gk(D([CB.g(r)]),kb())}finally{eb=o,fb=e}return p.g(c);case"string-ci":c=new Za,e=fb,o=eb,fb=!0,eb=function(e){return c.append(e)};try{gk(D([CB.g(r)]),kb())}finally{eb=o,fb=e}return p.g(c);case"char":return aJ(r);case"regexp":return ZI(RA.g(r));case"nt":return rf(p.g(bt.g(r)),1);case"look":return["&",p.g(XI(t,e))].join("");case"neg":return["!",p.g(XI(t,e))].join("");default:throw Error(["No matching clause: ",p.g(a)].join(""))}}function bJ(e,t){return x.h(Xv.g(Qn.g(t)),Co)?["<",Cf(e),"> = ",p.g(VI(t,!1))].join(""):[Cf(e)," = ",p.g(VI(t,!1))].join("")}function cJ(e){e=bg(e);var t=u.h(e,hr),n=u.h(e,Bp);return RI("\n",ke(bJ(n,t.g?t.g(n):t.call(null,n)),function e(t){return new Df(null,(function(){for(var r=t;;){if(!(r=z(r)))return null;if(Me(r)){var i=ed(r),o=C(i),l=Hf(o);e:for(var s=0;;){if(!(s=n?"^":Xf(p,Of.h(Tg(n-1," "),new Q(null,1,5,S,["^"],null))):null])),n=zj(Ng.h(EF,Xg.h(rz,t))),e=zj(Ng.h(EF,Xg.h(xg(rz),t))),0!==(r=C(n)+C(e))&&(x.h(1,r)?lk(D(["Expected:"])):lk(D(["Expected one of:"]))),n=z(n),r=null;for(var i=t=0;;)if(i=e))return null;if(65536<=e&&1114111>=e){const t=56320+(1023&e);return String.fromCharCode(55232+(e>>10))+String.fromCharCode(t)}return String.fromCharCode(e)}function MJ(e,t){const n=e.charCodeAt(t);if(55296<=n&&56319>=n&&t+1=e)return 55296<=n&&56319>=n&&56320<=e&&57343>=e?(n<<10)-56623104+(e-56320+65536):null}else if(56320<=n&&57343>=n&&0=e))return-(55296<=e&&56319>=e&&56320<=n&&57343>=n?(e<<10)-56623104+(n-56320+65536):0);return n}function NJ(e,t,n){var r=Y.g(e);switch(r=r instanceof w?r.W:null){case"nt":return OJ.j?OJ.j(e,t,n):OJ.call(null,e,t,n);case"alt":return PJ.j?PJ.j(e,t,n):PJ.call(null,e,t,n);case"cat":return QJ.j?QJ.j(e,t,n):QJ.call(null,e,t,n);case"string":return RJ.j?RJ.j(e,t,n):RJ.call(null,e,t,n);case"string-ci":return SJ.j?SJ.j(e,t,n):SJ.call(null,e,t,n);case"char":return TJ.j?TJ.j(e,t,n):TJ.call(null,e,t,n);case"epsilon":return UJ.j?UJ.j(e,t,n):UJ.call(null,e,t,n);case"opt":return VJ.j?VJ.j(e,t,n):VJ.call(null,e,t,n);case"plus":return WJ.j?WJ.j(e,t,n):WJ.call(null,e,t,n);case"rep":return XJ.j?XJ.j(e,t,n):XJ.call(null,e,t,n);case"star":return YJ.j?YJ.j(e,t,n):YJ.call(null,e,t,n);case"regexp":return ZJ.j?ZJ.j(e,t,n):ZJ.call(null,e,t,n);case"look":return $J.j?$J.j(e,t,n):$J.call(null,e,t,n);case"neg":return aK.j?aK.j(e,t,n):aK.call(null,e,t,n);case"ord":return bK.j?bK.j(e,t,n):bK.call(null,e,t,n);default:throw Error(["No matching clause: ",p.g(r)].join(""))}}function cK(e,t,n){var r=Y.g(e);switch(r=r instanceof w?r.W:null){case"nt":return dK.j?dK.j(e,t,n):dK.call(null,e,t,n);case"alt":return eK.j?eK.j(e,t,n):eK.call(null,e,t,n);case"cat":return fK.j?fK.j(e,t,n):fK.call(null,e,t,n);case"string":return gK.j?gK.j(e,t,n):gK.call(null,e,t,n);case"string-ci":return hK.j?hK.j(e,t,n):hK.call(null,e,t,n);case"char":return iK.j?iK.j(e,t,n):iK.call(null,e,t,n);case"epsilon":return jK.j?jK.j(e,t,n):jK.call(null,e,t,n);case"opt":return kK.j?kK.j(e,t,n):kK.call(null,e,t,n);case"plus":return lK.j?lK.j(e,t,n):lK.call(null,e,t,n);case"rep":return mK.j?mK.j(e,t,n):mK.call(null,e,t,n);case"star":return nK.j?nK.j(e,t,n):nK.call(null,e,t,n);case"regexp":return oK.j?oK.j(e,t,n):oK.call(null,e,t,n);case"look":return pK.j?pK.j(e,t,n):pK.call(null,e,t,n);case"neg":return aK.j?aK.j(e,t,n):aK.call(null,e,t,n);case"ord":return qK.j?qK.j(e,t,n):qK.call(null,e,t,n);default:throw Error(["No matching clause: ",p.g(r)].join(""))}}function rK(e,t,n,r,i){this.index=e,this.reason=t,this.D=n,this.m=r,this.G=i,this.B=2230716170,this.M=139264}h=rK.prototype,h.na=function(e,t){return this.P(null,t,null)},h.P=function(e,t,n){switch(t instanceof w?t.W:null){case"index":return this.index;case"reason":return this.reason;default:return u.j(this.m,t,n)}},h.Ka=function(e,t,n){return Nb.j((function(e,n){var r=G(n,0,null);return n=G(n,1,null),t.j?t.j(e,r,n):t.call(null,e,r,n)}),n,this)},h.U=function(e,t,n){return Tj(t,(function(e){return Tj(t,bk,""," ","",n,e)}),"#instaparse.gll.Failure{",", ","}",n,Of.h(new Q(null,2,5,S,[new Q(null,2,5,S,[Gm,this.index],null),new Q(null,2,5,S,[In,this.reason],null)],null),this.m))},h.xa=function(){return new Yh(this,2,new Q(null,2,5,S,[Gm,In],null),n(this.m)?nd(this.m):eg())},h.R=function(){return this.D},h.da=function(){return 2+C(this.m)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=-1140991288^Pd(this)},h.aa=function(e,t){return null!=t&&this.constructor===t.constructor&&x.h(this.index,t.index)&&x.h(this.reason,t.reason)&&x.h(this.m,t.m)},h.bb=function(e,t){return M(new uj(null,new k(null,2,[Gm,null,In,null],null),null),t)?we.h(Bc(ah.h(P,this),this.D),t):new rK(this.index,this.reason,this.D,dg(we.h(this.m,t)),null)},h.za=function(e,t){switch(t instanceof w?t.W:null){case"index":case"reason":return!0;default:return M(this.m,t)}},h.ja=function(e,t,r){return n(O.h?O.h(Gm,t):O.call(null,Gm,t))?new rK(r,this.reason,this.D,this.m,null):n(O.h?O.h(In,t):O.call(null,In,t))?new rK(this.index,r,this.D,this.m,null):new rK(this.index,this.reason,this.D,I.j(this.m,t,r),null)},h.ca=function(){return z(Of.h(new Q(null,2,5,S,[new xh(Gm,this.index),new xh(In,this.reason)],null),this.m))},h.S=function(e,t){return new rK(this.index,this.reason,t,this.m,this.G)},h.ia=function(e,t){return Le(t)?this.ja(null,Zb(t,0),Zb(t,1)):Nb.j(Xb,this,t)},h.pa=cb,h.U=function(e,t){var n=this;return Qc(t,function(){var e=new Za,t=fb,r=eb;fb=!0,eb=function(t){return e.append(t)};try{eJ(n)}finally{eb=r,fb=t}return p.g(e)}())};var sK=Db(new rK(null,null,null,null,null));function tK(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w){this.ta=e,this.text=t,this.Ya=n,this.Qa=r,this.Xa=i,this.stack=o,this.Wa=l,this.Sa=s,this.Va=a,this.Ua=u,this.va=c,this.Za=h,this.Ra=d,this.$a=f,this.D=p,this.m=g,this.G=w,this.B=2230716170,this.M=139264}function uK(e,t,n,r,i){return new tK(e,t,n,r,i,Fg(F),Fg(F),Fg(0),Fg(mj(gf)),Fg(P),Fg(P),Fg(null),Fg(new rK(0,F,null,null,null)),!1,null,null,null)}function vK(e,t){return new k(null,2,[xA,e,Gm,t],null)}function wK(e,t){return x.h(C(TD.g(e)),Gm.g(t))}function xK(e,t,n,r,i,o,l){this.ic=e,this.$b=t,this.results=n,this.ac=r,this.D=i,this.m=o,this.G=l,this.B=2230716170,this.M=139264}function yK(e,t){return Ig.j(Uw.g(e),re,t)}function zK(e,t,n){function i(){return t.g?t.g(n):t.call(null,n)}var o=Dq.g(e),l=Gm.g(n);l=new Q(null,2,5,S,[t,l],null);var s=u.j(r(o),l,0);s>r(Wr.g(e))?Ig.j(tw.g(e),re,i):Ig.j(Uw.g(e),re,i),Ig.F(o,I,l,s+1)}function AK(e,t){return n(t=(e=r(e=Mu.g(e))).g?e.g(t):e.call(null,t))?0=C(o))return KK(n,new Q(null,2,5,S,[t,e],null),t,new k(null,2,[Y,bB,EF,new k(null,3,[Kt,!0,ft,r,mr,i],null)],null));if(65535>=i)return r<=(o=o.charCodeAt(t))&&o<=i?FK(n,new Q(null,2,5,S,[t,e],null),vK(p.g(hf(o)),t+1)):KK(n,new Q(null,2,5,S,[t,e],null),t,new k(null,2,[Y,bB,EF,new k(null,3,[Kt,!0,ft,r,mr,i],null)],null));var l=LJ(o=MJ(o,0|t));return r<=o&&o<=i?FK(n,new Q(null,2,5,S,[t,e],null),vK(l,t+C(l))):KK(n,new Q(null,2,5,S,[t,e],null),t,new k(null,2,[Y,bB,EF,new k(null,3,[Kt,!0,ft,r,mr,i],null)],null))}function iK(e,t,n){var r=ft.g(e),i=mr.g(e),o=TD.g(n),l=C(o);if(t>=C(o))return KK(n,new Q(null,2,5,S,[t,e],null),t,new k(null,2,[Y,bB,EF,new k(null,3,[Kt,!0,ft,r,mr,i],null)],null));if(65535>=i)return o=o.charCodeAt(t),x.h(t+1,l)&&r<=o&&o<=i?FK(n,new Q(null,2,5,S,[t,e],null),vK(p.g(hf(o)),l)):KK(n,new Q(null,2,5,S,[t,e],null),t,new k(null,2,[Y,bB,EF,new k(null,3,[Kt,!0,ft,r,mr,i],null)],null));var s=LJ(o=MJ(o,0|t));return x.h(t+C(s),l)&&r<=o&&o<=i?FK(n,new Q(null,2,5,S,[t,e],null),vK(s,l)):KK(n,new Q(null,2,5,S,[t,e],null),t,new k(null,3,[Y,bB,EF,new k(null,3,[Kt,!0,ft,r,mr,i],null),rz,!0],null))}function XK(e,t){return n(n(e=new RegExp(e.source,["g",hJ(e)].join("")).exec(t))?0===e.index:e)?A(e):null}function ZJ(e,t,r){var i=RA.g(e),o=zn.g(r);return n(o=XK(i,o=rf?o.substring(t):qf.call(null,o,t)))?FK(r,new Q(null,2,5,S,[t,e],null),vK(o,t+C(o))):KK(r,new Q(null,2,5,S,[t,e],null),t,new k(null,2,[Y,RA,EF,i],null))}function oK(e,t,r){var i=RA.g(e),o=zn.g(r),l=rf?o.substring(t):qf.call(null,o,t);l=XK(i,l);var s=C(o)-t;return n(n(l)?x.h(C(l),s):l)?FK(r,new Q(null,2,5,S,[t,e],null),vK(l,C(o))):KK(r,new Q(null,2,5,S,[t,e],null),t,new k(null,3,[Y,RA,EF,i,rz,!0],null))}function QJ(e,t,n){var r=Ls.g(e);return GK(n,new Q(null,2,5,S,[t,A(r)],null),QK(HI,B(r),new Q(null,2,5,S,[t,e],null),n))}function fK(e,t,n){var r=Ls.g(e);return GK(n,new Q(null,2,5,S,[t,A(r)],null),RK(HI,B(r),new Q(null,2,5,S,[t,e],null),n))}function WJ(e,t,n){var r=Eq.g(e);return GK(n,new Q(null,2,5,S,[t,r],null),SK(HI,r,t,new Q(null,2,5,S,[t,e],null),n))}function lK(e,t,n){var r=Eq.g(e);return GK(n,new Q(null,2,5,S,[t,r],null),TK(HI,r,t,new Q(null,2,5,S,[t,e],null),n))}function XJ(e,t,n){var r=Eq.g(e),i=Jq.g(e),o=EC.g(e);return 0===i?(FK(n,new Q(null,2,5,S,[t,e],null),vK(null,t)),1<=o?GK(n,new Q(null,2,5,S,[t,r],null),UK(HI,0,r,1,o,t,new Q(null,2,5,S,[t,e],null),n)):null):GK(n,new Q(null,2,5,S,[t,r],null),UK(HI,0,r,i,o,t,new Q(null,2,5,S,[t,e],null),n))}function mK(e,t,n){var r=Eq.g(e),i=Jq.g(e),o=EC.g(e);return 0===i?(FK(n,new Q(null,2,5,S,[t,e],null),vK(null,t)),1<=o?GK(n,new Q(null,2,5,S,[t,r],null),VK(HI,0,r,1,o,t,new Q(null,2,5,S,[t,e],null),n)):null):GK(n,new Q(null,2,5,S,[t,r],null),VK(HI,0,r,i,o,t,new Q(null,2,5,S,[t,e],null),n))}function YJ(e,t,n){var r=Eq.g(e);return GK(n,new Q(null,2,5,S,[t,r],null),SK(HI,r,t,new Q(null,2,5,S,[t,e],null),n)),FK(n,new Q(null,2,5,S,[t,e],null),vK(null,t))}function nK(e,t,n){var r=Eq.g(e);return x.h(t,C(TD.g(n)))?FK(n,new Q(null,2,5,S,[t,e],null),vK(null,t)):GK(n,new Q(null,2,5,S,[t,r],null),TK(HI,r,t,new Q(null,2,5,S,[t,e],null),n))}function PJ(e,t,n){var r=Ls.g(e);r=z(r);for(var i=null,o=0,l=0;;)if(ln))break e;t[n]=A(r),n+=1,r=B(r)}else for(n=0;1>n;)t[n]=null,n+=1}return new yL(e,t)}function BL(e,t,r,i){var o=C(t);return e=n(e)?0:10this.td){var e=this.ka.charAt(this.td);return this.td+=1,e}return null},xL.prototype.Bc=function(){return this.bg>this.td?this.ka.charAt(this.td):null},yL.prototype.Ca=function(){var e=this.Sbe?'..."':'"',i=t.length;return['"',p.g(t.substring(0,e"})),CL.C(null,bi,(function(){return""})),CL.C(null,Ji,(function(){return""})),CL.C(null,wf,(function(){return""})),CL.C(null,Df,(function(){return""})),CL.C(null,Nl,(function(){return"nil"})),CL.C(null,Xx,(function(e,t){return BL(e,t,"(",")")})),CL.C(null,BC,(function(e,t){var r=C(t),i=n(e)?0:r;return BL(e,t=Xf(Of,Og.h(i,t)),"{",r>i?"...}":"}")})),CL.C(null,pt,(function(e,t){return BL(e,t,"#{","}")})),CL.C(null,hA,(function(e,t){return BL(e,t,"[","]")})),CL.C(null,Zk,(function(e,t){return hk.l(D([Db(t)]))}));var nM=/^([-+]?)(?:(0)|([1-9][0-9]*)|0[xX]([0-9A-Fa-f]+)|0([0-7]+)|([1-9][0-9]?)[rR]([0-9A-Za-z]+)|0[0-9]+)(N)?$/,oM=/([-+]?[0-9]+)\/([0-9]+)/,pM=/([-+]?[0-9]+(\.[0-9]*)?([eE][-+]?[0-9]+)?)(M)?/;function qM(e,t){return G(e=Qj(e,t),0,null)===t}function rM(e){if(qM(nM,e)){var t=Eh(Qj(nM,e));if(null!=(t.g?t.g(2):t.call(null,2)))e=0;else{e="-"===(t.g?t.g(1):t.call(null,1));var r=(t=null!=(t.g?t.g(3):t.call(null,3))?new Q(null,2,5,S,[t.g?t.g(3):t.call(null,3),10],null):null!=(t.g?t.g(4):t.call(null,4))?new Q(null,2,5,S,[t.g?t.g(4):t.call(null,4),16],null):null!=(t.g?t.g(5):t.call(null,5))?new Q(null,2,5,S,[t.g?t.g(5):t.call(null,5),8],null):null!=(t.g?t.g(7):t.call(null,7))?new Q(null,2,5,S,[t.g?t.g(7):t.call(null,7),parseInt(t.g?t.g(6):t.call(null,6))],null):new Q(null,2,5,S,[null,null],null)).g?t.g(0):t.call(null,0);null==r?e=null:(t=parseInt(r,t.g?t.g(1):t.call(null,1)),e=e?-1*t:t,e=n(isNaN(e))?null:e)}}else qM(pM,e)?e=null!=((t=Eh(Qj(pM,e))).g?t.g(4):t.call(null,4))?parseFloat(t.g?t.g(1):t.call(null,1)):parseFloat(e):qM(oM,e)?(e=(t=Eh(Qj(oM,e))).g?t.g(1):t.call(null,1),t=t.g?t.g(2):t.call(null,2),e=n(Qj(/^\+/,e))?e.substring(1):e,e=parseInt(e)/parseInt(t)):e=null;return e}function sM(e){if(""===e||!0===/:$/.test(e)||!0===/^::/.test(e))return null;var t=e.indexOf("/"),n=0r?YL(e,r.toString(16)):t:n(0==t.lastIndexOf("o",0))?3<--r?ZL(e,t):(r=DM(t,r,8),255>=parseInt(t.substring(1),8)?r:$L(e)):JL(e,D(["Unsupported character: ",t,"."]))}return aM(e)}function HM(e){return zL(e)?new Q(null,2,5,S,[e.Jd(null),e.Id(null)-1|0],null):null}function IM(e){return zL(e)?new Q(null,2,5,S,[e.Jd(null),e.Id(null)],null):null}var JM={},KM={},LM=!1;function MM(e,t,n,r,i){var o=LM;LM=!0;try{e:for(var l=HM(n),s=G(l,0,null),a=G(l,1,null),u=gL(t),c=Xc(F);;){var h=NM?NM(n,!1,JM,u,r,i):OM.call(null,n,!1,JM,u,r,i);if(h===KM){var d=Zc(c);break e}if(h===JM){d=ML(n,e,s,a,C(c));break e}c=Pf.h(c,h)}return d}finally{LM=o}}function PM(e,t,r,i){var o=HM(e);t=G(o,0,null),o=G(o,1,null);var l=MM(Xx,")",e,r,i);if(r=G(i=IM(e),0,null),i=G(i,1,null),l=Ee(l)?Id:Xf(N,l),n(t)){var s=pj.l;e=wL(e),e=s.call(pj,D([n(e)?new k(null,1,[CD,e],null):null,new k(null,4,[cw,t,rs,o,MG,r,so,i],null)]))}else e=null;return ze(l,e)}function QM(e,t,r,i){var o=HM(e);t=G(o,0,null),o=G(o,1,null),r=MM(hA,"]",e,r,i);var l=IM(e);if(i=G(l,0,null),l=G(l,1,null),n(t)){var s=pj.l;e=wL(e),e=s.call(pj,D([n(e)?new k(null,1,[CD,e],null):null,new k(null,4,[cw,t,rs,o,MG,i,so,l],null)]))}else e=null;return ze(r,e)}function RM(e,t,r,i){var o=HM(e);t=G(o,0,null),o=G(o,1,null);var l=MM(BC,"}",e,r,i),s=C(l),a=Lj(2,l),u=yj(a);return r=G(i=IM(e),0,null),i=G(i,1,null),!wg(s)&&NL(e,t,o,l),x.h(C(u),C(a))||kM(e,BC,a),l=s<=2*gi?ii(Ye(l)):Qi(Ye(l)),n(t)?(s=pj.l,e=wL(e),e=s.call(pj,D([n(e)?new k(null,1,[CD,e],null):null,new k(null,4,[cw,t,rs,o,MG,r,so,i],null)]))):e=null,ze(l,e)}function SM(e,t){for(var r=function(){var e=new Za;return e.append(t),e}(),i=e.Ca(null);;){if(n(function(){var e=kL(i);return e||(n(e=FM.g?FM.g(i):FM.call(null,i))?e:null==i)}())){var o=p.g(r);e.Hd(null,i);var l=rM(o);return n(l)?l:JL(e,D(["Invalid number: ",o,"."]))}o=function(){var e=r;return e.append(i),e}(),l=e.Ca(null),r=o,i=l}}function TM(e){var t=e.Ca(null);switch(t){case"t":return"\t";case"r":return"\r";case"n":return"\n";case"\\":return"\\";case'"':return'"';case"b":return"\b";case"f":return"\f";case"u":return t=e.Ca(null),-1===parseInt(0|t,16)?PL(e,t):EM(e,t,16,4,!0);default:return lL(t)?255<(0|(t=EM(e,t,8,3,!1)))?$L(e):t:bM(e,t)}}function UM(e){for(var t=new Za,n=e.Ca(null);;){if(null==n)return UL(e,CB,D(['"',t]));switch(n){case"\\":var r=(o=void 0,(o=t).append(TM(e)),o),i=e.Ca(null);t=r,n=i;continue;case'"':return p.g(t);default:r=function(){var e=t;return e.append(n),e}(),i=e.Ca(null),t=r,n=i}}var o}function VM(e,t){var n=HM(e),r=G(n,0,null);if(n=G(n,1,null),null==(t=xM(e,zq,t)))return null;switch(t){case"nil":return null;case"true":return!0;case"false":return!1;case"/":return Ct;default:var i=sM(t);if(null!=i){if(t=Bd.h(i.$(null,0),i.$(null,1)),i=t.S,null==r)r=null;else{var o=wL(e);o=null==o?null:new k(null,1,[CD,o],null);var l=IM(e);e=G(l,0,null),l=G(l,1,null),r=pj.l(D([o,new k(null,4,[cw,r,rs,n,MG,e,so,l],null)]))}r=i.call(t,null,r)}else r=QL(e,zq,t);return r}}function WM(e){var t=e.Ca(null);if(kL(t))return cM(e);var r=sM(t=xM(e,bt,t));if(null!=r){var i=r.$(null,0);return r=r.$(null,1),":"===t.charAt(0)?null!=i?n(i=u.h(null,Bd.g(i.substring(1))))?Bf.h(p.g(i),r):QL(e,bt,[":",p.g(t)].join("")):n(i=null)?Bf.h(p.g(i),r.substring(1)):JL(e,D(["Invalid token: :",t])):Bf.h(i,r)}return QL(e,bt,[":",p.g(t)].join(""))}function XM(e){return function(t,n,r,i){return new se(null,e,new se(null,YM?YM(t,!0,null,r,i):OM.call(null,t,!0,null,r,i),null,1,null),2,null)}}function ZM(e,t,r,i){var o=HM(e);t=G(o,0,null),o=G(o,1,null);var l=mL(YM?YM(e,!0,null,r,i):OM.call(null,e,!0,null,r,i));return J(l)||dM(e,l),null!=(r=YM?YM(e,!0,null,r,i):OM.call(null,e,!0,null,r,i))&&(131072&r.B||cb===r.zd)?(e=n(n(t)?Qe(r):t)?I.l(l,cw,t,D([rs,o])):l,null!=r&&(262144&r.B||cb===r.Me)?ze(r,pj.l(D([Ae(r),e]))):r.K=e):eM(e,r)}function $M(e,t,r,i){var o=HM(e);t=G(o,0,null),o=n(o=G(o,1,null))?o-1|0:null;var l=MM(pt,"}",e,r,i);r=yj(l);var s=IM(e);return i=G(s,0,null),s=G(s,1,null),x.h(C(l),C(r))||JL(e,D([kM(e,pt,l)])),n(t)?(l=pj.l,e=wL(e),e=l.call(pj,D([n(e)?new k(null,1,[CD,e],null):null,new k(null,4,[cw,t,rs,o,MG,i,so,s],null)]))):e=null,ze(r,e)}function aN(e,t,n,r){return YM?YM(e,!0,null,n,r):OM.call(null,e,!0,null,n,r),e}function bN(e,t,n,r){return t=YM?YM(e,!0,null,n,r):OM.call(null,e,!0,null,n,r),x.h(bo,t)?Number.NaN:x.h(kD,t)?Number.NEGATIVE_INFINITY:x.h(Em,t)?Number.POSITIVE_INFINITY:JL(e,D([["Invalid token: ##",p.g(t)].join("")]))}var cN=new uj(null,new k(null,2,[lt,null,Mv,null],null),null);function dN(e,t,n){e===JM&&lM(t,(e=0>n)?n:e)}function eN(e,t,n,r){var i=fN;fN=!0;try{var o=NM?NM(t,!1,JM,")",n,r):OM.call(null,t,!1,JM,")",n,r);return dN(o,t,e),o===KM?KM:null}finally{fN=i}}var gN={};function hN(e,t,r,i){var o=zL(e)?uL(e):-1;e:for(var l=gN,s=null;;)if(l===gN){l=o,s=e;var a=r,c=i,h=NM?NM(s,!1,JM,")",a,c):OM.call(null,s,!1,JM,")",a,c);if(dN(h,s,l),x.h(h,KM))l=KM;else{var d=s,f=h;n(u.h(cN,f))&&JL(d,D(["Feature name ",f," is reserved"])),d=s,f=a,(h instanceof w?x.h(Zk,h)||M(u.h(f,Sy),h):JL(d,D(["Feature should be a keyword: ",h])))?(dN(a=NM?NM(s,!1,JM,")",a,c):OM.call(null,s,!1,JM,")",a,c),s,l),a===KM&&JL(s,D(0>l?["read-cond requires an even number of forms"]:["read-cond starting on line ",l," requires an even number of forms"])),l=a):l=n(l=eN(l,s,a,c))?l:gN}if(l===KM){r=KM;break e}s=null}else{if(s===KM){r=l;break e}s=eN(o,e,r,i)}return r===KM?e:n(t)?null!=r&&(16777216&r.B||cb===r.Je)?(t=Ye(r),ma(La,i,0,0).apply(null,t),e):JL(e,D(["Spliced form list in read-cond-splicing must implement ISequential"])):r}function iN(e,t,r,i){if(yb(function(){if(n(r)){var e=os.g(r),t=new uj(null,new k(null,2,[JA,null,uu,null],null),null);return t.g?t.g(e):t.call(null,e)}return r}()))throw cl("Conditional read not allowed",new k(null,1,[X,eo],null));var o=e.Ca(null);if(!n(o))return aM(e);if(o=(t=x.h(o,"@"))?e.Ca(null):o,t&&(n(LM)||JL(e,D(["cond-splice not in list"]))),!n(o=kL(o)?mM(e):o))return aM(e);if(cg.h(o,"("))throw cl("read-cond body must be a list",new k(null,1,[X,eo],null));var l=fN;fN=function(){var e=fN;return n(e)?e:x.h(JA,os.g(r))}();try{return n(fN)?iL(PM(e,o,r,i),t):hN(e,t,r,i)}finally{fN=l}}var jN=null;function kN(e){return Bd.g([-1===e?"rest":["p",p.g(e)].join(""),"__",p.g(Ig.h(nL,Rd)),"#"].join(""))}function lN(e,t,r,i){if(n(jN))throw cl("Nested #()s are not allowed",new k(null,1,[X,nq],null));t=jN,jN=lj();try{tL(e,"(");var o=YM?YM(e,!0,null,r,i):OM.call(null,e,!0,null,r,i),l=Pc(jN);if(l){var s=pc(A(l));e:{e=1;for(var a=Xc(F);;){if(e>s){var c=Zc(a);break e}r=e+1;var h=(i=Pf).h;l=a;var d=u.h(jN,e),f=n(d)?d:kN(e),p=h.call(i,l,f);e=r,a=p}}var g=n(jN.call(null,-1))?re.l(c,hl,D([jN.call(null,-1)])):c}else g=F;return new se(null,wl,new se(null,g,new se(null,o,null,1,null),2,null),3,null)}finally{jN=t}}function mN(e){if(n(jN)){var t=jN.call(null,e);return n(t)||(t=kN(e),jN=I.j(jN,e,t)),t}throw cl("Arg literal not in #()",new k(null,1,[X,nq],null))}function nN(e,t,n,r){if(null==jN)return VM(e,t);if(kL(t=e.Bc(null))||vM(t)||null==t)return mN(1);if(x.h(t,"&"))return e.Ca(null),mN(-1);if(Se(e=YM?YM(e,!0,null,n,r):OM.call(null,e,!0,null,n,r)))return mN(e);throw cl("Arg literal must be %, %& or %integer",new k(null,1,[X,nq],null))}var oN=null;function pN(e,t,r,i){return n(t=e.Bc(null))?x.h("@",t)?(t=XM(RE),e.Ca(null),e=t(e,"@",r,i)):e=XM(cD)(e,"~",r,i):e=null,e}function qN(e){e=z(e);for(var t=Xc(F);;){if(!e)return z(Zc(t));var n=A(e);e=B(e),t=Pf.h(Pf.h(t,pc(n)),qc(n))}}function rN(e){if(yb(oN))throw cl("Gensym literal not in syntax-quote",new k(null,1,[X,nq],null));var t=u.h(oN,e);return n(t)||(t=Bd.g([sf(Cf(e),0,Cf(e).length-1),"__",p.g(Ig.h(nL,Rd)),"__auto__"].join("")),oN=I.j(oN,e,t)),t}function sN(e,t){return((n=null!=e&&!!(262144&e.B||cb===e.Me))?z(we.l(Ae(e),cw,D([rs,MG,so,CD,$s]))):n)?new se(null,Rx,new se(null,t,new se(null,function(){var t=Ae(e);return tN.g?tN.g(t):tN.call(null,t)}(),null,1,null),2,null),3,null):t;var n}function uN(e,t){e:{t=z(t);for(var r=Xc(F);;){if(!t){t=z(Zc(r));break e}var i=A(t);r=Pf.h(r,Qe(i)&&x.h(A(i),cD)?new se(null,Kq,new se(null,oe(i),null,1,null),2,null):Qe(i)&&x.h(A(i),RE)?oe(i):new se(null,Kq,new se(null,tN.g?tN.g(i):tN.call(null,i),null,1,null),2,null)),t=B(t)}}return t=new se(null,Ep,new se(null,ke(wy,t),null,1,null),2,null),n(e)?new se(null,Rz,new se(null,e,new se(null,t,null,1,null),2,null),3,null):t}function vN(e){throw cl("resolve-symbol is not implemented",new k(null,1,[GA,e],null))}function tN(e){if(gl(e))var t=new se(null,Bl,new se(null,e,null,1,null),2,null);else if(e instanceof Ad)t=new se(null,Bl,new se(null,n((r=yb(zf(e)))?Ea(Cf(e),"#"):r)?rN(e):function(){var t=p.g(e);return n(Ea(t,"."))?(t=Bd.g(t.substring(0,t.length-1)),Bd.g([p.g(vN.call(null,t)),"."].join(""))):vN.call(null,e)}(),null,1,null),2,null);else if(Qe(e)&&x.h(A(e),cD))t=oe(e);else{if(Qe(e)&&x.h(A(e),RE))throw cl("unquote-splice not in list",new k(null,1,[X,nq],null));if(Fe(e))if(null!=e&&(67108864&e.B||cb===e.Lg))t=e;else if(J(e))t=uN(16<=C(e)?JE:MD,qN(e));else if(Le(e))t=new se(null,ru,new se(null,uN(null,e),null,1,null),2,null);else if(Ge(e))t=uN(nv,e);else{if(!Qe(e)&&!tf(e))throw cl("Unknown Collection type",new k(null,1,[X,rF],null));t=function(){var t=z(e);return t?uN(null,t):N(Tx)}()}else t=e instanceof w||"number"==typeof e||"string"==typeof e||null==e||e instanceof Boolean||!0===e||!1===e||e instanceof RegExp?e:new se(null,Bl,new se(null,e,null,1,null),2,null)}var r;return sN(e,t)}function wN(e,t,n,r){t=oN,oN=P;try{return tN(YM?YM(e,!0,null,n,r):OM.call(null,e,!0,null,n,r))}finally{oN=t}}function xN(e,t,i,o){var l=HM(e);t=G(l,0,null),l=G(l,1,null);var s,a=xM(e,oG,rL(e)),c=x.h(a,":")?null.name:x.h(":",A(a))?function(){var e=null==a?null:a.substring(1);if(null==(e=null==(e=null==(e=null==e?null:sM(e))?null:pL(e))?null:Bd.g(e)))e=null;else{var t=u.h(null,e);if(n(t))e=t;else{if(null==Ml&&(Ml=Fg(P)),null!=(t=u.h(r(Ml),e)))e=t;else{t=p.g(e);for(var i=p.g(t),o=new Za,l=0;l(){}\\[\\]+*?:=|'\"#&!;./]+"))])),wJ.l(D([EJ(xJ("<")),HN,BJ(Os),HN,EJ(xJ(">"))])),wJ.l(D([AJ(FN),sJ(wJ.l(D([BJ(EA),AJ(FN)])))])),uJ.l(D([wJ.l(D([EJ(xJ("{")),HN,BJ(Iu),HN,EJ(xJ("}"))])),wJ.l(D([BJ(tG),HN,EJ(xJ("*"))]))])),uJ.l(D([AJ(BN),AJ(DN)])),jJ(wJ.l(D([HN,rJ(BJ(FF))]))),wJ.l(D([EJ(xJ("<")),HN,BJ(Iu),HN,EJ(xJ(">"))])),wJ.l(D([EJ(xJ("(")),HN,BJ(Iu),HN,EJ(xJ(")"))])),jJ(uJ.l(D([BJ(Hm),BJ(yA)]))),uJ.l(D([AJ(CN),AJ(EN)])),jJ(uJ.l(D([BJ(Os),BJ(CB),BJ(RA),BJ(BA),BJ(cF),BJ(gu),BJ(Cn),BJ(jt),BJ(ir)]))),wJ.l(D([xJ("(*"),BJ(YF),xJ("*)")])),wJ.l(D([BJ(tG),HN,EJ(xJ("+"))])),uJ.l(D([xJ("Epsilon"),xJ("epsilon"),xJ("EPSILON"),xJ("eps"),xJ("ε")])),wJ.l(D([AJ(GN),sJ(wJ.l(D([BJ(EA),AJ(GN)])))])),jJ(uJ.l(D([BJ(Nn),BJ(Iu)]))),uJ.l(D([wJ.l(D([EJ(xJ("[")),HN,BJ(Iu),HN,EJ(xJ("]"))])),wJ.l(D([BJ(tG),HN,EJ(xJ("?"))]))]))]));function JN(e){for(var t=z(e),r=F;;){var i=A(t);if(!n(i))return Xf(p,r);switch(i){case"\\":var o=oe(t);if(n(o)){x.h(o,"'")?(t=Pg(2,t),r=re.h(r,o)):(t=Pg(2,t),r=re.l(r,i,D([o])));continue}return fJ(D(["Encountered backslash character at end of string: ",e]));case'"':t=B(t),r=re.l(r,"\\",D(['"']));continue;default:t=B(t),r=re.h(r,i)}}}var KN=r(new Cd((function(){return UM}),ls,Ri([ZE,Rs,Yo,CD,so,rs,cw,MG,oo,KC,wD],[!0,xE,WF,"cljs/tools/reader.cljs",20,1,305,305,N(new Q(null,4,5,S,[ze(Qp,new k(null,1,[Y,Gn],null)),Qt,Om,Yr],null)),null,n(UM)?UM.md:null])));function LN(e){return e=JN(e=sf(e,1,C(e)-1)),e=AL(e=[p.g(e),'"'].join("")),KN.F?KN.F(e,null,null,null):KN.call(null,e,null,null,null)}function MN(e){return Sj(e=JN(e=sf(e,2,C(e)-1)))}var NN=function e(t){for(;;){var n=A.g?A.g(t):A.call(null,t);switch(n=n instanceof w?n.W:null){case"rule":var r=G(n=B.g?B.g(t):B.call(null,t),0,null);return n=G(n,1,null),x.h(A.g?A.g(r):A.call(null,r),wx)?new Q(null,2,5,S,[Bf.g(function(){var e=pe.g?pe.g(r):pe.call(null,r);return pe.g?pe.g(e):pe.call(null,e)}()),jJ(e.g?e.g(n):e.call(null,n))],null):new Q(null,2,5,S,[Bf.g(pe.g?pe.g(r):pe.call(null,r)),e.g?e.g(n):e.call(null,n)],null);case"nt":return BJ(Bf.g(pe.g?pe.g(t):pe.call(null,t)));case"alt":return Xf(uJ,Ng.h(e,B.g?B.g(t):B.call(null,t)));case"ord":return Xf(vJ,Ng.h(e,B.g?B.g(t):B.call(null,t)));case"paren":t=pe.g?pe.g(t):pe.call(null,t);continue;case"hide":return EJ(function(){var n=pe.g?pe.g(t):pe.call(null,t);return e.g?e.g(n):e.call(null,n)}());case"cat":return Xf(wJ,Ng.h(e,B.g?B.g(t):B.call(null,t)));case"string":return AN(LN(pe.g?pe.g(t):pe.call(null,t)),!1);case"regexp":return AJ(MN(pe.g?pe.g(t):pe.call(null,t)));case"opt":return qJ(function(){var n=pe.g?pe.g(t):pe.call(null,t);return e.g?e.g(n):e.call(null,n)}());case"star":return sJ(function(){var n=pe.g?pe.g(t):pe.call(null,t);return e.g?e.g(n):e.call(null,n)}());case"plus":return rJ(function(){var n=pe.g?pe.g(t):pe.call(null,t);return e.g?e.g(n):e.call(null,n)}());case"look":return CJ(function(){var n=pe.g?pe.g(t):pe.call(null,t);return e.g?e.g(n):e.call(null,n)}());case"neg":return DJ(function(){var n=pe.g?pe.g(t):pe.call(null,t);return e.g?e.g(n):e.call(null,n)}());case"epsilon":return pJ;default:throw Error(["No matching clause: ",p.g(n)].join(""))}}},ON=function e(t){for(;;){var n=Y.g(t);switch(n=n instanceof w?n.W:null){case"nt":return new Q(null,1,5,S,[bt.g(t)],null);case"string":case"string-ci":case"char":case"regexp":case"epsilon":return F;case"opt":case"plus":case"star":case"look":case"neg":case"rep":t=Eq.g(t);continue;case"alt":case"cat":return Wg(e,D([Ls.g(t)]));case"ord":return Wg(e,D([new Q(null,2,5,S,[Qr.g(t),Rr.g(t)],null)]));default:throw Error(["No matching clause: ",p.g(n)].join(""))}}};function PN(e){for(var t=yj(di(e)),r=z(zj(Wg(ON,D([ei(e)])))),i=null,o=0,l=0;;)if(l=Number(n)?e:e=-1Number(e)?"-":0<=t.indexOf("+")?"+":0<=t.indexOf(" ")?" ":"",0<=Number(e)&&(r=o+r),isNaN(n)||r.length>=Number(n)||(r=isNaN(i)?Math.abs(Number(e)).toString():Math.abs(Number(e)).toFixed(i),e=Number(n)-r.length-o.length,0<=t.indexOf("-",0)?r=o+r+Xa(" ",e):(t=0<=t.indexOf("0",0)?"0":" ",r=o+Xa(t,e)+r)),r},SN.Dc.d=function(e,t,n,r,i,o,l,s){return SN.Dc.f(parseInt(e,10),t,n,r,0,o,l,s)},SN.Dc.i=SN.Dc.d,SN.Dc.u=SN.Dc.d;var TN=Ri([$z,Ju,vt,sy,Gw,Lz,uz,qC,MB,fq,Dx,Sw,Go,Xp,Aq,Qx],[xJ("\r\n"),xJ("\t"),uJ.l(D([uJ.l(D([xJ(" "),xJ("\t")])),sJ(wJ.l(D([xJ("\r\n"),uJ.l(D([xJ(" "),xJ("\t")]))])))])),xJ("\n"),AJ("[\\u0021-\\u007E]"),AJ("[0-9]"),xJ(" "),AJ("[0-9a-fA-F]"),AJ("[\\u0000-\\u001F|\\u007F]"),xJ('"'),uJ.l(D([xJ(" "),xJ("\t")])),xJ("\r"),AJ("[\\u0000-\\u00FF]"),AJ("[a-zA-Z]"),AJ("[\\u0001-\\u007F]"),AJ("[01]")]),UN=Ri([xm,Es,Hu,bu,av,Nr,iG,Tl,FF,gs,Lz,Oz,Iq,Jn,jt,ax,qC,vC,YE,zz,rA,px,fA,Br,RA,FB,jE,Js,hB,as,iu,MC,on],[new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,"!"],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,av],null),null,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,xm],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,"("],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,Br],null),new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,hB],null),new se(null,new k(null,2,[Y,CB,CB,")"],null),null,1,null),2,null),jt,!0],null),null,1,null),2,null),3,null),Qn,new k(null,1,[Xv,Co],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,"<"],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,jE],null),new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,hB],null),new se(null,new k(null,2,[Y,CB,CB,">"],null),null,1,null),2,null),jt,!0],null),null,1,null),2,null),3,null),Qn,new k(null,1,[Xv,Co],null)],null),pj.l(D([AJ("\\s+(?:;.*?\\u000D?\\u000A\\s*)*"),new k(null,1,[Qn,new k(null,2,[Xv,xx,gB,bu],null)],null)])),new k(null,3,[Y,Hm,Ls,new se(null,new k(null,2,[Y,Os,bt,gs],null),new se(null,new k(null,2,[Y,Os,bt,Es],null),new se(null,new k(null,2,[Y,Os,bt,jt],null),new se(null,new k(null,2,[Y,Os,bt,vC],null),new se(null,new k(null,2,[Y,Os,bt,Iq],null),new se(null,new k(null,2,[Y,Os,bt,Jn],null),new se(null,new k(null,2,[Y,Os,bt,iG],null),new se(null,new k(null,2,[Y,Os,bt,xm],null),new se(null,new k(null,2,[Y,Os,bt,RA],null),null,1,null),2,null),3,null),4,null),5,null),6,null),7,null),8,null),9,null),Qn,new k(null,1,[Xv,Co],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,Hu],null),new se(null,new k(null,3,[Y,Os,bt,ax,jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,Br],null),new se(null,new k(null,3,[Y,Os,bt,hB,jt,!0],null),null,1,null),2,null),3,null),4,null),Qn,new k(null,2,[Xv,xx,gB,Nr],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,"&"],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,av],null),null,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,iG],null)],null),new k(null,3,[Y,gu,Eq,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,CB,CB,"0"],null),new se(null,new k(null,2,[Y,CB,CB,"1"],null),null,1,null),2,null)],null),Qn,new k(null,2,[Xv,xx,gB,Tl],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,jE],null),new se(null,new k(null,3,[Y,Os,bt,ax,jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,Br],null),new se(null,new k(null,3,[Y,Os,bt,hB,jt,!0],null),null,1,null),2,null),3,null),4,null),Qn,new k(null,2,[Xv,xx,gB,FF],null)],null),new k(null,3,[Y,Os,bt,zz,Qn,new k(null,2,[Xv,xx,gB,gs],null)],null),pj.l(D([AJ("[0-9]"),new k(null,1,[Qn,new k(null,1,[Xv,Co],null)],null)])),new k(null,3,[Y,gu,Eq,new k(null,2,[Y,Os,bt,Lz],null),Qn,new k(null,2,[Xv,xx,gB,Oz],null)],null),new k(null,3,[Y,Hm,Ls,new se(null,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,'"',jt,!0],null),new se(null,new k(null,2,[Y,cF,Eq,pj.l(D([AJ("[\\u0020-\\u0021\\u0023-\\u007E]"),P]))],null),new se(null,new k(null,3,[Y,CB,CB,'"',jt,!0],null),null,1,null),2,null),3,null)],null),new se(null,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,"'",jt,!0],null),new se(null,new k(null,2,[Y,cF,Eq,pj.l(D([AJ("[\\u0020-\\u0026(-~]"),P]))],null),new se(null,new k(null,3,[Y,CB,CB,"'",jt,!0],null),null,1,null),2,null),3,null)],null),null,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,Iq],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,"%",jt,!0],null),new se(null,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,Os,bt,rA],null),new se(null,new k(null,2,[Y,Os,bt,px],null),new se(null,new k(null,2,[Y,Os,bt,iu],null),null,1,null),2,null),3,null)],null),null,1,null),2,null),Qn,new k(null,1,[Xv,Co],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,"<"],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,Br],null),new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,hB],null),new se(null,new k(null,2,[Y,CB,CB,">"],null),null,1,null),2,null),jt,!0],null),null,1,null),2,null),3,null),Qn,new k(null,2,[Xv,xx,gB,jt],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,Os,bt,hB,jt,!0],null),new se(null,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,CB,CB,"="],null),new se(null,new k(null,2,[Y,CB,CB,"=/"],null),null,1,null),2,null)],null),new se(null,new k(null,3,[Y,Os,bt,hB,jt,!0],null),null,1,null),2,null),3,null),Qn,new k(null,2,[Xv,xx,gB,ax],null)],null),pj.l(D([AJ("[0-9a-fA-F]"),new k(null,1,[Qn,new k(null,1,[Xv,Co],null)],null)])),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,"["],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,Br],null),new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,hB],null),new se(null,new k(null,2,[Y,CB,CB,"]"],null),null,1,null),2,null),jt,!0],null),null,1,null),2,null),3,null),Qn,new k(null,2,[Xv,xx,gB,vC],null)],null),new k(null,3,[Y,gu,Eq,new k(null,2,[Y,Os,bt,qC],null),Qn,new k(null,2,[Xv,xx,gB,YE],null)],null),pj.l(D([AJ("[a-zA-Z][-a-zA-Z0-9]*"),new k(null,1,[Qn,new k(null,1,[Xv,Co],null)],null)])),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,"b",jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,Tl],null),new se(null,new k(null,2,[Y,BA,Eq,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,gu,Eq,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,".",jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,Tl],null),null,1,null),2,null)],null)],null),new se(null,new k(null,2,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,"-"],null),new se(null,new k(null,2,[Y,Os,bt,Tl],null),null,1,null),2,null)],null),null,1,null),2,null)],null)],null),null,1,null),2,null),3,null),Qn,new k(null,2,[Xv,xx,gB,rA],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,"d",jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,MC],null),new se(null,new k(null,2,[Y,BA,Eq,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,gu,Eq,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,".",jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,MC],null),null,1,null),2,null)],null)],null),new se(null,new k(null,2,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,"-"],null),new se(null,new k(null,2,[Y,Os,bt,MC],null),null,1,null),2,null)],null),null,1,null),2,null)],null)],null),null,1,null),2,null),3,null),Qn,new k(null,2,[Xv,xx,gB,px],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,FB],null),new se(null,new k(null,2,[Y,cF,Eq,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,Os,bt,bu,jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,FB],null),null,1,null),2,null)],null)],null),null,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,fA],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,fA],null),new se(null,new k(null,2,[Y,cF,Eq,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,hB],null),new se(null,new k(null,2,[Y,CB,CB,"/"],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),3,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,fA],null),null,1,null),2,null)],null)],null),null,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,Br],null)],null),new k(null,3,[Y,Hm,Ls,new se(null,pj.l(D([AJ("#'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'"),P])),new se(null,pj.l(D([AJ('#\\"[^\\"\\\\]*(?:\\\\.[^\\"\\\\]*)*\\"'),P])),null,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,RA],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,BA,Eq,new k(null,2,[Y,Os,bt,as],null)],null),new se(null,new k(null,3,[Y,Os,bt,hB,jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,av],null),null,1,null),2,null),3,null),Qn,new k(null,2,[Xv,xx,gB,FB],null)],null),new k(null,3,[Y,Os,bt,zz,Qn,new k(null,2,[Xv,xx,gB,jE],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,Os,bt,hB,jt,!0],null),new se(null,new k(null,2,[Y,gu,Eq,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,Os,bt,FF],null),new se(null,new k(null,2,[Y,Os,bt,Nr],null),null,1,null),2,null)],null)],null),null,1,null),2,null),Qn,new k(null,1,[Xv,Co],null)],null),pj.l(D([AJ("\\s*(?:;.*?(?:\\u000D?\\u000A\\s*|$))*"),new k(null,1,[Qn,new k(null,2,[Xv,xx,gB,hB],null)],null)])),new k(null,3,[Y,Hm,Ls,new se(null,new k(null,2,[Y,Os,bt,Oz],null),new se(null,new k(null,2,[Y,az,Ls,new se(null,new k(null,2,[Y,BA,Eq,new k(null,2,[Y,Os,bt,Oz],null)],null),new se(null,new k(null,2,[Y,CB,CB,"*"],null),new se(null,new k(null,2,[Y,BA,Eq,new k(null,2,[Y,Os,bt,Oz],null)],null),null,1,null),2,null),3,null)],null),null,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,as],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,"x",jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,YE],null),new se(null,new k(null,2,[Y,BA,Eq,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,gu,Eq,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,".",jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,YE],null),null,1,null),2,null)],null)],null),new se(null,new k(null,2,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,"-"],null),new se(null,new k(null,2,[Y,Os,bt,YE],null),null,1,null),2,null)],null),null,1,null),2,null)],null)],null),null,1,null),2,null),3,null),Qn,new k(null,2,[Xv,xx,gB,iu],null)],null),new k(null,3,[Y,gu,Eq,new k(null,2,[Y,Os,bt,Lz],null),Qn,new k(null,2,[Xv,xx,gB,MC],null)],null),new k(null,3,[Y,Hm,Ls,new se(null,new k(null,2,[Y,Os,bt,Js],null),new se(null,new k(null,2,[Y,Os,bt,Br],null),null,1,null),2,null),Qn,new k(null,1,[Xv,Co],null)],null)]),VN=function e(t){for(var n=[],r=arguments.length,i=0;ir?YL(e,r.toString(16)):t:n(0==t.lastIndexOf("o",0))?3<--r?ZL(e,t):255<(0|(t=CO(t,r,8)))?$L(e):t:JL(e,D(["Unsupported character: ",t,"."]))}return aM(e)}function FO(e){return zL(e)?new Q(null,2,5,S,[uL(e),(0|vL(e))-1|0],null):null}function GO(e,t,r,i){var o=FO(r),l=G(o,0,null);o=G(o,1,null),t=gL(t);for(var s=Xc(F);;){var a=mM(r);if(n(a)||ML(r,e,l,o,C(s)),x.h(t,gL(a)))return Zc(s);var u=vO.g?vO.g(a):vO.call(null,a);n(u)?s=(a=u.j?u.j(r,a,i):u.call(null,r,a,i))!==r?Pf.h(s,a):s:(tL(r,a),s=(a=HO?HO(r,!0,null,i):IO.call(null,r,!0,null,i))!==r?Pf.h(s,a):s)}}function JO(e,t,n){return Ee(e=GO(Xx,")",e,n))?Id:Xf(N,e)}function KO(e,t,n){return GO(hA,"]",e,n)}function LO(e,t,n){var r=FO(e);t=G(r,0,null),r=G(r,1,null);var i=C(n=GO(BC,"}",e,n)),o=Lj(2,n),l=yj(o);return!wg(i)&&NL(e,t,r,n),x.h(C(l),C(o))||kM(e,BC,o),i<=2*gi?ii(Ye(n)):Qi(Ye(n))}function MO(e,t){for(var r=function(){var e=new Za;return e.append(t),e}(),i=rL(e);;){if(n(function(){var e=kL(i);return e||(n(e=vO.g?vO.g(i):vO.call(null,i))?e:null==i)}())){var o=p.g(r);tL(e,i);var l=rM(o);return n(l)?l:JL(e,D(["Invalid number: ",o,"."]))}o=function(){var e=r;return e.append(i),e}(),l=rL(e),r=o,i=l}}function NO(e){var t=rL(e);switch(t){case"t":return"\t";case"r":return"\r";case"n":return"\n";case"\\":return"\\";case'"':return'"';case"b":return"\b";case"f":return"\f";case"u":return t=rL(e),-1===parseInt(0|t,16)?PL(e,t):DO(e,t,16,4,!0);default:return lL(t)?255<(0|(t=DO(e,t,8,3,!1)))?$L(e):t:bM(e,t)}}function OO(e){for(var t=new Za,n=rL(e);;){var r=n;if(x.h(null,r))return UL(e,CB,D(['"',t]));if(x.h("\\",r)){o=void 0,(o=t).append(NO(e)),r=o;var i=rL(e);t=r,n=i}else{if(x.h('"',r))return p.g(t);r=function(){var e=t;return e.append(n),e}(),i=rL(e),t=r,n=i}}var o}function PO(e,t){if(!n(t=xO(e,zq,t,!0)))return null;switch(t){case"nil":return null;case"true":return!0;case"false":return!1;case"/":return Ct;default:var r=sM(t);return r=n(r)?Bd.h(r.g?r.g(0):r.call(null,0),r.g?r.g(1):r.call(null,1)):null,n(r)?r:QL(e,zq,t)}}function QO(e){var t=rL(e);if(kL(t))return cM(e);var r=sM(t=xO(e,bt,t,!0));if(n(n(r)?-1===t.indexOf("::"):r)){var i=r.g?r.g(0):r.call(null,0);return r=r.g?r.g(1):r.call(null,1),":"===ee(t,0)?QL(e,bt,[":",p.g(t)].join("")):Bf.h(i,r)}return QL(e,bt,[":",p.g(t)].join(""))}function RO(e,t,n){return J(t=mL(HO?HO(e,!0,null,n):IO.call(null,e,!0,null,n)))||dM(e,t),null!=(n=HO?HO(e,!0,null,n):IO.call(null,e,!0,null,n))&&(131072&n.B||cb===n.zd)?ze(n,pj.l(D([Ae(n),t]))):eM(e,n)}function SO(e,t,n){return n=yj(t=GO(pt,"}",e,n)),x.h(C(t),C(n))||kM(e,pt,t),n}function TO(e){return HO?HO(e,!0,null,!0):IO.call(null,e,!0,null,!0),e}function UO(e,t,r){t=rL(e);var i=null==(t=xO(e,oG,t,!0))?null:sM(t);return n(i=null==i?null:pL(i))?"{"===mM(e)?(!wg(C(r=GO(oG,"}",e,r)))&&NL(e,null,null,r),t=oL(p.g(i),Lj(2,r)),r=Lj(2,Hd(r)),x.h(C(yj(t)),C(t))||kM(e,oG,t),Bj(t,r)):fM(e,t):gM(e,t)}function VO(e,t,n){return t=HO?HO(e,!0,null,n):IO.call(null,e,!0,null,n),x.h(bo,t)?Number.NaN:x.h(kD,t)?Number.NEGATIVE_INFINITY:x.h(Em,t)?Number.POSITIVE_INFINITY:JL(e,D([["Invalid token: ##",p.g(t)].join("")]))}function vO(e){switch(e){case'"':return OO;case":":return QO;case";":return tM;case"^":return RO;case"(":return JO;case")":case"]":case"}":return BO;case"[":return KO;case"{":return LO;case"\\":return EO;case"#":return yO;default:return null}}function zO(e){switch(e){case"^":return RO;case"{":return SO;case"<":return uM("Unreadable form");case"!":return tM;case"_":return TO;case":":return UO;case"#":return VO;default:return null}}function AO(e,t,r){t=HO?HO(e,!0,null,r):IO.call(null,e,!0,null,r);var i=HO?HO(e,!0,null,r):IO.call(null,e,!0,null,r);t instanceof Ad||hM(e,"Reader tag must be a symbol");var o=u.h(LC.g(r),t);return o=n(o)?o:P.g?P.g(t):P.call(null,t),n(o)?o.g?o.g(i):o.call(null,i):n(r=Zk.g(r))?r.h?r.h(t,i):r.call(null,t,i):iM(e,t)}function IO(e){switch(arguments.length){case 1:return WO(P,arguments[0]);case 2:return WO(arguments[0],arguments[1]);case 4:return HO(arguments[0],arguments[1],arguments[2],arguments[3]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}}function WO(e,t){e=bg(e);var n=u.h(e,qn);return HO(t,!M(e,qn),n,e)}function HO(e,t,r,i){try{for(;;){var o=rL(e);if(!kL(o)){if(null==o)return n(t)?lM(e,null):r;if(lL(o)||("+"===o||"-"===o)&&lL(e.Bc(null)))return MO(e,o);var l=vO(o);if(!n(l))return PO(e,o);var s=l.j?l.j(e,o,i):l.call(null,e,o,i);if(s!==e)return s}}}catch(n){if(n instanceof Error){if((t=n)instanceof bl){if(r=el(t),x.h(Yl,X.g(r)))throw t;throw dl(t.message,pj.l(D([new k(null,1,[X,Yl],null),r,zL(e)?new k(null,3,[cw,uL(e),rs,vL(e),CD,wL(e)],null):null])),t)}throw dl(t.message,pj.l(D([new k(null,1,[X,Yl],null),zL(e)?new k(null,3,[cw,uL(e),rs,vL(e),CD,wL(e)],null):null])),t)}throw n}}function XO(e,t){return n(n(t)?cg.h(t,""):t)?WO(e,AL(t)):null}var YO=function(){var e=new Q(null,13,5,S,[null,31,28,31,30,31,30,31,31,30,31,30,31],null),t=new Q(null,13,5,S,[null,31,29,31,30,31,30,31,31,30,31,30,31],null);return function(r,i){return u.h(n(i)?t:e,r)}}(),ZO=/(\d\d\d\d)(?:-(\d\d)(?:-(\d\d)(?:[T](\d\d)(?::(\d\d)(?::(\d\d)(?:[.](\d+))?)?)?)?)?)?(?:[Z]|([-+])(\d\d):(\d\d))?/;function $O(e){return e=parseInt(e,10),yb(isNaN(e))?e:null}function aP(e,t,n,r){if(!(e<=t&&t<=n))throw Error([p.g(r)," Failed: ",p.g(e),"<=",p.g(t),"<=",p.g(n)].join(""));return t}function bP(e){var t=Pj(ZO,e);G(t,0,null);var r,i=G(t,1,null),o=G(t,2,null),l=G(t,3,null),s=G(t,4,null),a=G(t,5,null),u=G(t,6,null),c=G(t,7,null),h=G(t,8,null),d=G(t,9,null),f=G(t,10,null);if(yb(t))throw Error(["Unrecognized date/time syntax: ",p.g(e)].join(""));e=$O(i),t=n(r=$O(o))?r:1,i=function(){var e=$O(l);return n(e)?e:1}();var g=function(){var e=$O(s);return n(e)?e:0}(),w=function(){var e=$O(a);return n(e)?e:0}(),m=function(){var e=$O(u);return n(e)?e:0}(),v=function(){e:if(x.h(3,C(c)))var e=c;else if(3e.getLength())){e=e.toString();break e}e=e.append("0")}return n(e=$O(e))?e:0}();return h=(x.h(h,"-")?-1:1)*(60*function(){var e=$O(d);return n(e)?e:0}()+function(){var e=$O(f);return n(e)?e:0}()),new Q(null,8,5,S,[e,aP(1,t,12,"timestamp month field must be in range 1..12"),aP(1,i,YO(t,0==(e%4+4)%4&&(0!=(e%100+100)%100||0==(e%400+400)%400)),"timestamp day field must be in range 1..last day in month"),aP(0,g,23,"timestamp hour field must be in range 0..23"),aP(0,w,59,"timestamp minute field must be in range 0..59"),aP(0,m,x.h(w,59)?60:59,"timestamp second field must be in range 0..60"),aP(0,v,999,"timestamp millisecond field must be in range 0..999"),h],null)}var cP=Fg(null),dP=Fg(pj.l(D([new k(null,4,[sp,function(e){if("string"==typeof e){var t=bP(e);if(!n(t))throw Error(["Unrecognized date/time syntax: ",p.g(e)].join(""));e=G(t,0,null);var r=G(t,1,null),i=G(t,2,null),o=G(t,3,null),l=G(t,4,null),s=G(t,5,null),a=G(t,6,null);return t=G(t,7,null),t=new Date(Date.UTC(e,r-1,i,o,l,s,a)-6e4*t)}throw Error("Instance literal expects a string for its timestamp.")},KB,function(e){if("string"==typeof e)return new $k(e.toLowerCase());throw Error("UUID literal expects a string as its representation.")},SD,function(e){if(Le(e))return ah.h(Uh,e);throw Error("Queue literal expects a vector for its elements.")},gw,function(e){if(Le(e)){var t=[];e=z(e);for(var n=null,r=0,i=0;;)if(i= (eq-neq | and | or)\n = (term | eq | neq | match)\n and=and-or <'&&'> eq-neq\n or=and-or <'||'> eq-neq\n eq=eq-neq <'=='> term\n neq=eq-neq <'!='> term\n match=eq-neq <'?'> term\n = (ident | own-ident | number | str | lparen and-or rparen)\n = \n = \n ident=<'$'> word\n own-ident=<'#'> word\n str=<'\\''> #'[^\\']+' <'\\''>\n word=#'[a-zA-Z]+'\n number=#'[-+]?[0-9]*\\.?[0-9]+'\n ws=#'[\\s\\t]+'\n ");function gP(e){if(z(e)){if(null==(e=nO(fP,e)))var t=null;else t=n(t=e instanceof sK?e:Ae(e)instanceof sK?Ae(e):null)?p.g(t):null;if(n(t))throw cl(["Error parsing restrictions ",t].join(""),new k(null,1,[Ar,t],null));return e}return null}function hP(e,t,r){return!z(e)||cL(Ri([Cr,jm,us,mB,zo,Bm,Iy,hm,lF,po],[x,eP,function(e,t){return n(e)?e:t},bf,bf,cg,function(e){G(e,0,null),e=G(e,1,null);var t=u.h(r,e);return n(t)?t:u.h(r,Bf.g(e))},function(e,t){return n(e)?t:e},function(e){G(e,0,null),e=G(e,1,null);var r=u.h(t,e);return n(r)?r:u.h(t,Bf.g(e))},function(e,t){return n(n(t)?e:t)?Pj(Sj(t),e):null}]),e)}var iP={},jP={},kP,lP,mP,nP,oP,pP,qP,rP,sP,tP;function uP(e,t){if(null!=e&&null!=e.Wb)e=e.Wb(e,t);else{var n=uP[ba(null==e?null:e)];if(null!=n)e=n.h?n.h(e,t):n.call(null,e,t);else{if(null==(n=uP._))throw Eb("Spec.conform*",e);e=n.h?n.h(e,t):n.call(null,e,t)}}return e}function vP(e,t){if(null!=e&&null!=e.Xb)e=e.Xb(e,t);else{var n=vP[ba(null==e?null:e)];if(null!=n)e=n.h?n.h(e,t):n.call(null,e,t);else{if(null==(n=vP._))throw Eb("Spec.with-gen*",e);e=n.h?n.h(e,t):n.call(null,e,t)}}return e}var wP=Fg(P);function xP(e){if(Af(e)){var t=r(wP);if(Af(e=u.h(t,e)))e:for(;;){if(!Af(e)){t=e;break e}e=u.h(t,e)}else t=e;return t}return e}function yP(e){if(Af(e)){var t=xP(e);if(n(t))return t;throw Error(["Unable to resolve spec: ",p.g(e)].join(""))}return e}function zP(e){return null!=e&&cb===e.pc?e:null}function AP(e){var t=dF.g(e);return n(t)?e:t}function BP(e,t){return Af(e)?e:n(AP(e))?I.j(e,An,t):null!=e&&(131072&e.B||cb===e.zd)?ze(e,I.j(Ae(e),An,t)):null}function CP(e){return Af(e)?e:n(AP(e))?An.g(e):null!=e&&(131072&e.B||cb===e.zd)?An.g(Ae(e)):null}function DP(e){var t,r=n(t=(t=Af(e))?xP(e):t)||n(t=zP(e))||n(t=AP(e))?t:null;return n(AP(r))?BP(EP(r,null),CP(r)):r}function FP(e){var t=DP(e);if(n(t))return t;if(Af(e))throw Error(["Unable to resolve spec: ",p.g(e)].join(""));return null}function GP(e){if(Fa(null==e?"":String(e)))return null;if(2<=C(e=Ng.h(Kl,TI(e,"$",0)))&&ug((function(e){return!Fa(null==e?"":String(e))}),e)){var t=Nj(Aj,qe)(e);return e=G(t,0,null),t=G(t,1,null),Bd.g([RI(".",e),"/",p.g(t)].join(""))}return null}var IP=function(){function e(e,t){var n=HP[ba(null==e?null:e)];if(null!=n)return n.h?n.h(e,t):n.call(null,e,t);if(null!=(n=HP._))return n.h?n.h(e,t):n.call(null,e,t);throw Eb("Specize.specize*",e)}function t(e){var t=HP[ba(null==e?null:e)];if(null!=t)return t.g?t.g(e):t.call(null,e);if(null!=(t=HP._))return t.g?t.g(e):t.call(null,e);throw Eb("Specize.specize*",e)}var n;return n=function(n,r){switch(arguments.length){case 1:return t.call(this,n);case 2:return e.call(this,n,r)}throw Error("Invalid arity: "+arguments.length)},n.g=t,n.h=e,n}(),HP=function e(t){switch(arguments.length){case 1:return e.g(arguments[0]);case 2:return e.h(arguments[0],arguments[1]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}};HP.g=function(e){return null!=e&&null!=e.Eb?e.Eb(e):IP(e)},HP.h=function(e,t){return null!=e&&null!=e.Fb?e.Fb(e,t):IP(e,t)},HP.I=2,w.prototype.Eb=function(){return HP(yP(this))},w.prototype.Fb=function(){return HP(yP(this))},Ad.prototype.Eb=function(){return HP(yP(this))},Ad.prototype.Fb=function(){return HP(yP(this))},uj.prototype.Eb=function(){return JP(this,this,null,null,null)},uj.prototype.Fb=function(e,t){return JP(t,this,null,null,null)},HP._=function(){function e(e){var t=(t=xe(e))?GP(e.name):t;return n(t)?JP(t,e,null,null,null):JP(lG,e,null,null,null)}var t;return t=function(t,n){switch(arguments.length){case 1:return e.call(this,t);case 2:return JP(n,t,null,null,null)}throw Error("Invalid arity: "+arguments.length)},t.g=e,t.h=function(e,t){return JP(t,e,null,null,null)},t}();var KP=function e(t){switch(arguments.length){case 1:return e.g(arguments[0]);case 2:return e.h(arguments[0],arguments[1]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}};function LP(e){return O(pB,e)}function MP(e,t){return uP(KP.g(e),t)}function NP(e,t){return n(AP(e=xP(e)))?I.j(e,Nv,t):vP(KP.g(e),t)}function Z(e,t,i){if(null==i)Ig.j(wP,we,e);else{var o=zP(i);n(o)||(o=n(o=AP(i))?o:u.h(r(wP),i)),t=n(o)?i:JP(t,i,null,null,null),Ig.F(wP,I,e,BP(t,e))}}function OP(e,t,r){if(n(e)){var i=FP(e);if(n(i))return MP(i,t);if(xe(e)||(null!=e?1&e.B||cb===e.ni||!e.B&&Cb(Pb,e):Cb(Pb,e)))return n(null)?e.g?e.g(t):e.call(null,t):n(e.g?e.g(t):e.call(null,t))?t:pB;throw Error([hk.l(D([r]))," is not a fn, expected predicate fn"].join(""))}return t}function PP(e,t){return!LP(uP(e=KP.g(e),t))}KP.g=function(e){var t=zP(e);return n(t)?t:HP(e)},KP.h=function(e,t){var r=zP(e);return n(r)?r:HP(e,t)},KP.I=2;var QP=function e(t){var i=bg(t),o=u.h(i,BA),l=u.h(i,T),s=u.h(i,dD),a=u.h(i,Cz),c=u.h(i,AB),h=u.h(i,KD),d=u.h(i,Np),f=u.h(i,mm),p=u.h(i,Zn),g=u.h(i,rE),w=u.h(i,AE),m=u.h(i,$p),v=Bj(Of.h(g,d),Of.h(f,w)),y=al();return void 0!==$a&&void 0!==iP&&void 0!==jP&&void 0!==kP||((kP=function(e,t,n,r,i,o,l,s,a,u,c,h,d,f,p,g,w,m,v){this.je=e,this.Uh=t,this.Qh=n,this.di=r,this.Th=i,this.mb=o,this.Wh=l,this.ke=s,this.sf=a,this.Rh=u,this.ci=c,this.oh=h,this.ai=d,this.id=f,this.bi=p,this.Sh=g,this.jh=w,this.Xh=m,this.th=v,this.B=393216,this.M=0}).prototype.S=function(e,t){return new kP(this.je,this.Uh,this.Qh,this.di,this.Th,this.mb,this.Wh,this.ke,this.sf,this.Rh,this.ci,this.oh,this.ai,this.id,this.bi,this.Sh,this.jh,this.Xh,t)},kP.prototype.R=function(){return this.th},kP.prototype.Eb=function(){return this},kP.prototype.Fb=function(){return this},kP.prototype.pc=cb,kP.prototype.Wb=function(e,t){if(!n(this.ke.g?this.ke.g(t):this.ke.call(null,t)))return pB;e=r(wP);var i=z(t),o=A(i);for(B(i),G(o,0,null),G(o,1,null),o=i=t;;){t=i;var l=z(o);i=A(l);var s=B(l);if(i=G(l=i,0,null),l=G(l,1,null),!n(o))return t;if(o=this.je.g?this.je.g(i):this.je.call(null,i),n(o=u.h(e,o))){if(LP(o=MP(o,l)))return pB;t=o===l?t:I.j(t,i,o),o=s,i=t}else o=s,i=t}},kP.prototype.Xb=function(t,n){return t=I.j(this.sf,Cz,n),e.g?e.g(t):e.call(null,t)},kP.Na=!0,kP.Ja="cljs.spec.alpha/t_cljs$spec$alpha13719",kP.Pa=function(e){return Qc(e,"cljs.spec.alpha/t_cljs$spec$alpha13719")}),new kP((function(e){var t=v.g?v.g(e):v.call(null,e);return n(t)?t:e}),t,o,l,s,a,c,h,i,d,f,i,p,y,g,w,v,m,P)};function JP(e,t,r,i,o){return n(zP(t))?n(r)?NP(t,r):t:n(AP(t))?EP(t,r):Af(t)?(e=FP(t),n(r)?NP(e,r):e):(void 0!==$a&&void 0!==iP&&void 0!==jP&&void 0!==lP||(lP=function(e,t,n,r,i,o){this.form=e,this.Qb=t,this.mb=n,this.Te=r,this.dg=i,this.vh=o,this.B=393216,this.M=0},lP.prototype.S=function(e,t){return new lP(this.form,this.Qb,this.mb,this.Te,this.dg,t)},lP.prototype.R=function(){return this.vh},lP.prototype.Eb=function(){return this},lP.prototype.Fb=function(){return this},lP.prototype.pc=cb,lP.prototype.Wb=function(e,t){return e=this.Qb.g?this.Qb.g(t):this.Qb.call(null,t),n(this.Te)?e:n(e)?t:pB},lP.prototype.Xb=function(e,t){return JP(this.form,this.Qb,t,this.Te,this.dg)},lP.Na=!0,lP.Ja="cljs.spec.alpha/t_cljs$spec$alpha13852",lP.Pa=function(e){return Qc(e,"cljs.spec.alpha/t_cljs$spec$alpha13852")}),new lP(e,t,r,i,o,P))}function RP(e,t){return SP(e,t,X,null)}function SP(e,t,i,o){var l=al(),s=i instanceof w?function(e,t){return I.j(e,i,t)}:i;return void 0!==$a&&void 0!==iP&&void 0!==jP&&void 0!==mP||(mP=function(e,t,n,r,i,o,l,s,a){this.form=e,this.Nf=t,this.$f=n,this.mb=r,this.id=i,this.re=o,this.Zg=l,this.tag=s,this.wh=a,this.B=393216,this.M=0},mP.prototype.S=function(e,t){return new mP(this.form,this.Nf,this.$f,this.mb,this.id,this.re,this.Zg,this.tag,t)},mP.prototype.R=function(){return this.wh},mP.prototype.Eb=function(){return this},mP.prototype.Fb=function(){return this},mP.prototype.pc=cb,mP.prototype.Wb=function(e,t){return n(e=this.re.g?this.re.g(t):this.re.call(null,t))?OP(e,t,this.form):pB},mP.prototype.Xb=function(e,t){return SP(this.form,this.Nf,this.$f,t)},mP.Na=!0,mP.Ja="cljs.spec.alpha/t_cljs$spec$alpha13912",mP.Pa=function(e){return Qc(e,"cljs.spec.alpha/t_cljs$spec$alpha13912")}),new mP(e,t,i,o,l,(function(e){var i=r(t),o=Wk(i);return n(o=Vk(i,o=o.g?o.g(e):o.call(null,e)))?i.g?i.g(e):i.call(null,e):o}),(function(e){var n=Wk(r(t));return n.g?n.g(e):n.call(null,e)}),s,P)}function TP(e,t){return UP(e,t,null)}function UP(e,t,n){var i=new qk((function(){return bh.j(KP,t,e)})),o=C(t);return void 0!==$a&&void 0!==iP&&void 0!==jP&&void 0!==nP||(nP=function(e,t,n,r,i,o){this.forms=e,this.Db=t,this.mb=n,this.ud=r,this.H=i,this.xh=o,this.B=393216,this.M=0},nP.prototype.S=function(e,t){return new nP(this.forms,this.Db,this.mb,this.ud,this.H,t)},nP.prototype.R=function(){return this.xh},nP.prototype.Eb=function(){return this},nP.prototype.Fb=function(){return this},nP.prototype.pc=cb,nP.prototype.Wb=function(e,t){if(e=r(this.ud),!Le(t)||!x.h(C(t),this.H))return pB;for(var n=t,i=0;;){if(x.h(i,this.H))return n;var o=t.g?t.g(i):t.call(null,i),l=uP(e.g?e.g(i):e.call(null,i),o);if(LP(l))return pB;n=l===o?n:I.j(n,i,l),i+=1}},nP.prototype.Xb=function(e,t){return UP(this.forms,this.Db,t)},nP.Na=!0,nP.Ja="cljs.spec.alpha/t_cljs$spec$alpha13936",nP.Pa=function(e){return Qc(e,"cljs.spec.alpha/t_cljs$spec$alpha13936")}),new nP(e,t,n,i,o,P)}function VP(e,t){return new xh(e,t)}var WP=function e(t,n,i,o){var l=al(),s=Bj(t,i),a=new qk((function(){return bh.j(KP,i,n)})),u=function(){switch(C(i)){case 2:return function(e){var n=r(a),i=uP(n.g?n.g(0):n.call(null,0),e);return LP(i)?LP(e=uP(n.g?n.g(1):n.call(null,1),e))?pB:VP(t.g?t.g(1):t.call(null,1),e):VP(t.g?t.g(0):t.call(null,0),i)};case 3:return function(e){var n=r(a),i=uP(n.g?n.g(0):n.call(null,0),e);return LP(i)?LP(i=uP(n.g?n.g(1):n.call(null,1),e))?LP(e=uP(n.g?n.g(2):n.call(null,2),e))?pB:VP(t.g?t.g(2):t.call(null,2),e):VP(t.g?t.g(1):t.call(null,1),i):VP(t.g?t.g(0):t.call(null,0),i)};default:return function(e){for(var n=r(a),i=0;;){if(!(i(l=jf(C(t)/101))?1:l,o=0;;){if(o>=C(t))return t;if(!PP(e,ee(t,o)))return pB;o+=l}else for(o=0,l=z(t),A(i=z(l)),B(i);;){if(i=A(a=z(l)),s=B(a),a=i,null==(u=l)||x.h(o,101))return t;if(!PP(e,a))return pB;l=s,o+=1}},rP.prototype.Xb=function(e,t){return aQ(this.form,this.Qb,this.Of,t)},rP.Na=!0,rP.Ja="cljs.spec.alpha/t_cljs$spec$alpha14276",rP.Pa=function(e){return Qc(e,"cljs.spec.alpha/t_cljs$spec$alpha14276")}),new rP(e,a,(function(e){return PP(r(D),e)}),s,o,h,t,d,f,c,l,(function(e){return Le(e)&&(yb($)||Le($))?new Q(null,3,5,S,[bf,function(e,t,n,r){return n===r?e:I.j(e,t,r)},bf],null):n((t=J(e))?(t=n(y)?yb($):y,n(t)?t:J($)):t)?new Q(null,3,5,S,[n(f)?te:bf,function(e,t,r,i){return r===i&&yb(f)?e:I.j(e,ee(n(f)?i:r,0),ee(i,1))},bf],null):tf($)||Qe($)||yb($)&&(tf(e)||Qe(e))?new Q(null,3,5,S,[te,l,vf],null):new Q(null,3,5,S,[function(e){return te(n($)?$:e)},l,bf],null);var t}),p,g,D,k,E,i,m,v,s,y,b,$,P)}function bQ(e){return new k(null,2,[dF,sA,Yn,e],null)}function cQ(e){return e=bg(e),e=u.h(e,dF),x.h(sA,e)}var dQ=function e(t){var r=bg(t),i=u.h(r,zs),o=A(t=z(i));t=B(t);var l=u.h(r,Zs),s=z(l),a=A(s);s=B(s);var c=u.h(r,zF),h=z(c);A(h),h=B(h);var d=u.h(r,Yn);return r=u.h(r,Tq),ug(bf,i)?cQ(o)?(i=Yn.g(o),i=re.h(d,n(l)?ve([a,i]):i),t?(t=new k(null,4,[zs,t,Zs,s,zF,h,Yn,i],null),e.g?e.g(t):e.call(null,t)):bQ(i)):new k(null,6,[dF,dp,zs,i,Yn,d,Zs,l,zF,c,Tq,r],null):null};function eQ(e,t,r,i,o){return n(e)?(i=new k(null,5,[dF,bF,Qs,t,Nq,i,zF,o,kt,al()],null),cQ(e)?I.l(i,Ms,t,D([Yn,re.h(r,Yn.g(e))])):I.l(i,Ms,e,D([Yn,r]))):null}function fQ(e,t,r,i){return n(n(t)?t:r)?(e=Xg.h((function(e){return e=A(e),i.g?i.g(e):i.call(null,e)}),Ng.F(Ih,e,function(){var e=z(t);return e||Sg(null)}(),function(){var e=z(r);return e||Sg(null)}())),new Q(null,3,5,S,[z(Ng.h(A,e)),n(t)?z(Ng.h(oe,e)):null,n(r)?z(Ng.h((function(e){return ee(e,2)}),e)):null],null)):new Q(null,3,5,S,[z(Xg.h(i,e)),t,r],null)}function gQ(e,t,r){var i=fQ(e,t,r,bf);e=A(r=z(t=G(i,0,null))),r=B(r);var o=G(i,1,null),l=G(o,0,null);return i=G(i,2,null),n(t)?(t=new k(null,4,[dF,GD,zs,t,Zs,o,zF,i],null),null==r?n(l)?cQ(e)?bQ(VP(l,Yn.g(e))):t:e:t):null}function hQ(e,t){return n(n(e)?t:e)?gQ(D([e,t]),null,null):n(e)?e:t}var iQ=function e(t){var r=bg(t=yP(t)),i=u.h(r,dF),o=u.h(r,zs);t=u.h(r,Ms);var l=u.h(r,Qs);if(r=u.h(r,zF),x.h(sA,i))return!0;if(x.h(null,i))return null;if(x.h(BD,i))return n(i=e.g?e.g(t):e.call(null,t))?!LP(t=XP(jQ(t),o,B(r))):i;if(x.h(bF,i))return(o=t===l)?o:e.g?e.g(t):e.call(null,t);if(x.h(dp,i))return ug(e,o);if(x.h(GD,i))return vg(e,o);throw Error(["No matching clause: ",p.g(i)].join(""))},jQ=function e(t){var r=bg(t=yP(t)),i=z(t=u.h(r,zs)),o=A(i);B(i);var l=u.h(r,Zs),s=G(l,0,null),a=u.h(r,dF);i=u.h(r,Ms);var c=u.h(r,Yn);if(r=u.h(r,zF),x.h(sA,a))return c;if(x.h(null,a))return null;if(x.h(BD,a))return o=e.g?e.g(i):e.call(null,i),(l=x.h(o,TB))?i=l:(i=dF.g(yP(i)),i=n(i=(l=new uj(null,new k(null,2,[bF,null,dp,null],null),null)).g?l.g(i):l.call(null,i))?Ee(o):i,i=n(i)?i:null),n(i)?TB:XP(o,t,r);if(x.h(bF,a))return kQ(i,c,s);if(x.h(dp,a))return kQ(o,c,s);if(x.h(GD,a))return t=G(r=fQ(t,l,r,iQ),0,null),t=G(t,0,null),r=G(r,1,null),r=G(r,0,null),t=null==t?TB:e.g?e.g(t):e.call(null,t),n(r)?VP(r,t):t;throw Error(["No matching clause: ",p.g(a)].join(""))};function kQ(e,t,r){var i=bg(e=yP(e)),o=u.h(i,dF);if(u.h(i,zs),e=u.h(i,Nq),x.h(null,o))return t;if(x.h(GD,o)||x.h(sA,o)||x.h(BD,o))return e=jQ(i),x.h(e,TB)?t:re.h(t,n(r)?ve([r,e]):e);if(x.h(bF,o)||x.h(dp,o))return Ee(i=jQ(i))||(r=n(r)?ve([r,i]):i,t=(e=n(e)?ah:re).h?e.h(t,r):e.call(null,t,r)),t;throw Error(["No matching clause: ",p.g(o)].join(""))}var lQ=function e(t,r){var i=bg(t=yP(t)),o=u.h(i,zF),l=u.h(i,Qs),s=z(t=u.h(i,zs)),a=A(s),c=B(s),h=u.h(i,Yn);s=u.h(i,dF);var d=u.h(i,Nq),f=u.h(i,Zs),g=z(f),w=A(g),m=B(g);g=u.h(i,um);var v,y=u.h(i,Ms);if(n(i)){if(x.h(sA,s))return null;if(x.h(null,s))return LP(t=OP(i,r,i))?null:bQ(t);if(x.h(BD,s))return n(i=e.h?e.h(y,r):e.call(null,y,r))?x.h(sA,dF.g(i))?LP(t=XP(jQ(i),t,B(o)))?null:bQ(t):new k(null,5,[dF,BD,Ms,i,um,g,zs,t,zF,o],null):null;if(x.h(dp,s))return hQ(dQ(new k(null,4,[zs,ke(e.h?e.h(a,r):e.call(null,a,r),c),Zs,f,zF,o,Yn,h],null)),n(iQ(a))?(v=dQ(new k(null,4,[zs,c,Zs,m,zF,B(o),Yn,kQ(a,h,w)],null)),e.h?e.h(v,r):e.call(null,v,r)):null);if(x.h(GD,s))return gQ(Ng.h((function(t){return e.h?e.h(t,r):e.call(null,t,r)}),t),f,o);if(x.h(bF,s))return hQ(eQ(e.h?e.h(y,r):e.call(null,y,r),l,h,d,o),n(iQ(y))?function(){var t=eQ(l,l,kQ(y,h,null),d,o);return e.h?e.h(t,r):e.call(null,t,r)}():null);throw Error(["No matching clause: ",p.g(s)].join(""))}return null};function mQ(e,t){for(;;){var r=z(t),i=A(r);if(r=B(r),Ee(t))return n(iQ(e))?(e=jQ(e),x.h(e,TB)?null:e):pB;if(!n(e=lQ(e,i)))return pB;t=r}}var EP=function e(t,n){return void 0!==$a&&void 0!==iP&&void 0!==jP&&void 0!==sP||(sP=function(e,t,n){this.te=e,this.mb=t,this.Ch=n,this.B=393216,this.M=0},sP.prototype.S=function(e,t){return new sP(this.te,this.mb,t)},sP.prototype.R=function(){return this.Ch},sP.prototype.Eb=function(){return this},sP.prototype.Fb=function(){return this},sP.prototype.pc=cb,sP.prototype.Wb=function(e,t){return null==t||Ie(t)?mQ(this.te,z(t)):pB},sP.prototype.Xb=function(t,n){return e.h?e.h(this.te,n):e.call(null,this.te,n)},sP.Na=!0,sP.Ja="cljs.spec.alpha/t_cljs$spec$alpha14816",sP.Pa=function(e){return Qc(e,"cljs.spec.alpha/t_cljs$spec$alpha14816")}),new sP(t,n,P)};Z(Lt,N(ez,N(wl,new Q(null,1,5,S,[FD],null),N(GG,N(om,VB,FD),N(om,dC,FD))),N(wl,new Q(null,1,5,S,[Zy],null),N(om,N(V,new Q(null,1,5,S,[new Q(null,2,5,S,[Tt,Wt],null)],null),new k(null,2,[VB,Tt,dC,Wt],null)),Zy))),JP(N(ez,N(V,new Q(null,1,5,S,[W],null),N(GG,N(om,VB,W),N(om,dC,W))),N(V,new Q(null,1,5,S,[W],null),N(om,N(V,new Q(null,1,5,S,[new Q(null,2,5,S,[Tt,Wt],null)],null),new k(null,2,[VB,Tt,dC,Wt],null)),W))),(function(e){return Bj(Ng.h(VB,e),Ng.h(dC,e))}),null,!0,(function(e){return Ng.h((function(e){var t=G(e,0,null);return e=G(e,1,null),new k(null,2,[VB,t,dC,e],null)}),e)})));var nQ=function e(t,n,i){var o=new qk((function(){return KP.h(n,t)}));return void 0!==$a&&void 0!==iP&&void 0!==jP&&void 0!==tP||(tP=function(e,t,n,r,i){this.form=e,this.Qb=t,this.mb=n,this.Vd=r,this.Dh=i,this.B=393216,this.M=0},tP.prototype.S=function(e,t){return new tP(this.form,this.Qb,this.mb,this.Vd,t)},tP.prototype.R=function(){return this.Dh},tP.prototype.Eb=function(){return this},tP.prototype.Fb=function(){return this},tP.prototype.pc=cb,tP.prototype.Wb=function(e,t){return null==t?null:uP(r(this.Vd),t)},tP.prototype.Xb=function(t,n){return e.j?e.j(this.form,this.Qb,n):e.call(null,this.form,this.Qb,n)},tP.Na=!0,tP.Ja="cljs.spec.alpha/t_cljs$spec$alpha15076",tP.Pa=function(e){return Qc(e,"cljs.spec.alpha/t_cljs$spec$alpha15076")}),new tP(t,n,i,o,P)};Z(zw,SC,Ab),Z(hz,SC,Ab),Z(ep,un,pf),Z(Un,wB,zb),Z(pm,N(eD,T,new Q(null,3,5,S,[zw,hz,ep],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[zw,hz,ep],null),null,null,new Q(null,4,5,S,[function(e){return J(e)},function(e){return M(e,GC)},function(e){return M(e,pr)},function(e){return M(e,bD)}],null),function(e){return J(e)&&M(e,GC)&&M(e,pr)&&M(e,bD)},F,new Q(null,3,5,S,[zw,hz,ep],null),null,new Q(null,3,5,S,[GC,pr,bD],null),F,new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,GC)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pr)),N(V,new Q(null,1,5,S,[W],null),N(U,W,bD))],null),null]))),Z(VC,SC,Ab),Z(Ny,N(Zq,VC,N(eD,T,new Q(null,2,5,S,[Un,pm],null))),aQ(N(zx,VC,N(es,T,new Q(null,2,5,S,[Un,pm],null))),TP(new Q(null,2,5,S,[VC,N(eD,T,new Q(null,2,5,S,[Un,pm],null))],null),new Q(null,2,5,S,[VC,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[Un,pm],null),null,null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,wu)},function(e){return M(e,pD)}],null),function(e){return J(e)&&M(e,wu)&&M(e,pD)},F,new Q(null,2,5,S,[Un,pm],null),null,new Q(null,2,5,S,[wu,pD],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,wu)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pD))],null),null]))],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,VC,N(eD,T,new Q(null,2,5,S,[Un,pm],null))),Jz,function(e){return J(e)}],null),null)),Z(jB,SC,Ab),Z(sC,N(jz,SC),nQ(SC,Ab,null)),Z(Yu,Yv,Te),Z(Vz,SC,Ab);var oQ,F2=Fg(P),G2=Fg(P),H2=Fg(P),I2=Fg(P),J2=u.j(P,fu,Kk.A?Kk.A():Kk.call(null));oQ=new Yk(Bd.h("gateway.state.spec.common","address-type"),X,J2,F2,G2,H2,I2),Z(ME,Hs,Bb),oQ.C(null,gz,(function(){return QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[Ss,ME],null),null,null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,X)},function(e){return M(e,oz)}],null),function(e){return J(e)&&M(e,X)&&M(e,oz)},F,new Q(null,2,5,S,[Ss,ME],null),null,new Q(null,2,5,S,[X,oz],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],null),N(U,W,oz))],null),null]))})),Z(Io,SC,Ab),oQ.C(null,qy,(function(){return QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[Ss,IB,Io],null),null,null,new Q(null,4,5,S,[function(e){return J(e)},function(e){return M(e,X)},function(e){return M(e,em)},function(e){return M(e,zt)}],null),function(e){return J(e)&&M(e,X)&&M(e,em)&&M(e,zt)},F,new Q(null,3,5,S,[Ss,IB,Io],null),null,new Q(null,3,5,S,[X,em,zt],null),F,new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],null),N(U,W,em)),N(V,new Q(null,1,5,S,[W],null),N(U,W,zt))],null),null]))})),oQ.C(null,jD,(function(){return QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[Ss],null),null,null,new Q(null,2,5,S,[function(e){return J(e)},function(e){return M(e,X)}],null),function(e){return J(e)&&M(e,X)},F,new Q(null,1,5,S,[Ss],null),null,new Q(null,1,5,S,[X],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X))],null),null]))})),oQ.C(null,zt,(function(){return QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[Ss,Io],null),null,null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,X)},function(e){return M(e,zt)}],null),function(e){return J(e)&&M(e,X)&&M(e,zt)},F,new Q(null,2,5,S,[Ss,Io],null),null,new Q(null,2,5,S,[X,zt],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],null),N(U,W,zt))],null),null]))})),oQ.C(null,Zk,(function(){return QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[Ss],null),null,null,new Q(null,2,5,S,[function(e){return J(e)},function(e){return M(e,X)}],null),function(e){return J(e)&&M(e,X)},F,new Q(null,1,5,S,[Ss],null),null,new Q(null,1,5,S,[X],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X))],null),null]))})),Z(yE,N(Gx,cn,X),RP(cn,new Cd((function(){return oQ}),cn,Ri([Rs,Yo,CD,so,rs,cw,MG,oo,KC,wD],[iw,Xs,"gateway/state/spec/common.cljc",23,1,10,10,Id,null,n(oQ)?oQ.md:null])))),Z(DA,N(Gx,cn,X),RP(cn,new Cd((function(){return oQ}),cn,Ri([Rs,Yo,CD,so,rs,cw,MG,oo,KC,wD],[iw,Xs,"gateway/state/spec/common.cljc",23,1,10,10,Id,null,n(oQ)?oQ.md:null])))),Z(sw,N(Zq,N(Hp,tq,SC,Pl,tA),Hs),aQ(N(zx,N(WD,tq,oC,Pl,As),BB),TP(new Q(null,2,5,S,[N(Hp,tq,SC,Pl,tA),Hs],null),new Q(null,2,5,S,[WP(new Q(null,2,5,S,[tq,Pl],null),new Q(null,2,5,S,[SC,tA],null),new Q(null,2,5,S,[Ab,yf],null),null),Bb],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,N(Hp,tq,SC,Pl,tA),Hs),Jz,function(e){return J(e)}],null),null)),Z(vo,N(Hp,ex,kn,qm,SC,kp,iB),WP(new Q(null,3,5,S,[ex,qm,kp],null),new Q(null,3,5,S,[kn,SC,iB],null),new Q(null,3,5,S,[vb,Ab,Le],null),null)),Z(zC,N(gq,SC,Yx),YP(new Q(null,2,5,S,[SC,Yx],null),new Q(null,2,5,S,[Ab,z],null),null)),Z(lw,SC,Ab),Z(bq,N(jz,Wu),nQ(Wu,J,null)),Z(uD,vo,vo),Z($E,vo,vo),Z(Kz,N(gq,tA,N(wl,new Q(null,1,5,S,[Az],null),N(U,new uj(null,new k(null,4,[mC,"null",cz,"null",Pp,"null",SB,"null"],null),null),Az))),YP(new Q(null,2,5,S,[tA,N(V,new Q(null,1,5,S,[W],null),N(U,new uj(null,new k(null,4,[mC,"null",cz,"null",Pp,"null",SB,"null"],null),null),W))],null),new Q(null,2,5,S,[yf,function(e){return M(new uj(null,new k(null,4,[mC,null,cz,null,Pp,null,SB,null],null),null),e)}],null),null)),Z(hD,N(xy,jB,Jr,Jy),aQ(jB,jB,new k(null,5,[Rv,!0,Jr,Ge,Fo,Jy,tD,N(xy,jB,Jr,Jy),Jz,function(e){return Ge(e)}],null),null)),Z(rt,jB,jB),Z(vn,jB,jB),Z(eA,eu,xb),Z(iq,eu,xb),Z(cC,N(eD,T,new Q(null,2,5,S,[eA,iq],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[eA,iq],null),null,null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,OB)},function(e){return M(e,uA)}],null),function(e){return J(e)&&M(e,OB)&&M(e,uA)},F,new Q(null,2,5,S,[eA,iq],null),null,new Q(null,2,5,S,[OB,uA],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,OB)),N(V,new Q(null,1,5,S,[W],null),N(U,W,uA))],null),null]))),Z(jF,N(eD,T,new Q(null,4,5,S,[zC,Kz,hD,vn],null),dD,new Q(null,6,5,S,[lw,uD,$E,bq,rt,cC],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,4,5,S,[zC,Kz,hD,vn],null),new Q(null,6,5,S,[lw,uD,$E,bq,rt,cC],null),null,new Q(null,5,5,S,[function(e){return J(e)},function(e){return M(e,kt)},function(e){return M(e,JF)},function(e){return M(e,QD)},function(e){return M(e,Zv)}],null),function(e){return J(e)&&M(e,kt)&&M(e,JF)&&M(e,QD)&&M(e,Zv)},new Q(null,6,5,S,[Yo,PA,sD,Fw,Ru,bD],null),new Q(null,4,5,S,[zC,Kz,hD,vn],null),null,new Q(null,4,5,S,[kt,JF,QD,Zv],null),new Q(null,6,5,S,[lw,uD,$E,bq,rt,cC],null),new Q(null,5,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,kt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,JF)),N(V,new Q(null,1,5,S,[W],null),N(U,W,QD)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Zv))],null),null]))),Z(Nt,N(Zq,zC,jF),aQ(N(zx,zC,jF),TP(new Q(null,2,5,S,[zC,jF],null),new Q(null,2,5,S,[zC,jF],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,zC,jF),Jz,function(e){return J(e)}],null),null)),Z(HC,Yv,Te),Z(qA,SC,Ab),Z(KE,N(Zq,wB,Hs),aQ(N(zx,hF,BB),TP(new Q(null,2,5,S,[wB,Hs],null),new Q(null,2,5,S,[zb,Bb],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,wB,Hs),Jz,function(e){return J(e)}],null),null)),Z(Bx,N(Zq,wB,Hs),aQ(N(zx,hF,BB),TP(new Q(null,2,5,S,[wB,Hs],null),new Q(null,2,5,S,[zb,Bb],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,wB,Hs),Jz,function(e){return J(e)}],null),null)),Z(DE,N(eD,T,new Q(null,2,5,S,[HC,qA],null),dD,new Q(null,2,5,S,[KE,Bx],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[HC,qA],null),new Q(null,2,5,S,[KE,Bx],null),null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,kt)},function(e){return M(e,pA)}],null),function(e){return J(e)&&M(e,kt)&&M(e,pA)},new Q(null,2,5,S,[DB,oD],null),new Q(null,2,5,S,[HC,qA],null),null,new Q(null,2,5,S,[kt,pA],null),new Q(null,2,5,S,[KE,Bx],null),new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,kt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pA))],null),null]))),Z(Et,N(Zq,qA,DE),aQ(N(zx,qA,DE),TP(new Q(null,2,5,S,[qA,DE],null),new Q(null,2,5,S,[qA,DE],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,qA,DE),Jz,function(e){return J(e)}],null),null)),Z(Lv,SC,Ab),Z(Bz,Lv,Lv),Z(ix,N(Zq,wB,wB),aQ(N(zx,hF,hF),TP(new Q(null,2,5,S,[wB,wB],null),new Q(null,2,5,S,[zb,zb],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,wB,wB),Jz,function(e){return J(e)}],null),null)),Z(fy,N(eD,T,new Q(null,1,5,S,[Lv],null),dD,new Q(null,2,5,S,[Bz,ix],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[Lv],null),new Q(null,2,5,S,[Bz,ix],null),null,new Q(null,2,5,S,[function(e){return J(e)},function(e){return M(e,X)}],null),function(e){return J(e)&&M(e,X)},new Q(null,2,5,S,[Yo,DB],null),new Q(null,1,5,S,[Lv],null),null,new Q(null,1,5,S,[X],null),new Q(null,2,5,S,[Bz,ix],null),new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X))],null),null]))),Z(No,fy,fy),Z(St,N(xy,fy,Jr,iB),aQ(fy,fy,new k(null,5,[Rv,!0,Jr,Le,Fo,iB,tD,N(xy,fy,Jr,iB),Jz,function(e){return Le(e)}],null),null)),Z(ly,N(Zq,wB,wB),aQ(N(zx,hF,hF),TP(new Q(null,2,5,S,[wB,wB],null),new Q(null,2,5,S,[zb,zb],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,wB,wB),Jz,function(e){return J(e)}],null),null)),Z(RC,vo,vo),Z(uG,N(eD,T,new Q(null,2,5,S,[Bz,No],null),dD,new Q(null,3,5,S,[St,ly,RC],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[Bz,No],null),new Q(null,3,5,S,[St,ly,RC],null),null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,Yo)},function(e){return M(e,ey)}],null),function(e){return J(e)&&M(e,Yo)&&M(e,ey)},new Q(null,3,5,S,[mE,Ev,qr],null),new Q(null,2,5,S,[Bz,No],null),null,new Q(null,2,5,S,[Yo,ey],null),new Q(null,3,5,S,[St,ly,RC],null),new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Yo)),N(V,new Q(null,1,5,S,[W],null),N(U,W,ey))],null),null]))),Z(yw,SC,Ab),Z(jo,N(Zq,yw,N(Zq,Lv,uG)),aQ(N(zx,yw,N(ap,Lv,uG)),TP(new Q(null,2,5,S,[yw,N(Zq,Lv,uG)],null),new Q(null,2,5,S,[yw,aQ(N(zx,Lv,uG),TP(new Q(null,2,5,S,[Lv,uG],null),new Q(null,2,5,S,[Lv,uG],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,Lv,uG),Jz,function(e){return J(e)}],null),null)],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,yw,N(Zq,Lv,uG)),Jz,function(e){return J(e)}],null),null)),Z(rG,SC,Ab),Z(gn,zC,zC),Z(SA,jB,jB),Z(BG,jB,jB),Z(gt,N(xy,jB,Jr,Jy),aQ(jB,jB,new k(null,5,[Rv,!0,Jr,Ge,Fo,Jy,tD,N(xy,jB,Jr,Jy),Jz,function(e){return Ge(e)}],null),null)),Z(bA,N(xy,jB,Jr,Jy),aQ(jB,jB,new k(null,5,[Rv,!0,Jr,Ge,Fo,Jy,tD,N(xy,jB,Jr,Jy),Jz,function(e){return Ge(e)}],null),null)),Z(km,jF,jF),Z(YB,N(eD,T,new Q(null,3,5,S,[Lv,km,BG],null),dD,new Q(null,3,5,S,[bA,Ly,Ul],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[Lv,km,BG],null),new Q(null,3,5,S,[bA,Ly,Ul],null),null,new Q(null,4,5,S,[function(e){return J(e)},function(e){return M(e,X)},function(e){return M(e,Fp)},function(e){return M(e,Ru)}],null),function(e){return J(e)&&M(e,X)&&M(e,Fp)&&M(e,Ru)},new Q(null,3,5,S,[wp,Ln,nC],null),new Q(null,3,5,S,[Lv,km,BG],null),null,new Q(null,3,5,S,[X,Fp,Ru],null),new Q(null,3,5,S,[bA,Ly,Ul],null),new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Fp)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Ru))],null),null]))),Z(Ul,N(Zq,rG,YB),aQ(N(zx,rG,YB),TP(new Q(null,2,5,S,[rG,YB],null),new Q(null,2,5,S,[rG,YB],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,rG,YB),Jz,function(e){return J(e)}],null),null)),Z(XD,rG,rG),Z(Jv,Mw,Pe),Z(HD,N(eD,T,new Q(null,4,5,S,[rG,Lv,Bs,SA],null),dD,new Q(null,5,5,S,[Jv,BG,bA,gt,Ul],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,4,5,S,[rG,Lv,Bs,SA],null),new Q(null,5,5,S,[Jv,BG,bA,gt,Ul],null),null,new Q(null,5,5,S,[function(e){return J(e)},function(e){return M(e,kt)},function(e){return M(e,X)},function(e){return M(e,Ty)},function(e){return M(e,bp)}],null),function(e){return J(e)&&M(e,kt)&&M(e,X)&&M(e,Ty)&&M(e,bp)},new Q(null,5,5,S,[zy,Ru,wp,rn,nC],null),new Q(null,4,5,S,[rG,Lv,Bs,SA],null),null,new Q(null,4,5,S,[kt,X,Ty,bp],null),new Q(null,5,5,S,[Jv,BG,bA,gt,Ul],null),new Q(null,5,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,kt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Ty)),N(V,new Q(null,1,5,S,[W],null),N(U,W,bp))],null),null]))),Z(ry,N(Zq,rG,HD),aQ(N(zx,rG,HD),TP(new Q(null,2,5,S,[rG,HD],null),new Q(null,2,5,S,[rG,HD],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,rG,HD),Jz,function(e){return J(e)}],null),null)),Z(tn,N(eD,dD,new Q(null,1,5,S,[Et],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[null,new Q(null,1,5,S,[Et],null),null,new Q(null,1,5,S,[function(e){return J(e)}],null),function(e){return J(e)},new Q(null,1,5,S,[hx],null),F,null,F,new Q(null,1,5,S,[Et],null),new Q(null,1,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W))],null),null]))),Z(By,N(Zq,N(Hp,X,Lv,Fm,N(zp,hG,Fm)),N(xy,jB,Jr,Jy)),aQ(N(zx,N(WD,X,Lv,Fm,N(Cu,Zt,Fm)),N(vm,jB,Jr,lx)),TP(new Q(null,2,5,S,[N(Hp,X,Lv,Fm,N(zp,hG,Fm)),N(xy,jB,Jr,Jy)],null),new Q(null,2,5,S,[WP(new Q(null,2,5,S,[X,Fm],null),new Q(null,2,5,S,[Lv,N(zp,hG,Fm)],null),new Q(null,2,5,S,[Lv,Ag(x,Fm)],null),null),aQ(jB,jB,new k(null,5,[Rv,!0,Jr,Ge,Fo,Jy,tD,N(xy,jB,Jr,Jy),Jz,function(e){return Ge(e)}],null),null)],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,N(Hp,X,Lv,Fm,N(zp,hG,Fm)),N(xy,jB,Jr,Jy)),Jz,function(e){return J(e)}],null),null)),Z(Or,Yv,Te),Z(mF,SC,Ab),Z(go,Yv,Te),Z(Ww,SC,Ab),Z(VD,SC,Ab),Z(qB,SC,Ab),Z(lp,SC,Ab),Z(qx,N(eD,T,new Q(null,6,5,S,[Or,mF,go,Ks,Ww,VD],null),dD,new Q(null,3,5,S,[qB,lp,vo],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,6,5,S,[Or,mF,go,Ks,Ww,VD],null),new Q(null,3,5,S,[qB,lp,vo],null),null,new Q(null,7,5,S,[function(e){return J(e)},function(e){return M(e,kt)},function(e){return M(e,Yo)},function(e){return M(e,bD)},function(e){return M(e,oD)},function(e){return M(e,Gt)},function(e){return M(e,uq)}],null),function(e){return J(e)&&M(e,kt)&&M(e,Yo)&&M(e,bD)&&M(e,oD)&&M(e,Gt)&&M(e,uq)},new Q(null,3,5,S,[Nx,pr,Gp],null),new Q(null,6,5,S,[Or,mF,go,Ks,Ww,VD],null),null,new Q(null,6,5,S,[kt,Yo,bD,oD,Gt,uq],null),new Q(null,3,5,S,[qB,lp,vo],null),new Q(null,7,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,kt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Yo)),N(V,new Q(null,1,5,S,[W],null),N(U,W,bD)),N(V,new Q(null,1,5,S,[W],null),N(U,W,oD)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Gt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,uq))],null),null]))),Z(Wp,N(Hp,Mr,On,WE,N(Zq,Or,qx)),WP(new Q(null,2,5,S,[Mr,WE],null),new Q(null,2,5,S,[On,N(Zq,Or,qx)],null),new Q(null,2,5,S,[Ee,aQ(N(zx,Or,qx),TP(new Q(null,2,5,S,[Or,qx],null),new Q(null,2,5,S,[Or,qx],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,Or,qx),Jz,function(e){return J(e)}],null),null)],null),null)),Z(zA,N(Zq,jB,Wp),aQ(N(zx,jB,Wp),TP(new Q(null,2,5,S,[jB,Wp],null),new Q(null,2,5,S,[jB,Wp],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,jB,Wp),Jz,function(e){return J(e)}],null),null)),Z(gv,Or,Or),Z(Qm,sC,sC),Z(mz,sC,sC),Z(aD,sC,sC),Z(Px,jB,jB),Z(er,N(eD,T,new Q(null,3,5,S,[Px,gv,Qm],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[Px,gv,Qm],null),null,null,new Q(null,4,5,S,[function(e){return J(e)},function(e){return M(e,Wm)},function(e){return M(e,Vo)},function(e){return M(e,jv)}],null),function(e){return J(e)&&M(e,Wm)&&M(e,Vo)&&M(e,jv)},F,new Q(null,3,5,S,[Px,gv,Qm],null),null,new Q(null,3,5,S,[Wm,Vo,jv],null),F,new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Wm)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Vo)),N(V,new Q(null,1,5,S,[W],null),N(U,W,jv))],null),null]))),Z(ot,N(Zq,aD,er),aQ(N(zx,aD,er),TP(new Q(null,2,5,S,[aD,er],null),new Q(null,2,5,S,[aD,er],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,aD,er),Jz,function(e){return J(e)}],null),null)),Z(Lx,jB,jB),Z(gG,N(eD,T,new Q(null,3,5,S,[Lx,gv,aD],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[Lx,gv,aD],null),null,null,new Q(null,4,5,S,[function(e){return J(e)},function(e){return M(e,bn)},function(e){return M(e,Vo)},function(e){return M(e,UC)}],null),function(e){return J(e)&&M(e,bn)&&M(e,Vo)&&M(e,UC)},F,new Q(null,3,5,S,[Lx,gv,aD],null),null,new Q(null,3,5,S,[bn,Vo,UC],null),F,new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,bn)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Vo)),N(V,new Q(null,1,5,S,[W],null),N(U,W,UC))],null),null]))),Z($F,N(Zq,Qm,gG),aQ(N(zx,Qm,gG),TP(new Q(null,2,5,S,[Qm,gG],null),new Q(null,2,5,S,[Qm,gG],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,Qm,gG),Jz,function(e){return J(e)}],null),null)),Z(bm,SC,Ab),Z(aE,bm,bm),Z(Zz,jB,jB),Z(Jw,N(eD,T,new Q(null,3,5,S,[Zz,gv,aD],null),dD,new Q(null,1,5,S,[aE],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[Zz,gv,aD],null),new Q(null,1,5,S,[aE],null),null,new Q(null,4,5,S,[function(e){return J(e)},function(e){return M(e,QB)},function(e){return M(e,Vo)},function(e){return M(e,UC)}],null),function(e){return J(e)&&M(e,QB)&&M(e,Vo)&&M(e,UC)},new Q(null,1,5,S,[kC],null),new Q(null,3,5,S,[Zz,gv,aD],null),null,new Q(null,3,5,S,[QB,Vo,UC],null),new Q(null,1,5,S,[aE],null),new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,QB)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Vo)),N(V,new Q(null,1,5,S,[W],null),N(U,W,UC))],null),null]))),Z(Gz,N(Zq,mz,Jw),aQ(N(zx,mz,Jw),TP(new Q(null,2,5,S,[mz,Jw],null),new Q(null,2,5,S,[mz,Jw],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,mz,Jw),Jz,function(e){return J(e)}],null),null)),Z(QC,jB,jB),Z(nr,N(eD,dr,new Q(null,2,5,S,[QC,Or],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[null,null,null,new Q(null,1,5,S,[function(e){return J(e)}],null),function(e){return J(e)},F,F,null,F,F,new Q(null,1,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W))],null),null]))),Z(Kx,N(Zq,mz,nr),aQ(N(zx,mz,nr),TP(new Q(null,2,5,S,[mz,nr],null),new Q(null,2,5,S,[mz,nr],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,mz,nr),Jz,function(e){return J(e)}],null),null)),Z(Mp,N(Zq,jB,N(xy,mz,Jr,Jy)),aQ(N(zx,jB,N(vm,mz,Jr,lx)),TP(new Q(null,2,5,S,[jB,N(xy,mz,Jr,Jy)],null),new Q(null,2,5,S,[jB,aQ(mz,mz,new k(null,5,[Rv,!0,Jr,Ge,Fo,Jy,tD,N(xy,mz,Jr,Jy),Jz,function(e){return Ge(e)}],null),null)],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,jB,N(xy,mz,Jr,Jy)),Jz,function(e){return J(e)}],null),null)),Z(lD,N(Zq,bm,Mp),aQ(N(zx,bm,Mp),TP(new Q(null,2,5,S,[bm,Mp],null),new Q(null,2,5,S,[bm,Mp],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,bm,Mp),Jz,function(e){return J(e)}],null),null)),Z(PF,N(eD,dD,new Q(null,7,5,S,[vo,zA,ot,$F,Gz,Kx,lD],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[null,new Q(null,7,5,S,[vo,zA,ot,$F,Gz,Kx,lD],null),null,new Q(null,1,5,S,[function(e){return J(e)}],null),function(e){return J(e)},new Q(null,7,5,S,[Gp,ew,Ux,Lp,Ey,wo,Iz],null),F,null,F,new Q(null,7,5,S,[vo,zA,ot,$F,Gz,Kx,lD],null),new Q(null,1,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W))],null),null]))),Z(Aw,sC,sC),Z(qp,SC,Ab),Z(dG,Hs,Bb),Z(Bw,N(eD,T,new Q(null,1,5,S,[qp],null),dD,new Q(null,2,5,S,[dG,hC],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[qp],null),new Q(null,2,5,S,[dG,hC],null),null,new Q(null,2,5,S,[function(e){return J(e)},function(e){return M(e,ND)}],null),function(e){return J(e)&&M(e,ND)},new Q(null,2,5,S,[xp,pn],null),new Q(null,1,5,S,[qp],null),null,new Q(null,1,5,S,[ND],null),new Q(null,2,5,S,[dG,hC],null),new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,ND))],null),null]))),Z(Ez,N(Zq,Aw,Bw),aQ(N(zx,Aw,Bw),TP(new Q(null,2,5,S,[Aw,Bw],null),new Q(null,2,5,S,[Aw,Bw],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,Aw,Bw),Jz,function(e){return J(e)}],null),null)),Z(uF,N(eD,dD,new Q(null,1,5,S,[Ez],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[null,new Q(null,1,5,S,[Ez],null),null,new Q(null,1,5,S,[function(e){return J(e)}],null),function(e){return J(e)},new Q(null,1,5,S,[Ey],null),F,null,F,new Q(null,1,5,S,[Ez],null),new Q(null,1,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W))],null),null]))),Z(kq,SC,Ab),Z(hu,Yv,Te),Z(xn,jB,jB),Z(Xq,sC,sC),Z($q,N(eD,T,new Q(null,2,5,S,[xn,Xq],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[xn,Xq],null),null,null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,iD)},function(e){return M(e,Nw)}],null),function(e){return J(e)&&M(e,iD)&&M(e,Nw)},F,new Q(null,2,5,S,[xn,Xq],null),null,new Q(null,2,5,S,[iD,Nw],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,iD)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Nw))],null),null]))),Z(Rq,sC,sC),Z(eE,SC,Ab),Z(KA,Mw,Pe),Z(gA,N(eD,dr,new Q(null,2,5,S,[eE,KA],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[null,null,null,new Q(null,1,5,S,[function(e){return J(e)}],null),function(e){return J(e)},F,F,null,F,F,new Q(null,1,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W))],null),null]))),Z(SE,kq,kq),Z(YA,new uj(null,new k(null,2,[jn,"null",cz,"null"],null),null),new uj(null,new k(null,2,[jn,null,cz,null],null),null)),Z(cu,N(eD,T,new Q(null,2,5,S,[eE,YA],null),dD,new Q(null,3,5,S,[cq,gA,qA],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[eE,YA],null),new Q(null,3,5,S,[cq,gA,qA],null),null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,kt)},function(e){return M(e,X)}],null),function(e){return J(e)&&M(e,kt)&&M(e,X)},new Q(null,3,5,S,[Pw,cz,pA],null),new Q(null,2,5,S,[eE,YA],null),null,new Q(null,2,5,S,[kt,X],null),new Q(null,3,5,S,[cq,gA,qA],null),new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,kt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X))],null),null]))),Z(Pr,N(Zq,Rq,cu),aQ(N(zx,Rq,cu),TP(new Q(null,2,5,S,[Rq,cu],null),new Q(null,2,5,S,[Rq,cu],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,Rq,cu),Jz,function(e){return J(e)}],null),null)),Z(lr,Yv,Te),Z(hw,cu,cu),Z(Lu,N(eD,T,new Q(null,2,5,S,[DA,sw],null),dD,new Q(null,6,5,S,[nm,PF,tn,uF,hw,qA],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[DA,sw],null),new Q(null,6,5,S,[nm,PF,tn,uF,hw,qA],null),null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,$s)},function(e){return M(e,Uz)}],null),function(e){return J(e)&&M(e,$s)&&M(e,Uz)},new Q(null,6,5,S,[Vt,CF,zr,tF,Sv,pA],null),new Q(null,2,5,S,[DA,sw],null),null,new Q(null,2,5,S,[$s,Uz],null),new Q(null,6,5,S,[nm,PF,tn,uF,hw,qA],null),new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,$s)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Uz))],null),null]))),Z(pw,N(Zq,jB,Lu),aQ(N(zx,jB,Lu),TP(new Q(null,2,5,S,[jB,Lu],null),new Q(null,2,5,S,[jB,Lu],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,jB,Lu),Jz,function(e){return J(e)}],null),null)),Z(bz,N(Zq,N(Hp,Gy,SC,Er,new uj(null,new k(null,1,[qv,"null"],null),null)),N(xy,jB)),aQ(N(zx,N(WD,Gy,oC,Er,new uj(null,new k(null,1,[qv,"null"],null),null)),N(vm,jB)),TP(new Q(null,2,5,S,[N(Hp,Gy,SC,Er,new uj(null,new k(null,1,[qv,"null"],null),null)),N(xy,jB)],null),new Q(null,2,5,S,[WP(new Q(null,2,5,S,[Gy,Er],null),new Q(null,2,5,S,[SC,new uj(null,new k(null,1,[qv,"null"],null),null)],null),new Q(null,2,5,S,[Ab,new uj(null,new k(null,1,[qv,null],null),null)],null),null),aQ(jB,jB,new k(null,4,[Rv,!0,Fo,null,tD,N(xy,jB),Jz,function(e){return Fe(e)}],null),null)],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,N(Hp,Gy,SC,Er,new uj(null,new k(null,1,[qv,"null"],null),null)),N(xy,jB)),Jz,function(e){return J(e)}],null),null)),Z(QF,N(xy,jB),aQ(jB,jB,new k(null,4,[Rv,!0,Fo,null,tD,N(xy,jB),Jz,function(e){return Fe(e)}],null),null)),Z(Yz,Nt,Nt),Z(im,jo,jo),Z(Yy,By,By),Z(nB,N(Zq,sw,jB),aQ(N(zx,sw,jB),TP(new Q(null,2,5,S,[sw,jB],null),new Q(null,2,5,S,[sw,jB],null)),new k(null,7,[Um,function(e,t){return ee(t,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,sw,jB),Jz,function(e){return J(e)}],null),null)),Z(ns,Hs,Bb),Z(Vv,SC,Ab),Z(XA,un,pf),Z(ty,N(eD,T,new Q(null,2,5,S,[Vv,XA],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[Vv,XA],null),null,null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,jw)},function(e){return M(e,Zu)}],null),function(e){return J(e)&&M(e,jw)&&M(e,Zu)},F,new Q(null,2,5,S,[Vv,XA],null),null,new Q(null,2,5,S,[jw,Zu],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,jw)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Zu))],null),null]))),Z(ID,SC,Ab),Z(lo,N(eD,T,new Q(null,2,5,S,[ty,ID],null),dD,new Q(null,11,5,S,[ns,Ny,pw,bz,QF,nB,Yz,Pr,ry,im,Yy],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[ty,ID],null),new Q(null,11,5,S,[ns,Ny,pw,bz,QF,nB,Yz,Pr,ry,im,Yy],null),null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,pq)},function(e){return M(e,ho)}],null),function(e){return J(e)&&M(e,pq)&&M(e,ho)},new Q(null,11,5,S,[Cv,PE,wG,xB,Ip,Du,YC,nn,Lo,Dz,zu],null),new Q(null,2,5,S,[ty,ID],null),null,new Q(null,2,5,S,[pq,ho],null),new Q(null,11,5,S,[ns,Ny,pw,bz,QF,nB,Yz,Pr,ry,im,Yy],null),new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pq)),N(V,new Q(null,1,5,S,[W],null),N(U,W,ho))],null),null]))),Z(Kn,SC,Ab),Z(XE,tA,yf);var uQ,K2=Fg(P),L2=Fg(P),M2=Fg(P),N2=Fg(P),O2=u.j(P,fu,Kk.A?Kk.A():Kk.call(null));function AQ(e){if(null!=e&&null!=e.Yc)e=e.Yc(e);else{var t=AQ[ba(null==e?null:e)];if(null!=t)e=t.g?t.g(e):t.call(null,e);else{if(null==(t=AQ._))throw Eb("Domain.info",e);e=t.g?t.g(e):t.call(null,e)}}return e}function BQ(e,t){if(null!=e&&null!=e.Zc)e=e.Zc(e,t);else{var n=BQ[ba(null==e?null:e)];if(null!=n)e=n.h?n.h(e,t):n.call(null,e,t);else{if(null==(n=BQ._))throw Eb("Domain.init",e);e=n.h?n.h(e,t):n.call(null,e,t)}}return e}function CQ(e,t){if(null!=e&&null!=e.Wc)e=e.Wc(e,t);else{var n=CQ[ba(null==e?null:e)];if(null!=n)e=n.h?n.h(e,t):n.call(null,e,t);else{if(null==(n=CQ._))throw Eb("Domain.destroy",e);e=n.h?n.h(e,t):n.call(null,e,t)}}return e}function DQ(e,t,n){if(null!=e&&null!=e.Xc)e=e.Xc(e,t,n);else{var r=DQ[ba(null==e?null:e)];if(null!=r)e=r.j?r.j(e,t,n):r.call(null,e,t,n);else{if(null==(r=DQ._))throw Eb("Domain.handle-message",e);e=r.j?r.j(e,t,n):r.call(null,e,t,n)}}return e}function EQ(e,t,n,r,i,o,l){this.id=e,this.cc=t,this.source=n,this.options=r,this.D=i,this.m=o,this.G=l,this.B=2230716170,this.M=139264}uQ=new Yk(Bd.h("gateway.common.spec.messages","message-body"),X,O2,K2,L2,M2,N2),Z(To,SC,Ab),Z(Vw,SC,Ab),Z(or,N(jz,jB),nQ(jB,jB,null)),Z(KG,N(eD,T,new Q(null,2,5,S,[Kn,XE],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[Kn,XE],null),null,null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,wu)},function(e){return M(e,X)}],null),function(e){return J(e)&&M(e,wu)&&M(e,X)},F,new Q(null,2,5,S,[Kn,XE],null),null,new Q(null,2,5,S,[wu,X],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,wu)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X))],null),null]))),Z(Ix,N(eD,T,new Q(null,2,5,S,[sC,jB],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[sC,jB],null),null,null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,UC)},function(e){return M(e,pG)}],null),function(e){return J(e)&&M(e,UC)&&M(e,pG)},F,new Q(null,2,5,S,[sC,jB],null),null,new Q(null,2,5,S,[UC,pG],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,UC)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pG))],null),null]))),Z(TA,N(eD,T,new Q(null,1,5,S,[jB],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[jB],null),null,null,new Q(null,2,5,S,[function(e){return J(e)},function(e){return M(e,pG)}],null),function(e){return J(e)&&M(e,pG)},F,new Q(null,1,5,S,[jB],null),null,new Q(null,1,5,S,[pG],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pG))],null),null]))),Z(Ko,N(Xy,KG,TA),ZP(new Q(null,2,5,S,[KG,TA],null),new Q(null,2,5,S,[KG,TA],null),null)),Z(Ql,N(Xy,KG,TA,N(eD,T,new Q(null,1,5,S,[sC],null))),ZP(new Q(null,3,5,S,[KG,TA,N(eD,T,new Q(null,1,5,S,[sC],null))],null),new Q(null,3,5,S,[KG,TA,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[sC],null),null,null,new Q(null,2,5,S,[function(e){return J(e)},function(e){return M(e,UC)}],null),function(e){return J(e)&&M(e,UC)},F,new Q(null,1,5,S,[sC],null),null,new Q(null,1,5,S,[UC],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,UC))],null),null]))],null),null)),uQ.C(null,Cx,(function(){return ZP(new Q(null,2,5,S,[KG,N(eD,T,new Q(null,2,5,S,[To,Vw],null),dD,new Q(null,1,5,S,[or],null))],null),new Q(null,2,5,S,[KG,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[To,Vw],null),new Q(null,1,5,S,[or],null),null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,pE)},function(e){return M(e,In)}],null),function(e){return J(e)&&M(e,pE)&&M(e,In)},new Q(null,1,5,S,[pG],null),new Q(null,2,5,S,[To,Vw],null),null,new Q(null,2,5,S,[pE,In],null),new Q(null,1,5,S,[or],null),new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pE)),N(V,new Q(null,1,5,S,[W],null),N(U,W,In))],null),null]))],null),null)})),uQ.C(null,jC,(function(){return ZP(new Q(null,2,5,S,[KG,N(eD,dD,new Q(null,1,5,S,[or],null))],null),new Q(null,2,5,S,[KG,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[null,new Q(null,1,5,S,[or],null),null,new Q(null,1,5,S,[function(e){return J(e)}],null),function(e){return J(e)},new Q(null,1,5,S,[pG],null),F,null,F,new Q(null,1,5,S,[or],null),new Q(null,1,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W))],null),null]))],null),null)})),Z(gr,N(Gx,yF,X),RP(yF,new Cd((function(){return uQ}),yF,Ri([Rs,Yo,CD,so,rs,cw,MG,oo,KC,wD],[Fn,hv,"gateway/common/spec/messages.cljc",23,1,8,8,Id,null,n(uQ)?uQ.md:null])))),Z(tp,yE,yE),Z(EE,N(eD,T,new Q(null,2,5,S,[DA,gr],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[DA,gr],null),null,null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,$s)},function(e){return M(e,Ro)}],null),function(e){return J(e)&&M(e,$s)&&M(e,Ro)},F,new Q(null,2,5,S,[DA,gr],null),null,new Q(null,2,5,S,[$s,Ro],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,$s)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Ro))],null),null]))),Z(dE,N(eD,T,new Q(null,2,5,S,[tp,gr],null),dD,new Q(null,1,5,S,[DA],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[tp,gr],null),new Q(null,1,5,S,[DA],null),null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,tB)},function(e){return M(e,Ro)}],null),function(e){return J(e)&&M(e,tB)&&M(e,Ro)},new Q(null,1,5,S,[$s],null),new Q(null,2,5,S,[tp,gr],null),null,new Q(null,2,5,S,[tB,Ro],null),new Q(null,1,5,S,[DA],null),new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,tB)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Ro))],null),null]))),Z(xo,N(jz,N(xy,dE)),nQ(N(xy,dE),aQ(dE,dE,new k(null,4,[Rv,!0,Fo,null,tD,N(xy,dE),Jz,function(e){return Fe(e)}],null),null),null)),Z(NE,Mw,Pe),Z(uv,N(eD,T,new Q(null,1,5,S,[NE],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[NE],null),null,null,new Q(null,2,5,S,[function(e){return J(e)},function(e){return M(e,gz)}],null),function(e){return J(e)&&M(e,gz)},F,new Q(null,1,5,S,[NE],null),null,new Q(null,1,5,S,[gz],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,gz))],null),null]))),uQ.C(null,nG,(function(){return ZP(new Q(null,2,5,S,[Ko,N(eD,T,new Q(null,3,5,S,[dz,sw,uv],null))],null),new Q(null,2,5,S,[Ko,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[dz,sw,uv],null),null,null,new Q(null,4,5,S,[function(e){return J(e)},function(e){return M(e,Fr)},function(e){return M(e,Uz)},function(e){return M(e,rb)}],null),function(e){return J(e)&&M(e,Fr)&&M(e,Uz)&&M(e,rb)},F,new Q(null,3,5,S,[dz,sw,uv],null),null,new Q(null,3,5,S,[Fr,Uz,rb],null),F,new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Fr)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Uz)),N(V,new Q(null,1,5,S,[W],null),N(U,W,rb))],null),null]))],null),null)})),Z(WB,jB,jB),uQ.C(null,$w,(function(){return ZP(new Q(null,2,5,S,[Ko,N(eD,T,new Q(null,3,5,S,[WB,To,Vw],null))],null),new Q(null,2,5,S,[Ko,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[WB,To,Vw],null),null,null,new Q(null,4,5,S,[function(e){return J(e)},function(e){return M(e,rw)},function(e){return M(e,pE)},function(e){return M(e,In)}],null),function(e){return J(e)&&M(e,rw)&&M(e,pE)&&M(e,In)},F,new Q(null,3,5,S,[WB,To,Vw],null),null,new Q(null,3,5,S,[rw,pE,In],null),F,new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,rw)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pE)),N(V,new Q(null,1,5,S,[W],null),N(U,W,In))],null),null]))],null),null)})),Z(xu,N(jz,N(zx,N(jz,lo),N(jz,N(xy,dE)))),nQ(N(zx,N(jz,lo),N(jz,N(xy,dE))),TP(new Q(null,2,5,S,[N(jz,lo),N(jz,N(xy,dE))],null),new Q(null,2,5,S,[nQ(lo,lo,null),nQ(N(xy,dE),aQ(dE,dE,new k(null,4,[Rv,!0,Fo,null,tD,N(xy,dE),Jz,function(e){return Fe(e)}],null),null),null)],null)),null)),h=EQ.prototype,h.na=function(e,t){return this.P(null,t,null)},h.P=function(e,t,n){switch(t instanceof w?t.W:null){case"id":return this.id;case"identity":return this.cc;case"source":return this.source;case"options":return this.options;default:return u.j(this.m,t,n)}},h.Ka=function(e,t,n){return Nb.j((function(e,n){var r=G(n,0,null);return n=G(n,1,null),t.j?t.j(e,r,n):t.call(null,e,r,n)}),n,this)},h.U=function(e,t,n){return Tj(t,(function(e){return Tj(t,bk,""," ","",n,e)}),"#gateway.state.peers.Peer{",", ","}",n,Of.h(new Q(null,4,5,S,[new Q(null,2,5,S,[kt,this.id],null),new Q(null,2,5,S,[Uz,this.cc],null),new Q(null,2,5,S,[$s,this.source],null),new Q(null,2,5,S,[Vt,this.options],null)],null),this.m))},h.xa=function(){return new Yh(this,4,new Q(null,4,5,S,[kt,Uz,$s,Vt],null),n(this.m)?nd(this.m):eg())},h.R=function(){return this.D},h.da=function(){return 4+C(this.m)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=802532213^Pd(this)},h.aa=function(e,t){return null!=t&&this.constructor===t.constructor&&x.h(this.id,t.id)&&x.h(this.cc,t.cc)&&x.h(this.source,t.source)&&x.h(this.options,t.options)&&x.h(this.m,t.m)},h.bb=function(e,t){return M(new uj(null,new k(null,4,[Uz,null,$s,null,kt,null,Vt,null],null),null),t)?we.h(Bc(ah.h(P,this),this.D),t):new EQ(this.id,this.cc,this.source,this.options,this.D,dg(we.h(this.m,t)),null)},h.za=function(e,t){switch(t instanceof w?t.W:null){case"id":case"identity":case"source":case"options":return!0;default:return M(this.m,t)}},h.ja=function(e,t,r){return n(O.h?O.h(kt,t):O.call(null,kt,t))?new EQ(r,this.cc,this.source,this.options,this.D,this.m,null):n(O.h?O.h(Uz,t):O.call(null,Uz,t))?new EQ(this.id,r,this.source,this.options,this.D,this.m,null):n(O.h?O.h($s,t):O.call(null,$s,t))?new EQ(this.id,this.cc,r,this.options,this.D,this.m,null):n(O.h?O.h(Vt,t):O.call(null,Vt,t))?new EQ(this.id,this.cc,this.source,r,this.D,this.m,null):new EQ(this.id,this.cc,this.source,this.options,this.D,I.j(this.m,t,r),null)},h.ca=function(){return z(Of.h(new Q(null,4,5,S,[new xh(kt,this.id),new xh(Uz,this.cc),new xh($s,this.source),new xh(Vt,this.options)],null),this.m))},h.S=function(e,t){return new EQ(this.id,this.cc,this.source,this.options,t,this.m,this.G)},h.ia=function(e,t){return Le(t)?this.ja(null,Zb(t,0),Zb(t,1)):Nb.j(Xb,this,t)};var FQ=function e(t){switch(arguments.length){case 2:return e.h(arguments[0],arguments[1]);case 3:return e.j(arguments[0],arguments[1],arguments[2]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}};function GQ(e,t){if(null==t)throw cl("Peer id is missing",P);if(n(e=FQ.h(e,t)))return e;throw cl(["Unable to find peer with id ",p.g(t)].join(""),P)}function HQ(e,t,r){if(null==t)throw cl("Peer id is missing",P);if(n(e=FQ.j(e,t,r)))return e;throw cl(["Unable to find peer with id ",p.g(t)," in domain ",p.g(r)].join(""),P)}function IQ(e){return x.h(gz,dh.h(e,new Q(null,2,5,S,[$s,X],null)))}function JQ(e,t){return wk(D([Ng.g(Ag(FQ,e)),dh.h(e,new Q(null,2,5,S,[JB,t],null))]))}function KQ(e,t){var n=X.g(t);switch(n instanceof w?n.W:null){case"node":return x.h(zt.g(t),zt.g(e));case"peer":return x.h(zt.g(t),zt.g(e))&&x.h(em.g(t),em.g(e));case"local":return x.h(oz.g(t),oz.g(e));default:return!1}}function LQ(e,t){return wk(D([zg.h(Ng.g(Hh),Xg.g((function(e){return KQ($s.g(e),t)}))),wG.g(e)]))}function MQ(e,t,n){return wk(D([Xg.g((function(e){return KQ($s.g(e),t)})),JQ(e,n)]))}function NQ(e,t,r,i,o,l){var s,a=FQ.h(e,r);if(n(a)){var u=a;return new Q(null,2,5,S,[e,u],null)}s=new EQ(r,i,t,l,null,null,null),u=n(o)?I.j(s,Sv,o):s;var c=xr.h(i,qv);return a=function(){var t=eh(fh.F(eh(e,new Q(null,2,5,S,[Du,i],null),r),new Q(null,2,5,S,[xB,c],null),Dg(re,wj),r),new Q(null,2,5,S,[wG,r],null),u);return n(cp.g(l))?hh(t,Ip,Dg(re,wj),r):t}(),new Q(null,2,5,S,[a,u],null)}function OQ(e,t){var n=Uz.g(t),r=kt.g(t),i=xr.h(n,qv);return hh(hh(gh(hh(e,Du,we,n),xB,(function(e){var t=De.h(u.h(e,i),r);return z(t)?I.j(e,i,t):we.h(e,i)})),wG,we,r),Ip,Dg(De,wj),r)}function PQ(e,t,n){return eh(e,new Q(null,2,5,S,[wG,t],null),n)}function QQ(e){for(var t=[],n=arguments.length,r=0;rn?"-":"+"];n=Math.abs(n),r.push(Math.floor(n/60)%100),0!=(n%=60)&&r.push(":",Ya(n,2)),n=r.join("")}return t.df=n,0==(n=e)?n="UTC":(r=["UTC",0>n?"+":"-"],n=Math.abs(n),r.push(Math.floor(n/60)%100),0!=(n%=60)&&r.push(":",n),n=r.join("")),e=aR(e),t.ef=[n,n],t.cd={ii:e,nf:e},t.xe=[],t}return(t=new ZQ).df=e.id,t.ve=-e.std_offset,t.ef=e.names,t.cd=e.names_ext,t.xe=e.transitions,t}function aR(e){var t=["GMT"];return t.push(0>=e?"+":"-"),e=Math.abs(e),t.push(Ya(Math.floor(e/60)%100,2),":",Ya(e%60,2)),t.join("")}function bR(e,t){t=Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes())/36e5;for(var n=0;n=e.xe[n];)n+=2;return 0==n?0:e.xe[n-1]}function cR(e){this.qe=[],this.Ha=XQ,"number"==typeof e?dR(this,e):eR(this,e)}XQ=WQ;var fR=[/^'(?:[^']|'')*('|$)/,/^(?:G+|y+|Y+|M+|k+|S+|E+|a+|h+|K+|H+|c+|L+|Q+|d+|m+|s+|v+|V+|w+|z+|Z+)/,/^[^'GyYMkSEahKHcLQdmsvVwzZ]+/];function gR(e){return e.getHours?e.getHours():0}function eR(e,t){for(;t;){const n=t;for(let n=0;nt)n=e.Ha.kf[t];else if(8>t)n=e.Ha.pf[t-4];else{if(!(12>t))return void dR(e,10);n=e.Ha.hg[t-8],n=n.replace("{1}",e.Ha.kf[t-8]),n=n.replace("{0}",e.Ha.pf[t-8])}eR(e,n)}function jR(e,t){{t=String(t);const n=e.Ha||XQ;if(void 0!==n.yg){e=[];for(let r=0;r=i?String.fromCharCode(n.yg+i-48):t.charAt(r))}t=e.join("")}}return t}cR.prototype.format=function(e,t){if(!e)throw Error("The date to format must be non-null.");var n=t?6e4*(e.getTimezoneOffset()-(t.ve-bR(t,e))):0;let r=n?new Date(e.getTime()+n):e,i=r;t&&r.getTimezoneOffset()!=e.getTimezoneOffset()&&(r=new Date(r.getTime()+6e4*(r.getTimezoneOffset()-e.getTimezoneOffset())),i=new Date(e.getTime()+(n+(0(n=r.getFullYear())&&(n=-n),2==l&&(n%=100),jR(e,Ya(n,l));case"Y":return 0>(n=new Date(YQ(r.getFullYear(),r.getMonth(),r.getDate(),e.Ha.mf,e.Ha.lf)).getFullYear())&&(n=-n),2==l&&(n%=100),jR(e,Ya(n,l));case"M":e:switch(n=r.getMonth(),l){case 5:l=e.Ha.mg[n];break e;case 4:l=e.Ha.lg[n];break e;case 3:l=e.Ha.og[n];break e;default:l=jR(e,Ya(n+1,l))}return l;case"k":return kR(i),jR(e,Ya(gR(i)||24,l));case"S":return jR(e,(i.getMilliseconds()/1e3).toFixed(Math.min(3,l)).substr(2)+(3l?1:0];case"h":return kR(i),jR(e,Ya(gR(i)%12||12,l));case"K":return kR(i),jR(e,Ya(gR(i)%12,l));case"H":return kR(i),jR(e,Ya(gR(i),l));case"c":e:switch(n=r.getDay(),l){case 5:l=e.Ha.tg[n];break e;case 4:l=e.Ha.wg[n];break e;case 3:l=e.Ha.vg[n];break e;default:l=jR(e,Ya(n,1))}return l;case"L":e:switch(n=r.getMonth(),l){case 5:l=e.Ha.sg[n];break e;case 4:l=e.Ha.rg[n];break e;case 3:l=e.Ha.ug[n];break e;default:l=jR(e,Ya(n+1,l))}return l;case"Q":return n=Math.floor(r.getMonth()/3),4>l?e.Ha.pg[n]:e.Ha.ng[n];case"d":return jR(e,Ya(r.getDate(),l));case"m":return kR(i),jR(e,Ya(i.getMinutes(),l));case"s":return kR(i),jR(e,Ya(i.getSeconds(),l));case"v":return(l=o||$Q(n.getTimezoneOffset())).df;case"V":return e=o||$Q(n.getTimezoneOffset()),2>=l?e.df:0l?e.ef[0l?(e=[0>(l=-(t.ve-bR(t,n)))?"-":"+"],l=Math.abs(l),e.push(Ya(Math.floor(l/60)%100,2),Ya(l%60,2)),l=e.join("")):l=jR(e,aR(t.ve-bR(t,n))),l;default:return""}}function lR(e,t){var n=Yf(Cj,e,t);return ke(n,Yg.h((function(e){return n===e}),t))}function mR(e,t){return C(e)e||x.h(t,e)&&(r>l||x.h(r,l)&&i>=o)))throw cl("Insufficient `com.taoensso/encore` version, you may have a dependency conflict: see http://goo.gl/qBbLvC for solutions.",new k(null,2,[Xu,RI(".",new Q(null,3,5,S,[e,l,o],null)),kB,RI(".",new Q(null,3,5,S,[t,r,i],null))],null))}var DR=function e(t){switch(arguments.length){case 3:return e.j(arguments[0],arguments[1],arguments[2]);case 2:return e.h(arguments[0],arguments[1]);default:for(var n=[],r=arguments.length,i=0;it?0:t;var n=C(e);return t>=n?F:Nh(e,t,n)},ER.j=function(e,t,n){t=0>t?0:t;var r=jf(C(e));return t>=(n=n>r?r:n)?F:Nh(e,t,n)},ER.I=3;var FR=function e(t){switch(arguments.length){case 2:return e.h(arguments[0],arguments[1]);case 3:return e.j(arguments[0],arguments[1],arguments[2]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}};function GR(e){return 1=Math.random()&&(Gg(i,null),Ig.h(o,(function(e){return Zc(af((function(e,t,r){return Ee(r=af((function(e,t,r){var i=u.h(l,t);return n(i)?s>=r.ff+i.$e?we.h(e,t):e:we.h(e,t)}),r,r))?ad(e,t):$c(e,t,r)}),Xc(n(e)?e:P),e))})));;){var a=r(o),c=u.h(a,e),h=null==c?null:af(function(e,t,r,i,o,l){return function(e,t,i){var o=u.h(l,t);return n(o)?i.n=(i=i.ff+o.$e-r)?e:null==e?new JR(ve([t,i]),t,i):i>e.jf?new JR(I.j(e.Ye,t,i),t,i):new JR(I.j(e.Ye,t,i),e.fg,e.jf):e}}(0,0,s,0,0,l),null,c);return n(n(t)?t:h)?n(t=h)?new Q(null,3,5,S,[(e=t).fg,e.jf,e.Ye],null):null:(n(t=r(i))||(c=af(function(e,t,r,i,o){return function(e,t,i){var l=I.j,s=u.h(r,t);if(n(s)){var a=s.ff;i=o>=a+i.$e?new IR(1,o):new IR(s.n+1,a)}else i=new IR(1,o);return l.call(I,e,t,i)}}(0,0,c,0,s),c,l),Gg(o,I.j(a,e,c))),null)}}if(Ee(e))return new Q(null,2,5,S,[null,yg(null)],null);var i=Fg(null),o=Fg(null),l=KR(e);return new Q(null,2,5,S,[o,function(){function e(e,r){if(n(O.h?O.h(e,wr):O.call(null,e,wr)))return n(O.h?O.h(r,VA):O.call(null,r,VA))?Gg(o,null):Ig.j(o,we,r),null;if(n(O.h?O.h(e,DD):O.call(null,e,DD)))return t(r,!0);throw cl("Unrecognized rate limiter command",new k(null,2,[Po,e,Hq,r],null))}function r(e){return t(e,!1)}function i(){return t(null,!1)}var l;return l=function(t,n){switch(arguments.length){case 0:return i.call(this);case 1:return r.call(this,t);case 2:return e.call(this,t,n)}throw Error("Invalid arity: "+arguments.length)},l.A=i,l.g=r,l.h=e,l}()],null)}FR.h=function(e,t){var n=C(e);return 0>t?Nh(e,0>(t+=n)?0:t,n):t>=n?F:Nh(e,t,n)},FR.j=function(e,t,n){if(0>=n)return F;var r=jf(C(e));return 0>t?Nh(e,t=0>(t+=r)?0:t,(n=t+n)>r?r:n):t>=(r=(n=t+n)>r?r:n)?F:Nh(e,t,r)},FR.I=3,function(){var e,t=Ia(AR,Cf("performance"),null);if(n(t)){var r=n(e=Ia(t,Cf("now"),null))||n(e=Ia(t,Cf("mozNow"),null))||n(e=Ia(t,Cf("msNow"),null))||n(e=Ia(t,Cf("oNow"),null))?e:Ia(t,Cf("webkitNow"),null);return n(r)?function(){return 1e6*jf(r.call(t))}:function(){return 1e6*(new Date).getTime()}}}();var MR=function(){function e(e){return new Za(e)}function t(){return new Za}var n;return n=function(n){switch(arguments.length){case 0:return t.call(this);case 1:return e.call(this,n)}throw Error("Invalid arity: "+arguments.length)},n.A=t,n.g=e,n}(),NR=function(){function e(e,t){return e=e instanceof Za?e:MR.g(p.g(e)),t=p.g(t),e.append(t)}function t(e){return e instanceof Za?e:MR.g(p.g(e))}function n(){return MR.A()}var r;return r=function(r,i){switch(arguments.length){case 0:return n.call(this);case 1:return t.call(this,r);case 2:return e.call(this,r,i)}throw Error("Invalid arity: "+arguments.length)},r.A=n,r.g=t,r.h=e,r}();function OR(e,t){if(n(n(" ")?cg.h(" ",""):" ")){var r=Vg(),i=cf(NR,p);return n(e)?df(zg.h(e,r),i,t):df(r,i,t)}return n(e)?df(e,cf(NR,p),t):p.g(Nb.h(NR,t))}var PR=function e(t){switch(arguments.length){case 2:return e.h(arguments[0],arguments[1]);case 3:return e.j(arguments[0],arguments[1],arguments[2]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}};PR.h=function(e,t){return e.substring(t)},PR.j=function(e,t,n){return t>=n?"":e.substring(t,n)},PR.I=3;var QR=function e(t){switch(arguments.length){case 2:return e.h(arguments[0],arguments[1]);case 3:return e.j(arguments[0],arguments[1],arguments[2]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}};function RR(e){return void 0===e||null==e?"nil":e}QR.h=function(e,t){return wR(e.substr(t))},QR.j=function(e,t,n){return wR(e.substr(t,n))},QR.I=3,bh.h(p,"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_");var SR=function e(t){for(var n=[],r=arguments.length,i=0;i=(lS.g?lS.g(t):lS.call(null,t))}var nS=Hk((function(e){return YR(e)})),oS=Hk((function(e,t){return(e=nS(e)).g?e.g(t):e.call(null,t)}));function pS(e,t){return e=n(xe.g?xe.g(e):xe.call(null,e))?e.g?e.g(t):e.call(null,t):oS(e,t),!!n(e)}var qS=Hk((function(e,t){return zR((function(e){var r=G(e,0,null);return e=G(e,1,null),n(oS(r,t))?kS(e):null}),e)}));function rS(e,t,r){return e=n(t=Le(t)?qS(t,r):t)?t:e,kS.g?kS.g(e):kS.call(null,e)}function sS(e){if(n(e)){var t=xj([F,wj]);e=n(t=t.g?t.g(e):t.call(null,e))?null:e}else e=null;return e}function tS(e,t){return e=sS(e),t=sS(t),n(n(e)?e:t)?new k(null,2,[uu,e,At,t],null):null}function uS(e,t,r,i){var o,l=n(i)?i:gS;return o=n(o=u.h(l,ny))?o:u.h(l,bE),i=rS.j?rS.j(e,o,r):rS.call(null,e,o,r),!!n(mS.h?mS.h(t,i):mS.call(null,t,i))&&(t=function(){var e=u.h(l,Dt);if(n(e))return e;e=u.h(l,QE);var t=u.h(l,uy);return tS.h?tS.h(e,t):tS.call(null,e,t)}(),!n(t)||!!n(pS.h?pS.h(t,r):pS.call(null,t,r)))}function vS(e){return OR(Ng.g((function(e){return Ke(e=RR(e))?hk.l(D([e])):e})),e)}var wS=Hk((function(e,t){return G(e=LR(t),0,null),G(e,1,null)}));function xS(e,t){var r,i=O.h?O.h(au,au):O.call(null,au,au),o=O.h?O.h(e,uE):O.call(null,e,uE),l=G(t,0,null);if(n(n(i)?l instanceof Error:i)){e=l;var s=null,a=GR(t);return t=n(o)?G(a,0,null):null,o=n(o)?GR(a):a,new Q(null,4,5,S,[e,s,t,o],null)}s=n((r=J(l))?rb.g(Ae(l)):r)?l:null,e=function(){var e=Pm.g(s);return n(e)?e:n(i)?null:au}();var u=we.h(s,Pm);return a=n(u)?GR(t):t,t=n(o)?G(a,0,null):null,o=n(o)?GR(a):a,new Q(null,4,5,S,[e,u,t,o],null)}function yS(e,t,i,o,l,s){var a,c=gS;if(uS(fC,e,t,c)){var h=new Date;l=r(l);var d=G(l=xS(o,l),0,null),f=G(l,1,null),g=G(l,2,null);if(l=G(l,3,null),h=re.h(n(null)?null:P,Ri([Eu,Wl,Ts,$r,FG,Qq,jy,bE,Gs,Fp,Qo,ZD,Iw,RD],[h,null,c,l,null,(a=new uj(null,new k(null,2,[ds,null,Cx,null],null),null),a.g?a.g(e):a.call(null,e)),t,e,d,null,i,new qk((function(){return d})),f,g])),h=Nb.j((function(e,t){return null==(e=t.g?t.g(e):t.call(null,e))?Td(null):e}),h,cv.g(c)),n(h)){l=bg(h);var w=u.h(l,$r);h=I.j(h,et,new qk((function(){return w})));var m=DR.l(h,hn,new qk((function(){if(x.h(null,o))return"";if(x.h(lE,o))return vS(w);if(x.h(uE,o)){if("string"!=typeof g)throw cl("Timbre format-style logging call without a format pattern (string)",new k(null,2,[bE,e,aq,[p.g(n(t)?t:n(null)?null:"?"),":",p.g(n(i)?i:"?")].join("")],null));return Yf(SN,n(g)?g:"",bh.h(RR,w))}throw Error(["No matching clause: ",p.g(o)].join(""))})),D([tx,new qk((function(){return xd(new Q(null,3,5,S,[s,g,u.j(f,vx,w)],null))}))])),v=Hk(u.j(c,qo,dS)),y=re.h(cS,u.h(c,Lq)),b=Hk((function(e){return new qk((function(){var t=u.h(m,Eu),r=bg(e);return r=u.h(r,Vl),n(O.h?O.h(r,DC):O.call(null,r,DC))?new Date(t).toISOString():new cR(r).format(t)}))}));af((function(r,i,o){if(n(n(d=NB.g(o))?uS(Cy,e,t,o):d)){var l=iy.g(o);if(function(){var e=Ee(l);if(e)return e;e=wS(i,l);var t=uk(tx.g(m));return yb(e=e.g?e.g(t):e.call(null,t))}()){var s=bg(o);r=u.h(s,Ir),u.h(s,aw);var a=function(){var e=qo.g(o),t=(t=null==e)?t:O.h?O.h(e,IE):O.call(null,e,IE);return n(t)?v:e}(),c=function(){var e=Lq.g(o),t=(t=null==e)?t:O.h?O.h(e,IE):O.call(null,e,IE);return n(t)?b(y):b(re.h(y,e))}(),h=re.h(m,new k(null,5,[$n,i,Lw,o,qo,a,no,new qk((function(){var e=I.j(m,Km,c);return a.g?a.g(e):a.call(null,e)})),Km,c],null));return s=function(){var e=qu.g(o);return n(e)?e.g?e.g(h):e.call(null,h):h}(),n(s)?r.g?r.g(s):r.call(null,s):null}}var d;return null}),null,dA.g(c))}}return null}function fS(e){switch(arguments.length){case 1:case 2:return eS(arguments[0]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}}function eS(e){var t=e.stack;return n(t)?t:p.g(e)}function zS(e,t,n){var r=zS[ba(null)];if(null!=r)r.F?r.F(null,e,t,n):r.call(null,null,e,t,n);else{if(null==(r=zS._))throw Eb("Measurements.record!",null);r.F?r.F(null,e,t,n):r.call(null,null,e,t,n)}}function AS(e){if(null!=e&&null!=e.Jf)e.Jf(e);else{var t=AS[ba(null==e?null:e)];if(null!=t)t.g?t.g(e):t.call(null,e);else{if(null==(t=AS._))throw Eb("Node.close",e);t.g?t.g(e):t.call(null,e)}}}function BS(e,t){if(null!=e&&null!=e.Kf)e.Kf(e,t);else{var n=BS[ba(null==e?null:e)];if(null!=n)n.h?n.h(e,t):n.call(null,e,t);else{if(null==(n=BS._))throw Eb("Node.message",e);n.h?n.h(e,t):n.call(null,e,t)}}}function CS(e,t){if(null==e||null==e.fh){var n=CS[ba(null==e?null:e)];if(null!=n)n.h?n.h(e,t):n.call(null,e,t);else{if(null==(n=CS._))throw Eb("Node.add-source",e);n.h?n.h(e,t):n.call(null,e,t)}}}function DS(e,t){if(null!=e&&null!=e.Lf)e.Lf(e,t);else{var n=DS[ba(null==e?null:e)];if(null!=n)n.h?n.h(e,t):n.call(null,e,t);else{if(null==(n=DS._))throw Eb("Node.remove-source",e);n.h?n.h(e,t):n.call(null,e,t)}}}function ES(e,t,r){if(r=pG.g(r),n(n(e=FQ.h(e,r))?cg.h(t,$s.g(e)):e))throw cl(["The original source of peer ",p.g(r)," doesnt match the current source"].join(""),P)}function FS(e,t,r){return Nb.j((function(t,r){var i=G(t,0,null);t=G(t,1,null),yS(it,"gateway.node",33,lE,new qk((function(){return new Q(null,2,5,S,["about to remove source from domain",AQ(r)],null)})),-1725873782);var o=DQ(r,i,e);return n(o)?(i=G(o,0,null),o=G(o,1,null),yS(it,"gateway.node",36,lE,new qk((function(){return new Q(null,2,5,S,["removed source from domain",AQ(r)],null)})),-1884391675),new Q(null,2,5,S,[i,ah.h(t,o)],null)):new Q(null,2,5,S,[i,t],null)}),new Q(null,2,5,S,[t,F],null),Xg.h(zb,re.h(bh.h((function(e){return G(e,0,null),e=G(e,1,null),wu.g(e)}),we.h(r,"global")),dh.h(r,new Q(null,2,5,S,["global",wu],null)))))}function GS(e,t,r,i,o){try{if(x.h(zB,X.g(o)))return FS(r,t,e);var l=dh.h(e,new Q(null,2,5,S,[wu.h(o,"global"),wu],null));return n(l)?(yS(it,"gateway.node",59,lE,new qk((function(){return new Q(null,4,5,S,["Handling message with domain",l,"message: \n",p.g(r)],null)})),1168230188),ES(t,i,o),DQ(l,t,r)):new Q(null,2,5,S,[t,new Q(null,1,5,S,[wI.O(wu.g(o),i,UC.g(o),pG.g(o),lI("global.errors.failure",["Unable to find domain for message ",p.g(r)].join("")))],null)],null)}finally{n(e=X.g(o))&&n(null)&&zS(Lr,["inv/",Cf(e)].join(""),0)}}var HS={};function IS(e){e=aI(e);var t=X.g(e);return n(t)?I.j(e,X,Bf.g(t)):e}function JS(e,t,i,o){e=IS(e);var l=dh.h(r(t),new Q(null,2,5,S,[o,$s],null));if(n(l)){x.h(my,X.g(e))||BS(i,new k(null,3,[ut,gz,$s,l,Ro,e],null));var s=(new Date).getTime();return Ig.h(t,(function(e){return eh(e,new Q(null,2,5,S,[o,oA],null),s)}))}return yS(tz,"gateway.cljs.common",31,lE,new qk((function(){return new Q(null,2,5,S,["Cannot process message for not-registered key",o],null)})),1304480393)}function KS(e,t){XH(oz.g(e));try{DS(t,e)}catch(e){if(!(e instanceof Error))throw e;var n=e;yS(Cx,"gateway.cljs.common",39,lE,new qk((function(){return new Q(null,3,5,S,[n,"Unable to remove client for",Gh],null)})),55484312)}}function LS(e,t,r){yS(pD,"gateway.cljs.common",43,lE,new qk((function(){return new Q(null,2,5,S,["removing client for",r],null)})),1631725028);var i=G(e=Kg(e,r),0,null);G(e,1,null),n(e=dh.h(i,new Q(null,2,5,S,[r,$s],null)))&&KS(e,t)}function MS(e,t,n,r){Ig.F(e,I,n,new k(null,2,[$s,r,oA,(new Date).getTime()],null)),CS(t,r)}function NS(e,t,n){return ah.h(P,function(){function r(e){return G(e,0,null),e=G(e,1,null),oA.g(e)")},oa(tT,Error),Z(Py,Hs,Bb),Z(Hy,sw,sw),Z(Ao,N(eD,T,new Q(null,1,5,S,[Py],null),dD,new Q(null,2,5,S,[sC,Hy],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[Py],null),new Q(null,2,5,S,[sC,Hy],null),null,new Q(null,2,5,S,[function(e){return J(e)},function(e){return M(e,du)}],null),function(e){return J(e)&&M(e,du)},new Q(null,2,5,S,[UC,EG],null),new Q(null,1,5,S,[Py],null),null,new Q(null,1,5,S,[du],null),new Q(null,2,5,S,[sC,Hy],null),new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,du))],null),null]))),Z(yy,tA,yf);var AT,T2=Fg(P),U2=Fg(P),V2=Fg(P),W2=Fg(P),X2=u.j(P,fu,Kk.A?Kk.A():Kk.call(null));AT=new Yk(Bd.h("gateway.auth.spec","response-type"),X,X2,T2,U2,V2,W2),Z(ps,SC,Ab),AT.C(null,gx,(function(){return QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[yy,ps],null),null,null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,X)},function(e){return M(e,Ar)}],null),function(e){return J(e)&&M(e,X)&&M(e,Ar)},F,new Q(null,2,5,S,[yy,ps],null),null,new Q(null,2,5,S,[X,Ar],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Ar))],null),null]))})),Z(Av,SC,Ab),Z($C,SC,Ab),Z(ym,SC,Ab),AT.C(null,jC,(function(){return QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[yy,Av,$C],null),new Q(null,1,5,S,[ym],null),null,new Q(null,4,5,S,[function(e){return J(e)},function(e){return M(e,X)},function(e){return M(e,iz)},function(e){return M(e,xr)}],null),function(e){return J(e)&&M(e,X)&&M(e,iz)&&M(e,xr)},new Q(null,1,5,S,[Jp],null),new Q(null,3,5,S,[yy,Av,$C],null),null,new Q(null,3,5,S,[X,iz,xr],null),new Q(null,1,5,S,[ym],null),new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],null),N(U,W,iz)),N(V,new Q(null,1,5,S,[W],null),N(U,W,xr))],null),null]))})),AT.C(null,ln,(function(){return QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[yy,Py],null),null,null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,X)},function(e){return M(e,du)}],null),function(e){return J(e)&&M(e,X)&&M(e,du)},F,new Q(null,2,5,S,[yy,Py],null),null,new Q(null,2,5,S,[X,du],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],null),N(U,W,du))],null),null]))})),Z(UE,N(Gx,pF,X),RP(pF,new Cd((function(){return AT}),pF,Ri([Rs,Yo,CD,so,rs,cw,MG,oo,KC,wD],[gD,$y,"gateway/auth/spec.cljc",24,1,14,14,Id,null,n(AT)?AT.md:null]))));var GT=new k(null,6,["application",new k(null,1,[Dr,!0],null),"instance",new k(null,1,[Dr,!1],null),"region",new k(null,1,[Dr,!1],null),"environment",new k(null,1,[Dr,!1],null),"machine",new k(null,1,[Dr,!1],null),"user",new k(null,1,[Dr,!1],null)],null);function HT(e){return af((function(e,t,n){return I.j(e,M(GT,t)?Bf.g(t):t,n)}),P,e)}function IT(e){var t=vg((function(t){var r=G(t,0,null);return G(t,1,null),n(t=Dr.g(r))?null==u.h(e,Bf.g(r)):t}),GT);if(n(t)){var r=G(t,0,null);return G(t,1,null),r}return null}function JT(e){var t=IT(e);if(n(t))throw cl(["Identity ",p.g(e)," is missing a required key: ",p.g(t)].join(""),P)}function KT(e,t){var r=n(e)?-1!=e.indexOf("127.0.0.1"):e;return n(r)?n(r=t)?r:e:n(r=e)?r:t}function LT(e){for(var t=[],n=0,r=0;r>=8),t[n++]=i}return t}Ua(),fH()||Ta("iPod"),Ta("iPad"),!Ta("Android")||Va()||Ua()||Ta("Opera")||Ta("Silk"),Va();var MT=Ta("Safari")&&!(Va()||Ta("Coast")||Ta("Opera")||Ta("Edge")||Ta("Edg/")||Ta("OPR")||Ua()||Ta("Silk")||Ta("Android"))&&!(fH()||Ta("iPad")||Ta("iPod")),NT={},OT=null,PT=hH||iH,QT=PT||"function"==typeof aa.btoa,RT=PT||!MT&&!gH&&"function"==typeof aa.atob,$T;function ST(e){var t;void 0===t&&(t=0),TT(),t=NT[t];const n=Array(Math.floor(e.length/3)),r=t[64]||"";let i=0,o=0;for(;i>2];l=t[(3&l)<<4|s>>4],s=t[(15&s)<<2|a>>6],a=t[63&a],n[o++]=""+u+l+s+a}switch(u=0,a=r,e.length-i){case 2:a=t[(15&(u=e[i+1]))<<2]||r;case 1:e=e[i],n[o]=""+t[e>>2]+t[(3&e)<<4|u>>4]+a+r}return n.join("")}function UT(e){return QT?aa.btoa(e):ST(LT(e))}function VT(e){if(RT)return aa.atob(e);var t="";return WT(e,(function(e){t+=String.fromCharCode(e)})),t}function WT(e,t){function n(t){for(;r>4),64!=l&&(t(o<<4&240|l>>2),64!=s&&t(l<<6&192|s))}}function TT(){if(!OT){OT={};for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),t=["+/=","+/","-_=","-_.","-_"],n=0;5>n;n++){var r=e.concat(t[n].split(""));NT[n]=r;for(var i=0;ie;e++){r=0|t[e-15],n=0|t[e-2];var i=(0|t[e-16])+((r>>>7|r<<25)^(r>>>18|r<<14)^r>>>3)|0,o=(0|t[e-7])+((n>>>17|n<<15)^(n>>>19|n<<13)^n>>>10)|0;t[e]=i+o|0}n=0|this.ea[0],r=0|this.ea[1];var l=0|this.ea[2],s=0|this.ea[3],a=0|this.ea[4],u=0|this.ea[5],c=0|this.ea[6];for(i=0|this.ea[7],e=0;64>e;e++){var h=((n>>>2|n<<30)^(n>>>13|n<<19)^(n>>>22|n<<10))+(n&r^n&l^r&l)|0;o=(i=i+((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))|0)+((o=(o=a&u^~a&c)+(0|$T[e])|0)+(0|t[e])|0)|0,i=c,c=u,u=a,a=s+o|0,s=l,l=r,r=n,n=o+h|0}this.ea[0]=this.ea[0]+n|0,this.ea[1]=this.ea[1]+r|0,this.ea[2]=this.ea[2]+l|0,this.ea[3]=this.ea[3]+s|0,this.ea[4]=this.ea[4]+a|0,this.ea[5]=this.ea[5]+u|0,this.ea[6]=this.ea[6]+c|0,this.ea[7]=this.ea[7]+i|0},YT.prototype.update=function(e,t){void 0===t&&(t=e.length);var n=0,r=this.rd;if("string"==typeof e)for(;n=i&&i==(0|i)))throw Error("message must be a byte array");this.xc[r++]=i,r==this.blockSize&&(this.Tc(),r=0)}}this.rd=r,this.Jc+=t},YT.prototype.digest=function(){var e=[],t=8*this.Jc;56>this.rd?this.update(bU,56-this.rd):this.update(bU,this.blockSize-(this.rd-56));for(var n=63;56<=n;n--)this.xc[n]=255&t,t/=256;for(this.Tc(),n=t=0;n>r&255;return e};var aU=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function cU(){YT.call(this,8,dU)}oa(cU,YT);var dU=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];function eU(e,t){this.blockSize=-1,this.blockSize=128,this.xc=aa.Uint8Array?new Uint8Array(this.blockSize):Array(this.blockSize),this.Jc=this.fd=0,this.ea=[],this.oe=e,this.gf=[],this.ie=fU(t),this.ne=!1,this.reset()}oa(eU,XT);var gU=Ja([128],Qa(127));function fU(e){for(var t=[],n=0;ni||255this.fd?this.update(gU,112-this.fd):this.update(gU,this.blockSize-this.fd+112);for(var t=127;112<=t;t--)this.xc[t]=255&e,e/=256;this.Tc(),e=0;var n=Array(8*this.oe);for(t=0;t>o&255;for(o=24;0<=o;o-=8)n[e++]=r>>o&255}return this.ne=!0,n},h.Tc=function(){for(var e=this.xc,t=this.gf,n=0;16>n;n++){var r=8*n;t[n]=new qa(e[r+4]<<24|e[r+5]<<16|e[r+6]<<8|e[r+7],e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])}for(n=16;80>n;n++){e=(r=t[n-15]).la,r=r.ha;var i=t[n-2],o=i.la;i=i.ha,t[n]=this.cg(t[n-16],t[n-7],new qa(e>>>1^r<<31^e>>>8^r<<24^e>>>7^r<<25,r>>>1^e<<31^r>>>8^e<<24^r>>>7),new qa(o>>>19^i<<13^i>>>29^o<<3^o>>>6^i<<26,i>>>19^o<<13^o>>>29^i<<3^i>>>6))}e=this.ea[0],r=this.ea[1],o=this.ea[2],i=this.ea[3];var l=this.ea[4],s=this.ea[5],a=this.ea[6],u=this.ea[7];for(n=0;80>n;n++){var c=e.la,h=e.ha;c=new qa(c>>>28^h<<4^h>>>2^c<<30^h>>>7^c<<25,h>>>28^c<<4^c>>>2^h<<30^c>>>7^h<<25).add(new qa(e.la&r.la|r.la&o.la|e.la&o.la,e.ha&r.ha|r.ha&o.ha|e.ha&o.ha)),h=l.la;var d=l.ha,f=l.la,p=l.ha;h=this.cg(u,new qa(h>>>14^d<<18^h>>>18^d<<14^d>>>9^h<<23,d>>>14^h<<18^d>>>18^h<<14^h>>>9^d<<23),new qa(f&s.la|~f&a.la,p&s.ha|~p&a.ha),hU[n],t[n]),u=a,a=s,s=l,l=i.add(h),i=o,o=r,r=e,e=h.add(c)}this.ea[0]=this.ea[0].add(e),this.ea[1]=this.ea[1].add(r),this.ea[2]=this.ea[2].add(o),this.ea[3]=this.ea[3].add(i),this.ea[4]=this.ea[4].add(l),this.ea[5]=this.ea[5].add(s),this.ea[6]=this.ea[6].add(a),this.ea[7]=this.ea[7].add(u)},h.cg=function(e,t,n){for(var r=(2147483648^e.la)+(2147483648^t.la),i=e.ha+t.ha,o=arguments.length-1;2<=o;--o)r+=2147483648^arguments[o].la,i+=arguments[o].ha;return 1&arguments.length&&(r+=2147483648),i+=arguments.length>>1,i+=Math.floor(r/4294967296),new qa(r,i)};var hU=fU([1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591]);function iU(){eU.call(this,6,jU)}oa(iU,eU);var jU=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428];function kU(){eU.call(this,8,lU)}oa(kU,eU);var lU=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209];function mU(e,t,n){for(this.blockSize=-1,this.Pb=e,this.blockSize=n||e.blockSize||16,this.Mf=Array(this.blockSize),this.Xe=Array(this.blockSize),(e=t).length>this.blockSize&&(this.Pb.update(e),e=this.Pb.digest(),this.Pb.reset()),n=0;ns+a:t}()))throw cl(["Token is not yet valid ",p.g(Vm.g(e))].join(""),new k(null,2,[X,Qw,Qv,Vm],null));if(n(function(){var t=Mq.g(e);return n(t)?"number"==typeof i&&s-Mq.g(e)>i:t}()))throw cl(["Token is older than max-age ",p.g(i)].join(""),new k(null,2,[X,Qw,Qv,yB],null));return e}var uU=function e(t){switch(arguments.length){case 2:return e.h(arguments[0],arguments[1]);case 3:return e.j(arguments[0],arguments[1],arguments[2]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}};na("gateway.common.jwt.unsign",uU),uU.h=function(e,t){return uU.j(e,t,P)},uU.j=function(e,t,r){r=bg(r);var i=u.j(r,ev,!1),o=TI(e,".",0);e=u.h(o,0);var l=u.h(o,1);if(o=u.h(o,2),n(vg(vb,new Q(null,3,5,S,[e,l,o],null))))throw Error("invalid token");var s=oR(VT(QI(QI(e,"_","/"),"-","+"))).alg,a=af((function(e,t,n){return I.j(e,Bf.g(t),n)}),P,Ek(oR(VT(QI(QI(l,"_","/"),"-","+"))))),c=u.h(nU,s);if(s=u.h(oU,s),n(i))return a;if(yb(n(c)?s:c))throw Error("algorithm not supported");if(yb(sU([p.g(e),".",p.g(l)].join(""),o,t,c,s)))throw Error("signature verification failed");return tU(a,r)},uU.I=3;var vU=function e(t){for(var n=[],r=arguments.length,i=0;i(e=t.lastIndexOf("\n"))?XU(this,TR,WU(this,TR)+C(t)):(XU(this,TR,C(t)-e-1),XU(this,cw,WU(this,cw)+C(Xg.h((function(e){return x.h(e,"\n")}),t)))),Qc(WU(this,XF),t);if(n(x.h?x.h(Number,e):x.call(null,Number,e)))return YU(this,t);throw Error(["No matching clause: ",p.g(e)].join(""))},HU.Na=!0,HU.Ja="cljs.pprint/t_cljs$pprint19595",HU.Pa=function(e){return Qc(e,"cljs.pprint/t_cljs$pprint19595")}),new HU(e,t,r,P)}function $U(e,t,n,r,i,o,l,s,a,u,c,h,d){this.parent=e,this.Ab=t,this.ob=n,this.nb=r,this.vb=i,this.wb=o,this.prefix=l,this.zb=s,this.Bb=a,this.xb=u,this.D=c,this.m=h,this.G=d,this.B=2230716170,this.M=139264}function aV(e,t){for(t=IF.g(t);;){if(null==t)return!1;if(e===t)return!0;t=IF.g(t)}}function bV(e,t,n,r,i,o,l,s){this.Z=e,this.data=t,this.Rb=n,this.Y=r,this.X=i,this.D=o,this.m=l,this.G=s,this.B=2230716170,this.M=139264}function cV(e,t,n,r,i,o,l,s){this.Z=e,this.type=t,this.fa=n,this.Y=r,this.X=i,this.D=o,this.m=l,this.G=s,this.B=2230716170,this.M=139264}function dV(e,t,n,r,i,o,l){this.Z=e,this.fa=t,this.Y=n,this.X=r,this.D=i,this.m=o,this.G=l,this.B=2230716170,this.M=139264}function eV(e,t,n,r,i,o,l){this.Z=e,this.fa=t,this.Y=n,this.X=r,this.D=i,this.m=o,this.G=l,this.B=2230716170,this.M=139264}function fV(e,t,n,r,i,o,l,s,a){this.Z=e,this.fa=t,this.Lb=n,this.offset=r,this.Y=i,this.X=o,this.D=l,this.m=s,this.G=a,this.B=2230716170,this.M=139264}OU.l=function(e){return Qc(db,Xf(hk,e))},OU.I=0,OU.J=function(e){return this.l(z(e))},h=$U.prototype,h.na=function(e,t){return this.P(null,t,null)},h.P=function(e,t,n){switch(t instanceof w?t.W:null){case"parent":return this.parent;case"section":return this.Ab;case"start-col":return this.ob;case"indent":return this.nb;case"done-nl":return this.vb;case"intra-block-nl":return this.wb;case"prefix":return this.prefix;case"per-line-prefix":return this.zb;case"suffix":return this.Bb;case"logical-block-callback":return this.xb;default:return u.j(this.m,t,n)}},h.Ka=function(e,t,n){return Nb.j((function(e,n){var r=G(n,0,null);return n=G(n,1,null),t.j?t.j(e,r,n):t.call(null,e,r,n)}),n,this)},h.U=function(e,t,n){return Tj(t,(function(e){return Tj(t,bk,""," ","",n,e)}),"#cljs.pprint.logical-block{",", ","}",n,Of.h(new Q(null,10,5,S,[new Q(null,2,5,S,[IF,this.parent],null),new Q(null,2,5,S,[eF,this.Ab],null),new Q(null,2,5,S,[fE,this.ob],null),new Q(null,2,5,S,[Rp,this.nb],null),new Q(null,2,5,S,[Us,this.vb],null),new Q(null,2,5,S,[dm,this.wb],null),new Q(null,2,5,S,[jr,this.prefix],null),new Q(null,2,5,S,[dn,this.zb],null),new Q(null,2,5,S,[bs,this.Bb],null),new Q(null,2,5,S,[rp,this.xb],null)],null),this.m))},h.xa=function(){return new Yh(this,10,new Q(null,10,5,S,[IF,eF,fE,Rp,Us,dm,jr,dn,bs,rp],null),n(this.m)?nd(this.m):eg())},h.R=function(){return this.D},h.da=function(){return 10+C(this.m)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=1977012399^Pd(this)},h.aa=function(e,t){return null!=t&&this.constructor===t.constructor&&x.h(this.parent,t.parent)&&x.h(this.Ab,t.Ab)&&x.h(this.ob,t.ob)&&x.h(this.nb,t.nb)&&x.h(this.vb,t.vb)&&x.h(this.wb,t.wb)&&x.h(this.prefix,t.prefix)&&x.h(this.zb,t.zb)&&x.h(this.Bb,t.Bb)&&x.h(this.xb,t.xb)&&x.h(this.m,t.m)},h.bb=function(e,t){return M(new uj(null,new k(null,10,[bs,null,Rp,null,IF,null,eF,null,Us,null,fE,null,jr,null,dn,null,rp,null,dm,null],null),null),t)?we.h(Bc(ah.h(P,this),this.D),t):new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,this.prefix,this.zb,this.Bb,this.xb,this.D,dg(we.h(this.m,t)),null)},h.za=function(e,t){switch(t instanceof w?t.W:null){case"parent":case"section":case"start-col":case"indent":case"done-nl":case"intra-block-nl":case"prefix":case"per-line-prefix":case"suffix":case"logical-block-callback":return!0;default:return M(this.m,t)}},h.ja=function(e,t,r){return n(O.h?O.h(IF,t):O.call(null,IF,t))?new $U(r,this.Ab,this.ob,this.nb,this.vb,this.wb,this.prefix,this.zb,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(eF,t):O.call(null,eF,t))?new $U(this.parent,r,this.ob,this.nb,this.vb,this.wb,this.prefix,this.zb,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(fE,t):O.call(null,fE,t))?new $U(this.parent,this.Ab,r,this.nb,this.vb,this.wb,this.prefix,this.zb,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(Rp,t):O.call(null,Rp,t))?new $U(this.parent,this.Ab,this.ob,r,this.vb,this.wb,this.prefix,this.zb,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(Us,t):O.call(null,Us,t))?new $U(this.parent,this.Ab,this.ob,this.nb,r,this.wb,this.prefix,this.zb,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(dm,t):O.call(null,dm,t))?new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,r,this.prefix,this.zb,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(jr,t):O.call(null,jr,t))?new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,r,this.zb,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(dn,t):O.call(null,dn,t))?new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,this.prefix,r,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(bs,t):O.call(null,bs,t))?new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,this.prefix,this.zb,r,this.xb,this.D,this.m,null):n(O.h?O.h(rp,t):O.call(null,rp,t))?new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,this.prefix,this.zb,this.Bb,r,this.D,this.m,null):new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,this.prefix,this.zb,this.Bb,this.xb,this.D,I.j(this.m,t,r),null)},h.ca=function(){return z(Of.h(new Q(null,10,5,S,[new xh(IF,this.parent),new xh(eF,this.Ab),new xh(fE,this.ob),new xh(Rp,this.nb),new xh(Us,this.vb),new xh(dm,this.wb),new xh(jr,this.prefix),new xh(dn,this.zb),new xh(bs,this.Bb),new xh(rp,this.xb)],null),this.m))},h.S=function(e,t){return new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,this.prefix,this.zb,this.Bb,this.xb,t,this.m,this.G)},h.ia=function(e,t){return Le(t)?this.ja(null,Zb(t,0),Zb(t,1)):Nb.j(Xb,this,t)},h=bV.prototype,h.na=function(e,t){return this.P(null,t,null)},h.P=function(e,t,n){switch(t instanceof w?t.W:null){case"type-tag":return this.Z;case"data":return this.data;case"trailing-white-space":return this.Rb;case"start-pos":return this.Y;case"end-pos":return this.X;default:return u.j(this.m,t,n)}},h.Ka=function(e,t,n){return Nb.j((function(e,n){var r=G(n,0,null);return n=G(n,1,null),t.j?t.j(e,r,n):t.call(null,e,r,n)}),n,this)},h.U=function(e,t,n){return Tj(t,(function(e){return Tj(t,bk,""," ","",n,e)}),"#cljs.pprint.buffer-blob{",", ","}",n,Of.h(new Q(null,5,5,S,[new Q(null,2,5,S,[qG,this.Z],null),new Q(null,2,5,S,[Fw,this.data],null),new Q(null,2,5,S,[Zl,this.Rb],null),new Q(null,2,5,S,[nD,this.Y],null),new Q(null,2,5,S,[$m,this.X],null)],null),this.m))},h.xa=function(){return new Yh(this,5,new Q(null,5,5,S,[qG,Fw,Zl,nD,$m],null),n(this.m)?nd(this.m):eg())},h.R=function(){return this.D},h.da=function(){return 5+C(this.m)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=1809113693^Pd(this)},h.aa=function(e,t){return null!=t&&this.constructor===t.constructor&&x.h(this.Z,t.Z)&&x.h(this.data,t.data)&&x.h(this.Rb,t.Rb)&&x.h(this.Y,t.Y)&&x.h(this.X,t.X)&&x.h(this.m,t.m)},h.bb=function(e,t){return M(new uj(null,new k(null,5,[$m,null,Zl,null,qG,null,nD,null,Fw,null],null),null),t)?we.h(Bc(ah.h(P,this),this.D),t):new bV(this.Z,this.data,this.Rb,this.Y,this.X,this.D,dg(we.h(this.m,t)),null)},h.za=function(e,t){switch(t instanceof w?t.W:null){case"type-tag":case"data":case"trailing-white-space":case"start-pos":case"end-pos":return!0;default:return M(this.m,t)}},h.ja=function(e,t,r){return n(O.h?O.h(qG,t):O.call(null,qG,t))?new bV(r,this.data,this.Rb,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(Fw,t):O.call(null,Fw,t))?new bV(this.Z,r,this.Rb,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(Zl,t):O.call(null,Zl,t))?new bV(this.Z,this.data,r,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(nD,t):O.call(null,nD,t))?new bV(this.Z,this.data,this.Rb,r,this.X,this.D,this.m,null):n(O.h?O.h($m,t):O.call(null,$m,t))?new bV(this.Z,this.data,this.Rb,this.Y,r,this.D,this.m,null):new bV(this.Z,this.data,this.Rb,this.Y,this.X,this.D,I.j(this.m,t,r),null)},h.ca=function(){return z(Of.h(new Q(null,5,5,S,[new xh(qG,this.Z),new xh(Fw,this.data),new xh(Zl,this.Rb),new xh(nD,this.Y),new xh($m,this.X)],null),this.m))},h.S=function(e,t){return new bV(this.Z,this.data,this.Rb,this.Y,this.X,t,this.m,this.G)},h.ia=function(e,t){return Le(t)?this.ja(null,Zb(t,0),Zb(t,1)):Nb.j(Xb,this,t)},h=cV.prototype,h.na=function(e,t){return this.P(null,t,null)},h.P=function(e,t,n){switch(t instanceof w?t.W:null){case"type-tag":return this.Z;case"type":return this.type;case"logical-block":return this.fa;case"start-pos":return this.Y;case"end-pos":return this.X;default:return u.j(this.m,t,n)}},h.Ka=function(e,t,n){return Nb.j((function(e,n){var r=G(n,0,null);return n=G(n,1,null),t.j?t.j(e,r,n):t.call(null,e,r,n)}),n,this)},h.U=function(e,t,n){return Tj(t,(function(e){return Tj(t,bk,""," ","",n,e)}),"#cljs.pprint.nl-t{",", ","}",n,Of.h(new Q(null,5,5,S,[new Q(null,2,5,S,[qG,this.Z],null),new Q(null,2,5,S,[X,this.type],null),new Q(null,2,5,S,[rB,this.fa],null),new Q(null,2,5,S,[nD,this.Y],null),new Q(null,2,5,S,[$m,this.X],null)],null),this.m))},h.xa=function(){return new Yh(this,5,new Q(null,5,5,S,[qG,X,rB,nD,$m],null),n(this.m)?nd(this.m):eg())},h.R=function(){return this.D},h.da=function(){return 5+C(this.m)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=-1640656800^Pd(this)},h.aa=function(e,t){return null!=t&&this.constructor===t.constructor&&x.h(this.Z,t.Z)&&x.h(this.type,t.type)&&x.h(this.fa,t.fa)&&x.h(this.Y,t.Y)&&x.h(this.X,t.X)&&x.h(this.m,t.m)},h.bb=function(e,t){return M(new uj(null,new k(null,5,[$m,null,X,null,rB,null,qG,null,nD,null],null),null),t)?we.h(Bc(ah.h(P,this),this.D),t):new cV(this.Z,this.type,this.fa,this.Y,this.X,this.D,dg(we.h(this.m,t)),null)},h.za=function(e,t){switch(t instanceof w?t.W:null){case"type-tag":case"type":case"logical-block":case"start-pos":case"end-pos":return!0;default:return M(this.m,t)}},h.ja=function(e,t,r){return n(O.h?O.h(qG,t):O.call(null,qG,t))?new cV(r,this.type,this.fa,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(X,t):O.call(null,X,t))?new cV(this.Z,r,this.fa,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(rB,t):O.call(null,rB,t))?new cV(this.Z,this.type,r,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(nD,t):O.call(null,nD,t))?new cV(this.Z,this.type,this.fa,r,this.X,this.D,this.m,null):n(O.h?O.h($m,t):O.call(null,$m,t))?new cV(this.Z,this.type,this.fa,this.Y,r,this.D,this.m,null):new cV(this.Z,this.type,this.fa,this.Y,this.X,this.D,I.j(this.m,t,r),null)},h.ca=function(){return z(Of.h(new Q(null,5,5,S,[new xh(qG,this.Z),new xh(X,this.type),new xh(rB,this.fa),new xh(nD,this.Y),new xh($m,this.X)],null),this.m))},h.S=function(e,t){return new cV(this.Z,this.type,this.fa,this.Y,this.X,t,this.m,this.G)},h.ia=function(e,t){return Le(t)?this.ja(null,Zb(t,0),Zb(t,1)):Nb.j(Xb,this,t)},h=dV.prototype,h.na=function(e,t){return this.P(null,t,null)},h.P=function(e,t,n){switch(t instanceof w?t.W:null){case"type-tag":return this.Z;case"logical-block":return this.fa;case"start-pos":return this.Y;case"end-pos":return this.X;default:return u.j(this.m,t,n)}},h.Ka=function(e,t,n){return Nb.j((function(e,n){var r=G(n,0,null);return n=G(n,1,null),t.j?t.j(e,r,n):t.call(null,e,r,n)}),n,this)},h.U=function(e,t,n){return Tj(t,(function(e){return Tj(t,bk,""," ","",n,e)}),"#cljs.pprint.start-block-t{",", ","}",n,Of.h(new Q(null,4,5,S,[new Q(null,2,5,S,[qG,this.Z],null),new Q(null,2,5,S,[rB,this.fa],null),new Q(null,2,5,S,[nD,this.Y],null),new Q(null,2,5,S,[$m,this.X],null)],null),this.m))},h.xa=function(){return new Yh(this,4,new Q(null,4,5,S,[qG,rB,nD,$m],null),n(this.m)?nd(this.m):eg())},h.R=function(){return this.D},h.da=function(){return 4+C(this.m)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=-414877272^Pd(this)},h.aa=function(e,t){return null!=t&&this.constructor===t.constructor&&x.h(this.Z,t.Z)&&x.h(this.fa,t.fa)&&x.h(this.Y,t.Y)&&x.h(this.X,t.X)&&x.h(this.m,t.m)},h.bb=function(e,t){return M(new uj(null,new k(null,4,[$m,null,rB,null,qG,null,nD,null],null),null),t)?we.h(Bc(ah.h(P,this),this.D),t):new dV(this.Z,this.fa,this.Y,this.X,this.D,dg(we.h(this.m,t)),null)},h.za=function(e,t){switch(t instanceof w?t.W:null){case"type-tag":case"logical-block":case"start-pos":case"end-pos":return!0;default:return M(this.m,t)}},h.ja=function(e,t,r){return n(O.h?O.h(qG,t):O.call(null,qG,t))?new dV(r,this.fa,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(rB,t):O.call(null,rB,t))?new dV(this.Z,r,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(nD,t):O.call(null,nD,t))?new dV(this.Z,this.fa,r,this.X,this.D,this.m,null):n(O.h?O.h($m,t):O.call(null,$m,t))?new dV(this.Z,this.fa,this.Y,r,this.D,this.m,null):new dV(this.Z,this.fa,this.Y,this.X,this.D,I.j(this.m,t,r),null)},h.ca=function(){return z(Of.h(new Q(null,4,5,S,[new xh(qG,this.Z),new xh(rB,this.fa),new xh(nD,this.Y),new xh($m,this.X)],null),this.m))},h.S=function(e,t){return new dV(this.Z,this.fa,this.Y,this.X,t,this.m,this.G)},h.ia=function(e,t){return Le(t)?this.ja(null,Zb(t,0),Zb(t,1)):Nb.j(Xb,this,t)},h=eV.prototype,h.na=function(e,t){return this.P(null,t,null)},h.P=function(e,t,n){switch(t instanceof w?t.W:null){case"type-tag":return this.Z;case"logical-block":return this.fa;case"start-pos":return this.Y;case"end-pos":return this.X;default:return u.j(this.m,t,n)}},h.Ka=function(e,t,n){return Nb.j((function(e,n){var r=G(n,0,null);return n=G(n,1,null),t.j?t.j(e,r,n):t.call(null,e,r,n)}),n,this)},h.U=function(e,t,n){return Tj(t,(function(e){return Tj(t,bk,""," ","",n,e)}),"#cljs.pprint.end-block-t{",", ","}",n,Of.h(new Q(null,4,5,S,[new Q(null,2,5,S,[qG,this.Z],null),new Q(null,2,5,S,[rB,this.fa],null),new Q(null,2,5,S,[nD,this.Y],null),new Q(null,2,5,S,[$m,this.X],null)],null),this.m))},h.xa=function(){return new Yh(this,4,new Q(null,4,5,S,[qG,rB,nD,$m],null),n(this.m)?nd(this.m):eg())},h.R=function(){return this.D},h.da=function(){return 4+C(this.m)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=1365867980^Pd(this)},h.aa=function(e,t){return null!=t&&this.constructor===t.constructor&&x.h(this.Z,t.Z)&&x.h(this.fa,t.fa)&&x.h(this.Y,t.Y)&&x.h(this.X,t.X)&&x.h(this.m,t.m)},h.bb=function(e,t){return M(new uj(null,new k(null,4,[$m,null,rB,null,qG,null,nD,null],null),null),t)?we.h(Bc(ah.h(P,this),this.D),t):new eV(this.Z,this.fa,this.Y,this.X,this.D,dg(we.h(this.m,t)),null)},h.za=function(e,t){switch(t instanceof w?t.W:null){case"type-tag":case"logical-block":case"start-pos":case"end-pos":return!0;default:return M(this.m,t)}},h.ja=function(e,t,r){return n(O.h?O.h(qG,t):O.call(null,qG,t))?new eV(r,this.fa,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(rB,t):O.call(null,rB,t))?new eV(this.Z,r,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(nD,t):O.call(null,nD,t))?new eV(this.Z,this.fa,r,this.X,this.D,this.m,null):n(O.h?O.h($m,t):O.call(null,$m,t))?new eV(this.Z,this.fa,this.Y,r,this.D,this.m,null):new eV(this.Z,this.fa,this.Y,this.X,this.D,I.j(this.m,t,r),null)},h.ca=function(){return z(Of.h(new Q(null,4,5,S,[new xh(qG,this.Z),new xh(rB,this.fa),new xh(nD,this.Y),new xh($m,this.X)],null),this.m))},h.S=function(e,t){return new eV(this.Z,this.fa,this.Y,this.X,t,this.m,this.G)},h.ia=function(e,t){return Le(t)?this.ja(null,Zb(t,0),Zb(t,1)):Nb.j(Xb,this,t)},h=fV.prototype,h.na=function(e,t){return this.P(null,t,null)},h.P=function(e,t,n){switch(t instanceof w?t.W:null){case"type-tag":return this.Z;case"logical-block":return this.fa;case"relative-to":return this.Lb;case"offset":return this.offset;case"start-pos":return this.Y;case"end-pos":return this.X;default:return u.j(this.m,t,n)}},h.Ka=function(e,t,n){return Nb.j((function(e,n){var r=G(n,0,null);return n=G(n,1,null),t.j?t.j(e,r,n):t.call(null,e,r,n)}),n,this)},h.U=function(e,t,n){return Tj(t,(function(e){return Tj(t,bk,""," ","",n,e)}),"#cljs.pprint.indent-t{",", ","}",n,Of.h(new Q(null,6,5,S,[new Q(null,2,5,S,[qG,this.Z],null),new Q(null,2,5,S,[rB,this.fa],null),new Q(null,2,5,S,[am,this.Lb],null),new Q(null,2,5,S,[jx,this.offset],null),new Q(null,2,5,S,[nD,this.Y],null),new Q(null,2,5,S,[$m,this.X],null)],null),this.m))},h.xa=function(){return new Yh(this,6,new Q(null,6,5,S,[qG,rB,am,jx,nD,$m],null),n(this.m)?nd(this.m):eg())},h.R=function(){return this.D},h.da=function(){return 6+C(this.m)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=-1602780238^Pd(this)},h.aa=function(e,t){return null!=t&&this.constructor===t.constructor&&x.h(this.Z,t.Z)&&x.h(this.fa,t.fa)&&x.h(this.Lb,t.Lb)&&x.h(this.offset,t.offset)&&x.h(this.Y,t.Y)&&x.h(this.X,t.X)&&x.h(this.m,t.m)},h.bb=function(e,t){return M(new uj(null,new k(null,6,[jx,null,$m,null,am,null,rB,null,qG,null,nD,null],null),null),t)?we.h(Bc(ah.h(P,this),this.D),t):new fV(this.Z,this.fa,this.Lb,this.offset,this.Y,this.X,this.D,dg(we.h(this.m,t)),null)},h.za=function(e,t){switch(t instanceof w?t.W:null){case"type-tag":case"logical-block":case"relative-to":case"offset":case"start-pos":case"end-pos":return!0;default:return M(this.m,t)}},h.ja=function(e,t,r){return n(O.h?O.h(qG,t):O.call(null,qG,t))?new fV(r,this.fa,this.Lb,this.offset,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(rB,t):O.call(null,rB,t))?new fV(this.Z,r,this.Lb,this.offset,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(am,t):O.call(null,am,t))?new fV(this.Z,this.fa,r,this.offset,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(jx,t):O.call(null,jx,t))?new fV(this.Z,this.fa,this.Lb,r,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(nD,t):O.call(null,nD,t))?new fV(this.Z,this.fa,this.Lb,this.offset,r,this.X,this.D,this.m,null):n(O.h?O.h($m,t):O.call(null,$m,t))?new fV(this.Z,this.fa,this.Lb,this.offset,this.Y,r,this.D,this.m,null):new fV(this.Z,this.fa,this.Lb,this.offset,this.Y,this.X,this.D,I.j(this.m,t,r),null)},h.ca=function(){return z(Of.h(new Q(null,6,5,S,[new xh(qG,this.Z),new xh(rB,this.fa),new xh(am,this.Lb),new xh(jx,this.offset),new xh(nD,this.Y),new xh($m,this.X)],null),this.m))},h.S=function(e,t){return new fV(this.Z,this.fa,this.Lb,this.offset,this.Y,this.X,t,this.m,this.G)},h.ia=function(e,t){return Le(t)?this.ja(null,Zb(t,0),Zb(t,1)):Nb.j(Xb,this,t)};var gV=function(){var e=Fg(P),t=Fg(P),n=Fg(P),r=Fg(P),i=u.j(P,fu,Kk.A?Kk.A():Kk.call(null));return new Yk(Bd.h("cljs.pprint","write-token"),(function(e,t){return qG.g(t)}),i,e,t,n,r)}();function iV(e,t,i){t=z(t);for(var o=null,l=0,s=0;;)if(s=l-o)?kV(e,t,i):o:l:o}gV.C(null,Do,(function(e,t){var i=rp.g(r(r(e)));return n(i)&&(i.g?i.g(Ku):i.call(null,Ku)),t=rB.g(t),n(i=jr.g(t))&&Qc(XF.g(r(r(e))),i),e=WU(XF.g(r(r(e))),TR),Gg(fE.g(t),e),Gg(Rp.g(t),e)})),gV.C(null,aC,(function(e,t){var i=rp.g(r(r(e)));return n(i)&&(i.g?i.g(Bn):i.call(null,Bn)),n(t=bs.g(rB.g(t)))?Qc(XF.g(r(r(e))),t):null})),gV.C(null,wz,(function(e,t){var i=rB.g(t),o=Rp.g(i),l=jx.g(t);if(t=am.g(t),n(x.h?x.h(vv,t):x.call(null,vv,t)))e=r(fE.g(i));else{if(!n(x.h?x.h(zm,t):x.call(null,zm,t)))throw Error(["No matching clause: ",p.g(t)].join(""));e=WU(XF.g(r(r(e))),TR)}return Gg(o,l+e)})),gV.C(null,Qy,(function(e,t){return Qc(XF.g(r(r(e))),Fw.g(t))})),gV.C(null,js,(function(e,t){var i=x.h(X.g(t),Is);return i||(i=(i=!x.h(X.g(t),yD))?r(Us.g(rB.g(t))):i),n(i)?hV.h?hV.h(e,t):hV.call(null,e,t):n(t=Zl.g(r(r(e))))&&Qc(XF.g(r(r(e))),t),Ig.F(r(e),I,Zl,null)}));var mV=function(){var e=Fg(P),t=Fg(P),n=Fg(P),r=Fg(P),i=u.j(P,fu,Kk.A?Kk.A():Kk.call(null));return new Yk(Bd.h("cljs.pprint","emit-nl?"),(function(e){return X.g(e)}),i,e,t,n,r)}();function nV(e){var t=A(e),n=rB.g(t);return t=z(Fj((function(e){return!(x.h(qG.g(e),js)&&aV(rB.g(e),n))}),B(e))),new Q(null,2,5,S,[t,z(Pg(C(t)+1,e))],null)}function oV(e){var t=A(e),n=rB.g(t);return z(Fj((function(e){var t=rB.g(e);return!(x.h(qG.g(e),js)&&(x.h(t,n)||aV(t,n)))}),B(e)))}function hV(e,t){Qc(XF.g(r(r(e))),"\n"),Ig.F(r(e),I,Zl,null),t=rB.g(t);var i=dn.g(t);n(i)&&Qc(XF.g(r(r(e))),i),i=Xf(p,Tg(r(Rp.g(t))-C(i)," ")),Qc(XF.g(r(r(e))),i);e:for(Gg(dm.g(t),!0),Gg(Us.g(t),!0),e=IF.g(t);n(e);)Gg(Us.g(e),!0),Gg(dm.g(e),!0),e=IF.g(e);return null}function pV(e){var t=z(Fj((function(e){return!x.h(qG.g(e),js)}),e));return new Q(null,2,5,S,[t,z(Pg(C(t),e))],null)}mV.C(null,qw,(function(e,t,n){return kV(t,e=rB.g(e),n)})),mV.C(null,tm,(function(e,t,n){return lV(t,e=rB.g(e),n)})),mV.C(null,yD,(function(e,t,i,o){e=rB.g(e);var l=r(dm.g(e));return n(l)?l:(o=!jV(t,o))?o:lV(t,e,i)})),mV.C(null,Is,(function(){return!0}));var qV=function e(t,r){var i=pV(r);r=G(i,0,null);var o=G(i,1,null);if(n(r)&&iV(t,r,!1),n(o)){r=G(i=nV(o),0,null),i=G(i,1,null);var l=A(o);return n(mV.F(l,t,r,oV(o)))&&(hV(t,l),o=B(o)),jV(t,o)?t=o:(o=e.h?e.h(t,r):e.call(null,t,r),x.h(o,r)?(iV(t,r,!1),t=i):t=ah.h(F,Of.h(o,i))),t}return null};function rV(e){for(var t=Cp.g(r(r(e)));;){if(Ig.F(r(e),I,Cp,ah.h(F,t)),jV(e,t))return null;var n=qV(e,t);if(t===n)return null;t=n}}function sV(e,t){return Ig.F(r(e),I,Cp,re.h(Cp.g(r(r(e))),t)),jV(e,Cp.g(r(r(e))))?null:rV(e)}function tV(e){var t=Zl.g(r(r(e)));return n(t)?(Qc(XF.g(r(r(e))),t),Ig.F(r(e),I,Zl,null)):null}function uV(e,t){var i=TI(t,"\n",-1);if(x.h(C(i),1))return t;t=dn.g(A(Wn.g(r(r(e)))));var o=A(i);if(x.h($x,So.g(r(r(e))))){var l=DG.g(r(r(e))),s=l+C(o);Ig.F(r(e),I,DG,s),sV(e,new bV(Qy,o,null,l,s,null,null,null)),rV(e),n(o=Cp.g(r(r(e))))&&(iV(e,o,!0),Ig.F(r(e),I,Cp,F))}else tV(e),Qc(XF.g(r(r(e))),o);Qc(XF.g(r(r(e))),"\n"),o=z(B(Aj(i))),l=null;for(var a=s=0;;)if(a=ib:t),yb(AV)?OU.call(null,e):n(t)?Qc(db,"..."):(n(IV)&&(IV+=1),BV.call(null,e)),t}var LV=function e(t){for(var n=[],r=arguments.length,i=0;i=jb:e}function PV(e){NV(e,new uj(null,new k(null,4,[Is,null,tm,null,yD,null,qw,null],null),null));var t=db;Ig.F(r(t),I,So,$x);var n=DG.g(r(r(t))),i=Wn.g(r(r(t)));sV(t,new cV(js,e,i,n,n,null,null,null))}function QV(e,t){NV(e,new uj(null,new k(null,2,[vv,null,zm,null],null),null));var i=db,o=Wn.g(r(r(i)));if(x.h(So.g(r(r(i))),jp)){tV(i);var l=Rp.g(o);if(n(x.h?x.h(vv,e):x.call(null,vv,e)))e=r(fE.g(o));else{if(!n(x.h?x.h(zm,e):x.call(null,zm,e)))throw Error(["No matching clause: ",p.g(e)].join(""));e=WU(XF.g(r(r(i))),TR)}Gg(l,t+e)}else l=DG.g(r(r(i))),sV(i,new fV(wz,o,e,t,l,l,null,null,null))}function RV(e,t,r){t="string"==typeof t?SV(t):t,r=TV(r);e:{var i=new Za,o=yb(e)||!0===e?new od(i):e,l=UV(t)&&yb(JV(o))?n(JV(o))?o:vV(o):o,s=db;db=l;try{try{VV(t,r)}finally{o!==l&&Rc(l)}var a=yb(e)?p.g(i):!0===e?Wj(p.g(i)):null;break e}finally{db=s}a=void 0}return a}LV.l=function(e,t){var r=pj.l(D([new k(null,1,[kC,!0],null),Xf(jj,t)]));t=GV;var i=DV,o=ib,l=jb,s=CV,a=xV,u=BV,c=AV,h=FV,d=hb,f=wV,g=EV,w=XF.h(r,GV),m=fD.h(r,DV),v=Pq.h(r,ib),y=bE.h(r,jb),b=sz.h(r,CV),S=ux.h(r,xV),$=tr.h(r,BV),C=kF.h(r,AV),I=ku.h(r,FV),x=qb.h(r,hb),E=Fy.h(r,wV),A=NG.h(r,EV);GV=w,DV=m,ib=v,jb=y,CV=b,xV=S,BV=$,AV=C,FV=I,hb=x,wV=E,EV=A;try{var _=new Za,j=!M(r,kC)||kC.g(r),N=!0===j||null==j?new od(_):j;if(n(AV)){var R=yb(JV(N));r=db,db=R?vV(N):N;try{KV(e),VU()}finally{db=r}}else{R=db,db=N;try{OU.call(null,e)}finally{db=R}}return!0===j&&Wj(p.g(_)),null==j?p.g(_):null}finally{EV=g,wV=f,hb=d,FV=h,AV=c,BV=u,xV=a,CV=s,jb=l,ib=o,DV=i,GV=t}},LV.I=1,LV.J=function(e){var t=A(e);return e=B(e),this.l(t,e)};var WV=null;function XV(e,t){throw e=[p.g(e),"\n",p.g(WV),"\n",p.g(Xf(p,Tg(t," "))),"^\n"].join(""),Error(e)}function YV(e,t,n,r,i,o){this.sc=e,this.fb=t,this.rc=n,this.D=r,this.m=i,this.G=o,this.B=2230716170,this.M=139264}function TV(e){return new YV(e=z(e),e,0,null,null,null)}function ZV(e){var t=ur.g(e);if(n(t))return new Q(null,2,5,S,[A(t),new YV(mt.g(e),B(t),DG.g(e)+1,null,null,null)],null);throw Error("Not enough arguments for format definition")}function $V(e){var t=ZV(e);return e=G(t,0,null),t=G(t,1,null),e="string"==typeof e?SV(e):e,new Q(null,2,5,S,[e,t],null)}function aW(e,t){return t>=DG.g(e)?(t=DG.g(e)-t,bW.h?bW.h(e,t):bW.call(null,e,t)):new YV(mt.g(e),Pg(t,mt.g(e)),t,null,null,null)}function bW(e,t){var n=DG.g(e)+t;return 0>t?aW(e,n):new YV(mt.g(e),Pg(t,ur.g(e)),n,null,null,null)}function cW(e,t,n,r,i,o,l){this.bc=e,this.Zb=t,this.lc=n,this.offset=r,this.D=i,this.m=o,this.G=l,this.B=2230716170,this.M=139264}function dW(e,t){var n=G(e,0,null);e=G(e,1,null);var r=G(e,0,null);return e=G(e,1,null),t=G(r=M(new uj(null,new k(null,2,[Wz,null,hs,null],null),null),n)?new Q(null,2,5,S,[r,t],null):x.h(r,np)?ZV(t):x.h(r,Vn)?new Q(null,2,5,S,[C(ur.g(t)),t],null):new Q(null,2,5,S,[r,t],null),0,null),r=G(r,1,null),new Q(null,2,5,S,[new Q(null,2,5,S,[n,new Q(null,2,5,S,[t,e],null)],null),r],null)}function eW(e,t){return e=G(t=RU(dW,t,e),0,null),t=G(t,1,null),new Q(null,2,5,S,[ah.h(P,e),t],null)}h=YV.prototype,h.na=function(e,t){return this.P(null,t,null)},h.P=function(e,t,n){switch(t instanceof w?t.W:null){case"seq":return this.sc;case"rest":return this.fb;case"pos":return this.rc;default:return u.j(this.m,t,n)}},h.Ka=function(e,t,n){return Nb.j((function(e,n){var r=G(n,0,null);return n=G(n,1,null),t.j?t.j(e,r,n):t.call(null,e,r,n)}),n,this)},h.U=function(e,t,n){return Tj(t,(function(e){return Tj(t,bk,""," ","",n,e)}),"#cljs.pprint.arg-navigator{",", ","}",n,Of.h(new Q(null,3,5,S,[new Q(null,2,5,S,[mt,this.sc],null),new Q(null,2,5,S,[ur,this.fb],null),new Q(null,2,5,S,[DG,this.rc],null)],null),this.m))},h.xa=function(){return new Yh(this,3,new Q(null,3,5,S,[mt,ur,DG],null),n(this.m)?nd(this.m):eg())},h.R=function(){return this.D},h.da=function(){return 3+C(this.m)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=-402038447^Pd(this)},h.aa=function(e,t){return null!=t&&this.constructor===t.constructor&&x.h(this.sc,t.sc)&&x.h(this.fb,t.fb)&&x.h(this.rc,t.rc)&&x.h(this.m,t.m)},h.bb=function(e,t){return M(new uj(null,new k(null,3,[DG,null,mt,null,ur,null],null),null),t)?we.h(Bc(ah.h(P,this),this.D),t):new YV(this.sc,this.fb,this.rc,this.D,dg(we.h(this.m,t)),null)},h.za=function(e,t){switch(t instanceof w?t.W:null){case"seq":case"rest":case"pos":return!0;default:return M(this.m,t)}},h.ja=function(e,t,r){return n(O.h?O.h(mt,t):O.call(null,mt,t))?new YV(r,this.fb,this.rc,this.D,this.m,null):n(O.h?O.h(ur,t):O.call(null,ur,t))?new YV(this.sc,r,this.rc,this.D,this.m,null):n(O.h?O.h(DG,t):O.call(null,DG,t))?new YV(this.sc,this.fb,r,this.D,this.m,null):new YV(this.sc,this.fb,this.rc,this.D,I.j(this.m,t,r),null)},h.ca=function(){return z(Of.h(new Q(null,3,5,S,[new xh(mt,this.sc),new xh(ur,this.fb),new xh(DG,this.rc)],null),this.m))},h.S=function(e,t){return new YV(this.sc,this.fb,this.rc,t,this.m,this.G)},h.ia=function(e,t){return Le(t)?this.ja(null,Zb(t,0),Zb(t,1)):Nb.j(Xb,this,t)},h=cW.prototype,h.na=function(e,t){return this.P(null,t,null)},h.P=function(e,t,n){switch(t instanceof w?t.W:null){case"func":return this.bc;case"def":return this.Zb;case"params":return this.lc;case"offset":return this.offset;default:return u.j(this.m,t,n)}},h.Ka=function(e,t,n){return Nb.j((function(e,n){var r=G(n,0,null);return n=G(n,1,null),t.j?t.j(e,r,n):t.call(null,e,r,n)}),n,this)},h.U=function(e,t,n){return Tj(t,(function(e){return Tj(t,bk,""," ","",n,e)}),"#cljs.pprint.compiled-directive{",", ","}",n,Of.h(new Q(null,4,5,S,[new Q(null,2,5,S,[vA,this.bc],null),new Q(null,2,5,S,[qE,this.Zb],null),new Q(null,2,5,S,[CC,this.lc],null),new Q(null,2,5,S,[jx,this.offset],null)],null),this.m))},h.xa=function(){return new Yh(this,4,new Q(null,4,5,S,[vA,qE,CC,jx],null),n(this.m)?nd(this.m):eg())},h.R=function(){return this.D},h.da=function(){return 4+C(this.m)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=-829256337^Pd(this)},h.aa=function(e,t){return null!=t&&this.constructor===t.constructor&&x.h(this.bc,t.bc)&&x.h(this.Zb,t.Zb)&&x.h(this.lc,t.lc)&&x.h(this.offset,t.offset)&&x.h(this.m,t.m)},h.bb=function(e,t){return M(new uj(null,new k(null,4,[jx,null,vA,null,CC,null,qE,null],null),null),t)?we.h(Bc(ah.h(P,this),this.D),t):new cW(this.bc,this.Zb,this.lc,this.offset,this.D,dg(we.h(this.m,t)),null)},h.za=function(e,t){switch(t instanceof w?t.W:null){case"func":case"def":case"params":case"offset":return!0;default:return M(this.m,t)}},h.ja=function(e,t,r){return n(O.h?O.h(vA,t):O.call(null,vA,t))?new cW(r,this.Zb,this.lc,this.offset,this.D,this.m,null):n(O.h?O.h(qE,t):O.call(null,qE,t))?new cW(this.bc,r,this.lc,this.offset,this.D,this.m,null):n(O.h?O.h(CC,t):O.call(null,CC,t))?new cW(this.bc,this.Zb,r,this.offset,this.D,this.m,null):n(O.h?O.h(jx,t):O.call(null,jx,t))?new cW(this.bc,this.Zb,this.lc,r,this.D,this.m,null):new cW(this.bc,this.Zb,this.lc,this.offset,this.D,I.j(this.m,t,r),null)},h.ca=function(){return z(Of.h(new Q(null,4,5,S,[new xh(vA,this.bc),new xh(qE,this.Zb),new xh(CC,this.lc),new xh(jx,this.offset)],null),this.m))},h.S=function(e,t){return new cW(this.bc,this.Zb,this.lc,this.offset,t,this.m,this.G)},h.ia=function(e,t){return Le(t)?this.ja(null,Zb(t,0),Zb(t,1)):Nb.j(Xb,this,t)};var fW=new k(null,3,[2,"#b",8,"#o",16,"#x"],null);function gW(e,t,r){var i=G(r=ZV(r),0,null);if(r=G(r,1,null),Se(i))if(x.h(GV,10))var o=[p.g(i),n(FV)?".":null].join("");else{var l=(o=p).g;if(n(FV)){var s=u.h(fW,GV);s=n(s)?s:["#",p.g(GV),"r"].join("")}else s=null;o=[l.call(o,s),p.g(hW(GV,i))].join("")}else o=null;return o=(o=(i=(e=n(o)?o:e.g?e.g(i):e.call(null,i)).length)+oB.g(t))>=nx.g(t)?o:o+(kf(nx.g(t)-o-1,xt.g(t))+1)*xt.g(t),i=Xf(p,Tg(o-i,Yw.g(t))),n(hs.g(t))?NU.l(D([[p.g(i),p.g(e)].join("")])):NU.l(D([[p.g(e),p.g(i)].join("")])),r}function iW(e,t){return vf(A(SU((function(t){return new Q(null,2,5,S,0e?QU("0")+e:QU("a")+(e-10))}),iW(e,t)))}function jW(e,t){return vf(A(SU((function(t){return new Q(null,2,5,S,[z(vf(Og.h(e,t))),z(Pg(e,t))],null)}),vf(t))))}function kW(e,t,r){var i=G(r=ZV(r),0,null);if(r=G(r,1,null),Se(i)||"number"==typeof i&&!isNaN(i)&&1/0!==i&&parseFloat(i)!==parseInt(i,10)&&x.h(i,Math.floor(i))){var o=0>i,l=hW(e,o?-i:i);e=n(Wz.g(t))?function(){var e=Ng.h((function(e){return Xf(p,e)}),jW(ky.g(t),l)),n=Tg(C(e),LE.g(t));return Xf(p,B(Ug.h(n,e)))}():l,e=(e=o?["-",p.g(e)].join(""):n(hs.g(t))?["+",p.g(e)].join(""):e).lengthe)var o=ee(lW,e);else{o=kf(e,10);var l=lf(e,10);o=[p.g(0n){var r=iW(10,n);n=F;for(var i=C(r)-1;;){if(Ee(r)){NU.l(D([Xf(p,n)]));break}var o=A(r);n=x.h(0,o)?n:re.h(n,ee(ee(e,i),o-1)),--i,r=B(r)}}else kW(10,new k(null,5,[nx,0,Yw," ",LE,",",ky,3,Wz,!0],null),TV(new Q(null,1,5,S,[n],null)));return t}var vW=new k(null,5,[8,"Backspace",9,"Tab",10,"Newline",13,"Return",32,"Space"],null);function wW(e,t){t=G(e=ZV(t),0,null),e=G(e,1,null);var r=QU(t);t=127&r,r&=128;var i=u.h(vW,t);return 0t?["Control-",p.g(hf(t+64))].join(""):x.h(t,127)?"Control-?":hf(t)])),e}function xW(e,t){var r=ZV(t);if(t=G(r,0,null),r=G(r,1,null),e=Sq.g(e),n(x.h?x.h("o",e):x.call(null,"o",e)))RV(!0,"\\o~3,'0o",D([QU(t)]));else if(n(x.h?x.h("u",e):x.call(null,"u",e)))RV(!0,"\\u~4,'0x",D([QU(t)]));else{if(!n(x.h?x.h(null,e):x.call(null,null,e)))throw Error(["No matching clause: ",p.g(e)].join(""));Qc(db,n(x.h?x.h("\b",t):x.call(null,"\b",t))?"\\backspace":n(x.h?x.h(" ",t):x.call(null," ",t))?"\\space":n(x.h?x.h("\t",t):x.call(null,"\t",t))?"\\tab":n(x.h?x.h("\n",t):x.call(null,"\n",t))?"\\newline":n(x.h?x.h("\f",t):x.call(null,"\f",t))?"\\formfeed":n(x.h?x.h("\r",t):x.call(null,"\r",t))?"\\return":n(x.h?x.h('"',t):x.call(null,'"',t))?'\\"':n(x.h?x.h("\\",t):x.call(null,"\\",t))?"\\\\":["\\",p.g(t)].join(""))}return r}function yW(e,t){return e=G(t=ZV(t),0,null),t=G(t,1,null),NU.l(D([e])),t}function zW(e){return e=A(e),x.h(Bt,e)||x.h(yr,e)}function AW(e,t,n){return oe(RU((function(e,t){if(zW(t))return new Q(null,2,5,S,[null,t],null);var r=G(t=eW(CC.g(e),t),0,null);t=G(t,1,null);var i=TU(r);return r=G(i,0,null),i=G(i,1,null),r=I.j(r,by,n),new Q(null,2,5,S,[null,Xf(vA.g(e),new Q(null,3,5,S,[r,t,i],null))],null)}),t,e))}function BW(e){var t=(e=p.g(e).toLowerCase()).indexOf("e"),n=e.indexOf(".");t=G(e=new Q(null,2,5,S,0>t?0>n?[e,p.g(e.length-1)]:[[e.substring(0,n),e.substring(n+1)].join(""),p.g(n-1)]:0>n?[e.substring(0,t),e.substring(t+1)]:[[e.substring(0,1),e.substring(2,t)].join(""),e.substring(t+1)],null),0,null),e=G(e,1,null);e:if(n=C(t),0n){t="";break e}if(!x.h(ee(t,n),"0")){t=t.substring(0,n+1);break e}--n}e:{var r=C(n=t);if(0i?2:i:0,n(r)?r=t+r+1:0<=t?r=(r=t+1)>--i?r:i:r=i+t;var l=x.h(r,0)?new Q(null,4,5,S,[["0",p.g(e)].join(""),t+1,1,o+1],null):new Q(null,4,5,S,[e,t,r,o],null);if(r=G(l,0,null),o=G(l,1,null),i=G(l,2,null),l=G(l,3,null),n(i)){if(0>i)return new Q(null,3,5,S,["0",0,!1],null);if(l>i){if(t=ee(r,i),e=r.substring(0,i),QU(t)>=QU("5")){e:for(t=C(e)-1,r=0|t;;){if(0>r){t=Yf(p,"1",Tg(t+1,"0"));break e}if(!x.h("9",e.charAt(r))){t=Zf(p,e.substring(0,r),hf(QU(e.charAt(r))+1),Tg(t-r,"0"));break e}--r}return e=C(t)>e.length,new Q(null,3,5,S,[e?sf(t,0,C(t)-1):t,o,e],null)}return new Q(null,3,5,S,[e,o,!1],null)}}}return new Q(null,3,5,S,[e,t,!1],null)}function DW(e,t,r){var i=new Q(null,2,5,S,0>t?[[p.g(Xf(p,Tg(-t-1,"0"))),p.g(e)].join(""),-1]:[e,t],null);e=G(i,0,null);var o=G(i,1,null);return r=(i=C(e))<(r=n(r)?o+r+1:o+1)?[p.g(e),p.g(Xf(p,Tg(r-i,"0")))].join(""):e,0>t?t=[".",p.g(r)].join(""):(t+=1,t=[r.substring(0,t),".",r.substring(t)].join("")),t}function EW(e,t){return 0>t?[".",p.g(e)].join(""):[e.substring(0,t),".",e.substring(t)].join("")}function FW(e,t){var r=kE.g(e),i=zE.g(e),o=G(t=ZV(t),0,null);t=G(t,1,null);var l=new Q(null,2,5,S,0>o?["-",-o]:["+",o],null),s=G(l,0,null);l=G(l,1,null);var a,u=G(l=BW(l),0,null),c=G(l,1,null)+vE.g(e);l=n(a=hs.g(e))?a:0>o;var h=yb(i)&&C(u)-1<=c,d=CW(u,c,i,n(r)?r-(n(l)?1:0):null);if(u=G(d,0,null),c=G(d,1,null),u=DW(u,n(d=G(d,2,null))?c+1:c,i),i=n(n(r)?n(i)?1<=i&&x.h(u.charAt(0),"0")&&x.h(u.charAt(1),".")&&u.length>r-(n(l)?1:0):i:r)?u.substring(1):u,c=x.h(A(i),"."),n(r)){u=i.length,u=n(l)?u+1:u,h=h&&!(u>=r);var f=(c=c&&!(u>=r))||h?u+1:u;n(function(){var t=f>r;return t?BE.g(e):t}())?NU.l(D([Xf(p,Tg(r,BE.g(e)))])):NU.l(D([[p.g(Xf(p,Tg(r-f,Yw.g(e)))),p.g(n(l)?s:null),c?"0":null,i,h?"0":null].join("")]))}else NU.l(D([[p.g(n(l)?s:null),c?"0":null,i,h?"0":null].join("")]));return t}function GW(e,t){var r=G(t=ZV(t),0,null);t=G(t,1,null);var i,o=BW(0>r?-r:r);for(G(o,0,null),G(o,1,null);;){var l=G(o,0,null),s=G(o,1,null),a=kE.g(e),u=zE.g(e),c=wE.g(e),h=vE.g(e),d=(i=void 0,n(i=fm.g(e))?i:"E");o=function(){var t=hs.g(e);return n(t)?t:0>r}();var f=0>=h,g=s-(h-1),w=p.g(Math.abs(g)),m=(d=[p.g(d),0>g?"-":"+",p.g(n(c)?Xf(p,Tg(c-w.length,"0")):null),w].join("")).length;if(g=C(l),l=[p.g(Xf(p,Tg(-h,"0"))),p.g(l),p.g(n(u)?Xf(p,Tg(u-(g-1)-(0>h?-h:0),"0")):null)].join(""),g=n(a)?a-m:null,g=G(l=CW(l,0,x.h(h,0)?u-1:0h?u-1:null,n(g)?g-(n(o)?1:0):null),0,null),G(l,1,null),w=G(l,2,null),l=EW(g,h),u=x.h(h,C(g))&&null==u,yb(w)){if(n(a)){s=l.length+m,s=n(o)?s+1:s;var v=(f=f&&!x.h(s,a))?s+1:s;s=u&&va;return t||(t=n(t=c)?m-2>c:t),n(t)?BE.g(e):t}())?NU.l(D([Xf(p,Tg(a,BE.g(e)))])):NU.l(D([[p.g(Xf(p,Tg(a-v-(s?1:0),Yw.g(e)))),n(o)?0>r?"-":"+":null,f?"0":null,l,s?"0":null,d].join("")]))}else NU.l(D([[n(o)?0>r?"-":"+":null,f?"0":null,l,u?"0":null,d].join("")]));break}o=new Q(null,2,5,S,[g,s+1],null)}return t}function HW(e,t,r){var i=ZV(t),o=G(i,0,null);G(i,1,null);var l=G(i=BW(0>o?-o:o),0,null);i=G(i,1,null);var s=kE.g(e),a=zE.g(e),u=wE.g(e);return i=x.h(o,0)?0:i+1,o=n(u)?u+2:4,s=n(s)?s-o:null,n(a)?l=a:l=(l=C(l))>(a=7>i?i:7)?l:a,0<=(i=l-i)&&i<=l?(e=FW(new k(null,6,[kE,s,zE,i,vE,0,BE,BE.g(e),Yw,Yw.g(e),hs,hs.g(e)],null),t),NU.l(D([Xf(p,Tg(o," "))])),e):GW(e,t)}function IW(e,t){var r=G(t=ZV(t),0,null);t=G(t,1,null);var i=BW(Math.abs(r)),o=G(i,0,null),l=G(i,1,null),s=zE.g(e),a=nE.g(e);i=kE.g(e);var u=function(){var t=hs.g(e);return n(t)?t:0>r}(),c=CW(o,l,s,null);return o=G(c,0,null),l=G(c,1,null),s=DW(o,n(c=G(c,2,null))?l+1:l,s),a=[p.g(Xf(p,Tg(a-s.indexOf("."),"0"))),s].join(""),s=a.length+(n(u)?1:0),NU.l(D([[n(function(){var t=Wz.g(e);return n(t)?u:t}())?0>r?"-":"+":null,p.g(Xf(p,Tg(i-s,Yw.g(e)))),n(function(){var t=yb(Wz.g(e));return t?u:t}())?0>r?"-":"+":null,a].join("")])),t}function JW(e,t){var r=up.g(e);t=G(r=n(r)?new Q(null,2,5,S,[r,t],null):ZV(t),0,null),r=G(r,1,null);var i=OF.g(e);return n(t=0>t||t>=C(i)?A(lt.g(e)):ee(i,t))?AW(t,r,by.g(e)):r}function KW(e,t){var r=ZV(t);t=G(r,0,null),r=G(r,1,null);var i=OF.g(e);return t=n(t)?oe(i):A(i),n(t)?AW(t,r,by.g(e)):r}function LW(e,t){var r=ZV(t),i=G(r,0,null);r=G(r,1,null);var o=OF.g(e);return o=n(i)?A(o):null,n(i)?n(o)?AW(o,t,by.g(e)):t:r}function MW(e,t){var r=aB.g(e),i=A(OF.g(e));t=G(i=Ee(i)?$V(t):new Q(null,2,5,S,[i,t],null),0,null),i=G(i,1,null);var o=G(i=ZV(i),0,null);i=G(i,1,null);var l=0;o=TV(o);for(var s=-1;;){if(yb(r)&&x.h(DG.g(o),s)&&1=r:r)))return i;if(s=AW(t,o,by.g(e)),x.h(Bt,A(s)))return i;l+=1;var a=DG.g(o);o=s,s=a}}function NW(e,t){var r=aB.g(e),i=A(OF.g(e));t=G(i=Ee(i)?$V(t):new Q(null,2,5,S,[i,t],null),0,null),i=G(i,1,null);var o=G(i=ZV(i),0,null);i=G(i,1,null);for(var l=0;;){var s=Ee(o)&&(yb(Wz.g(Sz.g(e)))||0=r:r)))return i;if(s=AW(t,TV(A(o)),TV(B(o))),x.h(yr,A(s)))return i;l+=1,o=B(o)}}function OW(e,t){var r=aB.g(e),i=A(OF.g(e)),o=Ee(i)?$V(t):new Q(null,2,5,S,[i,t],null);t=G(o,0,null),i=0,o=G(o,1,null);for(var l=-1;;){if(yb(r)&&x.h(DG.g(o),l)&&1=r:r)))return o;if(l=AW(t,o,by.g(e)),x.h(Bt,A(l)))return oe(l);i+=1;var s=DG.g(o);o=l,l=s}}function PW(e,t){var r=aB.g(e),i=A(OF.g(e)),o=Ee(i)?$V(t):new Q(null,2,5,S,[i,t],null);for(t=G(o,0,null),i=0,o=G(o,1,null);;){var l=Ee(ur.g(o))&&(yb(Wz.g(Sz.g(e)))||0=r:r)))return o;if(o=G(l=n(l=ur.g(o))?new Q(null,2,5,S,[A(l),new YV(mt.g(o),B(l),DG.g(o)+1,null,null,null)],null):new Q(null,2,5,S,[null,o],null),0,null),l=G(l,1,null),o=AW(t,TV(o),l),x.h(yr,A(o)))return l;o=l,i+=1}}function QW(e,t){if(n(Wz.g(Sz.g(e)))){var r=OF.g(e),i=C(r),o=1t?1:t}();h=Nb.h(ff,Ng.h(C,d));var g=nx.g(e),w=oB.g(e),m=xt.g(e),v=h+f*w,y=(g=v<=g?g:g+m*(1+kf(v-g-1,m)))-h;h=function(){var e=kf(y,f);return w>e?w:e}(),m=y-h*f,h=Xf(p,Tg(h,Yw.g(e))),n(n(l)?WU(XF.g(r(r(db))),TR)+o+g>c:l)&&NU.l(D([l])),o=m;for(var b=d,S=function(){var t=Wz.g(e);return n(t)?t:x.h(C(b),1)&&yb(hs.g(e))}();z(b);)NU.l(D([[p.g(yb(S)?A(b):null),p.g(n(function(){var t=S;return n(t)||(t=B(b))?t:hs.g(e)}())?h:null),p.g(0^W_I".split(""),[new k(null,5,[ws,"A",CC,new k(null,4,[nx,new Q(null,2,5,S,[0,Number],null),xt,new Q(null,2,5,S,[1,Number],null),oB,new Q(null,2,5,S,[0,Number],null),Yw,new Q(null,2,5,S,[" ",String],null)],null),oD,new uj(null,new k(null,3,[Wz,null,hs,null,xq,null],null),null),Mo,P,JD,function(){return function(e,t){return gW(jk,e,t)}}],null),new k(null,5,[ws,"S",CC,new k(null,4,[nx,new Q(null,2,5,S,[0,Number],null),xt,new Q(null,2,5,S,[1,Number],null),oB,new Q(null,2,5,S,[0,Number],null),Yw,new Q(null,2,5,S,[" ",String],null)],null),oD,new uj(null,new k(null,3,[Wz,null,hs,null,xq,null],null),null),Mo,P,JD,function(){return function(e,t){return gW(hk,e,t)}}],null),new k(null,5,[ws,"D",CC,new k(null,4,[nx,new Q(null,2,5,S,[0,Number],null),Yw,new Q(null,2,5,S,[" ",String],null),LE,new Q(null,2,5,S,[",",String],null),ky,new Q(null,2,5,S,[3,Number],null)],null),oD,new uj(null,new k(null,3,[Wz,null,hs,null,xq,null],null),null),Mo,P,JD,function(){return function(e,t){return kW(10,e,t)}}],null),new k(null,5,[ws,"B",CC,new k(null,4,[nx,new Q(null,2,5,S,[0,Number],null),Yw,new Q(null,2,5,S,[" ",String],null),LE,new Q(null,2,5,S,[",",String],null),ky,new Q(null,2,5,S,[3,Number],null)],null),oD,new uj(null,new k(null,3,[Wz,null,hs,null,xq,null],null),null),Mo,P,JD,function(){return function(e,t){return kW(2,e,t)}}],null),new k(null,5,[ws,"O",CC,new k(null,4,[nx,new Q(null,2,5,S,[0,Number],null),Yw,new Q(null,2,5,S,[" ",String],null),LE,new Q(null,2,5,S,[",",String],null),ky,new Q(null,2,5,S,[3,Number],null)],null),oD,new uj(null,new k(null,3,[Wz,null,hs,null,xq,null],null),null),Mo,P,JD,function(){return function(e,t){return kW(8,e,t)}}],null),new k(null,5,[ws,"X",CC,new k(null,4,[nx,new Q(null,2,5,S,[0,Number],null),Yw,new Q(null,2,5,S,[" ",String],null),LE,new Q(null,2,5,S,[",",String],null),ky,new Q(null,2,5,S,[3,Number],null)],null),oD,new uj(null,new k(null,3,[Wz,null,hs,null,xq,null],null),null),Mo,P,JD,function(){return function(e,t){return kW(16,e,t)}}],null),new k(null,5,[ws,"R",CC,new k(null,5,[XF,new Q(null,2,5,S,[null,Number],null),nx,new Q(null,2,5,S,[0,Number],null),Yw,new Q(null,2,5,S,[" ",String],null),LE,new Q(null,2,5,S,[",",String],null),ky,new Q(null,2,5,S,[3,Number],null)],null),oD,new uj(null,new k(null,3,[Wz,null,hs,null,xq,null],null),null),Mo,P,JD,function(e){return n(A(XF.g(e)))?function(e,t){return kW(XF.g(e),e,t)}:n(n(t=hs.g(e))?Wz.g(e):t)?function(e,t){return uW(sW,t)}:n(hs.g(e))?function(e,t){return uW(tW,t)}:n(Wz.g(e))?function(e,t){if(t=G(e=ZV(t),0,null),e=G(e,1,null),x.h(0,t))NU.l(D(["zeroth"]));else{var n=iW(1e3,0>t?-t:t);if(C(n)<=C(pW)){var r=Ng.h(qW,Qg(1,n));r=rW(r,1);var i=qe(n);n=kf(i,100),i=lf(i,100);var o=0i)var a=ee(mW,i);else{a=kf(i,10);var u=lf(i,10);a=0t?"minus ":null,Ee(r)||Ee(n)?Ee(r)?n:[r,"th"].join(""):[r,", ",n].join("")].join("")]))}else kW(10,new k(null,5,[nx,0,Yw," ",LE,",",ky,3,Wz,!0],null),TV(new Q(null,1,5,S,[t],null))),t=11<(r=lf(t,100))||19>r,r=lf(r,10),NU.l(D([1===r&&t?"st":2===r&&t?"nd":3===r&&t?"rd":"th"]))}return e}:function(e,t){if(e=G(t=ZV(t),0,null),t=G(t,1,null),x.h(0,e))NU.l(D(["zero"]));else{var n=iW(1e3,0>e?-e:e);C(n)<=C(pW)?(n=rW(n=Ng.h(qW,n),0),NU.l(D([[0>e?"minus ":null,n].join("")]))):kW(10,new k(null,5,[nx,0,Yw," ",LE,",",ky,3,Wz,!0],null),TV(new Q(null,1,5,S,[e],null)))}return t};var t}],null),new k(null,5,[ws,"P",CC,P,oD,new uj(null,new k(null,3,[Wz,null,hs,null,xq,null],null),null),Mo,P,JD,function(){return function(e,t){t=n(Wz.g(e))?bW(t,-1):t,e=n(hs.g(e))?new Q(null,2,5,S,["y","ies"],null):new Q(null,2,5,S,["","s"],null);var r=ZV(t);return t=G(r,0,null),r=G(r,1,null),NU.l(D([x.h(t,1)?A(e):oe(e)])),r}}],null),new k(null,5,[ws,"C",CC,new k(null,1,[Sq,new Q(null,2,5,S,[null,String],null)],null),oD,new uj(null,new k(null,3,[Wz,null,hs,null,xq,null],null),null),Mo,P,JD,function(e){return n(Wz.g(e))?wW:n(hs.g(e))?xW:yW}],null),new k(null,5,[ws,"F",CC,new k(null,5,[kE,new Q(null,2,5,S,[null,Number],null),zE,new Q(null,2,5,S,[null,Number],null),vE,new Q(null,2,5,S,[0,Number],null),BE,new Q(null,2,5,S,[null,String],null),Yw,new Q(null,2,5,S,[" ",String],null)],null),oD,new uj(null,new k(null,1,[hs,null],null),null),Mo,P,JD,function(){return FW}],null),new k(null,5,[ws,"E",CC,new k(null,7,[kE,new Q(null,2,5,S,[null,Number],null),zE,new Q(null,2,5,S,[null,Number],null),wE,new Q(null,2,5,S,[null,Number],null),vE,new Q(null,2,5,S,[1,Number],null),BE,new Q(null,2,5,S,[null,String],null),Yw,new Q(null,2,5,S,[" ",String],null),fm,new Q(null,2,5,S,[null,String],null)],null),oD,new uj(null,new k(null,1,[hs,null],null),null),Mo,P,JD,function(){return GW}],null),new k(null,5,[ws,"G",CC,new k(null,7,[kE,new Q(null,2,5,S,[null,Number],null),zE,new Q(null,2,5,S,[null,Number],null),wE,new Q(null,2,5,S,[null,Number],null),vE,new Q(null,2,5,S,[1,Number],null),BE,new Q(null,2,5,S,[null,String],null),Yw,new Q(null,2,5,S,[" ",String],null),fm,new Q(null,2,5,S,[null,String],null)],null),oD,new uj(null,new k(null,1,[hs,null],null),null),Mo,P,JD,function(){return HW}],null),new k(null,5,[ws,"$",CC,new k(null,4,[zE,new Q(null,2,5,S,[2,Number],null),nE,new Q(null,2,5,S,[1,Number],null),kE,new Q(null,2,5,S,[0,Number],null),Yw,new Q(null,2,5,S,[" ",String],null)],null),oD,new uj(null,new k(null,3,[Wz,null,hs,null,xq,null],null),null),Mo,P,JD,function(){return IW}],null),new k(null,5,[ws,"%",CC,new k(null,1,[mw,new Q(null,2,5,S,[1,Number],null)],null),oD,wj,Mo,P,JD,function(){return function(e,t){e=mw.g(e);for(var n=0;n",Wx,!0,lt,mu],null),JD,function(){return QW}],null),new k(null,5,[ws,">",CC,P,oD,new uj(null,new k(null,1,[Wz,null],null),null),Mo,P,JD,function(){return null}],null),new k(null,5,[ws,"^",CC,new k(null,3,[ay,new Q(null,2,5,S,[null,Number],null),dy,new Q(null,2,5,S,[null,Number],null),cy,new Q(null,2,5,S,[null,Number],null)],null),oD,new uj(null,new k(null,1,[Wz,null],null),null),Mo,P,JD,function(){return function(e,t){var r=ay.g(e),i=dy.g(e),o=cy.g(e),l=n(Wz.g(e))?yr:Bt;return n(n(r)?n(i)?o:i:r)?r<=i&&i<=o?new Q(null,2,5,S,[l,t],null):t:n(n(r)?i:r)?x.h(r,i)?new Q(null,2,5,S,[l,t],null):t:n(r)?x.h(r,0)?new Q(null,2,5,S,[l,t],null):t:(n(Wz.g(e))?Ee(ur.g(by.g(e))):Ee(ur.g(t)))?new Q(null,2,5,S,[l,t],null):t}}],null),new k(null,5,[ws,"W",CC,P,oD,new uj(null,new k(null,4,[Wz,null,hs,null,xq,null,kF,null],null),null),Mo,P,JD,function(e){if(n(n(r=hs.g(e))?r:Wz.g(e))){var t=Of.h(n(hs.g(e))?new Q(null,4,5,S,[bE,null,Pq,null],null):F,n(Wz.g(e))?new Q(null,2,5,S,[kF,!0],null):F);return function(e,r){return e=G(r=ZV(r),0,null),r=G(r,1,null),n(Yf(LV,e,t))?new Q(null,2,5,S,[Bt,r],null):r}}var r;return function(e,t){return e=G(t=ZV(t),0,null),t=G(t,1,null),n(KV(e))?new Q(null,2,5,S,[Bt,t],null):t}}],null),new k(null,5,[ws,"_",CC,P,oD,new uj(null,new k(null,3,[Wz,null,hs,null,xq,null],null),null),Mo,P,JD,function(){return ZW}],null),new k(null,5,[ws,"I",CC,new k(null,1,[nE,new Q(null,2,5,S,[0,Number],null)],null),oD,new uj(null,new k(null,1,[Wz,null],null),null),Mo,P,JD,function(){return YW}],null)]),aX=/^([vV]|#|('.)|([+-]?\d+)|(?=,))/,bX=new uj(null,new k(null,2,[Vn,null,np,null],null),null);function cX(e){var t=G(e,0,null),r=G(e,1,null),i=G(e,2,null),o=(e=new RegExp(aX.source,"g")).exec(t);return n(o)?(i=A(o),t=t.substring(e.lastIndex),e=r+e.lastIndex,x.h(",",ee(t,0))?new Q(null,2,5,S,[new Q(null,2,5,S,[i,r],null),new Q(null,3,5,S,[t.substring(1),e+1,!0],null)],null):new Q(null,2,5,S,[new Q(null,2,5,S,[i,r],null),new Q(null,3,5,S,[t,e,!1],null)],null)):n(i)?XV("Badly formed parameters in format directive",r):new Q(null,2,5,S,[null,new Q(null,2,5,S,[t,r],null)],null)}function dX(e){var t=G(e,0,null);return e=G(e,1,null),new Q(null,2,5,S,[x.h(t.length,0)?null:x.h(t.length,1)&&M(new uj(null,new k(null,2,["V",null,"v",null],null),null),ee(t,0))?np:x.h(t.length,1)&&x.h("#",ee(t,0))?Vn:x.h(t.length,2)&&x.h("'",ee(t,0))?ee(t,1):parseInt(t,10),e],null)}var eX=new k(null,2,[":",Wz,"@",hs],null);function fX(e,t){return SU((function(e){var t=G(e,0,null),r=G(e,1,null);if(e=G(e,2,null),Ee(t))return new Q(null,2,5,S,[null,new Q(null,3,5,S,[t,r,e],null)],null);var i=u.h(eX,A(t));return n(i)?M(e,i)?XV(['Flag "',p.g(A(t)),'" appears more than once in a directive'].join(""),r):new Q(null,2,5,S,[!0,new Q(null,3,5,S,[t.substring(1),r+1,I.j(e,i,new Q(null,2,5,S,[!0,r],null))],null)],null):new Q(null,2,5,S,[null,new Q(null,3,5,S,[t,r,e],null)],null)}),new Q(null,3,5,S,[e,t,P],null))}function gX(e,t){var r,i=oD.g(e);n((r=yb(hs.g(i)))?hs.g(t):r)&&XV(['"@" is an illegal flag for format directive "',p.g(ws.g(e)),'"'].join(""),ee(hs.g(t),1)),n(function(){var e=yb(Wz.g(i));return e?Wz.g(t):e}())&&XV(['":" is an illegal flag for format directive "',p.g(ws.g(e)),'"'].join(""),ee(Wz.g(t),1)),n(function(){var e=yb(xq.g(i));return e?n(e=hs.g(t))?Wz.g(t):e:e}())&&XV(['Cannot combine "@" and ":" flags for format directive "',p.g(ws.g(e)),'"'].join(""),function(){var e=ee(Wz.g(t),1),n=ee(hs.g(t),1);return eC(CC.g(e))&&XV(RV(null,'Too many parameters for directive "~C": ~D~:* ~[were~;was~:;were~] specified but only ~D~:* ~[are~;is~:;are~] allowed',D([ws.g(e),C(t),C(CC.g(e))])),oe(A(t))),Oj(Ng.j((function(t,n){var r=A(t);return null==r||M(bX,r)||x.h(oe(oe(n)),Db(r))?null:XV(["Parameter ",Cf(A(n)),' has bad type in directive "',p.g(ws.g(e)),'": ',p.g(Db(r))].join(""),oe(t))}),t,CC.g(e))),pj.l(D([ah.h(P,vf(function e(t){return new Df(null,(function(){for(;;){var n=z(t);if(n){if(Me(n)){var i=ed(n),o=C(i),l=Hf(o);e:for(var s=0;;){if(!(sn?new Q(null,2,5,S,[jX(t,e),new Q(null,2,5,S,["",e+t.length],null)],null):0===n?iX(t.substring(1),e+1):new Q(null,2,5,S,[jX(t.substring(0,n),e),new Q(null,2,5,S,[t.substring(n),n+e],null)],null)}),new Q(null,2,5,S,[e,0],null))))}finally{WV=t}}var UV=function e(t){for(;;){if(Ee(t))return!1;var r=kF.g(oD.g(qE.g(A(t))));if(n(r)||(r=n(r=vg(e,A(OF.g(CC.g(A(t))))))?r:vg(e,A(lt.g(CC.g(A(t)))))),n(r))return!0;t=B(t)}};function VV(e,t){return RU((function(e,t){if(zW(t))return new Q(null,2,5,S,[null,t],null);var n=G(t=eW(CC.g(e),t),0,null);t=G(t,1,null);var r=TU(n);return n=G(r,0,null),r=G(r,1,null),n=I.j(n,by,t),new Q(null,2,5,S,[null,Xf(vA.g(e),new Q(null,3,5,S,[n,t,r],null))],null)}),t,e),null}var oX=Hk(SV),pX=new k(null,6,[Bl,"'",Al,"#'",lB,"@",cD,"~",sv,"@",lv,"~"],null);function qX(e){var t=A(e);return n(n(t=pX.g?pX.g(t):pX.call(null,t))?x.h(2,C(e)):t)?(Qc(db,t),KV(oe(e)),!0):null}function rX(e){if(n(OV()))Qc(db,"#");else{var t=HV,r=IV;HV+=1,IV=0;try{yV("[","]");for(var i=0,o=z(e);;){if(yb(ib)||i");(function(){function t(e){var t=null;if(0");return function(){function t(e){var t=null;if(0");return function(){function t(e){var t=null;if(0":"~<(~;~@{~w~^ ~:_~}~;)~:>",n="string"==typeof t?oX(t):t;return e=n,function(){function t(e){var t=null;if(0");return function(){function t(e){var t=null;if(0");return function(){function t(e){var t=null;if(0"),function(){function e(e){var t=null;if(0"),QV(vv,-(t.length-2)),PV(qw);var s=null!=e?!!(1&e.M||cb===e.vi)||!e.M&&Cb(Uc,e):Cb(Uc,e);KV((s?!Vc(e):s)?rx:r(e)),zV()}finally{IV=o,HV=i}}return null})),Uk(QX,null,OU),Uk(QX,Zk,tX),BV=yX;var gY=function(){var e=Fg(P),t=Fg(P),n=Fg(P),r=Fg(P),i=u.j(P,fu,Kk.A?Kk.A():Kk.call(null));return new Yk(Bd.h("gateway.local-node.core","process-response"),(function(e){e=bg(e);var t=u.h(e,tB);return u.h(e,Ro),X.g(t)}),i,e,t,n,r)}();function hY(e){this.ch=e}function iY(e,t,n){var r=bg(n),i=u.h(r,$s),o=u.h(r,Ro),l=u.h(r,ut);u.h(r,tB),dh.h(e,new Q(null,2,5,S,[pq,jw],null));try{return x.h(o,new k(null,1,[Bo,1],null))?yS(pD,"gateway.local-node.core",65,lE,new qk((function(){return new Q(null,1,5,S,[function(){var t=new Za,n=fb,r=eb;fb=!0,eb=function(e){return t.append(e)};try{MV(e)}finally{eb=r,fb=n}return p.g(t)}()],null)})),2068656781):x.h(l,jD)?null:GS(t,e,n,i,o)}catch(t){if(t instanceof Error){var s=t;return yS(Cx,"gateway.local-node.core",70,lE,new qk((function(){return new Q(null,3,5,S,[s,"Error handling message",n],null)})),2120187070),new Q(null,2,5,S,[e,new Q(null,1,5,S,[wI.O(null,i,UC.g(o),pG.g(o),iI(s,"global.errors.failure"))],null)],null)}throw t}}function jY(e,t){var r=pG.g(t);return n(r)?n(e=FQ.h(e,r))?Uz.g(e):null:n(e=Uz.g(t))?I.j(e,xr,xr.g(t)):null}function kY(e,t,i){var o=new Lg(null);try{if(yS(Cy,"gateway.local-node.core",89,lE,new qk((function(){return new Q(null,2,5,S,["domain handler processing message",i],null)})),-105116117),n(!1)){var l=Ro.g(i),s=X.g(l);switch(Mg(o,jY(e,l)),s instanceof w?s.W:null){case"gateway.common.commands/source-removed":break;case"hello":n(!1)&&yS(pD,"gateway.local-node.core",null,lE,new qk((function(){return new Q(null,2,5,S,[gy,new k(null,2,[Uz,r(o),gy,TH(l,new Q(null,2,5,S,[du,"secret"],null))],null)],null)})),-382234349);break;default:n(!1)&&yS(pD,"gateway.local-node.core",null,lE,new qk((function(){return new Q(null,2,5,S,[gy,new k(null,2,[Uz,r(o),gy,l],null)],null)})),608982741)}}var a=iY(e,t,i),u=G(a,0,null),c=G(a,1,null),h=n(u)?u:e,d=z(c);t=null;for(var f=s=0;;)if(f"):n(AY(e,r))?I.j(t,r,i):I.j(t,r,"")}),P,t):t}function CY(e,t){var r=Nb.j((function(e,r){var i=xY(Yo.g(r),t);return i=n(i)?Vu.h(r,!0):i,n(i)?Td(r):e}),null,ew.g(e));if(null!=r)return r;switch((e=Su.g(e))instanceof w?e.W:null){case"whitelist":default:return new k(null,1,[kr,new k(null,1,[NF,F],null)],null);case"blacklist":return null}}var DY=new k(null,1,[cG,null],null);function EY(){var e=null!=cG.g(DY);return e?dh.h(DY,new Q(null,2,5,S,[FC,xv],null)):e}function FY(e,t){return BY(kr.g(e),t)}function GY(e,t,r){n(e=cG.g(e))&&(e.j?e.j("interop",t,r):e.call(null,"interop",t,r))}function HY(e){if(null!=cG.g(DY)){var t=r(e);t=bg(t),t=u.h(t,fw);var i=Yo.g(t);t=dh.h(DY,new Q(null,2,5,S,[FC,iE],null));var o=Zm.g(t);if(n(o)){if(n(o.g?o.g(i):o.call(null,i))){var l=Rn.g(t);GY(DY,"invoke",I.j(gh(r(e),Jx,(function(e){return n(l)?l.h?l.h(i,e):l.call(null,i,e):e})),fw,i))}}else{var s=CY(eC.g(t),i);n(s)&&GY(DY,"invoke",I.j(gh(r(e),Jx,(function(e){return FY(s,e)})),fw,i))}}}function IY(e){if(null!=cG.g(DY)){var t=r(e);t=bg(t),t=u.h(t,fw),t=Yo.g(t);var i=dh.h(DY,new Q(null,2,5,S,[FC,iE],null)),o=Zm.g(i);n(o)?n(o.g?o.g(t):o.call(null,t))&&GY(DY,"yield",I.j(r(e),fw,t)):n(CY(eC.g(i),t))&&GY(DY,"yield",I.j(r(e),fw,t))}}function JY(e){if(null!=cG.g(DY)){var t=r(e);t=bg(t),t=u.h(t,fw);var i=Yo.g(t);t=dh.h(DY,new Q(null,2,5,S,[FC,iE],null));var o=Zm.g(t);if(n(o)){if(n(o.g?o.g(i):o.call(null,i))){var l=Rn.g(t);GY(DY,"subscribe",I.j(gh(r(e),Jx,(function(e){return n(l)?l.h?l.h(i,e):l.call(null,i,e):e})),fw,i))}}else{var s=CY(eC.g(t),i);n(s)&&GY(DY,"subscribe",I.j(gh(r(e),Jx,(function(e){return FY(s,e)})),fw,i))}}}function KY(e){if(null!=cG.g(DY)){var t=r(e);t=bg(t),t=u.h(t,fw),t=Yo.g(t);var i=dh.h(DY,new Q(null,2,5,S,[FC,iE],null)),o=Zm.g(i);n(o)?n(o.g?o.g(t):o.call(null,t))&&GY(DY,"unsubscribe",I.j(r(e),fw,t)):n(CY(eC.g(i),t))&&GY(DY,"unsubscribe",I.j(r(e),fw,t))}}function LY(e){if(null!=cG.g(DY)){var t=r(e);t=bg(t),t=u.h(t,fw);var i=Yo.g(t);t=dh.h(DY,new Q(null,2,5,S,[FC,iE],null));var o=Zm.g(t);if(n(o)){if(n(o.g?o.g(i):o.call(null,i))){var l=Rn.g(t);GY(DY,"event",I.j(gh(r(e),Fw,(function(e){return n(l)?l.h?l.h(i,e):l.call(null,i,e):e})),fw,i))}}else{var s=CY(eC.g(t),i);n(s)&&GY(DY,"event",I.j(gh(r(e),Fw,(function(e){return FY(s,e)})),fw,i))}}}function MY(e,t){return new k(null,3,[X,qy,em,t,zt,e],null)}function NY(e,t,n,r){return fh.F(e,new Q(null,4,5,S,[CF,Iz,t,n],null),Dg(re,wj),r)}function OY(e,t,n,r){return null==t?e:WH(e,new Q(null,4,5,S,[CF,Iz,t,n],null),r)}function PY(e,t,n,r,i){var o=bg(n);n=u.h(o,QB);var l=u.h(o,kC);return o=u.h(o,Vo),e=PQ(e,n,l=OY(TH(FQ.h(e,n),new Q(null,3,5,S,[CF,wo,t],null)),l,r,t)),IQ(l)?new Q(null,2,5,S,[e,tY($s.g(l),t,n,o,r,i)],null):new Q(null,2,5,S,[e,null],null)}function QY(e,t,r){var i=dh.h(t,new Q(null,2,5,S,[CF,Ey],null)),o=kt.g(t);return t=Nb.j((function(e,t){var i=G(t,0,null),l=G(t,1,null);return t=G(e,0,null),e=G(e,1,null),i=G(l=PY(t,i,l,o,r),0,null),l=G(l,1,null),new Q(null,2,5,S,[n(i)?i:t,Qe(l)||Le(l)?Nb.j(Dg(re,F),e,l):null!=l?Dg(re,F)(e,l):e],null)}),new Q(null,2,5,S,[e,F],null),i),e=G(t,0,null),t=G(t,1,null),new Q(null,2,5,S,[e,t],null)}function RY(e,t,r){if(n(EY())){var i=kt.g(t);r=z(r);for(var o=null,l=0,s=0;;)if(sOB.g(t)||x.h(OB.g(e),OB.g(t))&&uA.g(e)>=uA.g(t)}function l0(e,t,r){var i=JF.g(e);return function(){var o=x.h(kt.g(t),Zv.g(e));return o||(x.h(i,cz)?M(QD.g(e),kt.g(t)):(o=x.h(kt.g(t),Zv.g(e)))||(o=x.h(kt.g(t),Ru.g(e)))?o:yb(r)||n(o=sD.g(e))?hP(sD.g(e),Uz.g(e),Uz.g(t)):o)}()}function m0(e,t,r){x.h(JF.g(t),cz)&&jI(g0(e),"Activity contexts cannot be explicitly destroyed");var i=x.h(JF.g(t),SB),o=i&&x.h(Ru.g(t),kt.g(r));n(t=o||((i=!i)?l0(t,r,!1):i))||jI(g0(e),"Not authorized to destroy context")}function n0(e,t){var r=x.h(kt.g(t),Zv.g(e));return r||(r=x.h(kt.g(t),Ru.g(e)))||n(r=hP(PA.g(e),Uz.g(e),Uz.g(t)))?r:l0(e,t,!0)}function o0(e,t){var n=IQ(e);return n&&(n=cg.h(JF.g(t),cz))?n0(t,e):n}function p0(e,t,r){n(n0(t,r))||jI(g0(e),"Not authorized to read context")}function q0(e){return n(dh.h(e,new Q(null,2,5,S,[Vt,Sp],null)))?"global":"context"}function r0(e,t,n,r,i){var o=kt.g(t);return e=A_(e,t,r,i),new Q(null,2,5,S,[e,bh.h((function(e){var t=q0(e),i=$s.g(e);return e=kt.g(e),tI(i,new k(null,6,[wu,t,X,Bq,pG,e,ko,n,Rt,o,fG,r],null))}),Xg.h(IQ,Ng.h(Ag(FQ,e),Yg.h(Ag(x,n),QD.g(t)))))],null)}function s0(e,t){var r=bg(t);u.h(r,UC);var i,o=u.h(r,pG),l=u.h(r,Yo);r=u.h(r,fG);try{var s=GQ(e,o),a=u_(e,l,s);return n(a)?n(n(i=l0(a,s,!1))?k0(t,a):i)?r0(e,a,o,aI(r),bD.g(t)):new Q(null,2,5,S,[e,null],null):(yS(tz,"gateway.common.context.ops",156,lE,new qk((function(){return new Q(null,2,5,S,["unable to find remote context",l],null)})),-2046241708),new Q(null,2,5,S,[e,null],null))}catch(i){var c=i;return yS(Cx,"gateway.common.context.ops",160,lE,new qk((function(){return new Q(null,2,5,S,[c,"error performing remote context update"],null)})),-123359054),new Q(null,2,5,S,[e,null],null)}}function t0(e,t,r,i){if(yI(r)){var o=bg(i),l=u.h(o,UC),s=u.h(o,pG),a=u.h(o,Rt);o=u.h(o,fG);try{var c=GQ(t,s),h=v_(t,a),d=bD.h(h,new k(null,1,[OB,0],null)),f=I.j(gh(d,OB,Rd),uA,(new Date).getTime());n(l0(h,c,!1))||jI(g0(e),"Not authorized to update context");var p=r0(t,h,s,aI(o),f),g=G(p,0,null),w=G(p,1,null),m=new Q(null,2,5,S,[g,new Q(null,2,5,S,[xI.F(e,r,l,s),uI(MY(cI(pq.g(t)),s),I.l(i,X,MF,D([bD,f,Yo,Yo.g(h)])))],null)],null),v=G(m,0,null),y=G(m,1,null),b=new Q(null,2,5,S,[n(v)?v:g,Qe(y)||Le(y)?Nb.j(Dg(re,F),w,y):null!=y?Dg(re,F)(w,y):w],null)}catch(n){b=new Q(null,2,5,S,[t,new Q(null,1,5,S,[wI.O(e,r,l,s,iI(n,j0(e)))],null)],null)}}else b=s0(t,i);return b}function u0(e){if(e instanceof w)return e;switch(e){case"ownership":return SB;case"ref-counted":return Pp;case"retained":return mC;default:return null}}function v0(e,t,n,r){r=bg(r);var i=u.h(r,Yo),o=u.h(r,Fw),l=u.h(r,JF),s=u.h(r,PA),a=u.h(r,sD),c=u.h(r,pG),h=eI(pq.g(e));return r=G(h,0,null),h=G(h,1,null),t=I.l(B_(t,i,o,l,s,a,h),QD,xj([c]),D([mG,n])),t=x.h(l,SB)?I.j(t,Ru,c):t,n=S,e=I.j(e,pq,r),e=eh(e,new Q(null,2,5,S,[YC,kt.g(t)],null),t),new Q(null,2,5,n,[e,t],null)}function w0(e,t,n,r,i,o){return yS(pD,"GATEWAY_ACTION_LOG|context|gateway.common.context.ops",240,lE,new qk((function(){return new Q(null,6,5,S,["peer",o,"subscribes for context",Yo.g(i),"using request",r],null)})),1435752541),t=w_(t,i,o),new Q(null,2,5,S,[t,new Q(null,1,5,S,[e0(e,n,r,o,kt.g(i),Fw.g(i))],null)],null)}function x0(e,t,r){r=bg(r),u.h(r,UC);var i=u.h(r,pG),o=u.h(r,Yo);try{var l=GQ(t,i),s=u_(t,o,l);return n(s)?(p0(e,s,l),new Q(null,2,5,S,[w_(t,s,i),null],null)):(yS(tz,"gateway.common.context.ops",257,lE,new qk((function(){return new Q(null,2,5,S,["unable to find remote context",o],null)})),-1378912437),new Q(null,2,5,S,[t,null],null))}catch(e){return new Q(null,2,5,S,[t,null],null)}}function y0(e,t,r,i){if(yI(r)){var o=bg(i),l=u.h(o,UC),s=u.h(o,pG);o=u.h(o,Rt);try{var a=GQ(t,s),c=v_(t,o),h=Ag(w0,e);p0(e,c,a);var d=new Q(null,2,5,S,[t,null],null),f=G(d,0,null),p=G(d,1,null),g=h(f,r,l,c,s),w=G(g,0,null),m=G(g,1,null),v=new Q(null,2,5,S,[n(w)?w:f,Qe(m)||Le(m)?Nb.j(Dg(re,F),p,m):null!=m?Dg(re,F)(p,m):p],null),y=G(v,0,null),b=G(v,1,null),$=new Q(null,2,5,S,[null,uI(MY(cI(pq.g(t)),s),I.l(i,X,lu,D([Yo,Yo.g(c)])))],null),C=G($,0,null),x=G($,1,null),E=new Q(null,2,5,S,[n(C)?C:y,Qe(x)||Le(x)?Nb.j(Dg(re,F),b,x):null!=x?Dg(re,F)(b,x):b],null)}catch(n){E=new Q(null,2,5,S,[t,new Q(null,1,5,S,[wI.O(e,r,l,s,iI(n,j0(e)))],null)],null)}}else E=x0(e,t,i);return E}function z0(e,t,n){var r=Yo.g(t),i=kt.g(t),o=kt.g(n);return ah.j(F,zg.j(Xg.g(IQ),Xg.g(Ag(n0,t)),Ng.g((function(e){var t=q0(e),n=$s.g(e);return e=kt.g(e),tI(n,new k(null,6,[wu,t,X,fr,pG,e,UB,o,Rt,i,Yo,r],null))}))),TQ(e,Yp,n,!0))}function A0(e,t,n){var r=kt.g(e);return ah.j(F,zg.j(Xg.g(IQ),Xg.g(Ag(n0,e)),Ng.g((function(e){return f0(q0(e),$s.g(e),kt.g(e),r,n)}))),t)}function B0(e,t){var r=gP(PA.g(t)),i=gP(sD.g(t)),o=u0(JF.g(t));return n(o)||jI([p.g(e),".errors.bad_lifetime"].join(""),["Bad lifetime value ",p.g(o)].join("")),pj.l(D([t,new k(null,3,[PA,r,sD,i,JF,o],null)]))}function C0(e,t,r,i){var o=bg(i),l=u.h(o,UC),s=u.h(o,pG),a=u.h(o,Yo);try{var c=GQ(t,s),h=u_(t,a,c);if(n(h))return p0(e,h,c),w0(e,t,r,l,h,s);var d=v0(t,c,!0,B0(e,i)),f=G(d,0,null),p=G(d,1,null);return yS(pD,"GATEWAY_ACTION_LOG|context|gateway.common.context.ops",380,lE,new qk((function(){return new Q(null,6,5,S,["peer",s,"creates context",a,"using request",l],null)})),319259055),new Q(null,2,5,S,[f,re.l(z0(f,p,c),d0(e,r,l,s,kt.g(p)),D([uI(MY(cI(pq.g(t)),s),I.l(i,X,Qu,D([bD,bD.g(p)])))]))],null)}catch(n){var g=n;return yS(Cx,"gateway.common.context.ops",389,lE,new qk((function(){return new Q(null,2,5,S,[g,"error"],null)})),1914118705),new Q(null,2,5,S,[t,new Q(null,1,5,S,[wI.O(e,r,l,s,iI(g,j0(e)))],null)],null)}}function D0(e,t,r,i){if(yI(r))var o=C0(e,t,r,i);else{var l=bg(i);u.h(l,UC),r=u.h(l,pG),l=u.h(l,Yo);try{var s=GQ(t,r),a=u_(t,l,s);if(n(a))p0(e,a,s),o=k0(i,a)?r0(t,a,r,new k(null,1,[AD,Fw.g(i)],null),bD.g(i)):new Q(null,2,5,S,[t,null],null);else{var c=v0(t,s,!1,B0(e,i)),h=G(c,0,null),d=G(c,1,null);o=new Q(null,2,5,S,[h,z0(h,d,s)],null)}}catch(e){o=new Q(null,2,5,S,[t,null],null)}}return o}function E0(e,t,n,r){yS(pD,"GATEWAY_ACTION_LOG|context|gateway.common.context.ops",419,lE,new qk((function(){return new Q(null,5,5,S,["context",Yo.g(n),"is destroyed","with reason",r],null)})),-1663283401);var i=kt.g(n),o=QD.g(n);return new Q(null,2,5,S,[TH(t,new Q(null,2,5,S,[YC,i],null)),Nb.j(re,bh.h((function(t){return f0(e,$s.g(t),kt.g(t),i,r)}),Xg.h(IQ,Ng.h(Ag(FQ,t),o))),A0(n,wk(D([Yg.h((function(e){return u.h(o,kt.g(e))}),JQ(t,Yp))])),r))],null)}function F0(e,t,r){r=bg(r);var i=u.h(r,pG),o=u.h(r,Yo);try{var l=GQ(t,i),s=u_(t,o,l);return n(s)?(m0(e,s,l),E0(e,t,s,h0(e))):(yS(tz,"gateway.common.context.ops",446,lE,new qk((function(){return new Q(null,2,5,S,["unable to find remote context",o],null)})),1357307602),new Q(null,2,5,S,[t,null],null))}catch(e){return new Q(null,2,5,S,[t,null],null)}}function G0(e,t,r,i){if(yI(r)){var o=bg(i),l=u.h(o,UC),s=u.h(o,pG);o=u.h(o,Rt);try{var a=GQ(t,s),c=v_(t,o);m0(e,c,a);var h=E0(e,t,c,h0(e)),d=G(h,0,null),f=G(h,1,null),p=new Q(null,2,5,S,[null,new Q(null,2,5,S,[xI.F(e,r,l,s),uI(MY(cI(pq.g(t)),s),I.l(i,X,Ho,D([Yo,Yo.g(c)])))],null)],null),g=G(p,0,null),w=G(p,1,null),m=new Q(null,2,5,S,[n(g)?g:d,Qe(w)||Le(w)?Nb.j(Dg(re,F),f,w):null!=w?Dg(re,F)(f,w):f],null)}catch(n){m=new Q(null,2,5,S,[t,new Q(null,1,5,S,[wI.O(e,r,l,s,iI(n,j0(e)))],null)],null)}}else m=F0(e,t,i);return m}y_.C(null,pt,(function(e,t){var r=bg(t);return t=u.h(r,oy),r=u.h(r,NC),e=n(e)?e:P,r=Fa(null==r?"":String(r))?null:TI(r,/\./,0),z_(e,r,t)})),y_.C(null,mA,(function(e,t){return t=bg(t),null==(t=Fa(null==(t=u.h(t,NC))?"":String(t))?null:TI(t,/\./,0))?P:TH.l(e,t,D([new k(null,1,[vq,!0],null)]))})),x_.C(null,Pu,(function(e,t){return G(t,0,null),t=G(t,1,null),Nb.j((function(e,t){return y_.h(e,aI(t))}),e,t)})),x_.C(null,Zk,(function(e,t){var n=G(t,0,null),r=G(t,1,null);return yS(tz,"gateway.common.context.state",154,lE,new qk((function(){return new Q(null,4,5,S,["ignoring unknown context delta command",n,"with payload",r],null)})),372664218),e})),h=C_.prototype,h.na=function(e,t){return this.P(null,t,null)},h.P=function(e,t,n){switch(t instanceof w?t.W:null){case"id":return this.id;case"type":return this.type;case"context-id":return this.Yb;case"initiator":return this.dc;default:return u.j(this.m,t,n)}},h.Ka=function(e,t,n){return Nb.j((function(e,n){var r=G(n,0,null);return n=G(n,1,null),t.j?t.j(e,r,n):t.call(null,e,r,n)}),n,this)},h.U=function(e,t,n){return Tj(t,(function(e){return Tj(t,bk,""," ","",n,e)}),"#gateway.domains.activity.activity.Activity{",", ","}",n,Of.h(new Q(null,4,5,S,[new Q(null,2,5,S,[kt,this.id],null),new Q(null,2,5,S,[X,this.type],null),new Q(null,2,5,S,[Ty,this.Yb],null),new Q(null,2,5,S,[bp,this.dc],null)],null),this.m))},h.xa=function(){return new Yh(this,4,new Q(null,4,5,S,[kt,X,Ty,bp],null),n(this.m)?nd(this.m):eg())},h.R=function(){return this.D},h.da=function(){return 4+C(this.m)},h.ba=function(){var e=this.G;return null!=e?e:this.G=e=246370226^Pd(this)},h.aa=function(e,t){return null!=t&&this.constructor===t.constructor&&x.h(this.id,t.id)&&x.h(this.type,t.type)&&x.h(this.Yb,t.Yb)&&x.h(this.dc,t.dc)&&x.h(this.m,t.m)},h.bb=function(e,t){return M(new uj(null,new k(null,4,[bp,null,X,null,kt,null,Ty,null],null),null),t)?we.h(Bc(ah.h(P,this),this.D),t):new C_(this.id,this.type,this.Yb,this.dc,this.D,dg(we.h(this.m,t)),null)},h.za=function(e,t){switch(t instanceof w?t.W:null){case"id":case"type":case"context-id":case"initiator":return!0;default:return M(this.m,t)}},h.ja=function(e,t,r){return n(O.h?O.h(kt,t):O.call(null,kt,t))?new C_(r,this.type,this.Yb,this.dc,this.D,this.m,null):n(O.h?O.h(X,t):O.call(null,X,t))?new C_(this.id,r,this.Yb,this.dc,this.D,this.m,null):n(O.h?O.h(Ty,t):O.call(null,Ty,t))?new C_(this.id,this.type,r,this.dc,this.D,this.m,null):n(O.h?O.h(bp,t):O.call(null,bp,t))?new C_(this.id,this.type,this.Yb,r,this.D,this.m,null):new C_(this.id,this.type,this.Yb,this.dc,this.D,I.j(this.m,t,r),null)},h.ca=function(){return z(Of.h(new Q(null,4,5,S,[new xh(kt,this.id),new xh(X,this.type),new xh(Ty,this.Yb),new xh(bp,this.dc)],null),this.m))},h.S=function(e,t){return new C_(this.id,this.type,this.Yb,this.dc,t,this.m,this.G)},h.ia=function(e,t){return Le(t)?this.ja(null,Zb(t,0),Zb(t,1)):Nb.j(Xb,this,t)},Z(HE,SC,Ab),Z(Hx,N(Xy,Ix,N(eD,T,new Q(null,1,5,S,[sw],null),dD,new Q(null,1,5,S,[HE],null))),ZP(new Q(null,2,5,S,[Ix,N(eD,T,new Q(null,1,5,S,[sw],null),dD,new Q(null,1,5,S,[HE],null))],null),new Q(null,2,5,S,[Ix,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[sw],null),new Q(null,1,5,S,[HE],null),null,new Q(null,2,5,S,[function(e){return J(e)},function(e){return M(e,Uz)}],null),function(e){return J(e)&&M(e,Uz)},new Q(null,1,5,S,[Gp],null),new Q(null,1,5,S,[sw],null),null,new Q(null,1,5,S,[Uz],null),new Q(null,1,5,S,[HE],null),new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Uz))],null),null]))],null),null)),Z(vG,zC,zC),Z(sx,N(xy,SC),aQ(oC,Ab,new k(null,4,[Rv,!0,Fo,null,tD,N(xy,SC),Jz,function(e){return Fe(e)}],null),null)),Z(yC,Wu,J),Z(co,Wu,J),Z(xG,Wu,J),Z(KF,new uj(null,new k(null,2,[mA,"null",pt,"null"],null),null),new uj(null,new k(null,2,[mA,null,pt,null],null),null)),Z(cm,SC,Ab),Z(vz,Hs,Bb),Z(Kw,N(eD,T,new Q(null,2,5,S,[KF,cm],null),dD,new Q(null,1,5,S,[vz],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[KF,cm],null),new Q(null,1,5,S,[vz],null),null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,X)},function(e){return M(e,NC)}],null),function(e){return J(e)&&M(e,X)&&M(e,NC)},new Q(null,1,5,S,[oy],null),new Q(null,2,5,S,[KF,cm],null),null,new Q(null,2,5,S,[X,NC],null),new Q(null,1,5,S,[vz],null),new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],null),N(U,W,NC))],null),null]))),Z($o,N(xy,Kw,Jr,iB,aF,F),aQ(Kw,Kw,new k(null,6,[Rv,!0,Jr,Le,aF,F,Fo,iB,tD,N(xy,Kw,Jr,iB,aF,F),Jz,function(e){return Le(e)}],null),null)),Z(OD,N(eD,dD,new Q(null,5,5,S,[sx,yC,co,xG,$o],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[null,new Q(null,5,5,S,[sx,yC,co,xG,$o],null),null,new Q(null,1,5,S,[function(e){return J(e)}],null),function(e){return J(e)},new Q(null,5,5,S,[Ws,Cw,HB,AD,Pu],null),F,null,F,new Q(null,5,5,S,[sx,yC,co,xG,$o],null),new Q(null,1,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W))],null),null]))),Z(fs,N(Xy,Ix,N(eD,T,new Q(null,2,5,S,[vG,OD],null))),ZP(new Q(null,2,5,S,[Ix,N(eD,T,new Q(null,2,5,S,[vG,OD],null))],null),new Q(null,2,5,S,[Ix,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[vG,OD],null),null,null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,Rt)},function(e){return M(e,fG)}],null),function(e){return J(e)&&M(e,Rt)&&M(e,fG)},F,new Q(null,2,5,S,[vG,OD],null),null,new Q(null,2,5,S,[Rt,fG],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Rt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,fG))],null),null]))],null),null)),Z(op,N(V,new Q(null,1,5,S,[W],null),N(Vr,Kz,N(Ky,W))),(function(e){return MP(Kz,Bf.g(e))})),Z(ww,N(jz,SC),nQ(SC,Ab,null)),Z(AC,N(jz,SC),nQ(SC,Ab,null)),Z(xD,N(Xy,Ix,N(eD,T,new Q(null,3,5,S,[lw,bq,op],null),dD,new Q(null,3,5,S,[cC,ww,AC],null))),ZP(new Q(null,2,5,S,[Ix,N(eD,T,new Q(null,3,5,S,[lw,bq,op],null),dD,new Q(null,3,5,S,[cC,ww,AC],null))],null),new Q(null,2,5,S,[Ix,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[lw,bq,op],null),new Q(null,3,5,S,[cC,ww,AC],null),null,new Q(null,4,5,S,[function(e){return J(e)},function(e){return M(e,Yo)},function(e){return M(e,Fw)},function(e){return M(e,JF)}],null),function(e){return J(e)&&M(e,Yo)&&M(e,Fw)&&M(e,JF)},new Q(null,3,5,S,[bD,PA,sD],null),new Q(null,3,5,S,[lw,bq,op],null),null,new Q(null,3,5,S,[Yo,Fw,JF],null),new Q(null,3,5,S,[cC,ww,AC],null),new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Yo)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Fw)),N(V,new Q(null,1,5,S,[W],null),N(U,W,JF))],null),null]))],null),null)),Z(vG,zC,zC),Z(jA,N(Xy,Ix,N(eD,T,new Q(null,1,5,S,[vG],null))),ZP(new Q(null,2,5,S,[Ix,N(eD,T,new Q(null,1,5,S,[vG],null))],null),new Q(null,2,5,S,[Ix,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[vG],null),null,null,new Q(null,2,5,S,[function(e){return J(e)},function(e){return M(e,Rt)}],null),function(e){return J(e)&&M(e,Rt)},F,new Q(null,1,5,S,[vG],null),null,new Q(null,1,5,S,[Rt],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Rt))],null),null]))],null),null)),Z(Tu,N(Xy,Ix,N(eD,T,new Q(null,1,5,S,[vG],null))),ZP(new Q(null,2,5,S,[Ix,N(eD,T,new Q(null,1,5,S,[vG],null))],null),new Q(null,2,5,S,[Ix,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[vG],null),null,null,new Q(null,2,5,S,[function(e){return J(e)},function(e){return M(e,Rt)}],null),function(e){return J(e)&&M(e,Rt)},F,new Q(null,1,5,S,[vG],null),null,new Q(null,1,5,S,[Rt],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Rt))],null),null]))],null),null)),Z(dx,N(Xy,Ix,N(eD,T,new Q(null,1,5,S,[vG],null))),ZP(new Q(null,2,5,S,[Ix,N(eD,T,new Q(null,1,5,S,[vG],null))],null),new Q(null,2,5,S,[Ix,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[vG],null),null,null,new Q(null,2,5,S,[function(e){return J(e)},function(e){return M(e,Rt)}],null),function(e){return J(e)&&M(e,Rt)},F,new Q(null,1,5,S,[vG],null),null,new Q(null,1,5,S,[Rt],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Rt))],null),null]))],null),null)),Z($D,SC,Ab),Z(Xr,SC,Ab),Z(EB,jB,jB),uQ.C(null,Bq,(function(){return ZP(new Q(null,2,5,S,[Ko,N(eD,T,new Q(null,3,5,S,[EB,cr,OD],null))],null),new Q(null,2,5,S,[Ko,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[EB,cr,OD],null),null,null,new Q(null,4,5,S,[function(e){return J(e)},function(e){return M(e,ko)},function(e){return M(e,Rt)},function(e){return M(e,fG)}],null),function(e){return J(e)&&M(e,ko)&&M(e,Rt)&&M(e,fG)},F,new Q(null,3,5,S,[EB,cr,OD],null),null,new Q(null,3,5,S,[ko,Rt,fG],null),F,new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,ko)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Rt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,fG))],null),null]))],null),null)})),uQ.C(null,MF,(function(){return ZP(new Q(null,2,5,S,[KG,fs],null),new Q(null,2,5,S,[KG,fs],null),null)})),uQ.C(null,Sn,(function(){return ZP(new Q(null,2,5,S,[Ql,N(eD,T,new Q(null,1,5,S,[cr],null))],null),new Q(null,2,5,S,[Ql,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[cr],null),null,null,new Q(null,2,5,S,[function(e){return J(e)},function(e){return M(e,Rt)}],null),function(e){return J(e)&&M(e,Rt)},F,new Q(null,1,5,S,[cr],null),null,new Q(null,1,5,S,[Rt],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Rt))],null),null]))],null),null)})),Z(Ht,jB,jB),Z(cr,zC,zC),uQ.C(null,fr,(function(){return ZP(new Q(null,2,5,S,[Ko,N(eD,T,new Q(null,3,5,S,[Ht,cr,lw],null))],null),new Q(null,2,5,S,[Ko,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[Ht,cr,lw],null),null,null,new Q(null,4,5,S,[function(e){return J(e)},function(e){return M(e,UB)},function(e){return M(e,Rt)},function(e){return M(e,Yo)}],null),function(e){return J(e)&&M(e,UB)&&M(e,Rt)&&M(e,Yo)},F,new Q(null,3,5,S,[Ht,cr,lw],null),null,new Q(null,3,5,S,[UB,Rt,Yo],null),F,new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,UB)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Rt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Yo))],null),null]))],null),null)})),uQ.C(null,eq,(function(){return ZP(new Q(null,2,5,S,[Ql,N(eD,T,new Q(null,2,5,S,[cr,bq],null))],null),new Q(null,2,5,S,[Ql,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[cr,bq],null),null,null,new Q(null,3,5,S,[function(e){return J(e)},function(e){return M(e,Rt)},function(e){return M(e,Fw)}],null),function(e){return J(e)&&M(e,Rt)&&M(e,Fw)},F,new Q(null,2,5,S,[cr,bq],null),null,new Q(null,2,5,S,[Rt,Fw],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Rt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Fw))],null),null]))],null),null)})),uQ.C(null,Hv,(function(){return ZP(new Q(null,2,5,S,[Ko,N(eD,T,new Q(null,3,5,S,[cr,$D,Xr],null))],null),new Q(null,2,5,S,[Ko,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[cr,$D,Xr],null),null,null,new Q(null,4,5,S,[function(e){return J(e)},function(e){return M(e,Rt)},function(e){return M(e,pE)},function(e){return M(e,In)}],null),function(e){return J(e)&&M(e,Rt)&&M(e,pE)&&M(e,In)},F,new Q(null,3,5,S,[cr,$D,Xr],null),null,new Q(null,3,5,S,[Rt,pE,In],null),F,new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Rt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pE)),N(V,new Q(null,1,5,S,[W],null),N(U,W,In))],null),null]))],null),null)})),uQ.C(null,Qu,(function(){return ZP(new Q(null,2,5,S,[KG,xD],null),new Q(null,2,5,S,[KG,xD],null),null)})),uQ.C(null,Ho,(function(){return ZP(new Q(null,2,5,S,[KG,dx],null),new Q(null,2,5,S,[KG,dx],null),null)})),uQ.C(null,lu,(function(){return ZP(new Q(null,2,5,S,[KG,jA],null),new Q(null,2,5,S,[KG,jA],null),null)})),uQ.C(null,xs,(function(){return ZP(new Q(null,2,5,S,[KG,Tu],null),new Q(null,2,5,S,[KG,Tu],null),null)}));var H0=function e(t){switch(arguments.length){case 3:return e.j(arguments[0],arguments[1],arguments[2]);case 4:return e.F(arguments[0],arguments[1],arguments[2],arguments[3]);default:throw Error(["Invalid arity: ",p.g(arguments.length)].join(""))}};function I0(e,t,r){var i=bg(r);u.h(i,UC);var o=u.h(i,pG),l=u.h(i,Yo);try{var s=GQ(t,o),a=u_(t,l,s);return n(a)?H0.F(e,t,o,a):(yS(tz,"gateway.common.context.ops",517,lE,new qk((function(){return new Q(null,2,5,S,["unable to find remote context",l],null)})),1511749041),new Q(null,2,5,S,[t,null],null))}catch(e){var c=e;return yS(tz,"gateway.common.context.ops",521,lE,new qk((function(){return new Q(null,3,5,S,[c,"unable to process remote unsubscribe",r],null)})),91111828),new Q(null,2,5,S,[t,null],null)}}function J0(e,t,r,i){if(yI(r)){var o=bg(i),l=u.h(o,UC),s=u.h(o,pG);o=u.h(o,Rt);try{GQ(t,s);var a=v_(t,o),c=H0.F(e,t,s,a),h=G(c,0,null),d=G(c,1,null),f=new Q(null,2,5,S,[null,new Q(null,2,5,S,[xI.F(e,r,l,s),uI(MY(cI(pq.g(t)),s),I.l(i,X,xs,D([Yo,Yo.g(a)])))],null)],null),p=G(f,0,null),g=G(f,1,null),w=new Q(null,2,5,S,[n(p)?p:h,Qe(g)||Le(g)?Nb.j(Dg(re,F),d,g):null!=g?Dg(re,F)(d,g):d],null)}catch(n){w=new Q(null,2,5,S,[t,new Q(null,1,5,S,[wI.O(e,r,l,s,iI(n,j0(e)))],null)],null)}}else w=I0(e,t,i);return w}function K0(e,t,n){var r=$s.g(n),i=kt.g(n);return Ng.h((function(t){var n=Ru.g(t),o=kt.g(t);return t=Yo.g(t),tI(r,new k(null,6,[wu,e,X,fr,pG,i,UB,n,Rt,o,Yo,t],null))}),Xg.h(Ag(o0,n),t_(t)))}function L0(e,t){return n(e=FQ.h(e,pG.g(Ro.g(t))))?yb(Sp.g(Vt.g(e))):null}H0.j=function(e,t,r){var i=kt.g(r),o=Ag(H0,e);return Nb.j((function(e,t){var r=G(e,0,null);e=G(e,1,null);var l=o(r,i,t);return t=G(l,0,null),l=G(l,1,null),new Q(null,2,5,S,[n(t)?t:r,Qe(l)||Le(l)?Nb.j(Dg(re,F),e,l):null!=l?Dg(re,F)(e,l):e],null)}),new Q(null,2,5,S,[t,F],null),t_(t))},H0.F=function(e,t,r,i){if(M(QD.g(i),r)){var o=hh(i,QD,De,r);r=x.h(r,Ru.g(o))?we.h(o,Ru):o,t=G(i=new Q(null,2,5,S,[eh(t,new Q(null,2,5,S,[YC,kt.g(i)],null),r),r],null),0,null),i=G(i,1,null);e:switch(r=JF.g(i),r instanceof w?r.W:null){case"ownership":r=null==Ru.g(i);break e;case"ref-counted":r=Ee(QD.g(i));break e;default:r=!1}return n(r)?E0(e,t,i,i0(e)):new Q(null,2,5,S,[t,null],null)}return new Q(null,2,5,S,[t,null],null)},H0.I=4;var M0=Ag(t0,"activity");function N0(e){return 0<(e=1e3*dh.j(e,new Q(null,2,5,S,[du,nA],null),0))?e:wU}function O0(e,t){var r=rI(e,UC.g(t));e=G(r,0,null);var i=G(r,1,null);if(!n(i))return null;switch((r=X.g(i))instanceof w?r.W:null){case"activity":return n(t=cz.g(i))?Y_(e,t):null;case"create-peer":return q_(e,kI(t),Pw.g(i));default:return yS(Cx,"gateway.domains.activity.core",37,lE,new qk((function(){return new Q(null,2,5,S,["Unable to handle error for an unknown incoming request type",X.g(i)],null)})),754475914)}}var P0=Bg(VQ,"activity",zr);function Q0(e,t,r,i){var o=new Q(null,2,5,S,[e,null],null),l=function(){var e=G(o,0,null),i=G(o,1,null),l=dh.h(t,new Q(null,2,5,S,[zr,Oo],null)),s=VZ(e,l);if(n(s)){l=Ru.g(s);var a=kt.g(t),c=M(iF.g(s),a);s=c?hh(s,iF,Dg(De,wj),a):s,x.h(l,a)?a=a0(e,s,t,r,!c):(a=bg(l=$_(e,s,t,r)),l=u.h(a,su),a=u.h(a,Pv),a=new Q(null,2,5,S,[l,a],null))}else a=null;return l=G(a,0,null),a=G(a,1,null),new Q(null,2,5,S,[n(l)?l:e,Qe(a)||Le(a)?Nb.j(Dg(re,F),i,a):null!=a?Dg(re,F)(i,a):i],null)}(),s=function(){var e=G(l,0,null),r=G(l,1,null),i=ei(dh.h(t,new Q(null,2,5,S,[zr,hx],null))),o=n(i)?new Q(null,2,5,S,[UZ(e,Ng.h(pA,i),kt.g(t)),k_(e,t,Ng.h(kt,i),!1)],null):null;return i=G(o,0,null),o=G(o,1,null),new Q(null,2,5,S,[n(i)?i:e,Qe(o)||Le(o)?Nb.j(Dg(re,F),r,o):null!=o?Dg(re,F)(r,o):r],null)}();e=G(s,0,null),s=G(s,1,null);var a=P0(e,t,r,i);return i=G(a,0,null),a=G(a,1,null),new Q(null,2,5,S,[n(i)?i:e,Qe(a)||Le(a)?Nb.j(Dg(re,F),s,a):null!=a?Dg(re,F)(s,a):s],null)}function R0(e,t){return t=MQ(e,t,zr),e=ef(Ng.g(kt),cf((function(e,t){return oI(e,t,zr)}),bf),e,t),Nb.j((function(e,t){var r=G(e,0,null);e=G(e,1,null);var i=Q0(r,t,IZ,!0);return t=G(i,0,null),i=G(i,1,null),new Q(null,2,5,S,[n(t)?t:r,Qe(i)||Le(i)?Nb.j(Dg(re,F),e,i):null!=i?Dg(re,F)(e,i):e],null)}),new Q(null,2,5,S,[e,null],null),t)}var S0=function(){var e=Fg(P),t=Fg(P),n=Fg(P),r=Fg(P),i=u.j(P,fu,Kk.A?Kk.A():Kk.call(null));return new Yk(Bd.h("gateway.domains.activity.core","handle-request"),(function(e,t,n){return X.g(n)}),i,e,t,n,r)}();function T0(e){return gh(gh(e,ey,aI),mE,Ag(bh,aI))}function U0(e){return bh.h((function(e){return T0(rj(aI(e),new Q(null,4,5,S,[Yo,ey,mE,Ev],null)))}),e)}function V0(){this.gh=null}function W0(e,t,r){return n(r=GE.g(r))?C(dh.h(e,new Q(null,2,5,S,[xB,n(t)?t:qv],null)))>=r:null}function X0(e,t){return af((function(e,n,r){return I.j(e,n,x.h("?",r)?t:r)}),P,e)}function Y0(e,t,r){function i(e,n){return wI.O("global",t,l,s,hI(e,n))}var o=bg(r),l=u.h(o,UC),s=u.h(o,pG);o=u.h(o,xz);var a=Uz.g(FQ.h(e,s));if(n(a)){var c=sI(e,o);return n(c)?DQ(c,e,new k(null,3,[ut,gz,$s,t,Ro,I.j(I.j(r,Uz,a),X,OG)],null)):new Q(null,2,5,S,[e,new Q(null,1,5,S,[i("global.errors.invalid_domain",["Unable to join missing domain ",p.g(o)].join(""))],null)],null)}return new Q(null,2,5,S,[e,new Q(null,1,5,S,[i("global.errors.invalid_peer",["Unable to find peer with id ",p.g(s)].join(""))],null)],null)}function Z0(e,t,n){return Y0(e,t,n)}function $0(e,t,r,i,o){var l=bg(r),s=u.h(l,UC),a=u.h(l,qz),c=u.h(l,fz),h=u.h(l,xr),d=u.h(l,Jp),f=u.h(l,Vt);l=mD.g(i);var g=G(e=rI(e,kt.g(c)),0,null);G(e,1,null);var w,m,v,y=function(){var e=pj.l(D([new k(null,1,[Ay,KT(yv.g(t),hE.g(o))],null),HT(a),rj(r,new Q(null,2,5,S,[xr,iz],null))]));if(n(iD.g(r))){var i=iD.g(r);e=n(i=xr.g(i))?I.j(e,xr,i):e}return e}(),b=n(Wv.g(y))?new Q(null,2,5,S,[y,g],null):(w=pq.g(g),m=Zu.h(w,1),v=["i-",p.g(jw.g(w)),"-",p.g(m)].join(""),w=G(m=new Q(null,2,5,S,[I.j(w,Zu,m+1),v],null),0,null),m=G(m,1,null),new Q(null,2,5,S,[I.j(y,Wv,m),I.j(g,pq,w)],null));e=G(b,0,null),b=G(b,1,null),f=I.j(f,Sp,!0);try{n(dh.h(b,new Q(null,2,5,S,[Du,e],null)))&&jI("global.errors.already_seen","Hello already received once"),JT(e),n(W0(b,h,l))&&jI("global.errors.limits_exceeded","Maximum number of peers per user have been reached");var $=fI(pq.g(b)),x=G($,0,null),E=G($,1,null),A=X0(e,E),_=NQ(I.j(b,pq,x),t,E,A,c,f),j=G(_,0,null),N=G(_,1,null),R=yZ(t,s,kt.g(N),Ng.h(pD,ei(PE.g(j))),A,pj.l(D([function(){var e=pD.g(i);return n(e)?new k(null,1,[pD,e],null):null}(),n(d)?new k(null,1,[Jp,d],null):null])));n(null)&&zS(jm,"global/peer-count",C(wG.g(j)));var T=new Q(null,2,5,S,[j,new Q(null,1,5,S,[R],null)],null),P=G(T,0,null),O=G(T,1,null),B=Z0(P,t,new k(null,6,[UC,s,pG,kt.g(N),Uz,A,Vt,f,xz,"context",wu,"global"],null)),M=G(B,0,null),U=G(B,1,null);return new Q(null,2,5,S,[n(M)?M:P,Qe(U)||Le(U)?Nb.j(Dg(re,F),O,U):null!=U?Dg(re,F)(O,U):O],null)}catch(w){return c=w,yI(t)?new Q(null,2,5,S,[b,new Q(null,1,5,S,[wI.O("global",t,s,null,iI(c,"global.errors.failure"))],null)],null):null}}function a1(e,t,r){yS(it,"gateway.domains.global.core",230,lE,new qk((function(){return new Q(null,1,5,S,["removing source from global domain"],null)})),-1006906324);var i=dh.h(e,new Q(null,2,5,S,[pq,jw],null));e=Nb.j((function(e,o){var l=G(e,0,null);e=G(e,1,null);var s=new Q(null,2,5,S,[OQ(l,o),null],null),a=G(s,0,null);return s=G(s,1,null),l=G(e=new Q(null,2,5,S,[n(a)?a:l,Qe(s)||Le(s)?Nb.j(Dg(re,F),e,s):null!=s?Dg(re,F)(e,s):e],null),0,null),e=G(e,1,null),o=G(a=new Q(null,2,5,S,[null,yI(t)?uI(new k(null,3,[X,qy,em,kt.g(o),zt,i],null),r):null],null),0,null),a=G(a,1,null),new Q(null,2,5,S,[n(o)?o:l,Qe(a)||Le(a)?Nb.j(Dg(re,F),e,a):null!=a?Dg(re,F)(e,a):e],null)}),new Q(null,2,5,S,[e,null],null),LQ(e,t));var o=G(e,0,null);return G(e,1,null),yS(it,"gateway.domains.global.core",243,lE,new qk((function(){return new Q(null,1,5,S,["removed source from global domain"],null)})),-2080102303),n(null)&&zS(jm,"global/peer-count",C(wG.g(o))),e}function b1(e,t,r,i,o){r=bg(r);var l=u.h(r,UC),s=u.h(r,Uz);r=fL(r=u.h(r,du));var a=Bf.g(Hn.h(r,Zk.g(i)));return n(i=dh.h(i,new Q(null,2,5,S,[nw,a],null)))?(qT(sT(qT(wT(i,new k(null,4,[UC,l,qz,s,du,r,ho,ho.g(e)],null)),(function(e){return gh(e,X,(function(e){switch(e instanceof w?e.W:null){case"success":return an;case"continue":return tE;default:return e}}))})),(function(e){return I.j(el(e),X,Ft)})),(function(e){return PH(o,new k(null,3,[ut,gz,$s,t,Ro,I.l(e,UC,l,D([qz,s]))],null))})),new Q(null,2,5,S,[e,null],null)):new Q(null,2,5,S,[e,new Q(null,1,5,S,[wI.O("global",t,l,null,lI("global.errors.authentication.failure",["Requested authentication provider ",p.g(a)," is not available"].join("")))],null)],null)}S0.C(null,OG,(function(e,t,r){var i=bg(r);r=u.h(i,UC);var o=u.h(i,pG);if(i=u.h(i,Gp),n(pI(e,o,zr)))t=new Q(null,2,5,S,[e,new Q(null,1,5,S,[RZ(t,r,o)],null)],null);else{i=gP(i),i=nI(e,o,zr,i),e=FQ.h(i,o);e:{var l=Sv.g(e);if(n(l)){var s=Xm.g(l),a=pA.g(l);switch(s=n(s)?I.j(e,Xm,s):e,a=n(a)?I.j(s,pA,a):s,s=(s=X.g(l))instanceof w?s.W:null){case"activity":var c=VZ(i,s=dh.h(l,new Q(null,2,5,S,[cz,kt],null)));if(n(c)){var h=kt.g(a),d=dh.h(l,new Q(null,2,5,S,[cz,Xz],null)),f=e_(i,Ty.g(c));c=UH(c,new Q(null,1,5,S,[wp],null),D([h])),d=n(d)?I.j(c,Ru,kt.g(a)):c,i=f_(PQ(WZ(i,s,d=WH(d,new Q(null,1,5,S,[nn],null),kt.g(l))),h,eh(eh(a,new Q(null,2,5,S,[zr,Oo],null),s),new Q(null,2,5,S,[zr,Sm],null),Sm.g(l))),f,h)}break e;case"create-peer":i=PQ(i,kt.g(a),a);break e;default:throw Error(["No matching clause: ",p.g(s)].join(""))}}}if(l=re.h,s=a=ah.h,h=UQ("activity",zr,i,t,e),z(f=yj(ei(XZ(i,dh.h(e,new Q(null,2,5,S,[Uz,xr],null)))))))f=new Q(null,1,5,d=S,[tI(c=$s.g(e),LZ(kt.g(e),f))],null);else f=null;t=l.call(re,a.call(ah,s.call(ah,h,f),l_.h(i,e)),RZ(t,r,o)),t=new Q(null,2,5,S,[i,t],null)}return t})),S0.C(null,mv,(function(e,t,r){var i=bg(r),o=u.h(i,UC);return e=G(r=Q0(e,HQ(e,i=u.h(i,pG),zr),kI(r),!1),0,null),r=G(r,1,null),t=G(o=new Q(null,2,5,S,[null,RZ(t,o,i)],null),0,null),o=G(o,1,null),new Q(null,2,5,S,[n(t)?t:e,Qe(o)||Le(o)?Nb.j(Dg(re,F),r,o):null!=o?Dg(re,F)(r,o):r],null)})),S0.C(null,sk,(function(e,t,r){r=pG.g(r),r=FQ.h(e,r);var i=dh.h(r,new Q(null,2,5,S,[zr,Oo],null));if(n(i)){var o=kt.g(r),l=VZ(e,i);if(n(l)){var s=x.h(Ru.g(l),o);if(t=s?l:hh(l,rn,Dg(re,wj),o),t=WH(t,new Q(null,1,5,S,[wp],null),o),s){if(o=Ty.g(t),o=Fw.g(e_(e,o)),s=kt.g(r),l=dh.h(r,new Q(null,2,5,S,[zr,Sm],null)),t=we.h(I.l(t,Ru,s,D([zy,!0])),Pw),s=WZ(PQ(e,s,eh(r,new Q(null,2,5,S,[zr,Oo],null),kt.g(t))),kt.g(t),t),n(l)){l=ah.h;var a=S;o=tI($s.g(r),PZ(e,r,t,o)),e=l.call(ah,new Q(null,1,5,a,[o],null),Q_(e,t,r))}else e=ah.h(M_(e,t,o),O_(e,t));e=new k(null,3,[su,s,cz,t,Pv,e],null)}else e=T_(e,t,r);t=bg(e),e=u.h(t,su),r=u.h(t,cz),t=u.h(t,Pv),e=new Q(null,2,5,S,[WZ(e,i,r),t],null)}else e=new Q(null,2,5,S,[PQ(e,o,U_(r)),new Q(null,1,5,S,[tI(t,KZ(o,null,JZ))],null)],null)}else n(l=dh.h(r,new Q(null,2,5,S,[Sv,Pw],null)))?(i=pG.g(l),s=FQ.h(e,i),o=t=S,s=$s.g(s),l=UC.g(l),r=kt.g(r),e=new Q(null,2,5,t,[e,new Q(null,1,5,o,[tI(s,new k(null,5,[wu,"activity",X,mo,UC,l,pG,i,is,r],null))],null)],null)):e=jI("activity.errors.invalid_peer",["Unable to find originating request for a ready message from peer ",p.g(kt.g(r))].join(""));return e})),S0.C(null,TE,(function(e,t,r){var i=bg(r);r=u.h(i,UC);var o=u.h(i,pG);i=U0(i=u.h(i,hp));var l=HQ(e,o,zr),s=dh.h(l,new Q(null,2,5,S,[Uz,xr],null));return n(s)?new Q(null,2,5,S,[YZ(e,s,i),re.h(E_(e,s,i),RZ(t,r,o))],null):new Q(null,2,5,S,[e,new Q(null,1,5,S,[SZ(t,r,o,lI("activity.errors.registration.failure",["Registering peer is missing an user in its identity",p.g(Uz.g(l))].join("")))],null)],null)})),S0.C(null,bG,(function(e,t,r){var i=bg(r);r=u.h(i,UC);var o=u.h(i,pG),l=u.h(i,hp),s=HQ(e,o,zr);return n(i=dh.h(s,new Q(null,2,5,S,[Uz,xr],null)))?(l=yj(l),l=yj(Xg.h(l,di(XZ(e,i)))),e=new Q(null,2,5,S,[ZZ(e,i,l),re.h(F_(e,i,l),RZ(t,r,o))],null)):e=new Q(null,2,5,S,[e,new Q(null,1,5,S,[SZ(t,r,o,lI("activity.errors.registration.failure",["Removing peer is missing an user in its identity",p.g(Uz.g(s))].join("")))],null)],null),e})),S0.C(null,Tw,(function(e,t,r,i){var o=wU;wU=N0(i);try{var l=we.h(r,DB);return K_(e,t,n(Kr.g(r))?gh(l,Kr,zg.h(T0,aI)):l,Ng.h(aI,DB.g(r)))}finally{wU=o}})),S0.C(null,fx,(function(e,t,r){var i=bg(r),o=u.h(i,UC),l=u.h(i,pG),s=u.h(i,Ov);i=HQ(e,l,zr),s=c_(e,s);var a=kt.g(i);return M(rn.g(s),a)||M(wp.g(s),a)||x.h(Ru.g(s),a)?i=!0:(a=FQ.h(e,Ru.g(s)),i=RQ.oa(Uz.g(a),sD.g(s),!1,Uz.g(i),null,!1)),n(i)?(e=G(r=X_(e,s,kI(r)),0,null),r=G(r,1,null),t=G(o=new Q(null,2,5,S,[null,RZ(t,o,l)],null),0,null),o=G(o,1,null),t=new Q(null,2,5,S,[n(t)?t:e,Qe(o)||Le(o)?Nb.j(Dg(re,F),r,o):null!=o?Dg(re,F)(r,o):r],null)):t=new Q(null,2,5,S,[e,SZ(t,o,l,hI("activity.errors.not_authorized","Not authorized to destroy activity"))],null),t})),S0.C(null,Sl,(function(e,t,n){return c0(e,t,n)})),S0.C(null,fB,(function(e,t,n){var r=bg(n);n=u.h(r,UC);var i=u.h(r,pG);return r=u.h(r,ks),HQ(e,i,zr),b0(e,t,n,i,r,b_)})),S0.C(null,LA,(function(e,t,r){var i=bg(r);r=u.h(i,UC);var o=u.h(i,pG),l=u.h(i,lC),s=u.h(i,Ov),a=u.h(i,pA),c=u.h(i,Xm);return HQ(e,o,zr),i=c_(e,s),l=pj.l(D([HQ(e,l,zr),ah.h(P,Xg.h(oe,new k(null,2,[Xm,c,pA,a],null)))])),c=zr.g(l),a=Oo.g(c),c=Ru.g(c),a=VZ(e,n(a)?a:c),x.h(kt.g(a),s)?t=new Q(null,2,5,S,[e,new Q(null,1,5,S,[RZ(t,r,o)],null)],null):n(a)?t=jI("activity.errors.activity_is_child",["Peer is already in activity ",p.g(kt.g(a))].join("")):(s=kt.g(i),a=kt.g(l),c=bg(e=T_(e,i,l)),e=u.h(c,su),i=u.h(c,cz),c=u.h(c,Pv),l=bg(e=new k(null,3,[su,PQ(WZ(e,s,i),a,eh(l,new Q(null,2,5,S,[zr,Oo],null),s)),cz,i,Pv,c],null)),e=u.h(l,su),l=u.h(l,Pv),t=new Q(null,2,5,S,[e,re.h(l,RZ(t,r,o))],null)),t})),S0.C(null,wF,(function(e,t,r){var i=bg(r),o=u.h(i,UC),l=HQ(e,i=u.h(i,pG),zr),s=dh.h(l,new Q(null,2,5,S,[zr,Oo],null));s=VZ(e,s);var a=Ru.g(s);return n(s)||jI("activity.errors.not_a_member","Not a member of an activity"),r=kI(r),x.h(a,i)?r=a0(e,s,l,r,!0):(r=bg(e=$_(e,s,l,r)),e=u.h(r,su),r=u.h(r,Pv),r=new Q(null,2,5,S,[e,r],null)),e=G(r,0,null),r=G(r,1,null),t=G(o=new Q(null,2,5,S,[null,RZ(t,o,i)],null),0,null),o=G(o,1,null),new Q(null,2,5,S,[n(t)?t:e,Qe(o)||Le(o)?Nb.j(Dg(re,F),r,o):null!=o?Dg(re,F)(r,o):r],null)})),S0.C(null,nu,(function(e,t,n){var r=bg(n);n=u.h(r,UC);var i=u.h(r,pG),o=u.h(r,hx);r=HQ(e,i,zr);for(var l=z(o=Ng.h(fL,o)),s=null,a=0,c=0;;)if(c")||-1!=o.indexOf("*")?I.j(l,xp,Sj(QI(QI(QI(o,".","\\."),"*","[a-zA-Z_0-9]+"),">",".*"))):l,r=eh(r,c,o),new Q(null,2,5,S,[PQ(e,i,r),yI(a)?new Q(null,2,5,S,[tI(a,new k(null,5,[wu,"bus",X,Zo,UC,s,pG,i,qD,n],null)),uI(MY(cI(pq.g(e)),i),I.j(t,qD,n))],null):null],null)}function L1(e,t,n){var r=bg(t),i=u.h(r,UC),o=u.h(r,pG),l=u.h(r,qD);return r=$s.g(n),n=fh.F(n,new Q(null,2,5,S,[tF,Ey],null),we,l),new Q(null,2,5,S,[PQ(e,o,n),yI(r)?new Q(null,2,5,S,[xI.F("bus",r,i,o),uI(MY(cI(pq.g(e)),o),t)],null):null],null)}B1.C(null,OG,function(){function e(e,n,r,i){var o=null;if(3e.Ei)){i=we.h(I.j(I.j(i,uA,t),Uy,t+3*e.Ei),wQ);var o=E3(e.Di,i,e.Hi),l=OH(1);sH((function(){var t,n=function(){function t(t){for(;;){e:try{for(;;){var n=t,r=n[1],i=1===r?t2(n,2,e.uh,o):2===r?NH(n,n[2]):null;if(!O(i,fv)){var l=i;break e}}}catch(e){if(l=e,t[2]=l,!z(t[4]))throw l;t[1]=A(t[4]),l=fv}if(!O(l,fv))return l}}function n(){var e=[null,null,null,null,null,null,null];return e[0]=r,e[1]=1,e}var r=null;return r=function(e){switch(arguments.length){case 0:return n.call(this);case 1:return t.call(this,e)}throw Error("Invalid arity: "+arguments.length)},r.A=n,r.g=t,r}();return LH(((t=n())[6]=l,t))}))}if(Gg(e.Fi,!0),0e.postMessage(n)))}))}connectExtClient(e,t){return __awaiter$7(this,void 0,void 0,(function*(){const n=yield this._gatewayWebInstance.connect(((t,n)=>e.postMessage({glue42ExtInc:n})));e.onMessage.addListener((r=>{var i;const o=null===(i=null==r?void 0:r.glue42ExtOut)||void 0===i?void 0:i.glue42core;if(o&&o.type===Glue42CoreMessageTypes.clientUnload.name)return n.disconnect(),e.disconnect(),void(t&&t(o.data.clientId,!0));if(!r.glue42ExtOut||o);else{const e=r.glue42ExtOut;n.send(e)}}))}))}setupInternalClient(e){return __awaiter$7(this,void 0,void 0,(function*(){let t;e.onmessage=n=>__awaiter$7(this,void 0,void 0,(function*(){var r;const i=null===(r=n.data)||void 0===r?void 0:r.glue42core;if(i&&i.type===Glue42CoreMessageTypes.gatewayInternalConnect.name)t=yield this.handleInternalGatewayConnectionRequest(e);else if(t&&!e.closed)return i&&i.type===Glue42CoreMessageTypes.gatewayDisconnect.name?(e.closed=!0,void(null==t||t.disconnect())):void(null==t||t.send(n.data))}))}))}handleInternalGatewayConnectionRequest(e){return __awaiter$7(this,void 0,void 0,(function*(){e.closed=!1;try{const t=yield this._gatewayWebInstance.connect(((t,n)=>e.postMessage(n)));return e.postMessage({glue42core:{type:Glue42CoreMessageTypes.gatewayInternalConnect.name,success:!0}}),t}catch(t){const n="string"==typeof t?t:JSON.stringify(t.message);return void e.postMessage({glue42core:{type:Glue42CoreMessageTypes.gatewayInternalConnect.name,error:n}})}}))}}class PlatformLogger{setLogger(e){this._logger=e}get(e){if(this._logger)return this._logger.subLogger(e)}}var logger=new PlatformLogger,lib$3={exports:{}},seed$1=1;function getNextValue$1(){return(seed$1=(9301*seed$1+49297)%233280)/233280}function setSeed$3(e){seed$1=e}var randomFromSeed$3={nextValue:getNextValue$1,seed:setSeed$3},randomFromSeed$2=randomFromSeed$3,ORIGINAL$1="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-",alphabet$5,previousSeed$1,shuffled$1;function reset$1(){shuffled$1=!1}function setCharacters$1(e){if(e){if(e!==alphabet$5){if(e.length!==ORIGINAL$1.length)throw new Error("Custom alphabet for shortid must be "+ORIGINAL$1.length+" unique characters. You submitted "+e.length+" characters: "+e);var t=e.split("").filter((function(e,t,n){return t!==n.lastIndexOf(e)}));if(t.length)throw new Error("Custom alphabet for shortid must be "+ORIGINAL$1.length+" unique characters. These characters were not unique: "+t.join(", "));alphabet$5=e,reset$1()}}else alphabet$5!==ORIGINAL$1&&(alphabet$5=ORIGINAL$1,reset$1())}function characters$1(e){return setCharacters$1(e),alphabet$5}function setSeed$2(e){randomFromSeed$2.seed(e),previousSeed$1!==e&&(reset$1(),previousSeed$1=e)}function shuffle$1(){alphabet$5||setCharacters$1(ORIGINAL$1);for(var e,t=alphabet$5.split(""),n=[],r=randomFromSeed$2.nextValue();t.length>0;)r=randomFromSeed$2.nextValue(),e=Math.floor(r*t.length),n.push(t.splice(e,1)[0]);return n.join("")}function getShuffled$1(){return shuffled$1||(shuffled$1=shuffle$1())}function lookup$1(e){return getShuffled$1()[e]}function get$1(){return alphabet$5||ORIGINAL$1}var alphabet_1$1={get:get$1,characters:characters$1,seed:setSeed$2,lookup:lookup$1,shuffled:getShuffled$1},crypto$3="object"==typeof window&&(window.crypto||window.msCrypto),randomByte$1;randomByte$1=crypto$3&&crypto$3.getRandomValues?function(e){return crypto$3.getRandomValues(new Uint8Array(e))}:function(e){for(var t=[],n=0;n0&&(t+=generate$2(counter$1)),t+=generate$2(n)}var build_1$1=build$1,alphabet$3=alphabet_1$1;function isShortId$1(e){return!(!e||"string"!=typeof e||e.length<6)&&!new RegExp("[^"+alphabet$3.get().replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&")+"]").test(e)}var isValid$1=isShortId$1;!function(e){var t=alphabet_1$1,n=build_1$1,r=isValid$1,i=0;function o(){return n(i)}e.exports=o,e.exports.generate=o,e.exports.seed=function(n){return t.seed(n),e.exports},e.exports.worker=function(t){return i=t,e.exports},e.exports.characters=function(e){return void 0!==e&&t.characters(e),t.shuffled()},e.exports.isValid=r}(lib$3);var libExports$1=lib$3.exports,shortid$2=libExports$1,shortid$3=getDefaultExportFromCjs$1(shortid$2),toStr$9=Object.prototype.toString,isArguments$3=function(e){var t=toStr$9.call(e),n="[object Arguments]"===t;return n||(n="[object Array]"!==t&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===toStr$9.call(e.callee)),n},implementation$b,hasRequiredImplementation;function requireImplementation(){if(hasRequiredImplementation)return implementation$b;var e;if(hasRequiredImplementation=1,!Object.keys){var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=isArguments$3,i=Object.prototype.propertyIsEnumerable,o=!i.call({toString:null},"toString"),l=i.call((function(){}),"prototype"),s=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],a=function(e){var t=e.constructor;return t&&t.prototype===e},u={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},c=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!u["$"+e]&&t.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{a(window[e])}catch(e){return!0}}catch(e){return!0}return!1}();e=function(e){var i=null!==e&&"object"==typeof e,u="[object Function]"===n.call(e),h=r(e),d=i&&"[object String]"===n.call(e),f=[];if(!i&&!u&&!h)throw new TypeError("Object.keys called on a non-object");var p=l&&u;if(d&&e.length>0&&!t.call(e,0))for(var g=0;g0)for(var w=0;w1&&"boolean"!=typeof t)throw new $TypeError$2('"allowMissing" argument must be a boolean');if(null===$exec$1(/^%?[^%]*%?$/,e))throw new $SyntaxError$1("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=stringToPath(e),r=n.length>0?n[0]:"",i=getBaseIntrinsic("%"+r+"%",t),o=i.name,l=i.value,s=!1,a=i.alias;a&&(r=a[0],$spliceApply(n,$concat$1([0,1],a)));for(var u=1,c=!0;u=n.length){var p=$gOPD$2(l,h);l=(c=!!p)&&"get"in p&&!("originalValue"in p.get)?p.get:l[h]}else c=hasOwn$1(l,h),l=l[h];c&&!s&&(INTRINSICS[o]=l)}}return l},GetIntrinsic$8=getIntrinsic,$defineProperty=GetIntrinsic$8("%Object.defineProperty%",!0),hasPropertyDescriptors$1=function(){if($defineProperty)try{return $defineProperty({},"a",{value:1}),!0}catch(e){return!1}return!1};hasPropertyDescriptors$1.hasArrayLengthDefineBug=function(){if(!hasPropertyDescriptors$1())return null;try{return 1!==$defineProperty([],"length",{value:1}).length}catch(e){return!0}};var hasPropertyDescriptors_1=hasPropertyDescriptors$1,keys=objectKeys$2,hasSymbols$3="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),toStr$7=Object.prototype.toString,concat=Array.prototype.concat,origDefineProperty=Object.defineProperty,isFunction=function(e){return"function"==typeof e&&"[object Function]"===toStr$7.call(e)},hasPropertyDescriptors=hasPropertyDescriptors_1(),supportsDescriptors$2=origDefineProperty&&hasPropertyDescriptors,defineProperty$1=function(e,t,n,r){if(t in e)if(!0===r){if(e[t]===n)return}else if(!isFunction(r)||!r())return;supportsDescriptors$2?origDefineProperty(e,t,{configurable:!0,enumerable:!1,value:n,writable:!0}):e[t]=n},defineProperties$1=function(e,t){var n=arguments.length>2?arguments[2]:{},r=keys(t);hasSymbols$3&&(r=concat.call(r,Object.getOwnPropertySymbols(t)));for(var i=0;i-1?callBind$5(n):n},objectKeys$1=objectKeys$2,hasSymbols$2=requireShams()(),callBound$b=callBound$c,toObject=Object,$push=callBound$b("Array.prototype.push"),$propIsEnumerable=callBound$b("Object.prototype.propertyIsEnumerable"),originalGetSymbols=hasSymbols$2?Object.getOwnPropertySymbols:null,implementation$8=function(e,t){if(null==e)throw new TypeError("target must be an object");var n=toObject(e);if(1===arguments.length)return n;for(var r=1;r=0&&"[object Array]"!==$toString$3(e)&&"[object Function]"===$toString$3(e.callee)},supportsStandardArguments=function(){return isStandardArguments(arguments)}();isStandardArguments.isLegacyArguments=isLegacyArguments;var isArguments$2=supportsStandardArguments?isStandardArguments:isLegacyArguments,_nodeResolve_empty={},_nodeResolve_empty$1=Object.freeze({__proto__:null,default:_nodeResolve_empty}),require$$0=getAugmentedNamespace(_nodeResolve_empty$1),hasMap="function"==typeof Map&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&"function"==typeof mapSizeDescriptor.get?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet="function"==typeof Set&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&"function"==typeof setSizeDescriptor.get?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,hasWeakMap="function"==typeof WeakMap&&WeakMap.prototype,weakMapHas=hasWeakMap?WeakMap.prototype.has:null,hasWeakSet="function"==typeof WeakSet&&WeakSet.prototype,weakSetHas=hasWeakSet?WeakSet.prototype.has:null,hasWeakRef="function"==typeof WeakRef&&WeakRef.prototype,weakRefDeref=hasWeakRef?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString=Object.prototype.toString,functionToString=Function.prototype.toString,$match=String.prototype.match,$slice$1=String.prototype.slice,$replace=String.prototype.replace,$toUpperCase=String.prototype.toUpperCase,$toLowerCase=String.prototype.toLowerCase,$test=RegExp.prototype.test,$concat=Array.prototype.concat,$join=Array.prototype.join,$arrSlice=Array.prototype.slice,$floor=Math.floor,bigIntValueOf$1="function"==typeof BigInt?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,hasShammedSymbols="function"==typeof Symbol&&"object"==typeof Symbol.iterator,toStringTag="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===hasShammedSymbols||"symbol")?Symbol.toStringTag:null,isEnumerable=Object.prototype.propertyIsEnumerable,gPO$1=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function addNumericSeparator(e,t){if(e===1/0||e===-1/0||e!=e||e&&e>-1e3&&e<1e3||$test.call(/e/,t))return t;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof e){var r=e<0?-$floor(-e):$floor(e);if(r!==e){var i=String(r),o=$slice$1.call(t,i.length+1);return $replace.call(i,n,"$&_")+"."+$replace.call($replace.call(o,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace.call(t,n,"$&_")}var utilInspect=require$$0,inspectCustom=utilInspect.custom,inspectSymbol=isSymbol$2(inspectCustom)?inspectCustom:null,objectInspect=function e(t,n,r,i){var o=n||{};if(has$2(o,"quoteStyle")&&"single"!==o.quoteStyle&&"double"!==o.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has$2(o,"maxStringLength")&&("number"==typeof o.maxStringLength?o.maxStringLength<0&&o.maxStringLength!==1/0:null!==o.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var l=!has$2(o,"customInspect")||o.customInspect;if("boolean"!=typeof l&&"symbol"!==l)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has$2(o,"indent")&&null!==o.indent&&"\t"!==o.indent&&!(parseInt(o.indent,10)===o.indent&&o.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has$2(o,"numericSeparator")&&"boolean"!=typeof o.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var s=o.numericSeparator;if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return inspectString(t,o);if("number"==typeof t){if(0===t)return 1/0/t>0?"0":"-0";var a=String(t);return s?addNumericSeparator(t,a):a}if("bigint"==typeof t){var u=String(t)+"n";return s?addNumericSeparator(t,u):u}var c=void 0===o.depth?5:o.depth;if(void 0===r&&(r=0),r>=c&&c>0&&"object"==typeof t)return isArray$2(t)?"[Array]":"[Object]";var h=getIndent(o,r);if(void 0===i)i=[];else if(indexOf(i,t)>=0)return"[Circular]";function d(t,n,l){if(n&&(i=$arrSlice.call(i)).push(n),l){var s={depth:o.depth};return has$2(o,"quoteStyle")&&(s.quoteStyle=o.quoteStyle),e(t,s,r+1,i)}return e(t,o,r+1,i)}if("function"==typeof t&&!isRegExp(t)){var f=nameOf(t),p=arrObjKeys(t,d);return"[Function"+(f?": "+f:" (anonymous)")+"]"+(p.length>0?" { "+$join.call(p,", ")+" }":"")}if(isSymbol$2(t)){var g=hasShammedSymbols?$replace.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(t);return"object"!=typeof t||hasShammedSymbols?g:markBoxed(g)}if(isElement(t)){for(var w="<"+$toLowerCase.call(String(t.nodeName)),m=t.attributes||[],v=0;v"}if(isArray$2(t)){if(0===t.length)return"[]";var y=arrObjKeys(t,d);return h&&!singleLineValues(y)?"["+indentedJoin(y,h)+"]":"[ "+$join.call(y,", ")+" ]"}if(isError(t)){var b=arrObjKeys(t,d);return"cause"in Error.prototype||!("cause"in t)||isEnumerable.call(t,"cause")?0===b.length?"["+String(t)+"]":"{ ["+String(t)+"] "+$join.call(b,", ")+" }":"{ ["+String(t)+"] "+$join.call($concat.call("[cause]: "+d(t.cause),b),", ")+" }"}if("object"==typeof t&&l){if(inspectSymbol&&"function"==typeof t[inspectSymbol]&&utilInspect)return utilInspect(t,{depth:c-r});if("symbol"!==l&&"function"==typeof t.inspect)return t.inspect()}if(isMap$3(t)){var S=[];return mapForEach&&mapForEach.call(t,(function(e,n){S.push(d(n,t,!0)+" => "+d(e,t))})),collectionOf("Map",mapSize.call(t),S,h)}if(isSet$3(t)){var $=[];return setForEach&&setForEach.call(t,(function(e){$.push(d(e,t))})),collectionOf("Set",setSize.call(t),$,h)}if(isWeakMap$1(t))return weakCollectionOf("WeakMap");if(isWeakSet$1(t))return weakCollectionOf("WeakSet");if(isWeakRef(t))return weakCollectionOf("WeakRef");if(isNumber$1(t))return markBoxed(d(Number(t)));if(isBigInt$1(t))return markBoxed(d(bigIntValueOf$1.call(t)));if(isBoolean$1(t))return markBoxed(booleanValueOf.call(t));if(isString$3(t))return markBoxed(d(String(t)));if(!isDate$1(t)&&!isRegExp(t)){var C=arrObjKeys(t,d),I=gPO$1?gPO$1(t)===Object.prototype:t instanceof Object||t.constructor===Object,x=t instanceof Object?"":"null prototype",E=!I&&toStringTag&&Object(t)===t&&toStringTag in t?$slice$1.call(toStr$6(t),8,-1):x?"Object":"",D=(I||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(E||x?"["+$join.call($concat.call([],E||[],x||[]),": ")+"] ":"");return 0===C.length?D+"{}":h?D+"{"+indentedJoin(C,h)+"}":D+"{ "+$join.call(C,", ")+" }"}return String(t)};function wrapQuotes(e,t,n){var r="double"===(n.quoteStyle||t)?'"':"'";return r+e+r}function quote(e){return $replace.call(String(e),/"/g,""")}function isArray$2(e){return!("[object Array]"!==toStr$6(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isDate$1(e){return!("[object Date]"!==toStr$6(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isRegExp(e){return!("[object RegExp]"!==toStr$6(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isError(e){return!("[object Error]"!==toStr$6(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isString$3(e){return!("[object String]"!==toStr$6(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isNumber$1(e){return!("[object Number]"!==toStr$6(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isBoolean$1(e){return!("[object Boolean]"!==toStr$6(e)||toStringTag&&"object"==typeof e&&toStringTag in e)}function isSymbol$2(e){if(hasShammedSymbols)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!symToString)return!1;try{return symToString.call(e),!0}catch(e){}return!1}function isBigInt$1(e){if(!e||"object"!=typeof e||!bigIntValueOf$1)return!1;try{return bigIntValueOf$1.call(e),!0}catch(e){}return!1}var hasOwn=Object.prototype.hasOwnProperty||function(e){return e in this};function has$2(e,t){return hasOwn.call(e,t)}function toStr$6(e){return objectToString.call(e)}function nameOf(e){if(e.name)return e.name;var t=$match.call(functionToString.call(e),/^function\s*([\w$]+)/);return t?t[1]:null}function indexOf(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;nt.maxStringLength){var n=e.length-t.maxStringLength,r="... "+n+" more character"+(n>1?"s":"");return inspectString($slice$1.call(e,0,t.maxStringLength),t)+r}return wrapQuotes($replace.call($replace.call(e,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,lowbyte),"single",t)}function lowbyte(e){var t=e.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return n?"\\"+n:"\\x"+(t<16?"0":"")+$toUpperCase.call(t.toString(16))}function markBoxed(e){return"Object("+e+")"}function weakCollectionOf(e){return e+" { ? }"}function collectionOf(e,t,n,r){return e+" ("+t+") {"+(r?indentedJoin(n,r):$join.call(n,", "))+"}"}function singleLineValues(e){for(var t=0;t=0)return!1;return!0}function getIndent(e,t){var n;if("\t"===e.indent)n="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;n=$join.call(Array(e.indent+1)," ")}return{base:n,prev:$join.call(Array(t+1),n)}}function indentedJoin(e,t){if(0===e.length)return"";var n="\n"+t.prev+t.base;return n+$join.call(e,","+n)+"\n"+t.prev}function arrObjKeys(e,t){var n=isArray$2(e),r=[];if(n){r.length=e.length;for(var i=0;i=e.length)return t+1;var n=$charCodeAt(e,t);if(n<55296||n>56319)return t+1;var r=$charCodeAt(e,t+1);return r<56320||r>57343?t+1:t+2},getArrayIterator=function(e){var t=0;return{next:function(){var n,r=t>=e.length;return r||(n=e[t],t+=1),{done:r,value:n}}}},getNonCollectionIterator=function(e,t){if(isArray$1(e)||isArguments$1(e))return getArrayIterator(e);if(isString$1(e)){var n=0;return{next:function(){var t=advanceStringIndex(e,n),r=$stringSlice(e,n,t);return n=t,{done:t>e.length,value:r}}}}return t&&void 0!==e["_es6-shim iterator_"]?e["_es6-shim iterator_"]():void 0};if($Map||$Set$1){var isMap$1=isMap$2,isSet$1=isSet$2,$mapForEach=callBound$8("Map.prototype.forEach",!0),$setForEach=callBound$8("Set.prototype.forEach",!0);if("undefined"==typeof process||!process.versions||!process.versions.node)var $mapIterator=callBound$8("Map.prototype.iterator",!0),$setIterator=callBound$8("Set.prototype.iterator",!0);var $mapAtAtIterator=callBound$8("Map.prototype.@@iterator",!0)||callBound$8("Map.prototype._es6-shim iterator_",!0),$setAtAtIterator=callBound$8("Set.prototype.@@iterator",!0)||callBound$8("Set.prototype._es6-shim iterator_",!0),getCollectionIterator=function(e){if(isMap$1(e)){if($mapIterator)return getStopIterationIterator($mapIterator(e));if($mapAtAtIterator)return $mapAtAtIterator(e);if($mapForEach){var t=[];return $mapForEach(e,(function(e,n){$arrayPush(t,[n,e])})),getArrayIterator(t)}}if(isSet$1(e)){if($setIterator)return getStopIterationIterator($setIterator(e));if($setAtAtIterator)return $setAtAtIterator(e);if($setForEach){var n=[];return $setForEach(e,(function(e){$arrayPush(n,e)})),getArrayIterator(n)}}};esGetIterator.exports=function(e){return getCollectionIterator(e)||getNonCollectionIterator(e)}}else esGetIterator.exports=function(e){if(null!=e)return getNonCollectionIterator(e,!0)}}var esGetIteratorExports=esGetIterator.exports,numberIsNaN=function(e){return e!=e},implementation$2=function(e,t){return 0===e&&0===t?1/e==1/t:e===t||!(!numberIsNaN(e)||!numberIsNaN(t))},implementation$1=implementation$2,polyfill$1=function(){return"function"==typeof Object.is?Object.is:implementation$1},getPolyfill$1=polyfill$1,define$1=defineProperties_1,shim$1=function(){var e=getPolyfill$1();return define$1(Object,{is:e},{is:function(){return Object.is!==e}}),e},define=defineProperties_1,callBind$2=callBindExports,implementation=implementation$2,getPolyfill=polyfill$1,shim=shim$1,polyfill=callBind$2(getPolyfill(),Object);define(polyfill,{getPolyfill:getPolyfill,implementation:implementation,shim:shim});var objectIs=polyfill,fnToStr=Function.prototype.toString,reflectApply="object"==typeof Reflect&&null!==Reflect&&Reflect.apply,badArrayLike,isCallableMarker;if("function"==typeof reflectApply&&"function"==typeof Object.defineProperty)try{badArrayLike=Object.defineProperty({},"length",{get:function(){throw isCallableMarker}}),isCallableMarker={},reflectApply((function(){throw 42}),null,badArrayLike)}catch(e){e!==isCallableMarker&&(reflectApply=null)}else reflectApply=null;var constructorRegex=/^\s*class\b/,isES6ClassFn=function(e){try{var t=fnToStr.call(e);return constructorRegex.test(t)}catch(e){return!1}},tryFunctionObject=function(e){try{return!isES6ClassFn(e)&&(fnToStr.call(e),!0)}catch(e){return!1}},toStr$4=Object.prototype.toString,objectClass="[object Object]",fnClass="[object Function]",genClass="[object GeneratorFunction]",ddaClass="[object HTMLAllCollection]",ddaClass2="[object HTML document.all class]",ddaClass3="[object HTMLCollection]",hasToStringTag$5="function"==typeof Symbol&&!!Symbol.toStringTag,isIE68=!(0 in[,]),isDDA=function(){return!1};if("object"==typeof document){var all=document.all;toStr$4.call(all)===toStr$4.call(document.all)&&(isDDA=function(e){if((isIE68||!e)&&(void 0===e||"object"==typeof e))try{var t=toStr$4.call(e);return(t===ddaClass||t===ddaClass2||t===ddaClass3||t===objectClass)&&null==e("")}catch(e){}return!1})}var isCallable$1=reflectApply?function(e){if(isDDA(e))return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;try{reflectApply(e,null,badArrayLike)}catch(e){if(e!==isCallableMarker)return!1}return!isES6ClassFn(e)&&tryFunctionObject(e)}:function(e){if(isDDA(e))return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if(hasToStringTag$5)return tryFunctionObject(e);if(isES6ClassFn(e))return!1;var t=toStr$4.call(e);return!(t!==fnClass&&t!==genClass&&!/^\[object HTML/.test(t))&&tryFunctionObject(e)},isCallable=isCallable$1,toStr$3=Object.prototype.toString,hasOwnProperty=Object.prototype.hasOwnProperty,forEachArray=function(e,t,n){for(var r=0,i=e.length;r=3&&(r=n),"[object Array]"===toStr$3.call(e)?forEachArray(e,t,r):"string"==typeof e?forEachString(e,t,r):forEachObject(e,t,r)},forEach_1=forEach$1,possibleNames=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],g$1="undefined"==typeof globalThis?commonjsGlobal$1:globalThis,availableTypedArrays$1=function(){for(var e=[],t=0;t-1?t:"Object"===t&&trySlices(e)}return gOPD$1?tryTypedArrays(e):null},whichTypedArray$1=whichTypedArray$2,isTypedArray$1=function(e){return!!whichTypedArray$1(e)},callBind=callBindExports,callBound$6=callBound$c,GetIntrinsic$2=getIntrinsic,isTypedArray=isTypedArray$1,$ArrayBuffer=GetIntrinsic$2("ArrayBuffer",!0),$Float32Array=GetIntrinsic$2("Float32Array",!0),$byteLength$2=callBound$6("ArrayBuffer.prototype.byteLength",!0),abSlice=$ArrayBuffer&&!$byteLength$2&&(new $ArrayBuffer).slice,$abSlice=abSlice&&callBind(abSlice),isArrayBuffer$2=$byteLength$2||$abSlice?function(e){if(!e||"object"!=typeof e)return!1;try{return $byteLength$2?$byteLength$2(e):$abSlice(e,0),!0}catch(e){return!1}}:$Float32Array?function(e){try{return new $Float32Array(e).buffer===e&&!isTypedArray(e)}catch(t){return"object"==typeof e&&"RangeError"===t.name}}:function(e){return!1},getDay=Date.prototype.getDay,tryDateObject=function(e){try{return getDay.call(e),!0}catch(e){return!1}},toStr$2=Object.prototype.toString,dateClass="[object Date]",hasToStringTag$3=shams(),isDateObject=function(e){return"object"==typeof e&&null!==e&&(hasToStringTag$3?tryDateObject(e):toStr$2.call(e)===dateClass)},callBound$5=callBound$c,hasToStringTag$2=shams(),has,$exec,isRegexMarker,badStringifier;if(hasToStringTag$2){has=callBound$5("Object.prototype.hasOwnProperty"),$exec=callBound$5("RegExp.prototype.exec"),isRegexMarker={};var throwRegexMarker=function(){throw isRegexMarker};badStringifier={toString:throwRegexMarker,valueOf:throwRegexMarker},"symbol"==typeof Symbol.toPrimitive&&(badStringifier[Symbol.toPrimitive]=throwRegexMarker)}var $toString$1=callBound$5("Object.prototype.toString"),gOPD=Object.getOwnPropertyDescriptor,regexClass="[object RegExp]",isRegex$1=hasToStringTag$2?function(e){if(!e||"object"!=typeof e)return!1;var t=gOPD(e,"lastIndex");if(!(t&&has(t,"value")))return!1;try{$exec(e,badStringifier)}catch(e){return e===isRegexMarker}}:function(e){return!(!e||"object"!=typeof e&&"function"!=typeof e)&&$toString$1(e)===regexClass},callBound$4=callBound$c,$byteLength$1=callBound$4("SharedArrayBuffer.prototype.byteLength",!0),isSharedArrayBuffer$1=$byteLength$1?function(e){if(!e||"object"!=typeof e)return!1;try{return $byteLength$1(e),!0}catch(e){return!1}}:function(e){return!1},numToStr=Number.prototype.toString,tryNumberObject=function(e){try{return numToStr.call(e),!0}catch(e){return!1}},toStr$1=Object.prototype.toString,numClass="[object Number]",hasToStringTag$1=shams(),isNumberObject=function(e){return"number"==typeof e||"object"==typeof e&&(hasToStringTag$1?tryNumberObject(e):toStr$1.call(e)===numClass)},callBound$3=callBound$c,$boolToStr=callBound$3("Boolean.prototype.toString"),$toString=callBound$3("Object.prototype.toString"),tryBooleanObject=function(e){try{return $boolToStr(e),!0}catch(e){return!1}},boolClass="[object Boolean]",hasToStringTag=shams(),isBooleanObject=function(e){return"boolean"==typeof e||null!==e&&"object"==typeof e&&(hasToStringTag&&Symbol.toStringTag in e?tryBooleanObject(e):$toString(e)===boolClass)},isSymbol$1={exports:{}},toStr=Object.prototype.toString,hasSymbols=hasSymbols$5();if(hasSymbols){var symToStr=Symbol.prototype.toString,symStringRegex=/^Symbol\(.*\)$/,isSymbolObject=function(e){return"symbol"==typeof e.valueOf()&&symStringRegex.test(symToStr.call(e))};isSymbol$1.exports=function(e){if("symbol"==typeof e)return!0;if("[object Symbol]"!==toStr.call(e))return!1;try{return isSymbolObject(e)}catch(e){return!1}}}else isSymbol$1.exports=function(e){return!1};var isSymbolExports=isSymbol$1.exports,isBigint={exports:{}},$BigInt="undefined"!=typeof BigInt&&BigInt,hasBigints=function(){return"function"==typeof $BigInt&&"function"==typeof BigInt&&"bigint"==typeof $BigInt(42)&&"bigint"==typeof BigInt(42)},hasBigInts=hasBigints();if(hasBigInts){var bigIntValueOf=BigInt.prototype.valueOf,tryBigInt=function(e){try{return bigIntValueOf.call(e),!0}catch(e){}return!1};isBigint.exports=function(e){return null!=e&&"boolean"!=typeof e&&"string"!=typeof e&&"number"!=typeof e&&"symbol"!=typeof e&&"function"!=typeof e&&("bigint"==typeof e||tryBigInt(e))}}else isBigint.exports=function(e){return!1};var isBigintExports=isBigint.exports,isString=isString$2,isNumber=isNumberObject,isBoolean=isBooleanObject,isSymbol=isSymbolExports,isBigInt=isBigintExports,whichBoxedPrimitive$1=function(e){return null==e||"object"!=typeof e&&"function"!=typeof e?null:isString(e)?"String":isNumber(e)?"Number":isBoolean(e)?"Boolean":isSymbol(e)?"Symbol":isBigInt(e)?"BigInt":void 0},$WeakMap="function"==typeof WeakMap&&WeakMap.prototype?WeakMap:null,$WeakSet$1="function"==typeof WeakSet&&WeakSet.prototype?WeakSet:null,exported;$WeakMap||(exported=function(e){return!1});var $mapHas$2=$WeakMap?$WeakMap.prototype.has:null,$setHas$2=$WeakSet$1?$WeakSet$1.prototype.has:null;exported||$mapHas$2||(exported=function(e){return!1});var isWeakmap=exported||function(e){if(!e||"object"!=typeof e)return!1;try{if($mapHas$2.call(e,$mapHas$2),$setHas$2)try{$setHas$2.call(e,$setHas$2)}catch(e){return!0}return e instanceof $WeakMap}catch(e){}return!1},isWeakset={exports:{}},GetIntrinsic$1=getIntrinsic,callBound$2=callBound$c,$WeakSet=GetIntrinsic$1("%WeakSet%",!0),$setHas$1=callBound$2("WeakSet.prototype.has",!0);if($setHas$1){var $mapHas$1=callBound$2("WeakMap.prototype.has",!0);isWeakset.exports=function(e){if(!e||"object"!=typeof e)return!1;try{if($setHas$1(e,$setHas$1),$mapHas$1)try{$mapHas$1(e,$mapHas$1)}catch(e){return!0}return e instanceof $WeakSet}catch(e){}return!1}}else isWeakset.exports=function(e){return!1};var isWeaksetExports=isWeakset.exports,isMap=isMap$2,isSet=isSet$2,isWeakMap=isWeakmap,isWeakSet=isWeaksetExports,whichCollection$1=function(e){if(e&&"object"==typeof e){if(isMap(e))return"Map";if(isSet(e))return"Set";if(isWeakMap(e))return"WeakMap";if(isWeakSet(e))return"WeakSet"}return!1},callBound$1=callBound$c,$byteLength=callBound$1("ArrayBuffer.prototype.byteLength",!0),isArrayBuffer$1=isArrayBuffer$2,arrayBufferByteLength=function(e){return isArrayBuffer$1(e)?$byteLength?$byteLength(e):e.byteLength:NaN},assign=object_assign,callBound=callBound$c,flags=regexp_prototype_flags,GetIntrinsic=getIntrinsic,getIterator=esGetIteratorExports,getSideChannel=sideChannel,is=objectIs,isArguments=isArguments$2,isArray=isarray,isArrayBuffer=isArrayBuffer$2,isDate=isDateObject,isRegex=isRegex$1,isSharedArrayBuffer=isSharedArrayBuffer$1,objectKeys=objectKeys$2,whichBoxedPrimitive=whichBoxedPrimitive$1,whichCollection=whichCollection$1,whichTypedArray=whichTypedArray$2,byteLength=arrayBufferByteLength,sabByteLength=callBound("SharedArrayBuffer.prototype.byteLength",!0),$getTime=callBound("Date.prototype.getTime"),gPO=Object.getPrototypeOf,$objToString=callBound("Object.prototype.toString"),$Set=GetIntrinsic("%Set%",!0),$mapHas=callBound("Map.prototype.has",!0),$mapGet=callBound("Map.prototype.get",!0),$mapSize=callBound("Map.prototype.size",!0),$setAdd=callBound("Set.prototype.add",!0),$setDelete=callBound("Set.prototype.delete",!0),$setHas=callBound("Set.prototype.has",!0),$setSize=callBound("Set.prototype.size",!0);function setHasEqualElement(e,t,n,r){for(var i,o=getIterator(e);(i=o.next())&&!i.done;)if(internalDeepEqual(t,i.value,n,r))return $setDelete(e,i.value),!0;return!1}function findLooseMatchingPrimitives(e){return void 0===e?null:"object"!=typeof e?"symbol"!=typeof e&&("string"!=typeof e&&"number"!=typeof e||+e==+e):void 0}function mapMightHaveLoosePrim(e,t,n,r,i,o){var l=findLooseMatchingPrimitives(n);if(null!=l)return l;var s=$mapGet(t,l),a=assign({},i,{strict:!1});return!(void 0===s&&!$mapHas(t,l)||!internalDeepEqual(r,s,a,o))&&(!$mapHas(e,l)&&internalDeepEqual(r,s,a,o))}function setMightHaveLoosePrim(e,t,n){var r=findLooseMatchingPrimitives(n);return null!=r?r:$setHas(t,r)&&!$setHas(e,r)}function mapHasEqualEntry(e,t,n,r,i,o){for(var l,s,a=getIterator(e);(l=a.next())&&!l.done;)if(internalDeepEqual(n,s=l.value,i,o)&&internalDeepEqual(r,$mapGet(t,s),i,o))return $setDelete(e,s),!0;return!1}function internalDeepEqual(e,t,n,r){var i=n||{};if(i.strict?is(e,t):e===t)return!0;if(whichBoxedPrimitive(e)!==whichBoxedPrimitive(t))return!1;if(!e||!t||"object"!=typeof e&&"object"!=typeof t)return i.strict?is(e,t):e==t;var o,l=r.has(e),s=r.has(t);if(l&&s){if(r.get(e)===r.get(t))return!0}else o={};return l||r.set(e,o),s||r.set(t,o),objEquiv(e,t,i,r)}function isBuffer(e){return!(!e||"object"!=typeof e||"number"!=typeof e.length)&&("function"==typeof e.copy&&"function"==typeof e.slice&&(!(e.length>0&&"number"!=typeof e[0])&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))))}function setEquiv(e,t,n,r){if($setSize(e)!==$setSize(t))return!1;for(var i,o,l,s=getIterator(e),a=getIterator(t);(i=s.next())&&!i.done;)if(i.value&&"object"==typeof i.value)l||(l=new $Set),$setAdd(l,i.value);else if(!$setHas(t,i.value)){if(n.strict)return!1;if(!setMightHaveLoosePrim(e,t,i.value))return!1;l||(l=new $Set),$setAdd(l,i.value)}if(l){for(;(o=a.next())&&!o.done;)if(o.value&&"object"==typeof o.value){if(!setHasEqualElement(l,o.value,n.strict,r))return!1}else if(!n.strict&&!$setHas(e,o.value)&&!setHasEqualElement(l,o.value,n.strict,r))return!1;return 0===$setSize(l)}return!0}function mapEquiv(e,t,n,r){if($mapSize(e)!==$mapSize(t))return!1;for(var i,o,l,s,a,u,c=getIterator(e),h=getIterator(t);(i=c.next())&&!i.done;)if(s=i.value[0],a=i.value[1],s&&"object"==typeof s)l||(l=new $Set),$setAdd(l,s);else if(void 0===(u=$mapGet(t,s))&&!$mapHas(t,s)||!internalDeepEqual(a,u,n,r)){if(n.strict)return!1;if(!mapMightHaveLoosePrim(e,t,s,a,n,r))return!1;l||(l=new $Set),$setAdd(l,s)}if(l){for(;(o=h.next())&&!o.done;)if(s=o.value[0],u=o.value[1],s&&"object"==typeof s){if(!mapHasEqualEntry(l,e,s,u,n,r))return!1}else if(!(n.strict||e.has(s)&&internalDeepEqual($mapGet(e,s),u,n,r)||mapHasEqualEntry(l,e,s,u,assign({},n,{strict:!1}),r)))return!1;return 0===$setSize(l)}return!0}function objEquiv(e,t,n,r){var i,o;if(typeof e!=typeof t)return!1;if(null==e||null==t)return!1;if($objToString(e)!==$objToString(t))return!1;if(isArguments(e)!==isArguments(t))return!1;if(isArray(e)!==isArray(t))return!1;var l=e instanceof Error,s=t instanceof Error;if(l!==s)return!1;if((l||s)&&(e.name!==t.name||e.message!==t.message))return!1;var a=isRegex(e),u=isRegex(t);if(a!==u)return!1;if((a||u)&&(e.source!==t.source||flags(e)!==flags(t)))return!1;var c=isDate(e),h=isDate(t);if(c!==h)return!1;if((c||h)&&$getTime(e)!==$getTime(t))return!1;if(n.strict&&gPO&&gPO(e)!==gPO(t))return!1;var d=whichTypedArray(e),f=whichTypedArray(t);if(d!==f)return!1;if(d||f){if(e.length!==t.length)return!1;for(i=0;i=0;i--)if(b[i]!=S[i])return!1;for(i=b.length-1;i>=0;i--)if(!internalDeepEqual(e[o=b[i]],t[o],n,r))return!1;var $=whichCollection(e),C=whichCollection(t);return $===C&&("Set"===$||"Set"===C?setEquiv(e,t,n,r):"Map"!==$||mapEquiv(e,t,n,r))}var deepEqual$1=function(e,t,n){return internalDeepEqual(e,t,n,getSideChannel())},deepEqual$2=getDefaultExportFromCjs$1(deepEqual$1),fastDeepEqual=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var r,i,o;if(Array.isArray(t)){if((r=t.length)!=n.length)return!1;for(i=r;0!=i--;)if(!e(t[i],n[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((r=(o=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(i=r;0!=i--;)if(!Object.prototype.hasOwnProperty.call(n,o[i]))return!1;for(i=r;0!=i--;){var l=o[i];if(!e(t[l],n[l]))return!1}return!0}return t!=t&&n!=n},equal=getDefaultExportFromCjs$1(fastDeepEqual);const getRelativeBounds=(e,t,n)=>{if("bottom"===n)return{left:t.left,top:t.top+t.height+0,width:t.width,height:e.height};if("top"===n)return{left:t.left,top:t.top-e.height-0,width:t.width,height:e.height};if("right"===n)return{left:t.left+t.width+0,top:t.top,width:e.width,height:t.height};if("left"===n)return{left:t.left-e.width-0,top:t.top,width:e.width,height:t.height};throw new Error("invalid relativeDirection")},objEqual=(e,t)=>deepEqual$2(e,t,{strict:!0}),objEqualFast=(e,t)=>equal(e,t),waitFor=(e,t)=>{let n=e;return()=>{n--,0===n&&t()}},wait=e=>new Promise((t=>setTimeout((()=>t()),e))),extractErrorMsg$1=e=>"string"==typeof e?e:e.message?JSON.stringify(e.message):JSON.stringify(e),checkMatch=(e,t)=>{if(!e.count)return!1;const n=t();return n&&(e.count=--e.count<0?0:e.count),n},clearNullUndefined=e=>{Object.keys(e).forEach((t=>{null!==e[t]&&void 0!==e[t]||delete e[t]}))};class PlatformController{constructor(e,t,n,r,i,o,l,s,a,u,c,h){this.domainsController=e,this.glueController=t,this.portsBridge=n,this.stateController=r,this.serviceWorkerController=i,this.preferredConnectionController=o,this.interceptionController=l,this.pluginsController=s,this.sessionController=a,this.licenseController=u,this.localStorageController=c,this.idbController=h}get logger(){return logger.get("main.web.platform")}get ctxTrackingGlue(){return this.glueController.contextsTrackingGlue}get systemGlue(){return this.glueController.systemGlue}get platformApi(){return this._platformApi}start(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){this.verifyLicense(e.licenseKey),yield this.idbController.start(e.user),yield this.portsBridge.configure(e),this.portsBridge.onClientUnloaded(this.handleClientUnloaded.bind(this)),yield this.glueController.start(e),yield Promise.all([this.glueController.createPlatformSystemMethod(this.handleClientMessage.bind(this)),this.glueController.createPlatformSystemStream()]),this.stateController.start(),yield this.domainsController.startAllDomains(e),this._platformApi=this.buildPlatformApi(),yield this.glueController.initClientGlue(null==e?void 0:e.browser,null==e?void 0:e.browserFactory,null===(t=null==e?void 0:e.workspaces)||void 0===t?void 0:t.isFrame,this._platformApi),yield this.serviceWorkerController.connect(e),yield this.domainsController.configurePostStartAllDomains(),yield this.pluginsController.start({platformConfig:e,plugins:null===(n=e.plugins)||void 0===n?void 0:n.definitions,api:this.platformApi,handlePluginMessage:this.handlePluginMessage.bind(this)}),e.connection&&(yield this.preferredConnectionController.start(e.connection)),this.serviceWorkerController.notifyReady(),this.portsBridge.start()}))}getClientGlue(){return this.glueController.clientGlue}handleClientMessage(e,t,n,r){this.processControllerCommand(e,"client",t.instance).then((e=>n(e))).catch((e=>r(e)))}handlePluginMessage(e,t){return __awaiter$7(this,void 0,void 0,(function*(){return this.processControllerCommand(e,"plugin",t)}))}processControllerCommand(e,t,n){var r,i,o,l;return __awaiter$7(this,void 0,void 0,(function*(){try{this.domainsController.validateDomain(e.domain)}catch(e){const i=extractErrorMsg$1(e);throw null===(r=this.logger)||void 0===r||r.trace(`rejecting execution of a command issued by a ${t}: ${n}, because of a domain validation error: ${i}`),new Error(`Cannot execute this platform control, because of domain validation error: ${i}`)}const s=Object.assign({},e,{commandId:shortid$2.generate(),callerId:n,callerType:t});null===(i=this.logger)||void 0===i||i.trace(`[${s.commandId}] received a command for a valid domain: ${e.domain} from ${t}: ${n}, forwarding to the appropriate controller`);try{const e=yield this.executeCommand(s);return null===(o=this.logger)||void 0===o||o.trace(`[${s.commandId}] this command was executed successfully, sending the result to the caller.`),e}catch(t){const n="string"==typeof t?t:t.message?JSON.stringify(t.message):JSON.stringify(t);throw null===(l=this.logger)||void 0===l||l.trace(`[${s.commandId}] this command's execution was rejected, reason: ${n}`),new Error(`The platform rejected operation ${s.operation} for domain: ${e.domain} with reason: ${n}`)}}))}handleClientUnloaded(e){this.domainsController.notifyDomainsClientUnloaded(e)}executeCommand(e){var t,n;const r=this.interceptionController.getOperationInterceptor({domain:e.domain,operation:e.operation});return r&&!(null===(t=e.settings)||void 0===t?void 0:t.skipInterception)?(null===(n=this.logger)||void 0===n||n.trace(`[${e.commandId}] The operation is being intercepted and executed by: ${r.name}`),r.intercept(e)):this.domainsController.executeControlMessage(e)}buildPlatformApi(){return{version:this.glueController.platformVersion,contextTrackGlue:this.ctxTrackingGlue,systemGlue:this.systemGlue,connectExtClient:(e,t)=>this.connectExtClient(e,t),onSystemReconnect:e=>this.onSystemReconnect(e),system:{shutdown:this.shutDown.bind(this),connection:{switchGW:this.preferredConnectionController.connectPreferred.bind(this.preferredConnectionController),switchToInternal:this.preferredConnectionController.revertToDefault.bind(this.preferredConnectionController)}}}}connectExtClient(e,t){return __awaiter$7(this,void 0,void 0,(function*(){yield this.portsBridge.handleExtConnectionRequest(e,t)}))}onSystemReconnect(e){return this.preferredConnectionController.onReconnect(e)}shutDown(){return __awaiter$7(this,void 0,void 0,(function*(){yield this.glueController.sendShutDownSignals(),this.stateController.cancel(),this.portsBridge.shutdown(),this.domainsController.shutdown(),this.serviceWorkerController.shutdown(),yield this.pluginsController.shutdown(),this.interceptionController.shutdown(),this.preferredConnectionController.shutdown(),this.glueController.shutdown(),this.sessionController.shutdown(),this.localStorageController.stop(),this.idbController.stop(),window.iobrowser={webStarted:!1}}))}verifyLicense(e){var t;if(!e||"string"!=typeof e||!e.length)throw new Error("The provided license key is not a valid string");if(!this.licenseController.verifyLicense(e).valid)throw this.logExpirationErrors(),new Error("Glue42 Core Plus cannot initialize, because there was no license token provided or it was invalid. Please contact Glue42 Sales team at licensing@glue42.com");const n=this.licenseController.getLicensePayload(e);if("trial"===n.type&&this.licenseController.checkExpired(n.expiration))throw this.logExpirationErrors(),new Error("Glue42 Core Plus cannot initialize, because the provided trial license has expired. Please contact Glue42 Sales team at licensing@glue42.com");this.licenseController.checkExpired(n.expiration)&&this.logExpirationErrors(),null===(t=this.logger)||void 0===t||t.info(`This Glue42 Core Plus is running with a ${n.type} license, which expires on: ${new Date(1e3*n.expiration).toString()}`)}logExpirationErrors(){var e,t,n,r,i;null===(e=this.logger)||void 0===e||e.error("***********************************************************************************************************"),null===(t=this.logger)||void 0===t||t.error("***********************************************************************************************************"),null===(n=this.logger)||void 0===n||n.error("********************** This is Glue42 Core Plus has an expired in invalid license **************************"),null===(r=this.logger)||void 0===r||r.error("***********************************************************************************************************"),null===(i=this.logger)||void 0===i||i.error("***********************************************************************************************************")}}const connectBrowserAppProps=["name","title","version","customProperties","icon","caption","type"],fdc3v2AppProps=["appId","name","type","details","version","title","tooltip","lang","description","categories","icons","screenshots","contactEmail","moreInfo","publisher","customConfig","hostManifests","interop","localizedVersions"];var ok$2=function(e){return{ok:!0,result:e}},err$2=function(e){return{ok:!1,error:e}},asPromise$2=function(e){return!0===e.ok?Promise.resolve(e.result):Promise.reject(e.error)},withDefault$2=function(e,t){return!0===t.ok?t.result:e},withException$2=function(e){if(!0===e.ok)return e.result;throw e.error},map$2=function(e,t){return!0===t.ok?ok$2(e(t.result)):t},map2$2=function(e,t,n){return!1===t.ok?t:!1===n.ok?n:ok$2(e(t.result,n.result))},mapError$2=function(e,t){return!0===t.ok?t:err$2(e(t.error))},andThen$2=function(e,t){return!0===t.ok?e(t.result):t},__assign$3=function(){return __assign$3=Object.assign||function(e){for(var t,n=1,r=arguments.length;ne.length>0),"Expected a non-empty string"),nonNegativeNumberDecoder$2=number$2().where((e=>e>=0),"Expected a non-negative number"),intentDefinitionDecoder$1=object$2({name:nonEmptyStringDecoder$2,displayName:optional$2(string$2()),contexts:optional$2(array$2(string$2())),customConfig:optional$2(object$2())}),v2TypeDecoder=oneOf$2(constant$2("web"),constant$2("native"),constant$2("citrix"),constant$2("onlineNative"),constant$2("other")),v2DetailsDecoder=object$2({url:nonEmptyStringDecoder$2}),v2IconDecoder=object$2({src:nonEmptyStringDecoder$2,size:optional$2(nonEmptyStringDecoder$2),type:optional$2(nonEmptyStringDecoder$2)}),v2ScreenshotDecoder=object$2({src:nonEmptyStringDecoder$2,size:optional$2(nonEmptyStringDecoder$2),type:optional$2(nonEmptyStringDecoder$2),label:optional$2(nonEmptyStringDecoder$2)}),v2ListensForIntentDecoder=object$2({contexts:array$2(nonEmptyStringDecoder$2),displayName:optional$2(nonEmptyStringDecoder$2),resultType:optional$2(nonEmptyStringDecoder$2),customConfig:optional$2(anyJson$2())}),v2IntentsDecoder=object$2({listensFor:optional$2(dict(v2ListensForIntentDecoder)),raises:optional$2(dict(array$2(nonEmptyStringDecoder$2)))}),v2UserChannelDecoder=object$2({broadcasts:optional$2(array$2(nonEmptyStringDecoder$2)),listensFor:optional$2(array$2(nonEmptyStringDecoder$2))}),v2AppChannelDecoder=object$2({name:nonEmptyStringDecoder$2,description:optional$2(nonEmptyStringDecoder$2),broadcasts:optional$2(array$2(nonEmptyStringDecoder$2)),listensFor:optional$2(array$2(nonEmptyStringDecoder$2))}),v2InteropDecoder=object$2({intents:optional$2(v2IntentsDecoder),userChannels:optional$2(v2UserChannelDecoder),appChannels:optional$2(array$2(v2AppChannelDecoder))}),glue42ApplicationDetailsDecoder=object$2({url:nonEmptyStringDecoder$2,top:optional$2(number$2()),left:optional$2(number$2()),width:optional$2(nonNegativeNumberDecoder$2),height:optional$2(nonNegativeNumberDecoder$2)}),glue42HostManifestsBrowserDecoder=object$2({name:optional$2(nonEmptyStringDecoder$2),type:optional$2(nonEmptyStringDecoder$2.where((e=>"window"===e),"Expected a value of window")),title:optional$2(nonEmptyStringDecoder$2),version:optional$2(nonEmptyStringDecoder$2),customProperties:optional$2(anyJson$2()),icon:optional$2(string$2()),caption:optional$2(string$2()),details:optional$2(glue42ApplicationDetailsDecoder),intents:optional$2(array$2(intentDefinitionDecoder$1)),hidden:optional$2(boolean$1())}),hostManifestsBrowserDecoder=oneOf$2(object$2({Glue42:oneOf$2(glue42HostManifestsBrowserDecoder,anyJson$2())}),anyJson$2()),v1DefinitionDecoder=object$2({name:nonEmptyStringDecoder$2,appId:nonEmptyStringDecoder$2,title:optional$2(nonEmptyStringDecoder$2),version:optional$2(nonEmptyStringDecoder$2),manifest:nonEmptyStringDecoder$2,manifestType:nonEmptyStringDecoder$2,tooltip:optional$2(nonEmptyStringDecoder$2),description:optional$2(nonEmptyStringDecoder$2),contactEmail:optional$2(nonEmptyStringDecoder$2),supportEmail:optional$2(nonEmptyStringDecoder$2),publisher:optional$2(nonEmptyStringDecoder$2),images:optional$2(array$2(object$2({url:optional$2(nonEmptyStringDecoder$2)}))),icons:optional$2(array$2(object$2({icon:optional$2(nonEmptyStringDecoder$2)}))),customConfig:anyJson$2(),intents:optional$2(array$2(intentDefinitionDecoder$1))}),v2LocalizedDefinitionDecoder=object$2({appId:optional$2(nonEmptyStringDecoder$2),name:optional$2(nonEmptyStringDecoder$2),details:optional$2(v2DetailsDecoder),version:optional$2(nonEmptyStringDecoder$2),title:optional$2(nonEmptyStringDecoder$2),tooltip:optional$2(nonEmptyStringDecoder$2),lang:optional$2(nonEmptyStringDecoder$2),description:optional$2(nonEmptyStringDecoder$2),categories:optional$2(array$2(nonEmptyStringDecoder$2)),icons:optional$2(array$2(v2IconDecoder)),screenshots:optional$2(array$2(v2ScreenshotDecoder)),contactEmail:optional$2(nonEmptyStringDecoder$2),supportEmail:optional$2(nonEmptyStringDecoder$2),moreInfo:optional$2(nonEmptyStringDecoder$2),publisher:optional$2(nonEmptyStringDecoder$2),customConfig:optional$2(array$2(anyJson$2())),hostManifests:optional$2(hostManifestsBrowserDecoder),interop:optional$2(v2InteropDecoder)}),v2DefinitionDecoder=object$2({appId:nonEmptyStringDecoder$2,name:nonEmptyStringDecoder$2,type:v2TypeDecoder,details:v2DetailsDecoder,version:optional$2(nonEmptyStringDecoder$2),title:optional$2(nonEmptyStringDecoder$2),tooltip:optional$2(nonEmptyStringDecoder$2),lang:optional$2(nonEmptyStringDecoder$2),description:optional$2(nonEmptyStringDecoder$2),categories:optional$2(array$2(nonEmptyStringDecoder$2)),icons:optional$2(array$2(v2IconDecoder)),screenshots:optional$2(array$2(v2ScreenshotDecoder)),contactEmail:optional$2(nonEmptyStringDecoder$2),supportEmail:optional$2(nonEmptyStringDecoder$2),moreInfo:optional$2(nonEmptyStringDecoder$2),publisher:optional$2(nonEmptyStringDecoder$2),customConfig:optional$2(array$2(anyJson$2())),hostManifests:optional$2(hostManifestsBrowserDecoder),interop:optional$2(v2InteropDecoder),localizedVersions:optional$2(dict(v2LocalizedDefinitionDecoder))}),allDefinitionsDecoder=oneOf$2(v1DefinitionDecoder,v2DefinitionDecoder),parseDecoderErrorToStringMessage=e=>`${e.kind} at ${e.at}: ${JSON.stringify(e.input)}. Reason - ${e.message}`;class FDC3Service{constructor(){this.fdc3ToDesktopDefinitionType={web:"window",native:"exe",citrix:"citrix",onlineNative:"clickonce",other:"window"}}toApi(){return{isFdc3Definition:this.isFdc3Definition.bind(this),parseToBrowserBaseAppData:this.parseToBrowserBaseAppData.bind(this),parseToDesktopAppConfig:this.parseToDesktopAppConfig.bind(this)}}isFdc3Definition(e){const t=allDefinitionsDecoder.run(e);return t.ok?e.appId&&e.details?{isFdc3:!0,version:"2.0"}:e.manifest?{isFdc3:!0,version:"1.2"}:{isFdc3:!1,reason:"The passed definition is not FDC3"}:{isFdc3:!1,reason:parseDecoderErrorToStringMessage(t.error)}}parseToBrowserBaseAppData(e){var t;const{isFdc3:n,version:r}=this.isFdc3Definition(e);if(!n)throw new Error("The passed definition is not FDC3");const i=allDefinitionsDecoder.run(e);if(!i.ok)throw new Error(`Invalid FDC3 ${r} definition. Error: ${parseDecoderErrorToStringMessage(i.error)}`);const o=this.getUserPropertiesFromDefinition(e,r),l={url:this.getUrl(e,r)};let s={name:e.appId,type:"window",createOptions:l,userProperties:Object.assign(Object.assign({},o),{intents:"1.2"===r?o.intents:this.getIntentsFromV2AppDefinition(e),details:l}),title:e.title,version:e.version,icon:this.getIconFromDefinition(e,r),caption:e.description,fdc3:"2.0"===r?Object.assign(Object.assign({},e),{definitionVersion:"2.0"}):void 0};if(null===(t=e.hostManifests)||void 0===t?void 0:t.Glue42){const t=glue42HostManifestsBrowserDecoder.run(e.hostManifests.Glue42);if(!t.ok)throw new Error(`Invalid FDC3 ${r} definition. Error: ${parseDecoderErrorToStringMessage(t.error)}`);if(!Object.keys(t.result).length)throw new Error("Invalid 'hostManifests['Glue42]' key");s=this.mergeBaseAppDataWithGlueManifest(s,t.result)}return s}parseToDesktopAppConfig(e){var t,n,r;const{isFdc3:i,version:o}=this.isFdc3Definition(e);if(!i)throw new Error("The passed definition is not FDC3");const l=allDefinitionsDecoder.run(e);if(!l.ok)throw new Error(`Invalid FDC3 ${o} definition. Error: ${parseDecoderErrorToStringMessage(l.error)}`);if("1.2"===o){const n=e;return{name:n.appId,type:"window",details:{url:this.getUrl(e,o)},version:n.version,title:n.title,tooltip:n.tooltip,caption:n.description,icon:null===(t=n.icons)||void 0===t?void 0:t[0].icon,intents:n.intents,customProperties:{manifestType:n.manifestType,images:n.images,contactEmail:n.contactEmail,supportEmail:n.supportEmail,publisher:n.publisher,icons:n.icons,customConfig:n.customConfig}}}const s=e;let a={name:s.appId,type:this.fdc3ToDesktopDefinitionType[s.type],details:s.details,version:s.version,title:s.title,tooltip:s.tooltip,caption:s.description,icon:this.getIconFromDefinition(s,"2.0"),intents:this.getIntentsFromV2AppDefinition(s),fdc3:Object.assign(Object.assign({},s),{definitionVersion:"2.0"})};if(null===(n=s.hostManifests)||void 0===n?void 0:n.Glue42){if("object"!=typeof s.hostManifests.Glue42||Array.isArray(s.hostManifests.Glue42))throw new Error("Invalid 'hostManifests['Glue42]' key");a=this.mergeDesktopConfigWithGlueManifest(a,null===(r=s.hostManifests)||void 0===r?void 0:r.Glue42)}return a}getUserPropertiesFromDefinition(e,t){return"1.2"===t?Object.fromEntries(Object.entries(e).filter((([e])=>!connectBrowserAppProps.includes(e)))):Object.fromEntries(Object.entries(e).filter((([e])=>!connectBrowserAppProps.includes(e)&&!fdc3v2AppProps.includes(e))))}getUrl(e,t){var n,r;let i;if("1.2"===t){const t=JSON.parse(e.manifest);i=(null===(n=t.details)||void 0===n?void 0:n.url)||t.url}else i=null===(r=e.details)||void 0===r?void 0:r.url;if(!i||"string"!=typeof i)throw new Error(`Invalid FDC3 ${t} definition. Provide valid 'url' under '${"1.2"===t?"manifest":"details"}' key`);return i}getIntentsFromV2AppDefinition(e){var t,n;const r=null===(n=null===(t=e.interop)||void 0===t?void 0:t.intents)||void 0===n?void 0:n.listensFor;if(!r)return;return Object.entries(r).map((e=>{const[t,n]=e;return Object.assign({name:t},n)}))}getIconFromDefinition(e,t){var n,r,i,o;return"1.2"===t?(null===(r=null===(n=e.icons)||void 0===n?void 0:n.find((e=>e.icon)))||void 0===r?void 0:r.icon)||void 0:(null===(o=null===(i=e.icons)||void 0===i?void 0:i.find((e=>e.src)))||void 0===o?void 0:o.src)||void 0}mergeBaseAppDataWithGlueManifest(e,t){let n=e;if(t.details){const r=Object.assign(Object.assign({},e.createOptions),t.details);n.createOptions=r,n.userProperties.details=r}return Array.isArray(t.intents)&&(n.userProperties.intents=(n.userProperties.intents||[]).concat(t.intents)),n=Object.assign(Object.assign({},n),t),delete n.details,delete n.intents,n}mergeDesktopConfigWithGlueManifest(e,t){const n=Object.assign({},e,t,{details:Object.assign(Object.assign({},e.details),t.details)});return Array.isArray(t.intents)&&(n.intents=(e.intents||[]).concat(t.intents)),n}}const decoders$1={common:{nonEmptyStringDecoder:nonEmptyStringDecoder$2,nonNegativeNumberDecoder:nonNegativeNumberDecoder$2},fdc3:{allDefinitionsDecoder:allDefinitionsDecoder,v1DefinitionDecoder:v1DefinitionDecoder,v2DefinitionDecoder:v2DefinitionDecoder}};var INTENTS_ERRORS;!function(e){e.USER_CANCELLED="User Closed Intents Resolver UI without choosing a handler",e.CALLER_NOT_DEFINED="Caller Id is not defined",e.TIMEOUT_HIT="Timeout hit",e.INTENT_NOT_FOUND="Cannot find Intent",e.HANDLER_NOT_FOUND="Cannot find Intent Handler",e.TARGET_INSTANCE_UNAVAILABLE="Cannot start Target Instance",e.INTENT_DELIVERY_FAILED="Target Instance did not add a listener",e.RESOLVER_UNAVAILABLE="Intents Resolver UI unavailable",e.RESOLVER_TIMEOUT="User did not choose a handler",e.INVALID_RESOLVER_RESPONSE="Intents Resolver UI returned invalid response",e.INTENT_HANDLER_REJECTION="Intent Handler function processing the raised intent threw an error or rejected the promise it returned"}(INTENTS_ERRORS||(INTENTS_ERRORS={}));let IoC$2=class{constructor(){this._decoders=decoders$1,this._errors={intents:INTENTS_ERRORS}}get fdc3(){return this._fdc3||(this._fdc3=(new FDC3Service).toApi()),this._fdc3}get decoders(){return this._decoders}get errors(){return this._errors}};const ioc=new IoC$2,fdc3=ioc.fdc3,decoders=ioc.decoders,errors=ioc.errors;var ok$1=function(e){return{ok:!0,result:e}},err$1=function(e){return{ok:!1,error:e}},asPromise$1=function(e){return!0===e.ok?Promise.resolve(e.result):Promise.reject(e.error)},withDefault$1=function(e,t){return!0===t.ok?t.result:e},withException$1=function(e){if(!0===e.ok)return e.result;throw e.error},map$1=function(e,t){return!0===t.ok?ok$1(e(t.result)):t},map2$1=function(e,t,n){return!1===t.ok?t:!1===n.ok?n:ok$1(e(t.result,n.result))},mapError$1=function(e,t){return!0===t.ok?t:err$1(e(t.error))},andThen$1=function(e,t){return!0===t.ok?e(t.result):t},__assign$2=function(){return __assign$2=Object.assign||function(e){for(var t,n=1,r=arguments.length;ne>=0),"Expected a non-negative number"),nonEmptyStringDecoder$1=string$1().where((e=>e.length>0),"Expected a non-empty string"),anyDecoder=anyJson$1(),windowBoundsDecoder=object$1({top:number$1(),left:number$1(),width:nonNegativeNumberDecoder$1,height:nonNegativeNumberDecoder$1}),windowRelativeDirectionDecoder=oneOf$1(constant$1("top"),constant$1("left"),constant$1("right"),constant$1("bottom")),logLevelDecoder=oneOf$1(constant$1("trace"),constant$1("debug"),constant$1("info"),constant$1("warn"),constant$1("error")),channelMetaDecoder=anyJson$1().where((e=>"string"==typeof e.color&&e.color.length>0),"Expected color to be a non-empty string"),layoutTypeDecoder=oneOf$1(constant$1("Global"),constant$1("Activity"),constant$1("ApplicationDefault"),constant$1("Swimlane"),constant$1("Workspace")),componentTypeDecoder=oneOf$1(constant$1("application"),constant$1("activity")),functionCheck=(e,t)=>{const n=typeof e;return"function"===n?anyJson$1():fail(`The provided argument as ${t} should be of type function, provided: ${typeof n}`)},operationCheckConfigDecoder=object$1({operation:nonEmptyStringDecoder$1}),operationCheckResultDecoder=object$1({isSupported:boolean()}),layoutSummaryDecoder$1=object$1({name:nonEmptyStringDecoder$1,type:layoutTypeDecoder,context:optional$1(anyJson$1()),metadata:optional$1(anyJson$1())}),windowComponentStateDecoder=object$1({context:optional$1(anyJson$1()),bounds:windowBoundsDecoder,createArgs:object$1({name:optional$1(nonEmptyStringDecoder$1),url:optional$1(nonEmptyStringDecoder$1),context:optional$1(anyJson$1())}),windowState:optional$1(nonEmptyStringDecoder$1),restoreState:optional$1(nonEmptyStringDecoder$1),instanceId:nonEmptyStringDecoder$1,isCollapsed:optional$1(boolean()),isSticky:optional$1(boolean()),restoreSettings:object$1({groupId:optional$1(nonEmptyStringDecoder$1),groupZOrder:optional$1(number$1())})}),windowLayoutComponentDecoder=object$1({type:constant$1("window"),componentType:optional$1(componentTypeDecoder),application:nonEmptyStringDecoder$1,state:windowComponentStateDecoder}),libDomainDecoder=oneOf$1(constant$1("system"),constant$1("windows"),constant$1("appManager"),constant$1("layouts"),constant$1("workspaces"),constant$1("intents"),constant$1("notifications"),constant$1("extension"),constant$1("channels"),constant$1("search"),constant$1("themes"),constant$1("manager"),constant$1("prefs")),systemOperationTypesDecoder=oneOf$1(constant$1("getEnvironment"),constant$1("getBase"),constant$1("operationCheck")),windowLayoutItemDecoder=object$1({type:constant$1("window"),config:object$1({appName:nonEmptyStringDecoder$1,windowId:optional$1(nonEmptyStringDecoder$1),context:optional$1(anyJson$1()),url:optional$1(nonEmptyStringDecoder$1),title:optional$1(string$1()),showCloseButton:optional$1(boolean()),allowExtract:optional$1(boolean()),allowReorder:optional$1(boolean()),isMaximized:optional$1(boolean())})}),groupLayoutItemDecoder$1=object$1({type:constant$1("group"),config:anyJson$1(),children:array$1(oneOf$1(windowLayoutItemDecoder))}),columnLayoutItemDecoder$1=object$1({type:constant$1("column"),config:anyJson$1(),children:array$1(oneOf$1(groupLayoutItemDecoder$1,windowLayoutItemDecoder,lazy((()=>columnLayoutItemDecoder$1)),lazy((()=>rowLayoutItemDecoder$1))))}),rowLayoutItemDecoder$1=object$1({type:constant$1("row"),config:anyJson$1(),children:array$1(oneOf$1(columnLayoutItemDecoder$1,groupLayoutItemDecoder$1,windowLayoutItemDecoder,lazy((()=>rowLayoutItemDecoder$1))))}),workspaceLayoutComponentStateDecoder=object$1({config:anyJson$1(),context:anyJson$1(),children:array$1(oneOf$1(rowLayoutItemDecoder$1,columnLayoutItemDecoder$1,groupLayoutItemDecoder$1,windowLayoutItemDecoder))}),workspaceLayoutComponentDecoder=object$1({type:constant$1("Workspace"),application:optional$1(string$1()),state:workspaceLayoutComponentStateDecoder}),workspaceFrameComponentStateDecoder=object$1({bounds:windowBoundsDecoder,instanceId:nonEmptyStringDecoder$1,selectedWorkspace:nonNegativeNumberDecoder$1,workspaces:array$1(workspaceLayoutComponentStateDecoder),windowState:optional$1(nonEmptyStringDecoder$1),restoreState:optional$1(nonEmptyStringDecoder$1),context:optional$1(anyJson$1())}),workspaceFrameComponentDecoder=object$1({type:constant$1("workspaceFrame"),application:nonEmptyStringDecoder$1,componentType:optional$1(componentTypeDecoder),state:workspaceFrameComponentStateDecoder}),glueLayoutDecoder=object$1({name:nonEmptyStringDecoder$1,type:layoutTypeDecoder,components:array$1(oneOf$1(windowLayoutComponentDecoder,workspaceLayoutComponentDecoder,workspaceFrameComponentDecoder)),context:optional$1(anyJson$1()),metadata:optional$1(anyJson$1()),version:optional$1(number$1())}),workspacesSandboxDecoder=object$1({flags:string$1()}),applicationDetailsDecoder=object$1({url:nonEmptyStringDecoder$1,top:optional$1(number$1()),left:optional$1(number$1()),width:optional$1(nonNegativeNumberDecoder$1),height:optional$1(nonNegativeNumberDecoder$1),workspacesSandbox:optional$1(workspacesSandboxDecoder)}),intentDefinitionDecoder=object$1({name:nonEmptyStringDecoder$1,displayName:optional$1(string$1()),contexts:optional$1(array$1(string$1())),customConfig:optional$1(object$1()),resultType:optional$1(nonEmptyStringDecoder$1)}),glueCoreAppDefinitionDecoder=object$1({name:nonEmptyStringDecoder$1,type:nonEmptyStringDecoder$1.where((e=>"window"===e),"Expected a value of window"),title:optional$1(nonEmptyStringDecoder$1),version:optional$1(nonEmptyStringDecoder$1),customProperties:optional$1(anyJson$1()),icon:optional$1(string$1()),caption:optional$1(string$1()),details:applicationDetailsDecoder,intents:optional$1(array$1(intentDefinitionDecoder)),hidden:optional$1(boolean()),fdc3:optional$1(decoders.fdc3.v2DefinitionDecoder)});object$1({name:nonEmptyStringDecoder$1,title:optional$1(nonEmptyStringDecoder$1),version:optional$1(nonEmptyStringDecoder$1),appId:optional$1(nonEmptyStringDecoder$1),manifest:nonEmptyStringDecoder$1,manifestType:nonEmptyStringDecoder$1,tooltip:optional$1(nonEmptyStringDecoder$1),description:optional$1(nonEmptyStringDecoder$1),contactEmail:optional$1(nonEmptyStringDecoder$1),supportEmail:optional$1(nonEmptyStringDecoder$1),publisher:optional$1(nonEmptyStringDecoder$1),images:optional$1(array$1(object$1({url:optional$1(nonEmptyStringDecoder$1)}))),icons:optional$1(array$1(object$1({icon:optional$1(nonEmptyStringDecoder$1)}))),customConfig:anyJson$1(),intents:optional$1(array$1(intentDefinitionDecoder))});const remoteStoreDecoder=object$1({url:nonEmptyStringDecoder$1,pollingInterval:optional$1(nonNegativeNumberDecoder$1),requestTimeout:optional$1(nonNegativeNumberDecoder$1),customHeaders:optional$1(anyJson$1())});object$1({fetch:anyJson$1().andThen((e=>functionCheck(e,"supplier fetch"))),timeout:optional$1(nonNegativeNumberDecoder$1),pollingInterval:optional$1(nonNegativeNumberDecoder$1),save:optional$1(anyJson$1().andThen((e=>functionCheck(e,"supplier save")))),delete:optional$1(anyJson$1().andThen((e=>functionCheck(e,"supplier delete"))))});const channelDefinitionDecoder=object$1({name:nonEmptyStringDecoder$1,meta:channelMetaDecoder,data:optional$1(anyJson$1())}),pluginDefinitionDecoder=object$1({name:nonEmptyStringDecoder$1,start:anyJson$1(),stop:optional$1(anyJson$1()),version:optional$1(nonEmptyStringDecoder$1),config:optional$1(anyJson$1()),critical:optional$1(boolean())}),allApplicationDefinitionsDecoder=oneOf$1(glueCoreAppDefinitionDecoder,decoders.fdc3.v2DefinitionDecoder,decoders.fdc3.v1DefinitionDecoder);array$1(allApplicationDefinitionsDecoder);const applicationsConfigDecoder=object$1({local:optional$1(array$1(allApplicationDefinitionsDecoder)),remote:optional$1(remoteStoreDecoder)}),layoutsConfigDecoder=object$1({mode:optional$1(oneOf$1(constant$1("idb"),constant$1("session"))),local:optional$1(array$1(glueLayoutDecoder))}),channelsConfigDecoder=object$1({definitions:array$1(channelDefinitionDecoder)}),pluginsConfigDecoder=object$1({definitions:array$1(pluginDefinitionDecoder)}),gatewayConfigDecoder=object$1({logging:optional$1(object$1({level:optional$1(logLevelDecoder),appender:optional$1(anyJson$1().andThen((e=>functionCheck(e,"gateway log appender"))))})),clients:optional$1(object$1({buffer_size:optional$1(number$1())}))}),glueConfigDecoder=anyJson$1(),maximumActiveWorkspacesDecoder=object$1({threshold:number$1().where((e=>e>1),"Expected a number larger than 1")}),idleWorkspacesDecoder=object$1({idleMSThreshold:number$1().where((e=>e>100),"Expected a number larger than 100")}),hibernationConfigDecoder=object$1({maximumActiveWorkspaces:optional$1(maximumActiveWorkspacesDecoder),idleWorkspaces:optional$1(idleWorkspacesDecoder)}),loadingConfigDecoder=object$1({delayed:optional$1(object$1({batch:optional$1(number$1()),initialOffsetInterval:optional$1(number$1()),interval:optional$1(number$1())})),defaultStrategy:optional$1(oneOf$1(constant$1("direct"),constant$1("delayed"),constant$1("lazy"))),showDelayedIndicator:optional$1(boolean())}),iframeSandBoxConfigDecoder=object$1({flags:string$1()}),workspacesConfigDecoder=object$1({src:nonEmptyStringDecoder$1,hibernation:optional$1(hibernationConfigDecoder),loadingStrategy:optional$1(loadingConfigDecoder),isFrame:optional$1(boolean()),initAsEmpty:optional$1(boolean()),frameCache:optional$1(boolean()),iframeSandbox:optional$1(iframeSandBoxConfigDecoder)}),preferredConnectionSettingsDecoder=object$1({url:nonEmptyStringDecoder$1,auth:optional$1(object$1({username:optional$1(nonEmptyStringDecoder$1),password:optional$1(nonEmptyStringDecoder$1),sessionId:optional$1(nonEmptyStringDecoder$1),provider:optional$1(nonEmptyStringDecoder$1),providerContext:optional$1(anyJson$1()),token:optional$1(nonEmptyStringDecoder$1),gatewayToken:optional$1(nonEmptyStringDecoder$1),flowName:optional$1(constant$1("sspi")),flowCallback:optional$1(anyJson$1().andThen((e=>functionCheck(e,"flowCallback function"))))})),forceIncompleteSwitch:optional$1(boolean()),discoveryIntervalMS:optional$1(nonNegativeNumberDecoder$1)}),connectionConfigDecoder=object$1({preferred:optional$1(preferredConnectionSettingsDecoder),enableManualSwitching:optional$1(boolean()),alwaysPlatform:optional$1(boolean()),allowedClientFallbackOrigin:optional$1(nonEmptyStringDecoder$1)}),windowsConfigDecoder=object$1({windowResponseTimeoutMs:optional$1(nonNegativeNumberDecoder$1),defaultWindowOpenBounds:optional$1(windowBoundsDecoder)}),serviceWorkerConfigDecoder=object$1({url:optional$1(nonEmptyStringDecoder$1),registrationPromise:optional$1(anyJson$1())}),notificationFilterDecoder=object$1({allowed:optional$1(array$1(nonEmptyStringDecoder$1)),blocked:optional$1(array$1(nonEmptyStringDecoder$1))}),notificationsConfigDecoder=object$1({enabled:optional$1(boolean()),enableToasts:optional$1(boolean()),sourceFilter:optional$1(notificationFilterDecoder),clearNotificationOnClick:optional$1(boolean())}),themesConfigDecoder=object$1({defaultTheme:optional$1(oneOf$1(constant$1("os"),constant$1("light"),constant$1("dark")))}),userConfigDecoder=object$1({username:nonEmptyStringDecoder$1}),managerAuthConfig=object$1({basic:optional$1(object$1({username:nonEmptyStringDecoder$1,password:nonEmptyStringDecoder$1})),username:optional$1(nonEmptyStringDecoder$1),token:optional$1(object$1({bearer:optional$1(nonEmptyStringDecoder$1)})),includeCredentials:optional$1(boolean())}),managerConfigDecoder=object$1({url:nonEmptyStringDecoder$1,auth:managerAuthConfig,critical:optional$1(boolean()),headers:optional$1(anyJson$1()),fetchIntervalMS:optional$1(nonNegativeNumberDecoder$1),tokenRefreshIntervalMS:optional$1(nonNegativeNumberDecoder$1),responseTimeoutMS:optional$1(nonNegativeNumberDecoder$1)}),applicationPreferencesStoreDecoder=object$1({type:optional$1(oneOf$1(constant$1("local"),constant$1("manager")))}),applicationPreferencesConfigDecoder=object$1({store:optional$1(applicationPreferencesStoreDecoder)}),platformConfigDecoder=object$1({licenseKey:nonEmptyStringDecoder$1,windows:optional$1(windowsConfigDecoder),applications:optional$1(applicationsConfigDecoder),notifications:optional$1(notificationsConfigDecoder),layouts:optional$1(layoutsConfigDecoder),channels:optional$1(channelsConfigDecoder),plugins:optional$1(pluginsConfigDecoder),serviceWorker:optional$1(serviceWorkerConfigDecoder),gateway:optional$1(gatewayConfigDecoder),connection:optional$1(connectionConfigDecoder),browser:optional$1(glueConfigDecoder),workspaces:optional$1(workspacesConfigDecoder),environment:optional$1(anyJson$1()),themes:optional$1(themesConfigDecoder),manager:optional$1(managerConfigDecoder),user:optional$1(userConfigDecoder),browserFactory:optional$1(anyJson$1().andThen((e=>functionCheck(e,"glueFactory")))),applicationPreferences:optional$1(applicationPreferencesConfigDecoder)}),windowOpenSettingsDecoder=object$1({top:optional$1(number$1()),left:optional$1(number$1()),width:optional$1(nonNegativeNumberDecoder$1),height:optional$1(nonNegativeNumberDecoder$1),context:optional$1(anyJson$1()),relativeTo:optional$1(nonEmptyStringDecoder$1),relativeDirection:optional$1(windowRelativeDirectionDecoder),windowId:optional$1(nonEmptyStringDecoder$1),layoutComponentId:optional$1(nonEmptyStringDecoder$1)}),interceptorRegistrationRequestDecoder=object$1({callInterceptor:anyJson$1().andThen((e=>functionCheck(e,"callInterceptor"))),interceptions:array$1(object$1({domain:libDomainDecoder,operation:nonEmptyStringDecoder$1}))}),focusEventDataDecoder=object$1({windowId:nonEmptyStringDecoder$1,hasFocus:boolean()});var isMergeableObject=function(e){return isNonNullObject(e)&&!isSpecial(e)};function isNonNullObject(e){return!!e&&"object"==typeof e}function isSpecial(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||isReactElement(e)}var canUseSymbol="function"==typeof Symbol&&Symbol.for,REACT_ELEMENT_TYPE=canUseSymbol?Symbol.for("react.element"):60103;function isReactElement(e){return e.$$typeof===REACT_ELEMENT_TYPE}function emptyTarget(e){return Array.isArray(e)?[]:{}}function cloneUnlessOtherwiseSpecified(e,t){return!1!==t.clone&&t.isMergeableObject(e)?deepmerge(emptyTarget(e),e,t):e}function defaultArrayMerge(e,t,n){return e.concat(t).map((function(e){return cloneUnlessOtherwiseSpecified(e,n)}))}function getMergeFunction(e,t){if(!t.customMerge)return deepmerge;var n=t.customMerge(e);return"function"==typeof n?n:deepmerge}function getEnumerableOwnPropertySymbols(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return Object.propertyIsEnumerable.call(e,t)})):[]}function getKeys(e){return Object.keys(e).concat(getEnumerableOwnPropertySymbols(e))}function propertyIsOnObject(e,t){try{return t in e}catch(e){return!1}}function propertyIsUnsafe(e,t){return propertyIsOnObject(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function mergeObject(e,t,n){var r={};return n.isMergeableObject(e)&&getKeys(e).forEach((function(t){r[t]=cloneUnlessOtherwiseSpecified(e[t],n)})),getKeys(t).forEach((function(i){propertyIsUnsafe(e,i)||(propertyIsOnObject(e,i)&&n.isMergeableObject(t[i])?r[i]=getMergeFunction(i,n)(e[i],t[i],n):r[i]=cloneUnlessOtherwiseSpecified(t[i],n))})),r}function deepmerge(e,t,n){(n=n||{}).arrayMerge=n.arrayMerge||defaultArrayMerge,n.isMergeableObject=n.isMergeableObject||isMergeableObject,n.cloneUnlessOtherwiseSpecified=cloneUnlessOtherwiseSpecified;var r=Array.isArray(t);return r===Array.isArray(e)?r?n.arrayMerge(e,t,n):mergeObject(e,t,n):cloneUnlessOtherwiseSpecified(t,n)}deepmerge.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,n){return deepmerge(e,n,t)}),{})};var deepmerge_1=deepmerge,cjs=deepmerge_1,deepMerge=getDefaultExportFromCjs$1(cjs);function __awaiter$1(e,t,n,r){return new(n||(n=Promise))((function(i,o){function l(e){try{a(r.next(e))}catch(e){o(e)}}function s(e){try{a(r.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(l,s)}a((r=r.apply(e,t||[])).next())}))}let nanoid$1=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce(((e,t)=>e+=(t&=63)<36?t.toString(36):t<62?(t-26).toString(36).toUpperCase():t>62?"-":"_"),"");function createRegistry$1(e){if(e&&e.errorHandling&&"function"!=typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"==typeof e.errorHandling&&e.errorHandling,n={};function r(n,r){var i=n instanceof Error?n:new Error(n);if(t)t(i);else{var o='[ERROR] callback-registry: User callback for key "'+r+'" failed: '+i.stack;if(e)switch(e.errorHandling){case"log":return console.error(o);case"silent":return;case"throw":throw new Error(o)}console.error(o)}}return{add:function(e,t,i){var o=n[e];return o||(o=[],n[e]=o),o.push(t),i&&setTimeout((function(){i.forEach((function(i){var o;if(null===(o=n[e])||void 0===o?void 0:o.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(t){r(t,e)}}))}),0),function(){var r=n[e];r&&(0===(r=r.reduce((function(e,n,r){return n===t&&e.length===r||e.push(n),e}),[])).length?delete n[e]:n[e]=r)}},execute:function(e){for(var t=[],i=1;ie.length>0),"Expected a non-empty string"),nonNegativeNumberDecoder=number().where((e=>e>=0),"Expected a non-negative number"),searchTypeDecoder=object({name:nonEmptyStringDecoder,displayName:optional(nonEmptyStringDecoder)}),providerData=object({id:nonEmptyStringDecoder,interopId:nonEmptyStringDecoder,name:nonEmptyStringDecoder,appName:optional(nonEmptyStringDecoder),types:optional(array(searchTypeDecoder))}),providerLimitsDecoder=object({maxResults:optional(nonNegativeNumberDecoder),maxResultsPerType:optional(nonNegativeNumberDecoder)}),queryConfigDecoder=object({search:nonEmptyStringDecoder,providers:optional(array(providerData)),types:optional(array(searchTypeDecoder)),providerLimits:optional(providerLimitsDecoder)}),providerRegistrationConfig=object({name:nonEmptyStringDecoder,types:optional(array(searchTypeDecoder))}),operationDecoder=oneOf(constant("cancel"),constant("info"),constant("search")),queryStatusDecoder=oneOf(constant("done"),constant("in-progress"),constant("error")),searchCancelRequestDecoder=object({id:nonEmptyStringDecoder}),mainActionDecoder=object({method:nonEmptyStringDecoder,target:optional(oneOf(object({instance:nonEmptyStringDecoder}),constant("all"))),params:optional(anyJson())}),secondaryActionDecoder=object({name:nonEmptyStringDecoder,method:nonEmptyStringDecoder,target:optional(oneOf(object({instance:nonEmptyStringDecoder}),constant("all"))),params:optional(anyJson())}),queryResultDecoder=object({type:searchTypeDecoder,id:optional(nonEmptyStringDecoder),displayName:optional(nonEmptyStringDecoder),description:optional(nonEmptyStringDecoder),iconURL:optional(nonEmptyStringDecoder),metadata:optional(anyJson()),action:optional(mainActionDecoder),secondaryActions:optional(array(secondaryActionDecoder))}),legacySearchResultItemDecoder=object({type:string(),category:optional(string()),id:optional(string()),displayName:optional(string()),description:optional(string()),iconURL:optional(string()),action:optional(mainActionDecoder)}),protocolSearchResultsBatchDecoder=object({items:array(oneOf(queryResultDecoder,legacySearchResultItemDecoder)),provider:optional(providerData),queryId:nonEmptyStringDecoder,status:constant("in-progress")}),protocolSearchCompletedDecoder=object({items:array(oneOf(queryResultDecoder,legacySearchResultItemDecoder)),queryId:nonEmptyStringDecoder,status:constant("done")}),protocolProviderErrorDecoder=object({items:array(oneOf(queryResultDecoder,legacySearchResultItemDecoder)),provider:optional(providerData),queryId:nonEmptyStringDecoder,errorMessage:nonEmptyStringDecoder,status:constant("error")});class ClientController{constructor(e,t,n){this.logger=e,this.glueController=t,this.modelFactory=n,this.registry=lib$2(),this.activeQueryLookup={},this.queryIdToMasterIdLookup={},this.pendingDebounce=[],this.debounceMS=0}setDebounceMS(e){this.logger.info(`[${e.commandId}] Setting the debounceMS to: ${e.milliseconds}`),this.debounceMS=e.milliseconds,this.logger.info(`[${e.commandId}] debounceMS set to: ${e.milliseconds}`)}getDebounceMS(e){return this.logger.info(`[${e.commandId}] Getting the debounceMS`),this.debounceMS}query(e,t){return __awaiter$1(this,void 0,void 0,(function*(){if(this.debounceMS&&!t)return this.debounceQuery(e);yield this.glueController.registerMainClientMethod(this.handleProviderCall.bind(this));const{queryConfig:n,commandId:r}=e;this.logger.info(`[${r}] Initiating a query request`);let i=yield this.glueController.getAllProvidersInfo();this.logger.trace(`[${r}] Got all available providers: ${JSON.stringify(i)}`),n.providers&&(this.logger.info(`[${r}] Filtering providers by explicitly allowed providers.`),i=this.filterProvidersByAllowList(i,n.providers)),n.types&&(this.logger.info(`[${r}] Filtering providers by explicitly allowed types.`),i=this.filterProvidersByAllowedTypes(i,n.types)),i.length||this.logger.warn(`[${r}] There are no providers that can handle the query for ${e.queryConfig.search}`),this.logger.info(`[${r}] Sending query request to providers: ${JSON.stringify(i)}`);const o=yield this.glueController.sendQueryRequest(n,i);this.logger.info(`[${r}] Received responses from the providers: ${JSON.stringify(o)}`);const l=this.generateMasterQueryId(),s=this.modelFactory.buildClientQueryModel(l,this);return this.logger.info(`[${r}] The query is in progress with master id: ${l}`),this.activeQueryLookup[l]={servers:o,model:s},o.forEach((e=>{this.queryIdToMasterIdLookup[e.queryId]=l})),o.length||setTimeout((()=>{this.registry.execute(`on-query-completed-${l}`),this.cleanUpQuery(l)}),0),s.exposeFacade()}))}cancelQuery(e,t){return __awaiter$1(this,void 0,void 0,(function*(){const n=this.activeQueryLookup[e];if(!n)throw new Error(`[${t}] Cannot cancel query: ${e}, because this query does not exist`);const r=n.servers;this.logger.info(`[${t}] Sending cancel query requests`),yield Promise.all(r.map((e=>(this.logger.trace(`[${t}] Sending cancel query request to ${e.interopId} with queryId: ${e.queryId}`),this.glueController.sendQueryCancelRequest({id:e.queryId},{instance:e.interopId}))))),this.logger.info(`[${t}] The query was cancelled`)}))}processClientOnResults(e){return this.registry.add(`on-query-results-${e.masterQueryId}`,e.callback)}processClientOnCompleted(e){return this.registry.add(`on-query-completed-${e.masterQueryId}`,e.callback)}processClientOnError(e){return this.registry.add(`on-query-error-${e.masterQueryId}`,e.callback)}handleProviderCall(e){return __awaiter$1(this,void 0,void 0,(function*(){const{status:t}=e,n=queryStatusDecoder.runWithException(t),r=nanoid$1(10);switch(n){case SEARCH_QUERY_STATUSES.done:return this.handleQueryCompleted({completedConfig:e,commandId:r});case SEARCH_QUERY_STATUSES.inProgress:return this.handleQueryResults({resultsBatch:e,commandId:r});case SEARCH_QUERY_STATUSES.error:return this.handleQueryError({error:e,commandId:r});default:throw new Error(`Unrecognized status: ${t}`)}}))}handleQueryResults(e){var t,n;const{resultsBatch:r,commandId:i}=e;this.logger.trace(`[${i}] Processing a results batch from provider: ${null===(t=r.provider)||void 0===t?void 0:t.name} with id: ${null===(n=r.provider)||void 0===n?void 0:n.id}`);const o=protocolSearchResultsBatchDecoder.runWithException(r),l=this.queryIdToMasterIdLookup[o.queryId];if(!l)return void this.logger.warn(`[${i}] Received results for an unknown query. Provider ${JSON.stringify(o.provider)}, items: ${JSON.stringify(o.items)}`);this.logger.trace(`[${i}] The results batch is validated, forwarding to the callbacks`);const s=this.checkTransformLegacyResults(o.items),a={provider:o.provider,results:s};this.registry.execute(`on-query-results-${l}`,a)}handleQueryCompleted(e){const{completedConfig:t,commandId:n}=e;this.logger.trace(`[${n}] Processing a query completed message from query id: ${t.queryId}`);const r=protocolSearchCompletedDecoder.runWithException(t),i=this.queryIdToMasterIdLookup[r.queryId];if(!i)return void this.logger.warn(`[${n}] Received completed message for an unknown query. Provider query id: ${JSON.stringify(r.queryId)}`);if(r.items.length){const e={results:this.checkTransformLegacyResults(r.items)};this.registry.execute(`on-query-results-${i}`,e)}delete this.queryIdToMasterIdLookup[r.queryId];const o=this.activeQueryLookup[i];o.servers=o.servers.filter((e=>e.queryId!==r.queryId)),o.servers.length?this.logger.trace(`[${n}] Waiting for more providers to complete`):(this.logger.trace(`[${n}] All providers are done, marking this query as completed`),this.registry.execute(`on-query-completed-${i}`),this.cleanUpQuery(i))}handleQueryError(e){const{error:t,commandId:n}=e;this.logger.trace(`[${n}] Processing an error message from query: ${t.queryId}`);const r=protocolProviderErrorDecoder.runWithException(t),i=this.queryIdToMasterIdLookup[r.queryId];if(!i)return void this.logger.warn(`[${n}] Received error message for an unknown query. Provider query id: ${JSON.stringify(r.queryId)} and message: ${JSON.stringify(r.errorMessage)}`);const o={error:r.errorMessage,provider:r.provider};this.registry.execute(`on-query-error-${i}`,o)}filterProvidersByAllowList(e,t){const n=t.reduce(((e,t)=>(e[t.id]=!0,e)),{});return e.filter((e=>e.info.providers.some((e=>n[e.id]))))}filterProvidersByAllowedTypes(e,t){const n=t.reduce(((e,t)=>(e[t.name]=!0,e)),{});return e.filter((e=>{const t=e.info.supportedTypes;return!!t.some((e=>"*"===e))||(!t||!t.length||t.some((e=>n[e])))}))}generateMasterQueryId(){const e=nanoid$1(10);return this.activeQueryLookup[e]?this.generateMasterQueryId():e}cleanUpQuery(e){this.registry.clearKey(`on-query-results-${e}`),this.registry.clearKey(`on-query-completed-${e}`),this.registry.clearKey(`on-query-error-${e}`),delete this.activeQueryLookup[e]}debounceQuery(e){return new Promise(((t,n)=>{clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout((()=>{const t=[...this.pendingDebounce];this.pendingDebounce=[],this.query(e,!0).then((e=>t.forEach((({resolve:t})=>t(e))))).catch((e=>t.forEach((({reject:t})=>t(e)))))}),this.debounceMS),this.pendingDebounce.push({resolve:t,reject:n})}))}checkTransformLegacyResults(e){if(!e.length)return[];const t=e[0];return t&&"object"!=typeof t.type?e.map((e=>({type:{name:e.type,displayName:e.category},id:e.id,displayName:e.displayName,description:e.description,iconURL:e.iconURL,action:e.action}))):e}}const MAIN_PROVIDER_METHOD_NAME="T42.Search.Provider",MAIN_CLIENT_METHOD_NAME="T42.Search.Client",SEQUELIZER_INTERVAL_MS=10,FLUSH_SEQUELIZER_INTERVAL_MS=10,FLUSH_TIMEOUT_MS=100,STALE_QUERY_TIMEOUT_MS=9e5;let GlueController$1=class{constructor(e){this.glue=e}get myAppName(){return this.glue.interop.instance.applicationName}get myInteropId(){return this.glue.interop.instance.instance}registerMainProviderMethod(e){return __awaiter$1(this,void 0,void 0,(function*(){this.checkMyMethodExists(MAIN_PROVIDER_METHOD_NAME).exists||(yield this.glue.interop.register(MAIN_PROVIDER_METHOD_NAME,e))}))}registerMainClientMethod(e){return __awaiter$1(this,void 0,void 0,(function*(){this.checkMyMethodExists(MAIN_CLIENT_METHOD_NAME).exists||(yield this.glue.interop.register(MAIN_CLIENT_METHOD_NAME,e))}))}clearMainProviderMethod(){return __awaiter$1(this,void 0,void 0,(function*(){yield this.glue.interop.unregister(MAIN_PROVIDER_METHOD_NAME)}))}sendClientResultsBatch(e,t,n){return __awaiter$1(this,void 0,void 0,(function*(){const r={items:e.results,provider:e.provider,queryId:n,status:SEARCH_QUERY_STATUSES.inProgress};yield this.glue.interop.invoke(MAIN_CLIENT_METHOD_NAME,r,{instance:t})}))}sendClientQueueCompleted(e,t){return __awaiter$1(this,void 0,void 0,(function*(){const n={items:[],queryId:t,status:SEARCH_QUERY_STATUSES.done};yield this.glue.interop.invoke(MAIN_CLIENT_METHOD_NAME,n,{instance:e})}))}sendClientErrorMessage(e,t,n,r){return __awaiter$1(this,void 0,void 0,(function*(){const i={items:[],provider:r,errorMessage:e,queryId:n,status:SEARCH_QUERY_STATUSES.error};yield this.glue.interop.invoke(MAIN_CLIENT_METHOD_NAME,i,{instance:t})}))}sendQueryRequest(e,t){return __awaiter$1(this,void 0,void 0,(function*(){if(!t.length)return[];const n=t.map((e=>({instance:e.interopId}))),r=Object.assign({operation:CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.search,apiVersion:"1"},e);return((yield this.glue.interop.invoke(MAIN_PROVIDER_METHOD_NAME,r,n)).all_return_values||[]).map((e=>{var t;return{interopId:null===(t=e.executed_by)||void 0===t?void 0:t.instance,queryId:e.returned.id}}))}))}sendQueryCancelRequest(e,t){return __awaiter$1(this,void 0,void 0,(function*(){const n={operation:CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.cancel,id:e.id};yield this.glue.interop.invoke(MAIN_PROVIDER_METHOD_NAME,n,t)}))}getAllProvidersInfo(){return __awaiter$1(this,void 0,void 0,(function*(){if(this.glue.interop.methods().every((e=>e.name!==MAIN_PROVIDER_METHOD_NAME)))return[];const e={operation:CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.info},t=yield this.glue.interop.invoke(MAIN_PROVIDER_METHOD_NAME,e,"all");return(t.all_return_values||[]).map((e=>{var n,r,i,o,l;const s=void 0===e.returned.apiVersion?{supportedTypes:e.returned.supportedTypes,apiVersion:e.returned.apiVersion,providers:[{interopId:null===(n=e.executed_by)||void 0===n?void 0:n.instance,id:null===(r=e.executed_by)||void 0===r?void 0:r.instance,name:null===(i=e.executed_by)||void 0===i?void 0:i.instance,appName:null===(o=t.executed_by)||void 0===o?void 0:o.application,types:e.returned.supportedTypes.map((e=>({name:e})))}]}:e.returned;return{interopId:null===(l=e.executed_by)||void 0===l?void 0:l.instance,info:s}}))}))}checkMyMethodExists(e){return{exists:this.glue.interop.methodsForInstance({instance:this.glue.interop.instance.instance}).some((t=>t.name===e))}}};class MainController{constructor(e,t,n,r){this.logger=e,this.glueController=t,this.clientController=n,this.providerController=r}setDebounceMS(e){this.logger.info(`[${e.commandId}] Starting setDebounceMS operation with duration ${e.milliseconds}`),this.clientController.setDebounceMS(e),this.logger.info(`[${e.commandId}] Operation setDebounceMS with duration ${e.milliseconds} completed`)}getDebounceMS(e){return this.logger.info(`[${e.commandId}] Starting getDebounceMS operation.`),this.clientController.getDebounceMS(e)}query(e){return __awaiter$1(this,void 0,void 0,(function*(){if(this.logger.info(`[${e.commandId}] Starting query operation with config ${JSON.stringify(e.queryConfig)}`),Array.isArray(e.queryConfig.providers)&&!e.queryConfig.providers.length)throw new Error("Cannot sent a query with a defined empty array of providers, because this is an impossible query for complete.");if(Array.isArray(e.queryConfig.types)&&!e.queryConfig.types.length)throw new Error("Cannot sent a query with a defined empty array of types, because this is an impossible query for complete.");const t=yield this.clientController.query(e);return this.logger.info(`[${e.commandId}] Operation query with config ${JSON.stringify(e.queryConfig)} completed.`),t}))}registerProvider(e){return __awaiter$1(this,void 0,void 0,(function*(){this.logger.info(`[${e.commandId}] Starting registerProvider operation with config ${JSON.stringify(e.config)}`);const t=yield this.providerController.processRegisterProvider(e);return this.logger.info(`[${e.commandId}] Operation registerProvider with config ${JSON.stringify(e.config)} completed.`),t}))}providers(e){return __awaiter$1(this,void 0,void 0,(function*(){this.logger.info(`[${e.commandId}] Starting providers operation.`);const t=(yield this.glueController.getAllProvidersInfo()).flatMap((e=>e.info.providers));return this.logger.info(`[${e.commandId}] Operation providers completed.`),t}))}types(e){return __awaiter$1(this,void 0,void 0,(function*(){this.logger.info(`[${e.commandId}] Starting types operation.`);const t=(yield this.glueController.getAllProvidersInfo()).flatMap((e=>e.info.providers)).filter((e=>!!e.types)).flatMap((e=>e.types)),n=[...new Set(t)];return this.logger.info(`[${e.commandId}] Operation types completed.`),n}))}}const extractErrorMsg=e=>"string"==typeof e?e:e.message?JSON.stringify(e.message):JSON.stringify(e);class ProviderController{constructor(e,t,n,r,i){this.logger=e,this.glueController=t,this.sequelizer=n,this.limitsTracker=r,this.modelsFactory=i,this.registry=lib$2(),this.providersModels={},this.activeQueries={}}processRegisterProvider(e){return __awaiter$1(this,void 0,void 0,(function*(){const{config:t,commandId:n}=e;this.logger.info(`[${n}] enqueueing the provider registration process with config: ${JSON.stringify(t)}`);const r=yield this.sequelizer.enqueue((()=>__awaiter$1(this,void 0,void 0,(function*(){if((yield this.glueController.getAllProvidersInfo()).flatMap((e=>e.info.providers)).some((e=>e&&e.name===t.name)))throw new Error(`Cannot register a new provider with name: ${t.name}, because there already is a provider with this name`);yield this.glueController.registerMainProviderMethod(this.handleSearchQueryRequest.bind(this));const e={id:nanoid$1(10),name:t.name,interopId:this.glueController.myInteropId,appName:this.glueController.myAppName,types:t.types},n=this.modelsFactory.buildProviderModel(e,this);return this.providersModels[e.id]=n,n.exposeFacade()}))));return this.logger.info(`[${n}] the provider with name: ${t.name} has been registered.`),r}))}processProviderOnQuery(e){return this.registry.add(`on-search-query-${e.id}`,e.callback)}processProviderOnQueryCancel(e){return this.registry.add(`on-cancel-query-${e.id}`,e.callback)}processProviderUnregister(e){return __awaiter$1(this,void 0,void 0,(function*(){this.logger.info(`[${e.commandId}] enqueueing the provider un-registration with id: ${e.id}`),yield this.sequelizer.enqueue((()=>__awaiter$1(this,void 0,void 0,(function*(){this.cleanUpProvider(e.id,e.commandId),Object.keys(this.providersModels).length||(yield this.glueController.clearMainProviderMethod())})))),this.logger.info(`[${e.commandId}] the provider un-registration with id: ${e.id} completed`)}))}processProviderQueryDone(e){var t;return __awaiter$1(this,void 0,void 0,(function*(){const{commandId:n,identification:r}=e;null===(t=this.activeQueries[r.queryId])||void 0===t||t.publisher.syncSuspendProvider(r.providerId,n),yield this.sequelizer.enqueue((()=>__awaiter$1(this,void 0,void 0,(function*(){this.logger.trace(`[${n}] Processing a query done command with identification: ${JSON.stringify(r)}`);const e=this.activeQueries[r.queryId];e?(yield this.cleanUpProviderQuery(r.queryId,r.providerId,n),e.providersAtWork.length?this.logger.trace(`[${n}] Query done command completed, but there are more providers still at work.`):(this.cleanUpQuery(r.queryId,n),this.logger.trace(`[${n}] Query is completed, signalling.`))):this.logger.warn(`[${n}] Cannot mark provider: ${r.providerId} done with query ${r.queryId}, because there is no active query with this id`)}))))}))}processProviderQueryError(e){var t;const{commandId:n,identification:r,error:i}=e;return this.logger.warn(`[${n}] Processing an error sent by provider: ${r.providerId} for query id: ${r.queryId} -> ${i}`),null===(t=this.activeQueries[r.queryId])||void 0===t||t.publisher.markProviderError(e),this.processProviderQueryDone(e)}processProviderQueryResult(e){const{commandId:t,identification:n}=e,r=this.activeQueries[n.queryId];if(!r){const t=`Will not send this result to the client, because there is no active query with id ${n.queryId}. Most likely this query was cancelled.`;throw this.logger.warn(`[${e}] ${t}`),new Error(t)}if(r.publisher.checkProviderSuspended(n.providerId)){const t=`Will not send this result to the client, because there is no info about this provider in the active query with id ${n.queryId}. Most likely this query was marked as done by this provider already.`;throw this.logger.warn(`[${e}] ${t}`),new Error(t)}const i=r.requestedTypes;if(i&&i.every((t=>t.name!==e.result.type.name))){const t=`Will not send this result to the client, because this result has a defined type: ${e.result.type.name} which is not in the explicitly requested list of types by the client.`;throw this.logger.warn(`[${e}] ${t}`),new Error(t)}const o=this.limitsTracker.testResultLimit(e);if(null==o?void 0:o.maxLimitHit){const t=`Will not process this result from provider ${e.identification.providerId}, because this provider has reached the max results limit set by the client. This provider cannot send more result, marking it as done.`;throw this.logger.info(t),setTimeout((()=>this.processProviderQueryDone(e)),0),new Error(t)}if(null==o?void 0:o.maxLimitPerTypeHit){const t=`Will not process this result from provider ${e.identification.providerId}, because this provider has reached the max results limit per type as set by the client.`;throw this.logger.info(t),new Error(t)}this.logger.trace(`[${t}] An active query for query ${n.queryId} was found and the provider is within limits, queueing the result`),this.limitsTracker.update(e),r.publisher.queueResult(e),this.logger.trace(`[${t}] The query result was queued successfully.`)}handleSearchQueryRequest(e,t){return __awaiter$1(this,void 0,void 0,(function*(){const{operation:n}=e,r=operationDecoder.runWithException(n),i=nanoid$1(10);switch(r){case CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.info:return this.handleInfoOperation({commandId:i});case CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.search:return this.handleSearchOperation({args:e,commandId:i},t);case CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.cancel:return this.handleCancelOperation({args:e,commandId:i});default:throw new Error(`Unrecognized operation: ${n}`)}}))}handleInfoOperation(e){return __awaiter$1(this,void 0,void 0,(function*(){this.logger.info(`[${e.commandId}] handling an info operation`);const t=Object.values(this.providersModels).flatMap((e=>e.myProviderData.types||[])),n=[...new Set(t)];Object.values(this.providersModels).some((e=>!e.myProviderData.types))&&n.push({name:"*"});const r=Object.values(this.providersModels).map((e=>e.myProviderData)),i={supportedTypes:n.map((e=>e.name)),providers:r,apiVersion:"1"};return this.logger.info(`[${e.commandId}] responding to an info operation with: ${JSON.stringify(i)}`),i}))}handleSearchOperation(e,t){return __awaiter$1(this,void 0,void 0,(function*(){const n=e.commandId,r=this.generateQueryId();this.logger.info(`[${n}] Processing search operation with queryId: ${r} request details: ${JSON.stringify(e.args)}`);const i=this.checkRequestLegacy(e.args),o=this.prepareRequest(e.args,i,n);return this.logger.info(`[${n}] Search operation with queryId: ${r} is validated. Creating an active query and enqueueing calling the providers.`),this.activeQueries[r]={queryId:r,callerInstanceId:t.instance,providersAtWork:[],requestedTypes:o.types,publisher:this.modelsFactory.buildPublisher(t.instance,r,i),staleTimer:this.setClearStaleQueryTimer(r)},o.providerLimits&&this.limitsTracker.enableTracking(o.providerLimits,r),setTimeout((()=>{this.sequelizer.enqueue((()=>__awaiter$1(this,void 0,void 0,(function*(){try{this.logger.info(`[${n}] Calling the providers.`),this.callProviders(o,r,n)}catch(e){this.logger.error(`[${n}] Error calling the providers: ${extractErrorMsg(e)}`)}}))))}),0),this.logger.info(`[${n}] Search operation with queryID: ${r} processed successfully.`),{id:r}}))}handleCancelOperation(e){return __awaiter$1(this,void 0,void 0,(function*(){yield this.sequelizer.enqueue((()=>__awaiter$1(this,void 0,void 0,(function*(){const t=searchCancelRequestDecoder.run(e.args);if(!t.ok){const n=`Cannot process a cancel request, because of validation error: ${JSON.stringify(t.error)}`;throw this.logger.warn(`[${e.commandId}] ${n}`),new Error(n)}const n=t.result,r=this.activeQueries[n.id];r&&(clearTimeout(r.staleTimer),r.publisher.cancel(e.commandId),delete this.activeQueries[n.id],r.providersAtWork.forEach((e=>this.registry.execute(`on-cancel-query-${e.myProviderData.id}`,{id:n.id}))))}))))}))}generateQueryId(){const e=nanoid$1(10);return this.activeQueries[e]?this.generateQueryId():e}translateLegacySearchRequest(e){var t;return{search:e.search,types:null===(t=e.types)||void 0===t?void 0:t.map((e=>({name:e}))),providerLimits:{maxResults:e.limit,maxResultsPerType:e.categoryLimit}}}checkRequestLegacy(e){return void 0===e.apiVersion}callProviders(e,t,n){let r=e.providers?this.getFilteredProviderModels(e.providers):Object.values(this.providersModels);this.logger.trace(`[${n}] initial providers filtration yielded: ${JSON.stringify(r.map((e=>e.myProviderData.name)).join(", "))}`),r=e.types?this.getFilteredProvidersBySearchTypes(r,e.types):r,this.logger.trace(`[${n}] search type providers filtration yielded: ${JSON.stringify(r.map((e=>e.myProviderData.name)).join(", "))}`),this.activeQueries[t].publisher.configureProviders(r),this.activeQueries[t].providersAtWork.push(...r),r.forEach((r=>this.callProvider(r,e,t,n)))}callProvider(e,t,n,r){const i=this.modelsFactory.buildProviderQueryModel(t,{queryId:n,providerId:e.myProviderData.id},this).exposeFacade();this.logger.info(`[${r}] The query facade for provider: ${e.myProviderData.id} with name ${e.myProviderData.name} is ready, raising the event for query ID: ${n}.`),this.registry.execute(`on-search-query-${e.myProviderData.id}`,i)}getFilteredProviderModels(e){const t=e.reduce(((e,t)=>(this.providersModels[t.id]&&e.push(this.providersModels[t.id]),e)),[]);return t}getFilteredProvidersBySearchTypes(e,t){return e.filter((e=>{var n;return!e.myProviderData.types||!e.myProviderData.types.length||(null===(n=e.myProviderData.types)||void 0===n?void 0:n.some((e=>t.some((t=>t.name===e.name)))))}))}setClearStaleQueryTimer(e){return setTimeout((()=>{const t=nanoid$1(10);this.logger.info(`[${t}] Stale query timer is activated for queryId: ${e}`);this.activeQueries[e]?(this.logger.info(`[${t}] force-marking the query as done`),this.cleanUpQuery(e,t),this.logger.info(`[${t}] the stale query was cleared.`)):this.logger.info(`[${t}] No active query was found, this was a false activation.`)}),STALE_QUERY_TIMEOUT_MS)}prepareRequest(e,t,n){const r=t?this.translateLegacySearchRequest(e):e,i=queryConfigDecoder.run(r);if(!i.ok){const e=`Cannot process a search request, because of validation error: ${JSON.stringify(i.error)}`;throw this.logger.warn(`[${n}] ${e}`),new Error(e)}return i.result}cleanUpQuery(e,t){const n=this.activeQueries[e];clearTimeout(n.staleTimer),n.publisher.cleanPublisher(t),delete this.activeQueries[e],this.limitsTracker.cleanTracking(e)}cleanUpProvider(e,t){this.registry.clearKey(`on-search-query-${e}`),this.registry.clearKey(`on-cancel-query-${e}`),delete this.providersModels[e];Object.values(this.activeQueries).filter((t=>!t.publisher.checkProviderSuspended(e))).forEach((n=>{this.processProviderQueryDone({identification:{queryId:n.queryId,providerId:e},commandId:t})}))}cleanUpProviderQuery(e,t,n){return __awaiter$1(this,void 0,void 0,(function*(){const r=this.activeQueries[e];r?(r.providersAtWork=r.providersAtWork.filter((e=>e.myProviderData.id!==t)),yield r.publisher.markProviderDone(t,n)):this.logger.warn(`[${n}] Cannot clean up a provider query ${e} for provider ${t} because there is no such active query`)}))}}var version$3="2.2.0";class SearchFacade{constructor(e){this.main=e}exposeApi(){const e={version:version$3,setDebounceMS:this.setDebounceMS.bind(this),getDebounceMS:this.getDebounceMS.bind(this),listProviders:this.providers.bind(this),listTypes:this.types.bind(this),query:this.query.bind(this),registerProvider:this.registerProvider.bind(this)};return Object.freeze(e)}setDebounceMS(e){nonNegativeNumberDecoder.runWithException(e);const t=nanoid$1(10);return this.main.setDebounceMS({milliseconds:e,commandId:t})}getDebounceMS(){const e=nanoid$1(10);return this.main.getDebounceMS({commandId:e})}providers(){return __awaiter$1(this,void 0,void 0,(function*(){const e=nanoid$1(10);return this.main.providers({commandId:e})}))}types(){return __awaiter$1(this,void 0,void 0,(function*(){const e=nanoid$1(10);return this.main.types({commandId:e})}))}query(e){return __awaiter$1(this,void 0,void 0,(function*(){const t=queryConfigDecoder.runWithException(e),n=nanoid$1(10);return this.main.query({queryConfig:t,commandId:n})}))}registerProvider(e){return __awaiter$1(this,void 0,void 0,(function*(){const t=providerRegistrationConfig.runWithException(e),n=nanoid$1(10);return this.main.registerProvider({config:t,commandId:n})}))}}let AsyncSequelizer$2=class{constructor(e=0){this.minSequenceInterval=e,this.queue=[],this.isExecutingQueue=!1}enqueue(e){return new Promise(((t,n)=>{this.queue.push({action:e,resolve:t,reject:n}),this.executeQueue()}))}executeQueue(){return __awaiter$1(this,void 0,void 0,(function*(){if(!this.isExecutingQueue){for(this.isExecutingQueue=!0;this.queue.length;){const e=this.queue.shift();if(!e)return void(this.isExecutingQueue=!1);try{const t=yield e.action();e.resolve(t)}catch(t){e.reject(t)}yield this.intervalBreak()}this.isExecutingQueue=!1}}))}intervalBreak(){return new Promise((e=>setTimeout(e,this.minSequenceInterval)))}};class LimitsTracker{constructor(){this.limitsLookup={},this.limitsData={}}enableTracking(e,t){this.limitsLookup[t]={},this.limitsData[t]={maxResults:e.maxResults?e.maxResults:Number.MAX_SAFE_INTEGER,maxResultsPerType:e.maxResultsPerType?e.maxResultsPerType:Number.MAX_SAFE_INTEGER}}testResultLimit(e){const t=this.limitsLookup[e.identification.queryId],n=this.limitsData[e.identification.queryId];if(!t||!n)return;let r=t[e.identification.providerId];if(r||(r={total:0},t[e.identification.providerId]=r),r.total+1>n.maxResults)return{maxLimitHit:!0};const i=e.result.type.name;if(!i)return;return(r[i]||0)+1>n.maxResultsPerType?{maxLimitPerTypeHit:!0}:void 0}update(e){const t=this.limitsLookup[e.identification.queryId],n=this.limitsData[e.identification.queryId];if(!t||!n)return;const r=t[e.identification.providerId];r.total+=1;const i=e.result.type.name;i&&(r[i]=r[i]?r[i]+1:1)}cleanTracking(e){delete this.limitsLookup[e],delete this.limitsData[e]}}class ClientQuery{constructor(e,t,n){this.controller=e,this.logger=t,this.masterQueryId=n}exposeFacade(){const e={cancel:this.cancel.bind(this),onResults:this.onResults.bind(this),onCompleted:this.onCompleted.bind(this),onError:this.onError.bind(this)};return Object.freeze(e)}cancel(){return __awaiter$1(this,void 0,void 0,(function*(){const e=nanoid$1(10);this.logger.info(`[${e}] received a valid query cancel request, forwarding to the controller.`),yield this.controller.cancelQuery(this.masterQueryId,e),this.logger.info(`[${e}] the cancel request was completed.`)}))}onResults(e){if("function"!=typeof e)throw new Error("onQuery requires a callback of type function");const t=nanoid$1(10);this.logger.info(`[${t}] received a valid query onResults request, forwarding to the controller.`);const n=this.controller.processClientOnResults({callback:e,masterQueryId:this.masterQueryId,commandId:t});return this.logger.info(`[${t}] the onResults request was completed.`),n}onCompleted(e){if("function"!=typeof e)throw new Error("onQuery requires a callback of type function");const t=nanoid$1(10);this.logger.info(`[${t}] received a valid query onCompleted request, forwarding to the controller.`);const n=this.controller.processClientOnCompleted({callback:e,masterQueryId:this.masterQueryId,commandId:t});return this.logger.info(`[${t}] the onCompleted request was completed.`),n}onError(e){if("function"!=typeof e)throw new Error("onQuery requires a callback of type function");const t=nanoid$1(10);this.logger.info(`[${t}] received a valid query onError request, forwarding to the controller.`);const n=this.controller.processClientOnError({callback:e,masterQueryId:this.masterQueryId,commandId:t});return this.logger.info(`[${t}] the onError request was completed.`),n}}class ProviderModel{constructor(e,t,n){this.myData=e,this.controller=t,this.logger=n}get id(){return this.myData.id}get name(){return this.myData.name}get appName(){return this.myData.appName}get types(){return this.myData.types}get myProviderData(){return Object.assign({},this.myData)}exposeFacade(){const e={interopId:this.myData.interopId,id:this.id,name:this.name,appName:this.appName,types:this.types,onQuery:this.onQuery.bind(this),onQueryCancel:this.onQueryCancel.bind(this),unregister:this.unregister.bind(this)};return Object.freeze(e)}onQuery(e){if("function"!=typeof e)throw new Error("onQuery requires a callback of type function");const t=nanoid$1(10);this.logger.info(`[${t}] received a valid onQuery request, forwarding to the controller.`);const n=this.controller.processProviderOnQuery({callback:e,id:this.id,commandId:t});return this.logger.info(`[${t}] the onQuery request was completed.`),n}onQueryCancel(e){if("function"!=typeof e)throw new Error("onQuery requires a callback of type function");const t=nanoid$1(10);this.logger.info(`[${t}] received a valid onQueryCancel request, forwarding to the controller.`);const n=this.controller.processProviderOnQueryCancel({callback:e,id:this.id,commandId:t});return this.logger.info(`[${t}] the onQueryCancel request was completed.`),n}unregister(){return __awaiter$1(this,void 0,void 0,(function*(){const e=nanoid$1(10);this.logger.info(`[${e}] received a valid unregister request, forwarding to the controller.`),yield this.controller.processProviderUnregister({id:this.id,commandId:e}),this.logger.info(`[${e}] the unregister request was completed.`)}))}}class ProviderQueryModel{constructor(e,t,n,r){this.myData=e,this.controller=t,this.logger=n,this.identification=r}get id(){return this.identification.queryId}get search(){return this.myData.search}get providers(){return this.myData.providers}get types(){return this.myData.types}get providerLimits(){return this.myData.providerLimits}get myQueryData(){return Object.assign({},this.myData)}exposeFacade(){const e={id:this.id,search:this.search,providers:this.providers,types:this.types,providerLimits:this.providerLimits,sendResult:this.sendResult.bind(this),error:this.error.bind(this),done:this.done.bind(this)};return Object.freeze(e)}sendResult(e){queryResultDecoder.runWithException(e);const t=nanoid$1(10);return this.logger.trace(`[${t}] Received a valid result, forwarding to the controller`),this.controller.processProviderQueryResult({identification:this.identification,result:e,commandId:t})}error(e){const t=nanoid$1(10);nonEmptyStringDecoder.runWithException(e),this.logger.trace(`[${t}] Received a valid error, forwarding to the controller`),this.controller.processProviderQueryError({identification:this.identification,error:e,commandId:t}).catch((e=>this.logger.warn(`Error processing the error signal for this provider: ${this.id}, error: ${extractErrorMsg(e)}`)))}done(){const e=nanoid$1(10);this.logger.trace(`[${e}] Received a valid done, forwarding to the controller`),this.controller.processProviderQueryDone({identification:this.identification,commandId:e}).catch((e=>this.logger.warn(`Error processing the done signal for this provider: ${this.identification.providerId}, error: ${extractErrorMsg(e)}`)))}}class QueryResultsPublisher{constructor(e,t,n,r,i,o){this.sequelizer=e,this.glueController=t,this.logger=n,this.clientInstanceId=r,this.queryId=i,this.isLegacy=o,this.queues={}}checkProviderSuspended(e){return!!this.queues[e]&&!!this.queues[e].suspended}syncSuspendProvider(e,t){const n=this.queues[e];n?n.suspended=!0:this.logger.warn(`[${t}] Cannot suspend provider: ${e}, because there is no provider queue. This happens when the provider queue was already cancelled or completed`)}configureProviders(e){e.forEach((e=>{this.queues[e.myProviderData.id]={providerData:e,pendingResults:[]}}))}queueResult(e){const{commandId:t,identification:n}=e;this.logger.trace(`[${t}] Queuing a new result from provider: ${n.providerId}`);const r=this.queues[n.providerId];if(!r)return void this.logger.warn(`[${t}] Cannot queue this result, because there is no provider queue. This happens when the provider queue was already cancelled or completed`);const i=this.isLegacy?this.translateLegacySearchItem(e.result):e.result;if(r.pendingResults.push(i),clearTimeout(r.flushTimer),10===r.pendingResults.length)return this.logger.trace(`[${t}] Reached the limit in the queue buffer, flushing to the client.`),void this.flushProviderQueue(n.providerId,t);this.logger.trace(`[${t}] The limit in the queue buffer is not reached yet, setting a flush timer.`),r.flushTimer=setTimeout((()=>{this.logger.trace(`[${t}] Reached the time limit in the queue buffer, flushing to the client.`),this.flushProviderQueue(n.providerId,t)}),FLUSH_TIMEOUT_MS)}cancel(e){this.logger.trace(`[${e}] Cancelling queue ${this.queryId}.`),Object.values(this.queues).forEach((e=>clearTimeout(e.flushTimer))),this.queues={},this.logger.trace(`[${e}] Queue ${this.queryId} publisher cancelled.`)}markProviderDone(e,t){return __awaiter$1(this,void 0,void 0,(function*(){this.logger.trace(`[${t}] Marking provider ${e} as done.`);const n=this.queues[e];n?(clearTimeout(n.flushTimer),yield this.flushProviderQueue(e,t),delete this.queues[e],this.logger.trace(`[${t}] Provider ${e} marked as done.`)):this.logger.info(`[${t}] Cannot mark this queue as done, because there is no provider queue. This happens when the provider queue was already cancelled, completed or the provider sent an error`)}))}markProviderError(e){const t=this.queues[e.identification.providerId];t?this.glueController.sendClientErrorMessage(e.error,this.clientInstanceId,this.queryId,t.providerData.myProviderData).catch((t=>this.logger.warn(`[${e.commandId}] The client errored when handling error message for query: ${this.queryId} -> ${extractErrorMsg(t)}`))):this.logger.warn(`[${e.commandId}] Cannot mark this provider as errored, because there is no provider queue. This happens when the provider queue was already cancelled, completed or the provider sent and error`)}cleanPublisher(e){Object.values(this.queues).forEach((e=>clearTimeout(e.flushTimer))),this.queues={},this.glueController.sendClientQueueCompleted(this.clientInstanceId,this.queryId).catch((t=>this.logger.warn(`[${e}] The client errored when handling search end message for query: ${this.queryId} -> ${extractErrorMsg(t)}`)))}flushProviderQueue(e,t){return __awaiter$1(this,void 0,void 0,(function*(){yield this.sequelizer.enqueue((()=>__awaiter$1(this,void 0,void 0,(function*(){const n=this.queues[e];if(!n)return void this.logger.warn(`[${t}] Cannot flush this queue, because there is no provider queue. This happens when the provider queue was already cancelled, completed or the provider sent and error`);if(!n.pendingResults.length)return void this.logger.info(`[${t}] This provider does not have any pending results to flush.`);const r={results:n.pendingResults,provider:n.providerData.myProviderData};n.pendingResults=[];try{yield this.glueController.sendClientResultsBatch(r,this.clientInstanceId,this.queryId)}catch(e){this.logger.warn(`[${t}] The client errored when handling search results for query: ${this.queryId} -> ${extractErrorMsg(e)}`)}}))))}))}translateLegacySearchItem(e){return{type:e.type.name,category:e.type.displayName,id:e.id,displayName:e.displayName,description:e.description,iconURL:e.iconURL,action:e.action}}}class ModelFactory{constructor(e,t,n){this.glueController=e,this.glue=t,this.flushSequelizer=n}buildProviderModel(e,t){return new ProviderModel(e,t,this.glue.logger.subLogger(`search.provider.model.${e.name}`))}buildProviderQueryModel(e,t,n){return new ProviderQueryModel(e,n,this.glue.logger.subLogger(`search.provider.${t.providerId}.query.${t.queryId}`),t)}buildPublisher(e,t,n){return new QueryResultsPublisher(this.flushSequelizer,this.glueController,this.glue.logger.subLogger(`search.results.publisher.${t}`),e,t,n)}buildClientQueryModel(e,t){return new ClientQuery(t,this.glue.logger.subLogger(`search.provider.model.${e}`),e)}}let IoC$1=class{constructor(e,t){this.glue=e,this.config=t}get glueController(){return this._glueController||(this._glueController=new GlueController$1(this.glue)),this._glueController}get main(){return this._mainController||(this._mainController=new MainController(this.glue.logger.subLogger("search.main.controller"),this.glueController,this.clientController,this.providerController)),this._mainController}get clientController(){return this._clientController||(this._clientController=new ClientController(this.glue.logger.subLogger("search.client.controller"),this.glueController,this.modelFactory)),this._clientController}get providerController(){return this._providerController||(this._providerController=new ProviderController(this.glue.logger.subLogger("search.provider.controller"),this.glueController,this.sequelizer,this.limitsTracker,this.modelFactory)),this._providerController}get facade(){return this._facade||(this._facade=new SearchFacade(this.main)),this._facade}get sequelizer(){return this._asyncSequelizer||(this._asyncSequelizer=new AsyncSequelizer$2(SEQUELIZER_INTERVAL_MS)),this._asyncSequelizer}get flushSequelizer(){return this._flushSequelizer||(this._flushSequelizer=new AsyncSequelizer$2(FLUSH_SEQUELIZER_INTERVAL_MS)),this._flushSequelizer}get limitsTracker(){return this._limitsTracker||(this._limitsTracker=new LimitsTracker),this._limitsTracker}get modelFactory(){return this._modelFactory||(this._modelFactory=new ModelFactory(this.glueController,this.glue,this.flushSequelizer)),this._modelFactory}};const factoryFunction=(e,t)=>__awaiter$1(void 0,void 0,void 0,(function*(){const n=new IoC$1(e,t);e.search=n.facade.exposeApi()}));"undefined"!=typeof window&&(window.IOSearch=factoryFunction);let nanoid=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce(((e,t)=>e+=(t&=63)<36?t.toString(36):t<62?(t-26).toString(36).toUpperCase():t>62?"-":"_"),"");class Platform{constructor(e,t,n,r){this.controller=e,this.session=t,this.localStorage=n,this.config=r}ready(){return __awaiter$7(this,void 0,void 0,(function*(){this.session.start(),this.checkSingleton(),this.processConfig(this.config),yield this.controller.start(this.platformConfig)}))}getClientGlue(){return this.controller.getClientGlue()}getPlatformApi(){return this.controller.platformApi}checkSingleton(){const e=window.glue42core||window.iobrowser;if(e&&e.platformStarted)throw new Error("The Glue42 Core Platform has already been started for this application.")}processConfig(e){var t,n,r,i,o,l;if(!e)throw new Error("Cannot start the IoConnect Browser Platform without a config object.");const s=platformConfigDecoder.runWithException(e);this.addSearch(s),this.validatePlugins(s),this.platformConfig=deepMerge(defaultPlatformConfig,s);const a=deepMerge(defaultNotificationsConfig,s.notifications||{}),u=this.session.getSystemSettings()||{systemInstanceId:nanoid(),ctxTrackInstanceId:nanoid()};this.session.setSystemSettings(u),this.localStorage.start(this.platformConfig.user);const c=this.localStorage.getNotificationsConfig()||a;this.localStorage.setNotificationsConfig(c),this.platformConfig.workspacesFrameCache="boolean"!=typeof(null===(t=s.workspaces)||void 0===t?void 0:t.frameCache)||(null===(n=s.workspaces)||void 0===n?void 0:n.frameCache),this.transferPromiseObjects(s);const h={isPlatformFrame:!!(null===(r=s.workspaces)||void 0===r?void 0:r.isFrame),initAsEmptyFrame:!!(null===(i=s.workspaces)||void 0===i?void 0:i.initAsEmpty),workspacesFrameCache:this.platformConfig.workspacesFrameCache,platformStarted:!0,environment:Object.assign({},this.platformConfig.environment,{extension:void 0}),communicationId:u.systemInstanceId,workspaces:{frameCache:this.platformConfig.workspacesFrameCache,isPlatform:!!(null===(o=s.workspaces)||void 0===o?void 0:o.isFrame),initAsEmpty:!!(null===(l=s.workspaces)||void 0===l?void 0:l.initAsEmpty)}};window.iobrowser=h}transferPromiseObjects(e){var t;if(void 0!==(null===(t=e.serviceWorker)||void 0===t?void 0:t.registrationPromise)&&(this.platformConfig.serviceWorker.registrationPromise=e.serviceWorker.registrationPromise),e.plugins&&e.plugins.definitions.length){e.plugins.definitions.forEach((e=>{var t;const n=null===(t=this.platformConfig.plugins)||void 0===t?void 0:t.definitions.find((t=>t.name===e.name));n&&(n.config=e.config)}))}}validatePlugins(e){var t;if(!(null===(t=e.plugins)||void 0===t?void 0:t.definitions))return;const n=e.plugins.definitions.reduce(((e,t)=>{const n=typeof t.start,r=typeof t.stop,i=t.name;return("function"!==n||t.stop&&"function"!==r)&&e.push({name:i,startType:n,stopType:r}),e}),[]);if(n.length){const e=n.map((e=>`The start and stop functions for plugin ${e.name} were expected to be of type function, but was provided start: ${e.startType} and stop: ${e.stopType}`)).join("\n");throw new Error(e)}}addSearch(e){e.browser?e.browser.libraries?e.browser.libraries.push(factoryFunction):e.browser.libraries||(e.browser.libraries=[factoryFunction]):e.browser={libraries:[factoryFunction]}}}var extendStatics=function(e,t){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},extendStatics(e,t)};function __extends(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}extendStatics(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var __assign=function(){return __assign=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==s[0]&&2!==s[0])){l=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&"/"!==e[0]?"/"+e:e}function getMetricValueByType(e){return"timestamp"===getMetricTypeByValue(e)?Date.now():publishNestedComposite(e.value)}function publishNestedComposite(e){return"object"!=typeof e?e:Object.keys(e).reduce((function(t,n){var r=e[n];return"object"==typeof r&&r.constructor!==Date?t[n]=publishNestedComposite(r):r.constructor===Date?t[n]=new Date(r).getTime():r.constructor===Boolean?t[n]=r.toString():t[n]=r,t}),{})}function flatten(e){return e.reduce((function(e,t){return e.concat(Array.isArray(t)?flatten(t):t)}),[])}function getHighestState(e){return e.sort((function(e,t){return e.state?t.state?t.state-e.state:-1:1}))[0]}function aggregateDescription(e){var t="";return e.forEach((function(e,n,r){var i=e.path.join(".");n===r.length-1?t+=i+"."+e.name+": "+e.description:t+=i+"."+e.name+": "+e.description+","})),t.length>100?t.slice(0,100)+"...":t}function composeMsgForRootStateMetric(e){var t=flatten(e.root.getAggregateState()),n=getHighestState(t);return{description:aggregateDescription(t),value:n.state}}function gw3(e,t){var n,r,i=this;if(!e||"object"!=typeof e)throw new Error("Connection is required parameter");var o=function(e){l(e.root)},l=function(e){s(e),e.metrics.forEach((function(e){a(e)})),e.subSystems.forEach((function(e){l(e)}))},s=function(e){return __awaiter(i,void 0,void 0,(function(){var t,i;return __generator(this,(function(o){switch(o.label){case 0:return void 0===e.parent?[2]:[4,n];case 1:return o.sent(),t={name:normalizeMetricName(e.path.join("/")+"/"+e.name+"/State"),type:"object",composite:{Description:{type:"string",description:""},Value:{type:"number",description:""}},description:"System state",context:{}},i={type:"define",metrics:[t]},r.send(i),[2]}}))}))},a=function(e){return __awaiter(i,void 0,void 0,(function(){var t,i,o;return __generator(this,(function(l){switch(l.label){case 0:return t=c(e),[4,n];case 1:return l.sent(),i=serializeMetric(t),o={type:"define",metrics:[i]},r.send(o),void 0!==t.value&&u(t),[2]}}))}))},u=function(e){if(h()){var t=getMetricValueByType(e),n={type:"publish",values:[{name:normalizeMetricName(e.path.join("/")+"/"+e.name),value:t,timestamp:Date.now()}]};return r.sendFireAndForget(n)}return Promise.resolve()},c=function(e){var t=__assign({},e);return"object"==typeof e.value&&null!==e.value&&(t.value=__assign({},e.value)),t},h=function(){var e;try{return(null!==(e=t.canUpdateMetric)&&void 0!==e?e:function(){return!0})()}catch(e){return!0}};return{init:function(i){var l;n=new Promise((function(e){l=e})),(r=e.domain("metrics")).onJoined((function(e){!e&&l&&(l(),l=void 0);var t={type:"define",metrics:[{name:"/State",type:"object",composite:{Description:{type:"string",description:""},Value:{type:"number",description:""}},description:"System state",context:{}}]};r.send(t),e&&o(i)})),r.join({system:t.system,service:t.service,instance:t.instance})},createSystem:s,updateSystem:function(t,o){return __awaiter(i,void 0,void 0,(function(){var i,l,s;return __generator(this,(function(a){switch(a.label){case 0:return[4,n];case 1:return a.sent(),i={type:"publish",values:[{name:normalizeMetricName(t.path.join("/")+"/"+t.name+"/State"),value:{Description:o.description,Value:o.state},timestamp:Date.now()}]},r.send(i),l=composeMsgForRootStateMetric(t),s={type:"publish",peer_id:e.peerId,values:[{name:"/State",value:{Description:l.description,Value:l.value},timestamp:Date.now()}]},r.send(s),[2]}}))}))},createMetric:a,updateMetric:function(e){return __awaiter(i,void 0,void 0,(function(){var t;return __generator(this,(function(r){switch(r.label){case 0:return t=c(e),[4,n];case 1:return r.sent(),u(t),[2]}}))}))}}}var Helpers={validate:function(e,t,n){if(null===e||"object"!=typeof e)throw new Error("Missing definition");if(null===t||"object"!=typeof t)throw new Error("Missing parent");if(null===n||"object"!=typeof n)throw new Error("Missing transport")}},BaseMetric=function(){function e(e,t,n,r,i){this.definition=e,this.system=t,this.transport=n,this.value=r,this.type=i,this.path=[],Helpers.validate(e,t,n),this.path=t.path.slice(0),this.path.push(t.name),this.name=e.name,this.description=e.description,n.createMetric(this)}return Object.defineProperty(e.prototype,"repo",{get:function(){var e;return null===(e=this.system)||void 0===e?void 0:e.repo},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return"".concat(this.system.path,"/").concat(name)},enumerable:!1,configurable:!0}),e.prototype.update=function(e){return this.value=e,this.transport.updateMetric(this)},e}(),NumberMetric=function(e){function t(t,n,r,i){return e.call(this,t,n,r,i,MetricTypes.NUMBER)||this}return __extends(t,e),t.prototype.incrementBy=function(e){this.update(this.value+e)},t.prototype.increment=function(){this.incrementBy(1)},t.prototype.decrement=function(){this.incrementBy(-1)},t.prototype.decrementBy=function(e){this.incrementBy(-1*e)},t}(BaseMetric),ObjectMetric=function(e){function t(t,n,r,i){return e.call(this,t,n,r,i,MetricTypes.OBJECT)||this}return __extends(t,e),t.prototype.update=function(e){return this.mergeValues(e),this.transport.updateMetric(this)},t.prototype.mergeValues=function(e){var t=this;return Object.keys(this.value).forEach((function(n){void 0!==e[n]&&(t.value[n]=e[n])}))},t}(BaseMetric),StringMetric=function(e){function t(t,n,r,i){return e.call(this,t,n,r,i,MetricTypes.STRING)||this}return __extends(t,e),t}(BaseMetric),TimestampMetric=function(e){function t(t,n,r,i){return e.call(this,t,n,r,i,MetricTypes.TIMESTAMP)||this}return __extends(t,e),t.prototype.now=function(){this.update(new Date)},t}(BaseMetric);function system(e,t,n,r,i){if(!t)throw new Error("Repository is required");if(!n)throw new Error("Transport is required");var o,l,s=n,a=e,u=i||"",c=t,h=r,d=function e(t){if(!t||!t.parent)return[];var n=e(t.parent);return n.push(t.name),n}(r),f={},p=(l="/",((o=d)&&o.length>0?o.join(l):"")+e),g=t.root,w=[],m=[];function v(e,t,n,r){var i={name:""};i="string"==typeof e?{name:e}:e;var o=m.filter((function(e){return e.name===i.name}));if(o.length>0){var l=o[0];if(l.type!==t)throw new Error("A metric named ".concat(i.name," is already defined with different type."));return void 0!==n&&l.update(n).catch((function(){})),l}var s=r(i);return m.push(s),s}var y={get name(){return a},get description(){return u},get repo(){return c},get parent(){return h},path:d,id:p,root:g,get subSystems(){return w},get metrics(){return m},subSystem:function(e,t){if(!e||0===e.length)throw new Error("name is required");var n=w.filter((function(t){return t.name===e}));if(n.length>0)return n[0];var r=system(e,c,s,y,t);return w.push(r),r},getState:function(){return f},setState:function(e,t){f={state:e,description:t},s.updateSystem(y,f)},stringMetric:function(e,t){return v(e,MetricTypes.STRING,t,(function(e){return new StringMetric(e,y,s,t)}))},timestampMetric:function(e,t){return v(e,MetricTypes.TIMESTAMP,t,(function(e){return new TimestampMetric(e,y,s,t)}))},objectMetric:function(e,t){return v(e,MetricTypes.OBJECT,t,(function(e){return new ObjectMetric(e,y,s,t)}))},numberMetric:function(e,t){return v(e,MetricTypes.NUMBER,t,(function(e){return new NumberMetric(e,y,s,t)}))},getAggregateState:function(){var e=[];return Object.keys(f).length>0&&e.push({name:a,path:d,state:f.state,description:f.description}),w.forEach((function(t){var n=t.getAggregateState();n.length>0&&e.push.apply(e,n)})),e}};return s.createSystem(y),y}var Repository=function(){function e(e,t){t.init(this),this.root=system("",this,t),this.addSystemMetrics(this.root,e.clickStream||void 0===e.clickStream)}return e.prototype.addSystemMetrics=function(e,t){if("undefined"!=typeof navigator&&e.stringMetric("UserAgent",navigator.userAgent),t&&"undefined"!=typeof document){var n=e.subSystem("ClickStream"),r=function(e){var t;if(e.target){var r=e.target,i=r&&null!==(t=r.getAttribute("class"))&&void 0!==t?t:"";n.objectMetric("LastBrowserEvent",{type:"click",timestamp:new Date,target:{className:i,id:r.id,type:"<"+r.tagName.toLowerCase()+">",href:r.href||""}})}};n.objectMetric("Page",{title:document.title,page:window.location.href}),document.addEventListener?document.addEventListener("click",r):document.attachEvent("onclick",r)}e.stringMetric("StartTime",(new Date).toString());var i=e.stringMetric("StartURL",""),o=e.stringMetric("AppName","");if("undefined"!=typeof window){if(void 0!==window.location){var l=window.location.href;i.update(l)}void 0!==window.glue42gd&&o.update(window.glue42gd.appName)}},e}(),NullProtocol=function(){function e(){}return e.prototype.init=function(e){},e.prototype.createSystem=function(e){return Promise.resolve()},e.prototype.updateSystem=function(e,t){return Promise.resolve()},e.prototype.createMetric=function(e){return Promise.resolve()},e.prototype.updateMetric=function(e){return Promise.resolve()},e}(),PerfTracker=function(){function e(e,t,n){this.api=e,this.lastCount=0,this.initialPublishTimeout=1e4,this.publishInterval=6e4,this.initialPublishTimeout=null!=t?t:this.initialPublishTimeout,this.publishInterval=null!=n?n:this.publishInterval,this.scheduleCollection(),this.system=this.api.subSystem("performance","Performance data published by the web application")}return e.prototype.scheduleCollection=function(){var e=this;setTimeout((function(){e.collect(),setInterval((function(){e.collect()}),e.publishInterval)}),this.initialPublishTimeout)},e.prototype.collect=function(){try{this.collectMemory(),this.collectEntries()}catch(e){}},e.prototype.collectMemory=function(){var e=window.performance.memory;this.system.stringMetric("memory",JSON.stringify({totalJSHeapSize:e.totalJSHeapSize,usedJSHeapSize:e.usedJSHeapSize}))},e.prototype.collectEntries=function(){var e=window.performance.getEntries();if(!(e.length<=this.lastCount)){this.lastCount=e.length;var t=e.map((function(e){return e.toJSON()}));this.system.stringMetric("entries",JSON.stringify(t))}},e}(),metrics=function(e){var t;t=e.connection&&"object"==typeof e.connection?gw3(e.connection,e):new NullProtocol;var n=new Repository(e,t).root;e.disableAutoAppSystem||(n=n.subSystem("App"));var r=addFAVSupport(n);return initPerf(r,e.pagePerformanceMetrics),r};function initPerf(e,t){var n,r;if("undefined"!=typeof window){var i=null===(r=null===(n=null===window||void 0===window?void 0:window.glue42gd)||void 0===n?void 0:n.metrics)||void 0===r?void 0:r.pagePerformanceMetrics;i&&(t=i),(null==t?void 0:t.enabled)&&new PerfTracker(e,t.initialPublishTimeout,t.publishInterval)}}function addFAVSupport(e){var t,n=e.subSystem("reporting"),r={name:"features"};return e.featureMetric=function(e,i,o){if(void 0===e||""===e)throw new Error("name is mandatory");if(void 0===i||""===i)throw new Error("action is mandatory");if(void 0===o||""===o)throw new Error("payload is mandatory");t?t.update({name:e,action:i,payload:o}):t=n.objectMetric(r,{name:e,action:i,payload:o})},e}var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==global?global:"undefined"!=typeof self?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function createRegistry(e){if(e&&e.errorHandling&&"function"!=typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"==typeof e.errorHandling&&e.errorHandling,n={};function r(n,r){var i=n instanceof Error?n:new Error(n);if(t)t(i);else{var o='[ERROR] callback-registry: User callback for key "'+r+'" failed: '+i.stack;if(e)switch(e.errorHandling){case"log":return console.error(o);case"silent":return;case"throw":throw new Error(o)}console.error(o)}}return{add:function(e,t,i){var o=n[e];return o||(o=[],n[e]=o),o.push(t),i&&setTimeout((function(){i.forEach((function(i){var o;if(null===(o=n[e])||void 0===o?void 0:o.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(t){r(t,e)}}))}),0),function(){var r=n[e];r&&(0===(r=r.reduce((function(e,n,r){return n===t&&e.length===r||e.push(n),e}),[])).length?delete n[e]:n[e]=r)}},execute:function(e){for(var t=[],i=1;i0&&(o=i-n[n.length-1].time),n.push({name:e,time:i,diff:o})}s("start",l);var a={get startTime(){return l},get endTime(){return i},get period(){return o},stop:function(){return s("end",i=r()),o=i-l},mark:s,marks:n};return timers[e]=a,a}var WebSocketConstructor=Utils.isNode()?require("ws"):window.WebSocket,WS=function(){function e(e,t){if(this.startupTimer=timer("connection"),this._running=!0,this._registry=lib$1(),this.wsRequests=[],this.settings=e,this.logger=t,!this.settings.ws)throw new Error("ws is missing")}return e.prototype.onMessage=function(e){return this._registry.add("onMessage",e)},e.prototype.send=function(e,t){var n=this;return new Promise((function(t,r){n.waitForSocketConnection((function(){var i;try{null===(i=n.ws)||void 0===i||i.send(e),t()}catch(e){r(e)}}),r)}))},e.prototype.open=function(){var e=this;return this.logger.info("opening ws..."),this._running=!0,new Promise((function(t,n){e.waitForSocketConnection(t,n)}))},e.prototype.close=function(){return this._running=!1,this.ws&&this.ws.close(),Promise.resolve()},e.prototype.onConnectedChanged=function(e){return this._registry.add("onConnectedChanged",e)},e.prototype.name=function(){return this.settings.ws},e.prototype.reconnect=function(){var e;null===(e=this.ws)||void 0===e||e.close();var t=new PromiseWrapper;return this.waitForSocketConnection((function(){t.resolve()})),t.promise},e.prototype.waitForSocketConnection=function(e,t){var n;t=null!=t?t:function(){},this._running?1!==(null===(n=this.ws)||void 0===n?void 0:n.readyState)?(this.wsRequests.push({callback:e,failed:t}),this.wsRequests.length>1||this.openSocket()):e():t("wait for socket on ".concat(this.settings.ws," failed - socket closed by user"))},e.prototype.openSocket=function(e,t){return __awaiter(this,void 0,void 0,(function(){var n=this;return __generator(this,(function(r){switch(r.label){case 0:if(this.startupTimer.mark("opening-socket"),void 0===e&&(e=this.settings.reconnectInterval),void 0===t&&(t=this.settings.reconnectAttempts),void 0!==t){if(0===t)return this.notifyForSocketState("wait for socket on ".concat(this.settings.ws," failed - no more retries left")),[2];this.logger.debug("will retry ".concat(t," more times (every ").concat(e," ms)"))}r.label=1;case 1:return r.trys.push([1,3,,4]),[4,this.initiateSocket()];case 2:return r.sent(),this.startupTimer.mark("socket-initiated"),this.notifyForSocketState(),[3,4];case 3:return r.sent(),setTimeout((function(){var r=void 0===t?void 0:t-1;n.openSocket(e,r)}),e),[3,4];case 4:return[2]}}))}))},e.prototype.initiateSocket=function(){var e=this,t=new PromiseWrapper;return this.logger.debug("initiating ws to ".concat(this.settings.ws,"...")),this.ws=new WebSocketConstructor(this.settings.ws||""),this.ws.onerror=function(n){var r="";try{r=JSON.stringify(n)}catch(e){var i=new WeakSet;r=JSON.stringify(n,(function(e,t){if("object"==typeof t&&null!==t){if(i.has(t))return;i.add(t)}return t}))}t.reject("error"),e.notifyStatusChanged(!1,r)},this.ws.onclose=function(n){e.logger.info("ws closed ".concat(n)),t.reject("closed"),e.notifyStatusChanged(!1)},this.ws.onopen=function(){var n;e.startupTimer.mark("ws-opened"),e.logger.info("ws opened ".concat(null===(n=e.settings.identity)||void 0===n?void 0:n.application)),t.resolve(),e.notifyStatusChanged(!0)},this.ws.onmessage=function(t){e._registry.execute("onMessage",t.data)},t.promise},e.prototype.notifyForSocketState=function(e){this.wsRequests.forEach((function(t){e?t.failed&&t.failed(e):t.callback()})),this.wsRequests=[]},e.prototype.notifyStatusChanged=function(e,t){this._registry.execute("onConnectedChanged",e,t)},e}(),shortidExports={},shortid$1={get exports(){return shortidExports},set exports(e){shortidExports=e}},libExports={},lib={get exports(){return libExports},set exports(e){libExports=e}},seed=1;function getNextValue(){return(seed=(9301*seed+49297)%233280)/233280}function setSeed$1(e){seed=e}var randomFromSeed$1={nextValue:getNextValue,seed:setSeed$1},randomFromSeed=randomFromSeed$1,ORIGINAL="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-",alphabet$2,previousSeed,shuffled;function reset(){shuffled=!1}function setCharacters(e){if(e){if(e!==alphabet$2){if(e.length!==ORIGINAL.length)throw new Error("Custom alphabet for shortid must be "+ORIGINAL.length+" unique characters. You submitted "+e.length+" characters: "+e);var t=e.split("").filter((function(e,t,n){return t!==n.lastIndexOf(e)}));if(t.length)throw new Error("Custom alphabet for shortid must be "+ORIGINAL.length+" unique characters. These characters were not unique: "+t.join(", "));alphabet$2=e,reset()}}else alphabet$2!==ORIGINAL&&(alphabet$2=ORIGINAL,reset())}function characters(e){return setCharacters(e),alphabet$2}function setSeed(e){randomFromSeed.seed(e),previousSeed!==e&&(reset(),previousSeed=e)}function shuffle(){alphabet$2||setCharacters(ORIGINAL);for(var e,t=alphabet$2.split(""),n=[],r=randomFromSeed.nextValue();t.length>0;)r=randomFromSeed.nextValue(),e=Math.floor(r*t.length),n.push(t.splice(e,1)[0]);return n.join("")}function getShuffled(){return shuffled||(shuffled=shuffle())}function lookup(e){return getShuffled()[e]}function get(){return alphabet$2||ORIGINAL}var alphabet_1={get:get,characters:characters,seed:setSeed,lookup:lookup,shuffled:getShuffled},crypto$2="object"==typeof window&&(window.crypto||window.msCrypto),randomByte;randomByte=crypto$2&&crypto$2.getRandomValues?function(e){return crypto$2.getRandomValues(new Uint8Array(e))}:function(e){for(var t=[],n=0;n0&&(t+=generate(counter)),t+=generate(n)}var build_1=build,alphabet=alphabet_1;function isShortId(e){return!(!e||"string"!=typeof e||e.length<6)&&!new RegExp("[^"+alphabet.get().replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&")+"]").test(e)}var isValid=isShortId;!function(e){var t=alphabet_1,n=build_1,r=isValid,i=0;function o(){return n(i)}e.exports=o,e.exports.generate=o,e.exports.seed=function(n){return t.seed(n),e.exports},e.exports.worker=function(t){return i=t,e.exports},e.exports.characters=function(e){return void 0!==e&&t.characters(e),t.shuffled()},e.exports.isValid=r}(lib),shortid$1.exports=libExports;var shortid=getDefaultExportFromCjs(shortidExports);function domainSession(e,t,n,r,i){null==e&&(e="global"),r=r||["success"],i=i||["error"];var o,l=!1,s=!1,a=!1,u=lib$1();t.disconnected((function(){a=!1,n.debug("connection is down"),l=!1,s=!0,u.execute("onLeft",{disconnected:!0})})),t.loggedIn((function(){a=!0,s&&(n.debug("connection is now up - trying to reconnect..."),h(o))})),t.on("success",(function(e){return f(e)})),t.on("error",(function(e){return d(e)})),t.on("result",(function(e){return f(e)})),r&&r.forEach((function(e){t.on(e,(function(e){return f(e)}))})),i&&i.forEach((function(e){t.on(e,(function(e){return d(e)}))}));var c={};function h(t){return o=t,new Promise((function(r,i){if(l)r({});else{var o;if("global"===e)o=a?Promise.resolve({}):Promise.reject("not connected to gateway");else n.debug("joining domain ".concat(e)),o=g({type:"join",destination:e,domain:"global",options:t});o.then((function(){!function(){n.debug("did join "+e),l=!0;var t=s;s=!1,u.execute("onJoined",t)}(),r({})})).catch((function(t){n.debug("error joining "+e+" domain: "+JSON.stringify(t)),i(t)}))}}))}function d(t){if(e===t.domain){var n=t.request_id;if(n){var r=c[n];r&&r.error(t)}}}function f(t){if(t.domain===e){var n=t.request_id;if(n){var r=c[n];r&&r.success(t)}}}function p(){return shortid()}function g(r,i,o){o=o||{},r.request_id=r.request_id||p(),r.domain=r.domain||e,o.skipPeerId||(r.peer_id=t.peerId);var l=r.request_id;return new Promise((function(e,s){c[l]={success:function(t){delete c[l],t._tag=i,e(t)},error:function(e){n.warn("GW error - ".concat(JSON.stringify(e)," for request ").concat(JSON.stringify(r))),delete c[l],e._tag=i,s(e)}},t.send(r,o).catch((function(e){c[l].error({err:e})}))}))}return{join:h,leave:function(){return"global"===e?Promise.resolve():(n.debug("stopping session "+e+"..."),s=!1,g({type:"leave",destination:e,domain:"global"}).then((function(){l=!1,u.execute("onLeft")})).catch((function(){l=!1,u.execute("onLeft")})))},onJoined:function(e){return l&&e(!1),u.add("onJoined",e)},onLeft:function(e){return l||e(),u.add("onLeft",e)},send:g,sendFireAndForget:function(n){return n.request_id=n.request_id?n.request_id:p(),n.domain=n.domain||e,n.peer_id=t.peerId,t.send(n)},on:function(r,i){t.on(r,(function(t){if(t.domain===e)try{i(t)}catch(e){n.error("Callback failed: ".concat(e," \n ").concat(e.stack," \n msg was: ").concat(JSON.stringify(t)),e)}}))},loggedIn:function(e){return t.loggedIn(e)},connected:function(e){return t.connected(e)},disconnected:function(e){return t.disconnected(e)},get peerId(){return t.peerId},get domain(){return e}}}var GW3ProtocolImpl=function(){function e(e,t,n){var r=this;this.connection=e,this.settings=t,this.logger=n,this.protocolVersion=3,this.datePrefix="#T42_DATE#",this.datePrefixLen=this.datePrefix.length,this.dateMinLen=this.datePrefixLen+1,this.datePrefixFirstChar=this.datePrefix[0],this.registry=lib$1(),this._isLoggedIn=!1,this.shouldTryLogin=!0,this.initialLogin=!0,this.initialLoginAttempts=3,this.sessions=[],e.disconnected((function(){r.handleDisconnected()})),this.ping()}return Object.defineProperty(e.prototype,"isLoggedIn",{get:function(){return this._isLoggedIn},enumerable:!1,configurable:!0}),e.prototype.processStringMessage=function(e){var t=this,n=JSON.parse(e,(function(e,n){if("string"!=typeof n)return n;if(n.length1)return"continue";var i=e.on(n,(function(e){return t.processMessage(n,e)}));l.subs[n]=i},l=this,s=0,a=this.specs[i].types;s> ".concat(JSON.stringify(n))),this.transport.sendObject(n,t)}var r=this.protocol.createStringMessage(e);return this.isTrace&&this.logger.trace(">> ".concat(r)),this.transport.send(r,t)},e.prototype.on=function(e,t){e=e.toLowerCase(),void 0===this.messageHandlers[e]&&(this.messageHandlers[e]={});var n=this.ids++;return this.messageHandlers[e][n]=t,{type:e,id:n}},e.prototype.off=function(e){delete this.messageHandlers[e.type.toLowerCase()][e.id]},Object.defineProperty(e.prototype,"isConnected",{get:function(){return this.protocol.isLoggedIn},enumerable:!1,configurable:!0}),e.prototype.connected=function(e){var t=this;return this.protocol.loggedIn((function(){var n=t.transport.name();e(n)}))},e.prototype.disconnected=function(e){return this.registry.add("disconnected",e)},e.prototype.login=function(e,t){return __awaiter(this,void 0,void 0,(function(){var n,r,i;return __generator(this,(function(o){switch(o.label){case 0:this._defaultAuth||(this._defaultAuth=e),this._swapTransport&&(this.logger.trace("Detected a transport swap, swapping transports"),n=this.transportSwap(),e=null!=n?n:e),this.logger.trace("Starting login for transport: ".concat(this.transport.name()," and auth ").concat(JSON.stringify(e))),o.label=1;case 1:return o.trys.push([1,4,,5]),[4,this.transport.open()];case 2:return o.sent(),this.logger.trace("Transport: ".concat(this.transport.name()," opened, logging in")),timer("connection").mark("transport-opened"),[4,this.protocol.login(e,t)];case 3:return r=o.sent(),this.logger.trace("Logged in with identity: ".concat(JSON.stringify(r))),timer("connection").mark("protocol-logged-in"),[2,r];case 4:throw i=o.sent(),this._switchInProgress&&(this.logger.trace("An error while logging in after a transport swap, preparing a default swap."),this.prepareDefaultSwap()),new Error(i);case 5:return[2]}}))}))},e.prototype.logout=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(e){switch(e.label){case 0:return[4,this.protocol.logout()];case 1:return e.sent(),[4,this.transport.close()];case 2:return e.sent(),[2]}}))}))},e.prototype.loggedIn=function(e){return this.protocol.loggedIn(e)},e.prototype.domain=function(e,t,n){return this.protocol.domain(e,this.logger.subLogger("domain=".concat(e)),t,n)},e.prototype.authToken=function(){return this.protocol.authToken()},e.prototype.reconnect=function(){return this.transport.reconnect()},e.prototype.distributeMessage=function(e,t){var n=this,r=this.messageHandlers[t.toLowerCase()];void 0!==r&&Object.keys(r).forEach((function(t){var i=r[t];if(void 0!==i)try{i(e)}catch(e){try{n.logger.error("Message handler failed with ".concat(e.stack),e)}catch(t){console.log("Message handler failed",e)}}}))},e.prototype.handleConnectionChanged=function(e){this._connected!==e&&(this._connected=e,e?(this.settings.replaySpecs&&this.settings.replaySpecs.length&&(this.replayer=new MessageReplayerImpl(this.settings.replaySpecs),this.replayer.init(this)),this.registry.execute("connected")):this.registry.execute("disconnected"))},e.prototype.handleTransportMessage=function(e){var t;t="string"==typeof e?this.protocol.processStringMessage(e):this.protocol.processObjectMessage(e),this.isTrace&&this.logger.trace("<< ".concat(JSON.stringify(t))),this.distributeMessage(t.msg,t.msgType)},e.prototype.verifyConnection=function(){var e=this;return PromisePlus$1((function(t){var n,r=waitForInvocations(2,(function(){n&&n(),t()}));n=e.onLibReAnnounced((function(e){return"interop"===e.name||"contexts"===e.name?r():void 0}))}),1e4,"Transport switch timed out waiting for all libraries to be re-announced")},e.prototype.getNewSecondaryTransport=function(e){var t;if(!(null===(t=e.transportConfig)||void 0===t?void 0:t.url))throw new Error("Missing secondary transport URL.");return new WS(Object.assign({},this.settings,{ws:e.transportConfig.url,reconnectAttempts:1}),this.logger.subLogger("ws-secondary"))},e.prototype.getNewSecondaryAuth=function(e){var t;if(!(null===(t=e.transportConfig)||void 0===t?void 0:t.auth))throw new Error("Missing secondary transport auth information.");return e.transportConfig.auth},e.prototype.transportSwap=function(){if(this._swapTransport=!1,this._targetTransport&&this._targetAuth){this._transportSubscriptions.forEach((function(e){return e()})),this._transportSubscriptions=[],this.transport=this._targetTransport;var e=this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)),t=this.transport.onMessage(this.handleTransportMessage.bind(this));return this._transportSubscriptions.push(e),this._transportSubscriptions.push(t),this._targetAuth}this.logger.warn("Error while switching transports - either the target transport or auth is not defined: transport defined -> ".concat(!!this._defaultTransport,", auth defined -> ").concat(!!this._targetAuth,". Staying on the current one."))},e.prototype.prepareDefaultSwap=function(){var e=this;this._transportSubscriptions.forEach((function(e){return e()})),this._transportSubscriptions=[],this.transport.close().catch((function(t){return e.logger.warn("Error closing the ".concat(e.transport.name()," transport after a failed connection attempt: ").concat(JSON.stringify(t)))})),this._targetTransport=this._defaultTransport,this._targetAuth=this._defaultAuth,this._swapTransport=!0},e}(),order=["trace","debug","info","warn","error","off"],Logger=function(){function e(e,t,n){this.name=e,this.parent=t,this.subLoggers=[],this.logFn=console,this.customLogFn=!1,this.name=e,this.path=t?"".concat(t.path,".").concat(e):e,this.loggerFullName="[".concat(this.path,"]"),this.includeTimeAndLevel=!n,n&&(this.logFn=n,this.customLogFn=!0)}return e.prototype.subLogger=function(t){var n=this.subLoggers.filter((function(e){return e.name===t}))[0];if(void 0!==n)return n;Object.keys(this).forEach((function(e){if(e===t)throw new Error("This sub logger name is not allowed.")}));var r=new e(t,this,this.customLogFn?this.logFn:void 0);return this.subLoggers.push(r),r},e.prototype.publishLevel=function(e){var t;return e&&(this._publishLevel=e),this._publishLevel||(null===(t=this.parent)||void 0===t?void 0:t.publishLevel())},e.prototype.consoleLevel=function(e){var t;return e&&(this._consoleLevel=e),this._consoleLevel||(null===(t=this.parent)||void 0===t?void 0:t.consoleLevel())},e.prototype.log=function(e,t,n){this.publishMessage(t||"info",e,n)},e.prototype.trace=function(e){this.log(e,"trace")},e.prototype.debug=function(e){this.log(e,"debug")},e.prototype.info=function(e){this.log(e,"info")},e.prototype.warn=function(e){this.log(e,"warn")},e.prototype.error=function(e,t){this.log(e,"error")},e.prototype.canPublish=function(e,t){return order.indexOf(e)>=order.indexOf(t||this.consoleLevel()||"trace")},e.prototype.publishMessage=function(t,n,r){var i=this.loggerFullName;if("error"===t&&!r){var o=new Error;o.stack&&(n=n+"\n"+o.stack.split("\n").slice(3).join("\n"))}if(this.canPublish(t,this.publishLevel())){var l=e.Interop;if(l)try{l.methods({name:e.InteropMethodName}).length>0&&l.invoke(e.InteropMethodName,{msg:"".concat(n),logger:i,level:t})}catch(e){}}if(this.canPublish(t)){var s="";if(this.includeTimeAndLevel){var a=new Date,u="".concat(a.getHours(),":").concat(a.getMinutes(),":").concat(a.getSeconds(),":").concat(a.getMilliseconds());s="[".concat(u,"] [").concat(t,"] ")}var c="".concat(s).concat(i,": ").concat(n);switch(t){case"trace":this.logFn.debug(c);break;case"debug":this.logFn.debug?this.logFn.debug(c):this.logFn.log(c);break;case"info":this.logFn.info(c);break;case"warn":this.logFn.warn(c);break;case"error":this.logFn.error(c,r)}}},e.InteropMethodName="T42.AppLogger.Log",e}(),GW_MESSAGE_CREATE_CONTEXT="create-context",GW_MESSAGE_ACTIVITY_CREATED="created",GW_MESSAGE_ACTIVITY_DESTROYED="destroyed",GW_MESSAGE_CONTEXT_CREATED="context-created",GW_MESSAGE_CONTEXT_ADDED="context-added",GW_MESSAGE_SUBSCRIBE_CONTEXT="subscribe-context",GW_MESSAGE_SUBSCRIBED_CONTEXT="subscribed-context",GW_MESSAGE_UNSUBSCRIBE_CONTEXT="unsubscribe-context",GW_MESSAGE_DESTROY_CONTEXT="destroy-context",GW_MESSAGE_CONTEXT_DESTROYED="context-destroyed",GW_MESSAGE_UPDATE_CONTEXT="update-context",GW_MESSAGE_CONTEXT_UPDATED="context-updated",GW_MESSAGE_JOINED_ACTIVITY="joined",ContextMessageReplaySpec={get name(){return"context"},get types(){return[GW_MESSAGE_CREATE_CONTEXT,GW_MESSAGE_ACTIVITY_CREATED,GW_MESSAGE_ACTIVITY_DESTROYED,GW_MESSAGE_CONTEXT_CREATED,GW_MESSAGE_CONTEXT_ADDED,GW_MESSAGE_SUBSCRIBE_CONTEXT,GW_MESSAGE_SUBSCRIBED_CONTEXT,GW_MESSAGE_UNSUBSCRIBE_CONTEXT,GW_MESSAGE_DESTROY_CONTEXT,GW_MESSAGE_CONTEXT_DESTROYED,GW_MESSAGE_UPDATE_CONTEXT,GW_MESSAGE_CONTEXT_UPDATED,GW_MESSAGE_JOINED_ACTIVITY]}},version$2="6.2.0";function prepareConfig(e,t,n){var r,i,o,l,s;if(Utils.isNode()){var a=process.env._GD_STARTING_CONTEXT_;if(a)try{s=JSON.parse(a)}catch(e){}}function u(){if(e.application)return e.application;if(n)return n.applicationName;if("undefined"!=typeof window&&void 0!==window.glue42electron)return window.glue42electron.application;var t=shortid();return Utils.isNode()?s?s.applicationConfig.name:"NodeJS"+t:"undefined"!=typeof window&&"undefined"!=typeof document?document.title+" (".concat(t,")"):t}var c=function(){var r,i,o,l,a,c,h,d,f,p,g,w=e.gateway,m=null!==(r=null==w?void 0:w.protocolVersion)&&void 0!==r?r:3,v=null==w?void 0:w.reconnectInterval,y=null==w?void 0:w.reconnectAttempts,b=null==w?void 0:w.ws,S=null==w?void 0:w.sharedWorker,$=null==w?void 0:w.inproc,C=null!==(i=null==w?void 0:w.webPlatform)&&void 0!==i?i:void 0;n&&(b=n.gwURL),Utils.isNode()&&s&&s.gwURL&&(b=s.gwURL),b||S||$||(b="ws://localhost:8385");var I=u(),x=I;void 0!==n?(d=n.windowId,f=n.pid,n.env&&(p=n.env.env,g=n.env.region),x=null!==(o=n.application)&&void 0!==o?o:"glue-app",h=n.appInstanceId):Utils.isNode()?(f=process.pid,s&&(p=s.env,g=s.region,h=s.instanceId)):void 0!==(null===window||void 0===window?void 0:window.glue42electron)&&(d=null===window||void 0===window?void 0:window.glue42electron.instanceId,f=null===window||void 0===window?void 0:window.glue42electron.pid,p=null===window||void 0===window?void 0:window.glue42electron.env,g=null===window||void 0===window?void 0:window.glue42electron.region,x=null!==(l=null===window||void 0===window?void 0:window.glue42electron.application)&&void 0!==l?l:"glue-app",h=null===window||void 0===window?void 0:window.glue42electron.instanceId);var E=null!==(c=null===(a=e.gateway)||void 0===a?void 0:a.replaySpecs)&&void 0!==c?c:[];E.push(ContextMessageReplaySpec);var D={application:x,applicationName:I,windowId:d,instance:h,process:f,region:g,environment:p,api:t.version||version$2};return e.identity&&(D=Object.assign(D,e.identity)),{identity:D,reconnectInterval:v,ws:b,sharedWorker:S,webPlatform:C,inproc:$,protocolVersion:m,reconnectAttempts:y,replaySpecs:E}}(),h=u();if("undefined"!=typeof window){var d=window,f=d.htmlContainer?"".concat(d.htmlContainer.containerName,".").concat(d.htmlContainer.application):null===(r=null==d?void 0:d.glue42gd)||void 0===r?void 0:r.application;f&&(h=f)}return{bus:null!==(i=e.bus)&&void 0!==i&&i,application:h,auth:function(){var t,n,r;return"string"==typeof e.auth?{token:e.auth}:e.auth?e.auth:Utils.isNode()&&s&&s.gwToken?{gatewayToken:s.gwToken}:(null===(t=e.gateway)||void 0===t?void 0:t.webPlatform)||(null===(n=e.gateway)||void 0===n?void 0:n.inproc)||(null===(r=e.gateway)||void 0===r?void 0:r.sharedWorker)?{username:"glue42",password:"glue42"}:void 0}(),logger:function(){var t,r,i,o=e.logger,l="warn";return o||(o=l),n&&(i=n.consoleLogLevel),"string"==typeof o?{console:null!=i?i:o,publish:l}:{console:null!==(t=null!=i?i:o.console)&&void 0!==t?t:l,publish:null!==(r=o.publish)&&void 0!==r?r:l}}(),connection:c,metrics:null===(o=e.metrics)||void 0===o||o,contexts:void 0===e.contexts||"boolean"==typeof e.contexts&&e.contexts?{reAnnounceKnownContexts:!0}:"object"==typeof e.contexts&&Object.assign({},{reAnnounceKnownContexts:!0},e.contexts),version:t.version||version$2,libs:null!==(l=t.libs)&&void 0!==l?l:[],customLogger:e.customLogger}}var GW3ContextData=function(){function e(e,t,n,r){this.updateCallbacks={},this.contextId=e,this.name=t,this.isAnnounced=n,this.activityId=r,this.context={}}return e.prototype.hasCallbacks=function(){return Object.keys(this.updateCallbacks).length>0},e.prototype.getState=function(){return this.isAnnounced&&this.hasCallbacks()?3:this.isAnnounced?2:this.hasCallbacks()?1:0},e}(),lodash_clonedeepExports={},lodash_clonedeep={get exports(){return lodash_clonedeepExports},set exports(e){lodash_clonedeepExports=e}};!function(e,t){var n="__lodash_hash_undefined__",r=9007199254740991,i="[object Arguments]",o="[object Boolean]",l="[object Date]",s="[object Function]",a="[object GeneratorFunction]",u="[object Map]",c="[object Number]",h="[object Object]",d="[object Promise]",f="[object RegExp]",p="[object Set]",g="[object String]",w="[object Symbol]",m="[object WeakMap]",v="[object ArrayBuffer]",y="[object DataView]",b="[object Float32Array]",S="[object Float64Array]",$="[object Int8Array]",C="[object Int16Array]",I="[object Int32Array]",x="[object Uint8Array]",E="[object Uint8ClampedArray]",D="[object Uint16Array]",A="[object Uint32Array]",k=/\w*$/,_=/^\[object .+?Constructor\]$/,j=/^(?:0|[1-9]\d*)$/,N={};N[i]=N["[object Array]"]=N[v]=N[y]=N[o]=N[l]=N[b]=N[S]=N[$]=N[C]=N[I]=N[u]=N[c]=N[h]=N[f]=N[p]=N[g]=N[w]=N[x]=N[E]=N[D]=N[A]=!0,N["[object Error]"]=N[s]=N[m]=!1;var R="object"==typeof commonjsGlobal&&commonjsGlobal&&commonjsGlobal.Object===Object&&commonjsGlobal,T="object"==typeof self&&self&&self.Object===Object&&self,P=R||T||Function("return this")(),O=t&&!t.nodeType&&t,F=O&&e&&!e.nodeType&&e,B=F&&F.exports===O;function M(e,t){return e.set(t[0],t[1]),e}function Q(e,t){return e.add(t),e}function G(e,t,n,r){var i=-1,o=e?e.length:0;for(r&&o&&(n=e[++i]);++i-1},Ee.prototype.set=function(e,t){var n=this.__data__,r=je(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},De.prototype.clear=function(){this.__data__={hash:new xe,map:new(fe||Ee),string:new xe}},De.prototype.delete=function(e){return Oe(this,e).delete(e)},De.prototype.get=function(e){return Oe(this,e).get(e)},De.prototype.has=function(e){return Oe(this,e).has(e)},De.prototype.set=function(e,t){return Oe(this,e).set(e,t),this},Ae.prototype.clear=function(){this.__data__=new Ee},Ae.prototype.delete=function(e){return this.__data__.delete(e)},Ae.prototype.get=function(e){return this.__data__.get(e)},Ae.prototype.has=function(e){return this.__data__.has(e)},Ae.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Ee){var r=n.__data__;if(!fe||r.length<199)return r.push([e,t]),this;n=this.__data__=new De(r)}return n.set(e,t),this};var Be=ue?W(ue,Object):function(){return[]},Me=function(e){return ee.call(e)};function Qe(e,t){return!!(t=null==t?r:t)&&("number"==typeof e||j.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=r}(e.length)&&!Ke(e)}var Le=ce||function(){return!1};function Ke(e){var t=He(e)?ee.call(e):"";return t==s||t==a}function He(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function ze(e){return qe(e)?ke(e):function(e){if(!Ge(e))return he(e);var t=[];for(var n in Object(e))Y.call(e,n)&&"constructor"!=n&&t.push(n);return t}(e)}e.exports=function(e){return Ne(e,!0,!0)}}(lodash_clonedeep,lodash_clonedeepExports);var cloneDeep=lodash_clonedeepExports;function applyContextDelta(e,t,n){try{if((null==n?void 0:n.canPublish("trace"))&&(null==n||n.trace("applying context delta ".concat(JSON.stringify(t)," on context ").concat(JSON.stringify(e)))),!t)return e;if(t.reset)return e=__assign({},t.reset);if(e=deepClone(e,void 0),t.commands){for(var r=0,i=t.commands;r=2},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){for(var e=0,t=this._gw3Subscriptions;e0)l(h,h[0].methods[0],s,a);else{var d=function(){if(u&&t.waitTimeoutMs)if(c+=500,(h=o.getServerMethodsByFilterAndTarget(i,u)).length>0){var n=h[0].methods[0];l(h,n,s,a)}else if(c>=t.waitTimeoutMs){l(h,"string"==typeof e?{name:e}:e,s,a)}else setTimeout(d,500)};setTimeout(d,500)}}else r(new Error('"'.concat(u,'" is not a valid target. Valid targets are "all", "best", or an instance.')))}else r("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");else r("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.")}));return promisify(s,n,r)},e.prototype.servers=function(e){var t=void 0===e?void 0:__assign({},e);return this.getServers(t).map((function(e){return e.server.instance}))},e.prototype.methods=function(e){return e="string"==typeof e?{name:e}:__assign({},e),this.getMethods(e)},e.prototype.methodsForInstance=function(e){return this.getMethodsForInstance(e)},e.prototype.methodAdded=function(e){return this.repo.onMethodAdded(e)},e.prototype.methodRemoved=function(e){return this.repo.onMethodRemoved(e)},e.prototype.serverAdded=function(e){return this.repo.onServerAdded(e)},e.prototype.serverRemoved=function(e){return this.repo.onServerRemoved((function(t,n){e(t,n)}))},e.prototype.serverMethodAdded=function(e){return this.repo.onServerMethodAdded((function(t,n){e({server:t,method:n})}))},e.prototype.serverMethodRemoved=function(e){return this.repo.onServerMethodRemoved((function(t,n){e({server:t,method:n})}))},e.prototype.invoke=function(e,t,n,r,i,o){return __awaiter(this,void 0,void 0,(function(){var l,s=this;return __generator(this,(function(a){return l=function(){return __awaiter(s,void 0,void 0,(function(){var i,o,l,s,a,u,c,h,d,f,p,g,w=this;return __generator(this,(function(m){switch(m.label){case 0:if(!(i="string"==typeof e?{name:e}:__assign({},e)).name)return[2,Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.")];if(t||(t={}),n||(n="best"),"string"==typeof n&&"all"!==n&&"best"!==n&&"skipMine"!==n)return[2,Promise.reject(new Error('"'.concat(n,'" is not a valid target. Valid targets are "all" and "best".')))];if(r||(r={}),void 0===r.methodResponseTimeoutMs&&(r.methodResponseTimeoutMs=r.method_response_timeout,void 0===r.methodResponseTimeoutMs&&(r.methodResponseTimeoutMs=this.configuration.methodResponseTimeout)),void 0===r.waitTimeoutMs&&(r.waitTimeoutMs=r.wait_for_method_timeout,void 0===r.waitTimeoutMs&&(r.waitTimeoutMs=this.configuration.waitTimeoutMs)),void 0!==r.waitTimeoutMs&&"number"!=typeof r.waitTimeoutMs)return[2,Promise.reject(new Error('"'.concat(r.waitTimeoutMs,'" is not a valid number for "waitTimeoutMs" ')))];if("object"!=typeof t)return[2,Promise.reject(new Error("The method arguments must be an object. method: ".concat(i.name)))];if(0!==(o=this.getServerMethodsByFilterAndTarget(i,n)).length)return[3,4];m.label=1;case 1:return m.trys.push([1,3,,4]),[4,this.tryToAwaitForMethods(i,n,r)];case 2:return o=m.sent(),[3,4];case 3:return m.sent(),l=__assign(__assign({},i),{getServers:function(){return[]},supportsStreaming:!1,objectTypes:null!==(f=i.objectTypes)&&void 0!==f?f:[],flags:null!==(g=null===(p=i.flags)||void 0===p?void 0:p.metadata)&&void 0!==g?g:{}}),s={method:l,called_with:t,message:"Can not find a method matching ".concat(JSON.stringify(e)," with server filter ").concat(JSON.stringify(n)),executed_by:void 0,returned:void 0,status:void 0},[2,Promise.reject(s)];case 4:return a=r.methodResponseTimeoutMs,u=r,c=o.map((function(e){var n=shortid(),r=e.methods[0],i=e.server,o=w.protocol.client.invoke(n,r,t,i,u);return Promise.race([o,rejectAfter(a,o,{invocationId:n,message:"Invocation timeout (".concat(a," ms) reached for method name: ").concat(null==r?void 0:r.name,", target instance: ").concat(JSON.stringify(i.instance),", options: ").concat(JSON.stringify(u)),status:InvokeStatus.Error})])})),[4,Promise.all(c)];case 5:return h=m.sent(),d=this.getInvocationResultObj(h,i,t),h.every((function(e){return e.status===InvokeStatus.Error}))?[2,Promise.reject(d)]:[2,d]}}))}))},[2,promisify(l(),i,o)]}))}))},e.prototype.getInvocationResultObj=function(e,t,n){var r=e.filter((function(e){return e.status===InvokeStatus.Success})).reduce((function(e,r){return e=__spreadArray(__spreadArray([],e,!0),[{executed_by:r.instance,returned:r.result,called_with:n,method:t,message:r.message,status:r.status}],!1)}),[]),i=e.filter((function(e){return e.status===InvokeStatus.Error})).reduce((function(e,r){return e=__spreadArray(__spreadArray([],e,!0),[{executed_by:r.instance,called_with:n,name:t.name,message:r.message}],!1)}),[]),o=e[0];return{method:t,called_with:n,returned:o.result,executed_by:o.instance,all_return_values:r,all_errors:i,message:o.message,status:o.status}},e.prototype.tryToAwaitForMethods=function(e,t,n){var r=this;return new Promise((function(i,o){if(0!==n.waitTimeoutMs)var l=0,s=setInterval((function(){l+=500;var a=r.getServerMethodsByFilterAndTarget(e,t);if(a.length>0)clearInterval(s),i(a);else if(l>=(n.waitTimeoutMs||1e4))return clearInterval(s),void o()}),500);else o()}))},e.prototype.filterByTarget=function(e,t){var n=this;if("string"!=typeof e){return(Array.isArray(e)?e:[e]).reduce((function(e,r){var i=t.filter((function(e){return n.instanceMatch(r,e.server.instance)}));return e.concat(i)}),[])}if("all"===e)return __spreadArray([],t,!0);if("best"===e){var r=t.find((function(e){return e.server.instance.isLocal}));if(r)return[r];if(void 0!==t[0])return[t[0]]}else if("skipMine"===e)return t.filter((function(e){return e.server.instance.peerId!==n.instance.peerId}));return[]},e.prototype.instanceMatch=function(e,t){return this.containsProps(e,t)},e.prototype.methodMatch=function(e,t){return this.containsProps(e,t)},e.prototype.containsProps=function(e,t){return Object.keys(e).filter((function(t){return void 0!==e[t]&&null!==e[t]&&"function"!=typeof e[t]&&"object_types"!==t&&"display_name"!==t&&"id"!==t&&"gatewayId"!==t&&"identifier"!==t&&"_"!==t[0]})).every((function(n){var r,i=e[n],o=t[n];switch(n){case"objectTypes":r=(i||[]).every((function(e){return(o||[]).includes(e)}));break;case"flags":r=isSubset(o||{},i||{});break;default:r=String(i).toLowerCase()===String(o).toLowerCase()}return r}))},e.prototype.getMethods=function(e){var t=this;return void 0===e?this.repo.getMethods():this.repo.getMethods().filter((function(n){return t.methodMatch(e,n)}))},e.prototype.getMethodsForInstance=function(e){var t=this,n=this.repo.getServers().filter((function(n){return t.instanceMatch(e,n.instance)}));if(0===n.length)return[];var r={};return 1===n.length?r=n[0].methods:n.forEach((function(e){Object.keys(e.methods).forEach((function(t){var n=e.methods[t];r[n.identifier]=n}))})),Object.keys(r).map((function(e){return r[e]}))},e.prototype.getServers=function(e){var t=this,n=this.repo.getServers();return void 0===e?n.map((function(e){return{server:e,methods:[]}})):n.reduce((function(n,r){var i=Object.values(r.methods).filter((function(n){return t.methodMatch(e,n)}));return i.length>0&&n.push({server:r,methods:i}),n}),[])},e.prototype.getServerMethodsByFilterAndTarget=function(e,t){var n=this.getServers(e);return this.filterByTarget(t,n)},e}(),ServerSubscription=function(){function e(e,t,n){this.protocol=e,this.repoMethod=t,this.subscription=n}return Object.defineProperty(e.prototype,"stream",{get:function(){if(!this.repoMethod.stream)throw new Error("no stream");return this.repoMethod.stream},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"arguments",{get:function(){return this.subscription.arguments||{}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"branchKey",{get:function(){return this.subscription.branchKey},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"instance",{get:function(){if(!this.subscription.instance)throw new Error("no instance");return this.subscription.instance},enumerable:!1,configurable:!0}),e.prototype.close=function(){this.protocol.server.closeSingleSubscription(this.repoMethod,this.subscription)},e.prototype.push=function(e){this.protocol.server.pushDataToSingle(this.repoMethod,this.subscription,e)},e}(),Request$1=function(){function e(e,t,n){this.protocol=e,this.repoMethod=t,this.requestContext=n,this.arguments=n.arguments,this.instance=n.instance}return e.prototype.accept=function(){this.protocol.server.acceptRequestOnBranch(this.requestContext,this.repoMethod,"")},e.prototype.acceptOnBranch=function(e){this.protocol.server.acceptRequestOnBranch(this.requestContext,this.repoMethod,e)},e.prototype.reject=function(e){this.protocol.server.rejectRequest(this.requestContext,this.repoMethod,e)},e}(),ServerStreaming$1=function(){function e(e,t){var n=this;this.protocol=e,this.server=t,e.server.onSubRequest((function(e,t){return n.handleSubRequest(e,t)})),e.server.onSubAdded((function(e,t){return n.handleSubAdded(e,t)})),e.server.onSubRemoved((function(e,t){return n.handleSubRemoved(e,t)}))}return e.prototype.handleSubRequest=function(e,t){if(t&&t.streamCallbacks&&"function"==typeof t.streamCallbacks.subscriptionRequestHandler){var n=new Request$1(this.protocol,t,e);t.streamCallbacks.subscriptionRequestHandler(n)}},e.prototype.handleSubAdded=function(e,t){if(t&&t.streamCallbacks&&"function"==typeof t.streamCallbacks.subscriptionAddedHandler){var n=new ServerSubscription(this.protocol,t,e);t.streamCallbacks.subscriptionAddedHandler(n)}},e.prototype.handleSubRemoved=function(e,t){if(t&&t.streamCallbacks&&"function"==typeof t.streamCallbacks.subscriptionRemovedHandler){var n=new ServerSubscription(this.protocol,t,e);t.streamCallbacks.subscriptionRemovedHandler(n)}},e}(),ServerBranch=function(){function e(e,t,n){this.key=e,this.protocol=t,this.repoMethod=n}return e.prototype.subscriptions=function(){var e=this;return this.protocol.server.getSubscriptionList(this.repoMethod,this.key).map((function(t){return new ServerSubscription(e.protocol,e.repoMethod,t)}))},e.prototype.close=function(){this.protocol.server.closeAllSubscriptions(this.repoMethod,this.key)},e.prototype.push=function(e){this.protocol.server.pushData(this.repoMethod,e,[this.key])},e}(),ServerStream=function(){function e(e,t,n){this._protocol=e,this._repoMethod=t,this._server=n,this.name=this._repoMethod.definition.name}return e.prototype.branches=function(e){var t=this,n=this._protocol.server.getBranchList(this._repoMethod);return e?n.indexOf(e)>-1?new ServerBranch(e,this._protocol,this._repoMethod):void 0:n.map((function(e){return new ServerBranch(e,t._protocol,t._repoMethod)}))},e.prototype.branch=function(e){return this.branches(e)},e.prototype.subscriptions=function(){var e=this;return this._protocol.server.getSubscriptionList(this._repoMethod).map((function(t){return new ServerSubscription(e._protocol,e._repoMethod,t)}))},Object.defineProperty(e.prototype,"definition",{get:function(){var e,t=this._repoMethod.definition;return{accepts:t.accepts,description:t.description,displayName:t.displayName,name:t.name,objectTypes:t.objectTypes,returns:t.returns,supportsStreaming:t.supportsStreaming,flags:null===(e=t.flags)||void 0===e?void 0:e.metadata}},enumerable:!1,configurable:!0}),e.prototype.close=function(){this._protocol.server.closeAllSubscriptions(this._repoMethod),this._server.unregister(this._repoMethod.definition,!0)},e.prototype.push=function(e,t){if("string"!=typeof t&&!Array.isArray(t)&&void 0!==t)throw new Error("invalid branches should be string or string array");if("object"!=typeof e)throw new Error("Invalid arguments. Data must be an object.");this._protocol.server.pushData(this._repoMethod,e,t)},e.prototype.updateRepoMethod=function(e){this._repoMethod=e},e}(),Server=function(){function e(e,t){this.protocol=e,this.serverRepository=t,this.invocations=0,this.currentlyUnregistering={},this.streaming=new ServerStreaming$1(e,this),this.protocol.server.onInvoked(this.onMethodInvoked.bind(this))}return e.prototype.createStream=function(e,t,n,r,i){var o=this,l=new Promise((function(n,r){if(e){var l;if(!(l="string"==typeof e?{name:""+e}:__assign({},e)).name)return r("The “name” property is required for the “streamDefinition” object and must be unique. Stream definition: ".concat(JSON.stringify(l)));if(o.serverRepository.getList().some((function(e){return e.definition.name===l.name})))return r('A stream with the name "'.concat(l.name,'" already exists! Please, provide a unique name for the stream.'));l.supportsStreaming=!0,t||(t={}),"function"!=typeof t.subscriptionRequestHandler&&(t.subscriptionRequestHandler=function(e){e.accept()});var s=o.serverRepository.add({definition:l,streamCallbacks:t,protocolState:{}});o.protocol.server.createStream(s).then((function(){var e;i?(e=i,i.updateRepoMethod(s)):e=new ServerStream(o.protocol,s,o),s.stream=e,n(e)})).catch((function(e){s.repoId&&o.serverRepository.remove(s.repoId),r(e)}))}else r("The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream.")}));return promisify(l,n,r)},e.prototype.register=function(e,t){var n=this;if(!e)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");if("function"!=typeof t)return Promise.reject("The second parameter must be a callback function. Method: ".concat("string"==typeof e?e:e.name));var r=function(e,r){return __awaiter(n,void 0,void 0,(function(){var n,i,o;return __generator(this,(function(l){switch(l.label){case 0:return l.trys.push([0,4,,5]),(n=t(e.args,e.instance))&&"function"==typeof n.then?[4,n]:[3,2];case 1:return i=l.sent(),r(void 0,i),[3,3];case 2:r(void 0,n),l.label=3;case 3:return[3,5];case 4:return o=l.sent(),r(null!=o?o:"",null!=o?o:""),[3,5];case 5:return[2]}}))}))};return r.userCallback=t,this.registerCore(e,r)},e.prototype.registerAsync=function(e,t){var n=this;if(!e)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");if("function"!=typeof t)return Promise.reject("The second parameter must be a callback function. Method: ".concat("string"==typeof e?e:e.name));var r=function(e,r){return __awaiter(n,void 0,void 0,(function(){var n,i,o,l;return __generator(this,(function(s){try{n=!1,i=function(e){n||r(void 0,e),n=!0},o=function(e){n||(e||(e=""),r(e,e)),n=!0},(l=t(e.args,e.instance,i,o))&&"function"==typeof l.then&&l.then(i).catch(o)}catch(e){r(e,void 0)}return[2]}))}))};return r.userCallbackAsync=t,this.registerCore(e,r)},e.prototype.unregister=function(e,t){return void 0===t&&(t=!1),__awaiter(this,void 0,void 0,(function(){var n,r;return __generator(this,(function(i){switch(i.label){case 0:return void 0===e?[2,Promise.reject("Please, provide either a unique string for a name or an object containing a “name” property.")]:"function"!=typeof e?[3,2]:[4,this.unregisterWithPredicate(e,t)];case 1:case 3:return i.sent(),[2];case 2:return void 0===(n="string"==typeof e?{name:e}:e).name?[2,Promise.reject("Method name is required. Cannot find a method if the method name is undefined!")]:(r=this.serverRepository.getList().find((function(e){return e.definition.name===n.name&&(e.definition.supportsStreaming||!1)===t})))?[4,this.removeMethodsOrStreams([r])]:[2,Promise.reject('Method with a name "'.concat(n.name,'" does not exist or is not registered by your application!'))]}}))}))},e.prototype.unregisterWithPredicate=function(e,t){return __awaiter(this,void 0,void 0,(function(){var n;return __generator(this,(function(r){switch(r.label){case 0:return(n=this.serverRepository.getList().filter((function(t){return e(t.definition)})).filter((function(e){return(e.definition.supportsStreaming||!1)===t})))&&0!==n.length?[4,this.removeMethodsOrStreams(n)]:[2,Promise.reject("Could not find a ".concat(t?"stream":"method"," matching the specified condition!"))];case 1:return r.sent(),[2]}}))}))},e.prototype.removeMethodsOrStreams=function(e){var t=this,n=[];return e.forEach((function(e){var r=t.protocol.server.unregister(e).then((function(){e.repoId&&t.serverRepository.remove(e.repoId)}));n.push(r),t.addAsCurrentlyUnregistering(e.definition.name,r)})),Promise.all(n)},e.prototype.addAsCurrentlyUnregistering=function(e,t){return __awaiter(this,void 0,void 0,(function(){var n,r=this;return __generator(this,(function(i){return n=new Promise((function(e){return setTimeout(e,5e3)})),this.currentlyUnregistering[e]=Promise.race([t,n]).then((function(){delete r.currentlyUnregistering[e]})),[2]}))}))},e.prototype.registerCore=function(e,t){return __awaiter(this,void 0,void 0,(function(){var n,r,i,o=this;return __generator(this,(function(l){switch(l.label){case 0:return(n="string"==typeof e?{name:""+e}:__assign({},e)).name?void 0===(r=this.currentlyUnregistering[n.name])?[3,2]:[4,r]:[2,Promise.reject("Please, provide a (unique) string value for the “name” property in the “methodDefinition” object: ".concat(JSON.stringify(e)))];case 1:l.sent(),l.label=2;case 2:return this.serverRepository.getList().some((function(e){return e.definition.name===n.name}))?[2,Promise.reject('A method with the name "'.concat(n.name,'" already exists! Please, provide a unique name for the method.'))]:n.supportsStreaming?[2,Promise.reject("When you create methods with “glue.interop.register()” or “glue.interop.registerAsync()” the property “supportsStreaming” cannot be “true”. If you want “".concat(n.name,"” to be a stream, please use the “glue.interop.createStream()” method."))]:(i=this.serverRepository.add({definition:n,theFunction:t,protocolState:{}}),[2,this.protocol.server.register(i).catch((function(e){throw(null==i?void 0:i.repoId)&&o.serverRepository.remove(i.repoId),e}))])}}))}))},e.prototype.onMethodInvoked=function(e,t,n){var r=this;e&&e.theFunction&&e.theFunction(n,(function(n,i){if(null!=n)if(n.message&&"string"==typeof n.message)n=n.message;else if("string"!=typeof n)try{n=JSON.stringify(n)}catch(e){n="un-stringifyable error in onMethodInvoked! Top level prop names: ".concat(Object.keys(n))}i?("object"!=typeof i||Array.isArray(i))&&(i={_value:i}):i={},r.protocol.server.methodInvocationResult(e,t,n,i)}))},e}(),InstanceWrapper=function(){function e(e,t,n){var r=this;this.wrapped={},this.wrapped.getMethods=function(){return e.methodsForInstance(this)},this.wrapped.getStreams=function(){return e.methodsForInstance(this).filter((function(e){return e.supportsStreaming}))},t&&this.refreshWrappedObject(t),n&&(n.loggedIn((function(){r.refresh(n)})),this.refresh(n))}return e.prototype.unwrap=function(){return this.wrapped},e.prototype.refresh=function(e){if(e){var t=null==e?void 0:e.resolvedIdentity,n=Object.assign({},null!=t?t:{},{peerId:null==e?void 0:e.peerId});this.refreshWrappedObject(n)}},e.prototype.refreshWrappedObject=function(e){var t,n,r,i,o=this;Object.keys(e).forEach((function(t){o.wrapped[t]=e[t]})),this.wrapped.user=e.user,this.wrapped.instance=e.instance,this.wrapped.application=null!==(t=e.application)&&void 0!==t?t:shortid(),this.wrapped.applicationName=e.applicationName,this.wrapped.pid=null!==(r=null!==(n=e.pid)&&void 0!==n?n:e.process)&&void 0!==r?r:Math.floor(1e10*Math.random()),this.wrapped.machine=e.machine,this.wrapped.environment=e.environment,this.wrapped.region=e.region,this.wrapped.windowId=e.windowId,this.wrapped.isLocal=null===(i=e.isLocal)||void 0===i||i,this.wrapped.api=e.api,this.wrapped.service=e.service,this.wrapped.peerId=e.peerId},e}(),hideMethodSystemFlags=function(e){return __assign(__assign({},e),{flags:e.flags.metadata||{}})},ClientRepository=function(){function e(e,t){this.logger=e,this.API=t,this.servers={},this.methodsCount={},this.callbacks=lib$1();var n=this.API.instance.peerId;this.myServer={id:n,methods:{},instance:this.API.instance,wrapper:this.API.unwrappedInstance},this.servers[n]=this.myServer}return e.prototype.addServer=function(e,t){this.logger.debug("adding server ".concat(t));var n=this.servers[t];if(n)return n.id;var r=new InstanceWrapper(this.API,e),i={id:t,methods:{},instance:r.unwrap(),wrapper:r};return this.servers[t]=i,this.callbacks.execute("onServerAdded",i.instance),t},e.prototype.removeServerById=function(e,t){var n=this,r=this.servers[e];r?(this.logger.debug("removing server ".concat(e)),Object.keys(r.methods).forEach((function(t){n.removeServerMethod(e,t)})),delete this.servers[e],this.callbacks.execute("onServerRemoved",r.instance,t)):this.logger.warn("not aware of server ".concat(e,", my state ").concat(JSON.stringify(Object.keys(this.servers))))},e.prototype.addServerMethod=function(e,t){var n,r=this.servers[e];if(!r)throw new Error("server does not exists");if(!r.methods[t.id]){var i=this.createMethodIdentifier(t),o=this,l={identifier:i,gatewayId:t.id,name:t.name,displayName:t.display_name,description:t.description,version:t.version,objectTypes:t.object_types||[],accepts:t.input_signature,returns:t.result_signature,supportsStreaming:void 0!==t.flags&&t.flags.streaming,flags:null!==(n=t.flags)&&void 0!==n?n:{},getServers:function(){return o.getServersByMethod(i)}};l.object_types=l.objectTypes,l.display_name=l.displayName,l.version=l.version,r.methods[t.id]=l;var s=hideMethodSystemFlags(l);return this.methodsCount[i]||(this.methodsCount[i]=0,this.callbacks.execute("onMethodAdded",s)),this.methodsCount[i]=this.methodsCount[i]+1,this.callbacks.execute("onServerMethodAdded",r.instance,s),l}},e.prototype.removeServerMethod=function(e,t){var n=this.servers[e];if(!n)throw new Error("server does not exists");var r=n.methods[t];delete n.methods[t];var i=hideMethodSystemFlags(r);this.methodsCount[r.identifier]=this.methodsCount[r.identifier]-1,0===this.methodsCount[r.identifier]&&this.callbacks.execute("onMethodRemoved",i),this.callbacks.execute("onServerMethodRemoved",n.instance,i)},e.prototype.getMethods=function(){return this.extractMethodsFromServers(Object.values(this.servers)).map(hideMethodSystemFlags)},e.prototype.getServers=function(){return Object.values(this.servers).map(this.hideServerMethodSystemFlags)},e.prototype.onServerAdded=function(e){var t=this.callbacks.add("onServerAdded",e),n=this.getServers().map((function(e){return e.instance}));return this.returnUnsubWithDelayedReplay(t,n,e)},e.prototype.onMethodAdded=function(e){var t=this.callbacks.add("onMethodAdded",e),n=this.getMethods();return this.returnUnsubWithDelayedReplay(t,n,e)},e.prototype.onServerMethodAdded=function(e){var t=this.callbacks.add("onServerMethodAdded",e),n=!1,r=this.getServers();return setTimeout((function(){r.forEach((function(t){var r=t.methods;Object.keys(r).forEach((function(i){n||e(t.instance,r[i])}))}))}),0),function(){n=!0,t()}},e.prototype.onMethodRemoved=function(e){return this.callbacks.add("onMethodRemoved",e)},e.prototype.onServerRemoved=function(e){return this.callbacks.add("onServerRemoved",e)},e.prototype.onServerMethodRemoved=function(e){return this.callbacks.add("onServerMethodRemoved",e)},e.prototype.getServerById=function(e){return this.hideServerMethodSystemFlags(this.servers[e])},e.prototype.reset=function(){var e,t=this;Object.keys(this.servers).forEach((function(e){t.removeServerById(e,"reset")})),this.servers=((e={})[this.myServer.id]=this.myServer,e),this.methodsCount={}},e.prototype.createMethodIdentifier=function(e){var t,n,r=null!==(t=e.input_signature)&&void 0!==t?t:"",i=null!==(n=e.result_signature)&&void 0!==n?n:"";return(e.name+r+i).toLowerCase()},e.prototype.getServersByMethod=function(e){var t=[];return Object.values(this.servers).forEach((function(n){Object.values(n.methods).forEach((function(r){r.identifier===e&&t.push(n.instance)}))})),t},e.prototype.returnUnsubWithDelayedReplay=function(e,t,n){var r=!1;return setTimeout((function(){t.forEach((function(e){r||n(e)}))}),0),function(){r=!0,e()}},e.prototype.hideServerMethodSystemFlags=function(e){var t={};return Object.entries(e.methods).forEach((function(e){var n=e[0],r=e[1];t[n]=hideMethodSystemFlags(r)})),__assign(__assign({},e),{methods:t})},e.prototype.extractMethodsFromServers=function(e){return Object.values(e).reduce((function(e,t){return __spreadArray(__spreadArray([],e,!0),Object.values(t.methods),!0)}),[])},e}(),ServerRepository=function(){function e(){this.nextId=0,this.methods=[]}return e.prototype.add=function(e){return e.repoId=String(this.nextId),this.nextId+=1,this.methods.push(e),e},e.prototype.remove=function(e){if("string"!=typeof e)return new TypeError("Expecting a string");this.methods=this.methods.filter((function(t){return t.repoId!==e}))},e.prototype.getById=function(e){if("string"==typeof e)return this.methods.find((function(t){return t.repoId===e}))},e.prototype.getList=function(){return this.methods.map((function(e){return e}))},e.prototype.length=function(){return this.methods.length},e.prototype.reset=function(){this.methods=[]},e}(),SUBSCRIPTION_REQUEST="onSubscriptionRequest",SUBSCRIPTION_ADDED="onSubscriptionAdded",SUBSCRIPTION_REMOVED="onSubscriptionRemoved",ServerStreaming=function(){function e(e,t,n){var r=this;this.session=e,this.repository=t,this.serverRepository=n,this.ERR_URI_SUBSCRIPTION_FAILED="com.tick42.agm.errors.subscription.failure",this.callbacks=lib$1(),this.nextStreamId=0,e.on("add-interest",(function(e){r.handleAddInterest(e)})),e.on("remove-interest",(function(e){r.handleRemoveInterest(e)}))}return e.prototype.acceptRequestOnBranch=function(e,t,n){if("string"!=typeof n&&(n=""),"object"!=typeof t.protocolState.subscriptionsMap)throw new TypeError("The streaming method is missing its subscriptions.");if(!Array.isArray(t.protocolState.branchKeyToStreamIdMap))throw new TypeError("The streaming method is missing its branches.");var r=this.getStreamId(t,n),i=e.msg.subscription_id,o={id:i,arguments:e.arguments,instance:e.instance,branchKey:n,streamId:r,subscribeMsg:e.msg};t.protocolState.subscriptionsMap[i]=o,this.session.sendFireAndForget({type:"accepted",subscription_id:i,stream_id:r}),this.callbacks.execute(SUBSCRIPTION_ADDED,o,t)},e.prototype.rejectRequest=function(e,t,n){"string"!=typeof n&&(n=""),this.sendSubscriptionFailed("Subscription rejected by user. "+n,e.msg.subscription_id)},e.prototype.pushData=function(e,t,n){var r=this;if("object"==typeof e&&Array.isArray(e.protocolState.branchKeyToStreamIdMap)){if("object"!=typeof t)throw new Error("Invalid arguments. Data must be an object.");"string"==typeof n?n=[n]:(!Array.isArray(n)||n.length<=0)&&(n=[]),e.protocolState.branchKeyToStreamIdMap.filter((function(e){return!n||0===n.length||n.indexOf(e.key)>=0})).map((function(e){return e.streamId})).forEach((function(e){var n={type:"publish",stream_id:e,data:t};r.session.sendFireAndForget(n)}))}},e.prototype.pushDataToSingle=function(e,t,n){if("object"!=typeof n)throw new Error("Invalid arguments. Data must be an object.");var r={type:"post",subscription_id:t.id,data:n};this.session.sendFireAndForget(r)},e.prototype.closeSingleSubscription=function(e,t){e.protocolState.subscriptionsMap&&delete e.protocolState.subscriptionsMap[t.id];var n={type:"drop-subscription",subscription_id:t.id,reason:"Server dropping a single subscription"};this.session.sendFireAndForget(n),t.instance,this.callbacks.execute(SUBSCRIPTION_REMOVED,t,e)},e.prototype.closeMultipleSubscriptions=function(e,t){var n=this;if("object"==typeof e&&"object"==typeof e.protocolState.subscriptionsMap&&e.protocolState.subscriptionsMap){var r=e.protocolState.subscriptionsMap,i=Object.keys(r).map((function(e){return r[e]}));"string"==typeof t&&(i=i.filter((function(e){return e.branchKey===t}))),i.forEach((function(e){delete r[e.id];var t={type:"drop-subscription",subscription_id:e.id,reason:"Server dropping all subscriptions on stream_id: "+e.streamId};n.session.sendFireAndForget(t)}))}},e.prototype.getSubscriptionList=function(e,t){if("object"!=typeof e)return[];if(!e.protocolState.subscriptionsMap)return[];var n=e.protocolState.subscriptionsMap,r=Object.keys(n).map((function(e){return n[e]}));return"string"!=typeof t?r:r.filter((function(e){return e.branchKey===t}))},e.prototype.getBranchList=function(e){if("object"!=typeof e)return[];if(!e.protocolState.subscriptionsMap)return[];var t=e.protocolState.subscriptionsMap,n=Object.keys(t).map((function(e){return t[e]})),r=[];return n.forEach((function(e){var t="";"object"==typeof e&&"string"==typeof e.branchKey&&(t=e.branchKey),-1===r.indexOf(t)&&r.push(t)})),r},e.prototype.onSubAdded=function(e){this.onSubscriptionLifetimeEvent(SUBSCRIPTION_ADDED,e)},e.prototype.onSubRequest=function(e){this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REQUEST,e)},e.prototype.onSubRemoved=function(e){this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REMOVED,e)},e.prototype.handleRemoveInterest=function(e){var t=this.serverRepository.getById(e.method_id);if("string"==typeof e.subscription_id&&"object"==typeof t&&t.protocolState.subscriptionsMap&&"object"==typeof t.protocolState.subscriptionsMap[e.subscription_id]){var n=t.protocolState.subscriptionsMap[e.subscription_id];delete t.protocolState.subscriptionsMap[e.subscription_id],this.callbacks.execute(SUBSCRIPTION_REMOVED,n,t)}},e.prototype.onSubscriptionLifetimeEvent=function(e,t){this.callbacks.add(e,t)},e.prototype.getNextStreamId=function(){return this.nextStreamId+++""},e.prototype.handleAddInterest=function(e){var t=this.repository.getServerById(e.caller_id).instance,n={msg:e,arguments:e.arguments_kv||{},instance:t},r=this.serverRepository.getById(e.method_id);if(void 0!==r)r.protocolState.subscriptionsMap&&r.protocolState.subscriptionsMap[e.subscription_id]?this.sendSubscriptionFailed("A subscription with id "+e.subscription_id+" already exists.",e.subscription_id):this.callbacks.execute(SUBSCRIPTION_REQUEST,n,r);else{var i="No method with id "+e.method_id+" on this server.";this.sendSubscriptionFailed(i,e.subscription_id)}},e.prototype.sendSubscriptionFailed=function(e,t){var n={type:"error",reason_uri:this.ERR_URI_SUBSCRIPTION_FAILED,reason:e,request_id:t};this.session.sendFireAndForget(n)},e.prototype.getStreamId=function(e,t){if("string"!=typeof t&&(t=""),!e.protocolState.branchKeyToStreamIdMap)throw new Error("streaming ".concat(e.definition.name," method without protocol state"));var n=e.protocolState.branchKeyToStreamIdMap.filter((function(e){return e.key===t}))[0],r=n?n.streamId:void 0;return"string"==typeof r&&""!==r||(r=this.getNextStreamId(),e.protocolState.branchKeyToStreamIdMap.push({key:t,streamId:r})),r},e}(),ServerProtocol=function(){function e(e,t,n,r){var i=this;this.session=e,this.clientRepository=t,this.serverRepository=n,this.logger=r,this.callbacks=lib$1(),this.streaming=new ServerStreaming(e,t,n),this.session.on("invoke",(function(e){return i.handleInvokeMessage(e)}))}return e.prototype.createStream=function(e){return e.protocolState.subscriptionsMap={},e.protocolState.branchKeyToStreamIdMap=[],this.register(e,!0)},e.prototype.register=function(e,t){var n,r=this,i=e.definition,o=Object.assign({},{metadata:null!==(n=i.flags)&&void 0!==n?n:{}},{streaming:t||!1}),l={type:"register",methods:[{id:e.repoId,name:i.name,display_name:i.displayName,description:i.description,version:i.version,flags:o,object_types:i.objectTypes||i.object_types,input_signature:i.accepts,result_signature:i.returns,restrictions:void 0}]};return this.session.send(l,{methodId:e.repoId}).then((function(){r.logger.debug("registered method "+e.definition.name+" with id "+e.repoId)})).catch((function(t){throw r.logger.warn("failed to register method ".concat(e.definition.name," with id ").concat(e.repoId," - ").concat(JSON.stringify(t))),t}))},e.prototype.onInvoked=function(e){this.callbacks.add("onInvoked",e)},e.prototype.methodInvocationResult=function(e,t,n,r){var i;i=n||""===n?{type:"error",request_id:t,reason_uri:"agm.errors.client_error",reason:n,context:r,peer_id:void 0}:{type:"yield",invocation_id:t,peer_id:this.session.peerId,result:r,request_id:void 0},this.session.sendFireAndForget(i)},e.prototype.unregister=function(e){return __awaiter(this,void 0,void 0,(function(){var t;return __generator(this,(function(n){switch(n.label){case 0:return t={type:"unregister",methods:[e.repoId]},[4,this.session.send(t)];case 1:return n.sent(),[2]}}))}))},e.prototype.getBranchList=function(e){return this.streaming.getBranchList(e)},e.prototype.getSubscriptionList=function(e,t){return this.streaming.getSubscriptionList(e,t)},e.prototype.closeAllSubscriptions=function(e,t){this.streaming.closeMultipleSubscriptions(e,t)},e.prototype.pushData=function(e,t,n){this.streaming.pushData(e,t,n)},e.prototype.pushDataToSingle=function(e,t,n){this.streaming.pushDataToSingle(e,t,n)},e.prototype.closeSingleSubscription=function(e,t){this.streaming.closeSingleSubscription(e,t)},e.prototype.acceptRequestOnBranch=function(e,t,n){this.streaming.acceptRequestOnBranch(e,t,n)},e.prototype.rejectRequest=function(e,t,n){this.streaming.rejectRequest(e,t,n)},e.prototype.onSubRequest=function(e){this.streaming.onSubRequest(e)},e.prototype.onSubAdded=function(e){this.streaming.onSubAdded(e)},e.prototype.onSubRemoved=function(e){this.streaming.onSubRemoved(e)},e.prototype.handleInvokeMessage=function(e){var t=e.invocation_id,n=e.caller_id,r=e.method_id,i=e.arguments_kv,o=this.serverRepository.getList().filter((function(e){return e.repoId===r}))[0];if(void 0!==o){var l={args:i,instance:this.clientRepository.getServerById(n).instance};this.callbacks.execute("onInvoked",o,t,l)}},e}(),UserSubscription=function(){function e(e,t){this.repository=e,this.subscriptionData=t}return Object.defineProperty(e.prototype,"requestArguments",{get:function(){return this.subscriptionData.params.arguments||{}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"servers",{get:function(){var e=this;return this.subscriptionData.trackedServers.filter((function(e){return e.subscriptionId})).map((function(t){return e.repository.getServerById(t.serverId).instance}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serverInstance",{get:function(){return this.servers[0]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"stream",{get:function(){return this.subscriptionData.method},enumerable:!1,configurable:!0}),e.prototype.onData=function(e){if("function"!=typeof e)throw new TypeError("The data callback must be a function.");this.subscriptionData.handlers.onData.push(e),1===this.subscriptionData.handlers.onData.length&&this.subscriptionData.queued.data.length>0&&this.subscriptionData.queued.data.forEach((function(t){e(t)}))},e.prototype.onClosed=function(e){if("function"!=typeof e)throw new TypeError("The callback must be a function.");this.subscriptionData.handlers.onClosed.push(e)},e.prototype.onFailed=function(e){},e.prototype.onConnected=function(e){if("function"!=typeof e)throw new TypeError("The callback must be a function.");this.subscriptionData.handlers.onConnected.push(e)},e.prototype.close=function(){this.subscriptionData.close()},e.prototype.setNewSubscription=function(e){this.subscriptionData=e},e}(),TimedCache=function(){function e(e){this.config=e,this.cache=[],this.timeoutIds=[]}return e.prototype.add=function(e){var t=this,n=shortid();this.cache.push({id:n,element:e});var r=setTimeout((function(){var e=t.cache.findIndex((function(e){return e.id===n}));e<0||t.cache.splice(e,1)}),this.config.ELEMENT_TTL_MS);this.timeoutIds.push(r)},e.prototype.flush=function(){var e=this.cache.map((function(e){return e.element}));return this.timeoutIds.forEach((function(e){return clearInterval(e)})),this.cache=[],this.timeoutIds=[],e},e}(),STATUS_AWAITING_ACCEPT="awaitingAccept",STATUS_SUBSCRIBED="subscribed",ERR_MSG_SUB_FAILED="Subscription failed.",ERR_MSG_SUB_REJECTED="Subscription rejected.",ON_CLOSE_MSG_SERVER_INIT="ServerInitiated",ON_CLOSE_MSG_CLIENT_INIT="ClientInitiated",ClientStreaming=function(){function e(e,t,n){var r=this;this.session=e,this.repository=t,this.logger=n,this.subscriptionsList={},this.timedCache=new TimedCache({ELEMENT_TTL_MS:1e4}),this.subscriptionIdToLocalKeyMap={},this.nextSubLocalKey=0,this.handleErrorSubscribing=function(e){var t=e._tag,n=t.subLocalKey,i=r.subscriptionsList[n];if("object"==typeof i&&(i.trackedServers=i.trackedServers.filter((function(e){return e.serverId!==t.serverId})),i.trackedServers.length<=0)){if(clearTimeout(i.timeoutId),i.status===STATUS_AWAITING_ACCEPT){var o="string"==typeof e.reason&&""!==e.reason?' Publisher said "'+e.reason+'".':" No reason given.",l="object"==typeof i.params.arguments?JSON.stringify(i.params.arguments):"{}";i.error({message:ERR_MSG_SUB_REJECTED+o+" Called with:"+l,called_with:i.params.arguments,method:i.method})}else i.status===STATUS_SUBSCRIBED&&r.callOnClosedHandlers(i);delete r.subscriptionsList[n]}},this.handleSubscribed=function(e){var t=e._tag.subLocalKey,n=r.subscriptionsList[t];if("object"==typeof n){var i=e._tag.serverId,o=n.trackedServers.filter((function(e){return e.serverId===i}))[0];if("object"==typeof o){o.subscriptionId=e.subscription_id,r.subscriptionIdToLocalKeyMap[e.subscription_id]=t;var l=n.status===STATUS_AWAITING_ACCEPT;if(n.status=STATUS_SUBSCRIBED,l){var s=!1,a=n.subscription;a?(a.setNewSubscription(n),n.success(a),s=!0):(a=new UserSubscription(r.repository,n),n.subscription=a,n.success(a));for(var u=0,c=n.handlers.onConnected;u0?a.forEach((function(e){"function"==typeof e&&e(s())})):u.push(s())}}}},this.handleSubscriptionCancelled=function(e){var t=r.subscriptionIdToLocalKeyMap[e.subscription_id];if(void 0!==t){var n=r.subscriptionsList[t];if("object"==typeof n){var i=n.trackedServers.length-1;n.trackedServers=n.trackedServers.filter((function(t){return t.subscriptionId!==e.subscription_id||(n.queued.closers.push(t.serverId),!1)})),n.trackedServers.length===i&&(n.trackedServers.length<=0&&(r.timedCache.add(n),clearTimeout(n.timeoutId),r.callOnClosedHandlers(n),delete r.subscriptionsList[t]),delete r.subscriptionIdToLocalKeyMap[e.subscription_id])}}},e.on("subscribed",this.handleSubscribed),e.on("event",this.handleEventData),e.on("subscription-cancelled",this.handleSubscriptionCancelled)}return e.prototype.subscribe=function(e,t,n,r,i,o){var l=this;if(0!==n.length){var s=this.getNextSubscriptionLocalKey(),a=this.registerSubscription(s,e,t,r,i,t.methodResponseTimeout||1e4,o);"object"==typeof a?n.forEach((function(n){var r=n.server.id,i=n.methods.find((function(t){return t.name===e.name}));if(i){a.trackedServers.push({serverId:r,subscriptionId:void 0});var o={type:"subscribe",server_id:r,method_id:i.gatewayId,arguments_kv:t.arguments};l.session.send(o,{serverId:r,subLocalKey:s}).then((function(e){return l.handleSubscribed(e)})).catch((function(e){return l.handleErrorSubscribing(e)}))}else l.logger.error("can not find method ".concat(e.name," for target ").concat(n.server.id))})):i({method:e,called_with:t.arguments,message:ERR_MSG_SUB_FAILED+" Unable to register the user callbacks."})}else i({method:e,called_with:t.arguments,message:ERR_MSG_SUB_FAILED+" No available servers matched the target params."})},e.prototype.drainSubscriptions=function(){var e=Object.values(this.subscriptionsList);return this.subscriptionsList={},this.subscriptionIdToLocalKeyMap={},e},e.prototype.drainSubscriptionsCache=function(){return this.timedCache.flush()},e.prototype.getNextSubscriptionLocalKey=function(){var e=this.nextSubLocalKey;return this.nextSubLocalKey+=1,e},e.prototype.registerSubscription=function(e,t,n,r,i,o,l){var s=this,a={localKey:e,status:STATUS_AWAITING_ACCEPT,method:t,params:n,success:r,error:i,trackedServers:[],handlers:{onData:(null==l?void 0:l.handlers.onData)||[],onClosed:(null==l?void 0:l.handlers.onClosed)||[],onConnected:(null==l?void 0:l.handlers.onConnected)||[]},queued:{data:[],closers:[]},timeoutId:void 0,close:function(){return s.closeSubscription(e)},subscription:null==l?void 0:l.subscription};return l||(n.onData&&a.handlers.onData.push(n.onData),n.onClosed&&a.handlers.onClosed.push(n.onClosed),n.onConnected&&a.handlers.onConnected.push(n.onConnected)),this.subscriptionsList[e]=a,a.timeoutId=setTimeout((function(){if(void 0!==s.subscriptionsList[e]){var r=s.subscriptionsList[e];r.status===STATUS_AWAITING_ACCEPT?(i({method:t,called_with:n.arguments,message:ERR_MSG_SUB_FAILED+" Subscription attempt timed out after "+o+" ms."}),delete s.subscriptionsList[e]):r.status===STATUS_SUBSCRIBED&&r.trackedServers.length>0&&(r.trackedServers=r.trackedServers.filter((function(e){return void 0!==e.subscriptionId})),delete r.timeoutId,r.trackedServers.length<=0&&(s.callOnClosedHandlers(r),delete s.subscriptionsList[e]))}}),o),a},e.prototype.callOnClosedHandlers=function(e,t){var n,r=e.queued.closers.length,i=r>0?e.queued.closers[r-1]:null;void 0!==i&&"string"==typeof i&&(n=this.repository.getServerById(i).instance),e.handlers.onClosed.forEach((function(r){"function"==typeof r&&r({message:t||ON_CLOSE_MSG_SERVER_INIT,requestArguments:e.params.arguments||{},server:n,stream:e.method})}))},e.prototype.closeSubscription=function(e){var t=this,n=this.subscriptionsList[e];"object"==typeof n&&(n.trackedServers.forEach((function(e){void 0!==e.subscriptionId&&(n.queued.closers.push(e.serverId),t.session.sendFireAndForget({type:"unsubscribe",subscription_id:e.subscriptionId,reason_uri:"",reason:ON_CLOSE_MSG_CLIENT_INIT}),delete t.subscriptionIdToLocalKeyMap[e.subscriptionId])})),n.trackedServers=[],this.callOnClosedHandlers(n,ON_CLOSE_MSG_CLIENT_INIT),delete this.subscriptionsList[e])},e}(),ClientProtocol=function(){function e(e,t,n){var r=this;this.session=e,this.repository=t,this.logger=n,e.on("peer-added",(function(e){return r.handlePeerAdded(e)})),e.on("peer-removed",(function(e){return r.handlePeerRemoved(e)})),e.on("methods-added",(function(e){return r.handleMethodsAddedMessage(e)})),e.on("methods-removed",(function(e){return r.handleMethodsRemovedMessage(e)})),this.streaming=new ClientStreaming(e,t,n)}return e.prototype.subscribe=function(e,t,n,r,i,o){this.streaming.subscribe(e,t,n,r,i,o)},e.prototype.invoke=function(e,t,n,r){var i=this,o=r.id,l={type:"call",server_id:o,method_id:t.gatewayId,arguments_kv:n};return this.session.send(l,{invocationId:e,serverId:o}).then((function(e){return i.handleResultMessage(e)})).catch((function(e){return i.handleInvocationError(e)}))},e.prototype.drainSubscriptions=function(){return this.streaming.drainSubscriptions()},e.prototype.drainSubscriptionsCache=function(){return this.streaming.drainSubscriptionsCache()},e.prototype.handlePeerAdded=function(e){var t=e.new_peer_id,n=e.identity,r=!e.meta||e.meta.local,i=Number(n.process),o={machine:n.machine,pid:isNaN(i)?n.process:i,instance:n.instance,application:n.application,applicationName:n.applicationName,environment:n.environment,region:n.region,user:n.user,windowId:n.windowId,peerId:t,api:n.api,isLocal:r};this.repository.addServer(o,t)},e.prototype.handlePeerRemoved=function(e){var t=e.removed_id,n=e.reason;this.repository.removeServerById(t,n)},e.prototype.handleMethodsAddedMessage=function(e){var t=this,n=e.server_id;e.methods.forEach((function(e){t.repository.addServerMethod(n,e)}))},e.prototype.handleMethodsRemovedMessage=function(e){var t=this,n=e.server_id,r=e.methods,i=this.repository.getServerById(n);Object.keys(i.methods).forEach((function(e){var o=i.methods[e];r.indexOf(o.gatewayId)>-1&&t.repository.removeServerMethod(n,e)}))},e.prototype.handleResultMessage=function(e){var t=e._tag.invocationId,n=e.result,r=e._tag.serverId;return{invocationId:t,result:n,instance:this.repository.getServerById(r).instance,status:InvokeStatus.Success,message:""}},e.prototype.handleInvocationError=function(e){if(this.logger.debug("handle invocation error ".concat(JSON.stringify(e))),"_tag"in e){var t=e._tag.invocationId,n=e._tag.serverId,r=this.repository.getServerById(n),i=e.reason;return{invocationId:t,result:e.context,instance:r.instance,status:InvokeStatus.Error,message:i}}return{invocationId:"",message:e.message,status:InvokeStatus.Error,error:e}},e}();function gW3ProtocolFactory(e,t,n,r,i,o){var l,s=i.logger.subLogger("gw3-protocol"),a=new Promise((function(e){l=e})),u=t.domain("agm",["subscribed"]),c=new ServerProtocol(u,n,r,s.subLogger("server")),h=new ClientProtocol(u,n,s.subLogger("client"));return u.onJoined((function(i){n.addServer(e,t.peerId),i?function(){return __awaiter(this,void 0,void 0,(function(){var e,t,n,i,l,a,u,c,d,f,p;return __generator(this,(function(g){switch(g.label){case 0:for(s.info("reconnected - will replay registered methods and subscriptions"),h.drainSubscriptionsCache().forEach((function(e){var t=e.method,n=Object.assign({},e.params);s.info("trying to soft-re-subscribe to method ".concat(t.name,", with params: ").concat(JSON.stringify(n))),o.client.subscribe(t,n,void 0,void 0,e).then((function(){return s.info("soft-subscribing to method ".concat(t.name," DONE"))})).catch((function(e){return s.warn("subscribing to method ".concat(t.name," failed: ").concat(JSON.stringify(e),"}"))}))})),e=[],t=h.drainSubscriptions(),n=function(t){var n=t.method,r=Object.assign({},t.params);s.info("trying to re-subscribe to method ".concat(n.name,", with params: ").concat(JSON.stringify(r))),e.push(o.client.subscribe(n,r,void 0,void 0,t).then((function(){return s.info("subscribing to method ".concat(n.name," DONE"))})))},i=0,l=t;i0))return[3,4];i.label=1;case 1:return i.trys.push([1,3,,4]),[4,o.invoke(t,{appName:null==e?void 0:e.application,pid:process.pid})];case 2:return i.sent(),[3,4];case 3:return n=i.sent(),r=n,l.error("Cannot register as an instance: ".concat(JSON.stringify(r.message))),[3,4];case 4:return[2]}}))}))}()})).then((function(){return b(p.libs||[])})).then((function(){var e=Object.keys(g).map((function(e){var t=g[e];return t.ready?t.ready():Promise.resolve()}));return Promise.all(e)})).then((function(){var n={coreVersion:version$2,version:p.version};f.stop();var r={feedback:function(e){o&&o.invoke("T42.ACS.Feedback",e,"best")},info:n,logger:l,interop:o,agm:o,connection:i,metrics:s,contexts:a,bus:u,version:p.version,userConfig:e,done:function(){return null==l||l.info("done called by user..."),i.logout()}};if(r.performance={get glueVer(){return p.version},get glueConfig(){return JSON.stringify(e)},get browser(){return window.performance.timing.toJSON()},get memory(){return window.performance.memory},get initTimes(){var e=getAllTimers();return Object.keys(e).map((function(t){var n=e[t];return{name:t,duration:n.endTime-n.startTime,marks:n.marks,startTime:n.startTime,endTime:n.endTime}}))}},Object.keys(g).forEach((function(e){var t=g[e];r[e]=t})),r.config={},Object.keys(p).forEach((function(e){r.config[e]=p[e]})),t&&t.extOptions&&Object.keys(t.extOptions).forEach((function(e){r.config[e]=null==t?void 0:t.extOptions[e]})),(null==t?void 0:t.enrichGlue)&&t.enrichGlue(r),h&&h.updatePerfData&&h.updatePerfData(r.performance),r.agm){var c=function(e,t,n){return function(){return r.logger.warn("glue.js - 'glue.agm.".concat(t,"' method is deprecated, use 'glue.interop.").concat(n,"' instead.")),e.apply(r.agm,arguments)}},d=r.agm;d.method_added=c(r.agm.methodAdded,"method_added","methodAdded"),d.method_removed=c(r.agm.methodRemoved,"method_removed","methodRemoved"),d.server_added=c(r.agm.serverAdded,"server_added","serverAdded"),d.server_method_aded=c(r.agm.serverMethodAdded,"server_method_aded","serverMethodAdded"),d.server_method_removed=c(r.agm.serverMethodRemoved,"server_method_removed","serverMethodRemoved")}return r})).catch((function(e){return Promise.reject({err:e,libs:g})}))};"undefined"!=typeof window&&(window.IOConnectCore=IOConnectCoreFactory),IOConnectCoreFactory.version=version$2,IOConnectCoreFactory.default=IOConnectCoreFactory;const PromiseWrap=(e,t,n)=>new Promise(((r,i)=>{let o=!0;const l=setTimeout((()=>{if(!o)return;o=!1;i(n||`Promise timeout hit: ${t}`)}),t);e().then((e=>{o&&(o=!1,clearTimeout(l),r(e))})).catch((e=>{o&&(o=!1,clearTimeout(l),i(e))}))})),PromisePlus=(e,t,n)=>new Promise(((r,i)=>{const o=setTimeout((()=>{i(n||`Promise timeout hit: ${t}`)}),t);new Promise(e).then((e=>{clearTimeout(o),r(e)})).catch((e=>{clearTimeout(o),i(e)}))}));var version="3.2.0";class GlueController{constructor(e,t){this.portsBridge=e,this.sessionStorage=t}get logger(){return logger.get("glue.controller")}get workspaces(){if(!this._clientGlue.workspaces)throw new Error("Cannot access the Workspaces API");return this._clientGlue.workspaces}get isWorkspacesEnabled(){return!!this._clientGlue.workspaces}get me(){return this._clientGlue.interop.instance}get platformVersion(){return version}get clientGlue(){return this._clientGlue}get contextsTrackingGlue(){return this._contextsTrackingGlue}get systemGlue(){return this._systemGlue}get platformWindowId(){return this._platformClientWindowId.slice()}start(e){return __awaiter$7(this,void 0,void 0,(function*(){this._config=e;const t=this.sessionStorage.getSystemSettings();if(!t)throw new Error("Cannot initiate the glue controller, because the system settings are not defined");this._systemSettings=t,this._systemGlue=yield this.initSystemGlue(e.browser),logger.setLogger(this._systemGlue.logger),this._contextsTrackingGlue=yield this.setUpCtxTracking(e)}))}initClientGlue(e,t,n,r){return __awaiter$7(this,void 0,void 0,(function*(){const i=yield this.portsBridge.createInternalClient();this.registerClientWindow(n);const o={application:"Platform",gateway:{webPlatform:{port:i,windowId:this.platformWindowId}}},l=Object.assign({},e,o);return this._clientGlue=t?yield t(l):yield iOConnectBrowserFactory(l),this._clientGlue.webPlatform=r,this._clientGlue}))}createPlatformSystemMethod(e){return __awaiter$7(this,void 0,void 0,(function*(){yield this.createMethodAsync(GlueWebPlatformControlName,e)}))}createPlatformSystemStream(){return __awaiter$7(this,void 0,void 0,(function*(){this._systemStream=yield this.createStream(GlueWebPlatformStreamName)}))}createSystemStream(e){return __awaiter$7(this,void 0,void 0,(function*(){return this.createStream(e)}))}createWorkspacesStream(){return __awaiter$7(this,void 0,void 0,(function*(){this._workspacesStream=yield this.createStream(GlueWebPlatformWorkspacesStreamName)}))}createWorkspacesEventsReceiver(e){return __awaiter$7(this,void 0,void 0,(function*(){yield this._systemGlue.interop.register(GlueWorkspacesEventsReceiverName,(t=>e(t)))}))}pushSystemMessage(e,t,n){if(!this._systemStream)throw new Error(`Cannot push data to domain: ${e}, because the system stream is not created`);this._systemStream.push({domain:e,operation:t,data:n})}pushWorkspacesMessage(e){if(!this._workspacesStream)throw new Error("Cannot push data to domain: workspaces, because the workspaces stream is not created");this._workspacesStream.push({data:e})}callFrame(e,t,n){return __awaiter$7(this,void 0,void 0,(function*(){const r={operation:e.name,operationArguments:t},i=`Internal Platform->Frame Communication Error. Attempted calling workspace frame: ${n} for operation ${e.name} `;if(e.dataDecoder){const t=e.dataDecoder.run(r.operationArguments);if(!t.ok)throw new Error(`${i} OutBound validation failed: ${JSON.stringify(t.error)}`)}const o=GlueWorkspaceFrameClientControlName,l=yield this.transmitMessage(o,r,i,{windowId:n},{methodResponseTimeoutMs:3e4,waitTimeoutMs:3e4});if(e.resultDecoder){const t=e.resultDecoder.run(l);if(!t.ok)throw new Error(`${i} Result validation failed: ${JSON.stringify(t.error)}`)}return l}))}isValidWindowId(e){return!(!e||!this.clientGlue.windows.findById(e))}sendShutDownSignals(){return __awaiter$7(this,void 0,void 0,(function*(){const e=this.clientGlue.windows.list().filter((e=>e.id!==this.platformWindowId));yield Promise.all(e.map((e=>e.close())));const t={domain:"system",operation:"platformShutdown"},n=`Internal Platform-> ${t.domain} Domain Communication Error. Attempted sending shutdown signal to all clients.`,r=this.clientGlue.interop.servers().filter((t=>e.every((e=>e.id!==t.windowId)))).map((e=>({instance:e.instance})));try{yield this.transmitMessage(GlueClientControlName,t,n,r,{methodResponseTimeoutMs:3e4,waitTimeoutMs:3e4})}catch(e){console.warn("Failed to send shutdown signal to all clients",e)}}))}shutdown(){var e;this.systemGlue.connection.logout(),null===(e=this.contextsTrackingGlue)||void 0===e||e.connection.logout(),this.clientGlue.connection.logout()}callWindow(e,t,n,r){return __awaiter$7(this,void 0,void 0,(function*(){const i=t.name,o={domain:e,operation:i,data:n},l=`Internal Platform-> ${e} Domain Communication Error. Attempted calling client window: ${JSON.stringify(r)} for operation ${i}. `;if(t.dataDecoder){const e=t.dataDecoder.run(o.data);if(!e.ok)throw new Error(`${l} OutBound validation failed: ${JSON.stringify(e.error)}`)}const s=yield this.transmitMessage(GlueClientControlName,o,l,r,{methodResponseTimeoutMs:3e4,waitTimeoutMs:3e4});if(t.resultDecoder){const e=t.resultDecoder.run(s);if(!e.ok)throw new Error(`${l} Result validation failed when calling window: ${JSON.stringify(r)} for operation ${i}: ${JSON.stringify(e.error)}`)}return s}))}setStartContext(e,t,n){return PromisePlus(((r,i)=>{let o;const l=waitFor(2,(()=>{r(),o()})),s=`___${n}___${e}`;(this._clientGlue.contexts.all().some((e=>e===s))?this.waitContextDestroy(s):Promise.resolve()).then((()=>this._clientGlue.contexts.subscribe(s,l))).then((e=>(o=e,this._systemGlue.contexts.set(s,t)))).then(l).catch(i)}),1e4,`Timed out waiting to set the ${n} context for: ${e}`)}waitContextDestroy(e){return new Promise(((t,n)=>{let r=0;const i=setInterval((()=>{const o=this._clientGlue.contexts.all().some((t=>t===e));if(++r,!o)return clearInterval(i),void t();50===r&&(clearInterval(i),n(`Timed out waiting for context: ${e} to disappear`))}),100)}))}clearContext(e,t){return __awaiter$7(this,void 0,void 0,(function*(){const n=`___${t}___${e}`;this._systemGlue.contexts.all().some((e=>e===n))&&(yield this._systemGlue.contexts.destroy(n))}))}preserveAllWorkspaceWindowsContext(e){return __awaiter$7(this,void 0,void 0,(function*(){const t=this.sessionStorage.pickWorkspaceClients((t=>t.workspaceId===e));for(const e of t){const t=yield this._systemGlue.contexts.get(`___window___${e.windowId}`);t&&("object"!=typeof t||Object.keys(t).length)&&(yield this._systemGlue.contexts.set(`___window-hibernation___${e.windowId}`,t))}}))}pullHibernatedContext(e){return __awaiter$7(this,void 0,void 0,(function*(){const t=`___window-hibernation___${e}`;if(!this._systemGlue.contexts.all().some((e=>e===t)))return;const n=yield this._systemGlue.contexts.get(t);return yield this._systemGlue.contexts.destroy(t),n}))}getServers(){return this._clientGlue.interop.servers()}subscribeForServerAdded(e){return this._clientGlue.interop.serverAdded(e)}subscribeForMethodAdded(e){return this._clientGlue.interop.methodAdded(e)}invokeMethod(e,t,n,r,i,o){return this._clientGlue.interop.invoke(e,t,n,r,i,o)}setContext(e,t){return this._systemGlue.contexts.set(e,t)}switchTransport(e,t){if("contextsTrack"===t)return this._contextsTrackingGlue?this._contextsTrackingGlue.connection.switchTransport(e):Promise.resolve({success:!0});return("system"===t?this._systemGlue:this._clientGlue).connection.switchTransport(e)}onDisconnected(e){return this._systemGlue.connection.disconnected(e)}getSystemGlueTransportName(){return this._systemGlue.connection.transport.name()}importLayout(e){return __awaiter$7(this,void 0,void 0,(function*(){yield this._clientGlue.layouts.import([e],"merge")}))}getLayout(e){return __awaiter$7(this,void 0,void 0,(function*(){return yield this._clientGlue.layouts.get(e,"Global")}))}openWindow(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){this._clientGlue.windows.list().find((t=>t.name===e.name))&&(e.name=`${e.name}-${nanoid(7)}`);const o={context:e.context,top:null===(t=e.bounds)||void 0===t?void 0:t.top,left:null===(n=e.bounds)||void 0===n?void 0:n.left,width:null===(r=e.bounds)||void 0===r?void 0:r.width,height:null===(i=e.bounds)||void 0===i?void 0:i.height,layoutComponentId:e.layoutComponentId};yield this._clientGlue.windows.open(e.name,e.url,o)}))}startApp(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){const o={waitForAGMReady:!1,top:null===(t=e.bounds)||void 0===t?void 0:t.top,left:null===(n=e.bounds)||void 0===n?void 0:n.left,width:null===(r=e.bounds)||void 0===r?void 0:r.width,height:null===(i=e.bounds)||void 0===i?void 0:i.height,layoutComponentId:e.layoutComponentId};yield this._clientGlue.appManager.application(e.name).start(e.context,o)}))}getOrCreateWorkspaceFrame({bounds:e,layoutComponentId:t,frameId:n}){return __awaiter$7(this,void 0,void 0,(function*(){return n?yield this.workspaces.getFrame((e=>e.id===n)):yield this.workspaces.createEmptyFrame({frameConfig:{bounds:e||void 0},layoutComponentId:t||void 0})}))}getAppNameByInstanceId(e){var t;return null===(t=this._clientGlue.interop.servers().find((t=>t.instance===e)))||void 0===t?void 0:t.application}getAllWindowNames(){return this._clientGlue.windows.list().map((e=>e.name))}getAllOpenedIds(){return this._clientGlue.windows.list().map((e=>e.id))}getAllOtherNonPlatformWindows(e){return this._clientGlue.windows.list().filter((t=>"Platform"!==t.name&&t.id!==e))}getAllOpenedFrameIds(){return __awaiter$7(this,void 0,void 0,(function*(){return(yield this.workspaces.getAllFrames()).map((e=>e.id))}))}getAllApplicationNames(){return this._clientGlue.appManager.applications().map((e=>e.name))}getAllApplications(){return this._clientGlue.appManager.applications()}getAllLayoutsSummaries(){return this._clientGlue.layouts.getAll("Global")}getAllWorkspacesSummaries(){return this._clientGlue.layouts.getAll("Workspace")}getWorkspaceWindowById(e){var t;return __awaiter$7(this,void 0,void 0,(function*(){return null===(t=this._clientGlue.workspaces)||void 0===t?void 0:t.getWindow((t=>t.id===e))}))}getWindowById(e){return this._clientGlue.windows.list().find((t=>t.id===e))}getAllWorkspacesFrames(){return __awaiter$7(this,void 0,void 0,(function*(){return yield this.workspaces.getAllFrames()}))}getWorkspacesByFrameId(e){return __awaiter$7(this,void 0,void 0,(function*(){return yield this.workspaces.getAllWorkspaces((t=>t.frameId===e))}))}registerProvider(e){if(!this._clientGlue.search)throw new Error("Cannot start the search provider for Glue42 Core Plus, because the Search API is missing");return this._clientGlue.search.registerProvider(e)}processServerApplicationsData(e){return __awaiter$7(this,void 0,void 0,(function*(){if(!e||!e.data)return;const t=e.data,n=yield this._clientGlue.appManager.inMemory.import(t,"merge");n.errors&&n.errors.length&&n.errors.forEach((e=>{var t;null===(t=this.logger)||void 0===t||t.warn(`App: ${e.app} was not imported, because of error: ${e.error}`)}))}))}initSystemGlue(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){const r=yield this.portsBridge.createInternalClient(),i=null!==(n=null===(t=null==e?void 0:e.systemLogger)||void 0===t?void 0:t.level)&&void 0!==n?n:"warn";return yield IOConnectCoreFactory({application:"Platform-System",gateway:{webPlatform:{port:r}},logger:i,identity:{instance:this._systemSettings.systemInstanceId}})}))}setUpCtxTracking(e){return __awaiter$7(this,void 0,void 0,(function*(){if(this._config.connection.preferred)return yield this.initContextsTrackingGlue({reAnnounceKnownContexts:!0,trackAllContexts:!0},e)}))}initContextsTrackingGlue(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){const o=yield this.portsBridge.createInternalClient();return yield IOConnectCoreFactory({application:"Platform-Contexts-Track",gateway:{webPlatform:{port:o}},logger:null!==(i=null===(r=null===(n=null==t?void 0:t.browser)||void 0===n?void 0:n.systemLogger)||void 0===r?void 0:r.level)&&void 0!==i?i:"warn",contexts:e,identity:{instance:this._systemSettings.ctxTrackInstanceId}})}))}registerClientWindow(e){if(e){const e=this.sessionStorage.getPlatformFrame();if(this._platformClientWindowId=e?e.windowId:window.name?window.name:`g42-${shortid$2.generate()}`,!e){const e={windowId:this.platformWindowId,active:!0,isPlatform:!0};this.sessionStorage.saveFrameData(e)}return void(window.name=this.platformWindowId)}const t=this.sessionStorage.getWindowDataByName("Platform");this._platformClientWindowId=t?t.windowId:window.name?window.name:`g42-${shortid$2.generate()}`,t||this.sessionStorage.saveWindowData({name:"Platform",windowId:this.platformWindowId}),window.name=this.platformWindowId}createMethodAsync(e,t){return __awaiter$7(this,void 0,void 0,(function*(){yield this._systemGlue.interop.registerAsync(e,t)}))}createStream(e){return __awaiter$7(this,void 0,void 0,(function*(){return this._systemGlue.interop.createStream(e)}))}transmitMessage(e,t,n,r,i){return __awaiter$7(this,void 0,void 0,(function*(){let o;try{if(o=yield this._systemGlue.interop.invoke(e,t,r,i),!o)throw new Error(`${n} Received unsupported result from the client - empty result`);if(!Array.isArray(o.all_return_values)||0===o.all_return_values.length)throw new Error(`${n} Received unsupported result from the client - empty values collection`)}catch(e){if(e&&e.all_errors&&e.all_errors.length){const t=e.all_errors[0].message;throw new Error(`${n} -> Inner message: ${t}`)}throw new Error(`${n} -> Inner message: ${e.message}`)}return o.all_return_values[0].returned}))}}class PortsBridge{constructor(e,t,n){this.gateway=e,this.sessionStorage=t,this.ioc=n,this.registry=CallbackRegistryFactory(),this.allPorts={},this.allClients=[],this.unLoadStarted=!1,this.isPreferredActivated=!1,this.transactionsController=this.ioc.transactionsController}get logger(){return logger.get("ports.bridge.controller")}shutdown(){window.removeEventListener("message",this._genericMessageHandler),window.removeEventListener("unload",this._unloaderHandler),this.registry.clear(),this.allPorts={},this.allClients=[],this.isPreferredActivated=!1,this.unLoadStarted=!1}configure(e){return __awaiter$7(this,void 0,void 0,(function*(){this.startUpPromise=new Promise((e=>{this.startupResolve=e}));const t=this.sessionStorage.getSystemSettings();if(!t)throw new Error("Cannot initiate the platform port bridge, because the system settings are not defined");this._communicationId=t.systemInstanceId,yield this.gateway.start(null==e?void 0:e.gateway),this.setupListeners()}))}start(){this.startupResolve()}createInternalClient(){return __awaiter$7(this,void 0,void 0,(function*(){const e=this.ioc.createMessageChannel();return yield this.gateway.setupInternalClient(e.port1),e.port2}))}onClientUnloaded(e){return this.registry.add("client-unloaded",e)}handleExtConnectionRequest(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){const r=e.glue42core;if(!!!r.parentWindowId){const e=r.clientId,t={windowId:e,name:e};yield this.ioc.windowsController.processNewWindow(t)}yield this.gateway.connectExtClient(t,this.removeClient.bind(this));const i=null===(n=this.sessionStorage.getWindowDataByName("Platform"))||void 0===n?void 0:n.windowId,o={glue42core:{type:Glue42CoreMessageTypes.connectionAccepted.name,parentWindowId:i,appName:"ext-no-app",clientId:r.clientId,clientType:"child"}};this.allPorts[r.clientId]=t,t.postMessage(o)}))}setActivePreferredTransportConfig(e){"secondary"!==e.type?delete this.activePreferredTransportConfig:this.activePreferredTransportConfig=e}setPreferredActivated(){this.isPreferredActivated=!0}switchAllClientsTransport(e){return __awaiter$7(this,void 0,void 0,(function*(){const t=Object.keys(this.allPorts).map((t=>this.sendClientPortRequest({type:Glue42CoreMessageTypes.transportSwitchRequest.name,timeout:defaultClientPortRequestTimeoutMS,clientId:t,args:{switchSettings:e}})));yield Promise.all(t)}))}checkClientsPreferredLogic(){return __awaiter$7(this,void 0,void 0,(function*(){const e=Object.keys(this.allPorts).map((e=>this.sendClientPortRequest({type:Glue42CoreMessageTypes.checkPreferredLogic.name,timeout:defaultClientPreferredLogicTestTimeoutMS,clientId:e})));try{return yield Promise.all(e),{success:!0}}catch(e){return{success:!1}}}))}checkClientsPreferredConnection(e){return __awaiter$7(this,void 0,void 0,(function*(){const t=Object.keys(this.allPorts).map((t=>this.sendClientPortRequest({type:Glue42CoreMessageTypes.checkPreferredConnection.name,args:{url:e},timeout:defaultClientPortRequestTimeoutMS,clientId:t})));try{return yield Promise.all(t),{success:!0}}catch(e){return{success:!1}}}))}removeGwClient(e){const t=this.allClients.find((t=>t.bridgeInstanceId===e));t&&(this.allClients=this.allClients.filter((t=>t.bridgeInstanceId!==e)),t.client.disconnect(),this.allPorts[t.clientId]&&delete this.allPorts[t.clientId])}unloader(){this.unLoadStarted=!0;for(const e in this.allPorts)this.allPorts[e].postMessage({type:"platformUnload"})}genericMessageHandler(e){var t;const n=null===(t=e.data)||void 0===t?void 0:t.glue42core;if(n&&!this.unLoadStarted)if(n.type!==Glue42CoreMessageTypes.clientUnload.name)n.type!==Glue42CoreMessageTypes.connectionRequest.name?n.type!==Glue42CoreMessageTypes.platformPing.name?n.type!==Glue42CoreMessageTypes.parentPing.name||this.startUpPromise.then((()=>this.handleParentPing(e.source,e.origin))):this.startUpPromise.then((()=>this.handlePlatformPing(e.source,e.origin))):this.startUpPromise.then((()=>this.handleRemoteConnectionRequest(e.source,e.origin,n.clientId,n.clientType,n.bridgeInstanceId,n.selfAssignedWindowId)));else{const t={windowId:n.data.ownWindowId,win:e.source};this.registry.execute("client-unloaded",t)}}handleRemoteConnectionRequest(e,t,n,r,i,o){var l;return __awaiter$7(this,void 0,void 0,(function*(){const s=this.ioc.createMessageChannel(),a=yield this.gateway.connectClient(s.port1);this.setupGwClientPort({client:a,clientId:n,clientPort:s.port1}),this.allClients.push({client:a,bridgeInstanceId:i,clientId:n});const u=this.sessionStorage.getBridgeInstanceData(i),c=null==u?void 0:u.appName,h=null===(l=this.sessionStorage.getWindowDataByName("Platform"))||void 0===l?void 0:l.windowId,d={glue42core:{type:Glue42CoreMessageTypes.connectionAccepted.name,port:s.port2,communicationId:this._communicationId,isPreferredActivated:this.isPreferredActivated,parentWindowId:h,appName:c,clientId:n,clientType:r}};o&&(yield this.ioc.windowsController.registerSelfAssignedWindow({windowId:o,name:o},o)),e.postMessage(d,t,[s.port2])}))}handleParentPing(e,t){const n={glue42core:{type:Glue42CoreMessageTypes.parentReady.name}};e.postMessage(n,t)}handlePlatformPing(e,t){const n={glue42core:{type:Glue42CoreMessageTypes.platformReady.name}};e.postMessage(n,t)}removeClient(e,t,n){if(!e)return;if(this.allPorts[e]&&!n&&delete this.allPorts[e],!t)return;const r={windowId:e};this.registry.execute("client-unloaded",r)}setupGwClientPort(e){this.allPorts[e.clientId]&&this.allPorts[e.clientId].onmessage&&(this.allPorts[e.clientId].onmessage=null),this.allPorts[e.clientId]=e.clientPort,e.clientPort.onmessage=t=>{var n,r;const i=null===(n=t.data)||void 0===n?void 0:n.glue42core;if(i&&(i.type===Glue42CoreMessageTypes.clientUnload.name||i.type===Glue42CoreMessageTypes.gatewayDisconnect.name))return this.removeClient(i.data.clientId,!1,i.type===Glue42CoreMessageTypes.gatewayDisconnect.name),void(this.allClients.some((e=>e.clientId===i.data.clientId))&&(this.allClients=this.allClients.filter((e=>e.clientId!==i.data.clientId)),e.client.disconnect()));if(i&&i.type===Glue42CoreMessageTypes.transportSwitchResponse.name){i.args.success?this.transactionsController.completeTransaction(i.transactionId):this.transactionsController.failTransaction(i.transactionId,`The client: ${e.clientId} could not connect using the provided transport config.`)}else if(i&&i.type===Glue42CoreMessageTypes.getCurrentTransport.name){const t=i.transactionId;e.clientPort.postMessage({type:Glue42CoreMessageTypes.getCurrentTransportResponse.name,args:{transportState:this.getCurrentTransportState()},transactionId:t})}else{if(i&&i.type===Glue42CoreMessageTypes.checkPreferredLogicResponse.name)return this.transactionsController.completeTransaction(i.transactionId);if(i&&i.type===Glue42CoreMessageTypes.checkPreferredConnectionResponse.name){const t=i.args;return t.error?this.transactionsController.failTransaction(i.transactionId,t.error):t.live?this.transactionsController.completeTransaction(i.transactionId):this.transactionsController.failTransaction(i.transactionId,`Client ${e.clientId} could not connect to the preferred WS.`)}this.allClients.every((t=>t.client!==e.client))?null===(r=this.logger)||void 0===r||r.trace(`Ignoring a protocol message, because the destination client has been disconnected: ${JSON.stringify(t.data)}`):e.client.send(t.data)}}}getCurrentTransportState(){var e;const t=this.ioc.glueController.getSystemGlueTransportName();return{transportName:t,type:t===webPlatformTransportName?"default":"secondary",transportConfig:t===webPlatformTransportName||null===(e=this.activePreferredTransportConfig)||void 0===e?void 0:e.transportConfig}}sendClientPortRequest(e){const t=this.allPorts[e.clientId];if(!t)throw new Error(`Cannot sent port request: ${e.type} to ${e.clientId}, because there is no such client`);const n=this.transactionsController.createTransaction(e.type,e.timeout||defaultClientPortRequestTimeoutMS),r=e.type,i=e.args;return t.postMessage({type:r,args:i,transactionId:n.id}),n.lock}setupListeners(){this._genericMessageHandler=this.genericMessageHandler.bind(this),window.addEventListener("message",this._genericMessageHandler),this._unloaderHandler=this.unloader.bind(this),window.addEventListener("unload",this._unloaderHandler)}}const windowOperationDecoder=oneOf$1(constant$1("openWindow"),constant$1("windowHello"),constant$1("getUrl"),constant$1("getTitle"),constant$1("setTitle"),constant$1("moveResize"),constant$1("focus"),constant$1("close"),constant$1("getBounds"),constant$1("getFrameBounds"),constant$1("registerWorkspaceWindow"),constant$1("unregisterWorkspaceWindow"),constant$1("operationCheck"),constant$1("focusChange"),constant$1("getChannel")),openWindowConfigDecoder=object$1({name:nonEmptyStringDecoder$1,url:nonEmptyStringDecoder$1,options:optional$1(windowOpenSettingsDecoder)});object$1({windowId:nonEmptyStringDecoder$1,name:nonEmptyStringDecoder$1});const simpleWindowDecoder=object$1({windowId:nonEmptyStringDecoder$1}),windowBoundsResultDecoder=object$1({windowId:nonEmptyStringDecoder$1,bounds:windowBoundsDecoder}),frameWindowBoundsResultDecoder=object$1({bounds:windowBoundsDecoder}),windowUrlResultDecoder=object$1({windowId:nonEmptyStringDecoder$1,url:nonEmptyStringDecoder$1}),windowMoveResizeConfigDecoder=object$1({windowId:nonEmptyStringDecoder$1,top:optional$1(number$1()),left:optional$1(number$1()),width:optional$1(nonNegativeNumberDecoder$1),height:optional$1(nonNegativeNumberDecoder$1),relative:optional$1(boolean())}),windowTitleConfigDecoder=object$1({windowId:nonEmptyStringDecoder$1,title:string$1()}),windowChannelResultDecoder=object$1({channel:optional$1(nonEmptyStringDecoder$1)}),workspacesOperationDecoder=oneOf$1(constant$1("isWindowInWorkspace"),constant$1("createWorkspace"),constant$1("createFrame"),constant$1("initFrame"),constant$1("getAllFramesSummaries"),constant$1("getFrameSummary"),constant$1("getAllWorkspacesSummaries"),constant$1("getWorkspaceSnapshot"),constant$1("getAllLayoutsSummaries"),constant$1("openWorkspace"),constant$1("deleteLayout"),constant$1("saveLayout"),constant$1("importLayout"),constant$1("exportAllLayouts"),constant$1("restoreItem"),constant$1("maximizeItem"),constant$1("focusItem"),constant$1("closeItem"),constant$1("resizeItem"),constant$1("moveFrame"),constant$1("getFrameSnapshot"),constant$1("forceLoadWindow"),constant$1("ejectWindow"),constant$1("setItemTitle"),constant$1("moveWindowTo"),constant$1("addWindow"),constant$1("addContainer"),constant$1("bundleWorkspace"),constant$1("bundleItem"),constant$1("changeFrameState"),constant$1("getFrameState"),constant$1("getFrameBounds"),constant$1("frameHello"),constant$1("hibernateWorkspace"),constant$1("resumeWorkspace"),constant$1("getWorkspacesConfig"),constant$1("lockWorkspace"),constant$1("lockContainer"),constant$1("lockWindow"),constant$1("pinWorkspace"),constant$1("unpinWorkspace"),constant$1("getWorkspaceIcon"),constant$1("setWorkspaceIcon"),constant$1("checkStarted"),constant$1("getPlatformFrameId"),constant$1("getWorkspaceWindowsOnLayoutSaveContext"),constant$1("getWorkspacesLayouts"),constant$1("setMaximizationBoundary"),constant$1("operationCheck"),constant$1("getWorkspaceWindowFrameBounds"),constant$1("focusChange")),frameHelloDecoder=object$1({windowId:optional$1(nonEmptyStringDecoder$1)}),workspaceWindowDataDecoder=object$1({name:nonEmptyStringDecoder$1,windowId:nonEmptyStringDecoder$1,frameId:nonEmptyStringDecoder$1,workspaceId:optional$1(nonEmptyStringDecoder$1),appName:optional$1(nonEmptyStringDecoder$1),context:optional$1(anyJson$1()),title:optional$1(nonEmptyStringDecoder$1)}),isWindowInSwimlaneResultDecoder=object$1({inWorkspace:boolean()}),allParentDecoder=oneOf$1(constant$1("workspace"),constant$1("row"),constant$1("column"),constant$1("group")),subParentDecoder=oneOf$1(constant$1("row"),constant$1("column"),constant$1("group")),frameStateDecoder=oneOf$1(constant$1("maximized"),constant$1("minimized"),constant$1("normal"));object$1({saveLayout:optional$1(boolean())});const deleteLayoutConfigDecoder=object$1({name:nonEmptyStringDecoder$1}),swimlaneWindowDefinitionDecoder=object$1({type:optional$1(constant$1("window")),appName:optional$1(nonEmptyStringDecoder$1),windowId:optional$1(nonEmptyStringDecoder$1),context:optional$1(anyJson$1())}),strictSwimlaneWindowDefinitionDecoder=object$1({type:constant$1("window"),appName:optional$1(nonEmptyStringDecoder$1),windowId:optional$1(nonEmptyStringDecoder$1),context:optional$1(anyJson$1())}),parentDefinitionDecoder=object$1({type:optional$1(subParentDecoder),children:optional$1(lazy((()=>array$1(oneOf$1(swimlaneWindowDefinitionDecoder,parentDefinitionDecoder))))),config:optional$1(anyJson$1())}),groupDefinitionConfigDecoder=object$1({minWidth:optional$1(number$1()),maxWidth:optional$1(number$1()),minHeight:optional$1(number$1()),maxHeight:optional$1(number$1()),allowExtract:optional$1(boolean()),allowReorder:optional$1(boolean()),allowDrop:optional$1(boolean()),allowDropHeader:optional$1(boolean()),allowDropLeft:optional$1(boolean()),allowDropTop:optional$1(boolean()),allowDropRight:optional$1(boolean()),allowDropBottom:optional$1(boolean()),showMaximizeButton:optional$1(boolean()),showEjectButton:optional$1(boolean()),showAddWindowButton:optional$1(boolean())}),rowDefinitionConfigDecoder=object$1({minHeight:optional$1(number$1()),maxHeight:optional$1(number$1()),allowDrop:optional$1(boolean()),allowSplitters:optional$1(boolean()),isPinned:optional$1(boolean()),maximizationBoundary:optional$1(boolean())}),columnDefinitionConfigDecoder=object$1({minWidth:optional$1(number$1()),maxWidth:optional$1(number$1()),allowDrop:optional$1(boolean()),allowSplitters:optional$1(boolean()),isPinned:optional$1(boolean()),maximizationBoundary:optional$1(boolean())}),strictColumnDefinitionDecoder=object$1({type:constant$1("column"),children:optional$1(lazy((()=>array$1(oneOf$1(strictSwimlaneWindowDefinitionDecoder,strictParentDefinitionDecoder))))),config:optional$1(columnDefinitionConfigDecoder)}),strictRowDefinitionDecoder=object$1({type:constant$1("row"),children:optional$1(lazy((()=>array$1(oneOf$1(strictSwimlaneWindowDefinitionDecoder,strictParentDefinitionDecoder))))),config:optional$1(rowDefinitionConfigDecoder)}),strictGroupDefinitionDecoder=object$1({type:constant$1("group"),children:optional$1(lazy((()=>array$1(oneOf$1(strictSwimlaneWindowDefinitionDecoder,strictParentDefinitionDecoder))))),config:optional$1(groupDefinitionConfigDecoder)}),strictParentDefinitionDecoder=oneOf$1(strictGroupDefinitionDecoder,strictColumnDefinitionDecoder,strictRowDefinitionDecoder);oneOf$1(string$1().where((e=>"maximized"===e.toLowerCase()),"Expected a case insensitive variation of 'maximized'"),string$1().where((e=>"normal"===e.toLowerCase()),"Expected a case insensitive variation of 'normal'"));const newFrameConfigDecoder=object$1({bounds:optional$1(object$1({left:optional$1(number$1()),top:optional$1(number$1()),width:optional$1(nonNegativeNumberDecoder$1),height:optional$1(nonNegativeNumberDecoder$1)})),frameId:optional$1(nonEmptyStringDecoder$1)}),loadStrategyDecoder=oneOf$1(constant$1("direct"),constant$1("delayed"),constant$1("lazy")),restoreWorkspaceConfigDecoder=object$1({app:optional$1(nonEmptyStringDecoder$1),context:optional$1(anyJson$1()),loadStrategy:optional$1(loadStrategyDecoder),title:optional$1(nonEmptyStringDecoder$1),reuseWorkspaceId:optional$1(nonEmptyStringDecoder$1),frameId:optional$1(nonEmptyStringDecoder$1),lockdown:optional$1(boolean()),activateFrame:optional$1(boolean()),newFrame:optional$1(oneOf$1(newFrameConfigDecoder,boolean())),noTabHeader:optional$1(boolean()),inMemoryLayout:optional$1(boolean()),isPinned:optional$1(boolean()),icon:optional$1(nonEmptyStringDecoder$1),isSelected:optional$1(boolean()),positionIndex:optional$1(nonNegativeNumberDecoder$1)}),openWorkspaceConfigDecoder=object$1({name:nonEmptyStringDecoder$1,restoreOptions:optional$1(restoreWorkspaceConfigDecoder)}),workspaceDefinitionDecoder=object$1({children:optional$1(array$1(oneOf$1(swimlaneWindowDefinitionDecoder,parentDefinitionDecoder))),context:optional$1(anyJson$1()),config:optional$1(object$1({title:optional$1(nonEmptyStringDecoder$1),position:optional$1(nonNegativeNumberDecoder$1),isFocused:optional$1(boolean()),loadStrategy:optional$1(loadStrategyDecoder),noTabHeader:optional$1(boolean()),allowDrop:optional$1(boolean()),allowDropLeft:optional$1(boolean()),allowDropTop:optional$1(boolean()),allowDropRight:optional$1(boolean()),allowDropBottom:optional$1(boolean()),allowExtract:optional$1(boolean()),allowWindowReorder:optional$1(boolean()),allowSystemHibernation:optional$1(boolean()),showSaveButton:optional$1(boolean()),allowWorkspaceTabReorder:optional$1(boolean()),allowWorkspaceTabExtract:optional$1(boolean()),showCloseButton:optional$1(boolean()),allowSplitters:optional$1(boolean()),positionIndex:optional$1(nonNegativeNumberDecoder$1)})),frame:optional$1(object$1({reuseFrameId:optional$1(nonEmptyStringDecoder$1),newFrame:optional$1(oneOf$1(boolean(),newFrameConfigDecoder))}))});object$1({type:allParentDecoder,definition:optional$1(oneOf$1(workspaceDefinitionDecoder,parentDefinitionDecoder))});const workspaceCreateConfigDecoder=intersection(workspaceDefinitionDecoder,object$1({saveConfig:optional$1(object$1({saveLayout:optional$1(boolean())}))})),getFrameSummaryConfigDecoder=object$1({itemId:nonEmptyStringDecoder$1}),frameSummaryDecoder=object$1({id:nonEmptyStringDecoder$1,isFocused:optional$1(boolean()),isInitialized:optional$1(boolean()),initializationContext:optional$1(object$1({context:optional$1(anyJson$1())}))});object$1({id:nonEmptyStringDecoder$1,frameId:nonEmptyStringDecoder$1,positionIndex:number$1(),title:nonEmptyStringDecoder$1,focused:boolean(),layoutName:optional$1(nonEmptyStringDecoder$1),isSelected:optional$1(boolean())}),object$1({type:subParentDecoder,id:nonEmptyStringDecoder$1,frameId:nonEmptyStringDecoder$1,workspaceId:nonEmptyStringDecoder$1,positionIndex:number$1()});const eventTypeDecoder=oneOf$1(constant$1("frame"),constant$1("workspace"),constant$1("container"),constant$1("window"));object$1({type:eventTypeDecoder,branch:nonEmptyStringDecoder$1}),oneOf$1(constant$1("opened"),constant$1("closing"),constant$1("closed"),constant$1("focus"),constant$1("added"),constant$1("loaded"),constant$1("removed"),constant$1("childrenUpdate"),constant$1("containerChange"),constant$1("maximized"),constant$1("restored"),constant$1("minimized"),constant$1("normal"),constant$1("selected"),constant$1("lock-configuration-changed"),constant$1("hibernated"),constant$1("resumed"));const workspaceConfigResultDecoder=object$1({frameId:nonEmptyStringDecoder$1,title:nonEmptyStringDecoder$1,positionIndex:nonNegativeNumberDecoder$1,name:nonEmptyStringDecoder$1,layoutName:optional$1(nonEmptyStringDecoder$1),isHibernated:boolean(),isSelected:boolean(),lastActive:number$1(),allowDrop:optional$1(boolean()),allowExtract:optional$1(boolean()),allowWindowReorder:optional$1(boolean()),allowSystemHibernation:optional$1(boolean()),allowSplitters:optional$1(boolean()),showCloseButton:optional$1(boolean()),showSaveButton:optional$1(boolean()),allowWorkspaceTabReorder:optional$1(boolean()),allowDropLeft:optional$1(boolean()),allowDropTop:optional$1(boolean()),allowDropRight:optional$1(boolean()),allowDropBottom:optional$1(boolean()),showAddWindowButtons:optional$1(boolean()),showEjectButtons:optional$1(boolean()),showWindowCloseButtons:optional$1(boolean()),minWidth:optional$1(number$1()),maxWidth:optional$1(number$1()),minHeight:optional$1(number$1()),maxHeight:optional$1(number$1()),widthInPx:optional$1(number$1()),heightInPx:optional$1(number$1())}),baseChildSnapshotConfigDecoder=object$1({frameId:nonEmptyStringDecoder$1,workspaceId:nonEmptyStringDecoder$1,positionIndex:number$1()}),parentSnapshotConfigDecoder=anyJson$1(),swimlaneWindowSnapshotConfigDecoder=intersection(baseChildSnapshotConfigDecoder,object$1({windowId:optional$1(nonEmptyStringDecoder$1),isMaximized:optional$1(boolean()),isFocused:boolean(),isSelected:optional$1(boolean()),title:optional$1(string$1()),appName:optional$1(nonEmptyStringDecoder$1),context:optional$1(anyJson$1())})),childSnapshotResultDecoder=object$1({id:optional$1(nonEmptyStringDecoder$1),config:oneOf$1(parentSnapshotConfigDecoder,swimlaneWindowSnapshotConfigDecoder),children:optional$1(lazy((()=>array$1(childSnapshotResultDecoder)))),type:oneOf$1(constant$1("window"),constant$1("row"),constant$1("column"),constant$1("group"))}),workspaceSnapshotResultDecoder=object$1({id:nonEmptyStringDecoder$1,config:workspaceConfigResultDecoder,children:array$1(childSnapshotResultDecoder),frameSummary:frameSummaryDecoder,context:optional$1(anyJson$1())}),customWorkspaceChildSnapshotDecoder=object$1({id:nonEmptyStringDecoder$1,config:oneOf$1(parentSnapshotConfigDecoder,swimlaneWindowSnapshotConfigDecoder),children:optional$1(lazy((()=>array$1(customWorkspaceChildSnapshotDecoder)))),type:oneOf$1(constant$1("window"),constant$1("row"),constant$1("column"),constant$1("group"))}),groupLayoutItemDecoder=object$1({type:constant$1("group"),config:anyJson$1(),children:array$1(oneOf$1(windowLayoutItemDecoder))}),columnLayoutItemDecoder=object$1({type:constant$1("column"),config:anyJson$1(),children:array$1(oneOf$1(groupLayoutItemDecoder,windowLayoutItemDecoder,lazy((()=>columnLayoutItemDecoder)),lazy((()=>rowLayoutItemDecoder))))}),rowLayoutItemDecoder=object$1({type:constant$1("row"),config:anyJson$1(),children:array$1(oneOf$1(columnLayoutItemDecoder,groupLayoutItemDecoder,windowLayoutItemDecoder,lazy((()=>rowLayoutItemDecoder))))}),workspaceLayoutDecoder=object$1({name:nonEmptyStringDecoder$1,type:constant$1("Workspace"),metadata:optional$1(anyJson$1()),components:array$1(object$1({type:constant$1("Workspace"),application:optional$1(nonEmptyStringDecoder$1),state:object$1({config:anyJson$1(),context:anyJson$1(),children:array$1(oneOf$1(rowLayoutItemDecoder,columnLayoutItemDecoder,groupLayoutItemDecoder,windowLayoutItemDecoder))})}))}),workspacesLayoutImportConfigDecoder=object$1({layout:workspaceLayoutDecoder,mode:oneOf$1(constant$1("replace"),constant$1("merge"))}),exportedLayoutsResultDecoder=object$1({layouts:array$1(workspaceLayoutDecoder)}),frameSummaryResultDecoder=frameSummaryDecoder,frameSummariesResultDecoder=object$1({summaries:array$1(frameSummaryResultDecoder)}),workspaceSummaryResultDecoder=object$1({id:nonEmptyStringDecoder$1,config:workspaceConfigResultDecoder}),workspaceSummariesResultDecoder=object$1({summaries:array$1(workspaceSummaryResultDecoder)}),frameSnapshotResultDecoder=object$1({id:nonEmptyStringDecoder$1,config:anyJson$1(),workspaces:array$1(workspaceSnapshotResultDecoder)}),layoutSummaryDecoder=object$1({name:nonEmptyStringDecoder$1}),layoutSummariesDecoder=object$1({summaries:array$1(layoutSummaryDecoder)}),simpleWindowOperationSuccessResultDecoder=object$1({windowId:nonEmptyStringDecoder$1}),voidResultDecoder=anyJson$1(),frameStateResultDecoder=object$1({state:frameStateDecoder}),frameBoundsDecoder=object$1({top:number$1(),left:number$1(),width:nonNegativeNumberDecoder$1,height:nonNegativeNumberDecoder$1}),frameBoundsResultDecoder=object$1({bounds:frameBoundsDecoder}),resizeConfigDecoder=object$1({width:optional$1(nonNegativeNumberDecoder$1),height:optional$1(nonNegativeNumberDecoder$1),relative:optional$1(boolean())}),moveConfigDecoder=object$1({top:optional$1(number$1()),left:optional$1(number$1()),relative:optional$1(boolean())}),simpleItemConfigDecoder=object$1({itemId:nonEmptyStringDecoder$1}),frameSnapshotConfigDecoder=object$1({itemId:nonEmptyStringDecoder$1,excludeIds:optional$1(boolean())}),frameStateConfigDecoder=object$1({frameId:nonEmptyStringDecoder$1,requestedState:frameStateDecoder}),setItemTitleConfigDecoder=object$1({itemId:nonEmptyStringDecoder$1,title:nonEmptyStringDecoder$1}),moveWindowConfigDecoder=object$1({itemId:nonEmptyStringDecoder$1,containerId:nonEmptyStringDecoder$1}),resizeItemConfigDecoder=intersection(simpleItemConfigDecoder,resizeConfigDecoder),moveFrameConfigDecoder=intersection(simpleItemConfigDecoder,moveConfigDecoder);object$1({id:nonEmptyStringDecoder$1,type:subParentDecoder});const addWindowConfigDecoder=object$1({definition:swimlaneWindowDefinitionDecoder,parentId:nonEmptyStringDecoder$1,parentType:allParentDecoder}),addContainerConfigDecoder=object$1({definition:strictParentDefinitionDecoder,parentId:nonEmptyStringDecoder$1,parentType:allParentDecoder}),addItemResultDecoder=object$1({itemId:nonEmptyStringDecoder$1,windowId:optional$1(nonEmptyStringDecoder$1)});object$1({live:boolean()});const bundleWorkspaceConfigDecoder=object$1({type:oneOf$1(constant$1("row"),constant$1("column")),workspaceId:nonEmptyStringDecoder$1}),bundleItemConfigDecoder=object$1({type:oneOf$1(constant$1("row"),constant$1("column")),itemId:nonEmptyStringDecoder$1}),workspaceSelectorDecoder=object$1({workspaceId:nonEmptyStringDecoder$1}),containerSummaryResultDecoder=object$1({itemId:nonEmptyStringDecoder$1,config:parentSnapshotConfigDecoder});object$1({frameSummary:frameSummaryDecoder,frameBounds:optional$1(frameBoundsDecoder)}),object$1({workspaceSummary:workspaceSummaryResultDecoder,frameSummary:frameSummaryDecoder,frameBounds:optional$1(frameBoundsDecoder)}),object$1({containerSummary:containerSummaryResultDecoder}),object$1({windowSummary:object$1({itemId:nonEmptyStringDecoder$1,parentId:nonEmptyStringDecoder$1,config:swimlaneWindowSnapshotConfigDecoder})});const workspaceLayoutSaveConfigDecoder=object$1({name:nonEmptyStringDecoder$1,workspaceId:nonEmptyStringDecoder$1,saveContext:optional$1(boolean())}),lockWorkspaceDecoder=object$1({workspaceId:nonEmptyStringDecoder$1,config:optional$1(object$1({allowDrop:optional$1(boolean()),allowDropLeft:optional$1(boolean()),allowDropTop:optional$1(boolean()),allowDropRight:optional$1(boolean()),allowDropBottom:optional$1(boolean()),allowExtract:optional$1(boolean()),allowWindowReorder:optional$1(boolean()),allowSystemHibernation:optional$1(boolean()),allowSplitters:optional$1(boolean()),showCloseButton:optional$1(boolean()),showSaveButton:optional$1(boolean()),allowWorkspaceTabReorder:optional$1(boolean()),showWindowCloseButtons:optional$1(boolean()),showEjectButtons:optional$1(boolean()),showAddWindowButtons:optional$1(boolean())}))}),lockWindowDecoder=object$1({windowPlacementId:nonEmptyStringDecoder$1,config:optional$1(object$1({allowExtract:optional$1(boolean()),allowReorder:optional$1(boolean()),showCloseButton:optional$1(boolean())}))}),lockRowDecoder=object$1({itemId:nonEmptyStringDecoder$1,type:constant$1("row"),config:optional$1(object$1({allowDrop:optional$1(boolean()),allowSplitters:optional$1(boolean())}))}),lockColumnDecoder=object$1({itemId:nonEmptyStringDecoder$1,type:constant$1("column"),config:optional$1(object$1({allowDrop:optional$1(boolean()),allowSplitters:optional$1(boolean())}))}),lockGroupDecoder=object$1({itemId:nonEmptyStringDecoder$1,type:constant$1("group"),config:optional$1(object$1({allowExtract:optional$1(boolean()),allowReorder:optional$1(boolean()),allowDrop:optional$1(boolean()),allowDropHeader:optional$1(boolean()),allowDropLeft:optional$1(boolean()),allowDropTop:optional$1(boolean()),allowDropRight:optional$1(boolean()),allowDropBottom:optional$1(boolean()),showMaximizeButton:optional$1(boolean()),showEjectButton:optional$1(boolean()),showAddWindowButton:optional$1(boolean())}))}),lockContainerDecoder=oneOf$1(lockColumnDecoder,lockGroupDecoder,lockRowDecoder),pinWorkspaceDecoder=object$1({workspaceId:nonEmptyStringDecoder$1,icon:optional$1(nonEmptyStringDecoder$1)}),setWorkspaceIconDecoder=object$1({workspaceId:nonEmptyStringDecoder$1,icon:optional$1(nonEmptyStringDecoder$1)}),workspaceIconDecoder=object$1({icon:optional$1(nonEmptyStringDecoder$1)});object$1({applicationName:optional$1(string$1()),frameConfig:optional$1(newFrameConfigDecoder),context:optional$1(object$1()),layoutComponentId:optional$1(nonEmptyStringDecoder$1)});const restoreWorkspaceDefinitionDecoder=object$1({name:nonEmptyStringDecoder$1,restoreOptions:optional$1(restoreWorkspaceConfigDecoder)});object$1({frameId:nonEmptyStringDecoder$1,workspaces:array$1(oneOf$1(workspaceDefinitionDecoder,restoreWorkspaceDefinitionDecoder))});const getWorkspaceWindowsOnLayoutSaveContextConfigDecoder=object$1({layoutType:oneOf$1(constant$1("Global"),constant$1("Workspace")),layoutName:nonEmptyStringDecoder$1,windowIds:array$1(nonEmptyStringDecoder$1),context:optional$1(anyJson$1()),instances:optional$1(array$1(nonEmptyStringDecoder$1)),ignoreInstances:optional$1(array$1(nonEmptyStringDecoder$1))}),setMaximizationBoundaryConfigDecoder=object$1({itemId:nonEmptyStringDecoder$1,enabled:boolean()}),workspaceWindowOnSaveDataDecoder=object$1({windowId:nonEmptyStringDecoder$1,windowContext:optional$1(anyJson$1())}),getWorkspaceWindowsOnLayoutSaveContextResult=object$1({windowsOnSaveData:array$1(workspaceWindowOnSaveDataDecoder)}),getWorkspacesLayoutsConfigDecoder=object$1({frameId:nonEmptyStringDecoder$1,layoutName:nonEmptyStringDecoder$1,layoutType:oneOf$1(constant$1("Global"),constant$1("Workspace")),context:optional$1(anyJson$1())}),getWorkspacesLayoutsResponseDecoder=object$1({workspaces:array$1(workspaceSnapshotResultDecoder)});class WindowsController{constructor(e,t,n,r){this.glueController=e,this.sessionController=t,this.stateController=n,this.ioc=r,this.started=!1,this.operations={openWindow:{name:"openWindow",execute:this.openWindow.bind(this),dataDecoder:openWindowConfigDecoder},windowHello:{name:"windowHello",execute:this.handleWindowHello.bind(this)},getBounds:{name:"getBounds",dataDecoder:simpleWindowDecoder,resultDecoder:windowBoundsResultDecoder,execute:this.handleGetBounds.bind(this)},getFrameBounds:{name:"getFrameBounds",dataDecoder:simpleWindowDecoder,resultDecoder:frameWindowBoundsResultDecoder,execute:this.handleGetBounds.bind(this)},getUrl:{name:"getUrl",dataDecoder:simpleWindowDecoder,resultDecoder:windowUrlResultDecoder,execute:this.handleGetUrl.bind(this)},moveResize:{name:"moveResize",dataDecoder:windowMoveResizeConfigDecoder,execute:this.handleMoveResize.bind(this)},focus:{name:"focus",dataDecoder:simpleWindowDecoder,execute:this.handleFocus.bind(this)},close:{name:"close",dataDecoder:simpleWindowDecoder,execute:this.handleClose.bind(this)},getTitle:{name:"getTitle",dataDecoder:simpleWindowDecoder,resultDecoder:windowTitleConfigDecoder,execute:this.handleGetTitle.bind(this)},setTitle:{name:"setTitle",dataDecoder:windowTitleConfigDecoder,execute:this.handleSetTitle.bind(this)},registerWorkspaceWindow:{name:"registerWorkspaceWindow",dataDecoder:workspaceWindowDataDecoder,execute:this.registerWorkspaceWindow.bind(this)},unregisterWorkspaceWindow:{name:"unregisterWorkspaceWindow",dataDecoder:simpleWindowDecoder,execute:this.handleWorkspaceClientRemoval.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder,resultDecoder:operationCheckResultDecoder,execute:this.handleOperationCheck.bind(this)},focusChange:{name:"focusChange",dataDecoder:focusEventDataDecoder,execute:this.handleFocusEvent.bind(this)},getChannel:{name:"getChannel",dataDecoder:simpleWindowDecoder,resultDecoder:windowChannelResultDecoder,execute:this.handleGetChannel.bind(this)}}}get logger(){return logger.get("windows.controller")}get moveResizeOperation(){return this.operations.moveResize}get getFrameBoundsOperation(){return this.operations.getFrameBounds}get setTitleOperation(){return this.operations.setTitle}get getBoundsOperation(){return this.operations.getBounds}handlePlatformShutdown(){this.started=!1}start(e){return __awaiter$7(this,void 0,void 0,(function*(){this.clientResponseTimeoutMs=e.windows.windowResponseTimeoutMs,this.defaultBounds=e.windows.defaultWindowOpenBounds,this.started=!0,this.stateController.onWindowDisappeared(this.cleanUpWindow.bind(this))}))}handleControl(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.started)throw new Error("Cannot handle this windows control message, because the controller has not been started");const o=e.data,l=e.commandId,s=windowOperationDecoder.run(e.operation);if(!s.ok)throw new Error(`This window request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(s.error)}`);const a=s.result,u=null===(t=this.operations[a].dataDecoder)||void 0===t?void 0:t.run(o);if(u&&!u.ok)throw new Error(`Windows request for ${a} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(u.error)}`);null===(n=this.logger)||void 0===n||n.debug(`[${l}] ${a} command is valid with data: ${JSON.stringify(o)}`);const c=yield this.operations[a].execute(o,l),h=null===(r=this.operations[a].resultDecoder)||void 0===r?void 0:r.run(c);if(h&&!h.ok)throw new Error(`Windows request for ${a} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(h.error)}`);return null===(i=this.logger)||void 0===i||i.trace(`[${l}] ${a} command was executed successfully`),c}))}getWindowTitle(e,t){return __awaiter$7(this,void 0,void 0,(function*(){return(yield this.handleGetTitle({windowId:e},t)).title}))}getWindowBounds(e,t){return __awaiter$7(this,void 0,void 0,(function*(){return(yield this.handleGetBounds({windowId:e},t)).bounds}))}processNewWindow(e,t,n){var r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(r=this.logger)||void 0===r||r.trace(`processing a new window with id: ${e.windowId} and name: ${e.name}`),this.sessionController.saveWindowData(e),n&&this.stateController.add(n,e.windowId),t&&(null===(i=this.logger)||void 0===i||i.trace(`setting the context for window ${e.windowId}`),yield this.glueController.setStartContext(e.windowId,t,"window")),this.emitStreamData("windowAdded",e)}))}handleWorkspaceClientRemoval(e){return __awaiter$7(this,void 0,void 0,(function*(){this.cleanUpWindow(e.windowId),this.ioc.portsBridge.removeGwClient(e.windowId)}))}handleClientUnloaded(e,t){var n,r,i;if(null===(n=this.logger)||void 0===n||n.trace(`handling unloading of ${e}`),e){if(!t||t.closed)return null===(r=this.logger)||void 0===r||r.trace(`${e} detected as closed, processing window cleanup`),this.cleanUpWindow(e);null===(i=this.logger)||void 0===i||i.trace(`${e} detected as not closed, adding to state controller`),this.stateController.add(t,e)}}cleanUpWindow(e){this.stateController.remove(e);this.sessionController.fullWindowClean(e)&&(this.glueController.clearContext(e,"window").catch((()=>{})),this.emitStreamData("windowRemoved",{windowId:e}))}registerSelfAssignedWindow(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling workspace window registration with id: ${e.windowId} and name: ${e.name}`),this.sessionController.saveWindowData({windowId:e.windowId,name:e.name,selfAssigned:!0}),this.sessionController.saveNonGlue({windowId:e.windowId}),this.emitStreamData("windowAdded",{windowId:e.windowId,name:e.name}),null===(r=this.logger)||void 0===r||r.trace(`[${t}] workspace window registered successfully with id ${e.windowId} and name ${e.name}`)}))}registerWorkspaceWindow(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling workspace window registration with id: ${e.windowId} and name: ${e.name}`),this.sessionController.saveWindowData({windowId:e.windowId,name:e.name}),this.sessionController.saveWorkspaceClient({windowId:e.windowId,frameId:e.frameId,initialTitle:e.title,workspaceId:e.workspaceId}),this.sessionController.saveNonGlue({windowId:e.windowId});const i=yield this.glueController.pullHibernatedContext(e.windowId),o=e.context||i;o&&(yield this.glueController.setStartContext(e.windowId,o,"window")),this.emitStreamData("windowAdded",{windowId:e.windowId,name:e.name}),null===(r=this.logger)||void 0===r||r.trace(`[${t}] workspace window registered successfully with id ${e.windowId} and name ${e.name}`)}))}handleFocusEvent(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling focus event from window id: ${e.windowId} and hasFocus: ${e.hasFocus}`),this.emitStreamData("focusChange",e),null===(r=this.logger)||void 0===r||r.trace(`[${t}] focus event from window id: ${e.windowId} and hasFocus: ${e.hasFocus} handled`)}))}handleOperationCheck(e){return __awaiter$7(this,void 0,void 0,(function*(){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}))}emitStreamData(e,t){var n;null===(n=this.logger)||void 0===n||n.trace(`sending notification of event: ${e} with data: ${JSON.stringify(t)}`),this.glueController.pushSystemMessage("windows",e,t)}openWindow(e,t){var n,r,i,o,l,s,a,u;return __awaiter$7(this,void 0,void 0,(function*(){if(this.sessionController.getWindowDataByName(e.name))throw new Error(`Cannot open a window with name: ${e.name}, because a window with that name already exists.`);null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling open command with a valid name: ${e.name}, url: ${e.url} and options: ${JSON.stringify(e.options)}`);const c=yield this.getStartingBounds(e,t),h=null!==(i=null===(r=e.options)||void 0===r?void 0:r.windowId)&&void 0!==i?i:`g42-${shortid$2.generate()}`,d={name:e.name,windowId:h,initialBounds:c,initialUrl:e.url,initialContext:null===(o=e.options)||void 0===o?void 0:o.context,layoutComponentId:null===(l=e.options)||void 0===l?void 0:l.layoutComponentId},f=`left=${c.left},top=${c.top},width=${c.width},height=${c.height}`;null===(s=this.logger)||void 0===s||s.trace(`[${t}] calling native window open with bounds: ${f}`);const p=window.open(e.url,d.windowId,f);if(!p)throw new Error(`Cannot open window with url: ${e.url} and name: ${e.name}. The most likely reason is that the user has not approved popups or has a blocker.`);return yield this.processNewWindow(d,null===(a=e.options)||void 0===a?void 0:a.context,p),null===(u=this.logger)||void 0===u||u.trace(`[${t}] the new window is opened, saved in session, state and announced, responding to the caller`),d}))}handleWindowHello(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){if(null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a hello message from a real windowId: ${e.windowId}`),e.windowId){this.stateController.remove(e.windowId),this.sessionController.removeNonGlue({windowId:e.windowId});const n=this.sessionController.getWorkspaceClientById(e.windowId);if(n&&n.initialTitle){const r=e.windowId,i=n.initialTitle;PromiseWrap((()=>this.glueController.callWindow("windows",this.operations.setTitle,{windowId:r,title:i},{windowId:r})),this.clientResponseTimeoutMs).catch((e=>{var n;return null===(n=this.logger)||void 0===n?void 0:n.trace(`[${t}] error while setting the workspace window title: ${e.message}`)}))}}const i=!(!e.windowId||!this.sessionController.getFrameData(e.windowId)),o=this.sessionController.getAllWindowsData().map((e=>({windowId:e.windowId,name:e.name})));return null===(r=this.logger)||void 0===r||r.trace(`[${t}] a full list of all current windows has been compiled, sending it to the caller`),{windows:o,isWorkspaceFrame:i}}))}handleGetUrl(e,t){var n;if(!this.sessionController.getWindowDataById(e.windowId))throw new Error(`Cannot get the url of window: ${e.windowId}, because it does not exist for the platform`);null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a get url request for window ${e.windowId}`);const r=`Cannot get the url of window: ${e.windowId}, because it is either a non-glue window or it hasn't initiated it's glue yet`;return PromiseWrap((()=>this.glueController.callWindow("windows",this.operations.getUrl,e,{windowId:e.windowId})),this.clientResponseTimeoutMs,r)}handleGetTitle(e,t){var n;if(!this.sessionController.getWindowDataById(e.windowId))throw new Error(`Cannot get the title of window: ${e.windowId}, because it does not exist for the platform`);null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a get title request for window ${e.windowId}`);const r=`Cannot get the title of window: ${e.windowId}, because it is either a non-glue window or it hasn't initiated it's glue yet`;return PromiseWrap((()=>this.glueController.callWindow("windows",this.operations.getTitle,e,{windowId:e.windowId})),this.clientResponseTimeoutMs,r)}handleSetTitle(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.sessionController.getWindowDataById(e.windowId))throw new Error(`Cannot set the title of window: ${e.windowId}, because it does not exist for the platform`);this.sessionController.getWorkspaceClientById(e.windowId)&&(yield this.ioc.workspacesController.setItemTitle({itemId:e.windowId,title:e.title},t)),null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a set title request for window ${e.windowId} and title: ${e.title}`);const r=`Cannot set the title of window: ${e.windowId}, because it is either a non-glue window or it hasn't initiated it's glue yet`;yield PromiseWrap((()=>this.glueController.callWindow("windows",this.operations.setTitle,e,{windowId:e.windowId})),this.clientResponseTimeoutMs,r)}))}handleMoveResize(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){if(this.sessionController.getWorkspaceClientById(e.windowId))throw new Error(`Cannot move resize window id ${e.windowId}, because it is in a workspace. Consider using the workspaces API to get more control`);const r=this.sessionController.getWindowDataById(e.windowId);if(!r)throw new Error(`Cannot move resize window: ${e.windowId}, because it does not exist for the platform`);if("Platform"===r.name)throw new Error("Move-resizing the main application is not allowed");null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a move resize request for window ${e.windowId} and data: ${JSON.stringify(e)}`);const i=`Cannot move resize window: ${e.windowId}, because it is either a non-glue window or it hasn't initiated it's glue yet`;yield PromiseWrap((()=>this.glueController.callWindow("windows",this.operations.moveResize,e,{windowId:e.windowId})),this.clientResponseTimeoutMs,i),yield this.pause(500)}))}handleGetBounds(e,t){var n;if(this.sessionController.getWorkspaceClientById(e.windowId))throw new Error(`Cannot get bounds of window id ${e.windowId}, because it is in a workspace. Consider using the workspaces API to get more info`);if(!this.sessionController.getWindowDataById(e.windowId))throw new Error(`Cannot get the bounds of window: ${e.windowId}, because it does not exist for the platform`);null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a get bounds request for window ${e.windowId}`);const r=`Cannot get the bounds of window: ${e.windowId}, because it is either a non-glue window or it hasn't initiated it's glue yet`;return PromiseWrap((()=>this.glueController.callWindow("windows",this.operations.getBounds,e,{windowId:e.windowId})),this.clientResponseTimeoutMs,r)}handleFocus(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){if(this.sessionController.getWorkspaceClientById(e.windowId))throw new Error(`Cannot focus window id ${e.windowId}, because it is in a workspace. Consider using the workspaces API to get more control`);const r=this.sessionController.getWindowDataById(e.windowId);if(!r)throw new Error(`Cannot focus window: ${e.windowId}, because it is not known by the platform`);null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a focus request for window ${e.windowId}`),window.open(void 0,r.windowId)}))}handleClose(e,t){var n,r,i,o,l;return __awaiter$7(this,void 0,void 0,(function*(){if(this.sessionController.getWorkspaceClientById(e.windowId))return null===(n=this.logger)||void 0===n||n.trace(`[${t}] this window is detected as a workspace window, closing via the workspaces controller`),void(yield this.ioc.workspacesController.closeItem({itemId:e.windowId},t));if(this.sessionController.getInstanceData(e.windowId))return null===(r=this.logger)||void 0===r||r.trace(`[${t}] this window is detected as an application instance, closing via the appManager controller`),void(yield this.ioc.applicationsController.handleInstanceStop({id:e.windowId},t));const s=this.sessionController.getWindowDataById(e.windowId);if(!s)throw new Error(`Cannot close window: ${e.windowId}, because it is not known by the platform`);if("Platform"===s.name)throw new Error("Closing the main application is not allowed");if(s.selfAssigned)throw new Error("Closing self-assigned windows (windows not opened by the Glue API) is not allowed");null===(i=this.logger)||void 0===i||i.trace(`[${t}] handling a close request for window ${e.windowId}`),null===(o=window.open(void 0,s.windowId))||void 0===o||o.close(),this.cleanUpWindow(s.windowId),null===(l=this.logger)||void 0===l||l.trace(`[${t}] window ${e.windowId} has been closed, removed from session, state and announced`)}))}getStartingBounds(e,t){var n,r,i,o,l,s,a,u,c,h;return __awaiter$7(this,void 0,void 0,(function*(){const d={top:null!==(r=null===(n=e.options)||void 0===n?void 0:n.top)&&void 0!==r?r:this.defaultBounds.top,left:null!==(o=null===(i=e.options)||void 0===i?void 0:i.left)&&void 0!==o?o:this.defaultBounds.left,height:null!==(s=null===(l=e.options)||void 0===l?void 0:l.height)&&void 0!==s?s:this.defaultBounds.height,width:null!==(u=null===(a=e.options)||void 0===a?void 0:a.width)&&void 0!==u?u:this.defaultBounds.width};if(!(null===(c=e.options)||void 0===c?void 0:c.relativeTo))return d;const f=e.options.relativeTo,p=this.sessionController.getWindowDataById(f);if(!p)return d;try{const n=(yield this.handleGetBounds({windowId:p.windowId},t)).bounds,r=null!==(h=e.options.relativeDirection)&&void 0!==h?h:"right";return getRelativeBounds(d,n,r)}catch(e){return d}}))}pause(e){return new Promise((t=>setTimeout(t,e)))}handleGetChannel(e,t){var n;if(!this.sessionController.getWindowDataById(e.windowId))throw new Error(`Cannot get the channel of window: ${e.windowId}, because it does not exist for the platform`);null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a get channel request for window ${e.windowId}`);const r=`Cannot get the channel of window: ${e.windowId}, because it is either a non-glue window or it hasn't initiated it's glue yet`;return PromiseWrap((()=>this.glueController.callWindow("windows",this.operations.getChannel,e,{windowId:e.windowId})),this.clientResponseTimeoutMs,r)}}class SessionStorageController{constructor(){this.windowsNamespace="g42_core_windows",this.instancesNamespace="g42_core_instances",this.bridgeInstancesNamespace="g42_core_bridge",this.nonGlueNamespace="g42_core_nonglue",this.workspaceWindowsNamespace="g42_core_workspace_clients",this.workspaceFramesNamespace="g42_core_workspace_frames",this.workspaceHibernationNamespace="g42_core_workspace_hibernation",this.globalLayoutsNamespace="g42_core_layouts_global",this.workspaceLayoutsNamespace="g42_core_layouts_workspace",this.appDefsNamespace="g42_core_app_definitions",this.appDefsInmemoryNamespace="g42_core_app_definitions_inmemory",this.notificationsNamespace="g42_core_notifications",this.systemNamespace="g42_system",this.workspaceFrameCache="g42_workspace_frame_cache",this.allNamespaces=[this.bridgeInstancesNamespace,this.windowsNamespace,this.instancesNamespace,this.nonGlueNamespace,this.workspaceWindowsNamespace,this.workspaceFramesNamespace,this.globalLayoutsNamespace,this.workspaceLayoutsNamespace,this.appDefsNamespace,this.workspaceHibernationNamespace,this.appDefsInmemoryNamespace,this.notificationsNamespace,this.workspaceFrameCache]}get logger(){return logger.get("session.storage")}start(){this.sessionStorage=window.sessionStorage,this.allNamespaces.forEach((e=>{this.sessionStorage.getItem(e)||this.sessionStorage.setItem(e,JSON.stringify([]))}))}shutdown(){this.allNamespaces.forEach((e=>{this.sessionStorage.setItem(e,JSON.stringify([]))})),this.sessionStorage.removeItem(this.systemNamespace)}getSystemSettings(){const e=this.sessionStorage.getItem(this.systemNamespace);if(e)return JSON.parse(e)}setSystemSettings(e){this.sessionStorage.setItem(this.systemNamespace,JSON.stringify(e))}getTimeout(e){var t;return null===(t=JSON.parse(this.sessionStorage.getItem(this.workspaceHibernationNamespace)).find((t=>t.workspaceId===e)))||void 0===t?void 0:t.timeout}removeTimeout(e){const t=JSON.parse(this.sessionStorage.getItem(this.workspaceHibernationNamespace));t.find((t=>t.workspaceId===e))&&this.sessionStorage.setItem(this.workspaceHibernationNamespace,JSON.stringify(t.filter((t=>t.workspaceId!==e))))}saveTimeout(e,t){const n=JSON.parse(this.sessionStorage.getItem(this.workspaceHibernationNamespace));n.some((t=>t.workspaceId===e))||(n.push({workspaceId:e,timeout:t}),this.sessionStorage.setItem(this.workspaceHibernationNamespace,JSON.stringify(n)))}exportClearTimeouts(){const e=JSON.parse(this.sessionStorage.getItem(this.workspaceHibernationNamespace));return this.sessionStorage.setItem(this.workspaceHibernationNamespace,JSON.stringify([])),e}getAllApps(e){const t="remote"===e?this.appDefsNamespace:this.appDefsInmemoryNamespace;return JSON.parse(this.sessionStorage.getItem(t))}overwriteApps(e,t){const n="remote"===t?this.appDefsNamespace:this.appDefsInmemoryNamespace;this.sessionStorage.setItem(n,JSON.stringify(e))}removeApp(e,t){const n="remote"===t?this.appDefsNamespace:this.appDefsInmemoryNamespace,r=this.getAllApps(t),i=r.find((t=>t.name===e));return i&&this.sessionStorage.setItem(n,JSON.stringify(r.filter((t=>t.name!==e)))),i}getLayoutSnapshot(e){const t="Global"===e?this.globalLayoutsNamespace:this.workspaceLayoutsNamespace;return{layouts:JSON.parse(this.sessionStorage.getItem(t))}}saveLayoutSnapshot(e,t){const n="Global"===t?this.globalLayoutsNamespace:this.workspaceLayoutsNamespace;this.sessionStorage.setItem(n,JSON.stringify(e.layouts))}saveFrameData(e){const t=JSON.parse(this.sessionStorage.getItem(this.workspaceFramesNamespace));t.some((t=>t.windowId===e.windowId))||(t.push(e),this.sessionStorage.setItem(this.workspaceFramesNamespace,JSON.stringify(t)))}getPlatformFrame(){return this.getAllFrames().find((e=>e.isPlatform))}getAllFrames(){return JSON.parse(this.sessionStorage.getItem(this.workspaceFramesNamespace))}getFrameData(e){return JSON.parse(this.sessionStorage.getItem(this.workspaceFramesNamespace)).find((t=>t.windowId===e))}setFrameActive(e){const t=JSON.parse(this.sessionStorage.getItem(this.workspaceFramesNamespace)),n=t.find((t=>t.windowId===e));n&&!n.active&&(n.active=!0,this.sessionStorage.setItem(this.workspaceFramesNamespace,JSON.stringify(t)))}removeFrameData(e){return!!e&&this.doRemove(e,this.workspaceFramesNamespace)}saveWorkspaceClient(e){const t=JSON.parse(this.sessionStorage.getItem(this.workspaceWindowsNamespace));t.some((t=>t.windowId===e.windowId))||(t.push(e),this.sessionStorage.setItem(this.workspaceWindowsNamespace,JSON.stringify(t)))}getWorkspaceClientById(e){return JSON.parse(this.sessionStorage.getItem(this.workspaceWindowsNamespace)).find((t=>t.windowId===e))}pickWorkspaceClients(e){return JSON.parse(this.sessionStorage.getItem(this.workspaceWindowsNamespace)).filter(e)}removeWorkspaceClient(e){return!!e&&this.doRemove(e,this.workspaceWindowsNamespace)}getAllNonGlue(){return JSON.parse(this.sessionStorage.getItem(this.nonGlueNamespace))}saveNonGlue(e){var t,n;const r=JSON.parse(this.sessionStorage.getItem(this.nonGlueNamespace));return r.some((t=>t.windowId===e.windowId))?(null===(t=this.logger)||void 0===t||t.trace(`did not save this data: ${JSON.stringify(e)}, because an entry with this id already exists`),!1):(null===(n=this.logger)||void 0===n||n.trace(`saving non glue window with id: ${e.windowId}`),r.push(e),this.sessionStorage.setItem(this.nonGlueNamespace,JSON.stringify(r)),!0)}removeNonGlue(e){var t;return!(!e||!e.windowId)&&(null===(t=this.logger)||void 0===t||t.trace(`removing non glue window with id: ${e.windowId}`),this.doRemove(e.windowId,this.nonGlueNamespace))}saveBridgeInstanceData(e){var t,n;const r=JSON.parse(this.sessionStorage.getItem(this.bridgeInstancesNamespace));r.some((t=>t.windowId===e.windowId))?null===(t=this.logger)||void 0===t||t.trace(`did not save this data: ${JSON.stringify(e)}, because an entry with this id already exists`):(null===(n=this.logger)||void 0===n||n.trace(`saving new instance with id: ${e.windowId} and app name: ${e.appName}`),r.push(e),this.sessionStorage.setItem(this.bridgeInstancesNamespace,JSON.stringify(r)))}getBridgeInstanceData(e){return JSON.parse(this.sessionStorage.getItem(this.bridgeInstancesNamespace)).find((t=>t.windowId===e))}removeBridgeInstanceData(e){const t=JSON.parse(this.sessionStorage.getItem(this.bridgeInstancesNamespace));this.sessionStorage.setItem(this.bridgeInstancesNamespace,JSON.stringify(t.filter((t=>t.windowId!==e))))}saveInstanceData(e){var t,n;const r=JSON.parse(this.sessionStorage.getItem(this.instancesNamespace));r.some((t=>t.id===e.id))?null===(t=this.logger)||void 0===t||t.trace(`did not save this data: ${JSON.stringify(e)}, because an entry with this id already exists`):(null===(n=this.logger)||void 0===n||n.trace(`saving new instance with id: ${e.id} and app name: ${e.applicationName}`),r.push(e),this.sessionStorage.setItem(this.instancesNamespace,JSON.stringify(r)))}removeInstance(e){var t;null===(t=this.logger)||void 0===t||t.trace(`removing instance with id: ${e}`);const n=this.getAllInstancesData();this.sessionStorage.setItem(this.instancesNamespace,JSON.stringify(n.filter((t=>t.id!==e)))),this.removeBridgeInstanceData(e)}getInstanceData(e){return this.getAllInstancesData().find((t=>t.id===e))}getAllInstancesData(){return JSON.parse(this.sessionStorage.getItem(this.instancesNamespace))}removeNotification(e){const t=JSON.parse(this.sessionStorage.getItem(this.notificationsNamespace));t.find((t=>t.id===e))&&this.sessionStorage.setItem(this.notificationsNamespace,JSON.stringify(t.filter((t=>t.id!==e))))}saveNewNotification(e){var t;const n=JSON.parse(this.sessionStorage.getItem(this.notificationsNamespace));if(n.some((t=>t.id===e.id)))throw new Error(`Notification with id ${e.id} already exists`);null===(t=this.logger)||void 0===t||t.trace(`saving notification with id: ${e.id}`),n.push(e),this.sessionStorage.setItem(this.notificationsNamespace,JSON.stringify(n))}updateNotification(e){var t;const n=this.getAllNotifications(),r=n.findIndex((t=>t.id===e.id));if(-1===r)throw new Error(`Notification with id ${e.id} does not exist`);null===(t=this.logger)||void 0===t||t.trace(`updating notification with id: ${e.id}`),n[r]=e,this.sessionStorage.setItem(this.notificationsNamespace,JSON.stringify(n))}getNotification(e){return this.getAllNotifications().find((t=>t.id===e))}getAllNotifications(){return JSON.parse(this.sessionStorage.getItem(this.notificationsNamespace))}saveWindowData(e){var t,n;const r=JSON.parse(this.sessionStorage.getItem(this.windowsNamespace));r.some((t=>t.name===e.name))?null===(t=this.logger)||void 0===t||t.trace(`did not save this data: ${JSON.stringify(e)}, because an entry with this name already exists`):(null===(n=this.logger)||void 0===n||n.trace(`saving window with id: ${e.windowId} and name: ${e.name}`),r.push(e),this.sessionStorage.setItem(this.windowsNamespace,JSON.stringify(r)))}getAllWindowsData(){return JSON.parse(this.sessionStorage.getItem(this.windowsNamespace))}getWindowDataById(e){return this.getAllWindowsData().find((t=>t.windowId===e))}getWindowDataByName(e){return this.getAllWindowsData().find((t=>t.name===e))}removeWindowData(e){var t;return!!e&&(null===(t=this.logger)||void 0===t||t.trace(`removing window with id: ${e}`),this.doRemove(e,this.windowsNamespace))}fullWindowClean(e){const t=this.removeWindowData(e),n=this.removeNonGlue({windowId:e}),r=this.removeWorkspaceClient(e);return t||n||r}doRemove(e,t){const n=JSON.parse(this.sessionStorage.getItem(t)).reduce(((t,n)=>(n.windowId===e?t.removed=!0:t.newData.push(n),t)),{removed:!1,newData:[]});return this.sessionStorage.setItem(t,JSON.stringify(n.newData)),n.removed}}class WindowsStateController{constructor(e){this.sessionStorage=e,this.registry=CallbackRegistryFactory(),this.checkIntervalMs=500,this.childrenToCheck=[],this.checkerCancelled=!1}get logger(){return logger.get("state.controller")}start(){this.checkerCancelled=!1;this.sessionStorage.getAllNonGlue().forEach((e=>{var t;null===(t=this.logger)||void 0===t||t.trace(`detected non glue window with id ${e.windowId} from previous session, attempting reference refresh`);const n=window.open(void 0,e.windowId);n&&this.childrenToCheck.push({window:n,windowId:e.windowId})})),this.checkWindows()}add(e,t){var n;null===(n=this.logger)||void 0===n||n.trace(`adding window id: ${t} to non glue state checking`);this.sessionStorage.saveNonGlue({windowId:t})&&this.childrenToCheck.push({window:e,windowId:t})}remove(e){var t;null===(t=this.logger)||void 0===t||t.trace(`removing window id: ${e} from non glue state checking`),this.sessionStorage.removeNonGlue({windowId:e}),this.childrenToCheck=this.childrenToCheck.filter((t=>t.windowId!==e))}cancel(){this.currentTimeout&&clearTimeout(this.currentTimeout),this.checkerCancelled=!0,this.registry.clear()}onWindowDisappeared(e){return this.registry.add("window-disappear",e)}checkWindows(){this.checkerCancelled||(this.childrenToCheck.forEach((e=>{var t;if(!e.window||e.window.closed)return null===(t=this.logger)||void 0===t||t.trace(`non glue window ${e.windowId} has disappeared, removing from collections and announcing.`),this.remove(e.windowId),void this.registry.execute("window-disappear",e.windowId)})),this.currentTimeout=setTimeout(this.checkWindows.bind(this),this.checkIntervalMs))}}const appManagerOperationTypesDecoder=oneOf$1(constant$1("appHello"),constant$1("applicationStart"),constant$1("instanceStop"),constant$1("registerWorkspaceApp"),constant$1("unregisterWorkspaceApp"),constant$1("export"),constant$1("import"),constant$1("remove"),constant$1("clear"),constant$1("registerRemoteApps"),constant$1("operationCheck")),basicInstanceDataDecoder=object$1({id:nonEmptyStringDecoder$1}),instanceDataDecoder=object$1({id:nonEmptyStringDecoder$1,applicationName:nonEmptyStringDecoder$1}),applicationDataDecoder=object$1({name:nonEmptyStringDecoder$1,type:nonEmptyStringDecoder$1.where((e=>"window"===e),"Expected a value of window"),createOptions:applicationDetailsDecoder,instances:array$1(instanceDataDecoder),userProperties:optional$1(anyJson$1()),title:optional$1(nonEmptyStringDecoder$1),version:optional$1(nonEmptyStringDecoder$1),icon:optional$1(nonEmptyStringDecoder$1),caption:optional$1(nonEmptyStringDecoder$1)});object$1({name:nonEmptyStringDecoder$1,type:nonEmptyStringDecoder$1.where((e=>"window"===e),"Expected a value of window"),createOptions:applicationDetailsDecoder,userProperties:optional$1(anyJson$1()),title:optional$1(nonEmptyStringDecoder$1),version:optional$1(nonEmptyStringDecoder$1),icon:optional$1(nonEmptyStringDecoder$1),caption:optional$1(nonEmptyStringDecoder$1)});const appHelloSuccessDecoder=object$1({apps:array$1(applicationDataDecoder),initialChannelId:optional$1(nonEmptyStringDecoder$1)}),appHelloDecoder=object$1({windowId:optional$1(nonEmptyStringDecoder$1)}),applicationStartConfigDecoder=object$1({name:nonEmptyStringDecoder$1,id:optional$1(nonEmptyStringDecoder$1),context:optional$1(anyJson$1()),top:optional$1(number$1()),left:optional$1(number$1()),width:optional$1(nonNegativeNumberDecoder$1),height:optional$1(nonNegativeNumberDecoder$1),relativeTo:optional$1(nonEmptyStringDecoder$1),relativeDirection:optional$1(oneOf$1(constant$1("top"),constant$1("left"),constant$1("right"),constant$1("bottom"))),waitForAGMReady:optional$1(boolean()),forceChromeTab:optional$1(boolean()),layoutComponentId:optional$1(nonEmptyStringDecoder$1),channelId:optional$1(nonEmptyStringDecoder$1)}),appsImportOperationDecoder=object$1({definitions:array$1(allApplicationDefinitionsDecoder),mode:oneOf$1(constant$1("replace"),constant$1("merge"))}),appRemoveConfigDecoder=object$1({name:nonEmptyStringDecoder$1}),appsExportOperationDecoder=object$1({definitions:array$1(glueCoreAppDefinitionDecoder)}),appsRemoteRegistrationDecoder=object$1({definitions:array$1(allApplicationDefinitionsDecoder)});class ApplicationsController{constructor(e,t,n,r,i){this.glueController=e,this.sessionStorage=t,this.stateController=n,this.appDirectory=r,this.ioc=i,this.applicationStartTimeoutMs=15e3,this.started=!1,this.locks={},this.operations={appHello:{name:"appHello",dataDecoder:appHelloDecoder,resultDecoder:appHelloSuccessDecoder,execute:this.handleAppHello.bind(this)},applicationStart:{name:"applicationStart",dataDecoder:applicationStartConfigDecoder,resultDecoder:instanceDataDecoder,execute:this.handleApplicationStart.bind(this)},instanceStop:{name:"instanceStop",dataDecoder:basicInstanceDataDecoder,execute:this.handleInstanceStop.bind(this)},registerWorkspaceApp:{name:"registerWorkspaceApp",dataDecoder:workspaceWindowDataDecoder,execute:this.registerWorkspaceApp.bind(this)},unregisterWorkspaceApp:{name:"unregisterWorkspaceApp",dataDecoder:simpleWindowDecoder,execute:this.unregisterWorkspaceApp.bind(this)},import:{name:"import",dataDecoder:appsImportOperationDecoder,execute:this.handleImport.bind(this)},remove:{name:"remove",dataDecoder:appRemoveConfigDecoder,execute:this.handleRemove.bind(this)},export:{name:"export",resultDecoder:appsExportOperationDecoder,execute:this.handleExport.bind(this)},clear:{name:"clear",execute:this.handleClear.bind(this)},registerRemoteApps:{name:"registerRemoteApps",dataDecoder:appsRemoteRegistrationDecoder,execute:this.handleRegisterRemoteApps.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder,resultDecoder:operationCheckResultDecoder,execute:this.handleOperationCheck.bind(this)}}}get logger(){return logger.get("applications.controller")}handlePlatformShutdown(){this.locks={},this.started=!1,this.appDirectory.stop()}start(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){this.defaultBounds=e.windows.defaultWindowOpenBounds,null===(t=this.logger)||void 0===t||t.trace("initializing applications"),this.config=e.applications,yield this.appDirectory.start({config:e.applications,appsStateChange:e=>this.emitStreamData("appDirectoryStateChange",e),sequelizer:this.ioc.createSequelizer()}),this.started=!0,this.stateController.onWindowDisappeared(this.processInstanceClosed.bind(this)),null===(n=this.logger)||void 0===n||n.trace("initialization is completed")}))}handleControl(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.started)throw new Error("Cannot handle this windows control message, because the controller has not been started");const o=e.data,l=e.commandId,s=appManagerOperationTypesDecoder.run(e.operation);if(!s.ok)throw new Error(`This appManager request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(s.error)}`);const a=s.result,u=null===(t=this.operations[a].dataDecoder)||void 0===t?void 0:t.run(o);if(u&&!u.ok)throw new Error(`AppManager request for ${a} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(u.error)}`);null===(n=this.logger)||void 0===n||n.debug(`[${l}] ${a} command is valid with data: ${JSON.stringify(o)}`);const c=yield this.operations[a].execute(o,l),h=null===(r=this.operations[a].resultDecoder)||void 0===r?void 0:r.run(c);if(h&&!h.ok)throw new Error(`AppManager request for ${a} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(h.error)}`);return null===(i=this.logger)||void 0===i||i.trace(`[${l}] ${a} command was executed successfully`),c}))}handleClientUnloaded(e,t){var n,r,i;if(null===(n=this.logger)||void 0===n||n.trace(`handling unloading of ${e}`),e)return!t||t.closed?(null===(r=this.logger)||void 0===r||r.trace(`${e} detected as closed, processing instance closed`),this.processInstanceClosed(e)):void(null===(i=this.logger)||void 0===i||i.trace(`${e} detected as not closed, skipping instance closed procedure`))}unregisterWorkspaceApp(e){return __awaiter$7(this,void 0,void 0,(function*(){this.processInstanceClosed(e.windowId),this.ioc.windowsController.cleanUpWindow(e.windowId),this.ioc.portsBridge.removeGwClient(e.windowId)}))}handleApplicationStart(e,t){var n,r,i,o,l,s,a,u;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling application start command for application: ${e.name}`);const c=(yield this.appDirectory.getAll()).find((t=>t.name===e.name));if(!c)throw new Error(`Cannot start an instance of application: ${e.name}, because it is not found.`);const h={id:null!==(r=e.id)&&void 0!==r?r:`g42-${shortid$2.generate()}`,applicationName:e.name},d=yield this.getStartingBounds(c.createOptions,e,t),f=e.forceChromeTab?void 0:`left=${d.left},top=${d.top},width=${d.width},height=${d.height}`;null===(i=this.logger)||void 0===i||i.trace(`[${t}] open arguments are valid, opening to bounds: ${f}`);const p=window.open(c.createOptions.url,h.id,f);if(!p)throw new Error(`Cannot an instance with url: ${c.createOptions.url} for application: ${e.name}. The most likely reason is that the user has not approved popups or has a blocker.`);this.sessionStorage.saveBridgeInstanceData({windowId:h.id,appName:h.applicationName});const g={data:h,context:e.context};if(yield this.processNewInstance(g),null===(o=this.logger)||void 0===o||o.trace(`[${t}] the new window has been opened successfully with id: ${h.id}, checking for AGM ready and notifying windows`),e.waitForAGMReady&&(null===(l=this.logger)||void 0===l||l.trace(`[${t}] wait for AGM is set, configuring the lock`),this.setLock(h.id)),yield this.notifyWindows(c.createOptions.url,h,d,e.context,p,e.layoutComponentId,e.channelId),this.locks[h.id])try{yield PromiseWrap((()=>{var e;return null===(e=this.locks[h.id])||void 0===e?void 0:e.keyOne}),this.applicationStartTimeoutMs)}catch(t){throw delete this.locks[h.id],new Error(`Application start for ${e.name} timed out waiting for client to initialize Glue`)}return null===(s=this.logger)||void 0===s||s.trace(`[${t}] the windows controller has been successfully notified`),null===(a=this.logger)||void 0===a||a.trace(`[${t}] the new instance with id ${h.id} has been saved, announced and context set, lifting key two and responding to caller`),null===(u=this.locks[h.id])||void 0===u||u.openKeyTwo(),h}))}processInstanceClosed(e){if(!e)return;const t=this.sessionStorage.getInstanceData(e);t&&(delete this.locks[t.id],this.glueController.clearContext(e,"instance").catch((()=>{})),this.sessionStorage.removeInstance(t.id),this.emitStreamData("instanceStopped",t))}notifyWindows(e,t,n,r,i,o,l){return __awaiter$7(this,void 0,void 0,(function*(){const s={windowId:t.id,name:`${t.applicationName}_${t.id}`,initialUrl:e,initialContext:r,initialBounds:n,layoutComponentId:o,initialChannelId:l};yield this.ioc.windowsController.processNewWindow(s,r,i)}))}handleOperationCheck(e){return __awaiter$7(this,void 0,void 0,(function*(){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}))}handleAppHello(e,t){var n,r,i,o,l;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling hello message for id: ${e.windowId}`),e.windowId&&this.locks[e.windowId]&&(null===(r=this.logger)||void 0===r||r.trace(`[${t}] found an app lock, unlocking key one and waiting for the second one`),this.locks[e.windowId].openKeyOne(),yield this.locks[e.windowId].keyTwo,delete this.locks[e.windowId],null===(i=this.logger)||void 0===i||i.trace(`[${t}] the lock is lifted, proceeding`));const s=this.sessionStorage.getAllInstancesData(),a=(yield this.appDirectory.getAll()).map((e=>{const t=s.filter((t=>t.applicationName===e.name));return Object.assign({},e,{instances:t})}));if(e.windowId){null===(o=this.logger)||void 0===o||o.trace(`[${t}] there is a valid windowId, removing ${e.windowId} from the state controller`),this.stateController.remove(e.windowId);const n=a.find((t=>t.instances.some((t=>t.id===e.windowId))));if(n&&n.title){const r=e.windowId,i=n.title;PromiseWrap((()=>this.glueController.callWindow("windows",this.ioc.windowsController.setTitleOperation,{windowId:r,title:i},{windowId:r})),2e4).catch((e=>{var n;return null===(n=this.logger)||void 0===n?void 0:n.trace(`[${t}] error while setting the application instance title: ${e.message}`)}))}}const u=e.windowId?this.sessionStorage.getWindowDataById(e.windowId):void 0,c={apps:a,initialChannelId:null==u?void 0:u.initialChannelId};return null===(l=this.logger)||void 0===l||l.trace(`[${t}] compiled a list of all active applications and instances and returning it to the caller`),c}))}handleInstanceStop(e,t){var n,r,i,o;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling stop command for instance: ${e.id}`);if(this.sessionStorage.getWorkspaceClientById(e.id))return null===(r=this.logger)||void 0===r||r.trace(`[${t}] this instance is detected as a workspace window, closing via the workspaces controller`),void(yield this.ioc.workspacesController.closeItem({itemId:e.id},t));if(!this.sessionStorage.getInstanceData(e.id))throw new Error(`Cannot close instance: ${e.id}, because it is not known by the platform`);const l=this.sessionStorage.getWindowDataById(e.id);if(!l)throw new Error(`Cannot close instance: ${e.id}, because it's window is not known by the platform`);null===(i=window.open(void 0,l.windowId))||void 0===i||i.close(),this.processInstanceClosed(e.id),this.ioc.windowsController.cleanUpWindow(e.id),null===(o=this.logger)||void 0===o||o.trace(`[${t}] instance ${e.id} has been closed, removed from store, announced stopped and notified windows, responding to caller`)}))}handleRegisterRemoteApps(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){if(null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling remote bypass command`),this.config.remote)throw new Error(`[${t}] cannot accept remote apps from the protocol, because there is an active remote configuration.`);yield this.appDirectory.processAppDefinitions(e.definitions,{mode:"replace",type:"remote"}),null===(r=this.logger)||void 0===r||r.trace(`[${t}] remote bypass command completed`)}))}handleImport(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling import command`),yield this.appDirectory.processAppDefinitions(e.definitions,{type:"inmemory",mode:e.mode}),null===(r=this.logger)||void 0===r||r.trace(`[${t}] import command completed`)}))}handleRemove(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling remove command for ${e.name}`);const i=yield this.appDirectory.removeInMemory(e.name);i&&(null===(r=this.logger)||void 0===r||r.trace(`definition ${i.name} removed successfully`),this.emitStreamData("appDirectoryStateChange",{appsRemoved:[i],appsAdded:[],appsChanged:[]}))}))}handleExport(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling export command`);const e=yield this.appDirectory.exportInMemory();return null===(r=this.logger)||void 0===r||r.trace(`[${t}] export command successful`),{definitions:e}}))}handleClear(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling clear command`),yield this.appDirectory.processAppDefinitions([],{type:"inmemory",mode:"replace"}),null===(r=this.logger)||void 0===r||r.trace(`[${t}] all in-memory apps are cleared`)}))}setLock(e){const t={},n=new Promise((e=>{t.openKeyOne=e})),r=new Promise((e=>{t.openKeyTwo=e}));t.keyOne=n,t.keyTwo=r,this.locks[e]=t}registerWorkspaceApp(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){if(!e.appName)throw new Error(`Cannot register application with config: ${JSON.stringify(e)}, because no app name was found`);const i=yield this.appDirectory.getAll();if(e.appName===defaultNoAppWindowComponentAppName$1)return yield this.ioc.windowsController.registerWorkspaceWindow(e,t);if(!i.some((t=>t.name===e.appName)))throw new Error(`Cannot register application with config: ${JSON.stringify(e)}, because no app with this name name was found`);this.sessionStorage.saveBridgeInstanceData({windowId:e.windowId,appName:e.appName}),null===(n=this.logger)||void 0===n||n.trace(`[${t}] processing valid workspace application registration with id ${e.windowId}, app name ${e.appName} and frame ${e.frameId}`),e.context&&(yield this.glueController.setStartContext(e.windowId,e.context,"instance"));const o={id:e.windowId,applicationName:e.appName};this.sessionStorage.saveInstanceData(o),this.emitStreamData("instanceStarted",o),null===(r=this.logger)||void 0===r||r.trace(`[${t}] instance registration is completed and announced, calling windows registration`),yield this.ioc.windowsController.registerWorkspaceWindow(e,t)}))}processNewInstance(e){return __awaiter$7(this,void 0,void 0,(function*(){e.context&&(yield this.glueController.setStartContext(e.data.id,e.context,"instance")),this.sessionStorage.saveInstanceData(e.data),this.emitStreamData("instanceStarted",e.data)}))}emitStreamData(e,t){var n;null===(n=this.logger)||void 0===n||n.trace(`sending notification of event: ${e} with data: ${JSON.stringify(t)}`),this.glueController.pushSystemMessage("appManager",e,t)}getStartingBounds(e,t,n){var r;return __awaiter$7(this,void 0,void 0,(function*(){const i={top:t.top||e.top||this.defaultBounds.top,left:t.left||e.left||this.defaultBounds.left,width:t.width||e.width||this.defaultBounds.width,height:t.height||e.height||this.defaultBounds.height};if(!t.relativeTo)return i;try{const e=yield this.ioc.windowsController.getWindowBounds(t.relativeTo,n),o=null!==(r=t.relativeDirection)&&void 0!==r?r:"right";return getRelativeBounds(i,e,o)}catch(e){return i}}))}}const layoutsOperationTypesDecoder=oneOf$1(constant$1("get"),constant$1("getAll"),constant$1("export"),constant$1("import"),constant$1("remove"),constant$1("save"),constant$1("restore"),constant$1("getGlobalPermissionState"),constant$1("checkGlobalActivated"),constant$1("requestGlobalPermission"),constant$1("operationCheck"),constant$1("getDefaultGlobal"),constant$1("setDefaultGlobal"),constant$1("clearDefaultGlobal")),newLayoutOptionsDecoder=object$1({name:nonEmptyStringDecoder$1,context:optional$1(anyJson$1()),metadata:optional$1(anyJson$1()),instances:optional$1(array$1(nonEmptyStringDecoder$1)),ignoreInstances:optional$1(array$1(nonEmptyStringDecoder$1))}),restoreOptionsDecoder=object$1({name:nonEmptyStringDecoder$1,context:optional$1(anyJson$1()),closeRunningInstance:optional$1(boolean()),closeMe:optional$1(boolean()),timeout:optional$1(nonNegativeNumberDecoder$1)}),simpleLayoutConfigDecoder=object$1({name:nonEmptyStringDecoder$1,type:layoutTypeDecoder}),getAllLayoutsConfigDecoder=object$1({type:layoutTypeDecoder}),saveLayoutConfigDecoder=object$1({layout:newLayoutOptionsDecoder}),restoreLayoutConfigDecoder=object$1({layout:restoreOptionsDecoder}),allLayoutsFullConfigDecoder=object$1({layouts:array$1(glueLayoutDecoder)}),importModeDecoder=oneOf$1(constant$1("replace"),constant$1("merge")),layoutsImportConfigDecoder=object$1({layouts:array$1(glueLayoutDecoder),mode:importModeDecoder,isManagerOperation:optional$1(boolean())}),allLayoutsSummariesResultDecoder=object$1({summaries:array$1(layoutSummaryDecoder$1)});object$1({layout:glueLayoutDecoder});const optionalSimpleLayoutResult=object$1({layout:optional$1(glueLayoutDecoder)}),setDefaultGlobalConfigDecoder=object$1({name:nonEmptyStringDecoder$1});object$1({layoutType:oneOf$1(constant$1("Global"),constant$1("Workspace")),layoutName:nonEmptyStringDecoder$1,context:optional$1(anyJson$1()),instances:optional$1(array$1(nonEmptyStringDecoder$1)),ignoreInstances:optional$1(array$1(nonEmptyStringDecoder$1))}),object$1({windowContext:optional$1(anyJson$1())});const fullSaveRequestResponseDecoder=object$1({bounds:windowBoundsDecoder,windowContext:optional$1(anyJson$1()),url:nonEmptyStringDecoder$1,name:nonEmptyStringDecoder$1,application:nonEmptyStringDecoder$1,windowId:nonEmptyStringDecoder$1,initialContext:optional$1(anyJson$1())});object$1({windowContext:optional$1(anyJson$1()),windowId:nonEmptyStringDecoder$1,frameId:nonEmptyStringDecoder$1}),object$1({windows:array$1(fullSaveRequestResponseDecoder)});const permissionStateResultDecoder=object$1({state:oneOf$1(constant$1("prompt"),constant$1("denied"),constant$1("granted"))}),simpleAvailabilityResultDecoder=object$1({isAvailable:boolean()}),defaultNoAppWindowComponentAppName="no-app-window",defaultPermissionTimeoutMS=25e3;class LayoutsController{constructor(e,t,n,r,i,o,l,s){this.glueController=e,this.idbController=t,this.sessionStore=n,this.localStore=r,this.globalBuilder=i,this.globalRestorer=o,this.registry=l,this.getManager=s,this.started=!1,this.operations={get:{name:"get",dataDecoder:simpleLayoutConfigDecoder,resultDecoder:optionalSimpleLayoutResult,execute:this.handleGetLayout.bind(this)},getAll:{name:"getAll",dataDecoder:getAllLayoutsConfigDecoder,resultDecoder:allLayoutsSummariesResultDecoder,execute:this.handleGetAll.bind(this)},export:{name:"export",dataDecoder:getAllLayoutsConfigDecoder,resultDecoder:allLayoutsFullConfigDecoder,execute:this.handleExport.bind(this)},import:{name:"import",dataDecoder:layoutsImportConfigDecoder,execute:this.handleImport.bind(this)},remove:{name:"remove",dataDecoder:simpleLayoutConfigDecoder,execute:this.handleRemove.bind(this)},save:{name:"save",dataDecoder:saveLayoutConfigDecoder,execute:this.handleSave.bind(this)},restore:{name:"restore",dataDecoder:restoreLayoutConfigDecoder,execute:this.handleRestore.bind(this)},getGlobalPermissionState:{name:"getGlobalPermissionState",resultDecoder:permissionStateResultDecoder,execute:this.handleGetGlobalPermissionState.bind(this)},requestGlobalPermission:{name:"requestGlobalPermission",resultDecoder:simpleAvailabilityResultDecoder,execute:this.handleRequestGlobalPermission.bind(this)},checkGlobalActivated:{name:"checkGlobalActivated",resultDecoder:simpleAvailabilityResultDecoder,execute:this.handleCheckGlobalActivated.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder,resultDecoder:operationCheckResultDecoder,execute:this.handleOperationCheck.bind(this)},getDefaultGlobal:{name:"getDefaultGlobal",resultDecoder:optionalSimpleLayoutResult,execute:this.handleGetDefaultGlobal.bind(this)},setDefaultGlobal:{name:"setDefaultGlobal",dataDecoder:setDefaultGlobalConfigDecoder,execute:this.handleSetDefaultGlobal.bind(this)},clearDefaultGlobal:{name:"clearDefaultGlobal",execute:this.handleClearDefaultGlobal.bind(this)}}}get logger(){return logger.get("layouts.controller")}handlePlatformShutdown(){this.started=!1,this.registry.clear(),"idb"===this.config.mode&&(this.idbController.clearLayouts("Global").catch((e=>{var t;return null===(t=this.logger)||void 0===t?void 0:t.warn(extractErrorMsg$1(e))})),this.idbController.clearLayouts("Workspace").catch((e=>{var t;return null===(t=this.logger)||void 0===t?void 0:t.warn(extractErrorMsg$1(e))})))}start(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){if(this.config=e.layouts,null===(t=this.logger)||void 0===t||t.trace(`initializing with mode: ${this.config.mode}`),this.config.local&&this.config.local.length){const e=this.config.local.filter((e=>"Global"===e.type)),t=this.config.local.filter((e=>"Workspace"===e.type));yield Promise.all([this.mergeImport(e,"Global"),this.mergeImport(t,"Workspace")])}this.manager=this.getManager(),this.started=!0,null===(n=this.logger)||void 0===n||n.trace("initialization is completed")}))}handleControl(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.started)throw new Error("Cannot handle this windows control message, because the controller has not been started");const o=e.data,l=e.commandId,s=layoutsOperationTypesDecoder.run(e.operation);if(!s.ok)throw new Error(`This layouts request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(s.error)}`);const a=s.result,u=null===(t=this.operations[a].dataDecoder)||void 0===t?void 0:t.run(o);if(u&&!u.ok)throw new Error(`Layouts request for ${a} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(u.error)}`);null===(n=this.logger)||void 0===n||n.debug(`[${l}] ${a} command is valid with data: ${JSON.stringify(o)}`);const c=yield this.operations[a].execute(o,l,e.callerId,e.callerType),h=null===(r=this.operations[a].resultDecoder)||void 0===r?void 0:r.run(c);if(h&&!h.ok)throw new Error(`Layouts request for ${a} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(h.error)}`);return null===(i=this.logger)||void 0===i||i.trace(`[${l}] ${a} command was executed successfully`),c}))}handleSave(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling save layout with config: ${JSON.stringify(e)}`),yield this.checkRequestPermission("save"),null===(r=this.logger)||void 0===r||r.trace(`[${t}] the required permissions are granted, proceeding.`);const o=yield this.globalBuilder.saveGlobalLayout(e,t);return null===(i=this.logger)||void 0===i||i.trace(`[${t}] layout ${e.layout.name} was saved successfully`),{layout:o}}))}handleRestore(e,t,n,r){var i,o;return __awaiter$7(this,void 0,void 0,(function*(){null===(i=this.logger)||void 0===i||i.trace(`[${t}] handling restore layout with config: ${JSON.stringify(e)}`),yield this.checkRequestPermission("restore",e.layout.timeout),yield this.globalRestorer.restoreGlobalLayout(e,t,n,r),null===(o=this.logger)||void 0===o||o.trace(`[${t}] layout ${e.layout.name} was restored successfully`)}))}handleGetAll(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling get all layout summaries request for type: ${e.type}`);const i=(yield this.getAll(e.type)).map((e=>({name:e.name,type:e.type,context:e.context,metadata:e.metadata})));return null===(r=this.logger)||void 0===r||r.trace(`[${t}] all summaries have been compiled, responding to caller`),{summaries:i}}))}handleExport(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling get all layout full request for type: ${e.type}`);const i=yield this.getAll(e.type);return null===(r=this.logger)||void 0===r||r.trace(`[${t}] full layouts collection have been compiled, responding to caller`),{layouts:i}}))}handleImport(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling mass import request for layout names: ${e.layouts.map((e=>e.name)).join(", ")}`);const o="merge"===e.mode?this.mergeImport.bind(this):this.replaceImport.bind(this);null===(r=this.logger)||void 0===r||r.trace(`[${t}] importing the layouts in ${e.mode} mode`);const l=e.layouts.filter((e=>"Workspace"===e.type)),s=e.layouts.filter((e=>"Global"===e.type));yield Promise.all([o(s,"Global",e.isManagerOperation),o(l,"Workspace",e.isManagerOperation)]),null===(i=this.logger)||void 0===i||i.trace(`[${t}] mass import completed, responding to caller`)}))}handleRemove(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling remove request for ${JSON.stringify(e)}`);const i=(yield this.getAll(e.type)).find((t=>t.name===e.name&&t.type===e.type));i&&(yield this.delete(e.name,e.type),this.emitStreamData("layoutRemoved",i));const o=i?"has been removed":"has not been removed, because it does not exist";null===(r=this.logger)||void 0===r||r.trace(`[${t}] ${e.name} of type ${e.type} ${o}`)}))}handleGetLayout(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling get layout request for name: ${e.name} and type: ${e.type}`);const i=(yield this.getAll(e.type)).find((t=>t.name===e.name));return null===(r=this.logger)||void 0===r||r.trace(`[${t}] request completed, responding to the caller`),{layout:i}}))}onUserLayoutEvent(e){return this.registry.add("layoutEvent",e)}handleOperationCheck(e){return __awaiter$7(this,void 0,void 0,(function*(){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}))}handleGetGlobalPermissionState(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling Get Global Permission State request`);const{state:e}=yield navigator.permissions.query({name:"window-placement"});return null===(r=this.logger)||void 0===r||r.trace(`[${t}] request completed with state: ${e}, responding to the caller`),{state:e}}))}handleRequestGlobalPermission(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling Request Global Permission command`);const{state:e}=yield navigator.permissions.query({name:"window-placement"});if("granted"===e)return{isAvailable:!0};if("denied"===e)return{isAvailable:!1};try{return yield window.getScreenDetails(),null===(r=this.logger)||void 0===r||r.trace(`[${t}] request completed, responding to the caller`),{isAvailable:!0}}catch(e){return null===(i=this.logger)||void 0===i||i.trace(`[${t}] request completed, responding to the caller`),{isAvailable:!1}}}))}handleCheckGlobalActivated(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){return null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling Check Global Activated request`),null===(r=this.logger)||void 0===r||r.trace(`[${t}] request completed, responding to the caller`),{isAvailable:!0}}))}createGetDefaultGlobalLogMessage(e,t){return t?`[${e}] request completed, responding to the caller with layout with name ${t}`:`[${e}] request completed, no default global layout found, responding to the caller`}handleGetDefaultGlobal(e,t){var n,r,i,o,l,s;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling Get Default Global request`);const e=this.localStore.getDefaultGlobalLayoutName(),a=yield this.getAll("Global");if(!this.manager.isStarted)return null===(r=this.logger)||void 0===r||r.trace(this.createGetDefaultGlobalLogMessage(t,e)),{layout:a.find((t=>t.name===e))};try{const n=null===(i=yield this.manager.getDefaultGlobal(t))||void 0===i?void 0:i.name;return n&&n!==e&&this.localStore.saveDefaultGlobalLayout(n),null===(o=this.logger)||void 0===o||o.trace(this.createGetDefaultGlobalLogMessage(t,n)),{layout:a.find((e=>e.name===n))}}catch(n){if(this.manager.isCritical)throw new Error(n);return null===(l=this.logger)||void 0===l||l.trace(`[${t}] ${n}`),null===(s=this.logger)||void 0===s||s.trace(this.createGetDefaultGlobalLogMessage(t,e)),{layout:a.find((t=>t.name===e))}}}))}handleSetDefaultGlobal(e,t){var n,r,i,o;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling Set Default Global request for name: ${e.name}`);const l=(yield this.getAll("Global")).find((t=>t.name===e.name)),s=`[${t}] request completed for global layout with name ${e.name}, responding to the caller`;if(!l)throw new Error(`Layout ${e.name} does not exist`);if(this.localStore.saveDefaultGlobalLayout(e.name),this.manager.isStarted){try{(yield this.manager.getLayoutId(e.name))?yield this.manager.setDefaultGlobal(e.name,t):yield this.manager.saveLayout(l,{default:!0})}catch(e){if(this.manager.isCritical)throw new Error(e);null===(i=this.logger)||void 0===i||i.trace(`[${t}] ${e}`)}null===(o=this.logger)||void 0===o||o.trace(s)}else null===(r=this.logger)||void 0===r||r.trace(s)}))}handleClearDefaultGlobal(e,t){var n,r,i,o;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling Clear Default Global request`),this.localStore.clearDefaultGlobalLayout();const e=`[${t}] request completed, responding to the caller`;if(this.manager.isStarted){try{yield this.manager.clearDefaultGlobal(t)}catch(e){if(this.manager.isCritical)throw new Error(e);null===(i=this.logger)||void 0===i||i.trace(`[${t}] ${e}`)}null===(o=this.logger)||void 0===o||o.trace(e)}else null===(r=this.logger)||void 0===r||r.trace(e)}))}emitStreamData(e,t,n){var r;null===(r=this.logger)||void 0===r||r.trace(`sending notification of event: ${e} with data: ${JSON.stringify(t)}`),this.glueController.pushSystemMessage("layouts",e,t),n||this.registry.execute("layoutEvent",{operation:e,layout:t})}mergeImport(e,t,n){var r,i;return __awaiter$7(this,void 0,void 0,(function*(){const o=yield this.getAll(t),l=[];for(const t of e){const e=o.findIndex((e=>e.name===t.name));e>-1&&!objEqual(t,o[e])?(null===(r=this.logger)||void 0===r||r.trace(`change detected at layout ${t.name}`),l.push({operation:"layoutChanged",layout:t}),o[e]=t):e<0&&(null===(i=this.logger)||void 0===i||i.trace(`new layout: ${t.name} detected, adding and announcing`),l.push({operation:"layoutAdded",layout:t}),o.push(t))}yield this.cleanSave(o,t),yield this.announceEvents(l,n)}))}replaceImport(e,t,n){var r,i;return __awaiter$7(this,void 0,void 0,(function*(){const o=yield this.getAll(t),l=[];for(const t of e){const e=o.findIndex((e=>e.name===t.name));e<0?(null===(r=this.logger)||void 0===r||r.trace(`new layout: ${t.name} detected, adding and announcing`),l.push({operation:"layoutAdded",layout:t})):(objEqual(t,o[e])||(null===(i=this.logger)||void 0===i||i.trace(`change detected at layout ${t.name}`),l.push({operation:"layoutChanged",layout:t})),o.splice(e,1))}o.forEach((e=>{var t;null===(t=this.logger)||void 0===t||t.trace(`layout ${e.name} missing, removing and announcing`),l.push({operation:"layoutRemoved",layout:e})})),yield this.cleanSave(e,t),yield this.announceEvents(l,n)}))}announceEvents(e,t){return __awaiter$7(this,void 0,void 0,(function*(){let n=0;for(const r of e)++n,n%10==0&&(yield this.waitEventFlush()),this.emitStreamData(r.operation,r.layout,t)}))}getAll(e){return __awaiter$7(this,void 0,void 0,(function*(){let t;return t="idb"===this.config.mode?yield this.idbController.getAllLayouts(e):this.sessionStore.getLayoutSnapshot(e).layouts,t}))}cleanSave(e,t){return __awaiter$7(this,void 0,void 0,(function*(){if("idb"!==this.config.mode)this.sessionStore.saveLayoutSnapshot({layouts:e},t);else{yield this.idbController.clearLayouts(t);for(const t of e)yield this.idbController.storeLayout(t,t.type)}}))}delete(e,t){return __awaiter$7(this,void 0,void 0,(function*(){if("idb"===this.config.mode)return void(yield this.idbController.deleteLayout(e,t));const n=this.sessionStore.getLayoutSnapshot(t).layouts,r=n.findIndex((t=>t.name===e));r>-1&&n.splice(r,1),this.sessionStore.saveLayoutSnapshot({layouts:n},t)}))}waitEventFlush(){return new Promise((e=>setTimeout(e,10)))}checkRequestPermission(e,t=defaultPermissionTimeoutMS){return __awaiter$7(this,void 0,void 0,(function*(){if(window.gtf)return;const{state:n}=yield navigator.permissions.query({name:"window-placement"});switch(n){case"granted":return;case"prompt":try{return void(yield PromiseWrap((()=>window.getScreenDetails()),t,"Timeout waiting for user permission for Multi-Screen Window Placement"))}catch(t){throw new Error(`Cannot complete operation ${e} for Global Layouts, because the user has not granted the Multi-Screen Window Placement permission`)}case"denied":throw new Error(`Cannot complete operation ${e} for Global Layouts, because the user has denied the Multi-Screen Window Placement permission`)}}))}}const instanceOfAny=(e,t)=>t.some((t=>e instanceof t));let idbProxyableTypes,cursorAdvanceMethods;function getIdbProxyableTypes(){return idbProxyableTypes||(idbProxyableTypes=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function getCursorAdvanceMethods(){return cursorAdvanceMethods||(cursorAdvanceMethods=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const cursorRequestMap=new WeakMap,transactionDoneMap=new WeakMap,transactionStoreNamesMap=new WeakMap,transformCache=new WeakMap,reverseTransformCache=new WeakMap;function promisifyRequest(e){const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("success",i),e.removeEventListener("error",o)},i=()=>{t(wrap(e.result)),r()},o=()=>{n(e.error),r()};e.addEventListener("success",i),e.addEventListener("error",o)}));return t.then((t=>{t instanceof IDBCursor&&cursorRequestMap.set(t,e)})).catch((()=>{})),reverseTransformCache.set(t,e),t}function cacheDonePromiseForTransaction(e){if(transactionDoneMap.has(e))return;const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("complete",i),e.removeEventListener("error",o),e.removeEventListener("abort",o)},i=()=>{t(),r()},o=()=>{n(e.error||new DOMException("AbortError","AbortError")),r()};e.addEventListener("complete",i),e.addEventListener("error",o),e.addEventListener("abort",o)}));transactionDoneMap.set(e,t)}let idbProxyTraps={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return transactionDoneMap.get(e);if("objectStoreNames"===t)return e.objectStoreNames||transactionStoreNamesMap.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return wrap(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function replaceTraps(e){idbProxyTraps=e(idbProxyTraps)}function wrapFunction(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?getCursorAdvanceMethods().includes(e)?function(...t){return e.apply(unwrap(this),t),wrap(cursorRequestMap.get(this))}:function(...t){return wrap(e.apply(unwrap(this),t))}:function(t,...n){const r=e.call(unwrap(this),t,...n);return transactionStoreNamesMap.set(r,t.sort?t.sort():[t]),wrap(r)}}function transformCachableValue(e){return"function"==typeof e?wrapFunction(e):(e instanceof IDBTransaction&&cacheDonePromiseForTransaction(e),instanceOfAny(e,getIdbProxyableTypes())?new Proxy(e,idbProxyTraps):e)}function wrap(e){if(e instanceof IDBRequest)return promisifyRequest(e);if(transformCache.has(e))return transformCache.get(e);const t=transformCachableValue(e);return t!==e&&(transformCache.set(e,t),reverseTransformCache.set(t,e)),t}const unwrap=e=>reverseTransformCache.get(e);function openDB(e,t,{blocked:n,upgrade:r,blocking:i,terminated:o}={}){const l=indexedDB.open(e,t),s=wrap(l);return r&&l.addEventListener("upgradeneeded",(e=>{r(wrap(l.result),e.oldVersion,e.newVersion,wrap(l.transaction),e)})),n&&l.addEventListener("blocked",(e=>n(e.oldVersion,e.newVersion,e))),s.then((e=>{o&&e.addEventListener("close",(()=>o())),i&&e.addEventListener("versionchange",(e=>i(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),s}const readMethods=["get","getKey","getAll","getAllKeys","count"],writeMethods=["put","add","delete","clear"],cachedMethods=new Map;function getMethod(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(cachedMethods.get(t))return cachedMethods.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=writeMethods.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!i&&!readMethods.includes(n))return;const o=async function(e,...t){const o=this.transaction(e,i?"readwrite":"readonly");let l=o.store;return r&&(l=l.index(t.shift())),(await Promise.all([l[n](...t),i&&o.done]))[0]};return cachedMethods.set(t,o),o}replaceTraps((e=>({...e,get:(t,n,r)=>getMethod(t,n)||e.get(t,n,r),has:(t,n)=>!!getMethod(t,n)||e.has(t,n)})));class IDBController{constructor(){if(this.defaultDBName="glue42core",this.dbName=this.defaultDBName,this.dbVersion=3,this.globalLayoutsObjectStoreName="globalLayouts",this.prefsObjectStoreName="prefs",this.serviceWorkerObjectStoreName="serviceWorker",this.workspaceLayoutsObjectStoreName="workspaceLayouts",!("indexedDB"in window))throw new Error("Cannot initialize the local storage, because IndexedDB is not supported")}get database(){if(!this._database)throw new Error("There is no open database");return this._database}start(e){return __awaiter$7(this,void 0,void 0,(function*(){(null==e?void 0:e.username)&&(this.dbName=e.username);const t=yield openDB(this.dbName,this.dbVersion,{upgrade:this.setUpDB.bind(this)});this._database=t}))}stop(){this.database.close(),delete this._database,this.dbName=this.defaultDBName}getAllLayouts(e){switch(e){case"Workspace":return this.database.getAll(this.workspaceLayoutsObjectStoreName);case"Global":return this.database.getAll(this.globalLayoutsObjectStoreName);default:throw new Error(`The provided layout type is not recognized: ${e}`)}}deleteLayout(e,t){switch(t){case"Workspace":return this.database.delete(this.workspaceLayoutsObjectStoreName,e);case"Global":return this.database.delete(this.globalLayoutsObjectStoreName,e);default:throw new Error(`The provided layout type is not recognized: ${t}`)}}clearLayouts(e){switch(e){case"Workspace":return this.database.clear(this.workspaceLayoutsObjectStoreName);case"Global":return this.database.clear(this.globalLayoutsObjectStoreName);default:throw new Error(`The provided layout type is not recognized: ${e}`)}}getLayout(e,t){switch(t){case"Workspace":return this.database.get(this.workspaceLayoutsObjectStoreName,e);case"Global":return this.database.get(this.globalLayoutsObjectStoreName,e);default:throw new Error(`The provided layout type is not recognized: ${t}`)}}storeLayout(e,t){switch(glueLayoutDecoder.runWithException(e),layoutTypeDecoder.runWithException(t),t){case"Workspace":return this.database.put(this.workspaceLayoutsObjectStoreName,e,e.name);case"Global":return this.database.put(this.globalLayoutsObjectStoreName,e,e.name);default:throw new Error(`The provided layout type is not recognized: ${t}`)}}clearServiceWorker(){return this.database.clear(this.serviceWorkerObjectStoreName)}storeServiceWorker(e){return this.database.put(this.serviceWorkerObjectStoreName,e,"workerData")}clearAllPrefs(e){return __awaiter$7(this,void 0,void 0,(function*(){const t=(yield this.getAllPrefs()).map((({app:t})=>({app:t,data:{},lastUpdate:e}))),n=this.database.transaction(this.prefsObjectStoreName,"readwrite");return yield Promise.all([...t.map((e=>n.store.put(e,e.app))),n.done]),t}))}getAllPrefs(){return this.database.getAll(this.prefsObjectStoreName)}getPrefs(e){return this.database.get(this.prefsObjectStoreName,e)}deletePrefs(e){return this.database.delete(this.prefsObjectStoreName,e)}replaceAllPrefs(e){return __awaiter$7(this,void 0,void 0,(function*(){const t=this.database.transaction(this.prefsObjectStoreName,"readwrite");return yield t.store.clear(),yield Promise.all([...e.map((e=>t.store.put(e,e.app))),t.done]),e}))}setPrefs(e){return __awaiter$7(this,void 0,void 0,(function*(){return yield this.database.put(this.prefsObjectStoreName,e,e.app),e}))}updatePrefs(e){return __awaiter$7(this,void 0,void 0,(function*(){const t=yield this.database.get(this.prefsObjectStoreName,e.app),n=t?{app:e.app,data:Object.assign(Object.assign({},t.data),e.data),lastUpdate:e.lastUpdate}:e;return this.setPrefs(n)}))}setUpDB(e){e.objectStoreNames.contains(this.workspaceLayoutsObjectStoreName)||e.createObjectStore(this.workspaceLayoutsObjectStoreName),e.objectStoreNames.contains(this.globalLayoutsObjectStoreName)||e.createObjectStore(this.globalLayoutsObjectStoreName),e.objectStoreNames.contains(this.serviceWorkerObjectStoreName)||e.createObjectStore(this.serviceWorkerObjectStoreName),e.objectStoreNames.contains(this.prefsObjectStoreName)||e.createObjectStore(this.prefsObjectStoreName)}}const defaultLoadingConfig={defaultStrategy:"direct",delayed:{batch:1,initialOffsetInterval:1e3,interval:5e3},showDelayedIndicator:!1};class WorkspacesController{constructor(e,t,n,r,i){this.framesController=e,this.glueController=t,this.stateController=n,this.hibernationWatcher=r,this.ioc=i,this.started=!1,this.operations={frameHello:{name:"frameHello",dataDecoder:frameHelloDecoder,execute:this.handleFrameHello.bind(this)},isWindowInWorkspace:{name:"isWindowInWorkspace",dataDecoder:simpleItemConfigDecoder,resultDecoder:isWindowInSwimlaneResultDecoder,execute:this.isWindowInWorkspace.bind(this)},createWorkspace:{name:"createWorkspace",dataDecoder:workspaceCreateConfigDecoder,resultDecoder:workspaceSnapshotResultDecoder,execute:this.createWorkspace.bind(this)},createFrame:{name:"createFrame",resultDecoder:frameSummaryResultDecoder,execute:this.createFrame.bind(this)},initFrame:{name:"initFrame",resultDecoder:voidResultDecoder,execute:this.initFrame.bind(this)},getAllFramesSummaries:{name:"getAllFramesSummaries",resultDecoder:frameSummariesResultDecoder,execute:this.getAllFramesSummaries.bind(this)},getFrameSummary:{name:"getFrameSummary",dataDecoder:getFrameSummaryConfigDecoder,resultDecoder:frameSummaryDecoder,execute:this.getFrameSummary.bind(this)},getAllWorkspacesSummaries:{name:"getAllWorkspacesSummaries",resultDecoder:workspaceSummariesResultDecoder,execute:this.getAllWorkspacesSummaries.bind(this)},getWorkspaceSnapshot:{name:"getWorkspaceSnapshot",dataDecoder:simpleItemConfigDecoder,resultDecoder:workspaceSnapshotResultDecoder,execute:this.getWorkspaceSnapshot.bind(this)},getAllLayoutsSummaries:{name:"getAllLayoutsSummaries",resultDecoder:layoutSummariesDecoder,execute:this.getAllLayoutsSummaries.bind(this)},openWorkspace:{name:"openWorkspace",dataDecoder:openWorkspaceConfigDecoder,resultDecoder:workspaceSnapshotResultDecoder,execute:this.openWorkspace.bind(this)},deleteLayout:{name:"deleteLayout",dataDecoder:deleteLayoutConfigDecoder,resultDecoder:voidResultDecoder,execute:this.deleteLayout.bind(this)},saveLayout:{name:"saveLayout",dataDecoder:workspaceLayoutSaveConfigDecoder,resultDecoder:workspaceLayoutDecoder,execute:this.saveLayout.bind(this)},importLayout:{name:"importLayout",dataDecoder:workspacesLayoutImportConfigDecoder,resultDecoder:voidResultDecoder,execute:this.importLayout.bind(this)},exportAllLayouts:{name:"exportAllLayouts",resultDecoder:exportedLayoutsResultDecoder,execute:this.exportAllLayouts.bind(this)},restoreItem:{name:"restoreItem",dataDecoder:simpleItemConfigDecoder,resultDecoder:voidResultDecoder,execute:this.restoreItem.bind(this)},maximizeItem:{name:"maximizeItem",dataDecoder:simpleItemConfigDecoder,resultDecoder:voidResultDecoder,execute:this.maximizeItem.bind(this)},focusItem:{name:"focusItem",dataDecoder:simpleItemConfigDecoder,resultDecoder:voidResultDecoder,execute:this.focusItem.bind(this)},closeItem:{name:"closeItem",dataDecoder:simpleItemConfigDecoder,resultDecoder:voidResultDecoder,execute:this.closeItem.bind(this)},resizeItem:{name:"resizeItem",dataDecoder:resizeItemConfigDecoder,resultDecoder:voidResultDecoder,execute:this.resizeItem.bind(this)},changeFrameState:{name:"changeFrameState",dataDecoder:frameStateConfigDecoder,resultDecoder:voidResultDecoder,execute:this.changeFrameState.bind(this)},getFrameState:{name:"getFrameState",dataDecoder:simpleItemConfigDecoder,resultDecoder:frameStateResultDecoder,execute:this.getFrameState.bind(this)},getFrameBounds:{name:"getFrameBounds",dataDecoder:simpleItemConfigDecoder,resultDecoder:frameBoundsResultDecoder,execute:this.getFrameBounds.bind(this)},moveFrame:{name:"moveFrame",dataDecoder:moveFrameConfigDecoder,resultDecoder:voidResultDecoder,execute:this.moveFrame.bind(this)},getFrameSnapshot:{name:"getFrameSnapshot",dataDecoder:frameSnapshotConfigDecoder,resultDecoder:frameSnapshotResultDecoder,execute:this.getFrameSnapshot.bind(this)},forceLoadWindow:{name:"forceLoadWindow",dataDecoder:simpleItemConfigDecoder,resultDecoder:simpleWindowOperationSuccessResultDecoder,execute:this.forceLoadWindow.bind(this)},ejectWindow:{name:"ejectWindow",dataDecoder:simpleItemConfigDecoder,resultDecoder:simpleWindowOperationSuccessResultDecoder,execute:this.ejectWindow.bind(this)},setItemTitle:{name:"setItemTitle",dataDecoder:setItemTitleConfigDecoder,resultDecoder:voidResultDecoder,execute:this.setItemTitle.bind(this)},moveWindowTo:{name:"moveWindowTo",dataDecoder:moveWindowConfigDecoder,resultDecoder:voidResultDecoder,execute:this.moveWindowTo.bind(this)},addWindow:{name:"addWindow",dataDecoder:addWindowConfigDecoder,resultDecoder:addItemResultDecoder,execute:this.addWindow.bind(this)},addContainer:{name:"addContainer",dataDecoder:addContainerConfigDecoder,resultDecoder:addItemResultDecoder,execute:this.addContainer.bind(this)},bundleWorkspace:{name:"bundleWorkspace",dataDecoder:bundleWorkspaceConfigDecoder,resultDecoder:voidResultDecoder,execute:this.bundleWorkspace.bind(this)},bundleItem:{name:"bundleItem",dataDecoder:bundleItemConfigDecoder,resultDecoder:voidResultDecoder,execute:this.bundleItem.bind(this)},hibernateWorkspace:{name:"hibernateWorkspace",dataDecoder:workspaceSelectorDecoder,resultDecoder:voidResultDecoder,execute:this.hibernateWorkspace.bind(this)},resumeWorkspace:{name:"resumeWorkspace",dataDecoder:workspaceSelectorDecoder,resultDecoder:voidResultDecoder,execute:this.resumeWorkspace.bind(this)},getWorkspacesConfig:{name:"getWorkspacesConfig",resultDecoder:workspacesConfigDecoder,execute:this.getWorkspacesConfiguration.bind(this)},lockWorkspace:{name:"lockWorkspace",dataDecoder:lockWorkspaceDecoder,resultDecoder:voidResultDecoder,execute:this.lockWorkspace.bind(this)},lockWindow:{name:"lockWindow",dataDecoder:lockWindowDecoder,resultDecoder:voidResultDecoder,execute:this.lockWindow.bind(this)},lockContainer:{name:"lockContainer",dataDecoder:lockContainerDecoder,resultDecoder:voidResultDecoder,execute:this.lockContainer.bind(this)},pinWorkspace:{name:"pinWorkspace",dataDecoder:pinWorkspaceDecoder,resultDecoder:voidResultDecoder,execute:this.pinWorkspace.bind(this)},unpinWorkspace:{name:"unpinWorkspace",dataDecoder:workspaceSelectorDecoder,resultDecoder:voidResultDecoder,execute:this.unpinWorkspace.bind(this)},getWorkspaceIcon:{name:"getWorkspaceIcon",dataDecoder:workspaceSelectorDecoder,resultDecoder:workspaceIconDecoder,execute:this.getWorkspaceIcon.bind(this)},setWorkspaceIcon:{name:"setWorkspaceIcon",dataDecoder:setWorkspaceIconDecoder,resultDecoder:voidResultDecoder,execute:this.setWorkspaceIcon.bind(this)},checkStarted:{name:"checkStarted",execute:this.handleCheckStarted.bind(this)},getPlatformFrameId:{name:"getPlatformFrameId",execute:this.handleGetPlatformFrameId.bind(this)},getWorkspacesLayouts:{name:"getWorkspacesLayouts",dataDecoder:getWorkspacesLayoutsConfigDecoder,resultDecoder:getWorkspacesLayoutsResponseDecoder,execute:this.handleGetWorkspacesLayouts.bind(this)},getWorkspaceWindowsOnLayoutSaveContext:{name:"getWorkspaceWindowsOnLayoutSaveContext",dataDecoder:getWorkspaceWindowsOnLayoutSaveContextConfigDecoder,resultDecoder:getWorkspaceWindowsOnLayoutSaveContextResult,execute:this.handleGetWorkspaceWindowsOnLayoutSaveContext.bind(this)},setMaximizationBoundary:{name:"setMaximizationBoundary",dataDecoder:setMaximizationBoundaryConfigDecoder,resultDecoder:voidResultDecoder,execute:this.handleSetMaximizationBoundary.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder,resultDecoder:operationCheckResultDecoder,execute:this.handleOperationCheck.bind(this)},getWorkspaceWindowFrameBounds:{name:"getWorkspaceWindowFrameBounds",resultDecoder:frameBoundsResultDecoder,dataDecoder:simpleItemConfigDecoder,execute:this.getWorkspaceWindowFrameBounds.bind(this)},focusChange:{name:"focusChange",dataDecoder:focusEventDataDecoder,execute:this.handleFocusEvent.bind(this)}}}handlePlatformShutdown(){this.started=!1,this.hibernationWatcher.stop(),this.framesController.stop()}start(e){return __awaiter$7(this,void 0,void 0,(function*(){e.workspaces?(this.settings=this.applyDefaults(e.workspaces),this.settings.hibernation&&this.hibernationWatcher.start(this,this.settings.hibernation),yield Promise.all([this.glueController.createWorkspacesStream(),this.glueController.createWorkspacesEventsReceiver(this.bridgeWorkspaceEvent.bind(this))]),yield this.framesController.start(e.workspaces,e.windows.defaultWindowOpenBounds,this.operations.getFrameSummary),this.stateController.onWindowDisappeared((e=>this.framesController.handleFrameDisappeared(e))),this.started=!0):this.started=!1}))}get logger(){return logger.get("workspaces.controller")}handleControl(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.started)throw new Error("Cannot handle this workspaces control message, because the controller has not been started");const o=e.data,l=e.commandId,s=workspacesOperationDecoder.run(e.operation);if(!s.ok)throw new Error(`This workspace request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(s.error)}`);const a=s.result,u=null===(t=this.operations[a].dataDecoder)||void 0===t?void 0:t.run(o);if(u&&!u.ok)throw new Error(`Workspace request for ${a} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(u.error)}`);null===(n=this.logger)||void 0===n||n.debug(`[${l}] ${a} command is valid with data: ${JSON.stringify(o)}`);const c=yield this.operations[a].execute(o,l),h=null===(r=this.operations[a].resultDecoder)||void 0===r?void 0:r.run(c);if(h&&!h.ok)throw new Error(`Workspace request for ${a} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(h.error)}`);return null===(i=this.logger)||void 0===i||i.trace(`[${l}] ${a} command was executed successfully`),c}))}handleClientUnloaded(e,t){var n,r;null===(n=this.logger)||void 0===n||n.trace(`handling unloading of ${e}`),t&&!t.closed||(null===(r=this.logger)||void 0===r||r.trace(`${e} detected as closed, checking if frame and processing close`),this.framesController.handleFrameDisappeared(e))}bridgeWorkspaceEvent(e){this.glueController.pushWorkspacesMessage(e),"closed"===e.action&&"workspace"===e.type&&this.glueController.clearContext(e.payload.workspaceSummary.id,"workspace"),this.settings.hibernation&&this.hibernationWatcher.notifyEvent(e)}closeItem(e,t){var n,r,i,o,l,s;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling closeItem request with config ${JSON.stringify(e)}`);const a=this.framesController.getAll().find((t=>t.windowId===e.itemId));if(a)return null===(r=this.logger)||void 0===r||r.trace(`[${t}] this is targeted at a frame, closing the frame`),null===(i=window.open(void 0,a.windowId))||void 0===i||i.close(),void(null===(o=this.logger)||void 0===o||o.trace(`[${t}] the frame window is closed`));const u=yield this.framesController.getFrameInstance(e);null===(l=this.logger)||void 0===l||l.trace(`[${t}] targeting frame ${u.windowId}`),yield this.glueController.callFrame(this.operations.closeItem,e,u.windowId),null===(s=this.logger)||void 0===s||s.trace(`[${t}] frame ${u.windowId} gave a success signal, responding to caller`)}))}setItemTitle(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling setItemTitle request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance(e);null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.setItemTitle,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}hibernateWorkspace(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling hibernateWorkspace request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance({itemId:e.workspaceId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.preserveAllWorkspaceWindowsContext(e.workspaceId),yield this.glueController.callFrame(this.operations.hibernateWorkspace,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}getWorkspacesConfiguration(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){return null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling getWorkspacesConfiguration request`),this.settings}))}getWorkspaceWindowFrameBounds(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling getWorkspaceWindowFrameBounds request with config ${JSON.stringify(e)}`);const i=yield this.framesController.getFrameInstance({itemId:e.itemId}),o=yield this.glueController.callWindow("windows",this.ioc.windowsController.getFrameBoundsOperation,{windowId:i.windowId},{windowId:i.windowId});return null===(r=this.logger)||void 0===r||r.trace(`[${t}] getWorkspaceWindowFrameBounds completed`),{bounds:o.bounds}}))}getAllFramesSummaries(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling getAllFramesSummaries request`),!this.started)return{summaries:[]};const e=yield this.framesController.getAll();null===(r=this.logger)||void 0===r||r.trace(`[${t}] sending getFrameSummary to all known frames: ${e.join(", ")}`);const o=(yield Promise.all(e.map((e=>this.glueController.callFrame(this.operations.getFrameSummary,{itemId:e.windowId},e.windowId))))).filter((e=>"none"!==e.id));return null===(i=this.logger)||void 0===i||i.trace(`[${t}] all frames responded, returning to caller`),{summaries:o}}))}handleOperationCheck(e){return __awaiter$7(this,void 0,void 0,(function*(){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}))}handleFrameHello(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling handleFrameHello command with config: ${JSON.stringify(e)}`),e.windowId&&this.framesController.processNewHello(e.windowId)}))}isWindowInWorkspace(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling isWindowInWorkspace command with config: ${JSON.stringify(e)}`);const o=this.framesController.getAll();null===(r=this.logger)||void 0===r||r.trace(`[${t}] sending isWindowInWorkspace to all known frames: ${JSON.stringify(o.join(", "))}`);const l=(yield Promise.all(o.map((t=>this.glueController.callFrame(this.operations.isWindowInWorkspace,e,t.windowId))))).some((e=>e.inWorkspace));return null===(i=this.logger)||void 0===i||i.trace(`[${t}] all frames responded, returning ${l} to the caller`),{inWorkspace:l}}))}createWorkspace(e,t){var n,r,i,o,l,s;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling createWorkspace command`);const a={frameId:null===(r=e.frame)||void 0===r?void 0:r.reuseFrameId,newFrame:null===(i=e.frame)||void 0===i?void 0:i.newFrame,itemId:null===(o=e.config)||void 0===o?void 0:o.reuseWorkspaceId},u=yield this.framesController.getFrameInstance(a);null===(l=this.logger)||void 0===l||l.trace(`[${t}] calling frame: ${u.windowId}, based on selection config: ${JSON.stringify(a)}`);const c=yield this.glueController.callFrame(this.operations.createWorkspace,e,u.windowId);return null===(s=this.logger)||void 0===s||s.trace(`[${t}] frame ${u.windowId} responded with a valid snapshot, returning to caller`),c}))}createFrame(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling createFrame command`);const o=yield this.framesController.openFrame(e.frameConfig,e.layoutComponentId);null===(r=this.logger)||void 0===r||r.trace(`[${t}] calling frame: ${o.windowId}}`);const l=yield this.glueController.callFrame(this.operations.createFrame,e,o.windowId);return null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} responded returning to caller`),l}))}initFrame(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling initFrame command`);const o={frameId:e.frameId},l=yield this.framesController.getFrameInstance(o);null===(r=this.logger)||void 0===r||r.trace(`[${t}] calling frame: ${l.windowId}, based on selection config: ${JSON.stringify(o)}`),yield this.glueController.callFrame(this.operations.initFrame,e,l.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${l.windowId} responded returning to caller`)}))}getFrameSummary(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling getFrameSummary request for config: ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance(e);null===(r=this.logger)||void 0===r||r.trace(`[${t}] forwarding getFrameSummary to frame ${o.windowId}`);const l=yield this.glueController.callFrame(this.operations.getFrameSummary,e,o.windowId);return null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} responded with a valid summary, returning to caller`),l}))}getAllWorkspacesSummaries(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling getAllWorkspacesSummaries request`);const e=this.framesController.getAll();null===(r=this.logger)||void 0===r||r.trace(`[${t}] sending getAllWorkspacesSummaries to all known frames: ${e.join(", ")}`);const o=(yield Promise.all(e.map((e=>this.glueController.callFrame(this.operations.getAllWorkspacesSummaries,{},e.windowId))))).reduce(((e,t)=>(e.push(...t.summaries),e)),[]);return null===(i=this.logger)||void 0===i||i.trace(`[${t}] all frames responded, results were aggregated, returning to caller`),{summaries:o}}))}getWorkspaceSnapshot(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling getWorkspaceSnapshot for config: ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance(e);null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`);const l=yield this.glueController.callFrame(this.operations.getWorkspaceSnapshot,e,o.windowId);return null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} responded with a valid snapshot, retuning to caller`),l}))}handleCheckStarted(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){return null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling handleCheckStarted request`),null===(r=this.logger)||void 0===r||r.trace(`[${t}] the controller has been started, responding to caller`),{started:!0}}))}handleGetPlatformFrameId(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling GetPlatformFrameId request`);const e=this.framesController.getPlatformFrameSessionData();return null===(r=this.logger)||void 0===r||r.trace(`[${t}] GetPlatformFrameId completed, responding to caller`),{id:null==e?void 0:e.windowId}}))}getFrameSessionData(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling getFrameSessionData request`);const i=this.framesController.getFrameConfig(e.frameId);return null===(r=this.logger)||void 0===r||r.trace(`[${t}] getFrameSessionData completed, responding to caller`),i}))}handleGetWorkspacesLayouts(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling handleGetWorkspacesLayouts request for frame: ${e.frameId} for layout: ${e.layoutName} of type: ${e.layoutType}`);const i=yield this.glueController.callFrame(this.operations.getWorkspacesLayouts,e,e.frameId);return null===(r=this.logger)||void 0===r||r.trace(`[${t}] handleGetWorkspacesLayouts request completed for frame: ${e.frameId} for layout: ${e.layoutName} of type: ${e.layoutType}`),i}))}getFrameBounds(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling getFrameBounds request with config ${JSON.stringify(e)}`);const i=yield this.framesController.getFrameInstance({frameId:e.itemId}),o=yield this.glueController.callWindow("windows",this.ioc.windowsController.getFrameBoundsOperation,{windowId:i.windowId},{windowId:i.windowId});return null===(r=this.logger)||void 0===r||r.trace(`[${t}] getFrameBounds completed`),{bounds:o.bounds}}))}getAllLayoutsSummaries(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling getAllLayoutsSummaries command`);const e=(yield this.ioc.layoutsController.handleGetAll({type:"Workspace"},t)).summaries.map((e=>({name:e.name})));return null===(r=this.logger)||void 0===r||r.trace(`[${t}] all layouts retrieved and mapped, returning to caller`),{summaries:e}}))}openWorkspace(e,t){var n,r,i,o;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling openWorkspace command for name: ${e.name}`);const l={frameId:null===(r=e.restoreOptions)||void 0===r?void 0:r.frameId,newFrame:null===(i=e.restoreOptions)||void 0===i?void 0:i.newFrame,itemId:null===(o=e.restoreOptions)||void 0===o?void 0:o.reuseWorkspaceId},s=yield this.framesController.getFrameInstance(l);return yield this.glueController.callFrame(this.operations.openWorkspace,e,s.windowId)}))}deleteLayout(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling deleteLayout request for name: ${e.name}`),yield this.ioc.layoutsController.handleRemove({name:e.name,type:"Workspace"},t),null===(r=this.logger)||void 0===r||r.trace(`[${t}] layouts reported this layout as deleted, responding to caller`)}))}saveLayout(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling saveLayout request for workspace ${e.workspaceId} and name ${e.name}`);const o=yield this.framesController.getFrameInstance({itemId:e.workspaceId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] forwarding request to frame ${o.windowId}`);const l=yield this.glueController.callFrame(this.operations.saveLayout,e,o.windowId);return null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} responded with a valid layout, returning to caller`),l}))}importLayout(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling importLayout command for layout ${e.layout.name}`),yield this.ioc.layoutsController.handleImport({layouts:[e.layout],mode:e.mode},t),null===(r=this.logger)||void 0===r||r.trace(`[${t}] the layouts controller successfully imported the layout, responding to caller`)}))}exportAllLayouts(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling exportAllLayouts request`);return yield this.ioc.layoutsController.handleExport({type:"Workspace"},t)}))}restoreItem(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling restoreItem request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance(e);null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.restoreItem,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}maximizeItem(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling maximizeItem request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance(e);null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.maximizeItem,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}focusItem(e,t){var n,r,i,o;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling focusItem request with config ${JSON.stringify(e)}`);const l=this.framesController.getAll().find((t=>t.windowId===e.itemId));if(l)return null===(r=this.logger)||void 0===r||r.trace(`[${t}] this is targeted at a frame, focusing the frame`),void window.open(void 0,l.windowId);const s=yield this.framesController.getFrameInstance(e);null===(i=this.logger)||void 0===i||i.trace(`[${t}] targeting frame ${s.windowId}`),yield this.glueController.callFrame(this.operations.focusItem,e,s.windowId),null===(o=this.logger)||void 0===o||o.trace(`[${t}] frame ${s.windowId} gave a success signal, responding to caller`)}))}resizeItem(e,t){var n,r,i,o,l;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling resizeItem request with config ${JSON.stringify(e)}`);const s=this.framesController.getAll().find((t=>t.windowId===e.itemId));if(s){null===(r=this.logger)||void 0===r||r.trace(`[${t}] detected targeted item is frame, building window resize config`);const n={windowId:e.itemId,width:e.width,height:e.height,relative:e.relative};return yield this.glueController.callWindow("windows",this.ioc.windowsController.moveResizeOperation,n,{windowId:s.windowId}),void(null===(i=this.logger)||void 0===i||i.trace(`[${t}] window resize responded with success, returning to caller`))}const a=yield this.framesController.getFrameInstance(e);null===(o=this.logger)||void 0===o||o.trace(`[${t}] targeted item is not a frame, it is located in frame ${a.windowId}`),yield this.glueController.callFrame(this.operations.resizeItem,e,a.windowId),null===(l=this.logger)||void 0===l||l.trace(`[${t}] frame ${a.windowId} gave a success signal, responding to caller`)}))}getFrameSnapshot(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling getFrameSnapshot request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance(e);null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`);const l=yield this.glueController.callFrame(this.operations.getFrameSnapshot,e,o.windowId);return null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`),l}))}forceLoadWindow(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling forceLoadWindow request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance(e);null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`);const l=yield this.glueController.callFrame(this.operations.forceLoadWindow,e,o.windowId);return null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`),l}))}ejectWindow(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling ejectWindow request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance(e);null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`);const l=yield this.glueController.callFrame(this.operations.ejectWindow,e,o.windowId);return null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`),l}))}moveWindowTo(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling moveWindowTo request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance(e);null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.moveWindowTo,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}addWindow(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling addWindow request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance({itemId:e.parentId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`);const l=yield this.glueController.callFrame(this.operations.addWindow,e,o.windowId);return null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal: ${JSON.stringify(l)}, responding to caller`),l}))}addContainer(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling addContainer request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance({itemId:e.parentId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`);const l=yield this.glueController.callFrame(this.operations.addContainer,e,o.windowId);return null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal: ${JSON.stringify(l)}, responding to caller`),l}))}bundleWorkspace(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling bundleWorkspace request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance({itemId:e.workspaceId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.bundleWorkspace,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}bundleItem(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling bundleItem request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance({itemId:e.itemId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.bundleItem,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}resumeWorkspace(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling resumeWorkspace request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance({itemId:e.workspaceId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.resumeWorkspace,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}lockWorkspace(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling lockWorkspace request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance({itemId:e.workspaceId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.lockWorkspace,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}lockContainer(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling lockContainer request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance({itemId:e.itemId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.lockContainer,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}lockWindow(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling lockWindow request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance({itemId:e.windowPlacementId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.lockWindow,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}pinWorkspace(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling pinWorkspace request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance({itemId:e.workspaceId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.pinWorkspace,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}unpinWorkspace(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling unpinWorkspace request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance({itemId:e.workspaceId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.unpinWorkspace,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}getWorkspaceIcon(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling getWorkspaceIcon request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance({itemId:e.workspaceId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`);const l=yield this.glueController.callFrame(this.operations.getWorkspaceIcon,e,o.windowId);return null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`),l}))}setWorkspaceIcon(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling setWorkspaceIcon request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance({itemId:e.workspaceId});null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.setWorkspaceIcon,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}handleGetWorkspaceWindowsOnLayoutSaveContext(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling GetWorkspaceWindowsOnLayoutSaveContext request with config: ${JSON.stringify(e)}`);const i=yield Promise.all(e.windowIds.map((t=>__awaiter$7(this,void 0,void 0,(function*(){return{windowId:t,windowContext:yield this.getWorkspaceWindowOnLayoutSaveData(t,e)}})))));return null===(r=this.logger)||void 0===r||r.trace(`[${t}] operation GetWorkspaceWindowsOnLayoutSaveContext completed responding`),{windowsOnSaveData:i}}))}handleSetMaximizationBoundary(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling setMaximizationBoundary request with config ${JSON.stringify(e)}`);const o=yield this.framesController.getFrameInstance(e);null===(r=this.logger)||void 0===r||r.trace(`[${t}] targeting frame ${o.windowId}`),yield this.glueController.callFrame(this.operations.setMaximizationBoundary,e,o.windowId),null===(i=this.logger)||void 0===i||i.trace(`[${t}] frame ${o.windowId} gave a success signal, responding to caller`)}))}changeFrameState(e,t){return __awaiter$7(this,void 0,void 0,(function*(){throw new Error("Frame states are not supported in Glue42 Core")}))}getFrameState(e,t){return __awaiter$7(this,void 0,void 0,(function*(){throw new Error("Frame states are not supported in Glue42 Core")}))}handleFocusEvent(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling focus event from frame id: ${e.windowId} and hasFocus: ${e.hasFocus}`);try{yield this.framesController.getFrameInstance({frameId:e.windowId})}catch(n){return void(null===(r=this.logger)||void 0===r||r.trace(`[${t}] ignoring focus event for unrecognized frame with id: ${e.windowId}`))}const o={type:"frame",action:"focus",payload:{frameSummary:{id:e.windowId,isFocused:e.hasFocus}}};this.bridgeWorkspaceEvent(o),null===(i=this.logger)||void 0===i||i.trace(`[${t}] focus event from frame id: ${e.windowId} and hasFocus: ${e.hasFocus} handled`)}))}moveFrame(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling moveFrame command with config: ${JSON.stringify(e)}`);const i=yield this.framesController.getFrameInstance({frameId:e.itemId}),o={windowId:e.itemId,top:e.top,left:e.left,relative:e.relative};yield this.glueController.callWindow("windows",this.ioc.windowsController.moveResizeOperation,o,{windowId:i.windowId}),null===(r=this.logger)||void 0===r||r.trace(`[${t}] frame with id ${i.windowId} was successfully moved, responding to caller`)}))}applyDefaults(e){const t=(null==e?void 0:e.hibernation)||{},n=(null==e?void 0:e.loadingStrategy)||{},r=deepMerge(defaultLoadingConfig,n);return Object.assign(Object.assign({},e),{loadingStrategy:r,hibernation:t})}getWorkspaceWindowOnLayoutSaveData(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){if(this.ioc.sessionController.getAllNonGlue().some((t=>t.windowId===e)))return{};if(!this.ioc.sessionController.getWorkspaceClientById(e))throw new Error(`Cannot ask window: ${e} for on layout save request, because it is not a known workspace window`);const r=`Cannot fetch the on layout save context from: ${e}, because of timeout`,i=yield PromiseWrap((()=>__awaiter$7(this,void 0,void 0,(function*(){try{return yield this.glueController.callWindow("layouts",{name:"clientSaveRequest",execute:()=>__awaiter$7(this,void 0,void 0,(function*(){}))},t,{windowId:e})}catch(e){return{}}}))),15e3,r);return null!==(n=null==i?void 0:i.windowContext)&&void 0!==n?n:{}}))}}const intentsOperationTypesDecoder=oneOf$1(constant$1("findIntent"),constant$1("getIntents"),constant$1("raiseIntent"),constant$1("raise"),constant$1("operationCheck"),constant$1("filterHandlers"),constant$1("getIntentsByHandler")),intentHandlerDecoder=object$1({applicationName:nonEmptyStringDecoder$1,applicationTitle:optional$1(string$1()),applicationDescription:optional$1(string$1()),applicationIcon:optional$1(string$1()),type:oneOf$1(constant$1("app"),constant$1("instance")),displayName:optional$1(string$1()),contextTypes:optional$1(array$1(nonEmptyStringDecoder$1)),instanceId:optional$1(string$1()),instanceTitle:optional$1(string$1()),resultType:optional$1(nonEmptyStringDecoder$1)}),intentDecoder=object$1({name:nonEmptyStringDecoder$1,handlers:array$1(intentHandlerDecoder)}),intentTargetDecoder=oneOf$1(constant$1("startNew"),constant$1("reuse"),object$1({app:optional$1(nonEmptyStringDecoder$1),instance:optional$1(nonEmptyStringDecoder$1)})),intentContextDecoder=object$1({type:optional$1(nonEmptyStringDecoder$1),data:optional$1(object$1())}),intentsDecoder=array$1(intentDecoder),wrappedIntentsDecoder=object$1({intents:intentsDecoder}),wrappedIntentFilterDecoder=object$1({filter:optional$1(object$1({name:optional$1(nonEmptyStringDecoder$1),contextType:optional$1(nonEmptyStringDecoder$1),resultType:optional$1(nonEmptyStringDecoder$1)}))});object$1({applicationName:nonEmptyStringDecoder$1,applicationIcon:optional$1(string$1()),instanceId:optional$1(string$1())});const intentRequestDecoder=object$1({intent:nonEmptyStringDecoder$1,target:optional$1(intentTargetDecoder),context:optional$1(intentContextDecoder),options:optional$1(windowOpenSettingsDecoder),handlers:optional$1(array$1(intentHandlerDecoder)),timeout:optional$1(nonNegativeNumberDecoder$1),waitUserResponseIndefinitely:optional$1(boolean())}),resolverConfigDecoder=object$1({enabled:optional$1(boolean()),appName:string$1(),waitResponseTimeout:number$1()}),raiseIntentRequestDecoder=object$1({intentRequest:intentRequestDecoder,resolverConfig:resolverConfigDecoder}),intentResultDecoder=object$1({request:intentRequestDecoder,handler:intentHandlerDecoder,result:anyJson$1()}),raiseIntentResolverResponseDecoder=object$1({intent:nonEmptyStringDecoder$1,handler:intentHandlerDecoder}),filterHandlersResolverResponseDecoder=object$1({handler:intentHandlerDecoder}),handlersFilterDecoder=object$1({title:optional$1(nonEmptyStringDecoder$1),openResolver:optional$1(boolean()),timeout:optional$1(nonNegativeNumberDecoder$1),intent:optional$1(nonEmptyStringDecoder$1),contextTypes:optional$1(array$1(nonEmptyStringDecoder$1)),resultType:optional$1(nonEmptyStringDecoder$1),applicationNames:optional$1(array$1(nonEmptyStringDecoder$1))}),filterHandlersResultDecoder=object$1({handlers:array$1(intentHandlerDecoder)}),filterHandlersWithResolverConfigDecoder=object$1({filterHandlersRequest:handlersFilterDecoder,resolverConfig:resolverConfigDecoder}),intentInfoDecoder=object$1({intent:nonEmptyStringDecoder$1,contextTypes:optional$1(array$1(nonEmptyStringDecoder$1)),description:optional$1(nonEmptyStringDecoder$1),displayName:optional$1(nonEmptyStringDecoder$1),icon:optional$1(nonEmptyStringDecoder$1),resultType:optional$1(nonEmptyStringDecoder$1)}),getIntentsResultDecoder=object$1({intents:array$1(intentInfoDecoder)}),INTENTS_RESOLVER_INTEROP_PREFIX="T42.Intents.Resolver.Control.",INTENTS_RESOLVER_WIDTH=400,INTENTS_RESOLVER_HEIGHT=440,DEFAULT_METHOD_RESPONSE_TIMEOUT_MS=6e4,DEFAULT_RAISE_TIMEOUT_MS=9e4,DEFAULT_PICK_HANDLER_BY_TIMEOUT_MS=9e4,ERRORS=errors.intents;class IntentsController{constructor(e,t,n,r){this.glueController=e,this.resolverHelper=t,this.appDirectory=n,this.ioc=r,this.operations={getIntents:{name:"getIntents",resultDecoder:wrappedIntentsDecoder,execute:this.getWrappedIntents.bind(this)},findIntent:{name:"findIntent",dataDecoder:wrappedIntentFilterDecoder,resultDecoder:wrappedIntentsDecoder,execute:this.findIntent.bind(this)},raiseIntent:{name:"raiseIntent",dataDecoder:intentRequestDecoder,resultDecoder:intentResultDecoder,execute:this.handleRaiseIntent.bind(this)},raise:{name:"raise",dataDecoder:raiseIntentRequestDecoder,resultDecoder:intentResultDecoder,execute:this.raise.bind(this)},filterHandlers:{name:"filterHandlers",dataDecoder:filterHandlersWithResolverConfigDecoder,resultDecoder:filterHandlersResultDecoder,execute:this.filterHandlers.bind(this)},getIntentsByHandler:{name:"getIntentsByHandler",dataDecoder:intentHandlerDecoder,resultDecoder:getIntentsResultDecoder,execute:this.getIntentsByHandler.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder,resultDecoder:operationCheckResultDecoder,execute:this.handleOperationCheck.bind(this)}},this.started=!1}get logger(){return logger.get("intents.controller")}handlePlatformShutdown(){this.started=!1}start(){return __awaiter$7(this,void 0,void 0,(function*(){this.started=!0}))}handleControl(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.started)throw new Error("Cannot handle this intents control message, because the controller has not been started");const o=e.data,l=e.commandId,s=e.callerId,a=intentsOperationTypesDecoder.run(e.operation);if(!a.ok)throw new Error(`This intents request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(a.error)}`);const u=a.result,c=null===(t=this.operations[u].dataDecoder)||void 0===t?void 0:t.run(o);if(c&&!c.ok)throw new Error(`Intents request for ${u} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(c.error)}`);null===(n=this.logger)||void 0===n||n.debug(`[${l}] ${u} command is valid with data: ${JSON.stringify(o)}`);const h=yield this.operations[u].execute(o,l,s),d=null===(r=this.operations[u].resultDecoder)||void 0===r?void 0:r.run(h);if(d&&!d.ok)throw new Error(`Intents request for ${u} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(d.error)}`);return null===(i=this.logger)||void 0===i||i.trace(`[${l}] ${u} command was executed successfully`),h}))}handleOperationCheck(e){return __awaiter$7(this,void 0,void 0,(function*(){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}))}extractAppIntents(e){const t={},n=e.filter((e=>e.intents.length>0));for(const e of n)for(const n of e.intents){t[n.name]||(t[n.name]=[]);const r={applicationName:e.name,applicationTitle:e.title,applicationDescription:e.caption,displayName:n.displayName,contextTypes:n.contexts,applicationIcon:e.icon,type:"app",resultType:n.resultType};t[n.name].push(r)}return t}getInstanceIntents(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){const r={};for(const i of this.glueController.getServers()){const o=((null===(n=i.getMethods)||void 0===n?void 0:n.call(i))||[]).filter((e=>e.name.startsWith(GlueWebIntentsPrefix)));yield Promise.all(o.map((n=>__awaiter$7(this,void 0,void 0,(function*(){const o=n.name.replace(GlueWebIntentsPrefix,"");r[o]||(r[o]=[]);const l=n.flags.intent,s=e.find((e=>e.name===i.application));let a,u;s&&s.intents&&(a=s.intents.find((e=>e.name===o))),this.glueController.isValidWindowId(i.windowId)&&(u=yield this.ioc.windowsController.getWindowTitle(i.windowId,t));const c={instanceId:i.windowId||i.instance,applicationName:i.application||"",applicationIcon:l.icon||(null==s?void 0:s.icon),applicationTitle:(null==s?void 0:s.title)||"",applicationDescription:l.description||(null==s?void 0:s.caption),displayName:l.displayName||(null==a?void 0:a.displayName),contextTypes:l.contextTypes||(null==a?void 0:a.contexts),instanceTitle:u,type:"instance",resultType:(null==a?void 0:a.resultType)||l.resultType};r[o].push(c)})))))}return r}))}mergeIntentStores(e,t){const n={};for(const r of new Set([...Object.keys(e),...Object.keys(t)]))n[r]=[...e[r]||[],...t[r]||[]];return n}wrapIntents(e){return{intents:e}}getIntents(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){const r=(yield this.appDirectory.getAll()).map((e=>({name:e.name,title:e.title||"",icon:e.icon,caption:e.caption,intents:e.userProperties.intents||[]}))),i=this.extractAppIntents(r);null===(t=this.logger)||void 0===t||t.trace(`[${e}] got app intents`);const o=yield this.getInstanceIntents(r,e);null===(n=this.logger)||void 0===n||n.trace(`[${e}] got instance intents`);const l=this.mergeIntentStores(i,o);return Object.keys(l).map((e=>({name:e,handlers:l[e]})))}))}getWrappedIntents(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){null===(t=this.logger)||void 0===t||t.trace(`[${e}] handling getIntents command`);const r=yield this.getIntents(e);return null===(n=this.logger)||void 0===n||n.trace(`[${e}] getIntents command completed`),this.wrapIntents(r)}))}findIntent(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling findIntent command`);const i=e.filter;let o=yield this.getIntents(t);if(!i)return this.wrapIntents(o);if("string"==typeof i)return this.wrapIntents(o.filter((e=>e.name===i)));if(i.contextType){const e=i.contextType.toLowerCase();o=o.filter((t=>t.handlers.some((t=>{var n;return null===(n=t.contextTypes)||void 0===n?void 0:n.some((t=>t.toLowerCase()===e))}))))}if(i.name&&(o=o.filter((e=>e.name===i.name))),i.resultType){const e=i.resultType.toLowerCase();o=o.filter((t=>t.handlers.some((t=>{var n;return(null===(n=t.resultType)||void 0===n?void 0:n.toLowerCase())===e}))))}return null===(r=this.logger)||void 0===r||r.trace(`[${t}] findIntent command completed`),this.wrapIntents(o)}))}getIntent(e,t){return __awaiter$7(this,void 0,void 0,(function*(){return(yield this.getIntents(t)).find((t=>t.name===e))}))}startApp(e,t){return __awaiter$7(this,void 0,void 0,(function*(){return(yield this.ioc.applicationsController.handleApplicationStart(e,t)).id}))}handleRaiseIntent(e,t,n){return this.raiseIntent(e,t,n)}raiseIntent(e,t,n,r){var i,o;return __awaiter$7(this,void 0,void 0,(function*(){null===(i=this.logger)||void 0===i||i.trace(`[${t}] handling raiseIntent command with intentRequest: ${JSON.stringify(e)}`);const l=e.intent,s=yield this.getIntent(l,t);if(!s)throw new Error(`Intent ${l} not found!`);null===(o=this.logger)||void 0===o||o.trace(`Raised intent definition: ${JSON.stringify(s)}`);const a=e.handlers?this.findHandlerByFilter(e.handlers,{type:"app"}):this.findHandlerByFilter(s.handlers,{type:"app"}),u=e.handlers?this.findHandlerByFilter(e.handlers,{type:"instance"}):this.findHandlerByFilter(s.handlers,{type:"instance"});let c;if(e.target&&"reuse"!==e.target||(c=u||a),"startNew"===e.target&&(c=a),"object"==typeof e.target&&e.target.app&&(c=this.findHandlerByFilter(s.handlers,{app:e.target.app})),"object"==typeof e.target&&e.target.instance&&(c=this.findHandlerByFilter(s.handlers,{instance:e.target.instance,app:e.target.app})),!c)throw new Error(`Can not raise intent for request ${JSON.stringify(e)} - can not find intent handler!`);return yield this.raiseIntentToTargetHandler({request:e,handler:c,commandId:t,callerId:n,timeout:r})}))}findHandlerByFilter(e,t){return t.type?e.find((e=>e.type===t.type)):t.instance?e.find((e=>t.app?e.applicationName===t.app&&e.instanceId===t.instance:e.instanceId===t.instance)):t.app?e.find((e=>e.applicationName===t.app)):void 0}raiseIntentToTargetHandler({handler:e,request:t,callerId:n,commandId:r,timeout:i}){var o,l,s;return __awaiter$7(this,void 0,void 0,(function*(){null===(o=this.logger)||void 0===o||o.trace(`Raising intent to target handler:${JSON.stringify(e)}`);const a=e.instanceId?Promise.resolve(e.instanceId):this.startApp(Object.assign(Object.assign({name:e.applicationName},t.options),{context:t.context}),r).catch((e=>{const t=e instanceof Error||"string"==typeof e?e:JSON.stringify(e);throw new Error(`${ERRORS.TARGET_INSTANCE_UNAVAILABLE}. Reason: ${t}`)})),u=yield a,c=`${GlueWebIntentsPrefix}${t.intent}`;null===(l=this.logger)||void 0===l||l.trace(`Searching for interop server offering method ${c}`);const h={methodResponseTimeoutMs:i?i+1e3:DEFAULT_METHOD_RESPONSE_TIMEOUT_MS,waitTimeoutMs:i?i+1e3:DEFAULT_METHOD_RESPONSE_TIMEOUT_MS},d=this.glueController.invokeMethod(c,Object.assign(Object.assign({},t.context),{_initialCallerId:n}),{instance:u},h).catch((e=>{throw new Error(`${ERRORS.INTENT_HANDLER_REJECTION}. Reason: ${e instanceof Error?e:JSON.stringify(e)}`)})),f=yield d;return null===(s=this.logger)||void 0===s||s.trace(`[${r}] raiseIntent command completed. Returning result: ${JSON.stringify(f)}`),{request:t,handler:Object.assign(Object.assign({},e),{instanceId:u,type:"instance"}),result:f.returned}}))}raise(e,t,n){var r;return __awaiter$7(this,void 0,void 0,(function*(){if(null===(r=this.logger)||void 0===r||r.trace(`[${t}] Receive raise command with config: ${JSON.stringify(e)}`),!n)throw new Error(`${ERRORS.CALLER_NOT_DEFINED} for 'raise' command with request ${JSON.stringify(e)}`);const i=e.intentRequest.timeout||DEFAULT_RAISE_TIMEOUT_MS,o={instanceId:void 0},l=this.coreRaiseIntent.bind(this,{request:e,resolverInstance:o,timeout:i,commandId:t,callerId:n});if(e.intentRequest.waitUserResponseIndefinitely)return l();const s=PromiseWrap(l,i,`${ERRORS.TIMEOUT_HIT} - waited ${i}ms for 'raise' to resolve`);return s.catch((()=>this.handleRaiseOnError(o.instanceId))),s}))}coreRaiseIntent({request:e,resolverInstance:t,timeout:n,commandId:r,callerId:i}){var o,l,s,a,u;return __awaiter$7(this,void 0,void 0,(function*(){const{resolverConfig:c,intentRequest:h}=e,d=(yield this.findIntent({filter:{name:h.intent}},r)).intents.find((e=>e.name===h.intent));if(!d)throw new Error(`${ERRORS.INTENT_NOT_FOUND} with name ${h.intent}`);null===(o=this.logger)||void 0===o||o.trace(`[${r}] Intent to be handled: ${JSON.stringify(d)}`);const{open:f,reason:p}=this.checkIfResolverShouldBeOpenedForRaise(d,h,c);if(!f)return null===(l=this.logger)||void 0===l||l.trace(`[${r}] Intent Resolver UI won't be used. Reason: ${p}`),h.waitUserResponseIndefinitely?PromiseWrap((()=>this.raiseIntent(h,r,i,n)),n,`${ERRORS.TIMEOUT_HIT} - waited ${n}ms for 'raise' to resolve`):this.raiseIntent(h,r,i,n);null===(s=this.logger)||void 0===s||s.trace(`[${r}] Starting Intent Resolver app for intent request: ${e}`);const g=yield this.resolverHelper.startResolverApp({request:e.intentRequest,resolverConfig:e.resolverConfig,callerId:i,commandId:r,resolverInstance:t,method:"raise"});if(null===(a=this.logger)||void 0===a||a.trace(`Raising intent to target handler: ${JSON.stringify(g)} ${e.intentRequest.waitUserResponseIndefinitely?`with timeout of ${e.intentRequest.timeout||DEFAULT_RAISE_TIMEOUT_MS}`:""}`),h.waitUserResponseIndefinitely)return PromiseWrap((()=>this.raiseIntentToTargetHandler({request:h,handler:g,commandId:r,timeout:n,callerId:i})),n,`${ERRORS.TIMEOUT_HIT} - waited ${n}ms for 'raise' to resolve`);const w=yield this.raiseIntentToTargetHandler({request:e.intentRequest,handler:g,commandId:r,callerId:i,timeout:n});return null===(u=this.logger)||void 0===u||u.trace(`Result from raise() method for intent ${JSON.stringify(e.intentRequest.intent)}: ${JSON.stringify(w)}`),w}))}handleRaiseOnError(e){e&&this.resolverHelper.stopResolverInstance(e)}checkIfIntentHasMoreThanOneHandler(e,t){return t.target?"reuse"===t.target?t.handlers?t.handlers.filter((e=>"instance"===e.type&&e.instanceId)).length>1||t.handlers.filter((e=>"app"===e.type)).length>1:e.handlers.filter((e=>"instance"===e.type&&e.instanceId)).length>1||e.handlers.filter((e=>"app"===e.type)).length>1:"startNew"===t.target?t.handlers?t.handlers.filter((e=>"app"===e.type)).length>1:e.handlers.filter((e=>"app"===e.type)).length>1:(t.target,!1):t.handlers?t.handlers.length>1:e.handlers.length>1}checkIfResolverShouldBeOpenedForRaise(e,t,n){const r=this.checkIfResolverShouldBeOpenByResolverConfig(n);if(!r.open)return r;return this.checkIfIntentHasMoreThanOneHandler(e,t)?{open:!0}:{open:!1,reason:"Raised intent has only one handler"}}checkIfResolverShouldBeOpenedForFilterHandlers(e,t,n){return 1===e.length?{open:!1,reason:`There's only one valid intent handler for filter ${JSON.stringify(t)}`}:this.checkIfResolverShouldBeOpenByResolverConfig(n)}checkIfResolverShouldBeOpenByResolverConfig(e){if(!e.enabled)return{open:!1,reason:"Intent Resolver is disabled. Raising intent to first found handler"};return this.glueController.clientGlue.appManager.application(e.appName)?{open:!0}:{open:!1,reason:`Application with name ${e.appName} not found`}}filterHandlers(e,t,n){var r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(null===(r=this.logger)||void 0===r||r.trace(`[${t}] Receive 'filterHandlers' command with request: ${JSON.stringify(e)}`),!n)throw new Error("Cannot preform 'filterHandlers' - callerId is not defined");const{filterHandlersRequest:o,resolverConfig:l}=e,s=this.filterHandlersBy(yield this.getIntents(t),o);if(!(null==s?void 0:s.length))return{handlers:[]};const{open:a,reason:u}=this.checkIfResolverShouldBeOpenedForFilterHandlers(s,o,l);if(!a)return null===(i=this.logger)||void 0===i||i.trace(`[${t}] Intent Resolver UI won't be used. Reason: ${u}`),{handlers:s};const c={instanceId:void 0},h=o.timeout||DEFAULT_PICK_HANDLER_BY_TIMEOUT_MS;return{handlers:[yield PromiseWrap((()=>this.resolverHelper.startResolverApp({request:o,resolverConfig:l,commandId:t,callerId:n,resolverInstance:c,method:"filterHandlers"})),h,`Timeout of ${h}ms hit for 'filterHandlers' request with filter: ${JSON.stringify(e.filterHandlersRequest)}`)]}}))}filterHandlersBy(e,t){const n=e.filter((e=>{if(!t.intent||t.intent===e.name){if(t.resultType){const n=e.handlers.filter((e=>e.resultType&&e.resultType===t.resultType));if(!n.length)return;e.handlers=n}if(t.contextTypes){const n=e.handlers.filter((e=>{var n;return null===(n=t.contextTypes)||void 0===n?void 0:n.every((t=>{var n;return null===(n=e.contextTypes)||void 0===n?void 0:n.includes(t)}))}));if(!n.length)return;e.handlers=n}if(t.applicationNames){const n=e.handlers.filter((e=>{var n;return null===(n=t.applicationNames)||void 0===n?void 0:n.includes(e.applicationName)}));if(!n.length)return;e.handlers=n}return e}})).map((e=>e.handlers)).flat(1);return n.filter(((e,t)=>t===n.findIndex((t=>e.instanceId?e.instanceId===t.instanceId:!t.instanceId&&t.applicationName===e.applicationName))))}getIntentsByHandler(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.log(`[${t}] - Receive 'getIntents' command with request: ${JSON.stringify(e)}`);const o=intentHandlerDecoder.runWithException(e),l=yield this.getIntents(t);clearNullUndefined(o),null===(r=this.logger)||void 0===r||r.info(`[${t}] - extracting valid intents for the passed handler`);const s=this.extractIntentsWithInfoByHandler(l,o);return null===(i=this.logger)||void 0===i||i.info(`[${t}] - returning intents for handler ${JSON.stringify(e)}`),{intents:s}}))}extractIntentsWithInfoByHandler(e,t){return e.reduce(((e,n)=>(n.handlers.forEach((r=>{if(!Object.keys(t).every((e=>{var n;return"contextTypes"===e?null===(n=t.contextTypes)||void 0===n?void 0:n.every((e=>{var t;return null===(t=r.contextTypes)||void 0===t?void 0:t.includes(e)})):r[e]===t[e]})))return;const i={intent:n.name,contextTypes:r.contextTypes,description:r.applicationDescription,displayName:r.displayName,icon:r.applicationIcon,resultType:r.resultType};e.push(i)})),e)),[])}}const channelOperationDecoder=oneOf$1(constant$1("addChannel"),constant$1("operationCheck"),constant$1("getMyChannel"),constant$1("getWindowIdsOnChannel"),constant$1("getWindowIdsWithChannels"),constant$1("joinChannel")),channelContextDecoder=object$1({name:nonEmptyStringDecoder$1,meta:object$1({color:nonEmptyStringDecoder$1}),data:optional$1(anyJson$1())}),getMyChanelResultDecoder=object$1({channel:optional$1(nonEmptyStringDecoder$1)}),getWindowIdsOnChannelDataDecoder=object$1({channel:nonEmptyStringDecoder$1}),getWindowIdsOnChannelResultDecoder=object$1({windowIds:array$1(nonEmptyStringDecoder$1)}),getWindowIdsWithChannelsResultDecoder=object$1({windowIdsWithChannels:array$1(object$1({application:nonEmptyStringDecoder$1,channel:optional$1(nonEmptyStringDecoder$1),windowId:nonEmptyStringDecoder$1}))}),windowWithChannelFilterDecoder=object$1({application:optional$1(nonEmptyStringDecoder$1),channels:optional$1(array$1(nonEmptyStringDecoder$1)),windowIds:optional$1(array$1(nonEmptyStringDecoder$1))}),wrappedWindowWithChannelFilterDecoder=object$1({filter:optional$1(windowWithChannelFilterDecoder)}),joinChannelDataDecoder=object$1({channel:nonEmptyStringDecoder$1,windowId:nonEmptyStringDecoder$1});class ChannelsController{constructor(e){this.glueController=e,this.operations={addChannel:{name:"addChannel",execute:this.addChannel.bind(this),dataDecoder:channelContextDecoder},getMyChannel:{name:"getMyChannel",execute:()=>__awaiter$7(this,void 0,void 0,(function*(){})),resultDecoder:getMyChanelResultDecoder},getWindowIdsOnChannel:{name:"getWindowIdsOnChannel",execute:this.handleGetWindowIdsOnChannel.bind(this),dataDecoder:getWindowIdsOnChannelDataDecoder,resultDecoder:getWindowIdsOnChannelResultDecoder},getWindowIdsWithChannels:{name:"getWindowIdsWithChannels",execute:this.handleGetWindowIdsWithChannels.bind(this),dataDecoder:wrappedWindowWithChannelFilterDecoder,resultDecoder:getWindowIdsWithChannelsResultDecoder},operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder,resultDecoder:operationCheckResultDecoder,execute:this.handleOperationCheck.bind(this)},joinChannel:{name:"joinChannel",dataDecoder:joinChannelDataDecoder,execute:this.handleJoinChannel.bind(this)}}}get logger(){return logger.get("channels.controller")}start(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){const r=e.channels.definitions;null===(t=this.logger)||void 0===t||t.trace("initializing channels"),yield this.setupChannels(r),null===(n=this.logger)||void 0===n||n.trace("initialization is completed")}))}handleControl(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){const o=e.data,l=e.commandId,s=channelOperationDecoder.run(e.operation);if(!s.ok)throw new Error(`This channels request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(s.error)}`);const a=s.result,u=null===(t=this.operations[a].dataDecoder)||void 0===t?void 0:t.run(o);if(u&&!u.ok)throw new Error(`Channels request for ${a} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(u.error)}`);null===(n=this.logger)||void 0===n||n.debug(`[${l}] ${a} command is valid with data: ${JSON.stringify(o)}`);const c=yield this.operations[a].execute(o,l),h=null===(r=this.operations[a].resultDecoder)||void 0===r?void 0:r.run(c);if(h&&!h.ok)throw new Error(`Channels request for ${a} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(h.error)}`);return null===(i=this.logger)||void 0===i||i.trace(`[${l}] ${a} command was executed successfully`),c}))}handleOperationCheck(e){return __awaiter$7(this,void 0,void 0,(function*(){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}))}setupChannels(e){return __awaiter$7(this,void 0,void 0,(function*(){yield Promise.all(e.map((e=>this.addChannel(e))))}))}addChannel(e,t){return __awaiter$7(this,void 0,void 0,(function*(){this.trace(`[${t}] handling addChannel command with a valid name: ${e.name}, color: ${e.meta.color} and data: ${JSON.stringify(e.data)}`,t);const n={name:e.name,meta:e.meta,data:e.data||{}},r=this.createContextName(n.name);this.trace(`[${t}] setting a new channel context with name: ${r}`,t),yield this.glueController.setContext(r,n),this.trace(`[${t}] channel context with name: ${r} created successfully`,t)}))}getWindowChannel(e){return this.glueController.callWindow("channels",this.operations.getMyChannel,{},{windowId:e})}handleGetWindowIdsOnChannel({channel:e},t){return __awaiter$7(this,void 0,void 0,(function*(){this.trace(`[${t}] handling getWindowIdsOnChannel command with channel: ${e}`,t);const n=this.glueController.getServers().reduce(((e,{windowId:t})=>t?[...e,t]:e),[]);this.trace(`[${t}] compiled a list of the IDs of all the windows that will be called: [${n.join(", ")}]`,t);const r=yield Promise.all(n.map((e=>__awaiter$7(this,void 0,void 0,(function*(){const{channel:t}=yield this.getWindowChannel(e);return{channel:t,windowId:e}}))))),i=r.filter((t=>t.channel===e)).map((({windowId:e})=>e));return this.trace(`[${t}] compiled a list of all windowIds that are on the "${e}" channel and returning it to the caller: [${i.join(", ")}]`),{windowIds:i}}))}handleGetWindowIdsWithChannels({filter:e},t){return __awaiter$7(this,void 0,void 0,(function*(){this.trace(`[${t}] handling getWindowIdsWithChannels command with filter: ${JSON.stringify(e)}`,t);const n=this.glueController.getServers(),r=this.glueController.getAllApplicationNames(),i=n.filter((({windowId:e})=>e));this.trace(`[${t}] compiled a list of the IDs of all the windows that will be called: [${i.map((({windowId:e})=>e)).join(", ")}]`,t);const o=yield Promise.all(i.map((({applicationName:e,windowId:t})=>__awaiter$7(this,void 0,void 0,(function*(){const{channel:n}=yield this.getWindowChannel(t),i=e&&r.includes(e)?e:"no-app-window";return Object.assign(Object.assign({application:i},n?{channel:n}:{}),{windowId:t})})))));let l=o;return e?(e.application&&(this.trace(`[${t}] filtering windows by application: ${e.application}`,t),l=l.filter((({application:t})=>t===e.application))),e.channels&&(this.trace(`[${t}] filtering windows by channels: [${e.channels.join(", ")}]`,t),l=l.filter((({channel:t})=>{var n;return t&&(null===(n=e.channels)||void 0===n?void 0:n.includes(t))}))),e.windowIds&&(this.trace(`[${t}] filtering windows by windowIds: [${e.windowIds.join(", ")}]`,t),l=l.filter((({windowId:t})=>{var n;return null===(n=e.windowIds)||void 0===n?void 0:n.includes(t)}))),this.trace(`[${t}] compiled a list of all windowIds with channels and returning it to the caller: ${JSON.stringify(l)}`),{windowIdsWithChannels:l}):(this.trace(`[${t}] compiled a list of all windowIds with channels and returning it to the caller: ${JSON.stringify(l)}`),{windowIdsWithChannels:l})}))}handleJoinChannel({channel:e,windowId:t},n){return __awaiter$7(this,void 0,void 0,(function*(){if(this.trace(`[${n}] handling joinChannel command with channel: ${e} and windowId: ${t}`,n),!this.glueController.isValidWindowId(t))throw new Error(`Failed to join "${e}" channel on window with ID "${t}", because the provided windowId is invalid`);yield this.glueController.callWindow("channels",this.operations.joinChannel,{channel:e,windowId:t},{windowId:t}),this.trace(`[${n}] successfully joined "${e}" channel on window with ID "${t}"`,n)}))}createContextName(e){return`${ChannelContextPrefix}${e}`}trace(e,t){var n;t&&(null===(n=this.logger)||void 0===n||n.trace(e))}}class FramesController{constructor(e,t,n){this.sessionController=e,this.glueController=t,this.ioc=n,this.locks={},this.defaultFrameHelloTimeoutMs=15e3}stop(){this._handleUnload&&window.removeEventListener("unload",this._handleUnload)}start(e,t,n){var r;return __awaiter$7(this,void 0,void 0,(function*(){this.config=e,this.defaultBounds=t,this.frameSummaryOperation=n,e.isFrame&&(this.myFrameId=null===(r=this.sessionController.getAllFrames().find((e=>e.isPlatform)))||void 0===r?void 0:r.windowId,this._handleUnload=this.handleUnload.bind(this),window.addEventListener("unload",this._handleUnload))}))}openFrame(e,t){var n,r,i,o,l;return __awaiter$7(this,void 0,void 0,(function*(){const s="object"==typeof e&&null!==(n=e.bounds)&&void 0!==n?n:{},a=null!==(r=s.top)&&void 0!==r?r:this.defaultBounds.top,u=null!==(i=s.left)&&void 0!==i?i:this.defaultBounds.left,c=null!==(o=s.width)&&void 0!==o?o:this.defaultBounds.width,h=null!==(l=s.height)&&void 0!==l?l:this.defaultBounds.height,d="object"==typeof e&&(null==e?void 0:e.frameId)?e.frameId:`g42-${shortid$2.generate()}`;if(this.sessionController.getAllFrames().some((e=>e.windowId===d)))throw new Error(`Cannot open a frame with id: ${d}, because a frame with this id already exists`);const f={windowId:d,active:!1,isPlatform:!1,layoutComponentId:t},p=`left=${u},top=${a},width=${c},height=${h}`,g=`${(yield this.getWorkspacesUrls()).workspacesUrl.current}?emptyFrame=true`;if(!window.open(g,f.windowId,p))throw new Error("Cannot open a new workspace frame, because the user has not allowed popups or uses a blocker");this.sessionController.saveFrameData(f);try{return yield this.waitHello(f.windowId),{windowId:f.windowId}}catch(e){throw delete this.locks[f.windowId],new Error("Cannot open a new frame, because the workspace frame app did not send a hello in time")}}))}closeFrame(e){var t;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.sessionController.getFrameData(e))throw new Error(`Cannot close a frame with id: ${e}, because it is not known by the platform`);this.handleFrameDisappeared(e),null===(t=window.open(void 0,e))||void 0===t||t.close()}))}processNewHello(e){var t;this.sessionController.getFrameData(e)&&(this.sessionController.setFrameActive(e),null===(t=this.locks[e])||void 0===t||t.lift())}handleFrameDisappeared(e){this.sessionController.getFrameData(e)&&(this.sessionController.removeFrameData(e),this.clearAllWorkspaceWindows(e))}getAll(){return this.sessionController.getAllFrames().filter((e=>e.active)).map((e=>({windowId:e.windowId})))}getFrameInstance(e){return __awaiter$7(this,void 0,void 0,(function*(){if(e){if(["frameId","itemId","newFrame"].reduce(((t,n)=>(e[n]&&t.push(n),t)),[]).length>1)throw new Error(`Cannot retrieve the frame, because of over-specification: the provided selection object must have either 1 or none of the possible properties: ${JSON.stringify(e)}`)}const t=this.getAll();if(null==e?void 0:e.frameId){const n=t.find((t=>t.windowId===e.frameId));if(!n)throw new Error(`Cannot retrieve a frame with Id: ${e.frameId}, because it is not known by the platform`);return n}return(null==e?void 0:e.itemId)?this.getFrameByItemId(e.itemId,t):(null==e?void 0:e.newFrame)?this.openFrame(e.newFrame):t.length?this.getLastOpenedFrame():this.openFrame()}))}getPlatformFrameSessionData(){return this.sessionController.getAllFrames().find((e=>e.isPlatform))}getFrameConfig(e){return this.sessionController.getAllFrames().find((t=>t.windowId===e))}clearAllWorkspaceWindows(e){const t=this.sessionController.pickWorkspaceClients((t=>t.frameId===e));t.forEach((e=>{this.ioc.applicationsController.unregisterWorkspaceApp({windowId:e.windowId})}))}waitHello(e){return __awaiter$7(this,void 0,void 0,(function*(){return PromisePlus((t=>{this.locks[e]={lift:t}}),this.defaultFrameHelloTimeoutMs,"Frame hello timed out")}))}getLastOpenedFrame(){const e=this.sessionController.getAllFrames().filter((e=>e.active));return e[e.length-1]}getFrameByItemId(e,t){return __awaiter$7(this,void 0,void 0,(function*(){if(!t.length)throw new Error(`Cannot get frame by item id for: ${e}, because not frames were found`);for(const n of t){if("none"!==(yield this.glueController.callFrame(this.frameSummaryOperation,{itemId:e},n.windowId)).id)return n}throw new Error(`Cannot find frame for item: ${e}`)}))}getWorkspacesUrls(){return new URL(window.location.href).protocol.includes("extension")?new Promise((e=>{chrome.storage.local.get("workspacesUrl",(t=>{e(t)}))})):Promise.resolve({workspacesUrl:{current:this.config.src,default:this.config.src}})}handleUnload(){this.myFrameId&&this.clearAllWorkspaceWindows(this.myFrameId)}}class WorkspaceHibernationWatcher{constructor(e,t){this.session=e,this.sequelizer=t}get logger(){return logger.get("workspaces.hibernation")}stop(){this.running=!1}start(e,t){var n,r,i,o;null===(n=this.logger)||void 0===n||n.trace(`starting the hibernation watcher with following settings: ${JSON.stringify(this.settings)}`),this.running=!0,this.workspacesController=e,this.settings=t;const l=this.session.exportClearTimeouts();(null===(i=null===(r=this.settings)||void 0===r?void 0:r.idleWorkspaces)||void 0===i?void 0:i.idleMSThreshold)&&l.forEach((e=>this.buildTimer(e.workspaceId))),null===(o=this.logger)||void 0===o||o.trace("The hibernation watcher has started successfully")}notifyEvent(e){"window"===e.type&&this.handleWorkspaceWindowEvent(e),"workspace"===e.type&&this.handleWorkspaceEvent(e)}handleWorkspaceWindowEvent(e){("opened"===e.action||"added"===e.action)&&(this.sequelizer.enqueue((()=>this.checkMaximumAmountCore())),this.addTimersForWorkspacesInFrame(e.payload.windowSummary.config.frameId))}handleWorkspaceEvent(e){const t="selected"===e.action,n="lock-configuration-changed"===e.action,r=e.payload;if(!("selected"===e.action||"opened"===e.action||"lock-configuration-changed"===e.action))return;this.sequelizer.enqueue((()=>this.checkMaximumAmountCore()));const i=r.workspaceSummary.config.allowSystemHibernation;if(!(t||n&&i))return;const o=this.session.getTimeout(r.workspaceSummary.id);o&&(clearTimeout(o),this.session.removeTimeout(r.workspaceSummary.id)),this.addTimersForWorkspacesInFrame(r.frameSummary.id)}compare(e,t){return e.config.lastActive>t.config.lastActive?1:e.config.lastActivethis.workspacesController.getWorkspaceSnapshot({itemId:e.id},o))),s=(yield Promise.all(l)).filter((e=>!this.isWorkspaceHibernated(e.config)&&!this.isWorkspaceEmpty(e))),a=s.filter((e=>this.isSystemHibernationAllowed(e)));if(s.length<=i)return;null===(r=this.logger)||void 0===r||r.trace(`Found ${a.length} eligible for hibernation workspaces`);const u=a.sort(this.compare).slice(0,s.length-i).map((e=>this.tryHibernateWorkspace(e.id)));yield Promise.all(u)}))}tryHibernateWorkspace(e){var t,n,r;return __awaiter$7(this,void 0,void 0,(function*(){try{const r=yield this.workspacesController.getWorkspaceSnapshot({itemId:e},shortid$2.generate());if(!this.canBeHibernated(r))return;null===(t=this.logger)||void 0===t||t.trace(`trying to hibernate workspace ${e}`),yield this.workspacesController.hibernateWorkspace({workspaceId:e},shortid$2.generate()),null===(n=this.logger)||void 0===n||n.trace(`workspace ${e} was hibernated successfully`)}catch(e){null===(r=this.logger)||void 0===r||r.trace(e)}}))}canBeHibernated(e){const t=this.isWorkspaceHibernated(e.config),n=this.isWorkspaceSelected(e.config),r=this.isWorkspaceEmpty(e),i=this.isSystemHibernationAllowed(e);return!t&&!n&&!r&&i}isWorkspaceHibernated(e){return e.isHibernated}isWorkspaceSelected(e){return e.isSelected}isWorkspaceEmpty(e){return!e.children.length}isSystemHibernationAllowed(e){const{allowSystemHibernation:t}=e.config;return"boolean"!=typeof t||t}getWorkspacesInFrame(e){return __awaiter$7(this,void 0,void 0,(function*(){const t=(yield this.workspacesController.getAllWorkspacesSummaries({},shortid$2.generate())).summaries.reduce(((t,n)=>(n.config.frameId===e&&t.push(this.workspacesController.getWorkspaceSnapshot({itemId:n.id},shortid$2.generate())),t)),[]);return yield Promise.all(t)}))}addTimersForWorkspacesInFrame(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){if(!(null===(n=null===(t=this.settings)||void 0===t?void 0:t.idleWorkspaces)||void 0===n?void 0:n.idleMSThreshold))return;(yield this.getWorkspacesInFrame(e)).forEach((e=>{var t,n,r;this.canBeHibernated(e)&&!this.session.getTimeout(e.id)&&(this.buildTimer(e.id),null===(t=this.logger)||void 0===t||t.trace(`Starting workspace idle timer ( ${null===(r=null===(n=this.settings)||void 0===n?void 0:n.idleWorkspaces)||void 0===r?void 0:r.idleMSThreshold}ms ) for workspace ${e.id}`))}))}))}buildTimer(e){var t,n;const r=window.setTimeout((()=>{var t;this.running&&(null===(t=this.logger)||void 0===t||t.trace(`Timer triggered will try to hibernated ${e}`),this.tryHibernateWorkspace(e),this.session.removeTimeout(e))}),null===(n=null===(t=this.settings)||void 0===t?void 0:t.idleWorkspaces)||void 0===n?void 0:n.idleMSThreshold);this.session.saveTimeout(e,r)}}class SystemController{constructor(e){this.session=e,this.base={},this.started=!1,this.platformOperations=["cleanupClientsOnWorkspaceFrameUnregister"],this.operations={getEnvironment:{name:"getEnvironment",resultDecoder:anyDecoder,execute:this.handleGetEnvironment.bind(this)},getBase:{name:"getBase",resultDecoder:anyDecoder,execute:this.handleGetBase.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder,resultDecoder:operationCheckResultDecoder,execute:this.handleOperationCheck.bind(this)}}}get logger(){return logger.get("applications.controller")}start(e){var t;return __awaiter$7(this,void 0,void 0,(function*(){this.environment=e.environment,this.base={workspaces:{frameCache:e.workspacesFrameCache},workspacesFrameCache:e.workspacesFrameCache,communicationId:null===(t=this.session.getSystemSettings())||void 0===t?void 0:t.systemInstanceId,platformVersion:version},this.started=!0}))}handleControl(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.started)throw new Error("Cannot handle this system control message, because the controller has not been started");const o=e.data,l=e.commandId,s=systemOperationTypesDecoder.run(e.operation);if(!s.ok)throw new Error(`This system request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(s.error)}`);const a=s.result,u=null===(t=this.operations[a].dataDecoder)||void 0===t?void 0:t.run(o);if(u&&!u.ok)throw new Error(`System request for ${a} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(u.error)}`);null===(n=this.logger)||void 0===n||n.debug(`[${l}] ${a} command is valid with data: ${JSON.stringify(o)}`);const c=yield this.operations[a].execute(o,l),h=null===(r=this.operations[a].resultDecoder)||void 0===r?void 0:r.run(c);if(h&&!h.ok)throw new Error(`System request for ${a} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(h.error)}`);return null===(i=this.logger)||void 0===i||i.trace(`[${l}] ${a} command was executed successfully`),c}))}handleOperationCheck(e){return __awaiter$7(this,void 0,void 0,(function*(){const t=Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase())),n=this.platformOperations.some((t=>t.toLowerCase()===e.operation.toLowerCase()));return{isSupported:t||n}}))}handleGetEnvironment(){return __awaiter$7(this,void 0,void 0,(function*(){return this.environment}))}handleGetBase(){return __awaiter$7(this,void 0,void 0,(function*(){return this.base}))}}class AppDirectory{constructor(e,t){this.sessionStorage=e,this.remoteWatcher=t,this.maxAllowedApplicationsInStore=1e4,this.baseEventFlushDurationMs=10}stop(){this.remoteWatcher.stop()}start(e){var t,n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(t=this.logger)||void 0===t||t.trace("Starting the application directory"),this.appsStateChange=e.appsStateChange,this.sequelizer=e.sequelizer,e.config.local&&e.config.local.length&&(null===(n=this.logger)||void 0===n||n.trace("Detected local applications, parsing..."),yield this.processAppDefinitions(e.config.local,{type:"inmemory",mode:"merge"})),e.config.remote&&(null===(r=this.logger)||void 0===r||r.trace("Detected remote app store configuration, starting the watcher..."),this.remoteWatcher.start(e.config.remote,(e=>this.processAppDefinitions(e,{type:"remote",mode:"replace"}))))}))}processAppDefinitions(e,t){return this.sequelizer.enqueue((()=>__awaiter$7(this,void 0,void 0,(function*(){const n=e.map((e=>this.parseDefinition(e))),r=this.sessionStorage.getAllApps(t.type),i=this[t.mode](r,n);if(i.readyApps.length>this.maxAllowedApplicationsInStore)throw new Error("Cannot save the app definitions, because the total number exceeds 10000, which is the limit.");this.sessionStorage.overwriteApps(i.readyApps,t.type),yield this.announceApps(i)}))))}getAll(){return this.sequelizer.enqueue((()=>__awaiter$7(this,void 0,void 0,(function*(){const e=this.sessionStorage.getAllApps("inmemory"),t=this.sessionStorage.getAllApps("remote");return e.concat(t)}))))}exportInMemory(){return this.sequelizer.enqueue((()=>__awaiter$7(this,void 0,void 0,(function*(){return this.sessionStorage.getAllApps("inmemory").map(this.reverseParseDefinition)}))))}removeInMemory(e){return this.sequelizer.enqueue((()=>__awaiter$7(this,void 0,void 0,(function*(){return this.sessionStorage.removeApp(e,"inmemory")}))))}merge(e,t){const n={readyApps:[],addedApps:[],changedApps:[],removedApps:[]},r=e.reduce(((e,t)=>(e[t.name]=t,e)),{});return t.forEach((e=>r[e.name]&&!objEqualFast(e,r[e.name])?(r[e.name]=e,void n.changedApps.push(e)):r[e.name]?void 0:(r[e.name]=e,void n.addedApps.push(e)))),n.readyApps=Object.values(r),n}replace(e,t){const n={readyApps:[],addedApps:[],changedApps:[],removedApps:[]},r=e.reduce(((e,t)=>(e[t.name]=t,e)),{});return t.forEach((e=>{r[e.name]||n.addedApps.push(e),r[e.name]&&!objEqualFast(e,r[e.name])&&n.changedApps.push(e),r[e.name]&&(r[e.name].isChecked=!0)})),n.removedApps=e.filter((e=>!e.isChecked)),n.readyApps=t,n}reverseParseDefinition(e){const t=e.userProperties.details,n=__rest$4(e.userProperties,["details"]),r={name:e.name,type:e.type||"window",title:e.title,version:e.version,icon:e.icon,caption:e.caption,details:t,customProperties:n};return e.fdc3&&(r.fdc3=e.fdc3),r}parseDefinition(e){const t=["name","title","version","customProperties","icon","caption","type"],n=Object.fromEntries(Object.entries(e).filter((([e])=>!t.includes(e)))),{isFdc3:r}=fdc3.isFdc3Definition(e);let i;if(r)i=fdc3.parseToBrowserBaseAppData(e);else{const t=e.details;i={createOptions:t,type:e.type||"window",name:e.name,title:e.title,version:e.version,icon:e.icon,caption:e.caption,userProperties:Object.assign(Object.assign({},n),e.customProperties)},i.userProperties.details||(i.userProperties.details=t)}return Object.keys(i).forEach((e=>void 0===i[e]&&delete i[e])),i}get logger(){return logger.get("applications.remote.directory")}announceApps(e){var t;return __awaiter$7(this,void 0,void 0,(function*(){const n={appsAdded:e.addedApps,appsChanged:e.changedApps,appsRemoved:e.removedApps};null===(t=this.logger)||void 0===t||t.trace(`announcing a change in the app directory state: ${JSON.stringify(n)}`),this.appsStateChange(n),yield this.waitEventFlush()}))}waitEventFlush(){return new Promise((e=>setTimeout(e,this.baseEventFlushDurationMs)))}}const fetchTimeout=(e,t=defaultFetchTimeoutMs)=>new Promise(((n,r)=>{let i=!1;const o=setTimeout((()=>{i=!0,r(new Error(`Fetch request for: ${JSON.stringify(e)} timed out at: ${t} milliseconds`))}),t);fetch(e).then((e=>{i||(clearTimeout(o),n(e))})).catch((e=>{i||(clearTimeout(o),r(e))}))})),defaultRemoteWatcherHeaders={"Content-Type":"application/json",Accept:"application/json"},defaultRemoteWatcherRequestTimeoutMS=3e3;class RemoteWatcher{start(e,t){var n;this.url=e.url,this.handleApps=t,this.requestTimeout=e.requestTimeout||defaultRemoteWatcherRequestTimeoutMS,this.pollingInterval=e.pollingInterval,this.setRequest(e.customHeaders),null===(n=this.logger)||void 0===n||n.trace(`Remote watcher configured with timeout: ${this.requestTimeout} and interval: ${this.pollingInterval}`),this.running=!0,this.poll()}stop(){this.running=!1}poll(){var e,t;return __awaiter$7(this,void 0,void 0,(function*(){if(this.running)try{const t=yield fetchTimeout(this.request,this.requestTimeout);if(!this.running)return;const n=yield t.json();if(!n||!Array.isArray(n.applications))throw new Error("The remote response was either empty or did not contain an applications collection");null===(e=this.logger)||void 0===e||e.trace("There is a valid response from the app store, processing definitions...");const r=n.applications.reduce(((e,t)=>{var n;const r=allApplicationDefinitionsDecoder.run(t);return r.ok?e.push(t):null===(n=this.logger)||void 0===n||n.warn(`Removing applications definition with name: ${t.name} from the remote response, because of validation error: ${JSON.stringify(r.error)}`),e}),[]);yield this.handleApps(r)}catch(e){const n="string"==typeof e?e:JSON.stringify(e.message);null===(t=this.logger)||void 0===t||t.warn(n)}finally{this.pollingInterval&&(yield this.waitInterval(),this.poll())}}))}setRequest(e={}){var t;const n=new Headers;for(const e in defaultRemoteWatcherHeaders)n.append(e,defaultRemoteWatcherHeaders[e]);for(const r in e)null===(t=this.logger)||void 0===t||t.trace("Custom headers detected and set"),n.append(r,e[r]);this.request=new Request(this.url,{method:"GET",headers:n,mode:"cors",cache:"default"})}waitInterval(){return new Promise((e=>setTimeout(e,this.pollingInterval)))}get logger(){return logger.get("applications.remote.directory")}}class ServiceWorkerController{constructor(e){this.idbController=e,this.registry=CallbackRegistryFactory()}get logger(){return logger.get("service.worker.web.platform")}get serviceWorkerRegistration(){if(!this._serviceWorkerRegistration)throw new Error("Accessing missing service worker registration object. This is caused because the application is trying to raise a persistent notification, which requires a service worker. Please provide a service worker config when initializing GlueWebPlatform.");return this._serviceWorkerRegistration}shutdown(){var e;null===(e=this.channel)||void 0===e||e.removeEventListener("message",this._broadcastMessageHandler),this.registry.clear()}connect(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){if(e.serviceWorker){if(null===(t=this.logger)||void 0===t||t.info("Detected service worker definition, connecting..."),!e.serviceWorker.url&&void 0===e.serviceWorker.registrationPromise)throw new Error("The service worker config is defined, but it is missing a url or a registration promise, please provide one or the other");if(e.serviceWorker.url&&void 0!==e.serviceWorker.registrationPromise)throw new Error("The service worker is over-specified, there is both defined url and a registration promise, please provide one or the other");yield this.prepareSwDb(),this._serviceWorkerRegistration=e.serviceWorker.url?yield this.registerWorker(e.serviceWorker.url):yield this.waitRegistration(e.serviceWorker.registrationPromise),this._serviceWorkerRegistration&&this.setUpBroadcastChannelConnection(),null===(n=this.logger)||void 0===n||n.info("Service worker connection completed.")}}))}showNotification(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){const r=Object.assign({},e,{title:void 0,clickInterop:void 0,actions:void 0});r.actions=null===(n=e.actions)||void 0===n?void 0:n.map((e=>({action:e.action,title:e.title,icon:e.icon})));const i={focusPlatformOnDefaultClick:e.focusPlatformOnDefaultClick,clickInterop:e.clickInterop,actions:e.actions,id:t};r.data?r.data.glueData=i:r.data={glueData:i},yield this.serviceWorkerRegistration.showNotification(e.title,r)}))}notifyReady(){this._serviceWorkerRegistration&&this.channel.postMessage({platformStarted:!0})}onNotificationClick(e){return this.registry.add("notification-click",e)}onNotificationClose(e){return this.registry.add("notification-close",e)}setUpBroadcastChannelConnection(){this.channel=new BroadcastChannel(serviceWorkerBroadcastChannelName),this._broadcastMessageHandler=this.broadcastMessageHandler.bind(this),this.channel.addEventListener("message",this._broadcastMessageHandler)}broadcastMessageHandler(e){var t;const n=e.data,r=null==n?void 0:n.messageType;if(r)if("ping"!==r)if("notificationClick"!==r)if("notificationClose"!==r)"notificationError"!==r||null===(t=this.logger)||void 0===t||t.error(`Service worker error when raising notification: ${n.error}`);else{const e=n.action,t=n.glueData;this.registry.execute("notification-close",{action:e,glueData:t})}else{const e=n.action,t=n.glueData;this.registry.execute("notification-click",{action:e,glueData:t})}else this.channel.postMessage({pong:!0})}registerWorker(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){if("serviceWorker"in navigator)try{return yield navigator.serviceWorker.register(e)}catch(e){const t="string"==typeof e?e:JSON.stringify(e.message);null===(n=this.logger)||void 0===n||n.warn(t)}else null===(t=this.logger)||void 0===t||t.warn(`A defined service worker has not been registered at ${e} because this browser does not support it.`)}))}waitRegistration(e){return __awaiter$7(this,void 0,void 0,(function*(){if("function"!=typeof e.then||"function"!=typeof e.catch)throw new Error("The provided service worker registration promise is not a promise");const t=yield e;if("function"!=typeof t.showNotification)throw new Error("The provided registration promise is a promise, but it resolved with an object which does not appear to be a ServiceWorkerRegistration");return t}))}prepareSwDb(){return __awaiter$7(this,void 0,void 0,(function*(){yield this.idbController.clearServiceWorker(),yield this.idbController.storeServiceWorker({platformUrl:window.location.href})}))}}const setNotificationDefaults=e=>{e.showToast="boolean"!=typeof e.showToast||e.showToast,e.showInPanel="boolean"!=typeof e.showInPanel||e.showInPanel,e.timestamp=void 0===e.timestamp?Date.now():e.timestamp,e.state=void 0===e.state?"Active":e.state},notificationsOperationDecoder=oneOf$1(constant$1("raiseNotification"),constant$1("requestPermission"),constant$1("getPermission"),constant$1("operationCheck"),constant$1("list"),constant$1("clear"),constant$1("click"),constant$1("clearAll"),constant$1("configure"),constant$1("getConfiguration"),constant$1("setState"),constant$1("clearOld")),interopActionSettingsDecoder=object$1({method:nonEmptyStringDecoder$1,arguments:optional$1(anyJson$1()),target:optional$1(oneOf$1(constant$1("all"),constant$1("best")))}),glue42NotificationActionDecoder=object$1({action:string$1(),title:nonEmptyStringDecoder$1,icon:optional$1(string$1()),interop:optional$1(interopActionSettingsDecoder)}),notificationStateDecoder=oneOf$1(constant$1("Active"),constant$1("Acknowledged"),constant$1("Seen"),constant$1("Closed"),constant$1("Stale"),constant$1("Snoozed"),constant$1("Processing")),glue42NotificationOptionsDecoder=object$1({title:nonEmptyStringDecoder$1,clickInterop:optional$1(interopActionSettingsDecoder),actions:optional$1(array$1(glue42NotificationActionDecoder)),focusPlatformOnDefaultClick:optional$1(boolean()),badge:optional$1(string$1()),body:optional$1(string$1()),data:optional$1(anyJson$1()),dir:optional$1(oneOf$1(constant$1("auto"),constant$1("ltr"),constant$1("rtl"))),icon:optional$1(string$1()),image:optional$1(string$1()),lang:optional$1(string$1()),renotify:optional$1(boolean()),requireInteraction:optional$1(boolean()),silent:optional$1(boolean()),tag:optional$1(string$1()),timestamp:optional$1(nonNegativeNumberDecoder$1),vibrate:optional$1(array$1(number$1())),severity:optional$1(oneOf$1(constant$1("Low"),constant$1("None"),constant$1("Medium"),constant$1("High"),constant$1("Critical"))),showToast:optional$1(boolean()),showInPanel:optional$1(boolean()),state:optional$1(notificationStateDecoder)}),glue42NotificationOptionsWithDefaultsDecoder=object$1({title:nonEmptyStringDecoder$1,clickInterop:optional$1(interopActionSettingsDecoder),actions:optional$1(array$1(glue42NotificationActionDecoder)),focusPlatformOnDefaultClick:optional$1(boolean()),badge:optional$1(string$1()),body:optional$1(string$1()),data:optional$1(anyJson$1()),dir:optional$1(oneOf$1(constant$1("auto"),constant$1("ltr"),constant$1("rtl"))),icon:optional$1(string$1()),image:optional$1(string$1()),lang:optional$1(string$1()),renotify:optional$1(boolean()),requireInteraction:optional$1(boolean()),silent:optional$1(boolean()),tag:optional$1(string$1()),timestamp:nonNegativeNumberDecoder$1,vibrate:optional$1(array$1(number$1())),severity:optional$1(oneOf$1(constant$1("Low"),constant$1("None"),constant$1("Medium"),constant$1("High"),constant$1("Critical"))),showToast:boolean(),showInPanel:boolean(),state:optional$1(notificationStateDecoder)}),raiseNotificationDecoder=object$1({settings:glue42NotificationOptionsDecoder,id:nonEmptyStringDecoder$1}),raiseNotificationResultDecoder=object$1({settings:glue42NotificationOptionsWithDefaultsDecoder}),permissionRequestResultDecoder=object$1({permissionGranted:boolean()}),permissionQueryResultDecoder=object$1({permission:oneOf$1(constant$1("default"),constant$1("granted"),constant$1("denied"))}),simpleNotificationSelectDecoder=object$1({id:nonEmptyStringDecoder$1}),notificationClickConfigDecoder=object$1({id:nonEmptyStringDecoder$1,action:optional$1(nonEmptyStringDecoder$1)}),notificationsDataDecoder=object$1({id:nonEmptyStringDecoder$1,title:nonEmptyStringDecoder$1,clickInterop:optional$1(interopActionSettingsDecoder),actions:optional$1(array$1(glue42NotificationActionDecoder)),focusPlatformOnDefaultClick:optional$1(boolean()),badge:optional$1(string$1()),body:optional$1(string$1()),data:optional$1(anyJson$1()),dir:optional$1(oneOf$1(constant$1("auto"),constant$1("ltr"),constant$1("rtl"))),icon:optional$1(string$1()),image:optional$1(string$1()),lang:optional$1(string$1()),renotify:optional$1(boolean()),requireInteraction:optional$1(boolean()),silent:optional$1(boolean()),tag:optional$1(string$1()),timestamp:optional$1(nonNegativeNumberDecoder$1),vibrate:optional$1(array$1(number$1())),severity:optional$1(oneOf$1(constant$1("Low"),constant$1("None"),constant$1("Medium"),constant$1("High"),constant$1("Critical"))),showToast:optional$1(boolean()),showInPanel:optional$1(boolean()),state:optional$1(notificationStateDecoder)}),allNotificationsDataDecoder=object$1({notifications:array$1(notificationsDataDecoder)}),notificationsConfigurationDecoder=object$1({enable:optional$1(boolean()),enableToasts:optional$1(boolean()),sourceFilter:optional$1(notificationFilterDecoder)}),notificationsConfigurationProtocolDecoder=object$1({configuration:notificationsConfigurationDecoder}),notificationSetStateRequestDecoder=object$1({id:nonEmptyStringDecoder$1,state:notificationStateDecoder});class NotificationsController{constructor(e,t,n,r){this.glueController=e,this.serviceWorkerController=t,this.session=n,this.localStorage=r,this.started=!1,this.isInExtension=!1,this.systemUnsubFuncs=[],this.operations={raiseNotification:{name:"raiseNotification",execute:this.handleRaiseNotification.bind(this),dataDecoder:raiseNotificationDecoder,resultDecoder:raiseNotificationResultDecoder},requestPermission:{name:"requestPermission",resultDecoder:permissionRequestResultDecoder,execute:this.handleRequestPermission.bind(this)},getPermission:{name:"getPermission",resultDecoder:permissionQueryResultDecoder,execute:this.handleGetPermission.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder,resultDecoder:operationCheckResultDecoder,execute:this.handleOperationCheck.bind(this)},list:{name:"list",resultDecoder:allNotificationsDataDecoder,execute:this.handleList.bind(this)},click:{name:"click",dataDecoder:notificationClickConfigDecoder,execute:this.handleClick.bind(this)},clear:{name:"clear",dataDecoder:simpleNotificationSelectDecoder,execute:this.handleClear.bind(this)},clearAll:{name:"clearAll",execute:this.handleClearAll.bind(this)},configure:{name:"configure",dataDecoder:notificationsConfigurationProtocolDecoder,execute:this.handleConfigure.bind(this)},getConfiguration:{name:"getConfiguration",resultDecoder:notificationsConfigurationProtocolDecoder,execute:this.handleGetConfiguration.bind(this)},setState:{name:"setState",dataDecoder:notificationSetStateRequestDecoder,execute:this.handleSetState.bind(this)},clearOld:{name:"clearOld",execute:this.handleClearOld.bind(this)}}}get logger(){return logger.get("notifications.controller")}get config(){const e=this.localStorage.getNotificationsConfig();if(!e)throw new Error("The notifications configuration has not been set.");return e}get currentActiveCount(){return this.session.getAllNotifications().reduce(((e,t)=>"Active"===t.state?e+1:e),0)}handlePlatformShutdown(){this.started=!1;new URL(window.location.href).protocol.includes("extension")&&this.removeExtensionNotificationsListeners(),this.systemUnsubFuncs.forEach((e=>e())),this.systemUnsubFuncs=[]}start(){return __awaiter$7(this,void 0,void 0,(function*(){this.clearNotificationOnClick=this.config.clearNotificationOnClick;new URL(window.location.href).protocol.includes("extension")&&(yield this.setupExtensionNotifications()),this.listenForServiceWorkerNotificationEvents(),this.started=!0}))}handleOperationCheck(e){return __awaiter$7(this,void 0,void 0,(function*(){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}))}handleControl(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.started)throw new Error("Cannot handle this notifications control message, because the controller has not been started");const o=e.data,l=e.commandId,s=e.callerId,a=notificationsOperationDecoder.run(e.operation);if(!a.ok)throw new Error(`This notifications request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(a.error)}`);const u=a.result,c=null===(t=this.operations[u].dataDecoder)||void 0===t?void 0:t.run(o);if(c&&!c.ok)throw new Error(`Notifications request for ${u} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(c.error)}`);null===(n=this.logger)||void 0===n||n.debug(`[${l}] ${u} command is valid with data: ${JSON.stringify(o)}`);const h=yield this.operations[u].execute(o,l,s),d=null===(r=this.operations[u].resultDecoder)||void 0===r?void 0:r.run(h);if(d&&!d.ok)throw new Error(`Notifications request for ${u} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(d.error)}`);return null===(i=this.logger)||void 0===i||i.trace(`[${l}] ${u} command was executed successfully`),h}))}handleConfigure({configuration:e},t,n=""){var r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(r=this.logger)||void 0===r||r.trace(`[${t}] handling a notification configure message with data: ${JSON.stringify(e)}`),this.validateServiceAccess(n,!0),this.localStorage.updateNotificationsConfig(e),this.glueController.pushSystemMessage("notifications","configurationChanged",{configuration:this.config}),null===(i=this.logger)||void 0===i||i.trace(`[${t}] handling a notification configure message completed`)}))}handleGetConfiguration(e,t,n=""){var r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(r=this.logger)||void 0===r||r.trace(`[${t}] handling a get notification configure message`),this.validateServiceAccess(n,!0);const e=Object.assign({},this.config);return null===(i=this.logger)||void 0===i||i.trace(`[${t}] handling a get notification configure message completed`),{configuration:e}}))}handleList(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a list notification message`);const e=this.session.getAllNotifications();return null===(r=this.logger)||void 0===r||r.trace(`[${t}] list notification message completed`),{notifications:e}}))}handleSetState({id:e,state:t},n){var r;return __awaiter$7(this,void 0,void 0,(function*(){null===(r=this.logger)||void 0===r||r.trace(`[${n}] handling a set state notification message with data: ${JSON.stringify({id:e,state:t})}`);const i=this.session.getNotification(e);if(!i)throw new Error(`Cannot set state of a notification: ${e}, because it doesn't exist`);const o=this.currentActiveCount;i.state=t,this.session.updateNotification(i),this.glueController.pushSystemMessage("notifications","stateChange",{id:e,state:t}),this.syncActiveCount(o)}))}handleClick(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a click notification message with data: ${JSON.stringify(e)}`);const o=this.session.getNotification(e.id);if(!o)throw new Error(`Cannot click a notification: ${e.id}, because it doesn't exist`);if(e.action&&(null===(r=o.actions)||void 0===r?void 0:r.every((t=>t.action!==e.action))))throw new Error(`Cannot click action ${e.action} of ${e.id}, because that notification does not have that action`);this.handleNotificationClick({notification:o,action:e.action}),null===(i=this.logger)||void 0===i||i.trace(`[${t}] handling a click notification message completed`)}))}handleClear(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a clear notification message with data: ${JSON.stringify(e)}`);const i=this.currentActiveCount;this.removeNotification(e.id),this.syncActiveCount(i),null===(r=this.logger)||void 0===r||r.trace(`[${t}] handling a clear notification message completed`)}))}handleClearAll(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a clearAll notifications message`);const e=this.session.getAllNotifications(),i=e.reduce(((e,t)=>"Active"===t.state?e+1:e),0);e.forEach((e=>this.removeNotification(e.id))),this.syncActiveCount(i),null===(r=this.logger)||void 0===r||r.trace(`[${t}] handling a clearAll notification message completed`)}))}handleClearOld(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a clearOld notifications message`);const e=this.session.getAllNotifications(),i=e.reduce(((e,t)=>"Active"===t.state?e+1:e),0);e.filter((e=>"Active"!==e.state)).forEach((e=>this.removeNotification(e.id))),this.syncActiveCount(i),null===(r=this.logger)||void 0===r||r.trace(`[${t}] handling a clearOld notification message completed`)}))}handleRaiseNotification({settings:e,id:t},n,r=""){var i,o;return __awaiter$7(this,void 0,void 0,(function*(){if(null===(i=this.logger)||void 0===i||i.trace(`[${n}] handling a raise notification message with a title: ${e.title}`),!this.config.enable)throw new Error("Cannot raise a notification, because the notifications service is disabled");this.validateServiceAccess(r);const l=this.currentActiveCount;setNotificationDefaults(e),this.processNewNotification(e,t);const s=this.config.enableToasts?!!e.showToast:this.config.enableToasts;yield this.showToast({settings:e,id:t},s,n);const a={definition:Object.assign({},e,{title:void 0,clickInterop:void 0,actions:void 0}),id:t};return setTimeout((()=>this.glueController.pushSystemMessage("notifications","notificationShow",a)),0),null===(o=this.logger)||void 0===o||o.trace(`[${n}] notification with a title: ${e.title} was successfully raised`),this.syncActiveCount(l),{settings:e}}))}showToast({settings:e,id:t},n,r){return __awaiter$7(this,void 0,void 0,(function*(){if(!n)return;if(this.isInExtension)return void(yield this.raiseExtensionToast(e,t,r));e.actions&&e.actions.length?yield this.raiseActionsToast(e,t,r):this.raiseSimpleToast(e,t,r)}))}handleGetPermission(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a get permission message`);const e=Notification.permission;return null===(r=this.logger)||void 0===r||r.trace(`[${t}] permission for raising notifications is: ${e}`),{permission:e}}))}handleRequestPermission(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a request permission message`);let e=Notification.permission;"granted"!==e&&(e=yield Notification.requestPermission());const i="granted"===e;return null===(r=this.logger)||void 0===r||r.trace(`[${t}] permission for raising notifications is: ${e}`),{permissionGranted:i}}))}validateServiceAccess(e,t){const n=this.glueController.getAppNameByInstanceId(e)||"";if(t&&e===this.glueController.me.instance)return;if(this.config.sourceFilter.blocked.includes(n))throw new Error(`Cannot complete the notifications operation, because the caller app: ${n} is blocked from the notifications service`);const r=this.config.sourceFilter.allowed.includes("*"),i=this.config.sourceFilter.allowed.includes(n);if(!r&&!i)throw new Error(`Cannot complete the notifications operation, because the caller app: ${n} is not present in the allowed list of the notifications service`)}raiseSimpleToast(e,t,n){var r;return __awaiter$7(this,void 0,void 0,(function*(){null===(r=this.logger)||void 0===r||r.trace(`[${n}] notification with a title: ${e.title} was found to be non-persistent and therefore will be raised with the native notifications API`);const i=Object.assign({},e,{title:void 0,clickInterop:void 0}),o=new Notification(e.title,i);o.onclick=()=>{e.focusPlatformOnDefaultClick&&window.focus();const n=this.session.getNotification(t);n&&this.handleNotificationClick({action:"",notification:n})},o.onclose=()=>{const e=this.currentActiveCount;this.removeNotification(t),this.syncActiveCount(e)}}))}raiseActionsToast(e,t,n){var r;return __awaiter$7(this,void 0,void 0,(function*(){null===(r=this.logger)||void 0===r||r.trace(`[${n}] notification with a title: ${e.title} was found to be persistent and therefore the service worker will be instructed to raise it.`),yield this.serviceWorkerController.showNotification(e,t)}))}raiseExtensionToast(e,t,n){return new Promise(((r,i)=>{var o;if(null===(o=this.logger)||void 0===o||o.trace(`[${n}] notification with a title: ${e.title} will be raised with the native extension notifications API, because the platform is running in extension mode`),!this.extNotificationConfig)return i("Cannot raise a notification, because the environment settings for the extension mode are missing.");const l=e.actions?e.actions.map((e=>({title:e.title,iconUrl:e.icon}))):void 0,s={type:"basic",iconUrl:e.icon||this.extNotificationConfig.defaultIcon,title:e.title,message:e.body||this.extNotificationConfig.defaultMessage,silent:e.silent,requireInteraction:e.requireInteraction,imageUrl:e.image,buttons:l};chrome.notifications.create(t,s,(()=>r()))}))}setupExtensionNotifications(){return __awaiter$7(this,void 0,void 0,(function*(){this.isInExtension=!0,this.extNotificationConfig=(yield this.getExtNotificationsConfig()).notifications,this.listenForExtensionNotificationsEvents()}))}listenForExtensionNotificationsEvents(){this._chromeClickedHandler=this.chromeClickedHandler.bind(this),chrome.notifications.onClicked.addListener(this._chromeClickedHandler),this._chromeButtonClickedHandler=this.chromeButtonClickedHandler.bind(this),chrome.notifications.onButtonClicked.addListener(this._chromeButtonClickedHandler),this._chromeClosedHandler=this.chromeClosedHandler.bind(this),chrome.notifications.onClosed.addListener(this._chromeClosedHandler)}removeExtensionNotificationsListeners(){chrome.notifications.onClicked.removeListener(this._chromeClickedHandler),chrome.notifications.onButtonClicked.removeListener(this._chromeButtonClickedHandler),chrome.notifications.onClosed.removeListener(this._chromeClosedHandler)}chromeClickedHandler(e){const t=this.session.getNotification(e);t&&this.handleNotificationClick({notification:t})}chromeButtonClickedHandler(e,t){const n=this.session.getNotification(e);if(!n)return;if(!n.actions)return;const r=n.actions[t].action;this.handleNotificationClick({action:r,notification:n})}chromeClosedHandler(e){const t=this.currentActiveCount;this.removeNotification(e),this.syncActiveCount(t)}listenForServiceWorkerNotificationEvents(){const e=this.serviceWorkerController.onNotificationClick((e=>{const t=this.session.getNotification(e.glueData.id);t&&this.handleNotificationClick({action:e.action,notification:t})})),t=this.serviceWorkerController.onNotificationClose((e=>{const t=this.currentActiveCount;this.removeNotification(e.glueData.id),this.syncActiveCount(t)}));this.systemUnsubFuncs.push(e),this.systemUnsubFuncs.push(t)}getExtNotificationsConfig(){return new Promise((e=>{chrome.storage.local.get("notifications",(t=>{e(t)}))}))}handleNotificationClick(e){var t,n;!e.action&&e.notification.clickInterop&&this.callDefinedInterop(e.notification.clickInterop);const r=e.action?null===(t=e.notification.actions)||void 0===t?void 0:t.find((t=>t.action===e.action)):null;r&&r.interop&&this.callDefinedInterop(r.interop),(null===(n=e.notification.data)||void 0===n?void 0:n.glueData)&&delete e.notification.data.glueData;const i={definition:e.notification,action:e.action,id:e.notification.id};if(this.clearNotificationOnClick){const t=this.currentActiveCount;this.removeNotification(e.notification.id),this.syncActiveCount(t)}this.glueController.pushSystemMessage("notifications","notificationClick",i)}callDefinedInterop(e){const t=e.method,n=e.arguments,r=e.target;this.glueController.invokeMethod(t,n,r).catch((e=>{var t;const n="string"==typeof e?e:JSON.stringify(e.message);null===(t=this.logger)||void 0===t||t.warn(`The interop invocation defined in the clickInterop was rejected, reason: ${n}`)}))}processNewNotification(e,t){const n=Object.assign({id:t},e);this.session.saveNewNotification(n),this.glueController.pushSystemMessage("notifications","notificationRaised",{notification:n})}removeNotification(e){this.session.removeNotification(e),this.glueController.pushSystemMessage("notifications","notificationClosed",{id:e})}syncActiveCount(e){const t=this.currentActiveCount;e!==t&&this.glueController.pushSystemMessage("notifications","activeCountChange",{count:t})}}const extensionOperationTypesDecoder=oneOf$1(constant$1("clientHello"),constant$1("operationCheck")),clientHelloResponseDecoder=object$1({widget:object$1({inject:boolean()})}),clientHelloDecoder=object$1({windowId:optional$1(nonEmptyStringDecoder$1)});class ExtensionController{constructor(e){this.session=e,this.started=!1,this.operations={clientHello:{name:"appHello",resultDecoder:clientHelloResponseDecoder,dataDecoder:clientHelloDecoder,execute:this.handleClientHello.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder,resultDecoder:operationCheckResultDecoder,execute:this.handleOperationCheck.bind(this)}}}get logger(){return logger.get("extension.controller")}handlePlatformShutdown(){this.started=!1}start(){var e;return __awaiter$7(this,void 0,void 0,(function*(){this.started=!0,null===(e=this.logger)||void 0===e||e.trace("initialization is completed")}))}handleControl(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.started)throw new Error("Cannot handle this extension control message, because the controller has not been started");const o=e.data,l=e.commandId,s=extensionOperationTypesDecoder.run(e.operation);if(!s.ok)throw new Error(`This extension request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(s.error)}`);const a=s.result,u=null===(t=this.operations[a].dataDecoder)||void 0===t?void 0:t.run(o);if(u&&!u.ok)throw new Error(`Extension request for ${a} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(u.error)}`);null===(n=this.logger)||void 0===n||n.debug(`[${l}] ${a} command is valid with data: ${JSON.stringify(o)}`);const c=yield this.operations[a].execute(o,l),h=null===(r=this.operations[a].resultDecoder)||void 0===r?void 0:r.run(c);if(h&&!h.ok)throw new Error(`Extension request for ${a} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(h.error)}`);return null===(i=this.logger)||void 0===i||i.trace(`[${l}] ${a} command was executed successfully`),c}))}handleClientHello(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling client hello command`);const i=(yield this.getWidgetConfig()).widget,o={widget:{inject:!(!!e.windowId&&!!this.session.getFrameData(e.windowId))&&(!!i&&i.enable)}};return null===(r=this.logger)||void 0===r||r.trace(`[${t}] responding to client hello command with: ${JSON.stringify(o)}`),o}))}handleOperationCheck(e){return __awaiter$7(this,void 0,void 0,(function*(){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}))}getWidgetConfig(){return new URL(window.location.href).protocol.includes("extension")?new Promise((e=>{chrome.storage.local.get("widget",(t=>{e(t)}))})):Promise.resolve({widget:{enable:!1}})}}class AsyncSequelizer{constructor(e=0){this.minSequenceInterval=e,this.queue=[],this.isExecutingQueue=!1}enqueue(e){return new Promise(((t,n)=>{this.queue.push({action:e,resolve:t,reject:n}),this.executeQueue()}))}executeQueue(){return __awaiter$7(this,void 0,void 0,(function*(){if(!this.isExecutingQueue){for(this.isExecutingQueue=!0;this.queue.length;){const e=this.queue.shift();if(!e)return void(this.isExecutingQueue=!1);try{const t=yield e.action();e.resolve(t)}catch(t){e.reject(t)}yield this.intervalBreak()}this.isExecutingQueue=!1}}))}intervalBreak(){return new Promise((e=>setTimeout(e,this.minSequenceInterval)))}}class PreferredConnectionController{constructor(e,t,n){this.glueController=e,this.portsBridge=t,this.sequelizer=n,this.registry=CallbackRegistryFactory(),this.stopped=!1}get logger(){return logger.get("preferred.connection.controller")}shutdown(){this.stopped=!0,this.registry.clear()}start(e){var t,n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(t=this.logger)||void 0===t||t.trace(`Starting the preferred connection with config: ${JSON.stringify(e)}`),this.stopped=!1,this.portsBridge.setPreferredActivated(),e.preferred&&(this.preferredUrl=e.preferred.url,this.preferredAuth=Object.assign({},{provider:"core"},e.preferred.auth),this.shouldForceTransfer="boolean"==typeof e.preferred.forceIncompleteSwitch&&e.preferred.forceIncompleteSwitch,this.discoveryInterval="number"==typeof e.preferred.discoveryIntervalMS?e.preferred.discoveryIntervalMS:defaultPreferredDiscoveryIntervalMS,null===(n=this.logger)||void 0===n||n.trace("Starting the initial preferred connection check"),yield this.connectPreferred(),null===(r=this.logger)||void 0===r||r.trace("The preferred connection controller initiated."))}))}onReconnect(e){return this.registry.add("system-reconnect",e)}connectPreferred(e,t,n){var r,i,o,l,s,a;return __awaiter$7(this,void 0,void 0,(function*(){if(this.stopped&&!e)return;const u=yield this.checkPreFlight(t);if(!u.ready&&e)throw new Error("The provided preferred connection is not ready.");if(!u.ready)return null===(r=this.logger)||void 0===r||r.trace("The preflight is not ready, restarting the preferred tracking."),void wait(this.discoveryInterval).then((()=>this.connectPreferred(e,t,n)));const c={type:"secondary",transportConfig:Object.assign({url:t||this.preferredUrl},{auth:n||this.preferredAuth})};if(null===(i=this.logger)||void 0===i||i.trace("Switching the system glue."),this.stopped)return;if(!(yield this.glueController.switchTransport(c,"system")).success)return null===(o=this.logger)||void 0===o||o.trace("The switch attempt was not successful, revered to default."),void wait(this.discoveryInterval).then((()=>this.connectPreferred(e,t,n)));this.portsBridge.setActivePreferredTransportConfig(c),null===(l=this.logger)||void 0===l||l.trace("The switch to the preferred connection was successful, transferring all children.");try{yield this.changeClientsConnection(c)}catch(r){return null===(s=this.logger)||void 0===s||s.warn(`Some platform clients could not connect to the preferred connection, reverting all to the default connection. Reason: ${JSON.stringify(r)}`),void this.fullDefaultRevert().then((()=>wait(this.discoveryInterval).then((()=>this.connectPreferred(e,t,n))))).catch((()=>wait(this.discoveryInterval).then((()=>this.connectPreferred(e,t,n)))))}null===(a=this.logger)||void 0===a||a.trace("The platform is now fully connected to the preferred connection, hooking up disconnection logic."),this.registry.execute("system-reconnect");const h=this.glueController.onDisconnected((()=>this.handleDisconnected(h,e)));this.unsub=h}))}revertToDefault(){return __awaiter$7(this,void 0,void 0,(function*(){this.unsub&&(this.unsub(),delete this.unsub),yield this.fullDefaultRevert()}))}fullDefaultRevert(){return __awaiter$7(this,void 0,void 0,(function*(){yield this.glueController.switchTransport({type:"default"},"system"),this.portsBridge.setActivePreferredTransportConfig({type:"default"}),yield this.changeClientsConnection({type:"default"})}))}handleDisconnected(e,t){var n;null===(n=this.logger)||void 0===n||n.trace("The platform has been disconnected from the preferred transport, reverting all to the default one."),e(),this.fullDefaultRevert().then((()=>{var e;this.registry.execute("system-reconnect"),null===(e=this.logger)||void 0===e||e.trace("The platform reversion to default completed, restarting the preferred tracking."),t||wait(this.discoveryInterval).then((()=>this.connectPreferred()))})).catch((()=>wait(this.discoveryInterval).then((()=>this.connectPreferred()))))}changeClientsConnection(e){return this.sequelizer.enqueue((()=>__awaiter$7(this,void 0,void 0,(function*(){var t,n,r;try{yield Promise.all([this.glueController.switchTransport(e,"client"),this.portsBridge.switchAllClientsTransport(e)])}catch(e){if(null===(t=this.logger)||void 0===t||t.trace(`Some clients could not connect to the preferred transport with error: ${JSON.stringify(e)}`),!this.shouldForceTransfer)throw null===(n=this.logger)||void 0===n||n.trace("The platform is not forcing a transfer in cases of errors, re-throwing."),new Error(e);null===(r=this.logger)||void 0===r||r.trace("The platform is forcing a transfer regardless of the errors.")}yield this.glueController.switchTransport(e,"contextsTrack")}))))}checkPreferredConnection(e){return new Promise((t=>{const n=new WebSocket(e);n.onerror=()=>t({live:!1}),n.onopen=()=>{n.close(),t({live:!0})}}))}checkPreFlight(e){var t,n,r,i,o,l,s,a,u;return __awaiter$7(this,void 0,void 0,(function*(){null===(t=this.logger)||void 0===t||t.trace("Starting the preflight check");if(!(yield this.checkPreferredConnection(e||this.preferredUrl)).live)return null===(n=this.logger)||void 0===n||n.trace("The preferred connection is not live."),{ready:!1};null===(r=this.logger)||void 0===r||r.trace(`Found a live preferred connection at: ${e||this.preferredUrl}, testing the availability of transport switching logic in all current clients`);const c=yield this.portsBridge.checkClientsPreferredLogic();if(null===(i=this.logger)||void 0===i||i.trace(`The logic check returned: ${JSON.stringify(c)}`),!c.success&&!this.shouldForceTransfer)return null===(o=this.logger)||void 0===o||o.trace("The preflight check is marked as not ready"),{ready:!1};null===(l=this.logger)||void 0===l||l.trace("Checking the possibility of all clients to connect to the preferred connection");const h=yield this.portsBridge.checkClientsPreferredConnection(e||this.preferredUrl);return null===(s=this.logger)||void 0===s||s.trace(`The connection check returned: ${JSON.stringify(h)}`),h.success||this.shouldForceTransfer?(null===(u=this.logger)||void 0===u||u.trace("The preflight check is marked as ready"),{ready:!0}):(null===(a=this.logger)||void 0===a||a.trace("The preflight check is marked as not ready"),{ready:!1})}))}}class TransactionsController{constructor(){this.transactionLocks={}}get logger(){return logger.get("transactions.controller")}completeTransaction(e,t){var n;if("string"!=typeof e)throw new Error(`Cannot complete the transaction, because the provided id is not a string: ${JSON.stringify(e)}`);const r=this.transactionLocks[e];r?r.lift(t):null===(n=this.logger)||void 0===n||n.warn(`Cannot mark a transaction as complete, because there is not lock with id ${e}`)}failTransaction(e,t){var n;const r=this.transactionLocks[e];r?r.fail(t):null===(n=this.logger)||void 0===n||n.warn(`Cannot mark a transaction as failed, because there is not lock with id ${e}`)}createTransaction(e,t){const n={},r=shortid$2.generate(),i=new Promise(((i,o)=>{let l=!0;n.lift=e=>{l=!1,delete this.transactionLocks[r],i(e)},n.fail=e=>{l=!1,delete this.transactionLocks[r],o(e)},setTimeout((()=>{var t;l&&(l=!1,null===(t=this.logger)||void 0===t||t.warn(`Transaction for operation: ${e} timed out.`),delete this.transactionLocks[r],o(`Transaction for operation: ${e} timed out.`))}),t)}));return n.lock=i,n.id=r,this.transactionLocks[r]=n,n}}class InterceptionController{constructor(){this.interceptions=[]}shutdown(){this.interceptions=[]}registerInterceptor(e,t){return __awaiter$7(this,void 0,void 0,(function*(){interceptorRegistrationRequestDecoder.runWithException(e),nonEmptyStringDecoder$1.runWithException(t);const n=e.interceptions.reduce(((e,t)=>(this.interceptions.some((e=>e.domain===t.domain&&e.operation===t.operation))&&e.push({domain:t.domain,operation:t.operation}),e)),[]);if(n.length){const e=n.map((e=>`${e.domain} - ${e.operation}`)).join(", ");throw new Error(`Interception registration is rejected, because the following collisions where found: ${e}`)}e.interceptions.forEach((n=>{this.interceptions.push({domain:n.domain,operation:n.operation,callInterceptor:e.callInterceptor,registrantName:t})}))}))}getOperationInterceptor(e){const t=this.interceptions.find((t=>t.domain===e.domain&&t.operation===e.operation));if(t)return{name:t.registrantName,intercept:t.callInterceptor}}}class PluginsController{constructor(e,t){this.interceptionController=e,this.glueController=t,this.registeredPlugins=[]}get logger(){return logger.get("plugins.controller")}shutdown(){return __awaiter$7(this,void 0,void 0,(function*(){this.allPlugins.forEach((e=>{var t;if(e.stop)try{e.stop()}catch(n){null===(t=this.logger)||void 0===t||t.warn(`Plugin: ${e.name} threw while onPlatformShutdown -> ${extractErrorMsg$1(n)}`)}})),this.allPlugins=[],this.registeredPlugins=[]}))}start(e){return __awaiter$7(this,void 0,void 0,(function*(){if(!e.plugins)return;if(this.allPlugins=e.plugins,this.handlePluginMessage=e.handlePluginMessage,this.platformApi=e.api,!e.plugins||!e.plugins.length)return;const t=[];for(const n of e.plugins){const e=this.startPlugin(n);n.critical&&t.push(e)}yield Promise.all(t)}))}startPlugin(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){try{const n=this.buildPlatformControls(e.name,this.platformApi);yield e.start(this.glueController.clientGlue,e.config,n),this.registerPlugin(e.name,null!==(t=e.version)&&void 0!==t?t:"N/A")}catch(t){const r="string"==typeof t?t:JSON.stringify(t.message),i=`Plugin: ${e.name} threw while initiating: ${r}`;if(e.critical)throw new Error(i);null===(n=this.logger)||void 0===n||n.warn(i)}}))}buildPlatformControls(e,t){return{control:t=>this.handlePluginMessage(t,e),logger:logger.get(e),platformApi:t,interception:{register:t=>this.interceptionController.registerInterceptor(t,e)},system:{sendControl:t=>this.handlePluginMessage(t,e)}}}registerPlugin(e,t){if("string"!=typeof e||!e.length)return;this.registeredPlugins.some((t=>t.name===e))||this.registeredPlugins.push({name:e,version:t})}}class DomainsController{constructor(e,t,n,r,i,o,l,s,a,u,c,h,d){this.systemController=e,this.windowsController=t,this.applicationsController=n,this.layoutsController=r,this.workspacesController=i,this.intentsController=o,this.channelsController=l,this.notificationsController=s,this.extensionController=a,this.searchController=u,this.themesController=c,this.managerController=h,this.prefsController=d,this.defaultDomainNames=["system","windows","appManager","layouts","workspaces","intents","channels","notifications","extension","search","themes","prefs"],this.domains={system:{name:"system",libController:this.systemController},windows:{name:"windows",libController:this.windowsController},appManager:{name:"appManager",libController:this.applicationsController},layouts:{name:"layouts",libController:this.layoutsController},workspaces:{name:"workspaces",libController:this.workspacesController},intents:{name:"intents",libController:this.intentsController},channels:{name:"channels",libController:this.channelsController},notifications:{name:"notifications",libController:this.notificationsController},extension:{name:"extension",libController:this.extensionController},search:{name:"search",libController:this.searchController},themes:{name:"themes",libController:this.themesController},manager:{name:"manager",libController:this.managerController},prefs:{name:"prefs",libController:this.prefsController}}}get logger(){return logger.get("domains.controller")}shutdown(){Object.values(this.domains).forEach((e=>e.libController.handlePlatformShutdown?e.libController.handlePlatformShutdown():null)),this.domains={system:{name:"system",libController:this.systemController},windows:{name:"windows",libController:this.windowsController},appManager:{name:"appManager",libController:this.applicationsController},layouts:{name:"layouts",libController:this.layoutsController},workspaces:{name:"workspaces",libController:this.workspacesController},intents:{name:"intents",libController:this.intentsController},channels:{name:"channels",libController:this.channelsController},notifications:{name:"notifications",libController:this.notificationsController},extension:{name:"extension",libController:this.extensionController},search:{name:"search",libController:this.searchController},themes:{name:"themes",libController:this.themesController},prefs:{name:"prefs",libController:this.prefsController}}}validateDomain(e){const t=this.domains[e];if(!t)throw new Error(`Accessing a missing domain: ${e}.`);const n=t.domainNameDecoder?t.domainNameDecoder:libDomainDecoder;null==n||n.runWithException(e)}startAllDomains(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){null===(t=this.logger)||void 0===t||t.trace("Starting all domains lib controllers"),yield Promise.all(Object.values(this.domains).map((t=>t.libController.start(e)))),null===(n=this.logger)||void 0===n||n.trace("All domains have been initialized")}))}configurePostStartAllDomains(){var e,t;return __awaiter$7(this,void 0,void 0,(function*(){null===(e=this.logger)||void 0===e||e.trace("Starting all domains lib controllers"),yield Promise.all(Object.values(this.domains).filter((e=>!!e.libController.configurePostStart)).map((e=>e.libController.configurePostStart&&e.libController.configurePostStart()))),null===(t=this.logger)||void 0===t||t.trace("All domains have been initialized")}))}notifyDomainsClientUnloaded(e){var t;null===(t=this.logger)||void 0===t||t.trace(`detected unloading of client: ${e.windowId}, notifying all controllers`),Object.values(this.domains).forEach((t=>{var n,r,i;try{null===(r=(n=t.libController).handleClientUnloaded)||void 0===r||r.call(n,e.windowId,e.win)}catch(n){const r="string"==typeof n?n:JSON.stringify(n.message),o=t.name;null===(i=this.logger)||void 0===i||i.error(`${o} controller threw when handling unloaded client ${e.windowId} with error message: ${r}`)}}))}executeControlMessage(e){const t=this.domains[e.domain];if(!t)throw new Error(`Cannot process message for domain: ${e.domain} and operation ${e.operation}, because no domain can service it.`);return t.libController.handleControl(e)}registerDynamicDomain(e){if(Object.values(this.domains).map((e=>e.name)).some((t=>t===e.name)))throw new Error(`Cannot register a domain with name: ${e.name}, because it is already registered`);if(!(e.libController&&e.libController.start&&e.libController.handleControl&&e.libController.handleClientUnloaded))throw new Error(`Cannot register a domain with name: ${e.name}, because it does not have a valid libController`);if(!e.domainNameDecoder)throw new Error(`Cannot register a domain with name: ${e.name}, because it does not have a domain decoder`);this.domains[e.name]=e}unregisterDynamicDomain(e){if(this.defaultDomainNames.some((t=>t===e)))throw new Error(`Cannot unregister a domain: ${e}, because it is a reserved default domain`);delete this.domains[e]}}class IntentsResolverHelper{constructor(e,t,n){this.glueController=e,this.workspacesController=t,this.windowsController=n,this.intentsResolverResponsePromises={}}get logger(){return logger.get("intents.resolver.controller")}startResolverApp({request:e,resolverConfig:t,commandId:n,callerId:r,resolverInstance:i,method:o}){var l,s,a,u;return __awaiter$7(this,void 0,void 0,(function*(){null===(l=this.logger)||void 0===l||l.trace(`[${n}] Intents Resolver UI with app name ${t.appName} will be used for request: ${JSON.stringify(e)}`);const c=yield this.registerResponseMethod(o);null===(s=this.logger)||void 0===s||s.trace(`[${n}] Registered interop method ${c}`);const h=this.buildStartContext(o,e,c),d=yield this.buildStartOptions(r,n);null===(a=this.logger)||void 0===a||a.trace(`[${n}] Starting Intents Resolver UI with context: ${JSON.stringify(h)} and options: ${d}`);const f=this.glueController.clientGlue.appManager.application(t.appName).start(h,d).catch((e=>{throw new Error(`${ERRORS.RESOLVER_UNAVAILABLE}. Reason: ${e instanceof Error||"string"==typeof e?e:JSON.stringify(e)}`)})),p=yield f;i.instanceId=p.id,null===(u=this.logger)||void 0===u||u.trace(`[${n}] Intents Resolver instance with id ${p.id} opened`),this.subscribeOnInstanceStopped(p,o);const g="raise"===o?`for intent request ${JSON.stringify(e)}`:`for '${o}' method with filter ${JSON.stringify(e)}`,w=`${ERRORS.RESOLVER_TIMEOUT} - waited ${t.waitResponseTimeout}ms for the user the choose a handler ${g}`;this.createResponsePromise({intent:"raise"===o?e.intent:void 0,instanceId:p.id,responseMethodName:c,timeout:t.waitResponseTimeout,errorMsg:w});return yield this.handleInstanceResponse(p.id,o,n)}))}stopResolverInstance(e){const t=this.glueController.clientGlue.appManager.instances().find((t=>t.id===e));t&&t.stop().catch((e=>{var t;return null===(t=this.logger)||void 0===t?void 0:t.warn(e)}))}handleInstanceResponse(e,t,n){var r,i;return __awaiter$7(this,void 0,void 0,(function*(){try{const o=yield this.intentsResolverResponsePromises[e].promise,l="raise"===t?`for intent ${o.intent} `:"";return null===(r=this.logger)||void 0===r||r.trace(`[${n}] Intent handler chosen ${l}: ${JSON.stringify(o.handler)}. Stopping resolver instance with id ${e}`),this.stopResolverInstance(e),null===(i=this.logger)||void 0===i||i.trace(`[${n}] Instance with id ${e} successfully stopped`),o.handler}catch(t){throw this.stopResolverInstance(e),new Error(t)}}))}registerResponseMethod(e){return __awaiter$7(this,void 0,void 0,(function*(){const t=INTENTS_RESOLVER_INTEROP_PREFIX+shortid$3();return yield this.glueController.clientGlue.interop.register(t,((t,n)=>this.responseHandler(t,n,e))),t}))}createResponsePromise({instanceId:e,intent:t,responseMethodName:n,timeout:r,errorMsg:i}){let o=()=>{},l=()=>{};const s=PromisePlus(((e,t)=>{o=e,l=t}),r,i);this.intentsResolverResponsePromises[e]={intent:t,resolve:o,reject:l,promise:s,methodName:n}}buildStartContext(e,t,n){const r={callerId:this.glueController.clientGlue.interop.instance.instance,methodName:n};return"raise"===e?Object.assign(Object.assign({},r),{intent:t}):Object.assign(Object.assign({},r),{handlerFilter:t})}buildStartOptions(e,t){return __awaiter$7(this,void 0,void 0,(function*(){const n=yield this.getTargetBounds(e,t);if(!n)throw new Error(`[${t}] Cannot find window with id: ${e} - the client which sent the "raise" command is no longer opened`);return{top:(n.height-INTENTS_RESOLVER_HEIGHT)/2+n.top,left:(n.width-INTENTS_RESOLVER_WIDTH)/2+n.left,width:INTENTS_RESOLVER_WIDTH,height:INTENTS_RESOLVER_HEIGHT}}))}getTargetBounds(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){const i=(yield this.tryGetWindowBasedBounds(e,t))||(yield this.tryGetWorkspaceBasedBounds(e,t));if(i)return null===(n=this.logger)||void 0===n||n.trace(`[${t}] Opening Intents Resolver UI with bounds: ${JSON.stringify(i)}`),i;const o={top:window.screen.availTop||0,left:window.screen.availLeft||0,width:window.screen.width,height:window.screen.height};return null===(r=this.logger)||void 0===r||r.trace(`[${t}] Opening Intents Resolver UI relative to my screen bounds: ${JSON.stringify(o)}`),o}))}tryGetWindowBasedBounds(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){const i=this.glueController.clientGlue.windows.findById(e),o=this.getServerInstanceByWindowId(e);if(!i&&!o)throw new Error(`Client with id "${e}" does not exist`);if(!i&&o)return this.getWindowBoundsByServerInstance(o,e,t);if(!i)throw new Error(`Client with id "${e}" does not exist`);try{const r=yield i.getBounds();return null===(n=this.logger)||void 0===n||n.trace(`[${t}] Opening the resolver UI with bounds: ${JSON.stringify(r)}, relative to a window with id: ${e}`),r}catch(n){return void(null===(r=this.logger)||void 0===r||r.trace(`[${t}] Failure to get bounds of a window with id ${e}. Error: ${JSON.stringify(n)}`))}}))}getServerInstanceByWindowId(e){return this.glueController.clientGlue.interop.servers().find((t=>t.instance===e))}getWindowBoundsByServerInstance(e,t,n){var r;return __awaiter$7(this,void 0,void 0,(function*(){try{const{bounds:n}=yield this.glueController.callWindow("windows",this.windowsController.getBoundsOperation,{windowId:t},{instance:e.instance});return n}catch(t){null===(r=this.logger)||void 0===r||r.trace(`[${n}] Failure to get bounds of a window with instance ${e.instance}. Error: ${JSON.stringify(t)}`)}}))}tryGetWorkspaceBasedBounds(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){try{const{bounds:r}=yield this.workspacesController.getWorkspaceWindowFrameBounds({itemId:e},t);return null===(n=this.logger)||void 0===n||n.trace(`[${t}] Opening the resolver UI relative to my workspace frame window bounds: ${JSON.stringify(r)}`),r}catch(e){null===(r=this.logger)||void 0===r||r.trace(`[${t}] Failure to get my workspace frame window bounds. Error: ${JSON.stringify(e)}`)}}))}responseHandler(e,t,n){var r,i;const o=("raise"===n?raiseIntentResolverResponseDecoder:filterHandlersResolverResponseDecoder).run(e),l=t.instance;if(!l)throw new Error("Cannot find instance id for the response of the intent resolver");if(o.ok)return null===(r=this.logger)||void 0===r||r.trace(`Intent Resolver instance with id ${l} send a valid response: ${JSON.stringify(o.result)}`),this.intentsResolverResponsePromises[l].resolve(e);null===(i=this.logger)||void 0===i||i.trace(`Intent Resolver instance with id ${l} sent an invalid response. Error: ${JSON.stringify(o.error)}`),this.intentsResolverResponsePromises[l].reject(o.error.message),this.stopResolverInstance(l)}subscribeOnInstanceStopped(e,t){const{application:n}=e,r=n.onInstanceStopped((n=>{if(n.id!==e.id)return;const i=this.intentsResolverResponsePromises[n.id];if(!i)return r();const o="raise"===t?`raised intent ${i.intent}`:`'${t}' method`,l=`${ERRORS.USER_CANCELLED} for ${o}`;i.reject(l),this.cleanUpIntentResolverPromise(n.id),r()}))}cleanUpIntentResolverPromise(e){return __awaiter$7(this,void 0,void 0,(function*(){const t=this.intentsResolverResponsePromises[e];if(!t)return;this.glueController.clientGlue.interop.unregister(t.methodName).catch((e=>{var t;return null===(t=this.logger)||void 0===t?void 0:t.warn(e)})),delete this.intentsResolverResponsePromises[e]}))}}var navigator$1={userAgent:!1},window$1={},CryptoJS=CryptoJS||function(e,t){var n={},r=n.lib={},i=r.Base=function(){function e(){}return{extend:function(t){e.prototype=this;var n=new e;return t&&n.mixIn(t),n.hasOwnProperty("init")||(n.init=function(){n.$super.init.apply(this,arguments)}),n.init.prototype=n,n.$super=this,n},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),o=r.WordArray=i.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||s).stringify(this)},concat:function(e){var t=this.words,n=e.words,r=this.sigBytes,i=e.sigBytes;if(this.clamp(),r%4)for(var o=0;o>>2]>>>24-o%4*8&255;t[r+o>>>2]|=l<<24-(r+o)%4*8}else for(o=0;o>>2]=n[o>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-i%4*8&255;r.push((o>>>4).toString(16)),r.push((15&o).toString(16))}return r.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},a=l.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],i=0;i>>2]>>>24-i%4*8&255;r.push(String.fromCharCode(o))}return r.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},u=l.Utf8={stringify:function(e){try{return decodeURIComponent(escape(a.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return a.parse(unescape(encodeURIComponent(e)))}},c=r.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=u.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,i=n.sigBytes,l=this.blockSize,s=i/(4*l),a=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*l,u=e.min(4*a,i);if(a){for(var c=0;c>>2]}},t.BlockCipher=s.extend({cfg:s.cfg.extend({mode:a,padding:c}),reset:function(){s.reset.call(this);var e=(t=this.cfg).iv,t=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=t.createEncryptor;else n=t.createDecryptor,this._minBufferSize=1;this._mode=n.call(t,this,e&&e.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else t=this._process(!0),e.unpad(t);return t},blockSize:4});var h=t.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),d=(a=(f.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return((e=e.salt)?r.create([1398893684,1701076831]).concat(e).concat(t):t).toString(o)},parse:function(e){var t=(e=o.parse(e)).words;if(1398893684==t[0]&&1701076831==t[1]){var n=r.create(t.slice(2,4));t.splice(0,4),e.sigBytes-=16}return h.create({ciphertext:e,salt:n})}},t.SerializableCipher=n.extend({cfg:n.extend({format:a}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=e.createEncryptor(n,r);return t=i.finalize(t),i=i.cfg,h.create({ciphertext:t,key:n,iv:i.iv,algorithm:e,mode:i.mode,padding:i.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}})),f=(f.kdf={}).OpenSSL={execute:function(e,t,n,i){return i||(i=r.random(8)),e=l.create({keySize:t+n}).compute(e,i),n=r.create(e.words.slice(t),4*n),e.sigBytes=4*t,h.create({key:e,iv:n,salt:i})}},p=t.PasswordBasedCipher=d.extend({cfg:d.cfg.extend({kdf:f}),encrypt:function(e,t,n,r){return n=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,(e=d.encrypt.call(this,e,t,n.key,r)).mixIn(n),e},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),n=r.kdf.execute(n,e.keySize,e.ivSize,t.salt),r.iv=n.iv,d.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=CryptoJS,t=e.lib.BlockCipher,n=e.algo,r=[],i=[],o=[],l=[],s=[],a=[],u=[],c=[],h=[],d=[],f=[],p=0;256>p;p++)f[p]=128>p?p<<1:p<<1^283;var g=0,w=0;for(p=0;256>p;p++){var m=(m=w^w<<1^w<<2^w<<3^w<<4)>>>8^255&m^99;r[g]=m,i[m]=g;var v=f[g],y=f[v],b=f[y],S=257*f[m]^16843008*m;o[g]=S<<24|S>>>8,l[g]=S<<16|S>>>16,s[g]=S<<8|S>>>24,a[g]=S,S=16843009*b^65537*y^257*v^16843008*g,u[m]=S<<24|S>>>8,c[m]=S<<16|S>>>16,h[m]=S<<8|S>>>24,d[m]=S,g?(g=v^f[f[f[b^v]]],w^=f[f[w]]):g=w=1}var $=[0,1,2,4,8,16,32,64,128,27,54];n=n.AES=t.extend({_doReset:function(){for(var e=(n=this._key).words,t=n.sigBytes/4,n=4*((this._nRounds=t+6)+1),i=this._keySchedule=[],o=0;o>>24]<<24|r[l>>>16&255]<<16|r[l>>>8&255]<<8|r[255&l]):(l=r[(l=l<<8|l>>>24)>>>24]<<24|r[l>>>16&255]<<16|r[l>>>8&255]<<8|r[255&l],l^=$[o/t|0]<<24),i[o]=i[o-t]^l}for(e=this._invKeySchedule=[],t=0;tt||4>=o?l:u[r[l>>>24]]^c[r[l>>>16&255]]^h[r[l>>>8&255]]^d[r[255&l]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,l,s,a,r)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,u,c,h,d,i),n=e[t+1],e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,r,i,o,l,s){for(var a=this._nRounds,u=e[t]^n[0],c=e[t+1]^n[1],h=e[t+2]^n[2],d=e[t+3]^n[3],f=4,p=1;p>>24]^i[c>>>16&255]^o[h>>>8&255]^l[255&d]^n[f++],w=r[c>>>24]^i[h>>>16&255]^o[d>>>8&255]^l[255&u]^n[f++],m=r[h>>>24]^i[d>>>16&255]^o[u>>>8&255]^l[255&c]^n[f++];d=r[d>>>24]^i[u>>>16&255]^o[c>>>8&255]^l[255&h]^n[f++],u=g,c=w,h=m}g=(s[u>>>24]<<24|s[c>>>16&255]<<16|s[h>>>8&255]<<8|s[255&d])^n[f++],w=(s[c>>>24]<<24|s[h>>>16&255]<<16|s[d>>>8&255]<<8|s[255&u])^n[f++],m=(s[h>>>24]<<24|s[d>>>16&255]<<16|s[u>>>8&255]<<8|s[255&c])^n[f++],d=(s[d>>>24]<<24|s[u>>>16&255]<<16|s[c>>>8&255]<<8|s[255&h])^n[f++],e[t]=g,e[t+1]=w,e[t+2]=m,e[t+3]=d},keySize:8});e.AES=t._createHelper(n)}(),function(){function e(e,t){var n=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=n,this._lBlock^=n<>>e^this._lBlock)&t;this._lBlock^=n,this._rBlock^=n<n;n++){var r=l[n]-1;t[n]=e[r>>>5]>>>31-r%32&1}for(e=this._subKeys=[],r=0;16>r;r++){var i=e[r]=[],o=a[r];for(n=0;24>n;n++)i[n/6|0]|=t[(s[n]-1+o)%28]<<31-n%6,i[4+(n/6|0)]|=t[28+(s[n+24]-1+o)%28]<<31-n%6;for(i[0]=i[0]<<1|i[0]>>>31,n=1;7>n;n++)i[n]>>>=4*(n-1)+3;i[7]=i[7]<<5|i[7]>>>27}for(t=this._invSubKeys=[],n=0;16>n;n++)t[n]=e[15-n]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(n,r,i){this._lBlock=n[r],this._rBlock=n[r+1],e.call(this,4,252645135),e.call(this,16,65535),t.call(this,2,858993459),t.call(this,8,16711935),e.call(this,1,1431655765);for(var o=0;16>o;o++){for(var l=i[o],s=this._lBlock,a=this._rBlock,h=0,d=0;8>d;d++)h|=u[d][((a^l[d])&c[d])>>>0];this._lBlock=a,this._rBlock=s^h}i=this._lBlock,this._lBlock=this._rBlock,this._rBlock=i,e.call(this,1,1431655765),t.call(this,8,16711935),t.call(this,2,858993459),e.call(this,16,65535),e.call(this,4,252645135),n[r]=this._lBlock,n[r+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});n.DES=i._createHelper(h),o=o.TripleDES=i.extend({_doReset:function(){var e=this._key.words;this._des1=h.createEncryptor(r.create(e.slice(0,2))),this._des2=h.createEncryptor(r.create(e.slice(2,4))),this._des3=h.createEncryptor(r.create(e.slice(4,6)))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2}),n.TripleDES=i._createHelper(o)}(),h=CryptoJS,j=h.lib.WordArray,h.enc.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,r=this._map;e.clamp(),e=[];for(var i=0;i>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,l=0;4>l&&i+.75*l>>6*(3-l)&63));if(t=r.charAt(64))for(;e.length%4;)e.push(t);return e.join("")},parse:function(e){var t=e.length,n=this._map;(r=n.charAt(64))&&-1!=(r=e.indexOf(r))&&(t=r);for(var r=[],i=0,o=0;o>>6-o%4*2;r[i>>>2]|=(l|s)<<24-i%4*8,i++}return j.create(r,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(e){function t(e,t,n,r,i,o,l){return((e=e+(t&n|~t&r)+i+l)<>>32-o)+t}function n(e,t,n,r,i,o,l){return((e=e+(t&r|n&~r)+i+l)<>>32-o)+t}function r(e,t,n,r,i,o,l){return((e=e+(t^n^r)+i+l)<>>32-o)+t}function i(e,t,n,r,i,o,l){return((e=e+(n^(t|~r))+i+l)<>>32-o)+t}for(var o=CryptoJS,l=(a=o.lib).WordArray,s=a.Hasher,a=o.algo,u=[],c=0;64>c;c++)u[c]=4294967296*e.abs(e.sin(c+1))|0;a=a.MD5=s.extend({_doReset:function(){this._hash=new l.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,o){for(var l=0;16>l;l++){var s=e[a=o+l];e[a]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}l=this._hash.words;var a=e[o+0],c=(s=e[o+1],e[o+2]),h=e[o+3],d=e[o+4],f=e[o+5],p=e[o+6],g=e[o+7],w=e[o+8],m=e[o+9],v=e[o+10],y=e[o+11],b=e[o+12],S=e[o+13],$=e[o+14],C=e[o+15],I=t(I=l[0],D=l[1],E=l[2],x=l[3],a,7,u[0]),x=t(x,I,D,E,s,12,u[1]),E=t(E,x,I,D,c,17,u[2]),D=t(D,E,x,I,h,22,u[3]);I=t(I,D,E,x,d,7,u[4]),x=t(x,I,D,E,f,12,u[5]),E=t(E,x,I,D,p,17,u[6]),D=t(D,E,x,I,g,22,u[7]),I=t(I,D,E,x,w,7,u[8]),x=t(x,I,D,E,m,12,u[9]),E=t(E,x,I,D,v,17,u[10]),D=t(D,E,x,I,y,22,u[11]),I=t(I,D,E,x,b,7,u[12]),x=t(x,I,D,E,S,12,u[13]),E=t(E,x,I,D,$,17,u[14]),I=n(I,D=t(D,E,x,I,C,22,u[15]),E,x,s,5,u[16]),x=n(x,I,D,E,p,9,u[17]),E=n(E,x,I,D,y,14,u[18]),D=n(D,E,x,I,a,20,u[19]),I=n(I,D,E,x,f,5,u[20]),x=n(x,I,D,E,v,9,u[21]),E=n(E,x,I,D,C,14,u[22]),D=n(D,E,x,I,d,20,u[23]),I=n(I,D,E,x,m,5,u[24]),x=n(x,I,D,E,$,9,u[25]),E=n(E,x,I,D,h,14,u[26]),D=n(D,E,x,I,w,20,u[27]),I=n(I,D,E,x,S,5,u[28]),x=n(x,I,D,E,c,9,u[29]),E=n(E,x,I,D,g,14,u[30]),I=r(I,D=n(D,E,x,I,b,20,u[31]),E,x,f,4,u[32]),x=r(x,I,D,E,w,11,u[33]),E=r(E,x,I,D,y,16,u[34]),D=r(D,E,x,I,$,23,u[35]),I=r(I,D,E,x,s,4,u[36]),x=r(x,I,D,E,d,11,u[37]),E=r(E,x,I,D,g,16,u[38]),D=r(D,E,x,I,v,23,u[39]),I=r(I,D,E,x,S,4,u[40]),x=r(x,I,D,E,a,11,u[41]),E=r(E,x,I,D,h,16,u[42]),D=r(D,E,x,I,p,23,u[43]),I=r(I,D,E,x,m,4,u[44]),x=r(x,I,D,E,b,11,u[45]),E=r(E,x,I,D,C,16,u[46]),I=i(I,D=r(D,E,x,I,c,23,u[47]),E,x,a,6,u[48]),x=i(x,I,D,E,g,10,u[49]),E=i(E,x,I,D,$,15,u[50]),D=i(D,E,x,I,f,21,u[51]),I=i(I,D,E,x,b,6,u[52]),x=i(x,I,D,E,h,10,u[53]),E=i(E,x,I,D,v,15,u[54]),D=i(D,E,x,I,s,21,u[55]),I=i(I,D,E,x,w,6,u[56]),x=i(x,I,D,E,C,10,u[57]),E=i(E,x,I,D,p,15,u[58]),D=i(D,E,x,I,S,21,u[59]),I=i(I,D,E,x,d,6,u[60]),x=i(x,I,D,E,y,10,u[61]),E=i(E,x,I,D,c,15,u[62]),D=i(D,E,x,I,m,21,u[63]);l[0]=l[0]+I|0,l[1]=l[1]+D|0,l[2]=l[2]+E|0,l[3]=l[3]+x|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;n[i>>>5]|=128<<24-i%32;var o=e.floor(r/4294967296);for(n[15+(i+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),n[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(n.length+1),this._process(),n=(t=this._hash).words,r=0;4>r;r++)i=n[r],n[r]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8);return t},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),o.MD5=s._createHelper(a),o.HmacMD5=s._createHmacHelper(a)}(Math),k=CryptoJS,m=(b=k.lib).WordArray,l=b.Hasher,d=[],b=k.algo.SHA1=l.extend({_doReset:function(){this._hash=new m.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],o=n[2],l=n[3],s=n[4],a=0;80>a;a++){if(16>a)d[a]=0|e[t+a];else{var u=d[a-3]^d[a-8]^d[a-14]^d[a-16];d[a]=u<<1|u>>>31}u=(r<<5|r>>>27)+s+d[a],u=20>a?u+(1518500249+(i&o|~i&l)):40>a?u+(1859775393+(i^o^l)):60>a?u+((i&o|i&l|o&l)-1894007588):u+((i^o^l)-899497514),s=l,l=o,o=i<<30|i>>>2,i=r,r=u}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+o|0,n[3]=n[3]+l|0,n[4]=n[4]+s|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=Math.floor(n/4294967296),t[15+(r+64>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=l.clone.call(this);return e._hash=this._hash.clone(),e}}),k.SHA1=l._createHelper(b),k.HmacSHA1=l._createHmacHelper(b),function(e){for(var t=CryptoJS,n=(i=t.lib).WordArray,r=i.Hasher,i=t.algo,o=[],l=[],s=function(e){return 4294967296*(e-(0|e))|0},a=2,u=0;64>u;){var c;e:{c=a;for(var h=e.sqrt(c),d=2;d<=h;d++)if(!(c%d)){c=!1;break e}c=!0}c&&(8>u&&(o[u]=s(e.pow(a,.5))),l[u]=s(e.pow(a,1/3)),u++),a++}var f=[];i=i.SHA256=r.extend({_doReset:function(){this._hash=new n.init(o.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],o=n[2],s=n[3],a=n[4],u=n[5],c=n[6],h=n[7],d=0;64>d;d++){if(16>d)f[d]=0|e[t+d];else{var p=f[d-15],g=f[d-2];f[d]=((p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3)+f[d-7]+((g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10)+f[d-16]}p=h+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&u^~a&c)+l[d]+f[d],g=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&o^i&o),h=c,c=u,u=a,a=s+p|0,s=o,o=i,i=r,r=p+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+o|0,n[3]=n[3]+s|0,n[4]=n[4]+a|0,n[5]=n[5]+u|0,n[6]=n[6]+c|0,n[7]=n[7]+h|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return n[i>>>5]|=128<<24-i%32,n[14+(i+64>>>9<<4)]=e.floor(r/4294967296),n[15+(i+64>>>9<<4)]=r,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=r._createHelper(i),t.HmacSHA256=r._createHmacHelper(i)}(Math),function(){var e=CryptoJS,t=e.lib.WordArray,n=(r=e.algo).SHA256,r=r.SHA224=n.extend({_doReset:function(){this._hash=new t.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=4,e}});e.SHA224=n._createHelper(r),e.HmacSHA224=n._createHmacHelper(r)}(),function(){function e(){return r.create.apply(r,arguments)}for(var t=CryptoJS,n=t.lib.Hasher,r=(o=t.x64).Word,i=o.WordArray,o=t.algo,l=[e(1116352408,3609767458),e(1899447441,602891725),e(3049323471,3964484399),e(3921009573,2173295548),e(961987163,4081628472),e(1508970993,3053834265),e(2453635748,2937671579),e(2870763221,3664609560),e(3624381080,2734883394),e(310598401,1164996542),e(607225278,1323610764),e(1426881987,3590304994),e(1925078388,4068182383),e(2162078206,991336113),e(2614888103,633803317),e(3248222580,3479774868),e(3835390401,2666613458),e(4022224774,944711139),e(264347078,2341262773),e(604807628,2007800933),e(770255983,1495990901),e(1249150122,1856431235),e(1555081692,3175218132),e(1996064986,2198950837),e(2554220882,3999719339),e(2821834349,766784016),e(2952996808,2566594879),e(3210313671,3203337956),e(3336571891,1034457026),e(3584528711,2466948901),e(113926993,3758326383),e(338241895,168717936),e(666307205,1188179964),e(773529912,1546045734),e(1294757372,1522805485),e(1396182291,2643833823),e(1695183700,2343527390),e(1986661051,1014477480),e(2177026350,1206759142),e(2456956037,344077627),e(2730485921,1290863460),e(2820302411,3158454273),e(3259730800,3505952657),e(3345764771,106217008),e(3516065817,3606008344),e(3600352804,1432725776),e(4094571909,1467031594),e(275423344,851169720),e(430227734,3100823752),e(506948616,1363258195),e(659060556,3750685593),e(883997877,3785050280),e(958139571,3318307427),e(1322822218,3812723403),e(1537002063,2003034995),e(1747873779,3602036899),e(1955562222,1575990012),e(2024104815,1125592928),e(2227730452,2716904306),e(2361852424,442776044),e(2428436474,593698344),e(2756734187,3733110249),e(3204031479,2999351573),e(3329325298,3815920427),e(3391569614,3928383900),e(3515267271,566280711),e(3940187606,3454069534),e(4118630271,4000239992),e(116418474,1914138554),e(174292421,2731055270),e(289380356,3203993006),e(460393269,320620315),e(685471733,587496836),e(852142971,1086792851),e(1017036298,365543100),e(1126000580,2618297676),e(1288033470,3409855158),e(1501505948,4234509866),e(1607167915,987167468),e(1816402316,1246189591)],s=[],a=0;80>a;a++)s[a]=e();o=o.SHA512=n.extend({_doReset:function(){this._hash=new i.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var n=(h=this._hash.words)[0],r=h[1],i=h[2],o=h[3],a=h[4],u=h[5],c=h[6],h=h[7],d=n.high,f=n.low,p=r.high,g=r.low,w=i.high,m=i.low,v=o.high,y=o.low,b=a.high,S=a.low,$=u.high,C=u.low,I=c.high,x=c.low,E=h.high,D=h.low,A=d,k=f,_=p,j=g,N=w,R=m,T=v,P=y,O=b,F=S,B=$,M=C,Q=I,G=x,U=E,J=D,W=0;80>W;W++){var q=s[W];if(16>W)var L=q.high=0|e[t+2*W],K=q.low=0|e[t+2*W+1];else{L=((K=(L=s[W-15]).high)>>>1|(H=L.low)<<31)^(K>>>8|H<<24)^K>>>7;var H=(H>>>1|K<<31)^(H>>>8|K<<24)^(H>>>7|K<<25),z=((K=(z=s[W-2]).high)>>>19|(V=z.low)<<13)^(K<<3|V>>>29)^K>>>6,V=(V>>>19|K<<13)^(V<<3|K>>>29)^(V>>>6|K<<26),X=(K=s[W-7]).high,Z=(Y=s[W-16]).high,Y=Y.low;L=(L=(L=L+X+((K=H+K.low)>>>0>>0?1:0))+z+((K=K+V)>>>0>>0?1:0))+Z+((K=K+Y)>>>0>>0?1:0);q.high=L,q.low=K}X=O&B^~O&Q,Y=F&M^~F&G,q=A&_^A&N^_&N;var ee=k&j^k&R^j&R,te=(H=(A>>>28|k<<4)^(A<<30|k>>>2)^(A<<25|k>>>7),z=(k>>>28|A<<4)^(k<<30|A>>>2)^(k<<25|A>>>7),(V=l[W]).high),ne=V.low;Z=U+((O>>>14|F<<18)^(O>>>18|F<<14)^(O<<23|F>>>9))+((V=J+((F>>>14|O<<18)^(F>>>18|O<<14)^(F<<23|O>>>9)))>>>0>>0?1:0),U=Q,J=G,Q=B,G=M,B=O,M=F,O=T+(Z=(Z=(Z=Z+X+((V=V+Y)>>>0>>0?1:0))+te+((V=V+ne)>>>0>>0?1:0))+L+((V=V+K)>>>0>>0?1:0))+((F=P+V|0)>>>0

>>0?1:0)|0,T=N,P=R,N=_,R=j,_=A,j=k,A=Z+(q=H+q+((K=z+ee)>>>0>>0?1:0))+((k=V+K|0)>>>0>>0?1:0)|0}f=n.low=f+k,n.high=d+A+(f>>>0>>0?1:0),g=r.low=g+j,r.high=p+_+(g>>>0>>0?1:0),m=i.low=m+R,i.high=w+N+(m>>>0>>0?1:0),y=o.low=y+P,o.high=v+T+(y>>>0

>>0?1:0),S=a.low=S+F,a.high=b+O+(S>>>0>>0?1:0),C=u.low=C+M,u.high=$+B+(C>>>0>>0?1:0),x=c.low=x+G,c.high=I+Q+(x>>>0>>0?1:0),D=h.low=D+J,h.high=E+U+(D>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[30+(r+128>>>10<<5)]=Math.floor(n/4294967296),t[31+(r+128>>>10<<5)]=n,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32}),t.SHA512=n._createHelper(o),t.HmacSHA512=n._createHmacHelper(o)}(),function(){var e=CryptoJS,t=(i=e.x64).Word,n=i.WordArray,r=(i=e.algo).SHA512,i=i.SHA384=r.extend({_doReset:function(){this._hash=new n.init([new t.init(3418070365,3238371032),new t.init(1654270250,914150663),new t.init(2438529370,812702999),new t.init(355462360,4144912697),new t.init(1731405415,4290775857),new t.init(2394180231,1750603025),new t.init(3675008525,1694076839),new t.init(1203062813,3204075428)])},_doFinalize:function(){var e=r._doFinalize.call(this);return e.sigBytes-=16,e}});e.SHA384=r._createHelper(i),e.HmacSHA384=r._createHmacHelper(i)}(),function(){var e=CryptoJS,t=(r=e.lib).WordArray,n=r.Hasher,r=e.algo,i=t.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),o=t.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=t.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),s=t.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),a=t.create([0,1518500249,1859775393,2400959708,2840853838]),u=t.create([1352829926,1548603684,1836072691,2053994217,0]);r=r.RIPEMD160=n.extend({_doReset:function(){this._hash=t.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var n=0;16>n;n++){var r=e[b=t+n];e[b]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}var c,h,d,f,p,g,w,m,v,y,b=this._hash.words,S=(r=a.words,u.words),$=i.words,C=o.words,I=l.words,x=s.words;g=c=b[0],w=h=b[1],m=d=b[2],v=f=b[3],y=p=b[4];var E;for(n=0;80>n;n+=1)E=c+e[t+$[n]]|0,E=16>n?E+((h^d^f)+r[0]):32>n?E+((h&d|~h&f)+r[1]):48>n?E+(((h|~d)^f)+r[2]):64>n?E+((h&f|d&~f)+r[3]):E+((h^(d|~f))+r[4]),E=(E=(E|=0)<>>32-I[n])+p|0,c=p,p=f,f=d<<10|d>>>22,d=h,h=E,E=g+e[t+C[n]]|0,E=16>n?E+((w^(m|~v))+S[0]):32>n?E+((w&v|m&~v)+S[1]):48>n?E+(((w|~m)^v)+S[2]):64>n?E+((w&m|~w&v)+S[3]):E+((w^m^v)+S[4]),E=(E=(E|=0)<>>32-x[n])+y|0,g=y,y=v,v=m<<10|m>>>22,m=w,w=E;E=b[1]+d+v|0,b[1]=b[2]+f+y|0,b[2]=b[3]+p+g|0,b[3]=b[4]+c+w|0,b[4]=b[0]+h+m|0,b[0]=E},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;for(t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process(),t=(e=this._hash).words,n=0;5>n;n++)r=t[n],t[n]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8);return e},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.RIPEMD160=n._createHelper(r),e.HmacRIPEMD160=n._createHmacHelper(r)}(),function(){var e=CryptoJS,t=e.enc.Utf8;e.algo.HMAC=e.lib.Base.extend({init:function(e,n){e=this._hasher=new e.init,"string"==typeof n&&(n=t.parse(n));var r=e.blockSize,i=4*r;n.sigBytes>i&&(n=e.finalize(n)),n.clamp();for(var o=this._oKey=n.clone(),l=this._iKey=n.clone(),s=o.words,a=l.words,u=0;ue.length>0),"Expected a non-empty string"),z=q().where((e=>e>=0),"Expected a non-negative number"),Q=H({name:K,displayName:V(M()),contexts:V(U(M())),customConfig:V(H())}),X=J(W("web"),W("native"),W("citrix"),W("onlineNative"),W("other")),Y=H({url:K}),Z=H({src:K,size:V(K),type:V(K)}),ee=H({src:K,size:V(K),type:V(K),label:V(K)}),te=H({contexts:U(K),displayName:V(K),resultType:V(K),customConfig:V(L())}),ne=H({listensFor:V(G(te)),raises:V(G(U(K)))}),re=H({broadcasts:V(U(K)),listensFor:V(U(K))}),ie=H({name:K,description:V(K),broadcasts:V(U(K)),listensFor:V(U(K))}),se=H({intents:V(ne),userChannels:V(re),appChannels:V(U(ie))}),oe=H({url:K,top:V(q()),left:V(q()),width:V(z),height:V(z)}),ae=H({name:V(K),type:V(K.where((e=>"window"===e),"Expected a value of window")),title:V(K),version:V(K),customProperties:V(L()),icon:V(M()),caption:V(M()),details:V(oe),intents:V(U(Q)),hidden:V(B())}),ce=J(H({ioConnect:V(J(ae,L())),Glue42:V(J(ae,L()))}),L()),le=H({name:K,appId:K,title:V(K),version:V(K),manifest:K,manifestType:K,tooltip:V(K),description:V(K),contactEmail:V(K),supportEmail:V(K),publisher:V(K),images:V(U(H({url:V(K)}))),icons:V(U(H({icon:V(K)}))),customConfig:L(),intents:V(U(Q))}),ue=H({appId:V(K),name:V(K),details:V(Y),version:V(K),title:V(K),tooltip:V(K),lang:V(K),description:V(K),categories:V(U(K)),icons:V(U(Z)),screenshots:V(U(ee)),contactEmail:V(K),supportEmail:V(K),moreInfo:V(K),publisher:V(K),customConfig:V(U(L())),hostManifests:V(ce),interop:V(se)}),he=H({appId:K,name:K,type:X,details:Y,version:V(K),title:V(K),tooltip:V(K),lang:V(K),description:V(K),categories:V(U(K)),icons:V(U(Z)),screenshots:V(U(ee)),contactEmail:V(K),supportEmail:V(K),moreInfo:V(K),publisher:V(K),customConfig:V(U(L())),hostManifests:V(ce),interop:V(se),localizedVersions:V(G(ue))}),de=J(le,he),pe=e=>`${e.kind} at ${e.at}: ${JSON.stringify(e.input)}. Reason - ${e.message}`;const ge={common:{nonEmptyStringDecoder:K,nonNegativeNumberDecoder:z},fdc3:{allDefinitionsDecoder:de,v1DefinitionDecoder:le,v2DefinitionDecoder:he}};var fe;!function(e){e.USER_CANCELLED="User Closed Intents Resolver UI without choosing a handler",e.CALLER_NOT_DEFINED="Caller Id is not defined",e.TIMEOUT_HIT="Timeout hit",e.INTENT_NOT_FOUND="Cannot find Intent",e.HANDLER_NOT_FOUND="Cannot find Intent Handler",e.TARGET_INSTANCE_UNAVAILABLE="Cannot start Target Instance",e.INTENT_DELIVERY_FAILED="Target Instance did not add a listener",e.RESOLVER_UNAVAILABLE="Intents Resolver UI unavailable",e.RESOLVER_TIMEOUT="User did not choose a handler",e.INVALID_RESOLVER_RESPONSE="Intents Resolver UI returned invalid response",e.INTENT_HANDLER_REJECTION="Intent Handler function processing the raised intent threw an error or rejected the promise it returned"}(fe||(fe={}));const me=new class{_fdc3;_decoders=ge;_errors={intents:fe};get fdc3(){return this._fdc3||(this._fdc3=(new class{fdc3ToDesktopDefinitionType={web:"window",native:"exe",citrix:"citrix",onlineNative:"clickonce",other:"window"};toApi(){return{isFdc3Definition:this.isFdc3Definition.bind(this),parseToBrowserBaseAppData:this.parseToBrowserBaseAppData.bind(this),parseToDesktopAppConfig:this.parseToDesktopAppConfig.bind(this)}}isFdc3Definition(e){const t=de.run(e);return t.ok?e.appId&&e.details?{isFdc3:!0,version:"2.0"}:e.manifest?{isFdc3:!0,version:"1.2"}:{isFdc3:!1,reason:"The passed definition is not FDC3"}:{isFdc3:!1,reason:pe(t.error)}}parseToBrowserBaseAppData(e){const{isFdc3:t,version:n}=this.isFdc3Definition(e);if(!t)throw new Error("The passed definition is not FDC3");const r=de.run(e);if(!r.ok)throw new Error(`Invalid FDC3 ${n} definition. Error: ${pe(r.error)}`);const i=this.getUserPropertiesFromDefinition(e,n),s={url:this.getUrl(e,n)},o={name:e.appId,type:"window",createOptions:s,userProperties:{...i,intents:"1.2"===n?i.intents:this.getIntentsFromV2AppDefinition(e),details:s},title:e.title,version:e.version,icon:this.getIconFromDefinition(e,n),caption:e.description,fdc3:"2.0"===n?{...e,definitionVersion:"2.0"}:void 0},a=e.hostManifests?.ioConnect||e.hostManifests?.Glue42;if(!a)return o;const c=ae.run(a);if(!c.ok)throw new Error(`Invalid FDC3 ${n} definition. Error: ${pe(c.error)}`);return Object.keys(c.result).length?this.mergeBaseAppDataWithGlueManifest(o,c.result):o}parseToDesktopAppConfig(e){const{isFdc3:t,version:n}=this.isFdc3Definition(e);if(!t)throw new Error("The passed definition is not FDC3");const r=de.run(e);if(!r.ok)throw new Error(`Invalid FDC3 ${n} definition. Error: ${pe(r.error)}`);if("1.2"===n){const t=e;return{name:t.appId,type:"window",details:{url:this.getUrl(e,n)},version:t.version,title:t.title,tooltip:t.tooltip,caption:t.description,icon:t.icons?.[0].icon,intents:t.intents,customProperties:{manifestType:t.manifestType,images:t.images,contactEmail:t.contactEmail,supportEmail:t.supportEmail,publisher:t.publisher,icons:t.icons,customConfig:t.customConfig}}}const i=e,s={name:i.appId,type:this.fdc3ToDesktopDefinitionType[i.type],details:i.details,version:i.version,title:i.title,tooltip:i.tooltip,caption:i.description,icon:this.getIconFromDefinition(i,"2.0"),intents:this.getIntentsFromV2AppDefinition(i),fdc3:{...i,definitionVersion:"2.0"}},o=e.hostManifests?.ioConnect||e.hostManifests?.Glue42;if(!o)return s;if("object"!=typeof o||Array.isArray(o))throw new Error(`Invalid '${e.hostManifests.ioConnect?"hostManifests.ioConnect":"hostManifests['Glue42']"}' key`);return this.mergeDesktopConfigWithGlueManifest(s,o)}getUserPropertiesFromDefinition(e,t){return"1.2"===t?Object.fromEntries(Object.entries(e).filter((([e])=>!I.includes(e)))):Object.fromEntries(Object.entries(e).filter((([e])=>!I.includes(e)&&!E.includes(e))))}getUrl(e,t){let n;if("1.2"===t){const t=JSON.parse(e.manifest);n=t.details?.url||t.url}else n=e.details?.url;if(!n||"string"!=typeof n)throw new Error(`Invalid FDC3 ${t} definition. Provide valid 'url' under '${"1.2"===t?"manifest":"details"}' key`);return n}getIntentsFromV2AppDefinition(e){const t=e.interop?.intents?.listensFor;if(t)return Object.entries(t).map((e=>{const[t,n]=e;return{name:t,...n}}))}getIconFromDefinition(e,t){return"1.2"===t?e.icons?.find((e=>e.icon))?.icon||void 0:e.icons?.find((e=>e.src))?.src||void 0}mergeBaseAppDataWithGlueManifest(e,t){let n=e;if(t.details){const r={...e.createOptions,...t.details};n.createOptions=r,n.userProperties.details=r}return Array.isArray(t.intents)&&(n.userProperties.intents=(n.userProperties.intents||[]).concat(t.intents)),n={...n,...t},delete n.details,delete n.intents,n}mergeDesktopConfigWithGlueManifest(e,t){const n=Object.assign({},e,t,{details:{...e.details,...t.details}});return Array.isArray(t.intents)&&(n.intents=(e.intents||[]).concat(t.intents)),n}}).toApi()),this._fdc3}get decoders(){return this._decoders}get errors(){return this._errors}};me.fdc3;const ye=me.decoders;me.errors;const we=g().where((e=>e.length>0),"Expected a non-empty string"),ve=f().where((e=>e>=0),"Expected a non-negative number"),be=S(we),Se=C(w("system"),w("windows"),w("appManager"),w("layouts"),w("intents"),w("notifications"),w("channels"),w("extension"),w("themes"),w("prefs")),Ce=C(w("openWindow"),w("windowHello"),w("windowAdded"),w("windowRemoved"),w("getBounds"),w("getFrameBounds"),w("getUrl"),w("moveResize"),w("focus"),w("close"),w("getTitle"),w("setTitle"),w("focusChange"),w("getChannel")),xe=C(w("appHello"),w("appDirectoryStateChange"),w("instanceStarted"),w("instanceStopped"),w("applicationStart"),w("instanceStop"),w("clear")),Ie=C(w("layoutAdded"),w("layoutChanged"),w("layoutRemoved"),w("layoutRenamed"),w("get"),w("getAll"),w("export"),w("import"),w("remove"),w("rename"),w("clientSaveRequest"),w("getGlobalPermissionState"),w("checkGlobalActivated"),w("requestGlobalPermission"),w("getDefaultGlobal"),w("setDefaultGlobal"),w("clearDefaultGlobal"),w("updateMetadata")),Ee=C(w("raiseNotification"),w("requestPermission"),w("notificationShow"),w("notificationClick"),w("getPermission"),w("list"),w("notificationRaised"),w("notificationClosed"),w("click"),w("clear"),w("clearAll"),w("configure"),w("getConfiguration"),w("configurationChanged"),w("setState"),w("clearOld"),w("activeCountChange"),w("stateChange")),Ae=C(w("getEnvironment"),w("getBase"),w("platformShutdown")),ke=C(w("top"),w("left"),w("right"),w("bottom")),_e=v({top:f(),left:f(),width:ve,height:ve}),Pe=S(v({top:S(f()),left:S(f()),width:S(ve),height:S(ve),context:S(y()),relativeTo:S(we),relativeDirection:S(ke),windowId:S(we),layoutComponentId:S(we)})),Te=v({name:we,url:we,options:Pe}),Fe=v({windowId:S(we)}),De=v({windowId:we,name:we}),Oe=v({windowId:we}),Re=v({windows:b(De),isWorkspaceFrame:m()}),Ne=v({windowId:we,title:g()}),je=v({windowId:we,hasFocus:m()}),$e=v({windowId:we,top:S(f()),left:S(f()),width:S(ve),height:S(ve),relative:S(m())}),Me=v({windowId:we,bounds:v({top:f(),left:f(),width:ve,height:ve})}),qe=v({bounds:v({top:f(),left:f(),width:ve,height:ve})}),Be=v({windowId:we,url:we}),Le=y(),We=v({top:S(f()),left:S(f()),width:S(ve),height:S(ve)}),He=v({id:we,applicationName:we}),Ue=v({url:we,top:S(f()),left:S(f()),width:S(ve),height:S(ve)}),Ge=v({name:we,displayName:S(g()),contexts:S(b(g())),customConfig:S(v())});v({name:we,title:S(we),version:S(we),appId:S(we),manifest:we,manifestType:we,tooltip:S(we),description:S(we),contactEmail:S(we),supportEmail:S(we),publisher:S(we),images:S(b(v({url:S(we)}))),icons:S(b(v({icon:S(we)}))),customConfig:y(),intents:S(b(Ge))});const Ve=v({name:we,type:we.where((e=>"window"===e),"Expected a value of window"),title:S(we),version:S(we),customProperties:S(y()),icon:S(g()),caption:S(g()),details:Ue,intents:S(b(Ge)),hidden:S(m()),fdc3:S(ye.fdc3.v2DefinitionDecoder)}),Je=C(Ve,ye.fdc3.v2DefinitionDecoder,ye.fdc3.v1DefinitionDecoder);v({definitions:b(Je),mode:C(w("replace"),w("merge"))});const Ke=v({name:we}),ze=v({definitions:b(Ve)}),Qe=v({name:we,type:we.where((e=>"window"===e),"Expected a value of window"),instances:b(He),userProperties:S(y()),title:S(we),version:S(we),icon:S(we),caption:S(we)}),Xe=v({name:we,type:we.where((e=>"window"===e),"Expected a value of window"),userProperties:y(),title:S(we),version:S(we),icon:S(we),caption:S(we)}),Ye=v({appsAdded:b(Xe),appsChanged:b(Xe),appsRemoved:b(Xe)}),Ze=v({apps:b(Qe),initialChannelId:S(we)}),et=v({id:we}),tt=v({name:we,waitForAGMReady:m(),id:S(we),context:S(y()),top:S(f()),left:S(f()),width:S(ve),height:S(ve),relativeTo:S(we),relativeDirection:S(ke),forceChromeTab:S(m()),layoutComponentId:S(we),channelId:S(we)}),nt=C(w("Global"),w("Activity"),w("ApplicationDefault"),w("Swimlane"),w("Workspace")),rt=C(w("application"),w("activity")),it=v({context:S(y()),bounds:_e,createArgs:v({name:S(we),url:S(we),context:S(y())}),windowState:S(we),restoreState:S(we),instanceId:we,isCollapsed:S(m()),isSticky:S(m()),restoreSettings:v({groupId:S(we),groupZOrder:S(f())})}),st=v({type:w("window"),componentType:S(rt),application:we,state:it}),ot=v({type:w("window"),config:v({appName:we,url:S(we),title:S(g()),allowExtract:S(m()),allowReorder:S(m()),showCloseButton:S(m()),isMaximized:S(m())})}),at=v({type:w("group"),config:y(),children:b(C(ot))}),ct=v({type:w("column"),config:y(),children:b(C(at,ot,x((()=>ct)),x((()=>lt))))}),lt=v({type:w("row"),config:y(),children:b(C(ct,at,ot,x((()=>lt))))}),ut=v({config:y(),context:y(),children:b(C(lt,ct,at,ot))}),ht=v({type:w("Workspace"),application:S(we),state:ut}),dt=v({bounds:_e,instanceId:we,selectedWorkspace:ve,workspaces:b(ut),windowState:S(we),restoreState:S(we),context:S(y())}),pt=v({type:w("workspaceFrame"),application:we,componentType:S(rt),state:dt}),gt=v({name:we,type:nt,components:b(C(st,ht,pt)),context:S(y()),metadata:S(y()),version:S(f())}),ft=v({name:we,context:S(y()),metadata:S(y()),instances:S(b(we)),ignoreInstances:S(b(we))}),mt=v({name:we,context:S(y()),closeRunningInstance:S(m()),closeMe:S(m()),timeout:S(ve)}),yt=v({name:we,type:nt,context:S(y()),metadata:S(y())}),wt=v({name:we,type:nt}),vt=v({layout:ft}),bt=v({layout:gt,newName:we}),St=v({status:we}),Ct=v({layout:gt}),xt=v({layout:mt}),It=v({type:nt}),Et=v({layouts:b(gt)}),At=C(w("replace"),w("merge")),kt=v({layouts:b(gt),mode:At,skipManagerRequest:S(m())}),_t=v({summaries:b(yt)}),Pt=v({layout:gt}),Tt=v({layout:S(gt)}),Ft=v({name:we}),Dt=C(w("findIntent"),w("getIntents"),w("raiseIntent"),w("raise"),w("filterHandlers")),Ot=v({applicationName:we,applicationTitle:S(g()),applicationDescription:S(g()),applicationIcon:S(g()),type:C(w("app"),w("instance")),displayName:S(g()),contextTypes:S(b(we)),instanceId:S(g()),instanceTitle:S(g()),resultType:S(g())});v({applicationName:g(),applicationIcon:S(g()),instanceId:S(g())});const Rt=v({intent:we,handler:Ot}),Nt=v({name:we,handlers:b(Ot)}),jt=C(w("startNew"),w("reuse"),v({app:S(we),instance:S(we)})),$t=v({type:S(we),data:S(y())}),Mt=b(Nt),qt=v({intents:Mt}),Bt=v({name:S(we),contextType:S(we),resultType:S(we)}),Lt=C(we,Bt),Wt=v({filter:S(Bt)}),Ht=v({intent:we,target:S(jt),context:S($t),options:S(Pe),handlers:S(b(Ot)),timeout:S(ve),waitUserResponseIndefinitely:S(m())}),Ut=C(we,Ht),Gt=v({enabled:m(),appName:we,waitResponseTimeout:f()}),Vt=v({intentRequest:Ht,resolverConfig:Gt}),Jt=v({request:Ht,handler:Ot,result:y()}),Kt=v({title:S(we),openResolver:S(m()),timeout:S(ve),intent:S(we),contextTypes:S(b(we)),resultType:S(we),applicationNames:S(b(we))}),zt=v({handlers:b(Ot)}),Qt=v({filterHandlersRequest:Kt,resolverConfig:Gt}),Xt=v({intent:we,contextTypes:S(b(we)),displayName:S(g()),icon:S(g()),description:S(g()),resultType:S(g())}),Yt=C(we,Xt),Zt=v({intent:we,contextTypes:S(b(we)),description:S(we),displayName:S(we),icon:S(we),resultType:S(we)}),en=v({intents:b(Zt)}),tn=e=>we.where((t=>e.includes(t)),"Expected a valid channel name"),nn=v({method:we,arguments:S(y()),target:S(C(w("all"),w("best")))}),rn=v({action:g(),title:we,icon:S(g()),interop:S(nn)}),sn=C(w("Active"),w("Acknowledged"),w("Seen"),w("Closed"),w("Stale"),w("Snoozed"),w("Processing")),on=v({count:f()}),an=v({badge:S(g()),body:S(g()),data:S(y()),dir:S(C(w("auto"),w("ltr"),w("rtl"))),icon:S(g()),image:S(g()),lang:S(g()),renotify:S(m()),requireInteraction:S(m()),silent:S(m()),tag:S(g()),timestamp:S(ve),vibrate:S(b(f()))}),cn=v({title:we,clickInterop:S(nn),actions:S(b(rn)),focusPlatformOnDefaultClick:S(m()),badge:S(g()),body:S(g()),data:S(y()),dir:S(C(w("auto"),w("ltr"),w("rtl"))),icon:S(g()),image:S(g()),lang:S(g()),renotify:S(m()),requireInteraction:S(m()),silent:S(m()),tag:S(g()),timestamp:S(ve),vibrate:S(b(f())),severity:S(C(w("Low"),w("None"),w("Medium"),w("High"),w("Critical"))),showToast:S(m()),showInPanel:S(m()),state:S(sn)}),ln=v({id:we,state:sn}),un=v({name:we,meta:v({color:we}),data:S(v())}),hn=v({name:we}),dn=v({name:we,read:m(),write:m(),windowId:S(we)}),pn=v({name:we,read:m(),write:m(),windowId:we}),gn=v({config:pn}),fn=v({channels:b(dn)}),mn=v({windowId:we}),yn=v({read:m(),write:m(),windowId:S(we)}),wn=v({restrictions:yn}),vn=v({settings:cn,id:we}),bn=v({settings:cn}),Sn=v({permissionGranted:m()}),Cn=v({permission:C(w("default"),w("granted"),w("denied"))}),xn=v({definition:an,action:S(g()),id:S(we)}),In=v({allowed:S(b(we)),blocked:S(b(we))}),En=v({enable:S(m()),enableToasts:S(m()),sourceFilter:S(In)}),An=v({configuration:En}),kn=v({configuration:v({enable:m(),enableToasts:m(),sourceFilter:v({allowed:b(we),blocked:b(we)})})}),_n=v({layoutType:C(w("Global"),w("Workspace")),layoutName:we,context:S(y())}),Pn=v({windowContext:S(y())}),Tn=v({state:C(w("prompt"),w("denied"),w("granted"))}),Fn=v({isAvailable:m()}),Dn=v({itemId:we}),On=v({isSupported:m()}),Rn=v({operation:we}),Nn=v({bounds:_e}),jn=v({displayName:we,name:we}),$n=v({theme:jn}),Mn=v({themes:b(jn)}),qn=v({name:we}),Bn=v({id:we,title:we,clickInterop:S(nn),actions:S(b(rn)),focusPlatformOnDefaultClick:S(m()),badge:S(g()),body:S(g()),data:S(y()),dir:S(C(w("auto"),w("ltr"),w("rtl"))),icon:S(g()),image:S(g()),lang:S(g()),renotify:S(m()),requireInteraction:S(m()),silent:S(m()),tag:S(g()),timestamp:S(ve),vibrate:S(b(f())),severity:S(C(w("Low"),w("None"),w("Medium"),w("High"),w("Critical"))),showToast:S(m()),showInPanel:S(m()),state:S(sn)}),Ln=v({notification:Bn}),Wn=v({notifications:b(Bn)}),Hn=v({id:we}),Un=v({channel:we}),Gn=v({windowIds:b(we)}),Vn=C(w("addChannel"),w("getMyChannel"),w("getWindowIdsOnChannel"),w("getWindowIdsWithChannels"),w("joinChannel"),w("restrict"),w("getRestrictions"),w("restrictAll")),Jn=v({channel:S(we)}),Kn=v({application:S(we),channels:S(b(we)),windowIds:S(b(we))}),zn=v({filter:S(Kn)}),Qn=v({windowIdsWithChannels:b(v({application:we,channel:S(we),windowId:we}))}),Xn=S(y()),Yn=S(v({top:S(f()),left:S(f()),width:S(ve),height:S(ve),relativeTo:S(we),relativeDirection:S(ke),waitForAGMReady:S(m()),channelId:S(we),reuseId:S(we)})),Zn=v({channel:we,windowId:we}),er=v({channel:S(we)}),tr=C(w("clear"),w("clearAll"),w("get"),w("getAll"),w("set"),w("update"),w("prefsChanged"),w("prefsHello")),nr=v({app:we,data:v(),lastUpdate:S(we)}),rr=v({app:we}),ir=v({prefs:nr}),sr=v({all:b(nr)}),or=v({app:we,data:v()}),ar=v({platform:v({app:we})}),cr={openWindow:{name:"openWindow",dataDecoder:Te,resultDecoder:De},windowHello:{name:"windowHello",dataDecoder:Fe,resultDecoder:Re},windowAdded:{name:"windowAdded",dataDecoder:De},windowRemoved:{name:"windowRemoved",dataDecoder:Oe},getBounds:{name:"getBounds",dataDecoder:Oe,resultDecoder:Me},getFrameBounds:{name:"getFrameBounds",dataDecoder:Oe,resultDecoder:qe},getUrl:{name:"getUrl",dataDecoder:Oe,resultDecoder:Be},moveResize:{name:"moveResize",dataDecoder:$e},focus:{name:"focus",dataDecoder:Oe},close:{name:"close",dataDecoder:Oe},getTitle:{name:"getTitle",dataDecoder:Oe,resultDecoder:Ne},setTitle:{name:"setTitle",dataDecoder:Ne},focusChange:{name:"focusChange",dataDecoder:je},getChannel:{name:"getChannel",dataDecoder:Oe,resultDecoder:er}};function lr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function ur(e){if(e&&e.errorHandling&&"function"!=typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"==typeof e.errorHandling&&e.errorHandling,n={};function r(n,r){var i=n instanceof Error?n:new Error(n);if(t)t(i);else{var s='[ERROR] callback-registry: User callback for key "'+r+'" failed: '+i.stack;if(e)switch(e.errorHandling){case"log":return console.error(s);case"silent":return;case"throw":throw new Error(s)}console.error(s)}}return{add:function(e,t,i){var s=n[e];return s||(s=[],n[e]=s),s.push(t),i&&setTimeout((function(){i.forEach((function(i){var s;if(null===(s=n[e])||void 0===s?void 0:s.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(t){r(t,e)}}))}),0),function(){var r=n[e];r&&(0===(r=r.reduce((function(e,n,r){return n===t&&e.length===r||e.push(n),e}),[])).length?delete n[e]:n[e]=r)}},execute:function(e){for(var t=[],i=1;ithis.registry.execute("context-updated",e))),this.me={id:this.id,name:this.name,isFocused:!1,getURL:this.getURL.bind(this),moveResize:this.moveResize.bind(this),resizeTo:this.resizeTo.bind(this),moveTo:this.moveTo.bind(this),focus:this.focus.bind(this),close:this.close.bind(this),getTitle:this.getTitle.bind(this),setTitle:this.setTitle.bind(this),getBounds:this.getBounds.bind(this),getContext:this.getContext.bind(this),updateContext:this.updateContext.bind(this),setContext:this.setContext.bind(this),onContextUpdated:this.onContextUpdated.bind(this),onFocusChanged:this.onFocusChanged.bind(this),getChannel:this.getChannel.bind(this)},this.me}async getURL(){return(await this._bridge.send("windows",cr.getUrl,{windowId:this.id})).url}onFocusChanged(e){if("function"!=typeof e)throw new Error("Cannot subscribe to context changes, because the provided callback is not a function!");return this.registry.add("focus-change",e)}async moveResize(e){const t=We.runWithException(e),n=Object.assign({},t,{windowId:this.id,relative:!1});return await this._bridge.send("windows",cr.moveResize,n),this.me}async resizeTo(e,t){if(void 0===e&&void 0===t)return this.me;void 0!==e&&ve.runWithException(e),void 0!==t&&ve.runWithException(t);const n=Object.assign({},{width:e,height:t},{windowId:this.id,relative:!0});return await this._bridge.send("windows",cr.moveResize,n),this.me}async moveTo(e,t){if(void 0===e&&void 0===t)return this.me;void 0!==e&&f().runWithException(e),void 0!==t&&f().runWithException(t);const n=Object.assign({},{top:e,left:t},{windowId:this.id,relative:!0});return await this._bridge.send("windows",cr.moveResize,n),this.me}async focus(){return"Platform"===this.name?window.open(void 0,this.id):await this._bridge.send("windows",cr.focus,{windowId:this.id}),this.me}async close(){return await this._bridge.send("windows",cr.close,{windowId:this.id}),this.me}async getTitle(){return(await this._bridge.send("windows",cr.getTitle,{windowId:this.id})).title}async setTitle(e){const t=we.runWithException(e);return await this._bridge.send("windows",cr.setTitle,{windowId:this.id,title:t}),this.me}async getBounds(){return(await this._bridge.send("windows",cr.getBounds,{windowId:this.id})).bounds}async getContext(){const e=await this._bridge.contextLib.get(this.myCtxKey),{___io___:t,...n}=e;return n}async updateContext(e){const t=Le.runWithException(e);return await this._bridge.contextLib.update(this.myCtxKey,t),this.me}async setContext(e){const t=Le.runWithException(e),n=await this._bridge.contextLib.get(this.myCtxKey),r=n.___io___?{...t,___io___:n.___io___}:t;return await this._bridge.contextLib.set(this.myCtxKey,r),this.me}onContextUpdated(e){if("function"!=typeof e)throw new Error("Cannot subscribe to context changes, because the provided callback is not a function!");return this.registry.add("context-updated",(t=>{const{___io___:n,...r}=t;e(r,this.me)}))}async getChannel(){return(await this._bridge.send("windows",cr.getChannel,{windowId:this.id},void 0,{includeOperationCheck:!0})).channel}}const pr={operationCheck:{name:"operationCheck",dataDecoder:Rn,resultDecoder:On},getWorkspaceWindowFrameBounds:{name:"getWorkspaceWindowFrameBounds",resultDecoder:Nn,dataDecoder:Dn}},gr=(e,t,n)=>new Promise(((r,i)=>{const s=setTimeout((()=>{i(n||`Promise timeout hit: ${t}`)}),t);new Promise(e).then((e=>{clearTimeout(s),r(e)})).catch((e=>{clearTimeout(s),i(e)}))}));const fr="T42.Web.Platform.Control",mr="T42.Web.Platform.Stream",yr="T42.Web.Client.Control",wr="T42.Core.Plus.Themes.Stream";class vr{coreGlue;communicationId;platformMethodTimeoutMs=1e4;controllers;sub;running;constructor(e,t){this.coreGlue=e,this.communicationId=t}get contextLib(){return this.coreGlue.contexts}get interopInstance(){return this.coreGlue.interop.instance.instance}async stop(){this.running=!1,this.sub.close(),await this.coreGlue.interop.unregister(yr)}async start(e){this.running=!0,this.controllers=e,await Promise.all([this.checkWaitMethod(fr),this.checkWaitMethod(mr)]);const t=this.communicationId,[n]=await Promise.all([this.coreGlue.interop.subscribe(mr,t?{target:{instance:this.communicationId}}:void 0),this.coreGlue.interop.registerAsync(yr,((e,t,n,r)=>this.passMessageController(e,n,r)))]);this.sub=n,this.sub.onData((e=>this.passMessageController(e.data)))}getInteropInstance(e){const t=this.coreGlue.interop.servers().find((t=>t.windowId&&t.windowId===e));return{application:t?.application,applicationName:t?.applicationName,peerId:t?.peerId,instance:t?.instance,windowId:t?.windowId}}async send(e,t,n,r,i){if(t.dataDecoder)try{t.dataDecoder.runWithException(n)}catch(e){throw new Error(`Unexpected Web->Platform outgoing validation error: ${e.message}, for operation: ${t.name} and input: ${JSON.stringify(e.input)}`)}if(!(!i?.includeOperationCheck||(await this.checkOperationSupported(e,t)).isSupported))throw new Error(`Cannot complete operation: ${t.name} for domain: ${e} because this client is connected to a platform which does not support it`);try{const i=await this.transmitMessage(e,t,n,r);return t.resultDecoder&&t.resultDecoder.runWithException(i),i}catch(e){if(e.kind)throw new Error(`Unexpected Web<-Platform incoming validation error: ${e.message}, for operation: ${t.name} and input: ${JSON.stringify(e.input)}`);throw new Error(e.message)}}async createNotificationsSteam(){if(!this.coreGlue.interop.methods().some((e=>e.name===wr)))throw new Error("Cannot subscribe to theme changes, because the underlying interop stream does not exist. Most likely this is the case when this client is not connected to Core Plus.");return this.coreGlue.interop.subscribe(wr,this.communicationId?{target:{instance:this.communicationId}}:void 0)}async checkOperationSupported(e,t){try{return await this.send(e,pr.operationCheck,{operation:t.name})}catch(e){return{isSupported:!1}}}checkWaitMethod(e){return gr((t=>{if(this.coreGlue.interop.methods().some((t=>{const n=t.name===e,r=!this.communicationId||t.getServers().some((e=>e.instance===this.communicationId));return n&&r})))return t();const n=this.coreGlue.interop.serverMethodAdded((r=>{const i=r.method,s=r.server,o=!this.communicationId||s.instance===this.communicationId;i.name===e&&o&&(n(),t())}))}),this.platformMethodTimeoutMs,`Cannot initiate Glue Web, because a system method's discovery timed out: ${e}`)}passMessageController(e,t,n){const r=Se.run(e.domain);if(!r.ok)return void(n&&n(`Cannot execute this client control, because of domain validation error: ${JSON.stringify(r.error)}`));const i=r.result;this.controllers[i].handleBridgeMessage(e).then((e=>{t&&t(e)})).catch((e=>{n&&n(e),console.warn(e)}))}async transmitMessage(e,t,n,r){const i={domain:e,data:n,operation:t.name};let s;const o=`Internal Platform Communication Error. Attempted operation: ${JSON.stringify(t.name)} with data: ${JSON.stringify(n)}. `,a=this.communicationId;try{if(!this.running)throw new Error("Cannot send a control message, because the platform shut down");if(s=await this.coreGlue.interop.invoke(fr,i,a?{instance:this.communicationId}:void 0,r),!s)throw new Error("Received unsupported result from the platform - empty result");if(!Array.isArray(s.all_return_values)||0===s.all_return_values.length)throw new Error("Received unsupported result from the platform - empty values collection")}catch(e){if(e&&e.all_errors&&e.all_errors.length){const t=e.all_errors[0].message;throw new Error(`${o} -> Inner message: ${t}`)}throw new Error(`${o} -> Inner message: ${e.message}`)}return s.all_return_values[0].returned}}const br={appHello:{name:"appHello",dataDecoder:Fe,resultDecoder:Ze},appDirectoryStateChange:{name:"appDirectoryStateChange",dataDecoder:Ye},instanceStarted:{name:"instanceStarted",dataDecoder:He},instanceStopped:{name:"instanceStopped",dataDecoder:He},applicationStart:{name:"applicationStart",dataDecoder:tt,resultDecoder:He},instanceStop:{name:"instanceStop",dataDecoder:et},import:{name:"import"},remove:{name:"remove",dataDecoder:Ke},export:{name:"export",resultDecoder:ze},clear:{name:"clear"}};class Sr{me;baseApplicationsTimeoutMS=6e4;appImportTimeoutMS=20;registry=hr();ioc;bridge;publicWindowId;applications=[];instances=[];platformRegistration;logger;channelsController;sessionController;handlePlatformShutdown(){this.registry.clear(),this.applications=[],this.instances=[],delete this.me}async start(e,t){this.logger=e.logger.subLogger("appManger.controller.web"),this.logger.trace("starting the web appManager controller"),this.publicWindowId=t.publicWindowId,this.addOperationsExecutors(),this.ioc=t,this.bridge=t.bridge,this.channelsController=t.channelsController,this.sessionController=t.sessionController,this.platformRegistration=this.registerWithPlatform(),await this.platformRegistration,this.logger.trace("registration with the platform successful, attaching the appManager property to glue and returning");const n=this.toApi();e.appManager=n}async handleBridgeMessage(e){await this.platformRegistration;const t=xe.runWithException(e.operation),n=br[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),await n.execute(r)}onInstanceStarted(e){if("function"!=typeof e)throw new Error("onInstanceStarted requires a single argument of type function");return this.registry.add("instance-started",e,this.instances)}onInstanceStopped(e){if("function"!=typeof e)throw new Error("onInstanceStopped requires a single argument of type function");return this.registry.add("instance-stopped",e)}async startApplication(e,t,n){const r=await this.channelsController.all();if(n?.channelId&&!r.includes(n.channelId))throw new Error(`The channel with name "${n.channelId}" doesn't exist!`);const i={name:e,waitForAGMReady:n?.waitForAGMReady??!0,context:t,top:n?.top,left:n?.left,width:n?.width,height:n?.height,relativeTo:n?.relativeTo,relativeDirection:n?.relativeDirection,id:n?.reuseId,forceChromeTab:n?.forceTab,layoutComponentId:n?.layoutComponentId,channelId:n?.channelId},s=await this.bridge.send("appManager",br.applicationStart,i),o=this.applications.find((e=>e.name===s.applicationName));return this.ioc.buildInstance(s,o)}getApplication(e){const t=we.runWithException(e);return this.applications.find((e=>e.name===t))}getInstances(){return this.instances.slice()}toApi(){return{myInstance:this.me,inMemory:{import:this.import.bind(this),remove:this.remove.bind(this),export:this.export.bind(this),clear:this.clear.bind(this)},application:this.getApplication.bind(this),applications:this.getApplications.bind(this),instances:this.getInstances.bind(this),onAppAdded:this.onAppAdded.bind(this),onAppChanged:this.onAppChanged.bind(this),onAppRemoved:this.onAppRemoved.bind(this),onInstanceStarted:this.onInstanceStarted.bind(this),onInstanceStopped:this.onInstanceStopped.bind(this)}}addOperationsExecutors(){br.appDirectoryStateChange.execute=this.handleAppDirectoryStateChange.bind(this),br.instanceStarted.execute=this.handleInstanceStartedMessage.bind(this),br.instanceStopped.execute=this.handleInstanceStoppedMessage.bind(this)}async handleAppDirectoryStateChange(e){e.appsAdded.forEach(this.handleApplicationAddedMessage.bind(this)),e.appsChanged.forEach(this.handleApplicationChangedMessage.bind(this)),e.appsRemoved.forEach(this.handleApplicationRemovedMessage.bind(this))}onAppAdded(e){if("function"!=typeof e)throw new Error("onAppAdded requires a single argument of type function");return this.registry.add("application-added",e,this.applications)}onAppRemoved(e){if("function"!=typeof e)throw new Error("onAppRemoved requires a single argument of type function");return this.registry.add("application-removed",e)}onAppChanged(e){if("function"!=typeof e)throw new Error("onAppChanged requires a single argument of type function");return this.registry.add("application-changed",e)}async handleApplicationAddedMessage(e){if(this.applications.some((t=>t.name===e.name)))return;const t=await this.ioc.buildApplication(e,[]),n=this.instances.filter((e=>e.application.name===t.name));t.instances.push(...n),this.applications.push(t),this.registry.execute("application-added",t)}async handleApplicationRemovedMessage(e){const t=this.applications.findIndex((t=>t.name===e.name));if(t<0)return;const n=this.applications[t];this.applications.splice(t,1),this.registry.execute("application-removed",n)}async handleApplicationChangedMessage(e){const t=this.applications.find((t=>t.name===e.name));if(!t)return this.handleApplicationAddedMessage(e);t.title=e.title,t.version=e.version,t.icon=e.icon,t.caption=e.caption,t.userProperties=e.userProperties,this.registry.execute("application-changed",t)}async handleInstanceStartedMessage(e){if(this.instances.some((t=>t.id===e.id)))return;const t=this.applications.find((t=>t.name===e.applicationName));if(!t)throw new Error(`Cannot add instance: ${e.id}, because there is no application definition associated with it`);const n=this.ioc.buildInstance(e,t);this.instances.push(n),t.instances.push(n),this.registry.execute("instance-started",n)}async handleInstanceStoppedMessage(e){const t=this.instances.find((t=>t.id===e.id));if(t){const t=this.instances.findIndex((t=>t.id===e.id));this.instances.splice(t,1)}const n=this.applications.find((t=>t.instances.some((t=>t.id===e.id))));if(n){const t=n.instances.findIndex((t=>t.id===e.id));n.instances.splice(t,1)}t&&this.registry.execute("instance-stopped",t)}async import(e,t="replace"){if(At.runWithException(t),!Array.isArray(e))throw new Error("Import must be called with an array of definitions");if(e.length>1e4)throw new Error("Cannot import more than 10000 app definitions in Glue42 Core.");const n=e.reduce(((e,t)=>{const n=Je.run(t);return n.ok?e.valid.push(t):e.invalid.push({app:t?.name,error:JSON.stringify(n.error)}),e}),{valid:[],invalid:[]}),r=this.baseApplicationsTimeoutMS+this.appImportTimeoutMS*n.valid.length;return await this.bridge.send("appManager",br.import,{definitions:n.valid,mode:t},{methodResponseTimeoutMs:r}),{imported:n.valid.map((e=>e.name)),errors:n.invalid}}async remove(e){we.runWithException(e),await this.bridge.send("appManager",br.remove,{name:e},{methodResponseTimeoutMs:this.baseApplicationsTimeoutMS})}async clear(){await this.bridge.send("appManager",br.clear,void 0,{methodResponseTimeoutMs:this.baseApplicationsTimeoutMS})}async export(){return(await this.bridge.send("appManager",br.export,void 0,{methodResponseTimeoutMs:this.baseApplicationsTimeoutMS})).definitions}getApplications(){return this.applications.slice()}async joinInitialChannel(e){try{await this.channelsController.join(e)}catch(t){this.logger.warn(`Application instance ${this.me} was unable to join the ${e} channel. Reason: ${JSON.stringify(t)}`)}}async registerWithPlatform(){const e=await this.bridge.send("appManager",br.appHello,{windowId:this.publicWindowId},{methodResponseTimeoutMs:this.baseApplicationsTimeoutMS});this.logger.trace("the platform responded to the hello message with a full list of apps"),this.applications=await Promise.all(e.apps.map((e=>this.ioc.buildApplication(e,e.instances)))),this.instances=this.applications.reduce(((e,t)=>(e.push(...t.instances),e)),[]),this.me=this.findMyInstance(),this.logger.trace(`all applications were parsed and saved. I am ${this.me?"NOT a":"a"} valid instance`);const{channels:t}=this.sessionController.getWindowData(),n=t?t.currentName:e.initialChannelId;n&&await this.joinInitialChannel(n)}findMyInstance(){for(const e of this.applications){const t=e.instances.find((e=>e.id===this.publicWindowId));if(t)return t}}}class Cr{data;bridge;application;me;myCtxKey;constructor(e,t,n){this.data=e,this.bridge=t,this.application=n,this.myCtxKey=`___instance___${this.data.id}`}toApi(){const e=this.bridge.getInteropInstance(this.data.id),t={id:this.data.id,agm:e,application:this.application,stop:this.stop.bind(this),getContext:this.getContext.bind(this)};return this.me=Object.freeze(t),this.me}async getContext(){return this.bridge.contextLib.get(this.myCtxKey)}async stop(){await this.bridge.send("appManager",br.instanceStop,{id:this.data.id})}}class xr{data;instances;controller;me;constructor(e,t,n){this.data=e,this.instances=t,this.controller=n}toApi(){const e={name:this.data.name,title:this.data.title,version:this.data.version,icon:this.data.icon,caption:this.data.caption,userProperties:this.data.userProperties,instances:this.instances,start:this.start.bind(this),onInstanceStarted:this.onInstanceStarted.bind(this),onInstanceStopped:this.onInstanceStopped.bind(this)};return this.me=e,this.me}onInstanceStarted(e){if("function"!=typeof e)throw new Error("OnInstanceStarted requires a single argument of type function");return this.controller.onInstanceStarted((t=>{t.application.name===this.data.name&&e(t)}))}onInstanceStopped(e){if("function"!=typeof e)throw new Error("OnInstanceStarted requires a single argument of type function");return this.controller.onInstanceStopped((t=>{t.application.name===this.data.name&&e(t)}))}async start(e,t){const n=Xn.runWithException(e),r=Yn.runWithException(t);return this.controller.startApplication(this.data.name,n,r)}}const Ir={layoutAdded:{name:"layoutAdded",dataDecoder:gt},layoutChanged:{name:"layoutChanged",dataDecoder:gt},layoutRemoved:{name:"layoutRemoved",dataDecoder:gt},layoutRenamed:{name:"layoutRenamed",dataDecoder:gt},get:{name:"get",dataDecoder:wt,resultDecoder:Tt},getAll:{name:"getAll",dataDecoder:It,resultDecoder:_t},export:{name:"export",dataDecoder:It,resultDecoder:Et},import:{name:"import",dataDecoder:kt},remove:{name:"remove",dataDecoder:wt},rename:{name:"rename",dataDecoder:bt,resultDecoder:St},save:{name:"save",dataDecoder:vt,resultDecoder:Pt},restore:{name:"restore",dataDecoder:xt},clientSaveRequest:{name:"clientSaveRequest",dataDecoder:_n,resultDecoder:Pn},getGlobalPermissionState:{name:"getGlobalPermissionState",resultDecoder:Tn},requestGlobalPermission:{name:"requestGlobalPermission",resultDecoder:Fn},checkGlobalActivated:{name:"checkGlobalActivated",resultDecoder:Fn},getDefaultGlobal:{name:"getDefaultGlobal",resultDecoder:Tt},setDefaultGlobal:{name:"setDefaultGlobal",dataDecoder:Ft},clearDefaultGlobal:{name:"clearDefaultGlobal"},updateMetadata:{name:"updateMetadata",dataDecoder:Ct}};const Er={raiseNotification:{name:"raiseNotification",dataDecoder:vn,resultDecoder:bn},requestPermission:{name:"requestPermission",resultDecoder:Sn},notificationShow:{name:"notificationShow",dataDecoder:xn},notificationClick:{name:"notificationClick",dataDecoder:xn},getPermission:{name:"getPermission",resultDecoder:Cn},list:{name:"list",resultDecoder:Wn},notificationRaised:{name:"notificationRaised",dataDecoder:Ln},notificationClosed:{name:"notificationClosed",dataDecoder:Hn},click:{name:"click"},clear:{name:"clear"},clearAll:{name:"clearAll"},clearOld:{name:"clearOld"},configure:{name:"configure",dataDecoder:An},getConfiguration:{name:"getConfiguration",resultDecoder:kn},configurationChanged:{name:"configurationChanged",resultDecoder:kn},setState:{name:"setState",dataDecoder:ln},activeCountChange:{name:"activeCountChange",resultDecoder:on},stateChange:{name:"stateChange",resultDecoder:ln}};let Ar=(e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&n[e]];return t};const kr={getIntents:{name:"getIntents",resultDecoder:qt},findIntent:{name:"findIntent",dataDecoder:Wt,resultDecoder:qt},raiseIntent:{name:"raiseIntent",dataDecoder:Ht,resultDecoder:Jt},raise:{name:"raise",dataDecoder:Vt,resultDecoder:Jt},filterHandlers:{name:"filterHandlers",dataDecoder:Qt,resultDecoder:zt},getIntentsByHandler:{name:"getIntentsByHandler",dataDecoder:Ot,resultDecoder:en}},_r=2147483647;const Pr={name:"platformUnload"},Tr={name:"transportSwitchRequest"},Fr={name:"transportSwitchResponse"},Dr={name:"getCurrentTransport"},Or={name:"getCurrentTransportResponse"},Rr={name:"checkPreferredLogic"},Nr={name:"checkPreferredConnection"},jr={name:"checkPreferredLogicResponse"},$r={name:"checkPreferredConnectionResponse"},Mr="web-platform",qr="latest_fdc3_type",Br={addChannel:{name:"addChannel",dataDecoder:un},removeChannel:{name:"removeChannel",dataDecoder:hn},getMyChannel:{name:"getMyChannel",resultDecoder:Jn},getWindowIdsOnChannel:{name:"getWindowIdsOnChannel",dataDecoder:Un,resultDecoder:Gn},getWindowIdsWithChannels:{name:"getWindowIdsWithChannels",dataDecoder:zn,resultDecoder:Qn},joinChannel:{name:"joinChannel",dataDecoder:Zn},restrict:{name:"restrict",dataDecoder:gn},getRestrictions:{name:"getRestrictions",dataDecoder:mn,resultDecoder:fn},restrictAll:{name:"restrictAll",dataDecoder:wn}};const Lr={getEnvironment:{name:"getEnvironment",resultDecoder:Le},getBase:{name:"getBase",resultDecoder:Le},platformShutdown:{name:"platformShutdown"}};C(w("clientHello"));const Wr={clientHello:{name:"clientHello",resultDecoder:v({widget:v({inject:m()})})}};class Hr{windowId;logger;bridge;eventsDispatcher;channelsController;config;channels=[];unsubFuncs=[];contentCommands={widgetVisualizationPermission:{name:"widgetVisualizationPermission",handle:this.handleWidgetVisualizationPermission.bind(this)},changeChannel:{name:"changeChannel",handle:this.handleChangeChannel.bind(this)}};handlePlatformShutdown(){this.unsubFuncs.forEach((e=>e())),this.channels=[],this.unsubFuncs=[]}async start(e,t){this.logger=e.logger.subLogger("extension.controller.web"),this.windowId=t.publicWindowId,this.logger.trace("starting the extension web controller"),this.bridge=t.bridge,this.channelsController=t.channelsController,this.eventsDispatcher=t.eventsDispatcher;try{await this.registerWithPlatform()}catch(e){return}this.channels=await this.channelsController.list();const n=this.eventsDispatcher.onContentMessage(this.handleContentMessage.bind(this)),r=this.channelsController.onChanged((e=>{this.eventsDispatcher.sendContentMessage({command:"channelChange",newChannel:e})}));this.unsubFuncs.push(n),this.unsubFuncs.push(r)}async handleBridgeMessage(e){}handleContentMessage(e){if(!e||"string"!=typeof e.command)return;const t=this.contentCommands[e.command];t&&t.handle(e)}async registerWithPlatform(){this.logger.trace("registering with the platform"),this.config=await this.bridge.send("extension",Wr.clientHello,{windowId:this.windowId}),this.logger.trace("the platform responded to the hello message with a valid extension config")}async handleWidgetVisualizationPermission(){if(!this.config?.widget.inject)return this.eventsDispatcher.sendContentMessage({command:"permissionResponse",allowed:!1});const e=this.channels.find((e=>e.name===this.channelsController.my()));this.eventsDispatcher.sendContentMessage({command:"permissionResponse",allowed:!0,channels:this.channels,currentChannel:e})}async handleChangeChannel(e){"no-channel"!==e.name?await this.channelsController.join(e.name):await this.channelsController.leave()}}class Ur{config;glue;registry=hr();glue42EventName="Glue42";_handleMessage;constructor(e){this.config=e}events={notifyStarted:{name:"notifyStarted",handle:this.handleNotifyStarted.bind(this)},contentInc:{name:"contentInc",handle:this.handleContentInc.bind(this)},requestGlue:{name:"requestGlue",handle:this.handleRequestGlue.bind(this)}};stop(){window.removeEventListener(this.glue42EventName,this._handleMessage)}start(e){this.glue=e,this.wireCustomEventListener(),this.announceStarted()}sendContentMessage(e){this.send("contentOut","glue42core",e)}onContentMessage(e){return this.registry.add("content-inc",e)}wireCustomEventListener(){this._handleMessage=this.handleMessage.bind(this),window.addEventListener(this.glue42EventName,this._handleMessage)}handleMessage(e){const t=e.detail,n=t?.glue42??t?.glue42core;if(!n)return;const r=n.event,i=this.events[r];i&&i.handle(n.message)}announceStarted(){this.send("start","glue42")}handleRequestGlue(){this.config.exposeAPI?this.send("requestGlueResponse","glue42",{glue:this.glue}):this.send("requestGlueResponse","glue42",{error:"Will not give access to the underlying Glue API, because it was explicitly denied upon initialization."})}handleNotifyStarted(){this.announceStarted()}handleContentInc(e){this.registry.execute("content-inc",e)}send(e,t,n){const r={};r[t]={event:e,message:n};const i=new CustomEvent(this.glue42EventName,{detail:r});window.dispatchEvent(i)}}class Gr{bridge;interop;appManagerController;windowsController;logger;intentsResolverResponsePromises={};constructor(e,t,n,r,i){this.bridge=t,this.interop=n,this.appManagerController=r,this.windowsController=i,this.logger=this.configureLogger(e)}async raise(e,t){const{intentRequest:n,resolverConfig:r}=e,i=(await t(n.intent)).find((e=>e.name===n.intent));if(!i)throw new Error(`Intent with name ${n.intent} not found`);const{open:s,reason:o}=this.checkIfResolverShouldBeOpened(i,n,r);if(!s)return this.logger?.trace(`Intent Resolver UI won't be used. Reason: ${o}`),this.invokeRaiseIntent(n);return await this.raiseIntentWithResolverApp(e)}configureLogger(e){return e.subLogger("intents.legacy.helper.web")}async raiseIntentWithResolverApp(e){const{intentRequest:t,resolverConfig:n}=e;this.logger.trace(`Intents Resolver UI with app name ${n.appName} will be used`);const r=await this.registerResponseMethod();this.logger.trace(`Registered interop method ${r}`);const i=await this.openIntentResolverApplication(e,r);this.logger.trace(`Intents Resolver Instance with id ${i.id} opened`);const s=await this.handleInstanceResponse(i.id),o="app"===s.type?{app:s.applicationName}:{instance:s.instanceId};this.logger.trace(`Intent handler chosen by the user: ${JSON.stringify(o)}`);return await this.invokeRaiseIntent({...t,target:o})}async handleInstanceResponse(e){try{const{handler:t,intent:n}=await this.intentsResolverResponsePromises[e].promise;return this.logger?.trace(`Intent handler chosen for intent ${n}: ${JSON.stringify(t)}`),this.stopResolverInstance(e),t}catch(t){throw this.stopResolverInstance(e),new Error(t)}}invokeRaiseIntent(e){return this.bridge.send("intents",kr.raiseIntent,e)}async registerResponseMethod(){const e="T42.Intents.Resolver.Control."+Ar(10);return await this.interop.register(e,this.resolverResponseHandler.bind(this)),e}async openIntentResolverApplication(e,t){const{intentRequest:n,resolverConfig:r}=e,i=this.buildStartContext(n,t),s=await this.buildStartOptions();this.logger.trace(`Starting Intents Resolver UI with context: ${JSON.stringify(i)} and options: ${s}`);const o=await this.appManagerController.getApplication(r.appName).start(i,s);return this.logger.trace(`Intents Resolver instance with id ${o.id} opened`),this.subscribeOnInstanceStopped(o),this.createResponsePromise(n.intent,o.id,t,r.waitResponseTimeout),o}async cleanUpIntentResolverPromise(e){const t=this.intentsResolverResponsePromises[e];if(!t)return;this.interop.unregister(t.methodName).catch((e=>this.logger.warn(e))),delete this.intentsResolverResponsePromises[e]}buildStartContext(e,t){return{intent:e,callerId:this.interop.instance.instance,methodName:t}}async buildStartOptions(){const e=await this.getTargetBounds();return{top:(e.height-440)/2+e.top,left:(e.width-400)/2+e.left,width:400,height:440}}async getTargetBounds(){const e=await this.tryGetWindowBasedBounds()||await this.tryGetWorkspaceBasedBounds();if(e)return this.logger.trace(`Opening Intents Resolver UI with bounds: ${JSON.stringify(e)}`),e;const t={top:window.screen.availTop||0,left:window.screen.availLeft||0,width:window.screen.width,height:window.screen.height};return this.logger.trace(`Opening Intents Resolver UI relative to my screen bounds: ${JSON.stringify(t)}`),t}async tryGetWindowBasedBounds(){try{const e=await this.windowsController.my().getBounds();return this.logger.trace(`Opening the resolver UI relative to my window bounds: ${JSON.stringify(e)}`),e}catch(e){this.logger.trace(`Failure to get my window bounds: ${JSON.stringify(e)}`)}}async tryGetWorkspaceBasedBounds(){try{await this.bridge.send("workspaces",pr.operationCheck,{operation:"getWorkspaceWindowFrameBounds"});const e=(await this.bridge.send("workspaces",pr.getWorkspaceWindowFrameBounds,{itemId:this.windowsController.my().id})).bounds;return this.logger.trace(`Opening the resolver UI relative to my workspace frame window bounds: ${JSON.stringify(e)}`),e}catch(e){this.logger.trace(`Failure to get my workspace frame window bounds: ${JSON.stringify(e)}`)}}subscribeOnInstanceStopped(e){const{application:t}=e,n=t.onInstanceStopped((r=>{if(r.id!==e.id)return;const i=this.intentsResolverResponsePromises[r.id];if(!i)return n();i.reject(`Cannot resolve raised intent "${i.intent}" - User closed ${t.name} app without choosing an intent handler`),this.cleanUpIntentResolverPromise(r.id),n()}))}createResponsePromise(e,t,n,r){let i=()=>{},s=()=>{};const o=gr(((e,t)=>{i=e,s=t}),r,`Timeout of ${r}ms hit waiting for the user to choose a handler for intent ${e}`);this.intentsResolverResponsePromises[t]={intent:e,resolve:i,reject:s,promise:o,methodName:n}}resolverResponseHandler(e,t){const n=Rt.run(e),r=t.instance;if(n.ok)return this.logger.trace(`Intent Resolver instance with id ${r} send a valid response: ${JSON.stringify(n.result)}`),this.intentsResolverResponsePromises[r].resolve(n.result);this.logger.trace(`Intent Resolver instance with id ${r} sent an invalid response. Error: ${JSON.stringify(n.error)}`),this.intentsResolverResponsePromises[r].reject(n.error.message),this.stopResolverInstance(r)}stopResolverInstance(e){const t=this.appManagerController.getInstances().find((t=>t.id===e));t&&t.stop().catch((e=>this.logger.error(e)))}checkIfIntentHasMoreThanOneHandler(e,t){return"object"!=typeof t.target&&(t.handlers?t.handlers.length>1:e.handlers.length>1)}checkIfResolverShouldBeOpened(e,t,n){if(!n.enabled)return{open:!1,reason:"Intent Resolver is disabled. Raising intent to first found handler"};if(!this.appManagerController.getApplication(n.appName))return{open:!1,reason:`Application with name ${n.appName} not found`};return this.checkIfIntentHasMoreThanOneHandler(e,t)?{open:!0}:{open:!1,reason:"Raised intent has only one handler"}}}const Vr={getCurrent:{name:"getCurrent",resultDecoder:$n},list:{name:"list",resultDecoder:Mn},select:{name:"select",dataDecoder:qn}};const Jr={clear:{name:"clear",dataDecoder:rr},clearAll:{name:"clearAll"},get:{name:"get",dataDecoder:rr,resultDecoder:ir},getAll:{name:"getAll",resultDecoder:sr},set:{name:"set",dataDecoder:or},update:{name:"update",dataDecoder:or},prefsChanged:{name:"prefsChanged",dataDecoder:ir},prefsHello:{name:"prefsHello",resultDecoder:ar}};var Kr="3.3.1";var zr={STRING:1,NUMBER:2,TIMESTAMP:3,OBJECT:4};function Qr(e){return e.type===zr.TIMESTAMP?"timestamp":e.type===zr.NUMBER?"number":e.type===zr.STRING?"string":e.type===zr.OBJECT?"object":"unknown"}function Xr(e){return e.constructor===Date?"timestamp":"number"==typeof e?"number":"string"==typeof e?"string":"object"==typeof e?"object":"string"}function Yr(e){const t={},n=Qr(e);if("object"===n){const n=Object.keys(e.value).reduce(((t,n)=>{const r=Xr(e.value[n]);if("object"===r){const r=Zr(e.value[n]);t[n]={type:"object",description:"",context:{},composite:r}}else t[n]={type:r,description:"",context:{}};return t}),{});t.composite=n}return t.name=ei(e.path.join("/")+"/"+e.name),t.type=n,t.description=e.description,t.context={},t}function Zr(e){return Object.keys(e).reduce(((t,n)=>{const r=Xr(e[n]);return t[n]="object"===r?{type:"object",description:"",context:{},composite:Zr(e[n])}:{type:r,description:"",context:{}},t}),{})}function ei(e){return void 0!==e&&e.length>0&&"/"!==e[0]?"/"+e:e}function ti(e){return"timestamp"===Qr(e)?Date.now():ni(e.value)}function ni(e){return"object"!=typeof e?e:Object.keys(e).reduce(((t,n)=>{const r=e[n];return"object"==typeof r&&r.constructor!==Date?t[n]=ni(r):r.constructor===Date?t[n]=new Date(r).getTime():r.constructor===Boolean?t[n]=r.toString():t[n]=r,t}),{})}function ri(e){return e.reduce(((e,t)=>e.concat(Array.isArray(t)?ri(t):t)),[])}function ii(e){const t=ri(e.root.getAggregateState()),n=t.sort(((e,t)=>e.state?t.state?t.state-e.state:-1:1))[0];const r=function(e){let t="";return e.forEach(((e,n,r)=>{const i=e.path.join(".");n===r.length-1?t+=i+"."+e.name+": "+e.description:t+=i+"."+e.name+": "+e.description+","})),t.length>100?t.slice(0,100)+"...":t}(t);return{description:r,value:n.state}}var si=(e,t,n)=>{if(null===e||"object"!=typeof e)throw new Error("Missing definition");if(null===t||"object"!=typeof t)throw new Error("Missing parent");if(null===n||"object"!=typeof n)throw new Error("Missing transport")};let oi=class{definition;system;transport;value;type;path=[];name;description;get repo(){return this.system?.repo}get id(){return`${this.system.path}/${name}`}constructor(e,t,n,r,i){this.definition=e,this.system=t,this.transport=n,this.value=r,this.type=i,si(e,t,n),this.path=t.path.slice(0),this.path.push(t.name),this.name=e.name,this.description=e.description,n.createMetric(this)}update(e){return this.value=e,this.transport.updateMetric(this)}},ai=class extends oi{constructor(e,t,n,r){super(e,t,n,r,zr.NUMBER)}incrementBy(e){this.update(this.value+e)}increment(){this.incrementBy(1)}decrement(){this.incrementBy(-1)}decrementBy(e){this.incrementBy(-1*e)}},ci=class extends oi{constructor(e,t,n,r){super(e,t,n,r,zr.OBJECT)}update(e){return this.mergeValues(e),this.transport.updateMetric(this)}mergeValues(e){return Object.keys(this.value).forEach((t=>{void 0!==e[t]&&(this.value[t]=e[t])}))}},li=class extends oi{constructor(e,t,n,r){super(e,t,n,r,zr.STRING)}},ui=class extends oi{constructor(e,t,n,r){super(e,t,n,r,zr.TIMESTAMP)}now(){this.update(new Date)}};function hi(e,t,n,r,i){if(!t)throw new Error("Repository is required");if(!n)throw new Error("Transport is required");const s=n,o=e,a=i||"",c=t,l=r,u=function e(t){if(!t||!t.parent)return[];const n=e(t.parent);return n.push(t.name),n}(r);let h={};const d=(g="/",((p=u)&&p.length>0?p.join(g):"")+e);var p,g;const f=t.root,m=[],y=[];function w(e,t,n,r){let i={name:""};i="string"==typeof e?{name:e}:e;const s=y.filter((e=>e.name===i.name));if(s.length>0){const e=s[0];if(e.type!==t)throw new Error(`A metric named ${i.name} is already defined with different type.`);return void 0!==n&&e.update(n).catch((()=>{})),e}const o=r(i);return y.push(o),o}const v={get name(){return o},get description(){return a},get repo(){return c},get parent(){return l},path:u,id:d,root:f,get subSystems(){return m},get metrics(){return y},subSystem:function(e,t){if(!e||0===e.length)throw new Error("name is required");const n=m.filter((t=>t.name===e));if(n.length>0)return n[0];const r=hi(e,c,s,v,t);return m.push(r),r},getState:()=>h,setState:function(e,t){h={state:e,description:t},s.updateSystem(v,h)},stringMetric:function(e,t){return w(e,zr.STRING,t,(e=>new li(e,v,s,t)))},timestampMetric:function(e,t){return w(e,zr.TIMESTAMP,t,(e=>new ui(e,v,s,t)))},objectMetric:function(e,t){return w(e,zr.OBJECT,t,(e=>new ci(e,v,s,t)))},numberMetric:function(e,t){return w(e,zr.NUMBER,t,(e=>new ai(e,v,s,t)))},getAggregateState:function(){const e=[];return Object.keys(h).length>0&&e.push({name:o,path:u,state:h.state,description:h.description}),m.forEach((t=>{const n=t.getAggregateState();n.length>0&&e.push(...n)})),e}};return s.createSystem(v),v}var di=e=>{let t;t=e.connection&&"object"==typeof e.connection?function(e,t){if(!e||"object"!=typeof e)throw new Error("Connection is required parameter");let n,r;const i=e=>{s(e.root)},s=e=>{o(e),e.metrics.forEach((e=>{a(e)})),e.subSystems.forEach((e=>{s(e)}))},o=async e=>{if(void 0===e.parent)return;await n;const t={type:"define",metrics:[{name:ei(e.path.join("/")+"/"+e.name+"/State"),type:"object",composite:{Description:{type:"string",description:""},Value:{type:"number",description:""}},description:"System state",context:{}}]};r.send(t)},a=async e=>{const t=l(e);await n;const i={type:"define",metrics:[Yr(t)]};r.send(i),void 0!==t.value&&c(t)},c=e=>{if(u()){const t=ti(e),n={type:"publish",values:[{name:ei(e.path.join("/")+"/"+e.name),value:t,timestamp:Date.now()}]};return r.sendFireAndForget(n)}return Promise.resolve()},l=e=>{const t={...e};return"object"==typeof e.value&&null!==e.value&&(t.value={...e.value}),t},u=()=>{try{return(t.canUpdateMetric??(()=>!0))()}catch{return!0}};return{init:s=>{let o;n=new Promise((e=>{o=e})),r=e.domain("metrics"),r.onJoined((e=>{!e&&o&&(o(),o=void 0);const t={type:"define",metrics:[{name:"/State",type:"object",composite:{Description:{type:"string",description:""},Value:{type:"number",description:""}},description:"System state",context:{}}]};r.send(t),e&&i(s)})),r.join({system:t.system,service:t.service,instance:t.instance})},createSystem:o,updateSystem:async(t,i)=>{await n;const s={type:"publish",values:[{name:ei(t.path.join("/")+"/"+t.name+"/State"),value:{Description:i.description,Value:i.state},timestamp:Date.now()}]};r.send(s);const o=ii(t),a={type:"publish",peer_id:e.peerId,values:[{name:"/State",value:{Description:o.description,Value:o.value},timestamp:Date.now()}]};r.send(a)},createMetric:a,updateMetric:async e=>{const t=l(e);await n,c(t)}}}(e.connection,e):new class{init(e){}createSystem(e){return Promise.resolve()}updateSystem(e,t){return Promise.resolve()}createMetric(e){return Promise.resolve()}updateMetric(e){return Promise.resolve()}};const n=new class{root;constructor(e,t){t.init(this),this.root=hi("",this,t),this.addSystemMetrics(this.root,e.clickStream||void 0===e.clickStream)}addSystemMetrics(e,t){if("undefined"!=typeof navigator&&e.stringMetric("UserAgent",navigator.userAgent),t&&"undefined"!=typeof document){const t=e.subSystem("ClickStream"),n=e=>{if(!e.target)return;const n=e.target,r=n?n.getAttribute("class")??"":"";t.objectMetric("LastBrowserEvent",{type:"click",timestamp:new Date,target:{className:r,id:n.id,type:"<"+n.tagName.toLowerCase()+">",href:n.href||""}})};t.objectMetric("Page",{title:document.title,page:window.location.href}),document.addEventListener?document.addEventListener("click",n):document.attachEvent("onclick",n)}e.stringMetric("StartTime",(new Date).toString());const n=e.stringMetric("StartURL",""),r=e.stringMetric("AppName","");if("undefined"!=typeof window){if(void 0!==window.location){const e=window.location.href;n.update(e)}void 0!==window.glue42gd&&r.update(window.glue42gd.appName)}}}(e,t);let r=n.root;e.disableAutoAppSystem||(r=r.subSystem("App"));const i=function(e){const t=e.subSystem("reporting"),n={name:"features"};let r;const i=(e,i,s)=>{if(void 0===e||""===e)throw new Error("name is mandatory");if(void 0===i||""===i)throw new Error("action is mandatory");if(void 0===s||""===s)throw new Error("payload is mandatory");r?r.update({name:e,action:i,payload:s}):r=t.objectMetric(n,{name:e,action:i,payload:s})};return e.featureMetric=i,e}(r);return function(e,t){if("undefined"==typeof window)return;const n=window?.glue42gd?.metrics?.pagePerformanceMetrics;n&&(t=n);t?.enabled&&new class{api;lastCount=0;initialPublishTimeout=1e4;publishInterval=6e4;system;constructor(e,t,n){this.api=e,this.initialPublishTimeout=t??this.initialPublishTimeout,this.publishInterval=n??this.publishInterval,this.scheduleCollection(),this.system=this.api.subSystem("performance","Performance data published by the web application")}scheduleCollection(){setTimeout((()=>{this.collect(),setInterval((()=>{this.collect()}),this.publishInterval)}),this.initialPublishTimeout)}collect(){try{this.collectMemory(),this.collectEntries()}catch{}}collectMemory(){const e=window.performance.memory;this.system.stringMetric("memory",JSON.stringify({totalJSHeapSize:e.totalJSHeapSize,usedJSHeapSize:e.usedJSHeapSize}))}collectEntries(){const e=window.performance.getEntries();if(e.length<=this.lastCount)return;this.lastCount=e.length;const t=e.map((e=>e.toJSON()));this.system.stringMetric("entries",JSON.stringify(t))}}(e,t.initialPublishTimeout,t.publishInterval)}(i,e.pagePerformanceMetrics),i};var pi="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{};function gi(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function fi(e){if(e&&e.errorHandling&&"function"!=typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"==typeof e.errorHandling&&e.errorHandling,n={};function r(n,r){var i=n instanceof Error?n:new Error(n);if(t)t(i);else{var s='[ERROR] callback-registry: User callback for key "'+r+'" failed: '+i.stack;if(e)switch(e.errorHandling){case"log":return console.error(s);case"silent":return;case"throw":throw new Error(s)}console.error(s)}}return{add:function(e,t,i){var s=n[e];return s||(s=[],n[e]=s),s.push(t),i&&setTimeout((function(){i.forEach((function(i){var s;if(null===(s=n[e])||void 0===s?void 0:s.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(t){r(t,e)}}))}),0),function(){var r=n[e];r&&(0===(r=r.reduce((function(e,n,r){return n===t&&e.length===r||e.push(n),e}),[])).length?delete n[e]:n[e]=r)}},execute:function(e){for(var t=[],i=1;isetTimeout(t,e)))}resolve;reject;promise;rejected=!1;resolved=!1;get ended(){return this.rejected||this.resolved}constructor(){this.promise=new Promise(((e,t)=>{this.resolve=t=>{this.resolved=!0,e(t)},this.reject=e=>{this.rejected=!0,t(e)}}))}};const vi={};function bi(e){const t=vi[e];if(t)return t;const n=[];function r(){return(new Date).getTime()}const i=r();let s,o;function a(e,t){const i=t??r();let s=0;n.length>0&&(s=i-n[n.length-1].time),n.push({name:e,time:i,diff:s})}a("start",i);const c={get startTime(){return i},get endTime(){return s},get period(){return o},stop:function(){return s=r(),a("end",s),o=s-i,o},mark:a,marks:n};return vi[e]=c,c}const Si=yi.isNode()?require("ws"):window.WebSocket;let Ci=class{ws;logger;settings;startupTimer=bi("connection");_running=!0;_registry=mi();wsRequests=[];constructor(e,t){if(this.settings=e,this.logger=t,!this.settings.ws)throw new Error("ws is missing")}onMessage(e){return this._registry.add("onMessage",e)}send(e,t){return new Promise(((t,n)=>{this.waitForSocketConnection((()=>{try{this.ws?.send(e),t()}catch(e){n(e)}}),n)}))}open(){return this.logger.info("opening ws..."),this._running=!0,new Promise(((e,t)=>{this.waitForSocketConnection(e,t)}))}close(){return this._running=!1,this.ws&&this.ws.close(),Promise.resolve()}onConnectedChanged(e){return this._registry.add("onConnectedChanged",e)}name(){return this.settings.ws}reconnect(){this.ws?.close();const e=new wi;return this.waitForSocketConnection((()=>{e.resolve()})),e.promise}waitForSocketConnection(e,t){t=t??(()=>{}),this._running?1!==this.ws?.readyState?(this.wsRequests.push({callback:e,failed:t}),this.wsRequests.length>1||this.openSocket()):e():t(`wait for socket on ${this.settings.ws} failed - socket closed by user`)}async openSocket(e,t){if(this.logger.info(`opening ws to ${this.settings.ws}, retryInterval: ${e}, retriesLeft: ${t}...`),this.startupTimer.mark("opening-socket"),void 0===e&&(e=this.settings.reconnectInterval),void 0===t&&(t=this.settings.reconnectAttempts),void 0!==t){if(0===t)return void this.notifyForSocketState(`wait for socket on ${this.settings.ws} failed - no more retries left`);this.logger.debug(`will retry ${t} more times (every ${e} ms)`)}try{await this.initiateSocket(),this.startupTimer.mark("socket-initiated"),this.notifyForSocketState()}catch{setTimeout((()=>{const n=void 0===t?void 0:t-1;this.openSocket(e,n)}),e)}}initiateSocket(){const e=new wi;return this.logger.debug(`initiating ws to ${this.settings.ws}...`),this.ws=new Si(this.settings.ws??""),this.ws.onerror=t=>{let n="";try{n=JSON.stringify(t)}catch(e){const r=new WeakSet,i=(e,t)=>{if("object"==typeof t&&null!==t){if(r.has(t))return;r.add(t)}return t};n=JSON.stringify(t,i)}this.logger.info(`ws error - reason: ${n}`),e.reject("error"),this.notifyStatusChanged(!1,n)},this.ws.onclose=t=>{this.logger.info(`ws closed - code: ${t?.code} reason: ${t?.reason}`),e.reject("closed"),this.notifyStatusChanged(!1)},this.ws.onopen=()=>{this.startupTimer.mark("ws-opened"),this.logger.info(`ws opened ${this.settings.identity?.application}`),e.resolve(),this.notifyStatusChanged(!0)},this.ws.onmessage=e=>{this._registry.execute("onMessage",e.data)},e.promise}notifyForSocketState(e){this.wsRequests.forEach((t=>{e?t.failed&&t.failed(e):t.callback()})),this.wsRequests=[]}notifyStatusChanged(e,t){this._registry.execute("onConnectedChanged",e,t)}};let xi=(e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&n[e]];return t};const Ii=(e,t,n)=>new Promise(((r,i)=>{const s=setTimeout((()=>{i(n||`Promise timeout hit: ${t}`)}),t);new Promise(e).then((e=>{clearTimeout(s),r(e)})).catch((e=>{clearTimeout(s),i(e)}))}));function Ei(e,t,n,r,i){null==e&&(e="global"),r=r??["success"],i=i??["error"];let s,o="global"===e,a=!1,c=!1;const l=mi();t.disconnected((function(){c=!1,n.debug("connection is down"),o=!1,a=!0,l.execute("onLeft",{disconnected:!0})})),t.loggedIn((function(){c=!0,a&&(n.debug("connection is now up - trying to reconnect..."),h(s))})),t.on("success",(e=>g(e))),t.on("error",(e=>p(e))),t.on("result",(e=>g(e))),r&&r.forEach((e=>{t.on(e,(e=>g(e)))})),i&&i.forEach((e=>{t.on(e,(e=>p(e)))}));const u={};function h(t){return s=t,new Promise(((r,i)=>{if(o)return void r({});let s;if("global"===e)s=c?Promise.resolve({}):Promise.reject("not connected to gateway");else{n.debug(`joining domain ${e}`);s=y({type:"join",destination:e,domain:"global",options:t})}s.then((()=>{!function(){n.debug("did join "+e),o=!0;const t=a;a=!1,l.execute("onJoined",t)}(),r({})})).catch((t=>{n.debug("error joining "+e+" domain: "+JSON.stringify(t)),i(t)}))}))}function d(e){return o&&e(!1),l.add("onJoined",e)}function p(t){if(e!==t.domain)return;const n=t.request_id;if(!n)return;const r=u[n];r&&r.error(t)}function g(t){if(t.domain!==e)return;const n=t.request_id;if(!n)return;const r=u[n];r&&r.success(t)}function f(){return xi(10)}let m=[];function y(r,i,s){if(r.type&&-1===["hello","join"].indexOf(r.type)&&!o){console.warn(`trying to send a message (${r.domain} ${r.type}) but not connected, will queue`);const e=new wi;if(m.push({msg:r,tag:i,options:s,pw:e}),1===m.length){const e=d((()=>{n.info(`joined - will now send queued messages (${m.length} -> [${m.map((e=>e.msg.type))}])`),m.forEach((e=>{y(e.msg,e.tag,e.options).then((t=>e.pw.resolve(t))).catch((t=>e.pw.reject(t)))})),m=[],e()}))}return e.promise}s=s??{},r.request_id=r.request_id??f(),r.domain=r.domain??e,s.skipPeerId||(r.peer_id=t.peerId);const a=r.request_id;return new Promise(((e,o)=>{u[a]={success:t=>{delete u[a],t._tag=i,e(t)},error:e=>{n.warn(`Gateway error - ${JSON.stringify(e)}`),delete u[a],e._tag=i,o(e)}},t.send(r,s).catch((e=>{u[a].error({err:e})}))}))}return{join:h,leave:function(){return"global"===e?Promise.resolve():(n.debug("stopping session "+e+"..."),a=!1,y({type:"leave",destination:e,domain:"global"}).then((()=>{o=!1,l.execute("onLeft")})).catch((()=>{o=!1,l.execute("onLeft")})))},onJoined:d,onLeft:function(e){return o||e(),l.add("onLeft",e)},send:y,sendFireAndForget:function(n){return n.request_id=n.request_id?n.request_id:f(),n.domain=n.domain??e,n.peer_id=t.peerId,t.send(n)},on:(r,i)=>{t.on(r,(t=>{if(t.domain===e)try{i(t)}catch(e){n.error(`Callback failed: ${e} \n ${e.stack} \n msg was: ${JSON.stringify(t)}`,e)}}))},loggedIn:e=>t.loggedIn(e),connected:e=>t.connected(e),disconnected:e=>t.disconnected(e),get peerId(){return t.peerId},get domain(){return e}}}const Ai=["trace","debug","info","warn","error","off"];let ki=class e{name;parent;static Interop;static InteropMethodName="T42.AppLogger.Log";static Instance;path;subLoggers=[];_consoleLevel;_publishLevel;loggerFullName;includeTimeAndLevel;logFn=console;customLogFn=!1;constructor(e,t,n){this.name=e,this.parent=t,this.name=e,this.path=t?`${t.path}.${e}`:e,this.loggerFullName=`[${this.path}]`,this.includeTimeAndLevel=!n,n&&(this.logFn=n,this.customLogFn=!0)}subLogger(t){const n=this.subLoggers.filter((e=>e.name===t))[0];if(void 0!==n)return n;Object.keys(this).forEach((e=>{if(e===t)throw new Error("This sub logger name is not allowed.")}));const r=new e(t,this,this.customLogFn?this.logFn:void 0);return this.subLoggers.push(r),r}publishLevel(e){return e&&(this._publishLevel=e),this._publishLevel||this.parent?.publishLevel()}consoleLevel(e){return e&&(this._consoleLevel=e),this._consoleLevel||this.parent?.consoleLevel()}log(e,t,n){this.publishMessage(t||"info",e,n)}trace(e){this.log(e,"trace")}debug(e){this.log(e,"debug")}info(e){this.log(e,"info")}warn(e){this.log(e,"warn")}error(e,t){this.log(e,"error")}canPublish(e,t){return Ai.indexOf(e)>=Ai.indexOf(t||this.consoleLevel()||"trace")}publishMessage(t,n,r){const i=this.loggerFullName;if("error"===t&&!r){const e=new Error;e.stack&&(n=n+"\n"+e.stack.split("\n").slice(3).join("\n"))}if(this.canPublish(t,this.publishLevel())){const r=e.Interop;if(r)try{r.methods({name:e.InteropMethodName}).length>0&&r.invoke(e.InteropMethodName,{msg:`${n}`,logger:i,level:t})}catch{}}if(this.canPublish(t)){let e="";if(this.includeTimeAndLevel){const n=new Date;e=`[${`${n.getHours()}:${n.getMinutes()}:${n.getSeconds()}:${n.getMilliseconds()}`}] [${t}] `}const s=`${e}${i}: ${n}`;switch(t){case"trace":this.logFn.debug(s);break;case"debug":this.logFn.debug?this.logFn.debug(s):this.logFn.log(s);break;case"info":this.logFn.info(s);break;case"warn":this.logFn.warn(s);break;case"error":this.logFn.error(s,r)}}}};const _i="create-context",Pi="created",Ti="destroyed",Fi="context-created",Di="context-added",Oi="subscribe-context",Ri="subscribed-context",Ni="unsubscribe-context",ji="destroy-context",$i="context-destroyed",Mi="update-context",qi="context-updated",Bi="joined",Li={get name(){return"context"},get types(){return[_i,Pi,Ti,Fi,Di,Oi,Ri,Ni,ji,$i,Mi,qi,Bi]}};var Wi="6.3.1";let Hi=class{name;contextId;context;isAnnounced;joinedActivity;updateCallbacks={};activityId;sentExplicitSubscription;hasReceivedSnapshot;constructor(e,t,n,r){this.contextId=e,this.name=t,this.isAnnounced=n,this.activityId=r,this.context={}}hasCallbacks(){return Object.keys(this.updateCallbacks).length>0}getState(){return this.isAnnounced&&this.hasCallbacks()?3:this.isAnnounced?2:this.hasCallbacks()?1:0}};var Ui={exports:{}};!function(e,t){var n="__lodash_hash_undefined__",r=9007199254740991,i="[object Arguments]",s="[object Boolean]",o="[object Date]",a="[object Function]",c="[object GeneratorFunction]",l="[object Map]",u="[object Number]",h="[object Object]",d="[object Promise]",p="[object RegExp]",g="[object Set]",f="[object String]",m="[object Symbol]",y="[object WeakMap]",w="[object ArrayBuffer]",v="[object DataView]",b="[object Float32Array]",S="[object Float64Array]",C="[object Int8Array]",x="[object Int16Array]",I="[object Int32Array]",E="[object Uint8Array]",A="[object Uint8ClampedArray]",k="[object Uint16Array]",_="[object Uint32Array]",P=/\w*$/,T=/^\[object .+?Constructor\]$/,F=/^(?:0|[1-9]\d*)$/,D={};D[i]=D["[object Array]"]=D[w]=D[v]=D[s]=D[o]=D[b]=D[S]=D[C]=D[x]=D[I]=D[l]=D[u]=D[h]=D[p]=D[g]=D[f]=D[m]=D[E]=D[A]=D[k]=D[_]=!0,D["[object Error]"]=D[a]=D[y]=!1;var O="object"==typeof pi&&pi&&pi.Object===Object&&pi,R="object"==typeof self&&self&&self.Object===Object&&self,N=O||R||Function("return this")(),j=t&&!t.nodeType&&t,$=j&&e&&!e.nodeType&&e,M=$&&$.exports===j;function q(e,t){return e.set(t[0],t[1]),e}function B(e,t){return e.add(t),e}function L(e,t,n,r){var i=-1,s=e?e.length:0;for(r&&s&&(n=e[++i]);++i-1},Ae.prototype.set=function(e,t){var n=this.__data__,r=Fe(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},ke.prototype.clear=function(){this.__data__={hash:new Ee,map:new(pe||Ae),string:new Ee}},ke.prototype.delete=function(e){return je(this,e).delete(e)},ke.prototype.get=function(e){return je(this,e).get(e)},ke.prototype.has=function(e){return je(this,e).has(e)},ke.prototype.set=function(e,t){return je(this,e).set(e,t),this},_e.prototype.clear=function(){this.__data__=new Ae},_e.prototype.delete=function(e){return this.__data__.delete(e)},_e.prototype.get=function(e){return this.__data__.get(e)},_e.prototype.has=function(e){return this.__data__.has(e)},_e.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Ae){var r=n.__data__;if(!pe||r.length<199)return r.push([e,t]),this;n=this.__data__=new ke(r)}return n.set(e,t),this};var Me=le?U(le,Object):function(){return[]},qe=function(e){return ee.call(e)};function Be(e,t){return!!(t=null==t?r:t)&&("number"==typeof e||F.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=r}(e.length)&&!Je(e)}var Ve=ue||function(){return!1};function Je(e){var t=Ke(e)?ee.call(e):"";return t==a||t==c}function Ke(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function ze(e){return Ge(e)?Pe(e):function(e){if(!Le(e))return he(e);var t=[];for(var n in Object(e))Z.call(e,n)&&"constructor"!=n&&t.push(n);return t}(e)}e.exports=function(e){return De(e,!0,!0)}}(Ui,Ui.exports);var Gi=gi(Ui.exports);function Vi(e,t,n){try{if(n?.canPublish("trace")&&n?.trace(`applying context delta ${JSON.stringify(t)} on context ${JSON.stringify(e)}`),!t)return e;if(t.reset)return e={...t.reset};if(e=Ji(e,void 0),t.commands){for(const n of t.commands)"remove"===n.type?Yi(e,n.path):"set"===n.type&&Qi(e,n.value,n.path);return e}const r=t.added,i=t.updated,s=t.removed;return r&&Object.keys(r).forEach((t=>{e[t]=r[t]})),i&&Object.keys(i).forEach((t=>{Ki(t,e,i)})),s&&s.forEach((t=>{delete e[t]})),e}catch(r){return n?.error(`error applying context delta ${JSON.stringify(t)} on context ${JSON.stringify(e)}`,r),e}}function Ji(e,t){return Gi(e)}const Ki=(e,t,n)=>{const r=n[e];if(void 0===r)return t;const i=t[e];return i&&r?"string"==typeof i||"number"==typeof i||"boolean"==typeof i||"string"==typeof r||"number"==typeof r||"boolean"==typeof r||Array.isArray(i)||Array.isArray(r)?(t[e]=r,t):(t[e]=Object.assign({},i,r),t):(t[e]=r,t)};function zi(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;if(e.constructor!==t.constructor)return!1;for(const n in e)if(e.hasOwnProperty(n)){if(!t.hasOwnProperty(n))return!1;if(e[n]!==t[n]){if("object"!=typeof e[n])return!1;if(!zi(e[n],t[n]))return!1}}for(const n in t)if(t.hasOwnProperty(n)&&!e.hasOwnProperty(n))return!1;return!0}function Qi(e,t,n){const r=n.split(".");let i;for(i=0;i"object"==typeof t[n]?Xi(e?.[n]||{},t[n]||{}):t[n]===e?.[n]))}function Yi(e,t){const n=t.split(".");let r;for(r=0;r{}:"function"!=typeof n&&(n=()=>{}),e.then(t,n))}function es(e=0,t,n){let r;const i=()=>{r&&clearTimeout(r)};return t.then((()=>{i()})).catch((()=>{i()})),new Promise(((t,i)=>{r=setTimeout((()=>i(n)),e)}))}var ts;!function(e){e[e.Success=0]="Success",e[e.Error=1]="Error"}(ts||(ts={}));let ns=class{protocol;repoMethod;subscription;constructor(e,t,n){this.protocol=e,this.repoMethod=t,this.subscription=n}get stream(){if(!this.repoMethod.stream)throw new Error("no stream");return this.repoMethod.stream}get arguments(){return this.subscription.arguments||{}}get branchKey(){return this.subscription.branchKey}get instance(){if(!this.subscription.instance)throw new Error("no instance");return this.subscription.instance}close(){this.protocol.server.closeSingleSubscription(this.repoMethod,this.subscription)}push(e){this.protocol.server.pushDataToSingle(this.repoMethod,this.subscription,e)}},rs=class{key;protocol;repoMethod;constructor(e,t,n){this.key=e,this.protocol=t,this.repoMethod=n}subscriptions(){return this.protocol.server.getSubscriptionList(this.repoMethod,this.key).map((e=>new ns(this.protocol,this.repoMethod,e)))}close(){this.protocol.server.closeAllSubscriptions(this.repoMethod,this.key)}push(e){this.protocol.server.pushData(this.repoMethod,e,[this.key])}},is=class{wrapped={};constructor(e,t,n){this.wrapped.getMethods=function(){return e.methodsForInstance(this)},this.wrapped.getStreams=function(){return e.methodsForInstance(this).filter((e=>e.supportsStreaming))},t&&this.refreshWrappedObject(t),n&&(n.loggedIn((()=>{this.refresh(n)})),this.refresh(n))}unwrap(){return this.wrapped}refresh(e){if(!e)return;const t=e?.resolvedIdentity,n=Object.assign({},t??{},{peerId:e?.peerId});this.refreshWrappedObject(n)}refreshWrappedObject(e){Object.keys(e).forEach((t=>{this.wrapped[t]=e[t]})),this.wrapped.user=e.user,this.wrapped.instance=e.instance,this.wrapped.application=e.application??xi(10),this.wrapped.applicationName=e.applicationName,this.wrapped.pid=e.pid??e.process??Math.floor(1e10*Math.random()),this.wrapped.machine=e.machine,this.wrapped.environment=e.environment,this.wrapped.region=e.region,this.wrapped.windowId=e.windowId,this.wrapped.isLocal=e.isLocal??!0,this.wrapped.api=e.api,this.wrapped.service=e.service,this.wrapped.peerId=e.peerId}};const ss=e=>({...e,flags:e.flags.metadata||{}});const os="onSubscriptionRequest",as="onSubscriptionAdded",cs="onSubscriptionRemoved";const ls="awaitingAccept",us="subscribed",hs="Subscription failed.",ds="ClientInitiated";function ps(e,t,n,r,i,s){const o=i.logger.subLogger("gw3-protocol");let a;const c=new Promise((e=>{a=e})),l=t.domain("agm",["subscribed"]),u=new class{session;clientRepository;serverRepository;logger;callbacks=mi();streaming;constructor(e,t,n,r){this.session=e,this.clientRepository=t,this.serverRepository=n,this.logger=r,this.streaming=new class{session;repository;serverRepository;ERR_URI_SUBSCRIPTION_FAILED="com.tick42.agm.errors.subscription.failure";callbacks=mi();nextStreamId=0;constructor(e,t,n){this.session=e,this.repository=t,this.serverRepository=n,e.on("add-interest",(e=>{this.handleAddInterest(e)})),e.on("remove-interest",(e=>{this.handleRemoveInterest(e)}))}acceptRequestOnBranch(e,t,n){if("string"!=typeof n&&(n=""),"object"!=typeof t.protocolState.subscriptionsMap)throw new TypeError("The streaming method is missing its subscriptions.");if(!Array.isArray(t.protocolState.branchKeyToStreamIdMap))throw new TypeError("The streaming method is missing its branches.");const r=this.getStreamId(t,n),i=e.msg.subscription_id,s={id:i,arguments:e.arguments,instance:e.instance,branchKey:n,streamId:r,subscribeMsg:e.msg};t.protocolState.subscriptionsMap[i]=s,this.session.sendFireAndForget({type:"accepted",subscription_id:i,stream_id:r}),this.callbacks.execute(as,s,t)}rejectRequest(e,t,n){"string"!=typeof n&&(n=""),this.sendSubscriptionFailed("Subscription rejected by user. "+n,e.msg.subscription_id)}pushData(e,t,n){if("object"!=typeof e||!Array.isArray(e.protocolState.branchKeyToStreamIdMap))return;if("object"!=typeof t)throw new Error("Invalid arguments. Data must be an object.");"string"==typeof n?n=[n]:(!Array.isArray(n)||n.length<=0)&&(n=[]);const r=e.protocolState.branchKeyToStreamIdMap.filter((e=>!n||0===n.length||n.indexOf(e.key)>=0)).map((e=>e.streamId));r.forEach((e=>{const n={type:"publish",stream_id:e,data:t};this.session.sendFireAndForget(n)}))}pushDataToSingle(e,t,n){if("object"!=typeof n)throw new Error("Invalid arguments. Data must be an object.");const r={type:"post",subscription_id:t.id,data:n};this.session.sendFireAndForget(r)}closeSingleSubscription(e,t){e.protocolState.subscriptionsMap&&delete e.protocolState.subscriptionsMap[t.id];const n={type:"drop-subscription",subscription_id:t.id,reason:"Server dropping a single subscription"};this.session.sendFireAndForget(n),t.instance,this.callbacks.execute(cs,t,e)}closeMultipleSubscriptions(e,t){if("object"!=typeof e||"object"!=typeof e.protocolState.subscriptionsMap)return;if(!e.protocolState.subscriptionsMap)return;const n=e.protocolState.subscriptionsMap;let r=Object.keys(n).map((e=>n[e]));"string"==typeof t&&(r=r.filter((e=>e.branchKey===t))),r.forEach((e=>{delete n[e.id];const t={type:"drop-subscription",subscription_id:e.id,reason:"Server dropping all subscriptions on stream_id: "+e.streamId};this.session.sendFireAndForget(t)}))}getSubscriptionList(e,t){if("object"!=typeof e)return[];let n=[];if(!e.protocolState.subscriptionsMap)return[];const r=e.protocolState.subscriptionsMap,i=Object.keys(r).map((e=>r[e]));return n="string"!=typeof t?i:i.filter((e=>e.branchKey===t)),n}getBranchList(e){if("object"!=typeof e)return[];if(!e.protocolState.subscriptionsMap)return[];const t=e.protocolState.subscriptionsMap,n=Object.keys(t).map((e=>t[e])),r=[];return n.forEach((e=>{let t="";"object"==typeof e&&"string"==typeof e.branchKey&&(t=e.branchKey),-1===r.indexOf(t)&&r.push(t)})),r}onSubAdded(e){this.onSubscriptionLifetimeEvent(as,e)}onSubRequest(e){this.onSubscriptionLifetimeEvent(os,e)}onSubRemoved(e){this.onSubscriptionLifetimeEvent(cs,e)}handleRemoveInterest(e){const t=this.serverRepository.getById(e.method_id);if("string"!=typeof e.subscription_id||"object"!=typeof t)return;if(!t.protocolState.subscriptionsMap)return;if("object"!=typeof t.protocolState.subscriptionsMap[e.subscription_id])return;const n=t.protocolState.subscriptionsMap[e.subscription_id];delete t.protocolState.subscriptionsMap[e.subscription_id],this.callbacks.execute(cs,n,t)}onSubscriptionLifetimeEvent(e,t){this.callbacks.add(e,t)}getNextStreamId(){return this.nextStreamId+++""}handleAddInterest(e){const t=this.repository.getServerById(e.caller_id).instance,n={msg:e,arguments:e.arguments_kv||{},instance:t},r=this.serverRepository.getById(e.method_id);if(void 0!==r)r.protocolState.subscriptionsMap&&r.protocolState.subscriptionsMap[e.subscription_id]?this.sendSubscriptionFailed("A subscription with id "+e.subscription_id+" already exists.",e.subscription_id):this.callbacks.execute(os,n,r);else{const t="No method with id "+e.method_id+" on this server.";this.sendSubscriptionFailed(t,e.subscription_id)}}sendSubscriptionFailed(e,t){const n={type:"error",reason_uri:this.ERR_URI_SUBSCRIPTION_FAILED,reason:e,request_id:t};this.session.sendFireAndForget(n)}getStreamId(e,t){if("string"!=typeof t&&(t=""),!e.protocolState.branchKeyToStreamIdMap)throw new Error(`streaming ${e.definition.name} method without protocol state`);const n=e.protocolState.branchKeyToStreamIdMap.filter((e=>e.key===t))[0];let r=n?n.streamId:void 0;return"string"==typeof r&&""!==r||(r=this.getNextStreamId(),e.protocolState.branchKeyToStreamIdMap.push({key:t,streamId:r})),r}}(e,t,n),this.session.on("invoke",(e=>this.handleInvokeMessage(e)))}createStream(e){return e.protocolState.subscriptionsMap={},e.protocolState.branchKeyToStreamIdMap=[],this.register(e,!0)}register(e,t){const n=e.definition,r=Object.assign({},{metadata:n.flags??{}},{streaming:t||!1}),i={type:"register",methods:[{id:e.repoId,name:n.name,display_name:n.displayName,description:n.description,version:n.version,flags:r,object_types:n.objectTypes||n.object_types,input_signature:n.accepts,result_signature:n.returns,restrictions:void 0}]};return this.session.send(i,{methodId:e.repoId}).then((()=>{this.logger.debug("registered method "+e.definition.name+" with id "+e.repoId)})).catch((t=>{throw this.logger.warn(`failed to register method ${e.definition.name} with id ${e.repoId} - ${JSON.stringify(t)}`),t}))}onInvoked(e){this.callbacks.add("onInvoked",e)}methodInvocationResult(e,t,n,r){let i;i=n||""===n?{type:"error",request_id:t,reason_uri:"agm.errors.client_error",reason:n,context:r,peer_id:void 0}:{type:"yield",invocation_id:t,peer_id:this.session.peerId,result:r,request_id:void 0},this.session.sendFireAndForget(i)}async unregister(e){const t={type:"unregister",methods:[e.repoId]};await this.session.send(t)}getBranchList(e){return this.streaming.getBranchList(e)}getSubscriptionList(e,t){return this.streaming.getSubscriptionList(e,t)}closeAllSubscriptions(e,t){this.streaming.closeMultipleSubscriptions(e,t)}pushData(e,t,n){this.streaming.pushData(e,t,n)}pushDataToSingle(e,t,n){this.streaming.pushDataToSingle(e,t,n)}closeSingleSubscription(e,t){this.streaming.closeSingleSubscription(e,t)}acceptRequestOnBranch(e,t,n){this.streaming.acceptRequestOnBranch(e,t,n)}rejectRequest(e,t,n){this.streaming.rejectRequest(e,t,n)}onSubRequest(e){this.streaming.onSubRequest(e)}onSubAdded(e){this.streaming.onSubAdded(e)}onSubRemoved(e){this.streaming.onSubRemoved(e)}handleInvokeMessage(e){const t=e.invocation_id,n=e.caller_id,r=e.method_id,i=e.arguments_kv,s=this.serverRepository.getList().filter((e=>e.repoId===r))[0];if(void 0===s)return;const o={args:i,instance:this.clientRepository.getServerById(n).instance};this.callbacks.execute("onInvoked",s,t,o)}}(l,n,r,o.subLogger("server")),h=new class{session;repository;logger;streaming;constructor(e,t,n){this.session=e,this.repository=t,this.logger=n,e.on("peer-added",(e=>this.handlePeerAdded(e))),e.on("peer-removed",(e=>this.handlePeerRemoved(e))),e.on("methods-added",(e=>this.handleMethodsAddedMessage(e))),e.on("methods-removed",(e=>this.handleMethodsRemovedMessage(e))),this.streaming=new class{session;repository;logger;subscriptionsList={};timedCache=new class{config;cache=[];timeoutIds=[];constructor(e){this.config=e}add(e){const t=xi(10);this.cache.push({id:t,element:e});const n=setTimeout((()=>{const e=this.cache.findIndex((e=>e.id===t));e<0||this.cache.splice(e,1)}),this.config.ELEMENT_TTL_MS);this.timeoutIds.push(n)}flush(){const e=this.cache.map((e=>e.element));return this.timeoutIds.forEach((e=>clearInterval(e))),this.cache=[],this.timeoutIds=[],e}}({ELEMENT_TTL_MS:1e4});subscriptionIdToLocalKeyMap={};nextSubLocalKey=0;constructor(e,t,n){this.session=e,this.repository=t,this.logger=n,e.on("subscribed",this.handleSubscribed),e.on("event",this.handleEventData),e.on("subscription-cancelled",this.handleSubscriptionCancelled)}subscribe(e,t,n,r,i,s){if(0===n.length)return void i({method:e,called_with:t.arguments,message:hs+" No available servers matched the target params."});const o=this.getNextSubscriptionLocalKey(),a=this.registerSubscription(o,e,t,r,i,t.methodResponseTimeout||1e4,s);"object"==typeof a?n.forEach((n=>{const r=n.server.id,i=n.methods.find((t=>t.name===e.name));if(!i)return void this.logger.error(`can not find method ${e.name} for target ${n.server.id}`);a.trackedServers.push({serverId:r,subscriptionId:void 0});const s={type:"subscribe",server_id:r,method_id:i.gatewayId,arguments_kv:t.arguments};this.session.send(s,{serverId:r,subLocalKey:o}).then((e=>this.handleSubscribed(e))).catch((e=>this.handleErrorSubscribing(e)))})):i({method:e,called_with:t.arguments,message:hs+" Unable to register the user callbacks."})}drainSubscriptions(){const e=Object.values(this.subscriptionsList);return this.subscriptionsList={},this.subscriptionIdToLocalKeyMap={},e}drainSubscriptionsCache(){return this.timedCache.flush()}getNextSubscriptionLocalKey(){const e=this.nextSubLocalKey;return this.nextSubLocalKey+=1,e}registerSubscription(e,t,n,r,i,s,o){const a={localKey:e,status:ls,method:t,params:n,success:r,error:i,trackedServers:[],handlers:{onData:o?.handlers.onData||[],onClosed:o?.handlers.onClosed||[],onConnected:o?.handlers.onConnected||[]},queued:{data:[],closers:[]},timeoutId:void 0,close:()=>this.closeSubscription(e),subscription:o?.subscription};return o||(n.onData&&a.handlers.onData.push(n.onData),n.onClosed&&a.handlers.onClosed.push(n.onClosed),n.onConnected&&a.handlers.onConnected.push(n.onConnected)),this.subscriptionsList[e]=a,a.timeoutId=setTimeout((()=>{if(void 0===this.subscriptionsList[e])return;const r=this.subscriptionsList[e];r.status===ls?(i({method:t,called_with:n.arguments,message:hs+" Subscription attempt timed out after "+s+" ms."}),delete this.subscriptionsList[e]):r.status===us&&r.trackedServers.length>0&&(r.trackedServers=r.trackedServers.filter((e=>void 0!==e.subscriptionId)),delete r.timeoutId,r.trackedServers.length<=0&&(this.callOnClosedHandlers(r),delete this.subscriptionsList[e]))}),s),a}handleErrorSubscribing=e=>{const t=e._tag,n=t.subLocalKey,r=this.subscriptionsList[n];if("object"==typeof r&&(r.trackedServers=r.trackedServers.filter((e=>e.serverId!==t.serverId)),r.trackedServers.length<=0)){if(clearTimeout(r.timeoutId),r.status===ls){const t="string"==typeof e.reason&&""!==e.reason?' Publisher said "'+e.reason+'".':" No reason given.",n="object"==typeof r.params.arguments?JSON.stringify(r.params.arguments):"{}";r.error({message:"Subscription rejected."+t+" Called with:"+n,called_with:r.params.arguments,method:r.method})}else r.status===us&&this.callOnClosedHandlers(r);delete this.subscriptionsList[n]}};handleSubscribed=e=>{const t=e._tag.subLocalKey,n=this.subscriptionsList[t];if("object"!=typeof n)return;const r=e._tag.serverId,i=n.trackedServers.filter((e=>e.serverId===r))[0];if("object"!=typeof i)return;i.subscriptionId=e.subscription_id,this.subscriptionIdToLocalKeyMap[e.subscription_id]=t;const s=n.status===ls;if(n.status=us,s){let e=!1,t=n.subscription;t?(t.setNewSubscription(n),n.success(t),e=!0):(t=new class{repository;subscriptionData;get requestArguments(){return this.subscriptionData.params.arguments||{}}get servers(){return this.subscriptionData.trackedServers.filter((e=>e.subscriptionId)).map((e=>this.repository.getServerById(e.serverId).instance))}get serverInstance(){return this.servers[0]}get stream(){return this.subscriptionData.method}constructor(e,t){this.repository=e,this.subscriptionData=t}onData(e){if("function"!=typeof e)throw new TypeError("The data callback must be a function.");this.subscriptionData.handlers.onData.push(e),1===this.subscriptionData.handlers.onData.length&&this.subscriptionData.queued.data.length>0&&this.subscriptionData.queued.data.forEach((t=>{e(t)}))}onClosed(e){if("function"!=typeof e)throw new TypeError("The callback must be a function.");this.subscriptionData.handlers.onClosed.push(e)}onFailed(e){}onConnected(e){if("function"!=typeof e)throw new TypeError("The callback must be a function.");this.subscriptionData.handlers.onConnected.push(e)}close(){this.subscriptionData.close()}setNewSubscription(e){this.subscriptionData=e}}(this.repository,n),n.subscription=t,n.success(t));for(const r of n.handlers.onConnected)try{r(t.serverInstance,e)}catch(e){}}};handleEventData=e=>{const t=this.subscriptionIdToLocalKeyMap[e.subscription_id];if(void 0===t)return;const n=this.subscriptionsList[t];if("object"!=typeof n)return;const r=n.trackedServers.filter((t=>t.subscriptionId===e.subscription_id));if(1!==r.length)return;const i=e.oob,s=r[0].serverId,o=()=>({data:e.data,server:this.repository.getServerById(s).instance,requestArguments:n.params.arguments,message:void 0,private:i}),a=n.handlers.onData,c=n.queued.data;a.length>0?a.forEach((e=>{"function"==typeof e&&e(o())})):c.push(o())};handleSubscriptionCancelled=e=>{const t=this.subscriptionIdToLocalKeyMap[e.subscription_id];if(void 0===t)return;const n=this.subscriptionsList[t];if("object"!=typeof n)return;const r=n.trackedServers.length-1;n.trackedServers=n.trackedServers.filter((t=>t.subscriptionId!==e.subscription_id||(n.queued.closers.push(t.serverId),!1))),n.trackedServers.length===r&&(n.trackedServers.length<=0&&(this.timedCache.add(n),clearTimeout(n.timeoutId),this.callOnClosedHandlers(n),delete this.subscriptionsList[t]),delete this.subscriptionIdToLocalKeyMap[e.subscription_id])};callOnClosedHandlers(e,t){const n=e.queued.closers.length,r=n>0?e.queued.closers[n-1]:null;let i;void 0!==r&&"string"==typeof r&&(i=this.repository.getServerById(r).instance),e.handlers.onClosed.forEach((n=>{"function"==typeof n&&n({message:t||"ServerInitiated",requestArguments:e.params.arguments||{},server:i,stream:e.method})}))}closeSubscription(e){const t=this.subscriptionsList[e];"object"==typeof t&&(t.trackedServers.forEach((e=>{void 0!==e.subscriptionId&&(t.queued.closers.push(e.serverId),this.session.sendFireAndForget({type:"unsubscribe",subscription_id:e.subscriptionId,reason_uri:"",reason:ds}),delete this.subscriptionIdToLocalKeyMap[e.subscriptionId])})),t.trackedServers=[],this.callOnClosedHandlers(t,ds),delete this.subscriptionsList[e])}}(e,t,n)}subscribe(e,t,n,r,i,s){this.streaming.subscribe(e,t,n,r,i,s)}invoke(e,t,n,r){const i=r.id,s={type:"call",server_id:i,method_id:t.gatewayId,arguments_kv:n};return this.session.send(s,{invocationId:e,serverId:i}).then((e=>this.handleResultMessage(e))).catch((e=>this.handleInvocationError(e)))}drainSubscriptions(){return this.streaming.drainSubscriptions()}drainSubscriptionsCache(){return this.streaming.drainSubscriptionsCache()}handlePeerAdded(e){const t=e.new_peer_id,n=e.identity,r=!e.meta||e.meta.local,i=Number(n.process),s={machine:n.machine,pid:isNaN(i)?n.process:i,instance:n.instance,application:n.application,applicationName:n.applicationName,environment:n.environment,region:n.region,user:n.user,windowId:n.windowId,peerId:t,api:n.api,isLocal:r};this.repository.addServer(s,t)}handlePeerRemoved(e){const t=e.removed_id,n=e.reason;this.repository.removeServerById(t,n)}handleMethodsAddedMessage(e){const t=e.server_id;e.methods.forEach((e=>{this.repository.addServerMethod(t,e)}))}handleMethodsRemovedMessage(e){const t=e.server_id,n=e.methods,r=this.repository.getServerById(t);Object.keys(r.methods).forEach((e=>{const i=r.methods[e];n.indexOf(i.gatewayId)>-1&&this.repository.removeServerMethod(t,e)}))}handleResultMessage(e){const t=e._tag.invocationId,n=e.result,r=e._tag.serverId;return{invocationId:t,result:n,instance:this.repository.getServerById(r).instance,status:ts.Success,message:""}}handleInvocationError(e){if(this.logger.debug(`handle invocation error ${JSON.stringify(e)}`),"_tag"in e){const t=e._tag.invocationId,n=e._tag.serverId,r=this.repository.getServerById(n),i=e.reason;return{invocationId:t,result:e.context,instance:r.instance,status:ts.Error,message:i}}return{invocationId:"",message:e.message,status:ts.Error,error:e}}}(l,n,o.subLogger("client"));return l.onJoined((i=>{n.addServer(e,t.peerId),i?async function(){o.info("reconnected - will replay registered methods and subscriptions"),h.drainSubscriptionsCache().forEach((e=>{const t=e.method,n=Object.assign({},e.params);o.info(`trying to soft-re-subscribe to method ${t.name}, with params: ${JSON.stringify(n)}`),s.client.subscribe(t,n,void 0,void 0,e).then((()=>o.info(`soft-subscribing to method ${t.name} DONE`))).catch((e=>o.warn(`subscribing to method ${t.name} failed: ${JSON.stringify(e)}}`)))}));const e=[],t=h.drainSubscriptions();for(const n of t){const t=n.method,r=Object.assign({},n.params);o.info(`trying to re-subscribe to method ${t.name}, with params: ${JSON.stringify(r)}`),e.push(s.client.subscribe(t,r,void 0,void 0,n).then((()=>o.info(`subscribing to method ${t.name} DONE`))))}const n=r.getList();r.reset();for(const t of n){const n=t.definition;t.stream?e.push(s.server.createStream(n,t.streamCallbacks,void 0,void 0,t.stream).then((()=>o.info(`subscribing to method ${n.name} DONE`))).catch((()=>o.warn(`subscribing to method ${n.name} FAILED`)))):t?.theFunction?.userCallback?e.push(s.register(n,t.theFunction.userCallback).then((()=>o.info(`registering method ${n.name} DONE`))).catch((()=>o.warn(`registering method ${n.name} FAILED`)))):t?.theFunction?.userCallbackAsync&&e.push(s.registerAsync(n,t.theFunction.userCallbackAsync).then((()=>o.info(`registering method ${n.name} DONE`))).catch((()=>o.warn(`registering method ${n.name} FAILED`))))}await Promise.all(e),o.info("Interop is re-announced")}().then((()=>t.setLibReAnnounced({name:"interop"}))).catch((e=>o.warn(`Error while re-announcing interop: ${JSON.stringify(e)}`))):a&&(a({client:h,server:u}),a=void 0)})),l.onLeft((()=>{n.reset()})),l.join(),c}const gs=["subscribed","success"];const fs=(e,t)=>{const n="object"==typeof window?window.iodesktop??window.glue42gd:void 0,r="object"==typeof window?window.gdPreloadPromise??Promise.resolve():Promise.resolve(),i=bi("glue"),s=function(e,t,n){let r;if(yi.isNode()){const e=process.env._GD_STARTING_CONTEXT_;if(e)try{r=JSON.parse(e)}catch{}}function i(){if(e.application)return e.application;if(n)return n.applicationName;if("undefined"!=typeof window&&void 0!==window.glue42electron)return window.glue42electron.application;const t=xi(10);return yi.isNode()?r?r.applicationConfig.name:"NodeJS"+t:"undefined"!=typeof window&&"undefined"!=typeof document?document.title+` (${t})`:t}const s=function(){const s=e.gateway,o=s?.protocolVersion??3,a=s?.reconnectInterval,c=s?.reconnectAttempts;let l=s?.ws;const u=s?.sharedWorker,h=s?.inproc,d=s?.webPlatform??void 0;let p,g,f,m,y;n&&(l=n.gwURL),yi.isNode()&&r&&r.gwURL&&(l=r.gwURL),l||u||h||(l="ws://localhost:8385");const w=i();let v=w;void 0!==n?(g=n.windowId,f=n.pid,n.env&&(m=n.env.env,y=n.env.region),v=n.application??"glue-app",p=n.appInstanceId):yi.isNode()?(f=process.pid,r&&(m=r.env,y=r.region,p=r.instanceId)):void 0!==window?.glue42electron&&(g=window?.glue42electron.instanceId,f=window?.glue42electron.pid,m=window?.glue42electron.env,y=window?.glue42electron.region,v=window?.glue42electron.application??"glue-app",p=window?.glue42electron.instanceId);const b=e.gateway?.replaySpecs??[];b.push(Li);let S={application:v,applicationName:w,windowId:g,instance:p,process:f,region:y,environment:m,api:t.version||Wi};return e.identity&&(S=Object.assign(S,e.identity)),{identity:S,reconnectInterval:a,ws:l,sharedWorker:u,webPlatform:d,inproc:h,protocolVersion:o,reconnectAttempts:c,replaySpecs:b}}();let o=i();if("undefined"!=typeof window){const e=window,t=e.htmlContainer?`${e.htmlContainer.containerName}.${e.htmlContainer.application}`:e?.glue42gd?.application;t&&(o=t)}return{bus:e.bus??!1,application:o,auth:"string"==typeof e.auth?{token:e.auth}:e.auth?e.auth:yi.isNode()&&r&&r.gwToken?{gatewayToken:r.gwToken}:e.gateway?.webPlatform||e.gateway?.inproc||e.gateway?.sharedWorker?{username:"glue42",password:"glue42"}:void 0,logger:function(){let t=e.logger;const r="warn";let i;return t||(t=r),n&&(i=n.consoleLogLevel),"string"==typeof t?{console:i??t,publish:r}:{console:i??t.console??r,publish:t.publish??r}}(),connection:s,metrics:e.metrics??!0,contexts:void 0===e.contexts||"boolean"==typeof e.contexts&&e.contexts?{reAnnounceKnownContexts:!0}:"object"==typeof e.contexts&&Object.assign({},{reAnnounceKnownContexts:!0},e.contexts),version:t.version||Wi,libs:t.libs??[],customLogger:e.customLogger}}(e=e||{},t=t||{},n);let o,a,c,l,u,h,d;const p={};function g(e,t,n){d=c.canPublish("trace"),d&&c.trace(`registering ${e} module`);const r=()=>{t.initTime=n.stop(),t.initEndTime=n.endTime,t.marks=n.marks,d&&c.trace(`${e} is ready - ${n.endTime-n.startTime}`)};t.initStartTime=n.startTime,t.ready?t.ready().then((()=>{r()})):r(),Array.isArray(e)||(e=[e]),e.forEach((e=>{p[e]=t,fs[e]=t}))}function f(){const e=bi("metrics"),t=s.metrics,r=n?.getMetricsPublishingEnabled,i=s.connection.identity,a=r||(()=>!0),u=("boolean"!=typeof t&&t.disableAutoAppSystem)??!1;return l=di({connection:t?o:void 0,logger:c.subLogger("metrics"),canUpdateMetric:a,system:"Glue42",service:i?.service??n?.applicationName??s.application,instance:i?.instance??i?.windowId??xi(10),disableAutoAppSystem:u,pagePerformanceMetrics:"boolean"!=typeof t?t?.pagePerformanceMetrics:void 0}),g("metrics",l,e),Promise.resolve()}function m(){const e=bi("interop"),t={connection:o,logger:c.subLogger("interop")};return a=new class{instance;readyPromise;client;server;unwrappedInstance;protocol;clientRepository;serverRepository;constructor(e){if(void 0===e)throw new Error("configuration is required");if(void 0===e.connection)throw new Error("configuration.connections is required");const t=e.connection;let n;if("number"!=typeof e.methodResponseTimeout&&(e.methodResponseTimeout=3e4),"number"!=typeof e.waitTimeoutMs&&(e.waitTimeoutMs=3e4),this.unwrappedInstance=new is(this,void 0,t),this.instance=this.unwrappedInstance.unwrap(),this.clientRepository=new class{logger;API;servers={};myServer;methodsCount={};callbacks=mi();constructor(e,t){this.logger=e,this.API=t;const n=this.API.instance.peerId;this.myServer={id:n,methods:{},instance:this.API.instance,wrapper:this.API.unwrappedInstance},this.servers[n]=this.myServer}addServer(e,t){this.logger.debug(`adding server ${t}`);const n=this.servers[t];if(n)return n.id;const r=new is(this.API,e),i={id:t,methods:{},instance:r.unwrap(),wrapper:r};return this.servers[t]=i,this.callbacks.execute("onServerAdded",i.instance),t}removeServerById(e,t){const n=this.servers[e];n?(this.logger.debug(`removing server ${e}`),Object.keys(n.methods).forEach((t=>{this.removeServerMethod(e,t)})),delete this.servers[e],this.callbacks.execute("onServerRemoved",n.instance,t)):this.logger.warn(`not aware of server ${e}, my state ${JSON.stringify(Object.keys(this.servers))}`)}addServerMethod(e,t){const n=this.servers[e];if(!n)throw new Error("server does not exists");if(n.methods[t.id])return;const r=this.createMethodIdentifier(t),i=this,s={identifier:r,gatewayId:t.id,name:t.name,displayName:t.display_name,description:t.description,version:t.version,objectTypes:t.object_types||[],accepts:t.input_signature,returns:t.result_signature,supportsStreaming:void 0!==t.flags&&t.flags.streaming,flags:t.flags??{},getServers:()=>i.getServersByMethod(r)};s.object_types=s.objectTypes,s.display_name=s.displayName,s.version=s.version,n.methods[t.id]=s;const o=ss(s);return this.methodsCount[r]||(this.methodsCount[r]=0,this.callbacks.execute("onMethodAdded",o)),this.methodsCount[r]=this.methodsCount[r]+1,this.callbacks.execute("onServerMethodAdded",n.instance,o),s}removeServerMethod(e,t){const n=this.servers[e];if(!n)throw new Error("server does not exists");const r=n.methods[t];delete n.methods[t];const i=ss(r);this.methodsCount[r.identifier]=this.methodsCount[r.identifier]-1,0===this.methodsCount[r.identifier]&&this.callbacks.execute("onMethodRemoved",i),this.callbacks.execute("onServerMethodRemoved",n.instance,i)}getMethods(){return this.extractMethodsFromServers(Object.values(this.servers)).map(ss)}getServers(){return Object.values(this.servers).map(this.hideServerMethodSystemFlags)}onServerAdded(e){const t=this.callbacks.add("onServerAdded",e),n=this.getServers().map((e=>e.instance));return this.returnUnsubWithDelayedReplay(t,n,e)}onMethodAdded(e){const t=this.callbacks.add("onMethodAdded",e),n=this.getMethods();return this.returnUnsubWithDelayedReplay(t,n,e)}onServerMethodAdded(e){const t=this.callbacks.add("onServerMethodAdded",e);let n=!1;const r=this.getServers();return setTimeout((()=>{r.forEach((t=>{const r=t.methods;Object.keys(r).forEach((i=>{n||e(t.instance,r[i])}))}))}),0),()=>{n=!0,t()}}onMethodRemoved(e){return this.callbacks.add("onMethodRemoved",e)}onServerRemoved(e){return this.callbacks.add("onServerRemoved",e)}onServerMethodRemoved(e){return this.callbacks.add("onServerMethodRemoved",e)}getServerById(e){return this.hideServerMethodSystemFlags(this.servers[e])}reset(){Object.keys(this.servers).forEach((e=>{this.removeServerById(e,"reset")})),this.servers={[this.myServer.id]:this.myServer},this.methodsCount={}}createMethodIdentifier(e){const t=e.input_signature??"",n=e.result_signature??"";return(e.name+t+n).toLowerCase()}getServersByMethod(e){const t=[];return Object.values(this.servers).forEach((n=>{Object.values(n.methods).forEach((r=>{r.identifier===e&&t.push(n.instance)}))})),t}returnUnsubWithDelayedReplay(e,t,n){let r=!1;return setTimeout((()=>{t.forEach((e=>{r||n(e)}))}),0),()=>{r=!0,e()}}hideServerMethodSystemFlags(e){const t={};return Object.entries(e.methods).forEach((([e,n])=>{t[e]=ss(n)})),{...e,methods:t}}extractMethodsFromServers(e){return Object.values(e).reduce(((e,t)=>[...e,...Object.values(t.methods)]),[])}}(e.logger.subLogger("cRep"),this),this.serverRepository=new class{nextId=0;methods=[];add(e){return e.repoId=String(this.nextId),this.nextId+=1,this.methods.push(e),e}remove(e){if("string"!=typeof e)return new TypeError("Expecting a string");this.methods=this.methods.filter((t=>t.repoId!==e))}getById(e){if("string"==typeof e)return this.methods.find((t=>t.repoId===e))}getList(){return this.methods.map((e=>e))}length(){return this.methods.length}reset(){this.methods=[]}},3!==t.protocolVersion)throw new Error(`protocol ${t.protocolVersion} not supported`);n=ps(this.instance,t,this.clientRepository,this.serverRepository,e,this),this.readyPromise=n.then((t=>(this.protocol=t,this.client=new class{protocol;repo;instance;configuration;constructor(e,t,n,r){this.protocol=e,this.repo=t,this.instance=n,this.configuration=r}subscribe(e,t,n,r,i){const s=(e,n,r,s)=>{t.methodResponseTimeout=t.methodResponseTimeout??t.waitTimeoutMs,this.protocol.client.subscribe(n,t,e,r,s,i)},o=new Promise(((n,r)=>{const i=e=>{n(e)},o=e=>{r(e)};if(!e)return void r("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");let a;if(a="string"==typeof e?{name:e}:e,!a.name)return void r("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");void 0===t&&(t={});let c=t.target;if(void 0===c&&(c="best"),"string"==typeof c&&"all"!==c&&"best"!==c)return void r(new Error(`"${c}" is not a valid target. Valid targets are "all", "best", or an instance.`));void 0===t.methodResponseTimeout&&(t.methodResponseTimeout=t.method_response_timeout,void 0===t.methodResponseTimeout&&(t.methodResponseTimeout=this.configuration.methodResponseTimeout)),void 0===t.waitTimeoutMs&&(t.waitTimeoutMs=t.wait_for_method_timeout,void 0===t.waitTimeoutMs&&(t.waitTimeoutMs=this.configuration.waitTimeoutMs));let l=0,u=this.getServerMethodsByFilterAndTarget(a,c);if(u.length>0)s(u,u[0].methods[0],i,o);else{const n=()=>{if(c&&t.waitTimeoutMs)if(l+=500,u=this.getServerMethodsByFilterAndTarget(a,c),u.length>0){const e=u[0].methods[0];s(u,e,i,o)}else l>=t.waitTimeoutMs?s(u,"string"==typeof e?{name:e}:e,i,o):setTimeout(n,500)};setTimeout(n,500)}}));return Zi(o,n,r)}servers(e){const t=void 0===e?void 0:{...e};return this.getServers(t).map((e=>e.server.instance))}methods(e){return e="string"==typeof e?{name:e}:{...e},this.getMethods(e)}methodsForInstance(e){return this.getMethodsForInstance(e)}methodAdded(e){return this.repo.onMethodAdded(e)}methodRemoved(e){return this.repo.onMethodRemoved(e)}serverAdded(e){return this.repo.onServerAdded(e)}serverRemoved(e){return this.repo.onServerRemoved(((t,n)=>{e(t,n)}))}serverMethodAdded(e){return this.repo.onServerMethodAdded(((t,n)=>{e({server:t,method:n})}))}serverMethodRemoved(e){return this.repo.onServerMethodRemoved(((t,n)=>{e({server:t,method:n})}))}async invoke(e,t,n,r,i,s){return Zi((async()=>{let i;if(i="string"==typeof e?{name:e}:{...e},!i.name)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");if(t||(t={}),n||(n="best"),"string"==typeof n&&"all"!==n&&"best"!==n&&"skipMine"!==n)return Promise.reject(new Error(`"${n}" is not a valid target. Valid targets are "all" and "best".`));if(r||(r={}),void 0===r.methodResponseTimeoutMs&&(r.methodResponseTimeoutMs=r.method_response_timeout,void 0===r.methodResponseTimeoutMs&&(r.methodResponseTimeoutMs=this.configuration.methodResponseTimeout)),void 0===r.waitTimeoutMs&&(r.waitTimeoutMs=r.wait_for_method_timeout,void 0===r.waitTimeoutMs&&(r.waitTimeoutMs=this.configuration.waitTimeoutMs)),void 0!==r.waitTimeoutMs&&"number"!=typeof r.waitTimeoutMs)return Promise.reject(new Error(`"${r.waitTimeoutMs}" is not a valid number for "waitTimeoutMs" `));if("object"!=typeof t)return Promise.reject(new Error(`The method arguments must be an object. method: ${i.name}`));let s=this.getServerMethodsByFilterAndTarget(i,n);if(0===s.length)try{s=await this.tryToAwaitForMethods(i,n,r)}catch(r){const s={method:{...i,getServers:()=>[],supportsStreaming:!1,objectTypes:i.objectTypes??[],flags:i.flags?.metadata??{}},called_with:t,message:`Can not find a method matching ${JSON.stringify(e)} with server filter ${JSON.stringify(n)}`,executed_by:void 0,returned:void 0,status:void 0};return Promise.reject(s)}const o=r.methodResponseTimeoutMs,a=r,c=s.map((e=>{const n=xi(10),r=e.methods[0],i=e.server,s=this.protocol.client.invoke(n,r,t,i,a);return Promise.race([s,es(o,s,{invocationId:n,message:`Invocation timeout (${o} ms) reached for method name: ${r?.name}, target instance: ${JSON.stringify(i.instance)}, options: ${JSON.stringify(a)}`,status:ts.Error})])})),l=await Promise.all(c),u=this.getInvocationResultObj(l,i,t);return l.every((e=>e.status===ts.Error))?Promise.reject(u):u})(),i,s)}getInvocationResultObj(e,t,n){const r=e.filter((e=>e.status===ts.Success)).reduce(((e,r)=>[...e,{executed_by:r.instance,returned:r.result,called_with:n,method:t,message:r.message,status:r.status}]),[]),i=e.filter((e=>e.status===ts.Error)).reduce(((e,r)=>[...e,{executed_by:r.instance,called_with:n,name:t.name,message:r.message}]),[]),s=e[0];return{method:t,called_with:n,returned:s.result,executed_by:s.instance,all_return_values:r,all_errors:i,message:s.message,status:s.status}}tryToAwaitForMethods(e,t,n){return new Promise(((r,i)=>{if(0===n.waitTimeoutMs)return void i();let s=0;const o=setInterval((()=>{s+=500;const a=this.getServerMethodsByFilterAndTarget(e,t);if(a.length>0)clearInterval(o),r(a);else if(s>=(n.waitTimeoutMs||1e4))return clearInterval(o),void i()}),500)}))}filterByTarget(e,t){if("string"!=typeof e){let n;return n=Array.isArray(e)?e:[e],n.reduce(((e,n)=>{const r=t.filter((e=>this.instanceMatch(n,e.server.instance)));return e.concat(r)}),[])}if("all"===e)return[...t];if("best"===e){const e=t.find((e=>e.server.instance.isLocal));if(e)return[e];if(void 0!==t[0])return[t[0]]}else if("skipMine"===e)return t.filter((({server:e})=>e.instance.peerId!==this.instance.peerId));return[]}instanceMatch(e,t){return this.containsProps(e,t)}methodMatch(e,t){return this.containsProps(e,t)}containsProps(e,t){return Object.keys(e).filter((t=>void 0!==e[t]&&null!==e[t]&&"function"!=typeof e[t]&&"object_types"!==t&&"display_name"!==t&&"id"!==t&&"gatewayId"!==t&&"identifier"!==t&&"_"!==t[0])).every((n=>{let r;const i=e[n],s=t[n];switch(n){case"objectTypes":r=(i||[]).every((e=>(s||[]).includes(e)));break;case"flags":r=Xi(s||{},i||{});break;default:r=String(i).toLowerCase()===String(s).toLowerCase()}return r}))}getMethods(e){return void 0===e?this.repo.getMethods():this.repo.getMethods().filter((t=>this.methodMatch(e,t)))}getMethodsForInstance(e){const t=this.repo.getServers().filter((t=>this.instanceMatch(e,t.instance)));if(0===t.length)return[];let n={};return 1===t.length?n=t[0].methods:t.forEach((e=>{Object.keys(e.methods).forEach((t=>{const r=e.methods[t];n[r.identifier]=r}))})),Object.keys(n).map((e=>n[e]))}getServers(e){const t=this.repo.getServers();return void 0===e?t.map((e=>({server:e,methods:[]}))):t.reduce(((t,n)=>{const r=Object.values(n.methods).filter((t=>this.methodMatch(e,t)));return r.length>0&&t.push({server:n,methods:r}),t}),[])}getServerMethodsByFilterAndTarget(e,t){const n=this.getServers(e);return this.filterByTarget(t,n)}}(this.protocol,this.clientRepository,this.instance,e),this.server=new class{protocol;serverRepository;streaming;invocations=0;currentlyUnregistering={};constructor(e,t){this.protocol=e,this.serverRepository=t,this.streaming=new class{protocol;server;constructor(e,t){this.protocol=e,this.server=t,e.server.onSubRequest(((e,t)=>this.handleSubRequest(e,t))),e.server.onSubAdded(((e,t)=>this.handleSubAdded(e,t))),e.server.onSubRemoved(((e,t)=>this.handleSubRemoved(e,t)))}handleSubRequest(e,t){if(!t||!t.streamCallbacks||"function"!=typeof t.streamCallbacks.subscriptionRequestHandler)return;const n=new class{protocol;repoMethod;requestContext;arguments;instance;constructor(e,t,n){this.protocol=e,this.repoMethod=t,this.requestContext=n,this.arguments=n.arguments,this.instance=n.instance}accept(){this.protocol.server.acceptRequestOnBranch(this.requestContext,this.repoMethod,"")}acceptOnBranch(e){this.protocol.server.acceptRequestOnBranch(this.requestContext,this.repoMethod,e)}reject(e){this.protocol.server.rejectRequest(this.requestContext,this.repoMethod,e)}}(this.protocol,t,e);t.streamCallbacks.subscriptionRequestHandler(n)}handleSubAdded(e,t){if(!t||!t.streamCallbacks||"function"!=typeof t.streamCallbacks.subscriptionAddedHandler)return;const n=new ns(this.protocol,t,e);t.streamCallbacks.subscriptionAddedHandler(n)}handleSubRemoved(e,t){if(!t||!t.streamCallbacks||"function"!=typeof t.streamCallbacks.subscriptionRemovedHandler)return;const n=new ns(this.protocol,t,e);t.streamCallbacks.subscriptionRemovedHandler(n)}}(e,this),this.protocol.server.onInvoked(this.onMethodInvoked.bind(this))}createStream(e,t,n,r,i){const s=new Promise(((n,r)=>{if(!e)return void r("The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream.");let s;if(s="string"==typeof e?{name:""+e}:{...e},!s.name)return r(`The “name” property is required for the “streamDefinition” object and must be unique. Stream definition: ${JSON.stringify(s)}`);if(this.serverRepository.getList().some((e=>e.definition.name===s.name)))return r(`A stream with the name "${s.name}" already exists! Please, provide a unique name for the stream.`);s.supportsStreaming=!0,t||(t={}),"function"!=typeof t.subscriptionRequestHandler&&(t.subscriptionRequestHandler=e=>{e.accept()});const o=this.serverRepository.add({definition:s,streamCallbacks:t,protocolState:{}});this.protocol.server.createStream(o).then((()=>{let e;i?(e=i,i.updateRepoMethod(o)):e=new class{_protocol;_repoMethod;_server;name;constructor(e,t,n){this._protocol=e,this._repoMethod=t,this._server=n,this.name=this._repoMethod.definition.name}branches(e){const t=this._protocol.server.getBranchList(this._repoMethod);return e?t.indexOf(e)>-1?new rs(e,this._protocol,this._repoMethod):void 0:t.map((e=>new rs(e,this._protocol,this._repoMethod)))}branch(e){return this.branches(e)}subscriptions(){return this._protocol.server.getSubscriptionList(this._repoMethod).map((e=>new ns(this._protocol,this._repoMethod,e)))}get definition(){const e=this._repoMethod.definition;return{accepts:e.accepts,description:e.description,displayName:e.displayName,name:e.name,objectTypes:e.objectTypes,returns:e.returns,supportsStreaming:e.supportsStreaming,flags:e.flags?.metadata}}close(){this._protocol.server.closeAllSubscriptions(this._repoMethod),this._server.unregister(this._repoMethod.definition,!0)}push(e,t){if("string"!=typeof t&&!Array.isArray(t)&&void 0!==t)throw new Error("invalid branches should be string or string array");if("object"!=typeof e)throw new Error("Invalid arguments. Data must be an object.");this._protocol.server.pushData(this._repoMethod,e,t)}updateRepoMethod(e){this._repoMethod=e}}(this.protocol,o,this),o.stream=e,n(e)})).catch((e=>{o.repoId&&this.serverRepository.remove(o.repoId),r(e)}))}));return Zi(s,n,r)}register(e,t){if(!e)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");if("function"!=typeof t)return Promise.reject(`The second parameter must be a callback function. Method: ${"string"==typeof e?e:e.name}`);const n=async(e,n)=>{try{const r=t(e.args,e.instance);r&&"function"==typeof r.then?n(void 0,await r):n(void 0,r)}catch(e){n(e??"",e??"")}};return n.userCallback=t,this.registerCore(e,n)}registerAsync(e,t){if(!e)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");if("function"!=typeof t)return Promise.reject(`The second parameter must be a callback function. Method: ${"string"==typeof e?e:e.name}`);const n=async(e,n)=>{try{let r=!1;const i=e=>{r||n(void 0,e),r=!0},s=e=>{r||(e||(e=""),n(e,e)),r=!0},o=t(e.args,e.instance,i,s);o&&"function"==typeof o.then&&o.then(i).catch(s)}catch(e){n(e,void 0)}};return n.userCallbackAsync=t,this.registerCore(e,n)}async unregister(e,t=!1){if(void 0===e)return Promise.reject("Please, provide either a unique string for a name or an object containing a “name” property.");if("function"==typeof e)return void await this.unregisterWithPredicate(e,t);let n;if(n="string"==typeof e?{name:e}:e,void 0===n.name)return Promise.reject("Method name is required. Cannot find a method if the method name is undefined!");const r=this.serverRepository.getList().find((e=>e.definition.name===n.name&&(e.definition.supportsStreaming||!1)===t));if(!r)return Promise.reject(`Method with a name "${n.name}" does not exist or is not registered by your application!`);await this.removeMethodsOrStreams([r])}async unregisterWithPredicate(e,t){const n=this.serverRepository.getList().filter((t=>e(t.definition))).filter((e=>(e.definition.supportsStreaming||!1)===t));if(!n||0===n.length)return Promise.reject(`Could not find a ${t?"stream":"method"} matching the specified condition!`);await this.removeMethodsOrStreams(n)}removeMethodsOrStreams(e){const t=[];return e.forEach((e=>{const n=this.protocol.server.unregister(e).then((()=>{e.repoId&&this.serverRepository.remove(e.repoId)}));t.push(n),this.addAsCurrentlyUnregistering(e.definition.name,n)})),Promise.all(t)}async addAsCurrentlyUnregistering(e,t){const n=new Promise((e=>setTimeout(e,5e3)));this.currentlyUnregistering[e]=Promise.race([t,n]).then((()=>{delete this.currentlyUnregistering[e]}))}async registerCore(e,t){let n;if(n="string"==typeof e?{name:""+e}:{...e},!n.name)return Promise.reject(`Please, provide a (unique) string value for the “name” property in the “methodDefinition” object: ${JSON.stringify(e)}`);const r=this.currentlyUnregistering[n.name];if(void 0!==r&&await r,this.serverRepository.getList().some((e=>e.definition.name===n.name)))return Promise.reject(`A method with the name "${n.name}" already exists! Please, provide a unique name for the method.`);if(n.supportsStreaming)return Promise.reject(`When you create methods with “glue.interop.register()” or “glue.interop.registerAsync()” the property “supportsStreaming” cannot be “true”. If you want “${n.name}” to be a stream, please use the “glue.interop.createStream()” method.`);const i=this.serverRepository.add({definition:n,theFunction:t,protocolState:{}});return this.protocol.server.register(i).catch((e=>{throw i?.repoId&&this.serverRepository.remove(i.repoId),e}))}onMethodInvoked(e,t,n){e&&e.theFunction&&e.theFunction(n,((n,r)=>{if(null!=n)if(n.message&&"string"==typeof n.message)n=n.message;else if("string"!=typeof n)try{n=JSON.stringify(n)}catch(e){n=`un-stringifyable error in onMethodInvoked! Top level prop names: ${Object.keys(n)}`}r?("object"!=typeof r||Array.isArray(r))&&(r={_value:r}):r={},this.protocol.server.methodInvocationResult(e,t,n,r)}))}}(this.protocol,this.serverRepository),this)))}ready(){return this.readyPromise}serverRemoved(e){return this.client.serverRemoved(e)}serverAdded(e){return this.client.serverAdded(e)}serverMethodRemoved(e){return this.client.serverMethodRemoved(e)}serverMethodAdded(e){return this.client.serverMethodAdded(e)}methodRemoved(e){return this.client.methodRemoved(e)}methodAdded(e){return this.client.methodAdded(e)}methodsForInstance(e){return this.client.methodsForInstance(e)}methods(e){return this.client.methods(e)}servers(e){return this.client.servers(e)}subscribe(e,t,n,r){return this.client.subscribe(e,t,n,r)}createStream(e,t,n,r){return this.server.createStream(e,t,n,r)}unregister(e){return this.server.unregister(e)}registerAsync(e,t){return this.server.registerAsync(e,t)}register(e,t){return this.server.register(e,t)}invoke(e,t,n,r,i,s){return this.client.invoke(e,t,n,r,i,s)}waitForMethod(e){const t=new wi,n=this.client.methodAdded((r=>{r.name===e&&(n(),t.resolve(r))}));return t.promise}}(t),ki.Interop=a,g(["interop","agm"],a,e),Promise.resolve()}function y(){const e=s.activities&&3===o.protocolVersion;if(s.contexts||e){const e=bi("contexts");return u=new class{initTime;initStartTime;initEndTime;_bridge;constructor(e){this._bridge=new class{_logger;_connection;_trackAllContexts;_reAnnounceKnownContexts;_gw3Session;_contextNameToData={};_gw3Subscriptions=[];_nextCallbackSubscriptionNumber=0;_creationPromises={};_contextNameToId={};_contextIdToName={};_protocolVersion=void 0;_contextsTempCache={};_contextsSubscriptionsCache=[];_systemContextsSubKey;get protocolVersion(){if(!this._protocolVersion){const e=this._connection.availableDomains.find((e=>"context"===e.uri));this._protocolVersion=e?.version??1}return this._protocolVersion}get setPathSupported(){return this.protocolVersion>=2}constructor(e){this._connection=e.connection,this._logger=e.logger,this._trackAllContexts=e.trackAllContexts,this._reAnnounceKnownContexts=e.reAnnounceKnownContexts,this._gw3Session=this._connection.domain("global",[Fi,Ri,$i,qi]),this._gw3Session.disconnected(this.resetState.bind(this)),this._gw3Session.onJoined((e=>{if(e)return this._reAnnounceKnownContexts?void this.reInitiateState().then((()=>this._connection.setLibReAnnounced({name:"contexts"}))):this._connection.setLibReAnnounced({name:"contexts"})})),this.subscribeToContextCreatedMessages(),this.subscribeToContextUpdatedMessages(),this.subscribeToContextDestroyedMessages(),this._connection.replayer?.drain(Li.name,(e=>{const t=e.type;t&&(t===Fi||t===Di||t===Pi?this.handleContextCreatedMessage(e):t===Ri||t===qi||t===Bi?this.handleContextUpdatedMessage(e):t!==$i&&t!==Ti||this.handleContextDestroyedMessage(e))}))}dispose(){for(const e of this._gw3Subscriptions)this._connection.off(e);this._gw3Subscriptions.length=0;for(const e in this._contextNameToData)this._contextNameToId.hasOwnProperty(e)&&delete this._contextNameToData[e]}createContext(e,t){return e in this._creationPromises||(this._creationPromises[e]=this._gw3Session.send({type:_i,domain:"global",name:e,data:t,lifetime:"retained"}).then((n=>{this._contextNameToId[e]=n.context_id,this._contextIdToName[n.context_id]=e;const r=this._contextNameToData[e]||new Hi(n.context_id,e,!0,void 0);return r.isAnnounced=!0,r.name=e,r.contextId=n.context_id,r.context=n.data||Ji(t),r.hasReceivedSnapshot=!0,this._contextNameToData[e]=r,delete this._creationPromises[e],n.context_id}))),this._creationPromises[e]}all(){return Object.keys(this._contextNameToData).filter((e=>this._contextNameToData[e].isAnnounced))}async update(e,t){t&&(t=Ji(t)),e in this._creationPromises&&await this._creationPromises[e];const n=this._contextNameToData[e];if(!n||!n.isAnnounced)return this.createContext(e,t);let r=n.context;n.hasCallbacks()||(r=await this.get(n.name));const i=this.setPathSupported?this.calculateContextDeltaV2(r,t):this.calculateContextDeltaV1(r,t);return Object.keys(i.added).length||Object.keys(i.updated).length||i.removed.length||i.commands?.length?this._gw3Session.send({type:Mi,domain:"global",context_id:n.contextId,delta:i},{},{skipPeerId:!1}).then((e=>{this.handleUpdated(n,i,{updaterId:e.peer_id})})):Promise.resolve()}async set(e,t){t&&(t=Ji(t)),e in this._creationPromises&&await this._creationPromises[e];const n=this._contextNameToData[e];return n&&n.isAnnounced?this._gw3Session.send({type:Mi,domain:"global",context_id:n.contextId,delta:{reset:t}},{},{skipPeerId:!1}).then((e=>{this.handleUpdated(n,{reset:t,added:{},removed:[],updated:{}},{updaterId:e.peer_id})})):this.createContext(e,t)}setPath(e,t,n){return this.setPathSupported?this.setPaths(e,[{path:t,value:n}]):Promise.reject("glue.contexts.setPath operation is not supported, use Glue42 3.10 or later")}async setPaths(e,t){if(!this.setPathSupported)return Promise.reject("glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later");t&&(t=Ji(t)),e in this._creationPromises&&await this._creationPromises[e];const n=this._contextNameToData[e];if(!n||!n.isAnnounced){const n={};for(const e of t)Qi(n,e.value,e.path);return this.createContext(e,n)}const r=[];for(const e of t)null===e.value?r.push({type:"remove",path:e.path}):r.push({type:"set",path:e.path,value:e.value});return this._gw3Session.send({type:Mi,domain:"global",context_id:n.contextId,delta:{commands:r}},{},{skipPeerId:!1}).then((e=>{this.handleUpdated(n,{added:{},removed:[],updated:{},commands:r},{updaterId:e.peer_id})}))}async get(e){e in this._creationPromises&&await this._creationPromises[e];const t=this._contextNameToData[e];if(!t||!t.isAnnounced)return Promise.resolve({});if(t&&(!t.hasCallbacks()||!t.hasReceivedSnapshot))return new Promise((t=>{this.subscribe(e,((e,n,r,i)=>{this.unsubscribe(i),t(e)}))}));const n=t?.context??{};return Promise.resolve(Ji(n))}async subscribe(e,t,n){e in this._creationPromises&&await this._creationPromises[e];const r=void 0===n?this._nextCallbackSubscriptionNumber:n;void 0===n&&(this._nextCallbackSubscriptionNumber+=1),this._contextsSubscriptionsCache.every((e=>e.subKey!==this._nextCallbackSubscriptionNumber))&&this._contextsSubscriptionsCache.push({contextName:e,subKey:r,callback:t});let i=this._contextNameToData[e];if(!i||!i.isAnnounced)return i=i||new Hi(void 0,e,!1,void 0),this._contextNameToData[e]=i,i.updateCallbacks[r]=t,Promise.resolve(r);const s=i.hasCallbacks();if(i.updateCallbacks[r]=t,s){if(i.hasReceivedSnapshot){const e=Ji(i.context);t(e,e,[],r)}return Promise.resolve(r)}if(i.joinedActivity){if(i.hasReceivedSnapshot){const e=Ji(i.context);t(e,e,[],r)}return Promise.resolve(r)}if(i.context&&i.sentExplicitSubscription){if(i.hasReceivedSnapshot){const e=Ji(i.context);t(e,e,[],r)}return Promise.resolve(r)}return this.sendSubscribe(i).then((()=>r))}unsubscribe(e){this._contextsSubscriptionsCache=this._contextsSubscriptionsCache.filter((t=>t.subKey!==e));for(const t of Object.keys(this._contextNameToData)){const n=this._contextNameToData[t];if(!n)return;const r=n.hasCallbacks();delete n.updateCallbacks[e],n.isAnnounced&&r&&!n.hasCallbacks()&&n.sentExplicitSubscription&&this.sendUnsubscribe(n).catch((()=>{})),n.isAnnounced||n.hasCallbacks()||delete this._contextNameToData[t]}}async destroy(e){e in this._creationPromises&&await this._creationPromises[e];const t=this._contextNameToData[e];return t?this._gw3Session.send({type:ji,domain:"global",context_id:t.contextId}).then((e=>{})):Promise.reject(`context with ${e} does not exist`)}handleUpdated(e,t,n){const r=e.context;e.context=Vi(e.context,t,this._logger),e.hasReceivedSnapshot=!0,this._contextNameToData[e.name]!==e||zi(r,e.context)||this.invokeUpdateCallbacks(e,t,n)}subscribeToContextCreatedMessages(){const e=[Di,Fi,Pi];for(const t of e){const e=this._connection.on(t,this.handleContextCreatedMessage.bind(this));this._gw3Subscriptions.push(e)}}handleContextCreatedMessage(e){const t=e.type;t===Pi?(this._contextNameToId[e.activity_id]=e.context_id,this._contextIdToName[e.context_id]=e.activity_id):t===Di&&(this._contextNameToId[e.name]=e.context_id,this._contextIdToName[e.context_id]=e.name);const n=this._contextIdToName[e.context_id];if(!n)throw new Error("Received created event for context with unknown name: "+e.context_id);if(!this._contextNameToId[n])throw new Error("Received created event for context with unknown id: "+e.context_id);let r=this._contextNameToData[n];if(r){if(r.isAnnounced)return;if(!r.hasCallbacks())throw new Error("Assertion failure: contextData.hasCallbacks()");r.isAnnounced=!0,r.contextId=e.context_id,r.activityId=e.activity_id,r.sentExplicitSubscription||this.sendSubscribe(r)}else this._contextNameToData[n]=r=new Hi(e.context_id,n,!0,e.activity_id),this._trackAllContexts&&this.subscribe(n,(()=>{})).then((e=>this._systemContextsSubKey=e))}subscribeToContextUpdatedMessages(){const e=[qi,Ri,Bi];for(const t of e){const e=this._connection.on(t,this.handleContextUpdatedMessage.bind(this));this._gw3Subscriptions.push(e)}}handleContextUpdatedMessage(e){const t=e.type,n=e.context_id;let r=this._contextNameToData[this._contextIdToName[n]];const i=!r||!r.isAnnounced;if(t===Bi)r||(r=this._contextNameToData[e.activity_id]||new Hi(n,e.activity_id,!0,e.activity_id)),this._contextNameToData[e.activity_id]=r,this._contextIdToName[n]=e.activity_id,this._contextNameToId[e.activity_id]=n,r.contextId=n,r.isAnnounced=!0,r.activityId=e.activity_id,r.joinedActivity=!0;else if(!r||!r.isAnnounced)return void(t===Ri?(r=r||new Hi(n,e.name,!0,void 0),r.sentExplicitSubscription=!0,this._contextNameToData[e.name]=r,this._contextIdToName[n]=e.name,this._contextNameToId[e.name]=n):this._logger.error(`Received 'update' for unknown context: ${n}`));const s=r.context;if(r.hasReceivedSnapshot=!0,t===Ri)r.context=e.data||{};else if(t===Bi)r.context=e.context_snapshot||{};else{if(t!==qi)throw new Error("Unrecognized context update message "+t);r.context=Vi(r.context,e.delta,this._logger)}!i&&zi(r.context,s)&&t!==Ri||this.invokeUpdateCallbacks(r,e.delta,{updaterId:e.updater_id})}invokeUpdateCallbacks(e,t,n){if((t=t||{added:{},updated:{},reset:{},removed:[]}).commands){t.added=t.updated=t.reset={},t.removed=[];for(const e of t.commands)"remove"===e.type?(-1===e.path.indexOf(".")&&t.removed.push(e.path),Qi(t.updated,null,e.path)):"set"===e.type&&Qi(t.updated,e.value,e.path)}for(const r in e.updateCallbacks)if(e.updateCallbacks.hasOwnProperty(r))try{(0,e.updateCallbacks[r])(Ji(e.context),Ji(Object.assign({},t.added||{},t.updated||{},t.reset||{})),t.removed,parseInt(r,10),n)}catch(e){this._logger.debug("callback error: "+JSON.stringify(e))}}subscribeToContextDestroyedMessages(){const e=[$i,Ti];for(const t of e){const e=this._connection.on(t,this.handleContextDestroyedMessage.bind(this));this._gw3Subscriptions.push(e)}}handleContextDestroyedMessage(e){let t,n;if(e.type===Ti){if(n=e.activity_id,t=this._contextNameToId[n],!t)return void this._logger.error(`Received 'destroyed' for unknown activity: ${e.activity_id}`)}else if(t=e.context_id,n=this._contextIdToName[t],!n)return void this._logger.error(`Received 'destroyed' for unknown context: ${e.context_id}`);delete this._contextIdToName[t],delete this._contextNameToId[n];const r=this._contextNameToData[n];delete this._contextNameToData[n],r&&r.isAnnounced||this._logger.error(`Received 'destroyed' for unknown context: ${t}`)}sendSubscribe(e){return e.sentExplicitSubscription=!0,this._gw3Session.send({type:Oi,domain:"global",context_id:e.contextId}).then((e=>{}))}sendUnsubscribe(e){return e.sentExplicitSubscription=!1,this._gw3Session.send({type:Ni,domain:"global",context_id:e.contextId}).then((e=>{}))}calculateContextDeltaV1(e,t){const n={added:{},updated:{},removed:[],reset:void 0};if(e)for(const r of Object.keys(e))-1===Object.keys(t).indexOf(r)||null===t[r]||zi(e[r],t[r])||(n.updated[r]=t[r]);for(const r of Object.keys(t))e&&-1!==Object.keys(e).indexOf(r)?null===t[r]&&n.removed.push(r):null!==t[r]&&(n.added[r]=t[r]);return n}calculateContextDeltaV2(e,t){const n={added:{},updated:{},removed:[],reset:void 0,commands:[]};for(const r of Object.keys(t))null!==t[r]?zi(e?e[r]:null,t[r])||n.commands?.push({type:"set",path:r,value:t[r]}):n.commands?.push({type:"remove",path:r});return n}resetState(){for(const e of this._gw3Subscriptions)this._connection.off(e);this._systemContextsSubKey&&(this.unsubscribe(this._systemContextsSubKey),delete this._systemContextsSubKey),this._gw3Subscriptions=[],this._contextNameToId={},this._contextIdToName={},delete this._protocolVersion,this._contextsTempCache=Object.keys(this._contextNameToData).reduce(((e,t)=>(e[t]=this._contextNameToData[t].context,e)),{}),this._contextNameToData={}}async reInitiateState(){this.subscribeToContextCreatedMessages(),this.subscribeToContextUpdatedMessages(),this.subscribeToContextDestroyedMessages(),this._connection.replayer?.drain(Li.name,(e=>{const t=e.type;t&&(t===Fi||t===Di||t===Pi?this.handleContextCreatedMessage(e):t===Ri||t===qi||t===Bi?this.handleContextUpdatedMessage(e):t!==$i&&t!==Ti||this.handleContextDestroyedMessage(e))})),await Promise.all(this._contextsSubscriptionsCache.map((e=>this.subscribe(e.contextName,e.callback,e.subKey)))),await this.flushQueue();for(const e in this._contextsTempCache){if("object"!=typeof this._contextsTempCache[e]||0===Object.keys(this._contextsTempCache[e]).length)continue;const t=this._contextsTempCache[e];this._logger.info(`Re-announcing known context: ${e}`),await this.flushQueue(),await this.update(e,t)}this._contextsTempCache={},this._logger.info("Contexts are re-announced")}flushQueue(){return new Promise((e=>setTimeout((()=>e()),0)))}}(e)}all(){return this._bridge.all()}update(e,t){return this.checkName(e),this.checkData(t),this._bridge.update(e,t)}set(e,t){return this.checkName(e),this.checkData(t),this._bridge.set(e,t)}setPath(e,t,n){return this.checkName(e),this.checkPath(t),""===t?(this.checkData(n),this.set(e,n)):this._bridge.setPath(e,t,n)}setPaths(e,t){if(this.checkName(e),!Array.isArray(t))throw new Error("Please provide the paths as an array of PathValues!");for(const{path:e,value:n}of t)this.checkPath(e),""===e&&this.checkData(n);return this._bridge.setPaths(e,t)}subscribe(e,t){if(this.checkName(e),"function"!=typeof t)throw new Error("Please provide the callback as a function!");return this._bridge.subscribe(e,((e,n,r,i,s)=>t(e,n,r,(()=>this._bridge.unsubscribe(i)),s))).then((e=>()=>{this._bridge.unsubscribe(e)}))}get(e){return this.checkName(e),this._bridge.get(e)}ready(){return Promise.resolve(this)}destroy(e){return this.checkName(e),this._bridge.destroy(e)}get setPathSupported(){return this._bridge.setPathSupported}checkName(e){if("string"!=typeof e||""===e)throw new Error("Please provide the name as a non-empty string!")}checkPath(e){if("string"!=typeof e)throw new Error("Please provide the path as a dot delimited string!")}checkData(e){if("object"!=typeof e)throw new Error("Please provide the data as an object!")}}({connection:o,logger:c.subLogger("contexts"),trackAllContexts:"object"==typeof s.contexts&&s.contexts.trackAllContexts,reAnnounceKnownContexts:"object"==typeof s.contexts&&s.contexts.reAnnounceKnownContexts}),g("contexts",u,e),u}{const e=o.replayer;e&&e.drain(Li.name)}}async function w(){if(!s.bus)return Promise.resolve();const e=bi("bus");return h=new class{connection;logger;peerId;session;subscriptions;readyPromise;constructor(e,t){this.connection=e,this.logger=t,this.peerId=e.peerId,this.subscriptions=[],this.session=e.domain("bus",gs),this.readyPromise=this.session.join(),this.readyPromise.then((()=>{this.watchOnEvent()}))}ready(){return this.readyPromise}publish=(e,t,n)=>{const{routingKey:r,target:i}=n||{},s=this.removeEmptyValues({type:"publish",topic:e,data:t,peer_id:this.peerId,routing_key:r,target_identity:i});this.session.send(s)};subscribe=(e,t,n)=>new Promise(((r,i)=>{const{routingKey:s,target:o}=n||{},a=this.removeEmptyValues({type:"subscribe",topic:e,peer_id:this.peerId,routing_key:s,source:o});this.session.send(a).then((n=>{const{subscription_id:i}=n;this.subscriptions.push({subscription_id:i,topic:e,callback:t,source:o}),r({unsubscribe:()=>(this.session.send({type:"unsubscribe",subscription_id:i,peer_id:this.peerId}),this.subscriptions=this.subscriptions.filter((e=>e.subscription_id!==i)),Promise.resolve())})})).catch((e=>i(e)))}));watchOnEvent=()=>{this.session.on("event",(e=>{const{data:t,subscription_id:n}=e,r=e["publisher-identity"],i=this.subscriptions.find((e=>e.subscription_id===n));i&&(i.source?this.keysMatch(i.source,r)&&i.callback(t,i.topic,r):i.callback(t,i.topic,r))}))};removeEmptyValues(e){const t={};return Object.keys(e).forEach((n=>{void 0!==e[n]&&null!==e[n]&&(t[n]=e[n])})),t}keysMatch(e,t){const n=Object.keys(e);let r=!0;return n.forEach((n=>{e[n]!==t[n]&&(r=!1)})),r}}(o,c.subLogger("bus")),g("bus",h,e),Promise.resolve()}function v(e){try{return e.forEach((e=>{!function(e,t){const n=bi(e),r=t(p);r&&g(e,r,n)}(e.name,e.create)})),Promise.resolve()}catch(e){return Promise.reject(e)}}return r.then((function(){const e=bi("logger");return c=new ki(`${s.connection.identity?.application}`,void 0,s.customLogger),c.consoleLevel(s.logger.console),c.publishLevel(s.logger.publish),c.canPublish("debug")&&c.debug("initializing glue..."),g("logger",c,e),Promise.resolve(void 0)})).then((function(){const e=bi("connection");o=new class{settings;logger;protocolVersion=3;peerId;token;info;resolvedIdentity;availableDomains;gatewayToken;replayer;messageHandlers={};ids=1;registry=mi();_connected=!1;isTrace=!1;transport;_defaultTransport;_defaultAuth;_targetTransport;_targetAuth;_swapTransport=!1;_switchInProgress=!1;_transportSubscriptions=[];datePrefix="#T42_DATE#";datePrefixLen=this.datePrefix.length;dateMinLen=this.datePrefixLen+1;datePrefixFirstChar=this.datePrefix[0];_sequelizer=new class{minSequenceInterval;queue=[];isExecutingQueue=!1;constructor(e=0){this.minSequenceInterval=e}enqueue(e){return new Promise(((t,n)=>{this.queue.push({action:e,resolve:t,reject:n}),this.executeQueue()}))}async executeQueue(){if(!this.isExecutingQueue){for(this.isExecutingQueue=!0;this.queue.length;){const e=this.queue.shift();if(!e)return void(this.isExecutingQueue=!1);try{const t=await e.action();e.resolve(t)}catch(t){e.reject(t)}await this.intervalBreak()}this.isExecutingQueue=!1}}intervalBreak(){return new Promise((e=>setTimeout(e,this.minSequenceInterval)))}};_isLoggedIn=!1;shouldTryLogin=!0;pingTimer;sessions=[];globalDomain;initialLogin=!0;initialLoginAttempts=3;loginConfig;constructor(e,t){if(this.settings=e,this.logger=t,(e=e||{}).reconnectAttempts=e.reconnectAttempts??10,e.reconnectInterval=e.reconnectInterval??1e3,e.inproc)this.transport=new class{gw;registry=mi();client;constructor(e,t){this.gw=e.facade,this.gw.connect(((e,t)=>{this.messageHandler(t)})).then((e=>{this.client=e}))}get isObjectBasedTransport(){return!0}sendObject(e){return this.client?(this.client.send(e),Promise.resolve(void 0)):Promise.reject("not connected")}send(e){return Promise.reject("not supported")}onMessage(e){return this.registry.add("onMessage",e)}onConnectedChanged(e){return e(!0),()=>{}}close(){return Promise.resolve()}open(){return Promise.resolve()}name(){return"in-memory"}reconnect(){return Promise.resolve()}messageHandler(e){this.registry.execute("onMessage",e)}}(e.inproc,t.subLogger("inMemory"));else if(e.sharedWorker)this.transport=new class{logger;worker;registry=mi();constructor(e,t){this.logger=t,this.worker=new SharedWorker(e),this.worker.port.onmessage=e=>{this.messageHandler(e.data)}}get isObjectBasedTransport(){return!0}sendObject(e){return this.worker.port.postMessage(e),Promise.resolve()}send(e){return Promise.reject("not supported")}onMessage(e){return this.registry.add("onMessage",e)}onConnectedChanged(e){return e(!0),()=>{}}close(){return Promise.resolve()}open(){return Promise.resolve()}name(){return"shared-worker"}reconnect(){return Promise.resolve()}messageHandler(e){this.registry.execute("onMessage",e)}}(e.sharedWorker,t.subLogger("shared-worker"));else if(e.webPlatform)this.transport=new class{settings;logger;identity;isPreferredActivated;_communicationId;publicWindowId;selfAssignedWindowId;iAmConnected=!1;parentReady=!1;rejected=!1;parentPingResolve;parentPingInterval;connectionResolve;extConnectionResolve;extConnectionReject;connectionReject;port;myClientId;children=[];extContentAvailable=!1;extContentConnecting=!1;extContentConnected=!1;parentWindowId;parentInExtMode=!1;webNamespace="g42_core_web";parent;parentType;parentPingTimeout=5e3;connectionRequestTimeout=7e3;defaultTargetString="*";registry=mi();messages={connectionAccepted:{name:"connectionAccepted",handle:this.handleConnectionAccepted.bind(this)},connectionRejected:{name:"connectionRejected",handle:this.handleConnectionRejected.bind(this)},connectionRequest:{name:"connectionRequest",handle:this.handleConnectionRequest.bind(this)},parentReady:{name:"parentReady",handle:()=>{}},parentPing:{name:"parentPing",handle:this.handleParentPing.bind(this)},platformPing:{name:"platformPing",handle:this.handlePlatformPing.bind(this)},platformReady:{name:"platformReady",handle:this.handlePlatformReady.bind(this)},clientUnload:{name:"clientUnload",handle:this.handleClientUnload.bind(this)},manualUnload:{name:"manualUnload",handle:this.handleManualUnload.bind(this)},extConnectionResponse:{name:"extConnectionResponse",handle:this.handleExtConnectionResponse.bind(this)},extSetupRequest:{name:"extSetupRequest",handle:this.handleExtSetupRequest.bind(this)},gatewayDisconnect:{name:"gatewayDisconnect",handle:this.handleGatewayDisconnect.bind(this)},gatewayInternalConnect:{name:"gatewayInternalConnect",handle:this.handleGatewayInternalConnect.bind(this)}};constructor(e,t,n){this.settings=e,this.logger=t,this.identity=n,this.extContentAvailable=!!window.glue42ext,this.setUpMessageListener(),this.setUpUnload(),this.setupPlatformUnloadListener(),this.parentType=window.name.includes("#wsp")?"workspace":void 0}manualSetReadyState(){this.iAmConnected=!0,this.parentReady=!0}get transportWindowId(){return this.publicWindowId}get communicationId(){return this._communicationId}async sendObject(e){if(this.extContentConnected)return window.postMessage({glue42ExtOut:e},this.defaultTargetString);if(!this.port)throw new Error("Cannot send message, because the port was not opened yet");this.port.postMessage(e)}get isObjectBasedTransport(){return!0}onMessage(e){return this.registry.add("onMessage",e)}send(){return Promise.reject("not supported")}onConnectedChanged(e){return this.registry.add("onConnectedChanged",e)}async open(){this.logger.debug("opening a connection to the web platform gateway."),await this.connect(),this.notifyStatusChanged(!0)}close(){const e={glue42core:{type:this.messages.gatewayDisconnect.name,data:{clientId:this.myClientId,ownWindowId:this.identity?.windowId}}};return this.port?.postMessage(e),this.parentReady=!1,this.notifyStatusChanged(!1,"manual reconnection"),Promise.resolve()}name(){return"web-platform"}async reconnect(){return await this.close(),Promise.resolve()}initiateInternalConnection(){return new Promise(((e,t)=>{this.logger.debug("opening an internal web platform connection"),this.port=this.settings.port,this.iAmConnected?this.logger.warn("cannot open a new connection, because this client is currently connected"):(this.port.onmessage=n=>{if(this.iAmConnected&&!n.data?.glue42core)return void this.registry.execute("onMessage",n.data);const r=n.data?.glue42core;r&&(r.type===this.messages.gatewayInternalConnect.name&&r.success&&(this.publicWindowId=this.settings.windowId,this.identity&&this.publicWindowId&&(this.identity.windowId=this.publicWindowId,this.identity.instance=this.publicWindowId),e()),r.type===this.messages.gatewayInternalConnect.name&&r.error&&t(r.error))},this.port.postMessage({glue42core:{type:this.messages.gatewayInternalConnect.name}}))}))}initiateRemoteConnection(e){return Ii(((t,n)=>{this.connectionResolve=t,this.connectionReject=n,this.myClientId=this.myClientId??xi(10);const r=this.getMyWindowId()||xi(10),i={glue42core:{type:this.messages.connectionRequest.name,clientId:this.myClientId,clientType:"child",bridgeInstanceId:r,selfAssignedWindowId:this.selfAssignedWindowId}};if(this.logger.debug("sending connection request"),this.extContentConnecting)return i.glue42core.clientType="child",i.glue42core.bridgeInstanceId=this.myClientId,i.glue42core.parentWindowId=this.parentWindowId,window.postMessage(i,this.defaultTargetString);if(!e)throw new Error("Cannot send a connection request, because no glue target was specified!");e.postMessage(i,this.defaultTargetString)}),this.connectionRequestTimeout,"The connection to the target glue window timed out")}async isParentCheckSuccess(e){try{return await e,{success:!0}}catch(e){return{success:!1}}}setUpMessageListener(){this.settings.port?this.logger.debug("skipping generic message listener, because this is an internal client"):window.addEventListener("message",(e=>{const t=e.data?.glue42core;if(!t||this.rejected)return;const n=this.settings.allowedOrigins||[];if(n.length&&!n.includes(e.origin))return void this.logger.warn(`received a message from an origin which is not in the allowed list: ${e.origin}`);if(!this.checkMessageTypeValid(t.type))return void this.logger.error(`cannot handle the incoming glue42 core message, because the type is invalid: ${t.type}`);const r=t.type;this.logger.debug(`received valid glue42core message of type: ${r}`),this.messages[r].handle(e)}))}setUpUnload(){this.settings.port?this.logger.debug("skipping unload event listener, because this is an internal client"):window.addEventListener("beforeunload",(()=>{if(this.extContentConnected)return;const e={glue42core:{type:this.messages.clientUnload.name,data:{clientId:this.myClientId,ownWindowId:this.identity?.windowId}}};this.parent&&this.parent.postMessage(e,this.defaultTargetString),this.port?.postMessage(e)}))}handlePlatformReady(e){this.logger.debug("the web platform gave the ready signal"),this.parentReady=!0,this.parentPingResolve&&(this.parentPingResolve(),delete this.parentPingResolve),this.parentPingInterval&&(clearInterval(this.parentPingInterval),delete this.parentPingInterval),this.parent=e.source,this.parentType=window.name.includes("#wsp")?"workspace":"window"}handleConnectionAccepted(e){const t=e.data?.glue42core;return this.myClientId===t.clientId?this.handleAcceptanceOfMyRequest(t):this.handleAcceptanceOfGrandChildRequest(t,e)}handleAcceptanceOfMyRequest(e){if(this.logger.debug("handling a connection accepted signal targeted at me."),this.isPreferredActivated=e.isPreferredActivated,this.extContentConnecting)return this.processExtContentConnection(e);if(e.port){if(this.publicWindowId=this.getMyWindowId(),this.identity&&(this.identity.windowId=this.publicWindowId,this.identity.instance=this.identity.instance?this.identity.instance:this.publicWindowId||xi(10)),this.identity&&e.appName&&(this.identity.application=e.appName,this.identity.applicationName=e.appName),this._communicationId=e.communicationId,this.port=e.port,this.port.onmessage=e=>this.registry.execute("onMessage",e.data),this.connectionResolve)return this.logger.debug("my connection is set up, calling the connection resolve."),this.connectionResolve(),void delete this.connectionResolve;this.logger.error("unable to call the connection resolve, because no connection promise was found")}else this.logger.error("cannot set up my connection, because I was not provided with a port")}processExtContentConnection(e){if(this.logger.debug("handling a connection accepted signal targeted at me for extension content connection."),this.extContentConnecting=!1,this.extContentConnected=!0,this.publicWindowId=this.parentWindowId||this.myClientId,this.extContentConnecting&&this.identity&&(this.identity.windowId=this.publicWindowId),this.identity&&e.appName&&(this.identity.application=e.appName,this.identity.applicationName=e.appName),window.addEventListener("message",(e=>{const t=e.data?.glue42ExtInc;if(!t)return;const n=this.settings.allowedOrigins||[];!n.length||n.includes(e.origin)?this.registry.execute("onMessage",t):this.logger.warn(`received a message from an origin which is not in the allowed list: ${e.origin}`)})),this.connectionResolve)return this.logger.debug("my connection is set up, calling the connection resolve."),this.connectionResolve(),void delete this.connectionResolve}handleAcceptanceOfGrandChildRequest(e,t){if(this.extContentConnecting||this.extContentConnected)return void this.logger.debug("cannot process acceptance of a grandchild, because I am connected to a content script");this.logger.debug(`handling a connection accepted signal targeted at a grandchild: ${e.clientId}`);const n=this.children.find((t=>t.grandChildId===e.clientId));n?(n.connected=!0,this.logger.debug(`the grandchild connection for ${e.clientId} is set up, forwarding the success message and the gateway port`),e.parentWindowId=this.publicWindowId,n.source.postMessage(t.data,n.origin,[e.port])):this.logger.error(`cannot handle connection accepted for grandchild: ${e.clientId}, because there is no grandchild with this id`)}handleConnectionRejected(){this.logger.debug("handling a connection rejection. Most likely the reason is that this window was not created by a glue API call"),this.connectionReject&&(this.connectionReject("The platform connection was rejected. Most likely because this window was not created by a glue API call"),delete this.connectionReject)}handleConnectionRequest(e){if(this.extContentConnecting)return void this.logger.debug("This connection request event is targeted at the extension content");const t=e.source,n=e.data.glue42core;return n.clientType&&"grandChild"===n.clientType?n.clientId?this.parent?(this.logger.debug(`handling a connection request for a grandchild: ${n.clientId}`),this.children.push({grandChildId:n.clientId,source:t,connected:!1,origin:e.origin}),this.logger.debug(`grandchild: ${n.clientId} is prepared, forwarding connection request to the platform`),void this.parent.postMessage(e.data,this.defaultTargetString)):this.rejectConnectionRequest(t,e.origin,"Cannot forward the connection request, because no direct connection to the platform was found"):this.rejectConnectionRequest(t,e.origin,"rejecting a connection request, because the source did not provide a valid id"):this.rejectConnectionRequest(t,e.origin,"rejecting a connection request, because the source was not opened by a glue API call")}handleParentPing(e){if(!this.parentReady)return void this.logger.debug("my parent is not ready, I am ignoring the parent ping");if(!this.iAmConnected)return void this.logger.debug("i am not fully connected yet, I am ignoring the parent ping");const t={glue42core:{type:this.messages.parentReady.name}};this.extContentConnected&&(t.glue42core.extMode={windowId:this.myClientId});const n=e.source;this.logger.debug("responding to a parent ping with a ready message"),n.postMessage(t,e.origin)}setupPlatformUnloadListener(){this.onMessage((e=>{"platformUnload"===e.type&&(this.logger.debug("detected a web platform unload"),this.parentReady=!1,this.notifyStatusChanged(!1,"Gateway unloaded"))}))}handleManualUnload(){const e={glue42core:{type:this.messages.clientUnload.name,data:{clientId:this.myClientId,ownWindowId:this.identity?.windowId}}};if(this.extContentConnected)return window.postMessage({glue42ExtOut:e},this.defaultTargetString);this.port?.postMessage(e)}handleClientUnload(e){const t=e.data.glue42core,n=t?.data.clientId;n?this.children.find((e=>e.grandChildId===n))?(this.logger.debug(`handling grandchild unload for id: ${n}`),this.children=this.children.filter((e=>e.grandChildId!==n))):this.logger.warn("cannot process grand child unload, because this client is unaware of this grandchild"):this.logger.warn("cannot process grand child unload, because the provided id was not valid")}handlePlatformPing(){}notifyStatusChanged(e,t){this.iAmConnected=e,this.registry.execute("onConnectedChanged",e,t)}checkMessageTypeValid(e){return"string"==typeof e&&!!this.messages[e]}rejectConnectionRequest(e,t,n){this.rejected=!0,this.logger.error(n);const r={glue42core:{type:this.messages.connectionRejected.name}};e.postMessage(r,t)}requestConnectionPermissionFromExt(){return this.waitForContentScript().then((()=>Ii(((e,t)=>{this.extConnectionResolve=e,this.extConnectionReject=t,this.logger.debug("permission request to the extension content script was sent"),window.postMessage({glue42core:{type:"extSetupRequest"}},this.defaultTargetString)}),this.parentPingTimeout,"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out")))}handleExtConnectionResponse(e){const t=e.data?.glue42core;if(!t.approved)return this.extConnectionReject?this.extConnectionReject("Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection was rejected"):void 0;this.extConnectionResolve&&(this.extConnectionResolve(),delete this.extConnectionResolve),this.extContentConnecting=!0,this.parentType="extension",this.logger.debug("The extension connection was approved, proceeding.")}handleExtSetupRequest(){}handleGatewayDisconnect(){}handleGatewayInternalConnect(){}waitForContentScript(){return window.glue42ext?.content?Promise.resolve():Ii((e=>{window.addEventListener("Glue42EXTReady",(()=>{e()}))}),this.connectionRequestTimeout,"The content script was available, but was never heard to be ready")}async connect(){if(this.settings.port)return await this.initiateInternalConnection(),void this.logger.debug("internal web platform connection completed");this.logger.debug("opening a client web platform connection"),await this.findParent(),await this.initiateRemoteConnection(this.parent),this.logger.debug("the client is connected")}async findParent(){const e="Cannot initiate glue, because this window was not opened or created by a glue client",t=this.getPossibleParentsInWindow(window),n=this.getPossibleParentsOutsideWindow(window.top?.opener,window.top),r=new Set([...t,...n]);if(!r.size&&!this.extContentAvailable)throw new Error(e);if(r.size||!this.extContentAvailable)if((await this.isParentCheckSuccess(this.confirmParent(Array.from(r)))).success)this.logger.debug("The default parent was found!");else{if(!this.extContentAvailable)throw new Error(e);await this.requestConnectionPermissionFromExt()}else await this.requestConnectionPermissionFromExt()}getPossibleParentsInWindow(e){return e&&e!==e.top?[e.parent,...this.getPossibleParentsInWindow(e.parent)]:[]}getPossibleParentsOutsideWindow(e,t){return e&&t&&e!==t?[e,...this.getPossibleParentsInWindow(e),...this.getPossibleParentsOutsideWindow(e.opener,e)]:[]}confirmParent(e){const t=Ii((t=>{this.parentPingResolve=t;const n={glue42core:{type:this.messages.platformPing.name}};this.parentPingInterval=setInterval((()=>{e.forEach((e=>{e.postMessage(n,this.defaultTargetString)}))}),1e3)}),this.parentPingTimeout,"Cannot initiate glue, because this window was not opened or created by a glue client");return t.catch((()=>{this.parentPingInterval&&(clearInterval(this.parentPingInterval),delete this.parentPingInterval)})),t}getMyWindowId(){return"workspace"===this.parentType?window.name.substring(0,window.name.indexOf("#wsp")):window===window.top?window.name?.includes("g42")?window.name:(this.selfAssignedWindowId=this.selfAssignedWindowId||`g42-${xi(10)}`,this.selfAssignedWindowId):void 0}}(e.webPlatform,t.subLogger("web-platform"),e.identity);else{if(void 0===e.ws)throw new Error("No connection information specified");this.transport=new Ci(e,t.subLogger("ws"))}this.isTrace=t.canPublish("trace"),t.debug(`starting with ${this.transport.name()} transport`);const n=this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)),r=this.transport.onMessage(this.handleTransportMessage.bind(this));this._transportSubscriptions.push(n),this._transportSubscriptions.push(r),this._defaultTransport=this.transport,this.ping()}async switchTransport(e){return this._sequelizer.enqueue((async()=>{if(!e||"object"!=typeof e)throw new Error("Cannot switch transports, because the settings are missing or invalid.");if(void 0===e.type)throw new Error("Cannot switch the transport, because the type is not defined");this.logger.trace(`Starting transport switch with settings: ${JSON.stringify(e)}`);const t="secondary"===e.type?this.getNewSecondaryTransport(e):this._defaultTransport;this._targetTransport=t,this._targetAuth="secondary"===e.type?this.getNewSecondaryAuth(e):this._defaultAuth;const n=this.verifyConnection();this._swapTransport=!0,this._switchInProgress=!0,this.logger.trace("The new transport has been set, closing the current transport"),await this.transport.close();try{await n;const e=this.transport===t;return this.logger.info(`The reconnection after the switch was completed. Was the switch a success: ${e}`),this._switchInProgress=!1,{success:e}}catch(e){return this.logger.info("The reconnection after the switch timed out, reverting back to the default transport."),this.switchTransport({type:"default"}),this._switchInProgress=!1,{success:!1}}}))}onLibReAnnounced(e){return this.registry.add("libReAnnounced",e)}setLibReAnnounced(e){this.registry.execute("libReAnnounced",e)}send(e,t){if(this.transport.sendObject&&this.transport.isObjectBasedTransport){const n=this.createObjectMessage(e);return this.isTrace&&this.logger.trace(`>> ${JSON.stringify(n)}`),this.transport.sendObject(n,t)}{const n=this.createStringMessage(e);return this.isTrace&&this.logger.trace(`>> ${n}`),this.transport.send(n,t)}}on(e,t){e=e.toLowerCase(),void 0===this.messageHandlers[e]&&(this.messageHandlers[e]={});const n=this.ids++;return this.messageHandlers[e][n]=t,{type:e,id:n}}off(e){delete this.messageHandlers[e.type.toLowerCase()][e.id]}get isConnected(){return this._isLoggedIn}connected(e){return this.loggedIn((()=>{const t=this.transport.name();e(t)}))}disconnected(e){return this.registry.add("disconnected",e)}async login(e,t){this._defaultAuth||(this._defaultAuth=e),this._swapTransport&&(this.logger.trace("Detected a transport swap, swapping transports"),e=this.transportSwap()??e),this.logger.trace(`Starting login for transport: ${this.transport.name()} and auth ${JSON.stringify(e)}`);try{await this.transport.open(),this.logger.trace(`Transport: ${this.transport.name()} opened, logging in`),bi("connection").mark("transport-opened");const n=await this.loginCore(e,t);return this.logger.trace(`Logged in with identity: ${JSON.stringify(n)}`),bi("connection").mark("protocol-logged-in"),n}catch(e){throw this._switchInProgress&&(this.logger.trace("An error while logging in after a transport swap, preparing a default swap."),this.prepareDefaultSwap()),new Error(e)}}async logout(){await this.logoutCore(),await this.transport.close()}loggedIn(e){return this._isLoggedIn&&e(),this.registry.add("onLoggedIn",e)}domain(e,t,n){let r=this.sessions.find((t=>t.domain===e));return r||(r=Ei(e,this,this.logger.subLogger(`domain=${e}`),t,n),this.sessions.push(r)),r}authToken(){return this.globalDomain?this.globalDomain.send({domain:"global",type:"create-token"}).then((e=>e.token)):Promise.reject(new Error("no global domain session"))}reconnect(){return this.transport.reconnect()}setLoggedIn(e){this._isLoggedIn=e,this._isLoggedIn&&this.registry.execute("onLoggedIn")}distributeMessage(e,t){const n=this.messageHandlers[t.toLowerCase()];void 0!==n&&Object.keys(n).forEach((t=>{const r=n[t];if(void 0!==r)try{r(e)}catch(e){try{this.logger.error(`Message handler failed with ${e.stack}`,e)}catch(t){console.log("Message handler failed",e)}}}))}handleConnectionChanged(e){this._connected!==e&&(this._connected=e,e?(this.settings?.replaySpecs?.length&&(this.replayer=new class{specs;specsNames=[];messages={};isDone;subs={};subsRefCount={};connection;constructor(e){this.specs={};for(const t of e)this.specs[t.name]=t,this.specsNames.push(t.name)}init(e){this.connection=e;for(const t of this.specsNames)for(const n of this.specs[t].types){let t=this.subsRefCount[n];if(t||(t=0),t+=1,this.subsRefCount[n]=t,t>1)continue;const r=e.on(n,(e=>this.processMessage(n,e)));this.subs[n]=r}}processMessage(e,t){if(!this.isDone&&t)for(const n of this.specsNames)if(-1!==this.specs[n].types.indexOf(e)){const e=this.messages[n]||[];this.messages[n]=e,e.push(t)}}drain(e,t){t&&(this.messages[e]||[]).forEach(t),delete this.messages[e];for(const t of this.specs[e].types)this.subsRefCount[t]-=1,this.subsRefCount[t]<=0&&(this.connection?.off(this.subs[t]),delete this.subs[t],delete this.subsRefCount[t]);delete this.specs[e],this.specs.length||(this.isDone=!0)}}(this.settings.replaySpecs),this.replayer.init(this)),this.registry.execute("connected")):(this.handleDisconnected(),this.registry.execute("disconnected")))}handleDisconnected(){if(this.setLoggedIn(!1),this.shouldTryLogin&&this.initialLogin){if(this.initialLoginAttempts<=0)return;this.initialLoginAttempts--}if(this.logger.debug("disconnected - will try new login?"+this.shouldTryLogin),this.shouldTryLogin){if(!this.loginConfig)throw new Error("no login info");this.login(this.loginConfig,!0).catch((()=>{setTimeout(this.handleDisconnected.bind(this),this.settings.reconnectInterval||1e3)}))}}handleTransportMessage(e){let t;t="string"==typeof e?this.processStringMessage(e):this.processObjectMessage(e),this.isTrace&&this.logger.trace(`<< ${JSON.stringify(t)}`),this.distributeMessage(t.msg,t.msgType)}verifyConnection(){return Ii((e=>{let t;const n=((e,t)=>{let n=2;return()=>{n--,0===n&&t()}})(0,(()=>{t&&t(),e()}));t=this.onLibReAnnounced((e=>"interop"===e.name||"contexts"===e.name?n():void 0))}),1e4,"Transport switch timed out waiting for all libraries to be re-announced")}getNewSecondaryTransport(e){if(!e.transportConfig?.url)throw new Error("Missing secondary transport URL.");return new Ci(Object.assign({},this.settings,{ws:e.transportConfig.url,reconnectAttempts:1}),this.logger.subLogger("ws-secondary"))}getNewSecondaryAuth(e){if(!e.transportConfig?.auth)throw new Error("Missing secondary transport auth information.");return e.transportConfig.auth}transportSwap(){if(this._swapTransport=!1,!this._targetTransport||!this._targetAuth)return void this.logger.warn(`Error while switching transports - either the target transport or auth is not defined: transport defined -> ${!!this._defaultTransport}, auth defined -> ${!!this._targetAuth}. Staying on the current one.`);this._transportSubscriptions.forEach((e=>e())),this._transportSubscriptions=[],this.transport=this._targetTransport;const e=this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)),t=this.transport.onMessage(this.handleTransportMessage.bind(this));return this._transportSubscriptions.push(e),this._transportSubscriptions.push(t),this._targetAuth}prepareDefaultSwap(){this._transportSubscriptions.forEach((e=>e())),this._transportSubscriptions=[],this.transport.close().catch((e=>this.logger.warn(`Error closing the ${this.transport.name()} transport after a failed connection attempt: ${JSON.stringify(e)}`))),this._targetTransport=this._defaultTransport,this._targetAuth=this._defaultAuth,this._swapTransport=!0}processStringMessage(e){const t=JSON.parse(e,((e,t)=>{if("string"!=typeof t)return t;if(t.length{e.leave()}));await Promise.all(e)}getNewGWToken(){if("undefined"!=typeof window){const e=window.glue42gd;if(e)return e.getGWToken()}return Promise.reject(new Error("not running in GD"))}ping(){this.shouldTryLogin&&(this._isLoggedIn&&this.send({type:"ping"}),this.pingTimer=setTimeout((()=>{this.ping()}),3e4))}}(s.connection,c.subLogger("connection"));let t=Promise.resolve(s.auth);return s.connection&&!s.auth&&(n?t=n.getGWToken().then((e=>({gatewayToken:e}))):"undefined"!=typeof window&&window?.glue42electron?"string"==typeof window.glue42electron.gwToken&&(t=Promise.resolve({gatewayToken:window.glue42electron.gwToken})):t=Promise.reject("You need to provide auth information")),t.then((t=>{let n;if(e.mark("auth-promise-resolved"),"[object Object]"!==Object.prototype.toString.call(t))throw new Error("Invalid auth object - "+JSON.stringify(t));return n=t,o.login(n)})).then((()=>(g("connection",o,e),s))).catch((e=>{throw o&&o.logout(),e}))})).then((()=>Promise.all([f(),m(),y(),w()]))).then((()=>a.readyPromise)).then((()=>async function(){const t="T42.ACS.RegisterInstance";if(yi.isNode()&&void 0===process.env._GD_STARTING_CONTEXT_&&void 0!==e?.application&&a.methods({name:t}).length>0)try{await a.invoke(t,{appName:e?.application,pid:process.pid})}catch(e){const t=e;c.error(`Cannot register as an instance: ${JSON.stringify(t.message)}`)}}())).then((()=>v(s.libs||[]))).then((function(){const e=Object.keys(p).map((e=>{const t=p[e];return t.ready?t.ready():Promise.resolve()}));return Promise.all(e)})).then((function(){const r={coreVersion:Wi,version:s.version};i.stop();const d={feedback:e=>{a&&a.invoke("T42.ACS.Feedback",e,"best")},info:r,logger:c,interop:a,agm:a,connection:o,metrics:l,contexts:u,bus:h,version:s.version,userConfig:e,done:()=>(c?.info("done called by user..."),o.logout())};if(d.performance={get glueVer(){return s.version},get glueConfig(){return JSON.stringify(e)},get browser(){return window.performance.timing.toJSON()},get memory(){return window.performance.memory},get initTimes(){const e=vi;return Object.keys(e).map((t=>{const n=e[t];return{name:t,duration:n.endTime-n.startTime,marks:n.marks,startTime:n.startTime,endTime:n.endTime}}))}},Object.keys(p).forEach((e=>{const t=p[e];d[e]=t})),d.config={},Object.keys(s).forEach((e=>{d.config[e]=s[e]})),t&&t.extOptions&&Object.keys(t.extOptions).forEach((e=>{d.config[e]=t?.extOptions[e]})),t?.enrichGlue&&t.enrichGlue(d),n&&n.updatePerfData&&n.updatePerfData(d.performance),d.agm){const e=(e,t,n)=>function(){return d.logger.warn(`glue.js - 'glue.agm.${t}' method is deprecated, use 'glue.interop.${n}' instead.`),e.apply(d.agm,arguments)},t=d.agm;t.method_added=e(d.agm.methodAdded,"method_added","methodAdded"),t.method_removed=e(d.agm.methodRemoved,"method_removed","methodRemoved"),t.server_added=e(d.agm.serverAdded,"server_added","serverAdded"),t.server_method_aded=e(d.agm.serverMethodAdded,"server_method_aded","serverMethodAdded"),t.server_method_removed=e(d.agm.serverMethodRemoved,"server_method_removed","serverMethodRemoved")}return d})).catch((e=>Promise.reject({err:e,libs:p})))};"undefined"!=typeof window&&(window.IOConnectCore=fs),fs.version=Wi,fs.default=fs;const ms=(ys=fs,async e=>{if(window.glue42gd||window.iodesktop)return(e=>{const t={windows:!0,layouts:"full",appManager:"full",channels:!0,libraries:e?.libraries??[],logger:e?.systemLogger?.level??"warn"};return(window.IODesktop||window.Glue)(t)})(e);const n=new class{_coreGlue;_communicationId;_publicWindowId;_webConfig;_windowsControllerInstance;_appManagerControllerInstance;_layoutsControllerInstance;_notificationsControllerInstance;_intentsControllerInstance;_legacyIntentsHelperInstance;_channelsControllerInstance;_themesControllerInstance;_extensionController;_systemControllerInstance;_bridgeInstance;_eventsDispatcher;_preferredConnectionController;_sessionController;_prefsControllerInstance;controllers={windows:this.windowsController,appManager:this.appManagerController,layouts:this.layoutsController,notifications:this.notificationsController,intents:this.intentsController,channels:this.channelsController,system:this.systemController,extension:this.extensionController,themes:this.themesController,prefs:this.prefsController};get communicationId(){return this._communicationId}get publicWindowId(){return this._publicWindowId}get windowsController(){return this._windowsControllerInstance||(this._windowsControllerInstance=new class{focusEventHandler;registry=hr();platformRegistration;ioc;bridge;publicWindowId;allWindowProjections=[];me;logger;isWorkspaceFrame;instanceId;channelsController;async start(e,t){this.logger=e.logger.subLogger("windows.controller.web"),this.logger.trace("starting the web windows controller"),this.publicWindowId=t.publicWindowId,this.addWindowOperationExecutors(),this.ioc=t,this.bridge=t.bridge,this.instanceId=e.interop.instance.instance,this.channelsController=t.channelsController,this.logger.trace(`set the public window id: ${this.publicWindowId}, set the bridge operations and ioc, registering with the platform now`),this.platformRegistration=this.registerWithPlatform(),await this.platformRegistration,await this.initializeFocusTracking(),this.logger.trace("registration with the platform successful, attaching the windows property to glue and returning");const n=this.toApi();e.windows=n}handlePlatformShutdown(){this.registry.clear(),this.allWindowProjections=[],this.focusEventHandler&&(document.removeEventListener("visibilityChange",this.focusEventHandler),window.removeEventListener("focus",this.focusEventHandler),window.removeEventListener("blur",this.focusEventHandler))}async handleBridgeMessage(e){await this.platformRegistration;const t=Ce.runWithException(e.operation),n=cr[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),await n.execute(r)}async open(e,t,n){we.runWithException(e),we.runWithException(t);const r=Pe.runWithException(n),i=await this.bridge.send("windows",cr.openWindow,{name:e,url:t,options:r});return this.waitForWindowAdded(i.windowId)}list(){return this.allWindowProjections.map((e=>e.api))}findById(e){return we.runWithException(e),this.allWindowProjections.find((t=>t.id===e))?.api}toApi(){return{open:this.open.bind(this),my:this.my.bind(this),list:this.list.bind(this),findById:this.findById.bind(this),onWindowAdded:this.onWindowAdded.bind(this),onWindowRemoved:this.onWindowRemoved.bind(this),onWindowGotFocus:this.onWindowGotFocus.bind(this),onWindowLostFocus:this.onWindowLostFocus.bind(this)}}addWindowOperationExecutors(){cr.focusChange.execute=this.handleFocusChangeEvent.bind(this),cr.windowAdded.execute=this.handleWindowAdded.bind(this),cr.windowRemoved.execute=this.handleWindowRemoved.bind(this),cr.getBounds.execute=this.handleGetBounds.bind(this),cr.getFrameBounds.execute=this.handleGetBounds.bind(this),cr.getTitle.execute=this.handleGetTitle.bind(this),cr.getUrl.execute=this.handleGetUrl.bind(this),cr.moveResize.execute=this.handleMoveResize.bind(this),cr.setTitle.execute=this.handleSetTitle.bind(this),cr.getChannel.execute=this.handleGetChannel.bind(this)}my(){return Object.assign({},this.me)}onWindowAdded(e){if("function"!=typeof e)throw new Error("Cannot subscribe to window added, because the provided callback is not a function!");return this.registry.add("window-added",e)}onWindowRemoved(e){if("function"!=typeof e)throw new Error("Cannot subscribe to window removed, because the provided callback is not a function!");return this.registry.add("window-removed",e)}onWindowGotFocus(e){if("function"!=typeof e)throw new Error("Cannot subscribe to onWindowGotFocus, because the provided callback is not a function!");return this.registry.add("window-got-focus",e)}onWindowLostFocus(e){if("function"!=typeof e)throw new Error("Cannot subscribe to onWindowLostFocus, because the provided callback is not a function!");return this.registry.add("window-lost-focus",e)}async sayHello(){return await this.bridge.send("windows",cr.windowHello,{windowId:this.publicWindowId})}async registerWithPlatform(){const{windows:e,isWorkspaceFrame:t}=await this.sayHello();if(this.isWorkspaceFrame=t,this.logger.trace("the platform responded to the hello message"),!this.isWorkspaceFrame&&this.publicWindowId){this.logger.trace("i am not treated as a workspace frame, setting my window");const t=e.find((e=>e.windowId===this.publicWindowId));if(!t)throw new Error("Cannot initialize the window library, because I received no information about me from the platform");const n=await this.ioc.buildWebWindow(this.publicWindowId,t.name);this.me=n.api,this.allWindowProjections.push(n)}const n=await Promise.all(e.filter((e=>e.windowId!==this.publicWindowId)).map((e=>this.ioc.buildWebWindow(e.windowId,e.name))));this.logger.trace("all windows projections are completed, building the list collection"),this.allWindowProjections.push(...n)}async handleFocusChangeEvent(e){const t=this.allWindowProjections.find((t=>t.id===e.windowId));if(!t)return;t.model.processSelfFocusEvent(e.hasFocus);const n=e.hasFocus?"window-got-focus":"window-lost-focus";this.registry.execute(n,t.api)}async handleWindowAdded(e){if(this.allWindowProjections.some((t=>t.id===e.windowId)))return;const t=await this.ioc.buildWebWindow(e.windowId,e.name);this.allWindowProjections.push(t),this.registry.execute("window-added",t.api)}async handleWindowRemoved(e){const t=this.allWindowProjections.find((t=>t.id===e.windowId));t&&(this.allWindowProjections=this.allWindowProjections.filter((t=>t.id!==e.windowId)),t.model.clean(),this.registry.execute("window-removed",t.api))}async handleGetBounds(){if(!this.me&&!this.isWorkspaceFrame)throw new Error("This window cannot report it's bounds, because it is not a Glue Window, most likely because it is an iframe");return{windowId:this.isWorkspaceFrame?"noop":this.me.id,bounds:{top:window.screenTop,left:window.screenLeft,width:window.innerWidth,height:window.innerHeight}}}async handleGetTitle(){if(!this.me)throw new Error("This window cannot report it's title, because it is not a Glue Window, most likely because it is an iframe");return{windowId:this.me.id,title:document.title}}async handleGetUrl(){if(!this.me)throw new Error("This window cannot report it's url, because it is not a Glue Window, most likely because it is an iframe");return{windowId:this.me.id,url:window.location.href}}async handleMoveResize(e){const t="number"==typeof e.top?e.top:e.relative?0:window.screenTop,n="number"==typeof e.left?e.left:e.relative?0:window.screenLeft,r="number"==typeof e.height?e.height:e.relative?0:window.innerHeight,i="number"==typeof e.width?e.width:e.relative?0:window.innerWidth,s=e.relative?window.moveBy:window.moveTo,o=e.relative?window.resizeBy:window.resizeTo;s(n,t),o(i,r)}async handleSetTitle(e){document.title=e.title}async initializeFocusTracking(){if(this.isWorkspaceFrame)return void this.logger.trace("Ignoring the focus tracking, because this client is a workspace frame");try{await this.bridge.send("windows",pr.operationCheck,{operation:"focusChange"})}catch(e){return void this.logger.warn("The platform of this client is outdated and does not support focus tracking, disabling focus events for this client.")}const e=document.hasFocus();await this.transmitFocusChange(!0),e||await this.transmitFocusChange(!1),this.defineEventListeners()}processFocusEvent(){const e=document.hasFocus();this.transmitFocusChange(e)}waitForWindowAdded(e){const t=this.allWindowProjections.find((t=>t.id===e));return t?Promise.resolve(t.api):gr((t=>{const n=this.onWindowAdded((r=>{r.id===e&&(n(),t(r))}))}),3e4,`Timed out waiting for ${e} to be announced`)}async transmitFocusChange(e){const t={windowId:this.me?.id||`iframe-${this.instanceId}`,hasFocus:e};this.me&&(this.me.isFocused=e),await this.bridge.send("windows",cr.focusChange,t)}defineEventListeners(){this.focusEventHandler=this.processFocusEvent.bind(this),document.addEventListener("visibilityChange",this.focusEventHandler),window.addEventListener("focus",this.focusEventHandler),window.addEventListener("blur",this.focusEventHandler)}async handleGetChannel(){if(!this.me)throw new Error("This window cannot report it's channel, because it is not a Glue Window, most likely because it is an iframe");const e=this.channelsController.my();return{...e?{channel:e}:{}}}}),this._windowsControllerInstance}get appManagerController(){return this._appManagerControllerInstance||(this._appManagerControllerInstance=new Sr),this._appManagerControllerInstance}get layoutsController(){return this._layoutsControllerInstance||(this._layoutsControllerInstance=new class{defaultLayoutRestoreTimeoutMS=12e4;registry=hr();bridge;logger;windowsController;saveRequestSubscription;handlePlatformShutdown(){this.registry.clear()}async start(e,t){this.logger=e.logger.subLogger("layouts.controller.web"),this.logger.trace("starting the web layouts controller"),this.bridge=t.bridge,this.windowsController=t.windowsController,this.addOperationsExecutors();const n=this.toApi();this.logger.trace("no need for platform registration, attaching the layouts property to glue and returning"),e.layouts=n}async handleBridgeMessage(e){const t=Ie.runWithException(e.operation),n=Ir[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),await n.execute(r)}toApi(){const e={get:this.get.bind(this),getAll:this.getAll.bind(this),export:this.export.bind(this),import:this.import.bind(this),save:this.save.bind(this),restore:this.restore.bind(this),remove:this.remove.bind(this),onAdded:this.onAdded.bind(this),onChanged:this.onChanged.bind(this),onRemoved:this.onRemoved.bind(this),onSaveRequested:this.subscribeOnSaveRequested.bind(this),getMultiScreenPermissionState:this.getGlobalPermissionState.bind(this),requestMultiScreenPermission:this.requestGlobalPermission.bind(this),getGlobalTypeState:this.checkGlobalActivated.bind(this),getDefaultGlobal:this.getDefaultGlobal.bind(this),setDefaultGlobal:this.setDefaultGlobal.bind(this),clearDefaultGlobal:this.clearDefaultGlobal.bind(this),rename:this.rename.bind(this),onRenamed:this.onRenamed.bind(this),updateMetadata:this.updateMetadata.bind(this)};return Object.freeze(e)}addOperationsExecutors(){Ir.layoutAdded.execute=this.handleOnAdded.bind(this),Ir.layoutChanged.execute=this.handleOnChanged.bind(this),Ir.layoutRemoved.execute=this.handleOnRemoved.bind(this),Ir.layoutRenamed.execute=this.handleOnRenamed.bind(this),Ir.clientSaveRequest.execute=this.handleSaveRequest.bind(this)}async get(e,t){return we.runWithException(e),nt.runWithException(t),(await this.bridge.send("layouts",Ir.get,{name:e,type:t})).layout}async getAll(e){return nt.runWithException(e),(await this.bridge.send("layouts",Ir.getAll,{type:e})).summaries}async export(e){return nt.runWithException(e),(await this.bridge.send("layouts",Ir.export,{type:e})).layouts}async import(e,t="replace"){if(At.runWithException(t),!Array.isArray(e))throw new Error("Import must be called with an array of layouts");if(e.length>1e3)throw new Error("Cannot import more than 1000 layouts at once in Glue42 Core.");const n=e.reduce(((e,t)=>{const n=gt.run(t);return n.ok?e.valid.push(t):this.logger.warn(`A layout with name: ${t.name} was not imported, because of error: ${JSON.stringify(n.error)}`),e}),{valid:[]}),r=e.filter((e=>n.valid.some((t=>t.name===e.name))));await this.bridge.send("layouts",Ir.import,{layouts:r,mode:t})}async save(e){return ft.runWithException(e),(await this.bridge.send("layouts",Ir.save,{layout:e})).layout}async restore(e){mt.runWithException(e);const t=e.timeout?2*e.timeout:this.defaultLayoutRestoreTimeoutMS;await this.bridge.send("layouts",Ir.restore,{layout:e},{methodResponseTimeoutMs:t})}async remove(e,t){nt.runWithException(e),we.runWithException(t),await this.bridge.send("layouts",Ir.remove,{type:e,name:t})}async handleSaveRequest(e){const t={};if(this.saveRequestSubscription)try{const n=this.saveRequestSubscription(e);t.windowContext=n?.windowContext}catch(e){this.logger.warn(`An error was thrown by the onSaveRequested callback, ignoring the callback: ${JSON.stringify(e)}`)}return t}async getGlobalPermissionState(){return await this.bridge.send("layouts",Ir.getGlobalPermissionState,void 0)}async requestGlobalPermission(){const e=(await this.getGlobalPermissionState()).state;if("denied"===e)return{permissionGranted:!1};if("granted"===e)return{permissionGranted:!0};const t=this.windowsController.my(),n=(window.glue42core||window.iobrowser).isPlatformFrame;if("Platform"!==t.name&&!n)throw new Error("Cannot request permission for multi-window placement from any app other than the Platform.");return{permissionGranted:(await this.bridge.send("layouts",Ir.requestGlobalPermission,void 0,{methodResponseTimeoutMs:18e4})).isAvailable}}async checkGlobalActivated(){return{activated:(await this.bridge.send("layouts",Ir.checkGlobalActivated,void 0)).isAvailable}}async getDefaultGlobal(){return(await this.bridge.send("layouts",Ir.getDefaultGlobal,void 0,void 0,{includeOperationCheck:!0})).layout}async setDefaultGlobal(e){we.runWithException(e),await this.bridge.send("layouts",Ir.setDefaultGlobal,{name:e},void 0,{includeOperationCheck:!0})}async clearDefaultGlobal(){await this.bridge.send("layouts",Ir.clearDefaultGlobal,void 0,void 0,{includeOperationCheck:!0})}async rename(e,t){return gt.runWithException(e),we.runWithException(t),await this.bridge.send("layouts",Ir.rename,{layout:e,newName:t},void 0,{includeOperationCheck:!0})}async updateMetadata(e){gt.runWithException(e),await this.bridge.send("layouts",Ir.updateMetadata,{layout:e},void 0,{includeOperationCheck:!0})}onAdded(e){return this.export("Global").then((t=>t.forEach((t=>e(t))))).catch((()=>{})),this.export("Workspace").then((t=>t.forEach((t=>e(t))))).catch((()=>{})),this.registry.add(Ir.layoutAdded.name,e)}onChanged(e){return this.registry.add(Ir.layoutChanged.name,e)}onRemoved(e){return this.registry.add(Ir.layoutRemoved.name,e)}onRenamed(e){if("function"!=typeof e)throw new Error("Cannot subscribe to onRenamed, because the provided callback is not a function!");return this.registry.add(Ir.layoutRenamed.name,e)}subscribeOnSaveRequested(e){if("function"!=typeof e)throw new Error("Cannot subscribe to onSaveRequested, because the provided argument is not a valid callback function.");if(this.saveRequestSubscription)throw new Error("Cannot subscribe to onSaveRequested, because this client has already subscribed and only one subscription is supported. Consider unsubscribing from the initial one.");return this.saveRequestSubscription=e,()=>{delete this.saveRequestSubscription}}async handleOnAdded(e){this.registry.execute(Ir.layoutAdded.name,e)}async handleOnChanged(e){this.registry.execute(Ir.layoutChanged.name,e)}async handleOnRemoved(e){this.registry.execute(Ir.layoutRemoved.name,e)}async handleOnRenamed(e){this.registry.execute(Ir.layoutRenamed.name,e)}}),this._layoutsControllerInstance}get themesController(){return this._themesControllerInstance||(this._themesControllerInstance=new class{logger;bridge;registry=hr();themesSubscription;activeThemeSubs=0;async start(e,t){this.logger=e.logger.subLogger("themes.controller.web"),this.logger.trace("starting the web themes controller"),this.bridge=t.bridge;const n=this.toApi();e.themes=n,this.logger.trace("themes are ready")}handlePlatformShutdown(){this.registry.clear(),this.activeThemeSubs=0,this.themesSubscription?.close(),delete this.themesSubscription}async handleBridgeMessage(){}toApi(){const e={getCurrent:this.getCurrent.bind(this),list:this.list.bind(this),select:this.select.bind(this),onChanged:this.onChanged.bind(this)};return Object.freeze(e)}async getCurrent(){return(await this.bridge.send("themes",Vr.getCurrent,void 0,void 0,{includeOperationCheck:!0})).theme}async list(){return(await this.bridge.send("themes",Vr.list,void 0,void 0,{includeOperationCheck:!0})).themes}async select(e){we.runWithException(e),await this.bridge.send("themes",Vr.select,{name:e},void 0,{includeOperationCheck:!0})}async onChanged(e){if("function"!=typeof e)throw new Error("onChanged requires a callback of type function");const t=this.themesSubscription?Promise.resolve():this.configureThemeSubscription();await t,++this.activeThemeSubs;const n=this.registry.add("on-theme-change",e);return()=>this.themeUnsub(n)}async configureThemeSubscription(){this.themesSubscription||(this.themesSubscription=await this.bridge.createNotificationsSteam(),this.themesSubscription.onData((e=>{const t=e.data,n=$n.run(t);if(!n.ok)return void this.logger.warn(`Received invalid theme data on the theme event stream: ${JSON.stringify(n.error)}`);const r=n.result;this.registry.execute("on-theme-change",r.theme)})),this.themesSubscription.onClosed((()=>{this.logger.warn("The Themes interop stream was closed, no theme changes notifications will be received"),this.registry.clear(),this.activeThemeSubs=0,delete this.themesSubscription})))}themeUnsub(e){e(),--this.activeThemeSubs,this.activeThemeSubs||(this.themesSubscription?.close(),delete this.themesSubscription)}}),this._themesControllerInstance}get notificationsController(){return this._notificationsControllerInstance||(this._notificationsControllerInstance=new class{registry=hr();logger;bridge;notificationsSettings;notifications={};coreGlue;buildNotificationFunc;handlePlatformShutdown(){this.notifications={},this.registry.clear()}async start(e,t){this.logger=e.logger.subLogger("notifications.controller.web"),this.logger.trace("starting the web notifications controller"),this.bridge=t.bridge,this.coreGlue=e,this.notificationsSettings=t.config.notifications,this.buildNotificationFunc=t.buildNotification;const n=this.toApi();this.addOperationExecutors(),e.notifications=n,this.logger.trace("notifications are ready")}async handleBridgeMessage(e){const t=Ee.runWithException(e.operation),n=Er[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),await n.execute(r)}toApi(){const e={raise:this.raise.bind(this),requestPermission:this.requestPermission.bind(this),getPermission:this.getPermission.bind(this),list:this.list.bind(this),onRaised:this.onRaised.bind(this),onClosed:this.onClosed.bind(this),click:this.click.bind(this),clear:this.clear.bind(this),clearAll:this.clearAll.bind(this),clearOld:this.clearOld.bind(this),configure:this.configure.bind(this),getConfiguration:this.getConfiguration.bind(this),getFilter:this.getFilter.bind(this),setFilter:this.setFilter.bind(this),setState:this.setState.bind(this),onConfigurationChanged:this.onConfigurationChanged.bind(this),onActiveCountChanged:this.onActiveCountChanged.bind(this),onStateChanged:this.onStateChanged.bind(this)};return Object.freeze(e)}async getPermission(){return(await this.bridge.send("notifications",Er.getPermission,void 0)).permission}async requestPermission(){return(await this.bridge.send("notifications",Er.requestPermission,void 0)).permissionGranted}async raise(e){const t=cn.runWithException(e);if(t.showToast="boolean"!=typeof t.showToast||t.showToast,t.showInPanel="boolean"!=typeof t.showInPanel||t.showInPanel,!await this.requestPermission())throw new Error("Cannot raise the notification, because the user has declined the permission request");const n=Ar(10),r=await this.bridge.send("notifications",Er.raiseNotification,{settings:t,id:n}),i=this.buildNotificationFunc(r.settings,n);return this.notifications[n]=i,i}async list(){return(await this.bridge.send("notifications",Er.list,void 0,void 0,{includeOperationCheck:!0})).notifications}onRaised(e){if("function"!=typeof e)throw new Error("onRaised expects a callback of type function");return this.registry.add("notification-raised",e)}onClosed(e){if("function"!=typeof e)throw new Error("onRaised expects a callback of type function");return this.registry.add("notification-closed",e)}async click(e,t){we.runWithException(e),t&&we.runWithException(t),await this.bridge.send("notifications",Er.click,{id:e,action:t},void 0,{includeOperationCheck:!0})}async clear(e){we.runWithException(e),await this.bridge.send("notifications",Er.clear,{id:e},void 0,{includeOperationCheck:!0})}async clearAll(){await this.bridge.send("notifications",Er.clearAll,void 0,void 0,{includeOperationCheck:!0})}async clearOld(){await this.bridge.send("notifications",Er.clearOld,void 0,void 0,{includeOperationCheck:!0})}async configure(e){const t=En.runWithException(e);await this.bridge.send("notifications",Er.configure,{configuration:t},void 0,{includeOperationCheck:!0})}async getConfiguration(){return(await this.bridge.send("notifications",Er.getConfiguration,void 0,void 0,{includeOperationCheck:!0})).configuration}async getFilter(){return(await this.bridge.send("notifications",Er.getConfiguration,void 0,void 0,{includeOperationCheck:!0})).configuration.sourceFilter}async setFilter(e){const t=In.runWithException(e);return await this.bridge.send("notifications",Er.configure,{configuration:{sourceFilter:t}},void 0,{includeOperationCheck:!0}),t}async setState(e,t){we.runWithException(e),sn.runWithException(t),await this.bridge.send("notifications",Er.setState,{id:e,state:t},void 0,{includeOperationCheck:!0})}onConfigurationChanged(e){if("function"!=typeof e)throw new Error("Cannot subscribe to configuration changed, because the provided callback is not a function!");return this.registry.add("notifications-config-changed",e)}onActiveCountChanged(e){if("function"!=typeof e)throw new Error("Cannot subscribe to onActiveCountChanged changed, because the provided callback is not a function!");return this.registry.add("notifications-active-count-changed",e)}onStateChanged(e){if("function"!=typeof e)throw new Error("Cannot subscribe to onStateChanged changed, because the provided callback is not a function!");return this.registry.add("notification-state-changed",e)}addOperationExecutors(){Er.notificationShow.execute=this.handleNotificationShow.bind(this),Er.notificationClick.execute=this.handleNotificationClick.bind(this),Er.notificationRaised.execute=this.handleNotificationRaised.bind(this),Er.notificationClosed.execute=this.handleNotificationClosed.bind(this),Er.configurationChanged.execute=this.handleConfigurationChanged.bind(this),Er.activeCountChange.execute=this.handleActiveCountChanged.bind(this),Er.stateChange.execute=this.handleNotificationStateChanged.bind(this)}async handleConfigurationChanged(e){this.registry.execute("notifications-config-changed",e.configuration)}async handleActiveCountChanged(e){this.registry.execute("notifications-active-count-changed",e)}async handleNotificationStateChanged(e){this.registry.execute("notification-state-changed",{id:e.id},e.state)}async handleNotificationShow(e){if(!e.id)return;const t=this.notifications[e.id];t&&t.onshow&&t.onshow()}async handleNotificationClick(e){if(!e.action&&this.notificationsSettings?.defaultClick&&this.notificationsSettings.defaultClick(this.coreGlue,e.definition),e.action&&this.notificationsSettings?.actionClicks?.some((t=>t.action===e.action))){const t=this.notificationsSettings?.actionClicks?.find((t=>t.action===e.action));t.handler(this.coreGlue,e.definition)}if(!e.id)return;const t=this.notifications[e.id];t&&t.onclick&&(t.onclick(),delete this.notifications[e.id])}async handleNotificationRaised(e){this.registry.execute("notification-raised",e.notification)}async handleNotificationClosed(e){this.registry.execute("notification-closed",e)}}),this._notificationsControllerInstance}get intentsController(){return this._intentsControllerInstance||(this._intentsControllerInstance=new class{bridge;logger;interop;legacyIntentsController;myIntents=new Set;useIntentsResolverUI=!0;intentsResolverAppName;intentResolverResponseTimeout;unregisterIntentPromises=[];async start(e,t){this.logger=e.logger.subLogger("intents.controller.web"),this.logger.trace("starting the web intents controller"),this.bridge=t.bridge,this.interop=e.interop,this.legacyIntentsController=t.legacyIntentsHelper,this.checkIfIntentsResolverIsEnabled(t.config);const n=this.toApi();this.logger.trace("no need for platform registration, attaching the intents property to glue and returning"),e.intents=n}handlePlatformShutdown(){this.myIntents=new Set,this.unregisterIntentPromises=[]}async handleBridgeMessage(e){const t=Dt.runWithException(e.operation),n=kr[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),await n.execute(r)}toApi(){return{raise:this.raise.bind(this),all:this.all.bind(this),addIntentListener:this.addIntentListener.bind(this),register:this.register.bind(this),find:this.find.bind(this),filterHandlers:this.filterHandlers.bind(this),getIntents:this.getIntentsByHandler.bind(this)}}async raise(e){const t=Ut.runWithException(e),n="string"==typeof t?{intent:t}:t;await Promise.all(this.unregisterIntentPromises);const r={intentRequest:n,resolverConfig:this.getResolverConfigByRequest({intentRequest:n})},i=await this.isRaiseOperationSupported();if(!i.supported)return this.logger.warn(`${i.reason}. Invoking legacy raise method`),this.legacyIntentsController.raise(r,this.find.bind(this));this.logger.trace(`Sending raise request to the platform: ${JSON.stringify(e)} and method response timeout of ${this.intentResolverResponseTimeout}ms`);const s=n.waitUserResponseIndefinitely?_r:(n.timeout||this.intentResolverResponseTimeout)+3e4;return await this.bridge.send("intents",kr.raise,r,{methodResponseTimeoutMs:s,waitTimeoutMs:s})}getResolverConfigByRequest(e){if(e.handlerFilter)return{enabled:"boolean"==typeof e.handlerFilter?.openResolver?e.handlerFilter?.openResolver:this.useIntentsResolverUI,appName:this.intentsResolverAppName,waitResponseTimeout:e.handlerFilter?.timeout||9e4};const t=e.intentRequest?.waitUserResponseIndefinitely?_r:this.intentResolverResponseTimeout;return{enabled:this.useIntentsResolverUI,appName:this.intentsResolverAppName,waitResponseTimeout:t}}async isRaiseOperationSupported(){try{const{isSupported:e}=await this.bridge.send("intents",pr.operationCheck,{operation:"raise"});return{supported:e,reason:e?"":'The platform of this client is outdated and does not support "raise" operation'}}catch(e){return{supported:!1,reason:'The platform of this client is outdated and does not support "operationCheck" command'}}}async all(){return await Promise.all(this.unregisterIntentPromises),(await this.bridge.send("intents",kr.getIntents,void 0)).intents}addIntentListener(e,t){if(Yt.runWithException(e),"function"!=typeof t)throw new Error("Cannot add intent listener, because the provided handler is not a function!");let n;const r="string"==typeof e?e:e.intent,i=this.buildInteropMethodName(r);if(this.myIntents.has(r))throw new Error(`Intent listener for intent ${r} already registered!`);this.myIntents.add(r);const s={unsubscribe:()=>{this.myIntents.delete(r),n.then((()=>this.interop.unregister(i))).catch((e=>this.logger.trace(`Unregistration of a method with name ${i} failed with reason: ${e}`)))}};let o={};if("object"==typeof e){const{intent:t,...n}=e;o=n}return n=this.interop.register({name:i,flags:{intent:o}},(e=>{if(this.myIntents.has(r)){const{_initialCallerId:n,...r}=e;return t(r)}})),n.catch((e=>{this.myIntents.delete(r),this.logger.warn(`Registration of a method with name ${i} failed with reason: ${e}`)})),s}async register(e,t){if(Yt.runWithException(e),"function"!=typeof t)throw new Error("Cannot add intent listener, because the provided handler is not a function!");await Promise.all(this.unregisterIntentPromises);const n="string"==typeof e?e:e.intent,r=this.buildInteropMethodName(n);if(this.myIntents.has(n))throw new Error(`Intent listener for intent ${n} already registered!`);this.myIntents.add(n);let i={};if("object"==typeof e){const{intent:t,...n}=e;i=n}try{await this.interop.register({name:r,flags:{intent:i}},(e=>{if(this.myIntents.has(n)){const{_initialCallerId:n,...r}=e,i=this.interop.servers().find((e=>e.instance===n));return t(r,i)}}))}catch(e){throw this.myIntents.delete(n),new Error(`Registration of a method with name ${r} failed with reason: ${JSON.stringify(e)}`)}return{unsubscribe:()=>this.unsubscribeIntent(n)}}async find(e){let t;if(void 0!==e){const n=Lt.runWithException(e);"string"==typeof n?t={filter:{name:n}}:"object"==typeof n&&(t={filter:n})}return await Promise.all(this.unregisterIntentPromises),(await this.bridge.send("intents",kr.findIntent,t)).intents}checkIfIntentsResolverIsEnabled(e){this.useIntentsResolverUI="boolean"!=typeof e.intents?.enableIntentsResolverUI||e.intents.enableIntentsResolverUI,this.intentsResolverAppName=e.intents?.intentsResolverAppName??"intentsResolver",this.intentResolverResponseTimeout=e.intents?.methodResponseTimeoutMs??6e4}clearUnregistrationPromise(e){this.unregisterIntentPromises=this.unregisterIntentPromises.filter((t=>t!==e))}buildInteropMethodName(e){return`Tick42.FDC3.Intents.${e}`}unsubscribeIntent(e){this.myIntents.delete(e);const t=this.buildInteropMethodName(e),n=this.interop.unregister(t);this.unregisterIntentPromises.push(n),n.then((()=>{this.clearUnregistrationPromise(n)})).catch((e=>{this.logger.error(`Unregistration of a method with name ${t} failed with reason: ${e}`),this.clearUnregistrationPromise(n)}))}async filterHandlers(e){if(Kt.runWithException(e),this.checkIfAtLeastOneFilterIsPresent(e),e.openResolver&&!this.useIntentsResolverUI)throw new Error("Cannot resolve 'filterHandlers' request using Intents Resolver UI because it's globally disabled");const t=(e.timeout||9e4)+3e4,n={filterHandlersRequest:e,resolverConfig:this.getResolverConfigByRequest({handlerFilter:e})};return await this.bridge.send("intents",kr.filterHandlers,n,{methodResponseTimeoutMs:t,waitTimeoutMs:t},{includeOperationCheck:!0})}checkIfAtLeastOneFilterIsPresent(e){const t="Provide at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'";if(!Object.keys(e).length)throw new Error(t);const{intent:n,resultType:r,contextTypes:i,applicationNames:s}=e,o=i?.length,a=s?.length;if(!(n||r||o||a))throw new Error(t)}async getIntentsByHandler(e){return Ot.runWithException(e),await this.bridge.send("intents",kr.getIntentsByHandler,e,void 0,{includeOperationCheck:!0})}}),this._intentsControllerInstance}get legacyIntentsHelper(){return this._legacyIntentsHelperInstance||(this._legacyIntentsHelperInstance=new Gr(this._coreGlue.logger,this.bridge,this._coreGlue.interop,this.appManagerController,this.windowsController)),this._legacyIntentsHelperInstance}get systemController(){return this._systemControllerInstance||(this._systemControllerInstance=new class{bridge;ioc;async start(e,t){this.bridge=t.bridge,this.ioc=t,this.addOperationsExecutors(),await this.setEnvironment()}async handleBridgeMessage(e){const t=Ae.runWithException(e.operation),n=Lr[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),await n.execute(r)}async processPlatformShutdown(){Object.values(this.ioc.controllers).forEach((e=>e.handlePlatformShutdown?e.handlePlatformShutdown():null)),this.ioc.preferredConnectionController.stop(),this.ioc.eventsDispatcher.stop(),await this.bridge.stop()}async setEnvironment(){const e=await this.bridge.send("system",Lr.getEnvironment,void 0),t=await this.bridge.send("system",Lr.getBase,void 0),n=window.glue42core||window.iobrowser,r=window.glue42core?"glue42core":"iobrowser",i=Object.assign({},n,t,{environment:e});window[r]=Object.freeze(i)}addOperationsExecutors(){Lr.platformShutdown.execute=this.processPlatformShutdown.bind(this)}}),this._systemControllerInstance}get channelsController(){return this._channelsControllerInstance||(this._channelsControllerInstance=new class{registry=hr();logger;contexts;bridge;currentChannelName;windowsController;sessionController;unsubscribeFunc;GlueWebChannelsPrefix="___channel___";SubsKey="subs";ChangedKey="changed";handlePlatformShutdown(){this.registry.clear()}addOperationsExecutors(){Br.getMyChannel.execute=this.handleGetMyChannel.bind(this),Br.joinChannel.execute=this.handleJoinChannel.bind(this),Br.restrict.execute=({config:e})=>this.restrict(e),Br.getRestrictions.execute=({windowId:e})=>this.getRestrictions(e),Br.restrictAll.execute=({restrictions:e})=>this.restrictAll(e)}async start(e,t){this.logger=e.logger.subLogger("channels.controller.web"),this.logger.trace("starting the web channels controller"),this.contexts=e.contexts,this.addOperationsExecutors(),this.bridge=t.bridge,this.windowsController=t.windowsController,this.sessionController=t.sessionController,this.logger.trace("no need for platform registration, attaching the channels property to glue and returning");const n=this.toApi();e.channels=n}async handleBridgeMessage(e){const t=Vn.runWithException(e.operation),n=Br[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),await n.execute(r)}async list(){const e=this.getAllChannelNames();return await Promise.all(e.map((e=>this.get(e))))}my(){return this.current()}async handleGetMyChannel(){const e=this.my();return e?{channel:e}:{}}async join(e,t){const n=this.getAllChannelNames();tn(n).runWithException(e),be.runWithException(t),t&&t!==this.windowsController.my().id?await this.bridge.send("channels",Br.joinChannel,{channel:e,windowId:t},void 0,{includeOperationCheck:!0}):await this.switchToChannel(e)}handleJoinChannel({channel:e,windowId:t}){return this.join(e,t)}onChanged(e){return this.changed(e)}async leave(){await this.switchToChannel()}toApi(){const e={subscribe:this.subscribe.bind(this),subscribeFor:this.subscribeFor.bind(this),publish:this.publish.bind(this),all:this.all.bind(this),list:this.list.bind(this),get:this.get.bind(this),join:this.join.bind(this),leave:this.leave.bind(this),current:this.current.bind(this),my:this.my.bind(this),changed:this.changed.bind(this),onChanged:this.onChanged.bind(this),add:this.add.bind(this),remove:this.remove.bind(this),getMy:this.getMy.bind(this),getWindowsOnChannel:this.getWindowsOnChannel.bind(this),getWindowsWithChannels:this.getWindowsWithChannels.bind(this),restrict:this.restrict.bind(this),getRestrictions:this.getRestrictions.bind(this),restrictAll:this.restrictAll.bind(this)};return Object.freeze(e)}createContextName(e){return`${this.GlueWebChannelsPrefix}${e}`}getAllChannelNames(){return this.contexts.all().filter((e=>e.startsWith(this.GlueWebChannelsPrefix))).map((e=>e.replace(this.GlueWebChannelsPrefix,"")))}unsubscribe(){this.unsubscribeFunc&&(this.unsubscribeFunc(),this.unsubscribeFunc=void 0)}async switchToChannel(e){if(this.unsubscribe(),this.currentChannelName=e,void 0!==e){const t=this.createContextName(e);this.unsubscribeFunc=await this.contexts.subscribe(t,((e,t,n,r,i)=>{this.registry.execute(this.SubsKey,e.data,e,i?.updaterId)}))}this.registry.execute(this.ChangedKey,e),this.sessionController.setWindowData({currentName:e},"channels")}async updateData(e,t){const n=this.createContextName(e),r=this.getFDC3Type(t);if(this.contexts.setPathSupported){const e=Object.keys(t).map((e=>({path:`data.${e}`,value:t[e]})));r&&e.push({path:qr,value:r}),await this.contexts.setPaths(n,e)}else r&&(t[qr]=r),await this.contexts.update(n,{data:t})}getFDC3Type(e){const t=Object.keys(e).filter((e=>0===e.indexOf("fdc3_")));if(0!==t.length){if(t.length>1)throw new Error("FDC3 does not support updating of multiple context keys");return t[0].split("_").slice(1).join("_")}}subscribe(e){if("function"!=typeof e)throw new Error("Cannot subscribe to channels, because the provided callback is not a function!");const t=this.current(),n=this.getWrappedCallbackWithPermissionCheck(e);return t&&this.replaySubscribe(n,t),this.registry.add(this.SubsKey,n)}async subscribeFor(e,t){const n=this.getAllChannelNames();if(tn(n).runWithException(e),"function"!=typeof t)throw new Error(`Cannot subscribe to channel ${e}, because the provided callback is not a function!`);const r=this.createContextName(e),i=this.getWrappedCallbackWithPermissionCheck(t);return this.contexts.subscribe(r,((e,t,n,r,s)=>{i(e.data,e,s?.updaterId)}))}publish(e,t){if("object"!=typeof e)throw new Error("Cannot publish to channel, because the provided data is not an object!");if(void 0!==t){const e=this.getAllChannelNames();tn(e).runWithException(t)}const n=t||this.currentChannelName;if(!n)throw new Error("Cannot publish to channel, because not joined to a channel!");if(!this.isAllowedByRestrictions(n,"write"))throw new Error(`Cannot publish on channel ${n} due to restrictions`);return this.updateData(n,e)}async all(){return this.getAllChannelNames()}async get(e){const t=this.getAllChannelNames();tn(t).runWithException(e);const n=this.createContextName(e),r=await this.contexts.get(n);if(r.latest_fdc3_type){const{latest_fdc3_type:e,...t}=r;return{...t}}return r}current(){return this.currentChannelName}changed(e){if("function"!=typeof e)throw new Error("Cannot subscribe to channel changed, because the provided callback is not a function!");return this.registry.add(this.ChangedKey,e)}async add(e){const t=un.runWithException(e);if(this.getAllChannelNames().includes(t.name))throw new Error("There's an already existing channel with such name");return await this.bridge.send("channels",Br.addChannel,t),t}async remove(e){if(we.runWithException(e),!this.getAllChannelNames().includes(e))throw new Error("There's no channel with such name");await this.bridge.send("channels",Br.removeChannel,{name:e},void 0,{includeOperationCheck:!0})}replaySubscribe=(e,t)=>{this.get(t).then((t=>{if("object"==typeof t.data&&Object.keys(t.data).length){const n=this.createContextName(t.name);return this.contexts.subscribe(n,((t,n,r,i,s)=>{e(t.data,t,s?.updaterId)}))}})).then((e=>{e&&"function"==typeof e&&e()})).catch((e=>this.logger.trace(e)))};async getMy(){if(this.currentChannelName)return this.get(this.currentChannelName)}async getWindowsOnChannel(e){const t=this.getAllChannelNames();tn(t).runWithException(e);const{windowIds:n}=await this.bridge.send("channels",Br.getWindowIdsOnChannel,{channel:e},void 0,{includeOperationCheck:!0});return n.reduce(((e,t)=>{const n=this.windowsController.findById(t);return n?[...e,n]:e}),[])}async getWindowsWithChannels(e){const t=void 0!==e?{filter:Kn.runWithException(e)}:{},{windowIdsWithChannels:n}=await this.bridge.send("channels",Br.getWindowIdsWithChannels,t,void 0,{includeOperationCheck:!0}),r=n.reduce(((e,{application:t,channel:n,windowId:r})=>{const i=this.windowsController.findById(r);return i?[...e,{application:t,channel:n,window:i}]:e}),[]);return r}async restrict(e){dn.runWithException(e);const t=this.getAllChannelNames();if(tn(t).runWithException(e.name),e.windowId&&e.windowId!==this.windowsController.my().id)return this.bridge.send("channels",Br.restrict,{config:e},void 0,{includeOperationCheck:!0});const n=this.sessionController.getWindowData(),r=n?.restrictions?{...n.restrictions,[e.name]:e}:{[e.name]:e},i=await this.getMy(),s=this.checkPreviousReadAllowed(i?.name);this.sessionController.setWindowData(r,"restrictions"),i&&!s&&e.read&&i.name===e.name&&this.replaySubscribeCallback(e.name)}async getRestrictions(e){return be.runWithException(e),e&&e!==this.windowsController.my().id?this.bridge.send("channels",Br.getRestrictions,{windowId:e},void 0,{includeOperationCheck:!0}):this.getMyRestrictions()}async restrictAll(e){yn.runWithException(e);const t=this.getAllChannelNames();if(e.windowId&&e.windowId!==this.windowsController.my().id)return this.bridge.send("channels",Br.restrictAll,{restrictions:e},void 0,{includeOperationCheck:!0});const n={};t.forEach((t=>{n[t]={...e,name:t}}));const r=await this.getMy(),i=this.checkPreviousReadAllowed(r?.name);this.sessionController.setWindowData(n,"restrictions"),r&&!i&&e.read&&this.replaySubscribeCallback(r.name)}isAllowedByRestrictions(e,t){const{channels:n}=this.getMyRestrictions();if(!n?.length)return!0;const r=n.find((t=>t.name===e));return!r||r[t]}getMyRestrictions(){const e=this.sessionController.getWindowData();return{channels:Object.values(e?.restrictions||{})}}getWrappedCallbackWithPermissionCheck(e){return(t,n,r)=>{this.isAllowedByRestrictions(n.name,"read")&&e(t,n,r)}}replaySubscribeCallback(e){const t=this.createContextName(e);this.contexts.subscribe(t,((e,t,n,r,i)=>{this.registry.execute(this.SubsKey,e.data,e,i?.updaterId)})).then((e=>{e&&"function"==typeof e&&e()})).catch((e=>this.logger.error(e)))}checkPreviousReadAllowed(e){if(!e)return!0;const t=this.sessionController.getWindowData().restrictions;return!t?.[e]||t[e].read}}),this._channelsControllerInstance}get prefsController(){return this._prefsControllerInstance||(this._prefsControllerInstance=new class{bridge;config;logger;appManagerController;platformAppName;registry=hr();handlePlatformShutdown(){this.registry.clear()}async start(e,t){this.logger=e.logger.subLogger("prefs.controller.web"),this.logger.trace("starting the web prefs controller"),this.addOperationsExecutors(),this.bridge=t.bridge,this.config=t.config,this.appManagerController=t.appManagerController;try{const e=await this.bridge.send("prefs",Jr.prefsHello,void 0,void 0,{includeOperationCheck:!0});this.platformAppName=e.platform.app}catch(e){return void this.logger.warn("The platform of this client is outdated and does not support Prefs API.")}this.logger.trace("no need for platform registration, attaching the prefs property to glue and returning");const n=this.toApi();e.prefs=n}async handleBridgeMessage(e){const t=tr.runWithException(e.operation),n=Jr[t];if(!n.execute)return;let r=e.data;return n.dataDecoder&&(r=n.dataDecoder.runWithException(e.data)),await n.execute(r)}addOperationsExecutors(){Jr.prefsChanged.execute=this.handleOnChanged.bind(this)}toApi(){return{clear:this.clear.bind(this),clearAll:this.clearAll.bind(this),clearFor:this.clearFor.bind(this),get:this.get.bind(this),getAll:this.getAll.bind(this),set:this.set.bind(this),setFor:this.setFor.bind(this),subscribe:this.subscribe.bind(this),subscribeFor:this.subscribeFor.bind(this),update:this.update.bind(this),updateFor:this.updateFor.bind(this)}}async clear(){const e=this.getMyAppName();await this.clearFor(e)}async clearAll(){await this.bridge.send("prefs",Jr.clearAll,void 0,void 0,{includeOperationCheck:!0})}async clearFor(e){const t=we.runWithException(e);await this.bridge.send("prefs",Jr.clear,{app:t},void 0,{includeOperationCheck:!0})}async get(e){const t=null==e?this.getMyAppName():we.runWithException(e),{prefs:n}=await this.bridge.send("prefs",Jr.get,{app:t},void 0,{includeOperationCheck:!0});return n}async getAll(){return await this.bridge.send("prefs",Jr.getAll,void 0,void 0,{includeOperationCheck:!0})}async set(e,t){const n=S(rr).runWithException(t),r=n?.app??this.getMyAppName();await this.setFor(r,e)}async setFor(e,t){const n=we.runWithException(e),r=v().runWithException(t);await this.bridge.send("prefs",Jr.set,{app:n,data:r},void 0,{includeOperationCheck:!0})}subscribe(e){const t=this.getMyAppName();return this.subscribeFor(t,e)}subscribeFor(e,t){const n=we.runWithException(e),r=this.appManagerController.getApplications();if(n!==this.platformAppName&&!r.some((e=>e.name===n)))throw new Error(`The provided app name "${e}" is not valid.`);if("function"!=typeof t)throw new Error("Cannot subscribe to prefs, because the provided callback is not a function!");const i=this.getSubscriptionKey(n);return this.get(n).then(t),this.registry.add(i,t)}async update(e,t){const n=S(rr).runWithException(t),r=n?.app??this.getMyAppName();await this.updateFor(r,e)}async updateFor(e,t){const n=we.runWithException(e),r=v().runWithException(t);await this.bridge.send("prefs",Jr.update,{app:n,data:r},void 0,{includeOperationCheck:!0})}getMyAppName(){const e=this.config.isPlatformInternal?this.platformAppName:this.appManagerController.me?.application.name;if(!e)throw new Error("App Preferences operations can not be executed for windows that do not have app!");return e}getSubscriptionKey(e){return`prefs-changed-${e}`}async handleOnChanged({prefs:e}){const t=this.getSubscriptionKey(e.app);this.registry.execute(t,e)}}),this._prefsControllerInstance}get extensionController(){return this._extensionController||(this._extensionController=new Hr),this._extensionController}get eventsDispatcher(){return this._eventsDispatcher||(this._eventsDispatcher=new Ur(this.config)),this._eventsDispatcher}get bridge(){return this._bridgeInstance||(this._bridgeInstance=new vr(this._coreGlue,this.communicationId)),this._bridgeInstance}get preferredConnectionController(){return this._preferredConnectionController||(this._preferredConnectionController=new class{coreGlue;transactionTimeout=15e3;transactionLocks={};webPlatformTransport;webPlatformMessagesUnsubscribe;reconnectCounter=0;logger;constructor(e){this.coreGlue=e,this.logger=this.coreGlue.logger.subLogger("web.preferred.connection.controller")}stop(){this.webPlatformMessagesUnsubscribe&&this.webPlatformMessagesUnsubscribe()}async start(e){if(e.isPlatformInternal)return void this.logger.trace("This is an internal client to the platform, skipping all client preferred communication logic.");if(this.coreGlue.connection.transport.name()!==Mr)throw new Error("Cannot initiate the Glue Web Bridge, because the initial connection was not handled by a Web Platform transport.");if(!this.coreGlue.connection.transport.isPreferredActivated)return void this.logger.trace("The platform of this client was configured without a preferred connection, skipping the rest of the initialization.");this.webPlatformTransport=this.coreGlue.connection.transport,this.webPlatformMessagesUnsubscribe=this.webPlatformTransport.onMessage(this.handleWebPlatformMessage.bind(this));const t=await this.getCurrentPlatformTransportState();await this.checkSwitchTransport(t)}handleWebPlatformMessage(e){if("string"==typeof e)return;const t=this.coreGlue.connection.transport.name()===Mr,n=e.type,r=e.args,i=e.transactionId;return n===Tr.name?this.handleTransportSwitchRequest(r,i):n!==Pr.name||t?n===Or.name?this.handleGetCurrentTransportResponse(r,i):n===Rr.name?this.handleCheckPreferredLogic(i):n===Nr.name?this.handleCheckPreferredConnection(r,i):void 0:this.handlePlatformUnload()}async reEstablishPlatformPort(){try{await this.webPlatformTransport.connect()}catch(e){if(this.logger.trace(`Error when re-establishing port connection to the platform: ${JSON.stringify(e)}`),--this.reconnectCounter,this.reconnectCounter>0)return this.reEstablishPlatformPort();this.logger.warn("This client lost connection to the platform while connected to a preferred GW and was not able to re-connect to the platform.")}this.logger.trace("The connection to the platform was re-established, closing the connection to the web gateway."),this.reconnectCounter=0,this.webPlatformTransport.close();const e=await this.getCurrentPlatformTransportState();await this.checkSwitchTransport(e)}async checkSwitchTransport(e){const t=this.coreGlue.connection.transport.name();if(t===e.transportName)return void this.logger.trace("A check switch was requested, but the platform transport and my transport are identical, no switch is necessary");this.logger.trace(`A check switch was requested and a transport switch is necessary, because this client is now on ${t}, but it should reconnect to ${JSON.stringify(e)}`);const n=await this.coreGlue.connection.switchTransport(e);this.setConnected(),this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(n)}`)}async getCurrentPlatformTransportState(){this.logger.trace("Requesting the current transport state of the platform.");const e=this.setTransaction(Dr.name);this.sendPlatformMessage(Dr.name,e.id);const t=await e.lock;return this.logger.trace(`The platform responded with transport state: ${JSON.stringify(t)}`),t}setTransaction(e){const t={},n=Ar(10),r=new Promise(((r,i)=>{let s=!0;t.lift=e=>{s=!1,delete this.transactionLocks[n],r(e)},t.fail=e=>{s=!1,delete this.transactionLocks[n],i(e)},setTimeout((()=>{s&&(s=!1,this.logger.warn(`Transaction for operation: ${e} timed out.`),delete this.transactionLocks[n],i(`Transaction for operation: ${e} timed out.`))}),this.transactionTimeout)}));return t.lock=r,t.id=n,this.transactionLocks[n]=t,t}sendPlatformMessage(e,t,n){this.logger.trace(`Sending a platform message of type: ${e}, id: ${t} and args: ${JSON.stringify(n)}`),this.webPlatformTransport.sendObject({glue42core:{type:e,args:n,transactionId:t}})}handleTransportSwitchRequest(e,t){this.logger.trace(`Received a transport switch request with id: ${t} and data: ${JSON.stringify(e)}`),this.coreGlue.connection.switchTransport(e.switchSettings).then((e=>{this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(e)}`),this.setConnected(),this.sendPlatformMessage(Fr.name,t,{success:e.success})})).catch((e=>{this.logger.error(e),this.sendPlatformMessage(Fr.name,t,{success:!1})}))}handlePlatformUnload(){this.reconnectCounter=5,this.logger.trace("The platform was unloaded while I am connected to a preferred connection, re-establishing the port connection."),this.reEstablishPlatformPort()}handleGetCurrentTransportResponse(e,t){this.logger.trace(`Got a current transport response from the platform with id: ${t} and data: ${JSON.stringify(e)}`);const n=e.transportState,r=this.transactionLocks[t];r?.lift(n)}handleCheckPreferredLogic(e){setTimeout((()=>this.sendPlatformMessage(jr.name,e)),0)}handleCheckPreferredConnection(e,t){const n=e.url;this.logger.trace(`Testing the possible connection to: ${n}`),this.checkPreferredConnection(n).then((e=>{this.logger.trace(`The connection to ${n} is possible`),this.sendPlatformMessage($r.name,t,e)})).catch((e=>{this.logger.trace(`The connection to ${n} is not possible`),this.sendPlatformMessage($r.name,t,{error:e})}))}checkPreferredConnection(e){return new Promise((t=>{const n=new WebSocket(e);n.onerror=()=>t({live:!1}),n.onopen=()=>{n.close(),t({live:!0})}}))}setConnected(){this.webPlatformTransport.manualSetReadyState()}}(this._coreGlue)),this._preferredConnectionController}get sessionController(){return this._sessionController||(this._sessionController=new class{sessionStorage=window.sessionStorage;windowId;get allNamespaces(){return[{namespace:this.windowNamespace,defaultValue:{}}]}configure(e){this.windowId=e.windowId,this.allNamespaces.forEach((({namespace:e,defaultValue:t})=>{this.sessionStorage.getItem(e)||this.sessionStorage.setItem(e,JSON.stringify(t))}))}get windowNamespace(){return`io_connect_window_${this.windowId}`}getWindowData(){return JSON.parse(this.sessionStorage.getItem(this.windowNamespace))}setWindowData(e,t){const n=this.getWindowData();n[t]=e,this.sessionStorage.setItem(this.windowNamespace,JSON.stringify(n))}}),this._sessionController}get config(){return this._webConfig}defineGlue(e){this._coreGlue=e,this._publicWindowId=e.connection.transport.publicWindowId;const t=window.glue42core||window.iobrowser;this._communicationId=e.connection.transport.communicationId||t.communicationId}defineConfig(e){this._webConfig=e}async buildWebWindow(e,t){const n=new dr(e,t,this.bridge),r=await n.toApi();return{id:e,model:n,api:r}}buildNotification(e,t){return new class{onclick=()=>{};onshow=()=>{};id;title;badge;body;data;dir;icon;image;lang;renotify;requireInteraction;silent;tag;timestamp;vibrate;clickInterop;actions;focusPlatformOnDefaultClick;severity;showToast;showInPanel;state;constructor(e,t){this.id=t,this.badge=e.badge,this.body=e.body,this.data=e.data,this.dir=e.dir,this.icon=e.icon,this.image=e.image,this.lang=e.lang,this.renotify=e.renotify,this.requireInteraction=e.requireInteraction,this.silent=e.silent,this.tag=e.tag,this.timestamp=e.timestamp,this.vibrate=e.vibrate,this.title=e.title,this.clickInterop=e.clickInterop,this.actions=e.actions,this.focusPlatformOnDefaultClick=e.focusPlatformOnDefaultClick,this.severity=e.severity,this.showToast=e.showToast,this.showInPanel=e.showInPanel,this.state=e.state}}(e,t)}async buildApplication(e,t){const n=new xr(e,[],this.appManagerController).toApi(),r=t.map((e=>this.buildInstance(e,n)));return n.instances.push(...r),n}buildInstance(e,t){return new Cr(e,this.bridge,t).toApi()}},r=(e=>{const n=!!e?.gateway?.webPlatform?.port,r=Object.assign({},t,e,{isPlatformInternal:n});return r.systemLogger&&(r.logger=r.systemLogger.level??"info"),r})(e);(()=>{const e=window.glue42core||window.iobrowser;if(e&&e.webStarted)throw new Error("IoConnect Browser has already been started for this application.");e?e.webStarted=!0:window.iobrowser={webStarted:!0}})();const i=await((e,t,n)=>new Promise(((r,i)=>{let s=!0;const o=setTimeout((()=>{s&&(s=!1,i(n||`Promise timeout hit: ${t}`))}),t);e().then((e=>{s&&(s=!1,clearTimeout(o),r(e))})).catch((e=>{s&&(s=!1,clearTimeout(o),i(e))}))})))((()=>ys(r,{version:Kr})),3e4,"Glue Web initialization timed out, because core didn't resolve"),s=i.logger.subLogger("web.main.controller");return n.defineGlue(i),n.sessionController.configure({windowId:i.interop.instance.instance}),await n.preferredConnectionController.start(r),await n.bridge.start(n.controllers),n.defineConfig(r),s.trace("the bridge has been started, initializing all controllers"),await Promise.all(Object.values(n.controllers).map((e=>e.start(i,n)))),s.trace("all controllers reported started, starting all additional libraries"),await Promise.all(r.libraries.map((e=>e(i,r)))),s.trace("all libraries were started"),n.eventsDispatcher.start(i),s.trace("start event dispatched, glue is ready, returning it"),i});var ys;if("undefined"!=typeof window){const e=window;e.IOBrowser=ms,delete e.GlueCore,delete e.IOConnectCore}const ws=window.glue42gd||window.glue42core,vs=window.iodesktop||window.iobrowser;ws||vs||(window.iobrowser={webStarted:!1}),ms.version=Kr;const bs={name:"connectionRequest"},Ss={name:"connectionAccepted"},Cs={name:"platformPing"},xs={name:"platformReady"},Is={name:"clientUnload"},Es={name:"parentPing"},As={name:"parentReady"},ks={name:"gatewayDisconnect"},_s={name:"gatewayInternalConnect"},Ps={name:"transportSwitchRequest"},Ts={name:"transportSwitchResponse"},Fs={name:"getCurrentTransport"},Ds={name:"getCurrentTransportResponse"},Os={name:"checkPreferredLogic"},Rs={name:"checkPreferredConnection"},Ns={name:"checkPreferredLogicResponse"},js={name:"checkPreferredConnectionResponse"},$s="T42.Web.Client.Control",Ms="T42.Workspaces.Control",qs="Tick42.FDC3.Intents.",Bs="web-platform",Ls={windows:{windowResponseTimeoutMs:1e4,defaultWindowOpenBounds:{top:0,left:0,width:800,height:600}},applications:{local:[]},layouts:{mode:"idb",local:[]},channels:{definitions:[]},plugins:{definitions:[]},licenseKey:"",gateway:{logging:{level:"info"}},themes:{defaultTheme:"dark"},connection:{},browser:{},environment:{},workspacesFrameCache:!0},Ws={enable:!0,enableToasts:!0,sourceFilter:{allowed:["*"],blocked:[]},clearNotificationOnClick:!0},Hs=15e3;var Us="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{};function Gs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Vs(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})})),n}var Js={},Ks={};function zs(e){this.message=e}zs.prototype=new Error,zs.prototype.name="InvalidCharacterError";var Qs="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new zs("'atob' failed: The string to be decoded is not correctly encoded.");for(var n,r,i=0,s=0,o="";r=t.charAt(s++);~r&&(n=i%4?64*n+r:r,i++%4)?o+=String.fromCharCode(255&n>>(-2*i&6)):0)r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r);return o};function Xs(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw"Illegal base64url string!"}try{return function(e){return decodeURIComponent(Qs(e).replace(/(.)/g,(function(e,t){var n=t.charCodeAt(0).toString(16).toUpperCase();return n.length<2&&(n="0"+n),"%"+n})))}(t)}catch(e){return Qs(t)}}function Ys(e){this.message=e}Ys.prototype=new Error,Ys.prototype.name="InvalidTokenError";var Zs=Object.freeze({__proto__:null,InvalidTokenError:Ys,default:function(e,t){if("string"!=typeof e)throw new Ys("Invalid token specified");var n=!0===(t=t||{}).header?0:1;try{return JSON.parse(Xs(e.split(".")[n]))}catch(e){throw new Ys("Invalid token specified: "+e.message)}}}),eo=Vs(Zs),to="object"==typeof self?self.FormData:window.FormData,no={};function ro(e,t){return function(){return e.apply(t,arguments)}}const{toString:io}=Object.prototype,{getPrototypeOf:so}=Object,oo=(e=>t=>{const n=io.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),ao=e=>(e=e.toLowerCase(),t=>oo(t)===e),co=e=>t=>typeof t===e,{isArray:lo}=Array,uo=co("undefined");const ho=ao("ArrayBuffer");const po=co("string"),go=co("function"),fo=co("number"),mo=e=>null!==e&&"object"==typeof e,yo=e=>{if("object"!==oo(e))return!1;const t=so(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},wo=ao("Date"),vo=ao("File"),bo=ao("Blob"),So=ao("FileList"),Co=ao("URLSearchParams"),[xo,Io,Eo,Ao]=["ReadableStream","Request","Response","Headers"].map(ao);function ko(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,i;if("object"!=typeof e&&(e=[e]),lo(e))for(r=0,i=e.length;r0;)if(r=n[i],t===r.toLowerCase())return r;return null}const Po="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:Us,To=e=>!uo(e)&&e!==Po;const Fo=(e=>t=>e&&t instanceof e)("undefined"!=typeof Uint8Array&&so(Uint8Array)),Do=ao("HTMLFormElement"),Oo=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Ro=ao("RegExp"),No=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};ko(n,((n,i)=>{let s;!1!==(s=t(n,i,e))&&(r[i]=s||n)})),Object.defineProperties(e,r)},jo="abcdefghijklmnopqrstuvwxyz",$o="0123456789",Mo={DIGIT:$o,ALPHA:jo,ALPHA_DIGIT:jo+jo.toUpperCase()+$o};const qo=ao("AsyncFunction");var Bo={isArray:lo,isArrayBuffer:ho,isBuffer:function(e){return null!==e&&!uo(e)&&null!==e.constructor&&!uo(e.constructor)&&go(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||go(e.append)&&("formdata"===(t=oo(e))||"object"===t&&go(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&ho(e.buffer),t},isString:po,isNumber:fo,isBoolean:e=>!0===e||!1===e,isObject:mo,isPlainObject:yo,isReadableStream:xo,isRequest:Io,isResponse:Eo,isHeaders:Ao,isUndefined:uo,isDate:wo,isFile:vo,isBlob:bo,isRegExp:Ro,isFunction:go,isStream:e=>mo(e)&&go(e.pipe),isURLSearchParams:Co,isTypedArray:Fo,isFileList:So,forEach:ko,merge:function e(){const{caseless:t}=To(this)&&this||{},n={},r=(r,i)=>{const s=t&&_o(n,i)||i;yo(n[s])&&yo(r)?n[s]=e(n[s],r):yo(r)?n[s]=e({},r):lo(r)?n[s]=r.slice():n[s]=r};for(let e=0,t=arguments.length;e(ko(t,((t,r)=>{n&&go(t)?e[r]=ro(t,n):e[r]=t}),{allOwnKeys:r}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,n,r)=>{let i,s,o;const a={};if(t=t||{},null==e)return t;do{for(i=Object.getOwnPropertyNames(e),s=i.length;s-- >0;)o=i[s],r&&!r(o,e,t)||a[o]||(t[o]=e[o],a[o]=!0);e=!1!==n&&so(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:oo,kindOfTest:ao,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(lo(e))return e;let t=e.length;if(!fo(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:Do,hasOwnProperty:Oo,hasOwnProp:Oo,reduceDescriptors:No,freezeMethods:e=>{No(e,((t,n)=>{if(go(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];go(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return lo(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:_o,global:Po,isContextDefined:To,ALPHABET:Mo,generateString:(e=16,t=Mo.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&go(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(mo(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const i=lo(e)?[]:{};return ko(e,((e,t)=>{const s=n(e,r+1);!uo(s)&&(i[t]=s)})),t[r]=void 0,i}}return e};return n(e,0)},isAsyncFn:qo,isThenable:e=>e&&(mo(e)||go(e))&&go(e.then)&&go(e.catch)};function Lo(e,t,n,r,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),i&&(this.response=i)}Bo.inherits(Lo,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Bo.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Wo=Lo.prototype,Ho={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{Ho[e]={value:e}})),Object.defineProperties(Lo,Ho),Object.defineProperty(Wo,"isAxiosError",{value:!0}),Lo.from=(e,t,n,r,i,s)=>{const o=Object.create(Wo);return Bo.toFlatObject(e,o,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),Lo.call(o,e.message,t,n,r,i),o.cause=e,o.name=e.name,s&&Object.assign(o,s),o};function Uo(e){return Bo.isPlainObject(e)||Bo.isArray(e)}function Go(e){return Bo.endsWith(e,"[]")?e.slice(0,-2):e}function Vo(e,t,n){return e?e.concat(t).map((function(e,t){return e=Go(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const Jo=Bo.toFlatObject(Bo,{},null,(function(e){return/^is[A-Z]/.test(e)}));function Ko(e,t,n){if(!Bo.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=Bo.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!Bo.isUndefined(t[e])}))).metaTokens,i=n.visitor||l,s=n.dots,o=n.indexes,a=(n.Blob||"undefined"!=typeof Blob&&Blob)&&Bo.isSpecCompliantForm(t);if(!Bo.isFunction(i))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(Bo.isDate(e))return e.toISOString();if(!a&&Bo.isBlob(e))throw new Lo("Blob is not supported. Use a Buffer instead.");return Bo.isArrayBuffer(e)||Bo.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function l(e,n,i){let a=e;if(e&&!i&&"object"==typeof e)if(Bo.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(Bo.isArray(e)&&function(e){return Bo.isArray(e)&&!e.some(Uo)}(e)||(Bo.isFileList(e)||Bo.endsWith(n,"[]"))&&(a=Bo.toArray(e)))return n=Go(n),a.forEach((function(e,r){!Bo.isUndefined(e)&&null!==e&&t.append(!0===o?Vo([n],r,s):null===o?n:n+"[]",c(e))})),!1;return!!Uo(e)||(t.append(Vo(i,n,s),c(e)),!1)}const u=[],h=Object.assign(Jo,{defaultVisitor:l,convertValue:c,isVisitable:Uo});if(!Bo.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!Bo.isUndefined(n)){if(-1!==u.indexOf(n))throw Error("Circular reference detected in "+r.join("."));u.push(n),Bo.forEach(n,(function(n,s){!0===(!(Bo.isUndefined(n)||null===n)&&i.call(t,n,Bo.isString(s)?s.trim():s,r,h))&&e(n,r?r.concat(s):[s])})),u.pop()}}(e),t}function zo(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Qo(e,t){this._pairs=[],e&&Ko(e,this,t)}const Xo=Qo.prototype;function Yo(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Zo(e,t,n){if(!t)return e;const r=n&&n.encode||Yo,i=n&&n.serialize;let s;if(s=i?i(t,n):Bo.isURLSearchParams(t)?t.toString():new Qo(t,n).toString(r),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}Xo.append=function(e,t){this._pairs.push([e,t])},Xo.toString=function(e){const t=e?function(t){return e.call(this,t,zo)}:zo;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var ea=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Bo.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},ta={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},na={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Qo,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const ra="undefined"!=typeof window&&"undefined"!=typeof document,ia=(sa="undefined"!=typeof navigator&&navigator.product,ra&&["ReactNative","NativeScript","NS"].indexOf(sa)<0);var sa;const oa="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,aa=ra&&window.location.href||"http://localhost";var ca={...Object.freeze({__proto__:null,hasBrowserEnv:ra,hasStandardBrowserWebWorkerEnv:oa,hasStandardBrowserEnv:ia,origin:aa}),...na};function la(e){function t(e,n,r,i){let s=e[i++];if("__proto__"===s)return!0;const o=Number.isFinite(+s),a=i>=e.length;if(s=!s&&Bo.isArray(r)?r.length:s,a)return Bo.hasOwnProp(r,s)?r[s]=[r[s],n]:r[s]=n,!o;r[s]&&Bo.isObject(r[s])||(r[s]=[]);return t(e,n,r[s],i)&&Bo.isArray(r[s])&&(r[s]=function(e){const t={},n=Object.keys(e);let r;const i=n.length;let s;for(r=0;r{t(function(e){return Bo.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null}const ua={transitional:ta,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,i=Bo.isObject(e);i&&Bo.isHTMLForm(e)&&(e=new FormData(e));if(Bo.isFormData(e))return r?JSON.stringify(la(e)):e;if(Bo.isArrayBuffer(e)||Bo.isBuffer(e)||Bo.isStream(e)||Bo.isFile(e)||Bo.isBlob(e)||Bo.isReadableStream(e))return e;if(Bo.isArrayBufferView(e))return e.buffer;if(Bo.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Ko(e,new ca.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return ca.isNode&&Bo.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=Bo.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Ko(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return i||r?(t.setContentType("application/json",!1),function(e,t,n){if(Bo.isString(e))try{return(t||JSON.parse)(e),Bo.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||ua.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(Bo.isResponse(e)||Bo.isReadableStream(e))return e;if(e&&Bo.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw Lo.from(e,Lo.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ca.classes.FormData,Blob:ca.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Bo.forEach(["delete","get","head","post","put","patch"],(e=>{ua.headers[e]={}}));var ha=ua;const da=Bo.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const pa=Symbol("internals");function ga(e){return e&&String(e).trim().toLowerCase()}function fa(e){return!1===e||null==e?e:Bo.isArray(e)?e.map(fa):String(e)}function ma(e,t,n,r,i){return Bo.isFunction(r)?r.call(this,t,n):(i&&(t=n),Bo.isString(t)?Bo.isString(r)?-1!==t.indexOf(r):Bo.isRegExp(r)?r.test(t):void 0:void 0)}class ya{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function i(e,t,n){const i=ga(t);if(!i)throw new Error("header name must be a non-empty string");const s=Bo.findKey(r,i);(!s||void 0===r[s]||!0===n||void 0===n&&!1!==r[s])&&(r[s||t]=fa(e))}const s=(e,t)=>Bo.forEach(e,((e,n)=>i(e,n,t)));if(Bo.isPlainObject(e)||e instanceof this.constructor)s(e,t);else if(Bo.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))s((e=>{const t={};let n,r,i;return e&&e.split("\n").forEach((function(e){i=e.indexOf(":"),n=e.substring(0,i).trim().toLowerCase(),r=e.substring(i+1).trim(),!n||t[n]&&da[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t);else if(Bo.isHeaders(e))for(const[t,r]of e.entries())i(r,t,n);else null!=e&&i(t,e,n);return this}get(e,t){if(e=ga(e)){const n=Bo.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(Bo.isFunction(t))return t.call(this,e,n);if(Bo.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=ga(e)){const n=Bo.findKey(this,e);return!(!n||void 0===this[n]||t&&!ma(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function i(e){if(e=ga(e)){const i=Bo.findKey(n,e);!i||t&&!ma(0,n[i],i,t)||(delete n[i],r=!0)}}return Bo.isArray(e)?e.forEach(i):i(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const i=t[n];e&&!ma(0,this[i],i,e,!0)||(delete this[i],r=!0)}return r}normalize(e){const t=this,n={};return Bo.forEach(this,((r,i)=>{const s=Bo.findKey(n,i);if(s)return t[s]=fa(r),void delete t[i];const o=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(i):String(i).trim();o!==i&&delete t[i],t[o]=fa(r),n[o]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return Bo.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&Bo.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[pa]=this[pa]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=ga(e);t[r]||(!function(e,t){const n=Bo.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,i){return this[r].call(this,t,e,n,i)},configurable:!0})}))}(n,e),t[r]=!0)}return Bo.isArray(e)?e.forEach(r):r(e),this}}ya.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),Bo.reduceDescriptors(ya.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),Bo.freezeMethods(ya);var wa=ya;function va(e,t){const n=this||ha,r=t||n,i=wa.from(r.headers);let s=r.data;return Bo.forEach(e,(function(e){s=e.call(n,s,i.normalize(),t?t.status:void 0)})),i.normalize(),s}function ba(e){return!(!e||!e.__CANCEL__)}function Sa(e,t,n){Lo.call(this,null==e?"canceled":e,Lo.ERR_CANCELED,t,n),this.name="CanceledError"}function Ca(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new Lo("Request failed with status code "+n.status,[Lo.ERR_BAD_REQUEST,Lo.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}Bo.inherits(Sa,Lo,{__CANCEL__:!0});var xa=(e,t,n=3)=>{let r=0;const i=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let i,s=0,o=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),l=r[o];i||(i=c),n[s]=a,r[s]=c;let u=o,h=0;for(;u!==s;)h+=n[u++],u%=e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),c-ir)return i&&(clearTimeout(i),i=null),n=s,e.apply(null,arguments);i||(i=setTimeout((()=>(i=null,n=Date.now(),e.apply(null,arguments))),r-(s-n)))}}((n=>{const s=n.loaded,o=n.lengthComputable?n.total:void 0,a=s-r,c=i(a);r=s;const l={loaded:s,total:o,progress:o?s/o:void 0,bytes:a,rate:c||void 0,estimated:c&&o&&s<=o?(o-s)/c:void 0,event:n,lengthComputable:null!=o};l[t?"download":"upload"]=!0,e(l)}),n)},Ia=ca.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=Bo.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0},Ea=ca.hasStandardBrowserEnv?{write(e,t,n,r,i,s){const o=[e+"="+encodeURIComponent(t)];Bo.isNumber(n)&&o.push("expires="+new Date(n).toGMTString()),Bo.isString(r)&&o.push("path="+r),Bo.isString(i)&&o.push("domain="+i),!0===s&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Aa(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const ka=e=>e instanceof wa?{...e}:e;function _a(e,t){t=t||{};const n={};function r(e,t,n){return Bo.isPlainObject(e)&&Bo.isPlainObject(t)?Bo.merge.call({caseless:n},e,t):Bo.isPlainObject(t)?Bo.merge({},t):Bo.isArray(t)?t.slice():t}function i(e,t,n){return Bo.isUndefined(t)?Bo.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function s(e,t){if(!Bo.isUndefined(t))return r(void 0,t)}function o(e,t){return Bo.isUndefined(t)?Bo.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function a(n,i,s){return s in t?r(n,i):s in e?r(void 0,n):void 0}const c={url:s,method:s,data:s,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a,headers:(e,t)=>i(ka(e),ka(t),!0)};return Bo.forEach(Object.keys(Object.assign({},e,t)),(function(r){const s=c[r]||i,o=s(e[r],t[r],r);Bo.isUndefined(o)&&s!==a||(n[r]=o)})),n}var Pa=e=>{const t=_a({},e);let n,{data:r,withXSRFToken:i,xsrfHeaderName:s,xsrfCookieName:o,headers:a,auth:c}=t;if(t.headers=a=wa.from(a),t.url=Zo(Aa(t.baseURL,t.url),e.params,e.paramsSerializer),c&&a.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),Bo.isFormData(r))if(ca.hasStandardBrowserEnv||ca.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(!1!==(n=a.getContentType())){const[e,...t]=n?n.split(";").map((e=>e.trim())).filter(Boolean):[];a.setContentType([e||"multipart/form-data",...t].join("; "))}if(ca.hasStandardBrowserEnv&&(i&&Bo.isFunction(i)&&(i=i(t)),i||!1!==i&&Ia(t.url))){const e=s&&o&&Ea.read(o);e&&a.set(s,e)}return t};var Ta="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){const r=Pa(e);let i=r.data;const s=wa.from(r.headers).normalize();let o,{responseType:a}=r;function c(){r.cancelToken&&r.cancelToken.unsubscribe(o),r.signal&&r.signal.removeEventListener("abort",o)}let l=new XMLHttpRequest;function u(){if(!l)return;const r=wa.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());Ca((function(e){t(e),c()}),(function(e){n(e),c()}),{data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l}),l=null}l.open(r.method.toUpperCase(),r.url,!0),l.timeout=r.timeout,"onloadend"in l?l.onloadend=u:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(u)},l.onabort=function(){l&&(n(new Lo("Request aborted",Lo.ECONNABORTED,r,l)),l=null)},l.onerror=function(){n(new Lo("Network Error",Lo.ERR_NETWORK,r,l)),l=null},l.ontimeout=function(){let e=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const t=r.transitional||ta;r.timeoutErrorMessage&&(e=r.timeoutErrorMessage),n(new Lo(e,t.clarifyTimeoutError?Lo.ETIMEDOUT:Lo.ECONNABORTED,r,l)),l=null},void 0===i&&s.setContentType(null),"setRequestHeader"in l&&Bo.forEach(s.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),Bo.isUndefined(r.withCredentials)||(l.withCredentials=!!r.withCredentials),a&&"json"!==a&&(l.responseType=r.responseType),"function"==typeof r.onDownloadProgress&&l.addEventListener("progress",xa(r.onDownloadProgress,!0)),"function"==typeof r.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",xa(r.onUploadProgress)),(r.cancelToken||r.signal)&&(o=t=>{l&&(n(!t||t.type?new Sa(null,e,l):t),l.abort(),l=null)},r.cancelToken&&r.cancelToken.subscribe(o),r.signal&&(r.signal.aborted?o():r.signal.addEventListener("abort",o)));const h=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(r.url);h&&-1===ca.protocols.indexOf(h)?n(new Lo("Unsupported protocol "+h+":",Lo.ERR_BAD_REQUEST,e)):l.send(i||null)}))};var Fa=(e,t)=>{let n,r=new AbortController;const i=function(e){if(!n){n=!0,o();const t=e instanceof Error?e:this.reason;r.abort(t instanceof Lo?t:new Sa(t instanceof Error?t.message:t))}};let s=t&&setTimeout((()=>{i(new Lo(`timeout ${t} of ms exceeded`,Lo.ETIMEDOUT))}),t);const o=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach((e=>{e&&(e.removeEventListener?e.removeEventListener("abort",i):e.unsubscribe(i))})),e=null)};e.forEach((e=>e&&e.addEventListener&&e.addEventListener("abort",i)));const{signal:a}=r;return a.unsubscribe=o,[a,()=>{s&&clearTimeout(s),s=null}]};const Da=function*(e,t){let n=e.byteLength;if(!t||n{const s=async function*(e,t,n){for await(const r of e)yield*Da(ArrayBuffer.isView(r)?r:await n(String(r)),t)}(e,t,i);let o=0;return new ReadableStream({type:"bytes",async pull(e){const{done:t,value:i}=await s.next();if(t)return e.close(),void r();let a=i.byteLength;n&&n(o+=a),e.enqueue(new Uint8Array(i))},cancel:e=>(r(e),s.return())},{highWaterMark:2})},Ra=(e,t)=>{const n=null!=e;return r=>setTimeout((()=>t({lengthComputable:n,total:e,loaded:r})))},Na="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,ja=Na&&"function"==typeof ReadableStream,$a=Na&&("function"==typeof TextEncoder?(Ma=new TextEncoder,e=>Ma.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Ma;const qa=ja&&(()=>{let e=!1;const t=new Request(ca.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t})(),Ba=ja&&!!(()=>{try{return Bo.isReadableStream(new Response("").body)}catch(e){}})(),La={stream:Ba&&(e=>e.body)};var Wa;Na&&(Wa=new Response,["text","arrayBuffer","blob","formData","stream"].forEach((e=>{!La[e]&&(La[e]=Bo.isFunction(Wa[e])?t=>t[e]():(t,n)=>{throw new Lo(`Response type '${e}' is not supported`,Lo.ERR_NOT_SUPPORT,n)})})));const Ha=async(e,t)=>{const n=Bo.toFiniteNumber(e.getContentLength());return null==n?(async e=>null==e?0:Bo.isBlob(e)?e.size:Bo.isSpecCompliantForm(e)?(await new Request(e).arrayBuffer()).byteLength:Bo.isArrayBufferView(e)?e.byteLength:(Bo.isURLSearchParams(e)&&(e+=""),Bo.isString(e)?(await $a(e)).byteLength:void 0))(t):n};var Ua=Na&&(async e=>{let{url:t,method:n,data:r,signal:i,cancelToken:s,timeout:o,onDownloadProgress:a,onUploadProgress:c,responseType:l,headers:u,withCredentials:h="same-origin",fetchOptions:d}=Pa(e);l=l?(l+"").toLowerCase():"text";let p,g,[f,m]=i||s||o?Fa([i,s],o):[];const y=()=>{!p&&setTimeout((()=>{f&&f.unsubscribe()})),p=!0};let w;try{if(c&&qa&&"get"!==n&&"head"!==n&&0!==(w=await Ha(u,r))){let e,n=new Request(t,{method:"POST",body:r,duplex:"half"});Bo.isFormData(r)&&(e=n.headers.get("content-type"))&&u.setContentType(e),n.body&&(r=Oa(n.body,65536,Ra(w,xa(c)),null,$a))}Bo.isString(h)||(h=h?"cors":"omit"),g=new Request(t,{...d,signal:f,method:n.toUpperCase(),headers:u.normalize().toJSON(),body:r,duplex:"half",withCredentials:h});let i=await fetch(g);const s=Ba&&("stream"===l||"response"===l);if(Ba&&(a||s)){const e={};["status","statusText","headers"].forEach((t=>{e[t]=i[t]}));const t=Bo.toFiniteNumber(i.headers.get("content-length"));i=new Response(Oa(i.body,65536,a&&Ra(t,xa(a,!0)),s&&y,$a),e)}l=l||"text";let o=await La[Bo.findKey(La,l)||"text"](i,e);return!s&&y(),m&&m(),await new Promise(((t,n)=>{Ca(t,n,{data:o,headers:wa.from(i.headers),status:i.status,statusText:i.statusText,config:e,request:g})}))}catch(t){if(y(),t&&"TypeError"===t.name&&/fetch/i.test(t.message))throw Object.assign(new Lo("Network Error",Lo.ERR_NETWORK,e,g),{cause:t.cause||t});throw Lo.from(t,t&&t.code,e,g)}});const Ga={http:null,xhr:Ta,fetch:Ua};Bo.forEach(Ga,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const Va=e=>`- ${e}`,Ja=e=>Bo.isFunction(e)||null===e||!1===e;var Ka=e=>{e=Bo.isArray(e)?e:[e];const{length:t}=e;let n,r;const i={};for(let s=0;s`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new Lo("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Va).join("\n"):" "+Va(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function za(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Sa(null,e)}function Qa(e){za(e),e.headers=wa.from(e.headers),e.data=va.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return Ka(e.adapter||ha.adapter)(e).then((function(t){return za(e),t.data=va.call(e,e.transformResponse,t),t.headers=wa.from(t.headers),t}),(function(t){return ba(t)||(za(e),t&&t.response&&(t.response.data=va.call(e,e.transformResponse,t.response),t.response.headers=wa.from(t.response.headers))),Promise.reject(t)}))}const Xa="1.7.2",Ya={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Ya[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const Za={};Ya.transitional=function(e,t,n){function r(e,t){return"[Axios v1.7.2] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,i,s)=>{if(!1===e)throw new Lo(r(i," has been removed"+(t?" in "+t:"")),Lo.ERR_DEPRECATED);return t&&!Za[i]&&(Za[i]=!0,console.warn(r(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,i,s)}};var ec={assertOptions:function(e,t,n){if("object"!=typeof e)throw new Lo("options must be an object",Lo.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let i=r.length;for(;i-- >0;){const s=r[i],o=t[s];if(o){const t=e[s],n=void 0===t||o(t,s,e);if(!0!==n)throw new Lo("option "+s+" must be "+n,Lo.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new Lo("Unknown option "+s,Lo.ERR_BAD_OPTION)}},validators:Ya};const tc=ec.validators;class nc{constructor(e){this.defaults=e,this.interceptors={request:new ea,response:new ea}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const n=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?n&&!String(e.stack).endsWith(n.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+n):e.stack=n}catch(e){}}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=_a(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:i}=t;void 0!==n&&ec.assertOptions(n,{silentJSONParsing:tc.transitional(tc.boolean),forcedJSONParsing:tc.transitional(tc.boolean),clarifyTimeoutError:tc.transitional(tc.boolean)},!1),null!=r&&(Bo.isFunction(r)?t.paramsSerializer={serialize:r}:ec.assertOptions(r,{encode:tc.function,serialize:tc.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=i&&Bo.merge(i.common,i[t.method]);i&&Bo.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete i[e]})),t.headers=wa.concat(s,i);const o=[];let a=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,o.unshift(e.fulfilled,e.rejected))}));const c=[];let l;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let u,h=0;if(!a){const e=[Qa.bind(this),void 0];for(e.unshift.apply(e,o),e.push.apply(e,c),u=e.length,l=Promise.resolve(t);h{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,i){n.reason||(n.reason=new Sa(e,r,i),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new ic((function(t){e=t})),cancel:e}}}var sc=ic;const oc={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(oc).forEach((([e,t])=>{oc[t]=e}));var ac=oc;const cc=function e(t){const n=new rc(t),r=ro(rc.prototype.request,n);return Bo.extend(r,rc.prototype,n,{allOwnKeys:!0}),Bo.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(_a(t,n))},r}(ha);cc.Axios=rc,cc.CanceledError=Sa,cc.CancelToken=sc,cc.isCancel=ba,cc.VERSION=Xa,cc.toFormData=Ko,cc.AxiosError=Lo,cc.Cancel=cc.CanceledError,cc.all=function(e){return Promise.all(e)},cc.spread=function(e){return function(t){return e.apply(null,t)}},cc.isAxiosError=function(e){return Bo.isObject(e)&&!0===e.isAxiosError},cc.mergeConfig=_a,cc.AxiosHeaders=wa,cc.formToJSON=e=>la(Bo.isHTMLForm(e)?new FormData(e):e),cc.getAdapter=Ka,cc.HttpStatusCode=ac,cc.default=cc;var lc=cc,uc=Us&&Us.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,s){function o(e){try{c(r.next(e))}catch(e){s(e)}}function a(e){try{c(r.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}c((r=r.apply(e,t||[])).next())}))},hc=Us&&Us.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(no,"__esModule",{value:!0}),no.BaseAPI=void 0;const dc=hc(lc);no.BaseAPI=class{constructor(e){this.options=e,this.setOptions(e)}setOptions(e){var t,n;if(this.options=e,!e.auth)throw new Error("please provide auth info");this.eject(this.currentInterceptorsId,this.axiosInstance);const r=this.getHeaders(e);this.axiosInstance=dc.default.create({transformResponse:e.transformResponse,baseURL:e.baseUrl,headers:r,auth:(null===(t=e.auth)||void 0===t?void 0:t.basic)?e.auth.basic:void 0,withCredentials:null===(n=null==e?void 0:e.auth)||void 0===n?void 0:n.includeCredentials}),this.currentInterceptorsId=this.intercept(this.axiosInstance)}whoAmI(){return uc(this,void 0,void 0,(function*(){return(yield this.axiosInstance.get("/whoami")).data}))}onResponseSuccessCallback(e){this.responseSuccessCallback=e}onResponseErrorCallback(e){this.responseErrorCallback=e}unloadClient(e,t){var n;if(!e||!t)return;const r=this.options.auth.basic?`Basic ${window.btoa(this.options.auth.basic.username+":"+this.options.auth.basic.password)}`:`Bearer ${null===(n=this.options.auth.token)||void 0===n?void 0:n.bearer}`,i=new Headers(Object.assign({"Content-Type":"application/json","serverx-token":t,Authorization:r},this.options.headers)),s=new Request(`${this.options.baseUrl}/user/goodbye`,{method:"POST",headers:i,mode:"cors",cache:"default",keepalive:!0,body:JSON.stringify({session:e})});window.fetch(s)}getHeaders(e){const t={};if(e.auth.username&&(t.user=e.auth.username),e.auth.token&&e.auth.token.bearer&&(t.Authorization=`Bearer ${e.auth.token.bearer}`),e.headers)for(const n of Object.keys(e.headers))t[n]=e.headers[n];return t}intercept(e){var t,n;try{return null===(n=null===(t=null==e?void 0:e.interceptors)||void 0===t?void 0:t.response)||void 0===n?void 0:n.use((e=>{var t;try{null===(t=this.responseSuccessCallback)||void 0===t||t.call(this,e)}catch(e){}return e}),(e=>{var t;try{null===(t=this.responseErrorCallback)||void 0===t||t.call(this,e)}catch(e){}return Promise.reject(e)}))}catch(e){return}}eject(e,t){var n,r;try{e&&(null===(r=null===(n=null==t?void 0:t.interceptors)||void 0===n?void 0:n.response)||void 0===r||r.eject(e))}catch(e){}}};var pc={},gc=Us&&Us.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,s){function o(e){try{c(r.next(e))}catch(e){s(e)}}function a(e){try{c(r.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}c((r=r.apply(e,t||[])).next())}))};Object.defineProperty(pc,"__esModule",{value:!0}),pc.SystemConfigAPI=void 0;pc.SystemConfigAPI=class{constructor(e){this.axios=e}getAll(e){return gc(this,void 0,void 0,(function*(){let t="/systemConfig";if(e){t+=`?params=${encodeURIComponent(JSON.stringify(e))}`}return(yield this.axios.get(t)).data}))}getExactEntry(e){return gc(this,void 0,void 0,(function*(){return(yield this.axios.post("/systemConfig/get",{identifier:e,exact:!0})).data}))}getComputed(e){return gc(this,void 0,void 0,(function*(){return(yield this.axios.post("/systemConfig/get",{identifier:e,exact:!1})).data}))}addOrReplace(e){return gc(this,void 0,void 0,(function*(){yield this.axios.post("/systemConfig/",e)}))}remove(e){return gc(this,void 0,void 0,(function*(){yield this.axios.post("/systemConfig/delete",e)}))}removeConfigForIdentifier(e,t){return gc(this,void 0,void 0,(function*(){yield this.axios.post("/systemConfig/deleteConfig",{identifier:e,config:t})}))}};var fc={},mc=Us&&Us.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,s){function o(e){try{c(r.next(e))}catch(e){s(e)}}function a(e){try{c(r.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}c((r=r.apply(e,t||[])).next())}))};Object.defineProperty(fc,"__esModule",{value:!0}),fc.PromiseWrapper=void 0;fc.PromiseWrapper=class{constructor(){this.resolve=()=>{},this.reject=()=>{},this.rejected=!1,this.resolved=!1,this.promise=new Promise(((e,t)=>{this.resolve=t=>{this.resolved=!0,e(t)},this.reject=e=>{this.rejected=!0,t(e)}}))}static delay(e){return new Promise((t=>setTimeout(t,e)))}static delayForever(){return mc(this,void 0,void 0,(function*(){for(;;)yield this.delay(2147483647)}))}get ended(){return this.rejected||this.resolved}};var yc=Us&&Us.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,s){function o(e){try{c(r.next(e))}catch(e){s(e)}}function a(e){try{c(r.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}c((r=r.apply(e,t||[])).next())}))},wc=Us&&Us.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ks,"__esModule",{value:!0}),Ks.ClientAPI=void 0;const vc=wc(eo),bc=wc(to),Sc=no,Cc=pc,xc=fc;class Ic extends Sc.BaseAPI{constructor(e){super(e),this.customRequest=e.req,this.systemConfig=new Cc.SystemConfigAPI(this.axiosInstance)}unload(){this.unloadClient(this.sessionToken.session,this.sessionTokenString)}refreshData(e){return yc(this,void 0,void 0,(function*(){return(yield this.post("/user",e)).data}))}getApps(){return yc(this,void 0,void 0,(function*(){return(yield this.get("/user/apps")).data}))}getLayouts(){return yc(this,void 0,void 0,(function*(){return(yield this.get("/user/layouts")).data}))}saveLayout(e){return yc(this,void 0,void 0,(function*(){return(yield this.post("/user/layouts",e)).data}))}deleteUserLayout(e){return yc(this,void 0,void 0,(function*(){yield this.delete(`/user/layouts/${e}`)}))}deleteAllUserLayouts(){return yc(this,void 0,void 0,(function*(){return(yield this.delete("/user/layouts/")).data}))}renameLayout(e,t){return yc(this,void 0,void 0,(function*(){return(yield this.post(`/user/layouts/${e}/rename`,{newName:t})).data}))}getDefaultLayout(){return yc(this,void 0,void 0,(function*(){const e=yield this.get("/user/layouts/default");if(204!==e.status)return e.data}))}setDefaultLayout(e){return yc(this,void 0,void 0,(function*(){const t=yield this.post("/user/layouts/default",{id:e});if(204!==t.status)return t.data}))}openSession(e,t){return yc(this,void 0,void 0,(function*(){const n=yield this.post("/user/hello",{machine:e,glue:t});return{token:this.updateToken(n.data.token),data:n.data.data}}))}closeSession(e){return yc(this,void 0,void 0,(function*(){if(!(e=null!=e?e:this.sessionToken.session))throw new Error("no active session");const t={session:e};yield this.post("/user/goodbye",t)}))}refreshToken(){return yc(this,void 0,void 0,(function*(){const e={token:this.sessionTokenString},t=yield this.post("/user/refresh",e);return this.updateToken(t.data.token)}))}getCommands(){return yc(this,void 0,void 0,(function*(){return(yield this.get(`/user/commands/${this.sessionToken.session}`)).data}))}setCommandResult(e,t){return yc(this,void 0,void 0,(function*(){yield this.post(`/user/commands/${e}`,t)}))}setCommandFileResult(e,t,n){return yc(this,void 0,void 0,(function*(){const r={fileName:t,contents:n};yield this.post(`/user/commands/${e}/file`,r)}))}getPrefs(e,t){return yc(this,void 0,void 0,(function*(){try{let n=`/user/prefs/${e}`;if(t){n+=`?last=${t.getTime()}`}return(yield this.get(n)).data}catch(e){return}}))}getAllPrefs(){return yc(this,void 0,void 0,(function*(){return(yield this.get("/user/prefs/")).data}))}setPrefs(e){return yc(this,void 0,void 0,(function*(){return(yield this.post("/user/prefs/",e)).data}))}deletePrefs(e){return yc(this,void 0,void 0,(function*(){yield this.delete(`/user/prefs/${e}`)}))}deleteAllPrefs(){return yc(this,void 0,void 0,(function*(){yield this.delete("/user/prefs/")}))}addFeedback(e,t){return yc(this,void 0,void 0,(function*(){const n=new bc.default;n.append("description",e),n.append("attachment",t);try{return(yield this.post("/user/feedbacks",n,n.getHeaders())).data}catch(e){throw e}}))}setOptions(e){super.setOptions(e),this.sessionTokenString&&this.updateToken(this.sessionTokenString)}updateToken(e){var t;return this.sessionTokenString=e,this.axiosInstance.defaults.headers.common["serverx-token"]=e,this.options.headers=null!==(t=this.options.headers)&&void 0!==t?t:{},this.options.headers["serverx-token"]=e,this.sessionToken=vc.default(e),this.sessionToken}get(e,t){return yc(this,void 0,void 0,(function*(){return this.customRequest?this.withRequest(e,"GET",t):this.axiosInstance.get(e,t)}))}post(e,t,n){return yc(this,void 0,void 0,(function*(){return this.customRequest?this.withRequest(e,"POST",t,n):this.axiosInstance.post(e,t,{headers:n})}))}delete(e,t){return yc(this,void 0,void 0,(function*(){return this.customRequest?this.withRequest(e,"DELETE",t):this.axiosInstance.delete(e,t)}))}withRequest(e,t,n,r){return yc(this,void 0,void 0,(function*(){if(!this.customRequest)throw new Error("invalid call");const i=new xc.PromiseWrapper;let s=this.getHeaders(this.options);r&&(s=Object.assign(Object.assign({},s),{extraHeaders:r})),e.startsWith("/")&&(e=e.substring(1));let o=this.options.baseUrl;o.endsWith("/")||(o+="/");const a=new URL(e,o).href,c={method:t,url:a,headers:s,json:null==n||n};return this.customRequest(c,((e,t)=>{if(e)return void i.reject(e);if(t.statusCode>=400)return void i.reject(`received error with code ${t.statusCode}`);let n={};if(t.body)try{n=t.body}catch(e){}i.resolve({data:n,status:t.statusCode})})),i.promise}))}}Ks.ClientAPI=Ic,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ClientAPI=void 0;var t=Ks;Object.defineProperty(e,"ClientAPI",{enumerable:!0,get:function(){return t.ClientAPI}})}(Js);var Ec,Ac,kc={exports:{}};Ec=kc,Ac=kc.exports,function(e,t){var n="function",r="undefined",i="object",s="string",o="major",a="model",c="name",l="type",u="vendor",h="version",d="architecture",p="console",g="mobile",f="tablet",m="smarttv",y="wearable",w="embedded",v="Amazon",b="Apple",S="ASUS",C="BlackBerry",x="Browser",I="Chrome",E="Firefox",A="Google",k="Huawei",_="LG",P="Microsoft",T="Motorola",F="Opera",D="Samsung",O="Sharp",R="Sony",N="Xiaomi",j="Zebra",$="Facebook",M="Chromium OS",q="Mac OS",B=function(e){for(var t={},n=0;n0?2===c.length?typeof c[1]==n?this[c[0]]=c[1].call(this,u):this[c[0]]=c[1]:3===c.length?typeof c[1]!==n||c[1].exec&&c[1].test?this[c[0]]=u?u.replace(c[1],c[2]):t:this[c[0]]=u?c[1].call(this,u,c[2]):t:4===c.length&&(this[c[0]]=u?c[3].call(this,u.replace(c[1],c[2])):t):this[c]=u||t;h+=2}},G=function(e,n){for(var r in n)if(typeof n[r]===i&&n[r].length>0){for(var s=0;s2&&(e[a]="iPad",e[l]=f),e},this.getEngine=function(){var e={};return e[c]=t,e[h]=t,U.call(e,w,b.engine),e},this.getOS=function(){var e={};return e[c]=t,e[h]=t,U.call(e,w,b.os),S&&!e[c]&&v&&v.platform&&"Unknown"!=v.platform&&(e[c]=v.platform.replace(/chrome os/i,M).replace(/macos/i,q)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return w},this.setUA=function(e){return w=typeof e===s&&e.length>500?H(e,500):e,this},this.setUA(w),this};K.VERSION="1.0.38",K.BROWSER=B([c,h,o]),K.CPU=B([d]),K.DEVICE=B([a,u,l,p,g,m,f,y,w]),K.ENGINE=K.OS=B([c,h]),Ec.exports&&(Ac=Ec.exports=K),Ac.UAParser=K;var z=typeof e!==r&&(e.jQuery||e.Zepto);if(z&&!z.ua){var Q=new K;z.ua=Q.getResult(),z.ua.get=function(){return Q.getUA()},z.ua.set=function(e){Q.setUA(e);var t=Q.getResult();for(var n in t)z.ua[n]=t[n]}}}("object"==typeof window?window:Us);var _c=kc.exports,Pc=Symbol.for("immer-nothing"),Tc=Symbol.for("immer-draftable"),Fc=Symbol.for("immer-state");function Dc(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Oc=Object.getPrototypeOf;function Rc(e){return!!e&&!!e[Fc]}function Nc(e){return!!e&&($c(e)||Array.isArray(e)||!!e[Tc]||!!e.constructor?.[Tc]||Wc(e)||Hc(e))}var jc=Object.prototype.constructor.toString();function $c(e){if(!e||"object"!=typeof e)return!1;const t=Oc(e);if(null===t)return!0;const n=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return n===Object||"function"==typeof n&&Function.toString.call(n)===jc}function Mc(e,t){0===qc(e)?Reflect.ownKeys(e).forEach((n=>{t(n,e[n],e)})):e.forEach(((n,r)=>t(r,n,e)))}function qc(e){const t=e[Fc];return t?t.type_:Array.isArray(e)?1:Wc(e)?2:Hc(e)?3:0}function Bc(e,t){return 2===qc(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Lc(e,t,n){const r=qc(e);2===r?e.set(t,n):3===r?e.add(n):e[t]=n}function Wc(e){return e instanceof Map}function Hc(e){return e instanceof Set}function Uc(e){return e.copy_||e.base_}function Gc(e,t){if(Wc(e))return new Map(e);if(Hc(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const n=$c(e);if(!0===t||"class_only"===t&&!n){const t=Object.getOwnPropertyDescriptors(e);delete t[Fc];let n=Reflect.ownKeys(t);for(let r=0;r1&&(e.set=e.add=e.clear=e.delete=Jc),Object.freeze(e),t&&Object.entries(e).forEach((([e,t])=>Vc(t,!0)))),e}function Jc(){Dc(2)}function Kc(e){return Object.isFrozen(e)}var zc,Qc={};function Xc(e){const t=Qc[e];return t||Dc(0),t}function Yc(){return zc}function Zc(e,t){t&&(Xc("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function el(e){tl(e),e.drafts_.forEach(rl),e.drafts_=null}function tl(e){e===zc&&(zc=e.parent_)}function nl(e){return zc={drafts_:[],parent_:zc,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function rl(e){const t=e[Fc];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function il(e,t){t.unfinalizedDrafts_=t.drafts_.length;const n=t.drafts_[0];return void 0!==e&&e!==n?(n[Fc].modified_&&(el(t),Dc(4)),Nc(e)&&(e=sl(t,e),t.parent_||al(t,e)),t.patches_&&Xc("Patches").generateReplacementPatches_(n[Fc].base_,e,t.patches_,t.inversePatches_)):e=sl(t,n,[]),el(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==Pc?e:void 0}function sl(e,t,n){if(Kc(t))return t;const r=t[Fc];if(!r)return Mc(t,((i,s)=>ol(e,r,t,i,s,n))),t;if(r.scope_!==e)return t;if(!r.modified_)return al(e,r.base_,!0),r.base_;if(!r.finalized_){r.finalized_=!0,r.scope_.unfinalizedDrafts_--;const t=r.copy_;let i=t,s=!1;3===r.type_&&(i=new Set(t),t.clear(),s=!0),Mc(i,((i,o)=>ol(e,r,t,i,o,n,s))),al(e,t,!1),n&&e.patches_&&Xc("Patches").generatePatches_(r,n,e.patches_,e.inversePatches_)}return r.copy_}function ol(e,t,n,r,i,s,o){if(Rc(i)){const o=sl(e,i,s&&t&&3!==t.type_&&!Bc(t.assigned_,r)?s.concat(r):void 0);if(Lc(n,r,o),!Rc(o))return;e.canAutoFreeze_=!1}else o&&n.add(i);if(Nc(i)&&!Kc(i)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;sl(e,i),t&&t.scope_.parent_||"symbol"==typeof r||!Object.prototype.propertyIsEnumerable.call(n,r)||al(e,i)}}function al(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Vc(t,n)}var cl={get(e,t){if(t===Fc)return e;const n=Uc(e);if(!Bc(n,t))return function(e,t,n){const r=hl(t,n);return r?"value"in r?r.value:r.get?.call(e.draft_):void 0}(e,n,t);const r=n[t];return e.finalized_||!Nc(r)?r:r===ul(e.base_,t)?(pl(e),e.copy_[t]=gl(r,e)):r},has:(e,t)=>t in Uc(e),ownKeys:e=>Reflect.ownKeys(Uc(e)),set(e,t,n){const r=hl(Uc(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){const r=ul(Uc(e),t),i=r?.[Fc];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}(n,r)&&(void 0!==n||Bc(e.base_,t)))return!0;pl(e),dl(e)}return e.copy_[t]===n&&(void 0!==n||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=n,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==ul(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,pl(e),dl(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const n=Uc(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:r.enumerable,value:n[t]}:r},defineProperty(){Dc(11)},getPrototypeOf:e=>Oc(e.base_),setPrototypeOf(){Dc(12)}},ll={};function ul(e,t){const n=e[Fc];return(n?Uc(n):e)[t]}function hl(e,t){if(!(t in e))return;let n=Oc(e);for(;n;){const e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=Oc(n)}}function dl(e){e.modified_||(e.modified_=!0,e.parent_&&dl(e.parent_))}function pl(e){e.copy_||(e.copy_=Gc(e.base_,e.scope_.immer_.useStrictShallowCopy_))}Mc(cl,((e,t)=>{ll[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),ll.deleteProperty=function(e,t){return ll.set.call(this,e,t,void 0)},ll.set=function(e,t,n){return cl.set.call(this,e[0],t,n,e[0])};function gl(e,t){const n=Wc(e)?Xc("MapSet").proxyMap_(e,t):Hc(e)?Xc("MapSet").proxySet_(e,t):function(e,t){const n=Array.isArray(e),r={type_:n?1:0,scope_:t?t.scope_:Yc(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let i=r,s=cl;n&&(i=[r],s=ll);const{revoke:o,proxy:a}=Proxy.revocable(i,s);return r.draft_=a,r.revoke_=o,a}(e,t);return(t?t.scope_:Yc()).drafts_.push(n),n}function fl(e){if(!Nc(e)||Kc(e))return e;const t=e[Fc];let n;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Gc(e,t.scope_.immer_.useStrictShallowCopy_)}else n=Gc(e,!0);return Mc(n,((e,t)=>{Lc(n,e,fl(t))})),t&&(t.finalized_=!1),n}var ml=new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,n)=>{if("function"==typeof e&&"function"!=typeof t){const n=t;t=e;const r=this;return function(e=n,...i){return r.produce(e,(e=>t.call(this,e,...i)))}}let r;if("function"!=typeof t&&Dc(6),void 0!==n&&"function"!=typeof n&&Dc(7),Nc(e)){const i=nl(this),s=gl(e,void 0);let o=!0;try{r=t(s),o=!1}finally{o?el(i):tl(i)}return Zc(i,n),il(r,i)}if(!e||"object"!=typeof e){if(r=t(e),void 0===r&&(r=e),r===Pc&&(r=void 0),this.autoFreeze_&&Vc(r,!0),n){const t=[],i=[];Xc("Patches").generateReplacementPatches_(e,r,t,i),n(t,i)}return r}Dc(1)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...n)=>this.produceWithPatches(t,(t=>e(t,...n)));let n,r;return[this.produce(e,t,((e,t)=>{n=e,r=t})),n,r]},"boolean"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){Nc(e)||Dc(8),Rc(e)&&(e=function(e){Rc(e)||Dc(10);return fl(e)}(e));const t=nl(this),n=gl(e,void 0);return n[Fc].isManual_=!0,tl(t),n}finishDraft(e,t){const n=e&&e[Fc];n&&n.isManual_||Dc(9);const{scope_:r}=n;return Zc(r,t),il(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){const r=t[n];if(0===r.path.length&&"replace"===r.op){e=r.value;break}}n>-1&&(t=t.slice(n+1));const r=Xc("Patches").applyPatches_;return Rc(e)?r(e,t):this.produce(e,(e=>r(e,t)))}},yl=ml.produce;ml.produceWithPatches.bind(ml),ml.setAutoFreeze.bind(ml),ml.setUseStrictShallowCopy.bind(ml),ml.applyPatches.bind(ml),ml.createDraft.bind(ml),ml.finishDraft.bind(ml);var wl={userAgent:!1},vl={},bl=bl||function(e,t){var n={},r=n.lib={},i=r.Base=function(){function e(){}return{extend:function(t){e.prototype=this;var n=new e;return t&&n.mixIn(t),n.hasOwnProperty("init")||(n.init=function(){n.$super.init.apply(this,arguments)}),n.init.prototype=n,n.$super=this,n},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),s=r.WordArray=i.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||a).stringify(this)},concat:function(e){var t=this.words,n=e.words,r=this.sigBytes,i=e.sigBytes;if(this.clamp(),r%4)for(var s=0;s>>2]>>>24-s%4*8&255;t[r+s>>>2]|=o<<24-(r+s)%4*8}else for(s=0;s>>2]=n[s>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-i%4*8&255;r.push((s>>>4).toString(16)),r.push((15&s).toString(16))}return r.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new s.init(n,t/2)}},c=o.Latin1={stringify:function(e){for(var t=e.words,n=e.sigBytes,r=[],i=0;i>>2]>>>24-i%4*8&255;r.push(String.fromCharCode(s))}return r.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new s.init(n,t)}},l=o.Utf8={stringify:function(e){try{return decodeURIComponent(escape(c.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return c.parse(unescape(encodeURIComponent(e)))}},u=r.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new s.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=l.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,i=n.sigBytes,o=this.blockSize,a=i/(4*o),c=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*o,l=e.min(4*c,i);if(c){for(var u=0;u>>2]}},t.BlockCipher=a.extend({cfg:a.cfg.extend({mode:c,padding:u}),reset:function(){a.reset.call(this);var e=(t=this.cfg).iv,t=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=t.createEncryptor;else n=t.createDecryptor,this._minBufferSize=1;this._mode=n.call(t,this,e&&e.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else t=this._process(!0),e.unpad(t);return t},blockSize:4});var h=t.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),d=(c=(p.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return((e=e.salt)?r.create([1398893684,1701076831]).concat(e).concat(t):t).toString(s)},parse:function(e){var t=(e=s.parse(e)).words;if(1398893684==t[0]&&1701076831==t[1]){var n=r.create(t.slice(2,4));t.splice(0,4),e.sigBytes-=16}return h.create({ciphertext:e,salt:n})}},t.SerializableCipher=n.extend({cfg:n.extend({format:c}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var i=e.createEncryptor(n,r);return t=i.finalize(t),i=i.cfg,h.create({ciphertext:t,key:n,iv:i.iv,algorithm:e,mode:i.mode,padding:i.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}})),p=(p.kdf={}).OpenSSL={execute:function(e,t,n,i){return i||(i=r.random(8)),e=o.create({keySize:t+n}).compute(e,i),n=r.create(e.words.slice(t),4*n),e.sigBytes=4*t,h.create({key:e,iv:n,salt:i})}},g=t.PasswordBasedCipher=d.extend({cfg:d.cfg.extend({kdf:p}),encrypt:function(e,t,n,r){return n=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,(e=d.encrypt.call(this,e,t,n.key,r)).mixIn(n),e},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),n=r.kdf.execute(n,e.keySize,e.ivSize,t.salt),r.iv=n.iv,d.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=bl,t=e.lib.BlockCipher,n=e.algo,r=[],i=[],s=[],o=[],a=[],c=[],l=[],u=[],h=[],d=[],p=[],g=0;256>g;g++)p[g]=128>g?g<<1:g<<1^283;var f=0,m=0;for(g=0;256>g;g++){var y=(y=m^m<<1^m<<2^m<<3^m<<4)>>>8^255&y^99;r[f]=y,i[y]=f;var w=p[f],v=p[w],b=p[v],S=257*p[y]^16843008*y;s[f]=S<<24|S>>>8,o[f]=S<<16|S>>>16,a[f]=S<<8|S>>>24,c[f]=S,S=16843009*b^65537*v^257*w^16843008*f,l[y]=S<<24|S>>>8,u[y]=S<<16|S>>>16,h[y]=S<<8|S>>>24,d[y]=S,f?(f=w^p[p[p[b^w]]],m^=p[p[m]]):f=m=1}var C=[0,1,2,4,8,16,32,64,128,27,54];n=n.AES=t.extend({_doReset:function(){for(var e=(n=this._key).words,t=n.sigBytes/4,n=4*((this._nRounds=t+6)+1),i=this._keySchedule=[],s=0;s>>24]<<24|r[o>>>16&255]<<16|r[o>>>8&255]<<8|r[255&o]):(o=r[(o=o<<8|o>>>24)>>>24]<<24|r[o>>>16&255]<<16|r[o>>>8&255]<<8|r[255&o],o^=C[s/t|0]<<24),i[s]=i[s-t]^o}for(e=this._invKeySchedule=[],t=0;tt||4>=s?o:l[r[o>>>24]]^u[r[o>>>16&255]]^h[r[o>>>8&255]]^d[r[255&o]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,s,o,a,c,r)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,l,u,h,d,i),n=e[t+1],e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,r,i,s,o,a){for(var c=this._nRounds,l=e[t]^n[0],u=e[t+1]^n[1],h=e[t+2]^n[2],d=e[t+3]^n[3],p=4,g=1;g>>24]^i[u>>>16&255]^s[h>>>8&255]^o[255&d]^n[p++],m=r[u>>>24]^i[h>>>16&255]^s[d>>>8&255]^o[255&l]^n[p++],y=r[h>>>24]^i[d>>>16&255]^s[l>>>8&255]^o[255&u]^n[p++];d=r[d>>>24]^i[l>>>16&255]^s[u>>>8&255]^o[255&h]^n[p++],l=f,u=m,h=y}f=(a[l>>>24]<<24|a[u>>>16&255]<<16|a[h>>>8&255]<<8|a[255&d])^n[p++],m=(a[u>>>24]<<24|a[h>>>16&255]<<16|a[d>>>8&255]<<8|a[255&l])^n[p++],y=(a[h>>>24]<<24|a[d>>>16&255]<<16|a[l>>>8&255]<<8|a[255&u])^n[p++],d=(a[d>>>24]<<24|a[l>>>16&255]<<16|a[u>>>8&255]<<8|a[255&h])^n[p++],e[t]=f,e[t+1]=m,e[t+2]=y,e[t+3]=d},keySize:8});e.AES=t._createHelper(n)}(),function(){function e(e,t){var n=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=n,this._lBlock^=n<>>e^this._lBlock)&t;this._lBlock^=n,this._rBlock^=n<n;n++){var r=o[n]-1;t[n]=e[r>>>5]>>>31-r%32&1}for(e=this._subKeys=[],r=0;16>r;r++){var i=e[r]=[],s=c[r];for(n=0;24>n;n++)i[n/6|0]|=t[(a[n]-1+s)%28]<<31-n%6,i[4+(n/6|0)]|=t[28+(a[n+24]-1+s)%28]<<31-n%6;for(i[0]=i[0]<<1|i[0]>>>31,n=1;7>n;n++)i[n]>>>=4*(n-1)+3;i[7]=i[7]<<5|i[7]>>>27}for(t=this._invSubKeys=[],n=0;16>n;n++)t[n]=e[15-n]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(n,r,i){this._lBlock=n[r],this._rBlock=n[r+1],e.call(this,4,252645135),e.call(this,16,65535),t.call(this,2,858993459),t.call(this,8,16711935),e.call(this,1,1431655765);for(var s=0;16>s;s++){for(var o=i[s],a=this._lBlock,c=this._rBlock,h=0,d=0;8>d;d++)h|=l[d][((c^o[d])&u[d])>>>0];this._lBlock=c,this._rBlock=a^h}i=this._lBlock,this._lBlock=this._rBlock,this._rBlock=i,e.call(this,1,1431655765),t.call(this,8,16711935),t.call(this,2,858993459),e.call(this,16,65535),e.call(this,4,252645135),n[r]=this._lBlock,n[r+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});n.DES=i._createHelper(h),s=s.TripleDES=i.extend({_doReset:function(){var e=this._key.words;this._des1=h.createEncryptor(r.create(e.slice(0,2))),this._des2=h.createEncryptor(r.create(e.slice(2,4))),this._des3=h.createEncryptor(r.create(e.slice(4,6)))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2}),n.TripleDES=i._createHelper(s)}(),function(){var e=bl,t=e.lib.WordArray;e.enc.Base64={stringify:function(e){var t=e.words,n=e.sigBytes,r=this._map;e.clamp(),e=[];for(var i=0;i>>2]>>>24-i%4*8&255)<<16|(t[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|t[i+2>>>2]>>>24-(i+2)%4*8&255,o=0;4>o&&i+.75*o>>6*(3-o)&63));if(t=r.charAt(64))for(;e.length%4;)e.push(t);return e.join("")},parse:function(e){var n=e.length,r=this._map;(i=r.charAt(64))&&(-1!=(i=e.indexOf(i))&&(n=i));for(var i=[],s=0,o=0;o>>6-o%4*2;i[s>>>2]|=(a|c)<<24-s%4*8,s++}return t.create(i,s)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),function(e){function t(e,t,n,r,i,s,o){return((e=e+(t&n|~t&r)+i+o)<>>32-s)+t}function n(e,t,n,r,i,s,o){return((e=e+(t&r|n&~r)+i+o)<>>32-s)+t}function r(e,t,n,r,i,s,o){return((e=e+(t^n^r)+i+o)<>>32-s)+t}function i(e,t,n,r,i,s,o){return((e=e+(n^(t|~r))+i+o)<>>32-s)+t}for(var s=bl,o=(c=s.lib).WordArray,a=c.Hasher,c=s.algo,l=[],u=0;64>u;u++)l[u]=4294967296*e.abs(e.sin(u+1))|0;c=c.MD5=a.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,s){for(var o=0;16>o;o++){var a=e[c=s+o];e[c]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}o=this._hash.words;var c=e[s+0],u=(a=e[s+1],e[s+2]),h=e[s+3],d=e[s+4],p=e[s+5],g=e[s+6],f=e[s+7],m=e[s+8],y=e[s+9],w=e[s+10],v=e[s+11],b=e[s+12],S=e[s+13],C=e[s+14],x=e[s+15],I=t(I=o[0],k=o[1],A=o[2],E=o[3],c,7,l[0]),E=t(E,I,k,A,a,12,l[1]),A=t(A,E,I,k,u,17,l[2]),k=t(k,A,E,I,h,22,l[3]);I=t(I,k,A,E,d,7,l[4]),E=t(E,I,k,A,p,12,l[5]),A=t(A,E,I,k,g,17,l[6]),k=t(k,A,E,I,f,22,l[7]),I=t(I,k,A,E,m,7,l[8]),E=t(E,I,k,A,y,12,l[9]),A=t(A,E,I,k,w,17,l[10]),k=t(k,A,E,I,v,22,l[11]),I=t(I,k,A,E,b,7,l[12]),E=t(E,I,k,A,S,12,l[13]),A=t(A,E,I,k,C,17,l[14]),I=n(I,k=t(k,A,E,I,x,22,l[15]),A,E,a,5,l[16]),E=n(E,I,k,A,g,9,l[17]),A=n(A,E,I,k,v,14,l[18]),k=n(k,A,E,I,c,20,l[19]),I=n(I,k,A,E,p,5,l[20]),E=n(E,I,k,A,w,9,l[21]),A=n(A,E,I,k,x,14,l[22]),k=n(k,A,E,I,d,20,l[23]),I=n(I,k,A,E,y,5,l[24]),E=n(E,I,k,A,C,9,l[25]),A=n(A,E,I,k,h,14,l[26]),k=n(k,A,E,I,m,20,l[27]),I=n(I,k,A,E,S,5,l[28]),E=n(E,I,k,A,u,9,l[29]),A=n(A,E,I,k,f,14,l[30]),I=r(I,k=n(k,A,E,I,b,20,l[31]),A,E,p,4,l[32]),E=r(E,I,k,A,m,11,l[33]),A=r(A,E,I,k,v,16,l[34]),k=r(k,A,E,I,C,23,l[35]),I=r(I,k,A,E,a,4,l[36]),E=r(E,I,k,A,d,11,l[37]),A=r(A,E,I,k,f,16,l[38]),k=r(k,A,E,I,w,23,l[39]),I=r(I,k,A,E,S,4,l[40]),E=r(E,I,k,A,c,11,l[41]),A=r(A,E,I,k,h,16,l[42]),k=r(k,A,E,I,g,23,l[43]),I=r(I,k,A,E,y,4,l[44]),E=r(E,I,k,A,b,11,l[45]),A=r(A,E,I,k,x,16,l[46]),I=i(I,k=r(k,A,E,I,u,23,l[47]),A,E,c,6,l[48]),E=i(E,I,k,A,f,10,l[49]),A=i(A,E,I,k,C,15,l[50]),k=i(k,A,E,I,p,21,l[51]),I=i(I,k,A,E,b,6,l[52]),E=i(E,I,k,A,h,10,l[53]),A=i(A,E,I,k,w,15,l[54]),k=i(k,A,E,I,a,21,l[55]),I=i(I,k,A,E,m,6,l[56]),E=i(E,I,k,A,x,10,l[57]),A=i(A,E,I,k,g,15,l[58]),k=i(k,A,E,I,S,21,l[59]),I=i(I,k,A,E,d,6,l[60]),E=i(E,I,k,A,v,10,l[61]),A=i(A,E,I,k,u,15,l[62]),k=i(k,A,E,I,y,21,l[63]);o[0]=o[0]+I|0,o[1]=o[1]+k|0,o[2]=o[2]+A|0,o[3]=o[3]+E|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;n[i>>>5]|=128<<24-i%32;var s=e.floor(r/4294967296);for(n[15+(i+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),n[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(n.length+1),this._process(),n=(t=this._hash).words,r=0;4>r;r++)i=n[r],n[r]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8);return t},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}}),s.MD5=a._createHelper(c),s.HmacMD5=a._createHmacHelper(c)}(Math),function(){var e=bl,t=(i=e.lib).WordArray,n=i.Hasher,r=[],i=e.algo.SHA1=n.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var n=this._hash.words,i=n[0],s=n[1],o=n[2],a=n[3],c=n[4],l=0;80>l;l++){if(16>l)r[l]=0|e[t+l];else{var u=r[l-3]^r[l-8]^r[l-14]^r[l-16];r[l]=u<<1|u>>>31}u=(i<<5|i>>>27)+c+r[l],u=20>l?u+(1518500249+(s&o|~s&a)):40>l?u+(1859775393+(s^o^a)):60>l?u+((s&o|s&a|o&a)-1894007588):u+((s^o^a)-899497514),c=a,a=o,o=s<<30|s>>>2,s=i,i=u}n[0]=n[0]+i|0,n[1]=n[1]+s|0,n[2]=n[2]+o|0,n[3]=n[3]+a|0,n[4]=n[4]+c|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=Math.floor(n/4294967296),t[15+(r+64>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA1=n._createHelper(i),e.HmacSHA1=n._createHmacHelper(i)}(),function(e){for(var t=bl,n=(i=t.lib).WordArray,r=i.Hasher,i=t.algo,s=[],o=[],a=function(e){return 4294967296*(e-(0|e))|0},c=2,l=0;64>l;){var u;e:{u=c;for(var h=e.sqrt(u),d=2;d<=h;d++)if(!(u%d)){u=!1;break e}u=!0}u&&(8>l&&(s[l]=a(e.pow(c,.5))),o[l]=a(e.pow(c,1/3)),l++),c++}var p=[];i=i.SHA256=r.extend({_doReset:function(){this._hash=new n.init(s.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],i=n[1],s=n[2],a=n[3],c=n[4],l=n[5],u=n[6],h=n[7],d=0;64>d;d++){if(16>d)p[d]=0|e[t+d];else{var g=p[d-15],f=p[d-2];p[d]=((g<<25|g>>>7)^(g<<14|g>>>18)^g>>>3)+p[d-7]+((f<<15|f>>>17)^(f<<13|f>>>19)^f>>>10)+p[d-16]}g=h+((c<<26|c>>>6)^(c<<21|c>>>11)^(c<<7|c>>>25))+(c&l^~c&u)+o[d]+p[d],f=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&s^i&s),h=u,u=l,l=c,c=a+g|0,a=s,s=i,i=r,r=g+f|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+s|0,n[3]=n[3]+a|0,n[4]=n[4]+c|0,n[5]=n[5]+l|0,n[6]=n[6]+u|0,n[7]=n[7]+h|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return n[i>>>5]|=128<<24-i%32,n[14+(i+64>>>9<<4)]=e.floor(r/4294967296),n[15+(i+64>>>9<<4)]=r,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=r._createHelper(i),t.HmacSHA256=r._createHmacHelper(i)}(Math),function(){var e=bl,t=e.lib.WordArray,n=(r=e.algo).SHA256,r=r.SHA224=n.extend({_doReset:function(){this._hash=new t.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=4,e}});e.SHA224=n._createHelper(r),e.HmacSHA224=n._createHmacHelper(r)}(),function(){function e(){return r.create.apply(r,arguments)}for(var t=bl,n=t.lib.Hasher,r=(s=t.x64).Word,i=s.WordArray,s=t.algo,o=[e(1116352408,3609767458),e(1899447441,602891725),e(3049323471,3964484399),e(3921009573,2173295548),e(961987163,4081628472),e(1508970993,3053834265),e(2453635748,2937671579),e(2870763221,3664609560),e(3624381080,2734883394),e(310598401,1164996542),e(607225278,1323610764),e(1426881987,3590304994),e(1925078388,4068182383),e(2162078206,991336113),e(2614888103,633803317),e(3248222580,3479774868),e(3835390401,2666613458),e(4022224774,944711139),e(264347078,2341262773),e(604807628,2007800933),e(770255983,1495990901),e(1249150122,1856431235),e(1555081692,3175218132),e(1996064986,2198950837),e(2554220882,3999719339),e(2821834349,766784016),e(2952996808,2566594879),e(3210313671,3203337956),e(3336571891,1034457026),e(3584528711,2466948901),e(113926993,3758326383),e(338241895,168717936),e(666307205,1188179964),e(773529912,1546045734),e(1294757372,1522805485),e(1396182291,2643833823),e(1695183700,2343527390),e(1986661051,1014477480),e(2177026350,1206759142),e(2456956037,344077627),e(2730485921,1290863460),e(2820302411,3158454273),e(3259730800,3505952657),e(3345764771,106217008),e(3516065817,3606008344),e(3600352804,1432725776),e(4094571909,1467031594),e(275423344,851169720),e(430227734,3100823752),e(506948616,1363258195),e(659060556,3750685593),e(883997877,3785050280),e(958139571,3318307427),e(1322822218,3812723403),e(1537002063,2003034995),e(1747873779,3602036899),e(1955562222,1575990012),e(2024104815,1125592928),e(2227730452,2716904306),e(2361852424,442776044),e(2428436474,593698344),e(2756734187,3733110249),e(3204031479,2999351573),e(3329325298,3815920427),e(3391569614,3928383900),e(3515267271,566280711),e(3940187606,3454069534),e(4118630271,4000239992),e(116418474,1914138554),e(174292421,2731055270),e(289380356,3203993006),e(460393269,320620315),e(685471733,587496836),e(852142971,1086792851),e(1017036298,365543100),e(1126000580,2618297676),e(1288033470,3409855158),e(1501505948,4234509866),e(1607167915,987167468),e(1816402316,1246189591)],a=[],c=0;80>c;c++)a[c]=e();s=s.SHA512=n.extend({_doReset:function(){this._hash=new i.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var n=(h=this._hash.words)[0],r=h[1],i=h[2],s=h[3],c=h[4],l=h[5],u=h[6],h=h[7],d=n.high,p=n.low,g=r.high,f=r.low,m=i.high,y=i.low,w=s.high,v=s.low,b=c.high,S=c.low,C=l.high,x=l.low,I=u.high,E=u.low,A=h.high,k=h.low,_=d,P=p,T=g,F=f,D=m,O=y,R=w,N=v,j=b,$=S,M=C,q=x,B=I,L=E,W=A,H=k,U=0;80>U;U++){var G=a[U];if(16>U)var V=G.high=0|e[t+2*U],J=G.low=0|e[t+2*U+1];else{V=((J=(V=a[U-15]).high)>>>1|(K=V.low)<<31)^(J>>>8|K<<24)^J>>>7;var K=(K>>>1|J<<31)^(K>>>8|J<<24)^(K>>>7|J<<25),z=((J=(z=a[U-2]).high)>>>19|(Q=z.low)<<13)^(J<<3|Q>>>29)^J>>>6,Q=(Q>>>19|J<<13)^(Q<<3|J>>>29)^(Q>>>6|J<<26),X=(J=a[U-7]).high,Y=(Z=a[U-16]).high,Z=Z.low;V=(V=(V=V+X+((J=K+J.low)>>>0>>0?1:0))+z+((J=J+Q)>>>0>>0?1:0))+Y+((J=J+Z)>>>0>>0?1:0);G.high=V,G.low=J}X=j&M^~j&B,Z=$&q^~$&L,G=_&T^_&D^T&D;var ee=P&F^P&O^F&O,te=(K=(_>>>28|P<<4)^(_<<30|P>>>2)^(_<<25|P>>>7),z=(P>>>28|_<<4)^(P<<30|_>>>2)^(P<<25|_>>>7),(Q=o[U]).high),ne=Q.low;Y=W+((j>>>14|$<<18)^(j>>>18|$<<14)^(j<<23|$>>>9))+((Q=H+(($>>>14|j<<18)^($>>>18|j<<14)^($<<23|j>>>9)))>>>0>>0?1:0),W=B,H=L,B=M,L=q,M=j,q=$,j=R+(Y=(Y=(Y=Y+X+((Q=Q+Z)>>>0>>0?1:0))+te+((Q=Q+ne)>>>0>>0?1:0))+V+((Q=Q+J)>>>0>>0?1:0))+(($=N+Q|0)>>>0>>0?1:0)|0,R=D,N=O,D=T,O=F,T=_,F=P,_=Y+(G=K+G+((J=z+ee)>>>0>>0?1:0))+((P=Q+J|0)>>>0>>0?1:0)|0}p=n.low=p+P,n.high=d+_+(p>>>0

>>0?1:0),f=r.low=f+F,r.high=g+T+(f>>>0>>0?1:0),y=i.low=y+O,i.high=m+D+(y>>>0>>0?1:0),v=s.low=v+N,s.high=w+R+(v>>>0>>0?1:0),S=c.low=S+$,c.high=b+j+(S>>>0<$>>>0?1:0),x=l.low=x+q,l.high=C+M+(x>>>0>>0?1:0),E=u.low=E+L,u.high=I+B+(E>>>0>>0?1:0),k=h.low=k+H,h.high=A+W+(k>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[30+(r+128>>>10<<5)]=Math.floor(n/4294967296),t[31+(r+128>>>10<<5)]=n,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32}),t.SHA512=n._createHelper(s),t.HmacSHA512=n._createHmacHelper(s)}(),function(){var e=bl,t=(i=e.x64).Word,n=i.WordArray,r=(i=e.algo).SHA512,i=i.SHA384=r.extend({_doReset:function(){this._hash=new n.init([new t.init(3418070365,3238371032),new t.init(1654270250,914150663),new t.init(2438529370,812702999),new t.init(355462360,4144912697),new t.init(1731405415,4290775857),new t.init(2394180231,1750603025),new t.init(3675008525,1694076839),new t.init(1203062813,3204075428)])},_doFinalize:function(){var e=r._doFinalize.call(this);return e.sigBytes-=16,e}});e.SHA384=r._createHelper(i),e.HmacSHA384=r._createHmacHelper(i)}(),function(){var e=bl,t=(r=e.lib).WordArray,n=r.Hasher,r=e.algo,i=t.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),s=t.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),o=t.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),a=t.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=t.create([0,1518500249,1859775393,2400959708,2840853838]),l=t.create([1352829926,1548603684,1836072691,2053994217,0]);r=r.RIPEMD160=n.extend({_doReset:function(){this._hash=t.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var n=0;16>n;n++){var r=e[b=t+n];e[b]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}var u,h,d,p,g,f,m,y,w,v,b=this._hash.words,S=(r=c.words,l.words),C=i.words,x=s.words,I=o.words,E=a.words;f=u=b[0],m=h=b[1],y=d=b[2],w=p=b[3],v=g=b[4];var A;for(n=0;80>n;n+=1)A=u+e[t+C[n]]|0,A=16>n?A+((h^d^p)+r[0]):32>n?A+((h&d|~h&p)+r[1]):48>n?A+(((h|~d)^p)+r[2]):64>n?A+((h&p|d&~p)+r[3]):A+((h^(d|~p))+r[4]),A=(A=(A|=0)<>>32-I[n])+g|0,u=g,g=p,p=d<<10|d>>>22,d=h,h=A,A=f+e[t+x[n]]|0,A=16>n?A+((m^(y|~w))+S[0]):32>n?A+((m&w|y&~w)+S[1]):48>n?A+(((m|~y)^w)+S[2]):64>n?A+((m&y|~m&w)+S[3]):A+((m^y^w)+S[4]),A=(A=(A|=0)<>>32-E[n])+v|0,f=v,v=w,w=y<<10|y>>>22,y=m,m=A;A=b[1]+d+w|0,b[1]=b[2]+p+v|0,b[2]=b[3]+g+f|0,b[3]=b[4]+u+m|0,b[4]=b[0]+h+y|0,b[0]=A},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;for(t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process(),t=(e=this._hash).words,n=0;5>n;n++)r=t[n],t[n]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8);return e},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.RIPEMD160=n._createHelper(r),e.HmacRIPEMD160=n._createHmacHelper(r)}(),function(){var e=bl,t=e.enc.Utf8;e.algo.HMAC=e.lib.Base.extend({init:function(e,n){e=this._hasher=new e.init,"string"==typeof n&&(n=t.parse(n));var r=e.blockSize,i=4*r;n.sigBytes>i&&(n=e.finalize(n)),n.clamp();for(var s=this._oKey=n.clone(),o=this._iKey=n.clone(),a=s.words,c=o.words,l=0;l>6)+b64map.charAt(63&n);for(t+1==e.length?(n=parseInt(e.substring(t,t+1),16),r+=b64map.charAt(n<<2)):t+2==e.length&&(n=parseInt(e.substring(t,t+2),16),r+=b64map.charAt(n>>2)+b64map.charAt((3&n)<<4));(3&r.length)>0;)r+=b64pad;return r}function b64tohex(e){var t,n,r,i="",o=0;for(t=0;t>2),n=3&r,o=1):1==o?(i+=int2char(n<<2|r>>4),n=15&r,o=2):2==o?(i+=int2char(n),i+=int2char(r>>2),n=3&r,o=3):(i+=int2char(n<<2|r>>4),i+=int2char(15&r),o=0));return 1==o&&(i+=int2char(n<<2)),i} +var Sl,Cl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",xl="=";function Il(e){var t,n,r="";for(t=0;t+3<=e.length;t+=3)n=parseInt(e.substring(t,t+3),16),r+=Cl.charAt(n>>6)+Cl.charAt(63&n);for(t+1==e.length?(n=parseInt(e.substring(t,t+1),16),r+=Cl.charAt(n<<2)):t+2==e.length&&(n=parseInt(e.substring(t,t+2),16),r+=Cl.charAt(n>>2)+Cl.charAt((3&n)<<4));(3&r.length)>0;)r+=xl;return r}function El(e){var t,n,r,i="",s=0;for(t=0;t>2),n=3&r,s=1):1==s?(i+=Dl(n<<2|r>>4),n=15&r,s=2):2==s?(i+=Dl(n),i+=Dl(r>>2),n=3&r,s=3):(i+=Dl(n<<2|r>>4),i+=Dl(15&r),s=0));return 1==s&&(i+=Dl(n<<2)),i} /*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ - */function BigInteger(e,t,n){null!=e&&("number"==typeof e?this.fromNumber(e,t,n):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function nbi(){return new BigInteger(null)}function am1(e,t,n,r,i,o){for(;--o>=0;){var l=t*this[e++]+n[r]+i;i=Math.floor(l/67108864),n[r++]=67108863&l}return i}function am2(e,t,n,r,i,o){for(var l=32767&t,s=t>>15;--o>=0;){var a=32767&this[e],u=this[e++]>>15,c=s*a+u*l;i=((a=l*a+((32767&c)<<15)+n[r]+(1073741823&i))>>>30)+(c>>>15)+s*u+(i>>>30),n[r++]=1073741823&a}return i}function am3(e,t,n,r,i,o){for(var l=16383&t,s=t>>14;--o>=0;){var a=16383&this[e],u=this[e++]>>14,c=s*a+u*l;i=((a=l*a+((16383&c)<<14)+n[r]+i)>>28)+(c>>14)+s*u,n[r++]=268435455&a}return i}"Microsoft Internet Explorer"==navigator$1.appName?(BigInteger.prototype.am=am2,dbits=30):"Netscape"!=navigator$1.appName?(BigInteger.prototype.am=am1,dbits=26):(BigInteger.prototype.am=am3,dbits=28),BigInteger.prototype.DB=dbits,BigInteger.prototype.DM=(1<=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s}function bnpFromInt(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0}function nbv(e){var t=nbi();return t.fromInt(e),t}function bnpFromString(e,t){var n;if(16==t)n=4;else if(8==t)n=3;else if(256==t)n=8;else if(2==t)n=1;else if(32==t)n=5;else{if(4!=t)return void this.fromRadix(e,t);n=2}this.t=0,this.s=0;for(var r=e.length,i=!1,o=0;--r>=0;){var l=8==n?255&e[r]:intAt(e,r);l<0?"-"==e.charAt(r)&&(i=!0):(i=!1,0==o?this[this.t++]=l:o+n>this.DB?(this[this.t-1]|=(l&(1<>this.DB-o):this[this.t-1]|=l<=this.DB&&(o-=this.DB))}8==n&&0!=(128&e[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==e;)--this.t}function bnToString(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var n,r=(1<0)for(s>s)>0&&(i=!0,o=int2char(n));l>=0;)s>(s+=this.DB-t)):(n=this[l]>>(s-=t)&r,s<=0&&(s+=this.DB,--l)),n>0&&(i=!0),i&&(o+=int2char(n));return i?o:"0"}function bnNegate(){var e=nbi();return BigInteger.ZERO.subTo(this,e),e}function bnAbs(){return this.s<0?this.negate():this}function bnCompareTo(e){var t=this.s-e.s;if(0!=t)return t;var n=this.t;if(0!=(t=n-e.t))return this.s<0?-t:t;for(;--n>=0;)if(0!=(t=this[n]-e[n]))return t;return 0}function nbits(e){var t,n=1;return 0!=(t=e>>>16)&&(e=t,n+=16),0!=(t=e>>8)&&(e=t,n+=8),0!=(t=e>>4)&&(e=t,n+=4),0!=(t=e>>2)&&(e=t,n+=2),0!=(t=e>>1)&&(e=t,n+=1),n}function bnBitLength(){return this.t<=0?0:this.DB*(this.t-1)+nbits(this[this.t-1]^this.s&this.DM)}function bnpDLShiftTo(e,t){var n;for(n=this.t-1;n>=0;--n)t[n+e]=this[n];for(n=e-1;n>=0;--n)t[n]=0;t.t=this.t+e,t.s=this.s}function bnpDRShiftTo(e,t){for(var n=e;n=0;--n)t[n+l+1]=this[n]>>i|s,s=(this[n]&o)<=0;--n)t[n]=0;t[l]=s,t.t=this.t+l+1,t.s=this.s,t.clamp()}function bnpRShiftTo(e,t){t.s=this.s;var n=Math.floor(e/this.DB);if(n>=this.t)t.t=0;else{var r=e%this.DB,i=this.DB-r,o=(1<>r;for(var l=n+1;l>r;r>0&&(t[this.t-n-1]|=(this.s&o)<>=this.DB;if(e.t>=this.DB;r+=this.s}else{for(r+=this.s;n>=this.DB;r-=e.s}t.s=r<0?-1:0,r<-1?t[n++]=this.DV+r:r>0&&(t[n++]=r),t.t=n,t.clamp()}function bnpMultiplyTo(e,t){var n=this.abs(),r=e.abs(),i=n.t;for(t.t=i+r.t;--i>=0;)t[i]=0;for(i=0;i=0;)e[n]=0;for(n=0;n=t.DV&&(e[n+t.t]-=t.DV,e[n+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(n,t[n],e,2*n,0,1)),e.s=0,e.clamp()}function bnpDivRemTo(e,t,n){var r=e.abs();if(!(r.t<=0)){var i=this.abs();if(i.t0?(r.lShiftTo(a,o),i.lShiftTo(a,n)):(r.copyTo(o),i.copyTo(n));var u=o.t,c=o[u-1];if(0!=c){var h=c*(1<1?o[u-2]>>this.F2:0),d=this.FV/h,f=(1<=0&&(n[n.t++]=1,n.subTo(m,n)),BigInteger.ONE.dlShiftTo(u,m),m.subTo(o,o);o.t=0;){var v=n[--g]==c?this.DM:Math.floor(n[g]*d+(n[g-1]+p)*f);if((n[g]+=o.am(0,v,n,w,0,u))0&&n.rShiftTo(a,n),l<0&&BigInteger.ZERO.subTo(n,n)}}}function bnMod(e){var t=nbi();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(BigInteger.ZERO)>0&&e.subTo(t,t),t}function Classic(e){this.m=e}function cConvert(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e}function cRevert(e){return e}function cReduce(e){e.divRemTo(this.m,null,e)}function cMulTo(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function cSqrTo(e,t){e.squareTo(t),this.reduce(t)}function bnpInvDigit(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t}function Montgomery(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(t,t),t}function montRevert(e){var t=nbi();return e.copyTo(t),this.reduce(t),t}function montReduce(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t>15)*this.mpl&this.um)<<15)&e.DM;for(e[n=t+this.m.t]+=this.m.am(0,r,e,t,0,this.m.t);e[n]>=e.DV;)e[n]-=e.DV,e[++n]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)}function montSqrTo(e,t){e.squareTo(t),this.reduce(t)}function montMulTo(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function bnpIsEven(){return 0==(this.t>0?1&this[0]:this.s)}function bnpExp(e,t){if(e>4294967295||e<1)return BigInteger.ONE;var n=nbi(),r=nbi(),i=t.convert(this),o=nbits(e)-1;for(i.copyTo(n);--o>=0;)if(t.sqrTo(n,r),(e&1<0)t.mulTo(r,i,n);else{var l=n;n=r,r=l}return t.revert(n)}function bnModPowInt(e,t){var n;return n=e<256||t.isEven()?new Classic(t):new Montgomery(t),this.exp(e,n)} + */function Al(e,t,n){null!=e&&("number"==typeof e?this.fromNumber(e,t,n):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function kl(){return new Al(null)}"Microsoft Internet Explorer"==wl.appName?(Al.prototype.am=function(e,t,n,r,i,s){for(var o=32767&t,a=t>>15;--s>=0;){var c=32767&this[e],l=this[e++]>>15,u=a*c+l*o;i=((c=o*c+((32767&u)<<15)+n[r]+(1073741823&i))>>>30)+(u>>>15)+a*l+(i>>>30),n[r++]=1073741823&c}return i},Sl=30):"Netscape"!=wl.appName?(Al.prototype.am=function(e,t,n,r,i,s){for(;--s>=0;){var o=t*this[e++]+n[r]+i;i=Math.floor(o/67108864),n[r++]=67108863&o}return i},Sl=26):(Al.prototype.am=function(e,t,n,r,i,s){for(var o=16383&t,a=t>>14;--s>=0;){var c=16383&this[e],l=this[e++]>>14,u=a*c+l*o;i=((c=o*c+((16383&u)<<14)+n[r]+i)>>28)+(u>>14)+a*l,n[r++]=268435455&c}return i},Sl=28),Al.prototype.DB=Sl,Al.prototype.DM=(1<>>16)&&(e=t,n+=16),0!=(t=e>>8)&&(e=t,n+=8),0!=(t=e>>4)&&(e=t,n+=4),0!=(t=e>>2)&&(e=t,n+=2),0!=(t=e>>1)&&(e=t,n+=1),n}function jl(e){this.m=e}function $l(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function Hl(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function Ul(){}function Gl(e){return e}function Vl(e){this.r2=kl(),this.q3=kl(),Al.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}jl.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},jl.prototype.revert=function(e){return e},jl.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},jl.prototype.mulTo=function(e,t,n){e.multiplyTo(t,n),this.reduce(n)},jl.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},$l.prototype.convert=function(e){var t=kl();return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&t.compareTo(Al.ZERO)>0&&this.m.subTo(t,t),t},$l.prototype.revert=function(e){var t=kl();return e.copyTo(t),this.reduce(t),t},$l.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t>15)*this.mpl&this.um)<<15)&e.DM;for(e[n=t+this.m.t]+=this.m.am(0,r,e,t,0,this.m.t);e[n]>=e.DV;)e[n]-=e.DV,e[++n]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},$l.prototype.mulTo=function(e,t,n){e.multiplyTo(t,n),this.reduce(n)},$l.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},Al.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},Al.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},Al.prototype.fromString=function(e,t){var n;if(16==t)n=4;else if(8==t)n=3;else if(256==t)n=8;else if(2==t)n=1;else if(32==t)n=5;else{if(4!=t)return void this.fromRadix(e,t);n=2}this.t=0,this.s=0;for(var r=e.length,i=!1,s=0;--r>=0;){var o=8==n?255&e[r]:Ol(e,r);o<0?"-"==e.charAt(r)&&(i=!0):(i=!1,0==s?this[this.t++]=o:s+n>this.DB?(this[this.t-1]|=(o&(1<>this.DB-s):this[this.t-1]|=o<=this.DB&&(s-=this.DB))}8==n&&0!=(128&e[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==e;)--this.t},Al.prototype.dlShiftTo=function(e,t){var n;for(n=this.t-1;n>=0;--n)t[n+e]=this[n];for(n=e-1;n>=0;--n)t[n]=0;t.t=this.t+e,t.s=this.s},Al.prototype.drShiftTo=function(e,t){for(var n=e;n=0;--n)t[n+o+1]=this[n]>>i|a,a=(this[n]&s)<=0;--n)t[n]=0;t[o]=a,t.t=this.t+o+1,t.s=this.s,t.clamp()},Al.prototype.rShiftTo=function(e,t){t.s=this.s;var n=Math.floor(e/this.DB);if(n>=this.t)t.t=0;else{var r=e%this.DB,i=this.DB-r,s=(1<>r;for(var o=n+1;o>r;r>0&&(t[this.t-n-1]|=(this.s&s)<>=this.DB;if(e.t>=this.DB;r+=this.s}else{for(r+=this.s;n>=this.DB;r-=e.s}t.s=r<0?-1:0,r<-1?t[n++]=this.DV+r:r>0&&(t[n++]=r),t.t=n,t.clamp()},Al.prototype.multiplyTo=function(e,t){var n=this.abs(),r=e.abs(),i=n.t;for(t.t=i+r.t;--i>=0;)t[i]=0;for(i=0;i=0;)e[n]=0;for(n=0;n=t.DV&&(e[n+t.t]-=t.DV,e[n+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(n,t[n],e,2*n,0,1)),e.s=0,e.clamp()},Al.prototype.divRemTo=function(e,t,n){var r=e.abs();if(!(r.t<=0)){var i=this.abs();if(i.t0?(r.lShiftTo(c,s),i.lShiftTo(c,n)):(r.copyTo(s),i.copyTo(n));var l=s.t,u=s[l-1];if(0!=u){var h=u*(1<1?s[l-2]>>this.F2:0),d=this.FV/h,p=(1<=0&&(n[n.t++]=1,n.subTo(y,n)),Al.ONE.dlShiftTo(l,y),y.subTo(s,s);s.t=0;){var w=n[--f]==u?this.DM:Math.floor(n[f]*d+(n[f-1]+g)*p);if((n[f]+=s.am(0,w,n,m,0,l))0&&n.rShiftTo(c,n),o<0&&Al.ZERO.subTo(n,n)}}},Al.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},Al.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},Al.prototype.exp=function(e,t){if(e>4294967295||e<1)return Al.ONE;var n=kl(),r=kl(),i=t.convert(this),s=Nl(e)-1;for(i.copyTo(n);--s>=0;)if(t.sqrTo(n,r),(e&1<0)t.mulTo(r,i,n);else{var o=n;n=r,r=o}return t.revert(n)},Al.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var n,r=(1<0)for(a>a)>0&&(i=!0,s=Dl(n));o>=0;)a>(a+=this.DB-t)):(n=this[o]>>(a-=t)&r,a<=0&&(a+=this.DB,--o)),n>0&&(i=!0),i&&(s+=Dl(n));return i?s:"0"},Al.prototype.negate=function(){var e=kl();return Al.ZERO.subTo(this,e),e},Al.prototype.abs=function(){return this.s<0?this.negate():this},Al.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var n=this.t;if(0!=(t=n-e.t))return this.s<0?-t:t;for(;--n>=0;)if(0!=(t=this[n]-e[n]))return t;return 0},Al.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+Nl(this[this.t-1]^this.s&this.DM)},Al.prototype.mod=function(e){var t=kl();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(Al.ZERO)>0&&e.subTo(t,t),t},Al.prototype.modPowInt=function(e,t){var n;return n=e<256||t.isEven()?new jl(t):new $l(t),this.exp(e,n)},Al.ZERO=Rl(0),Al.ONE=Rl(1),Ul.prototype.convert=Gl,Ul.prototype.revert=Gl,Ul.prototype.mulTo=function(e,t,n){e.multiplyTo(t,n)},Ul.prototype.sqrTo=function(e,t){e.squareTo(t)},Vl.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=kl();return e.copyTo(t),this.reduce(t),t},Vl.prototype.revert=function(e){return e},Vl.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},Vl.prototype.mulTo=function(e,t,n){e.multiplyTo(t,n),this.reduce(n)},Vl.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var Jl=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],Kl=(1<<26)/Jl[Jl.length-1]; /*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ */ -function bnClone(){var e=nbi();return this.copyTo(e),e}function bnIntValue(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<>24}function bnShortValue(){return 0==this.t?this.s:this[0]<<16>>16}function bnpChunkSize(e){return Math.floor(Math.LN2*this.DB/Math.log(e))}function bnSigNum(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1}function bnpToRadix(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),n=Math.pow(e,t),r=nbv(n),i=nbi(),o=nbi(),l="";for(this.divRemTo(r,i,o);i.signum()>0;)l=(n+o.intValue()).toString(e).substr(1)+l,i.divRemTo(r,i,o);return o.intValue().toString(e)+l}function bnpFromRadix(e,t){this.fromInt(0),null==t&&(t=10);for(var n=this.chunkSize(t),r=Math.pow(t,n),i=!1,o=0,l=0,s=0;s=n&&(this.dMultiply(r),this.dAddOffset(l,0),o=0,l=0))}o>0&&(this.dMultiply(Math.pow(t,o)),this.dAddOffset(l,0)),i&&BigInteger.ZERO.subTo(this,this)}function bnpFromNumber(e,t,n){if("number"==typeof t)if(e<2)this.fromInt(1);else for(this.fromNumber(e,n),this.testBit(e-1)||this.bitwiseTo(BigInteger.ONE.shiftLeft(e-1),op_or,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(BigInteger.ONE.shiftLeft(e-1),this);else{var r=new Array,i=7&e;r.length=1+(e>>3),t.nextBytes(r),i>0?r[0]&=(1<0)for(r>r)!=(this.s&this.DM)>>r&&(t[i++]=n|this.s<=0;)r<8?(n=(this[e]&(1<>(r+=this.DB-8)):(n=this[e]>>(r-=8)&255,r<=0&&(r+=this.DB,--e)),0!=(128&n)&&(n|=-256),0==i&&(128&this.s)!=(128&n)&&++i,(i>0||n!=this.s)&&(t[i++]=n);return t}function bnEquals(e){return 0==this.compareTo(e)}function bnMin(e){return this.compareTo(e)<0?this:e}function bnMax(e){return this.compareTo(e)>0?this:e}function bnpBitwiseTo(e,t,n){var r,i,o=Math.min(e.t,this.t);for(r=0;r>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function bnGetLowestSetBit(){for(var e=0;e=this.t?0!=this.s:0!=(this[t]&1<>=this.DB;if(e.t>=this.DB;r+=this.s}else{for(r+=this.s;n>=this.DB;r+=e.s}t.s=r<0?-1:0,r>0?t[n++]=r:r<-1&&(t[n++]=this.DV+r),t.t=n,t.clamp()}function bnAdd(e){var t=nbi();return this.addTo(e,t),t}function bnSubtract(e){var t=nbi();return this.subTo(e,t),t}function bnMultiply(e){var t=nbi();return this.multiplyTo(e,t),t}function bnSquare(){var e=nbi();return this.squareTo(e),e}function bnDivide(e){var t=nbi();return this.divRemTo(e,t,null),t}function bnRemainder(e){var t=nbi();return this.divRemTo(e,null,t),t}function bnDivideAndRemainder(e){var t=nbi(),n=nbi();return this.divRemTo(e,t,n),new Array(t,n)}function bnpDMultiply(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()}function bnpDAddOffset(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}}function NullExp(){}function nNop(e){return e}function nMulTo(e,t,n){e.multiplyTo(t,n)}function nSqrTo(e,t){e.squareTo(t)}function bnPow(e){return this.exp(e,new NullExp)}function bnpMultiplyLowerTo(e,t,n){var r,i=Math.min(this.t+e.t,t);for(n.s=0,n.t=i;i>0;)n[--i]=0;for(r=n.t-this.t;i=0;)n[r]=0;for(r=Math.max(t-this.t,0);r2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=nbi();return e.copyTo(t),this.reduce(t),t}function barrettRevert(e){return e}function barrettReduce(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)}function barrettSqrTo(e,t){e.squareTo(t),this.reduce(t)}function barrettMulTo(e,t,n){e.multiplyTo(t,n),this.reduce(n)}function bnModPow(e,t){var n,r,i=e.bitLength(),o=nbv(1);if(i<=0)return o;n=i<18?1:i<48?3:i<144?4:i<768?5:6,r=i<8?new Classic(t):t.isEven()?new Barrett(t):new Montgomery(t);var l=new Array,s=3,a=n-1,u=(1<1){var c=nbi();for(r.sqrTo(l[1],c);s<=u;)l[s]=nbi(),r.mulTo(c,l[s-2],l[s]),s+=2}var h,d,f=e.t-1,p=!0,g=nbi();for(i=nbits(e[f])-1;f>=0;){for(i>=a?h=e[f]>>i-a&u:(h=(e[f]&(1<0&&(h|=e[f-1]>>this.DB+i-a)),s=n;0==(1&h);)h>>=1,--s;if((i-=s)<0&&(i+=this.DB,--f),p)l[h].copyTo(o),p=!1;else{for(;s>1;)r.sqrTo(o,g),r.sqrTo(g,o),s-=2;s>0?r.sqrTo(o,g):(d=o,o=g,g=d),r.mulTo(g,l[h],o)}for(;f>=0&&0==(e[f]&1<0&&(t.rShiftTo(o,t),n.rShiftTo(o,n));t.signum()>0;)(i=t.getLowestSetBit())>0&&t.rShiftTo(i,t),(i=n.getLowestSetBit())>0&&n.rShiftTo(i,n),t.compareTo(n)>=0?(t.subTo(n,t),t.rShiftTo(1,t)):(n.subTo(t,n),n.rShiftTo(1,n));return o>0&&n.lShiftTo(o,n),n}function bnpModInt(e){if(e<=0)return 0;var t=this.DV%e,n=this.s<0?e-1:0;if(this.t>0)if(0==t)n=this[0]%e;else for(var r=this.t-1;r>=0;--r)n=(t*n+this[r])%e;return n}function bnModInverse(e){var t=e.isEven();if(this.isEven()&&t||0==e.signum())return BigInteger.ZERO;for(var n=e.clone(),r=this.clone(),i=nbv(1),o=nbv(0),l=nbv(0),s=nbv(1);0!=n.signum();){for(;n.isEven();)n.rShiftTo(1,n),t?(i.isEven()&&o.isEven()||(i.addTo(this,i),o.subTo(e,o)),i.rShiftTo(1,i)):o.isEven()||o.subTo(e,o),o.rShiftTo(1,o);for(;r.isEven();)r.rShiftTo(1,r),t?(l.isEven()&&s.isEven()||(l.addTo(this,l),s.subTo(e,s)),l.rShiftTo(1,l)):s.isEven()||s.subTo(e,s),s.rShiftTo(1,s);n.compareTo(r)>=0?(n.subTo(r,n),t&&i.subTo(l,i),o.subTo(s,o)):(r.subTo(n,r),t&&l.subTo(i,l),s.subTo(o,s))}return 0!=r.compareTo(BigInteger.ONE)?BigInteger.ZERO:s.compareTo(e)>=0?s.subtract(e):s.signum()<0?(s.addTo(e,s),s.signum()<0?s.add(e):s):s}Classic.prototype.convert=cConvert,Classic.prototype.revert=cRevert,Classic.prototype.reduce=cReduce,Classic.prototype.mulTo=cMulTo,Classic.prototype.sqrTo=cSqrTo,Montgomery.prototype.convert=montConvert,Montgomery.prototype.revert=montRevert,Montgomery.prototype.reduce=montReduce,Montgomery.prototype.mulTo=montMulTo,Montgomery.prototype.sqrTo=montSqrTo,BigInteger.prototype.copyTo=bnpCopyTo,BigInteger.prototype.fromInt=bnpFromInt,BigInteger.prototype.fromString=bnpFromString,BigInteger.prototype.clamp=bnpClamp,BigInteger.prototype.dlShiftTo=bnpDLShiftTo,BigInteger.prototype.drShiftTo=bnpDRShiftTo,BigInteger.prototype.lShiftTo=bnpLShiftTo,BigInteger.prototype.rShiftTo=bnpRShiftTo,BigInteger.prototype.subTo=bnpSubTo,BigInteger.prototype.multiplyTo=bnpMultiplyTo,BigInteger.prototype.squareTo=bnpSquareTo,BigInteger.prototype.divRemTo=bnpDivRemTo,BigInteger.prototype.invDigit=bnpInvDigit,BigInteger.prototype.isEven=bnpIsEven,BigInteger.prototype.exp=bnpExp,BigInteger.prototype.toString=bnToString,BigInteger.prototype.negate=bnNegate,BigInteger.prototype.abs=bnAbs,BigInteger.prototype.compareTo=bnCompareTo,BigInteger.prototype.bitLength=bnBitLength,BigInteger.prototype.mod=bnMod,BigInteger.prototype.modPowInt=bnModPowInt,BigInteger.ZERO=nbv(0),BigInteger.ONE=nbv(1),NullExp.prototype.convert=nNop,NullExp.prototype.revert=nNop,NullExp.prototype.mulTo=nMulTo,NullExp.prototype.sqrTo=nSqrTo,Barrett.prototype.convert=barrettConvert,Barrett.prototype.revert=barrettRevert,Barrett.prototype.reduce=barrettReduce,Barrett.prototype.mulTo=barrettMulTo,Barrett.prototype.sqrTo=barrettSqrTo;var lowprimes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],lplim=(1<<26)/lowprimes[lowprimes.length-1];function bnIsProbablePrime(e){var t,n=this.abs();if(1==n.t&&n[0]<=lowprimes[lowprimes.length-1]){for(t=0;t>1)>lowprimes.length&&(e=lowprimes.length);for(var i=nbi(),o=0;o36)return"0";var t=this.chunkSize(e),n=Math.pow(e,t),r=Rl(n),i=kl(),s=kl(),o="";for(this.divRemTo(r,i,s);i.signum()>0;)o=(n+s.intValue()).toString(e).substr(1)+o,i.divRemTo(r,i,s);return s.intValue().toString(e)+o},Al.prototype.fromRadix=function(e,t){this.fromInt(0),null==t&&(t=10);for(var n=this.chunkSize(t),r=Math.pow(t,n),i=!1,s=0,o=0,a=0;a=n&&(this.dMultiply(r),this.dAddOffset(o,0),s=0,o=0))}s>0&&(this.dMultiply(Math.pow(t,s)),this.dAddOffset(o,0)),i&&Al.ZERO.subTo(this,this)},Al.prototype.fromNumber=function(e,t,n){if("number"==typeof t)if(e<2)this.fromInt(1);else for(this.fromNumber(e,n),this.testBit(e-1)||this.bitwiseTo(Al.ONE.shiftLeft(e-1),ql,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(Al.ONE.shiftLeft(e-1),this);else{var r=new Array,i=7&e;r.length=1+(e>>3),t.nextBytes(r),i>0?r[0]&=(1<>=this.DB;if(e.t>=this.DB;r+=this.s}else{for(r+=this.s;n>=this.DB;r+=e.s}t.s=r<0?-1:0,r>0?t[n++]=r:r<-1&&(t[n++]=this.DV+r),t.t=n,t.clamp()},Al.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},Al.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},Al.prototype.multiplyLowerTo=function(e,t,n){var r,i=Math.min(this.t+e.t,t);for(n.s=0,n.t=i;i>0;)n[--i]=0;for(r=n.t-this.t;i=0;)n[r]=0;for(r=Math.max(t-this.t,0);r0)if(0==t)n=this[0]%e;else for(var r=this.t-1;r>=0;--r)n=(t*n+this[r])%e;return n},Al.prototype.millerRabin=function(e){var t=this.subtract(Al.ONE),n=t.getLowestSetBit();if(n<=0)return!1;var r=t.shiftRight(n);(e=e+1>>1)>Jl.length&&(e=Jl.length);for(var i=kl(),s=0;s>24},Al.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},Al.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},Al.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var n,r=this.DB-e*this.DB%8,i=0;if(e-- >0)for(r>r)!=(this.s&this.DM)>>r&&(t[i++]=n|this.s<=0;)r<8?(n=(this[e]&(1<>(r+=this.DB-8)):(n=this[e]>>(r-=8)&255,r<=0&&(r+=this.DB,--e)),0!=(128&n)&&(n|=-256),0==i&&(128&this.s)!=(128&n)&&++i,(i>0||n!=this.s)&&(t[i++]=n);return t},Al.prototype.equals=function(e){return 0==this.compareTo(e)},Al.prototype.min=function(e){return this.compareTo(e)<0?this:e},Al.prototype.max=function(e){return this.compareTo(e)>0?this:e},Al.prototype.and=function(e){var t=kl();return this.bitwiseTo(e,Ml,t),t},Al.prototype.or=function(e){var t=kl();return this.bitwiseTo(e,ql,t),t},Al.prototype.xor=function(e){var t=kl();return this.bitwiseTo(e,Bl,t),t},Al.prototype.andNot=function(e){var t=kl();return this.bitwiseTo(e,Ll,t),t},Al.prototype.not=function(){for(var e=kl(),t=0;t=this.t?0!=this.s:0!=(this[t]&1<1){var u=kl();for(r.sqrTo(o[1],u);a<=l;)o[a]=kl(),r.mulTo(u,o[a-2],o[a]),a+=2}var h,d,p=e.t-1,g=!0,f=kl();for(i=Nl(e[p])-1;p>=0;){for(i>=c?h=e[p]>>i-c&l:(h=(e[p]&(1<0&&(h|=e[p-1]>>this.DB+i-c)),a=n;0==(1&h);)h>>=1,--a;if((i-=a)<0&&(i+=this.DB,--p),g)o[h].copyTo(s),g=!1;else{for(;a>1;)r.sqrTo(s,f),r.sqrTo(f,s),a-=2;a>0?r.sqrTo(s,f):(d=s,s=f,f=d),r.mulTo(f,o[h],s)}for(;p>=0&&0==(e[p]&1<=0?(n.subTo(r,n),t&&i.subTo(o,i),s.subTo(a,s)):(r.subTo(n,r),t&&o.subTo(i,o),a.subTo(s,a))}return 0!=r.compareTo(Al.ONE)?Al.ZERO:a.compareTo(e)>=0?a.subtract(e):a.signum()<0?(a.addTo(e,a),a.signum()<0?a.add(e):a):a},Al.prototype.pow=function(e){return this.exp(e,new Ul)},Al.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),n=e.s<0?e.negate():e.clone();if(t.compareTo(n)<0){var r=t;t=n,n=r}var i=t.getLowestSetBit(),s=n.getLowestSetBit();if(s<0)return t;for(i0&&(t.rShiftTo(s,t),n.rShiftTo(s,n));t.signum()>0;)(i=t.getLowestSetBit())>0&&t.rShiftTo(i,t),(i=n.getLowestSetBit())>0&&n.rShiftTo(i,n),t.compareTo(n)>=0?(t.subTo(n,t),t.rShiftTo(1,t)):(n.subTo(t,n),n.rShiftTo(1,n));return s>0&&n.lShiftTo(s,n),n},Al.prototype.isProbablePrime=function(e){var t,n=this.abs();if(1==n.t&&n[0]<=Jl[Jl.length-1]){for(t=0;t>8&255,rng_pool[rng_pptr++]^=e>>16&255,rng_pool[rng_pptr++]^=e>>24&255,rng_pptr>=rng_psize&&(rng_pptr-=rng_psize)}function rng_seed_time(){rng_seed_int((new Date).getTime())}if(null==rng_pool){var t;if(rng_pool=new Array,rng_pptr=0,void 0!==window$1&&(void 0!==window$1.crypto||void 0!==window$1.msCrypto)){var crypto$1=window$1.crypto||window$1.msCrypto;if(crypto$1.getRandomValues){var ua=new Uint8Array(32);for(crypto$1.getRandomValues(ua),t=0;t<32;++t)rng_pool[rng_pptr++]=ua[t]}else if("Netscape"==navigator$1.appName&&navigator$1.appVersion<"5"){var z=window$1.crypto.random(32);for(t=0;t>>8,rng_pool[rng_pptr++]=255&t;rng_pptr=0,rng_seed_time()}function rng_get_byte(){if(null==rng_state){for(rng_seed_time(),(rng_state=prng_newstate()).init(rng_pool),rng_pptr=0;rng_pptr>8&255,Xl[Yl++]^=e>>16&255,Xl[Yl++]^=e>>24&255,Yl>=Zl&&(Yl-=Zl)}if(null==Xl){var tu;if(Xl=new Array,Yl=0,void 0!==vl&&(void 0!==vl.crypto||void 0!==vl.msCrypto)){var nu=vl.crypto||vl.msCrypto;if(nu.getRandomValues){var ru=new Uint8Array(32);for(nu.getRandomValues(ru),tu=0;tu<32;++tu)Xl[Yl++]=ru[tu]}else if("Netscape"==wl.appName&&wl.appVersion<"5"){var iu=vl.crypto.random(32);for(tu=0;tu>>8,Xl[Yl++]=255&tu;Yl=0,eu()}function su(){if(null==Ql){for(eu(),(Ql=new zl).init(Xl),Yl=0;Yl=0&&t>0;){var i=e.charCodeAt(r--);i<128?n[--t]=i:i>127&&i<2048?(n[--t]=63&i|128,n[--t]=i>>6|192):(n[--t]=63&i|128,n[--t]=i>>6&63|128,n[--t]=i>>12|224)}n[--t]=0;for(var o=new SecureRandom,l=new Array;t>2;){for(l[0]=0;0==l[0];)o.nextBytes(l);n[--t]=l[0]}return n[--t]=2,n[--t]=0,new BigInteger(n)}function oaep_mgf1_arr(e,t,n){for(var r="",i=0;r.length>24,(16711680&i)>>16,(65280&i)>>8,255&i]))),i+=1;return r}function oaep_pad(e,t,n,r){var i=KJUR.crypto.MessageDigest,o=KJUR.crypto.Util,l=null;if(n||(n="sha1"),"string"==typeof n&&(l=i.getCanonicalAlgName(n),r=i.getHashLength(l),n=function(e){return hextorstr(o.hashHex(rstrtohex(e),l))}),e.length+2*r+2>t)throw"Message too long for RSA";var s,a="";for(s=0;s0&&t.length>0))throw"Invalid RSA public key";this.n=parseBigInt(e,16),this.e=parseInt(t,16)}}function RSADoPublic(e){return e.modPowInt(this.e,this.n)}function RSAEncrypt(e){var t=pkcs1pad2(e,this.n.bitLength()+7>>3);if(null==t)return null;var n=this.doPublic(t);if(null==n)return null;var r=n.toString(16);return 0==(1&r.length)?r:"0"+r}function RSAEncryptOAEP(e,t,n){var r=this.n.bitLength()+7>>3,i=oaep_pad(e,r,t,n);if(null==i)return null;var o=this.doPublic(i);if(null==o)return null;for(var l=o.toString(16);l.length<2*r;)l="0"+l;return l} -/*! (c) Tom Wu, Kenji Urushima | http://www-cs-students.stanford.edu/~tjw/jsbn/ - */ -function pkcs1unpad2(e,t){for(var n=e.toByteArray(),r=0;r=n.length)return null;for(var i="";++r191&&o<224?(i+=String.fromCharCode((31&o)<<6|63&n[r+1]),++r):(i+=String.fromCharCode((15&o)<<12|(63&n[r+1])<<6|63&n[r+2]),r+=2)}return i}function oaep_mgf1_str(e,t,n){for(var r="",i=0;r.length>24,(16711680&i)>>16,(65280&i)>>8,255&i])),i+=1;return r}function oaep_unpad(e,t,n,r){var i=KJUR.crypto.MessageDigest,o=KJUR.crypto.Util,l=null;for(n||(n="sha1"),"string"==typeof n&&(l=i.getCanonicalAlgName(n),r=i.getHashLength(l),n=function(e){return hextorstr(o.hashHex(rstrtohex(e),l))}),e=e.toByteArray(),s=0;s0&&t.length>0))throw"Invalid RSA private key";this.n=parseBigInt(e,16),this.e=parseInt(t,16),this.d=parseBigInt(n,16)}}function RSASetPrivateEx(e,t,n,r,i,o,l,s){if(this.isPrivate=!0,this.isPublic=!1,null==e)throw"RSASetPrivateEx N == null";if(null==t)throw"RSASetPrivateEx E == null";if(0==e.length)throw"RSASetPrivateEx N.length == 0";if(0==t.length)throw"RSASetPrivateEx E.length == 0";if(!(null!=e&&null!=t&&e.length>0&&t.length>0))throw"Invalid RSA private key in RSASetPrivateEx";this.n=parseBigInt(e,16),this.e=parseInt(t,16),this.d=parseBigInt(n,16),this.p=parseBigInt(r,16),this.q=parseBigInt(i,16),this.dmp1=parseBigInt(o,16),this.dmq1=parseBigInt(l,16),this.coeff=parseBigInt(s,16)}function RSAGenerate(e,t){var n=new SecureRandom,r=e>>1;this.e=parseInt(t,16);for(var i=new BigInteger(t,16),o=e/2-100,l=BigInteger.ONE.shiftLeft(o);;){for(;this.p=new BigInteger(e-r,1,n),0!=this.p.subtract(BigInteger.ONE).gcd(i).compareTo(BigInteger.ONE)||!this.p.isProbablePrime(10););for(;this.q=new BigInteger(r,1,n),0!=this.q.subtract(BigInteger.ONE).gcd(i).compareTo(BigInteger.ONE)||!this.q.isProbablePrime(10););if(this.p.compareTo(this.q)<=0){var s=this.p;this.p=this.q,this.q=s}var a=this.q.subtract(this.p).abs();if(!(a.bitLength()>3)}function RSADecryptOAEP(e,t,n){if(e.length!=Math.ceil(this.n.bitLength()/4))throw new Error("wrong ctext length");var r=parseBigInt(e,16),i=this.doPrivate(r);return null==i?null:oaep_unpad(i,this.n.bitLength()+7>>3,t,n)} +function au(e,t){return new Al(e,t)}function cu(){this.n=null,this.e=0,this.d=null,this.p=null,this.q=null,this.dmp1=null,this.dmq1=null,this.coeff=null} /*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/ */ -function ECFieldElementFp(e,t){this.x=t,this.q=e}function feFpEquals(e){return e==this||this.q.equals(e.q)&&this.x.equals(e.x)}function feFpToBigInteger(){return this.x}function feFpNegate(){return new ECFieldElementFp(this.q,this.x.negate().mod(this.q))}function feFpAdd(e){return new ECFieldElementFp(this.q,this.x.add(e.toBigInteger()).mod(this.q))}function feFpSubtract(e){return new ECFieldElementFp(this.q,this.x.subtract(e.toBigInteger()).mod(this.q))}function feFpMultiply(e){return new ECFieldElementFp(this.q,this.x.multiply(e.toBigInteger()).mod(this.q))}function feFpSquare(){return new ECFieldElementFp(this.q,this.x.square().mod(this.q))}function feFpDivide(e){return new ECFieldElementFp(this.q,this.x.multiply(e.toBigInteger().modInverse(this.q)).mod(this.q))}function ECPointFp(e,t,n,r){this.curve=e,this.x=t,this.y=n,this.z=null==r?BigInteger.ONE:r,this.zinv=null}function pointFpGetX(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpGetY(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpEquals(e){return e==this||(this.isInfinity()?e.isInfinity():e.isInfinity()?this.isInfinity():!!e.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(e.z)).mod(this.curve.q).equals(BigInteger.ZERO)&&e.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(e.z)).mod(this.curve.q).equals(BigInteger.ZERO))}function pointFpIsInfinity(){return null==this.x&&null==this.y||this.z.equals(BigInteger.ZERO)&&!this.y.toBigInteger().equals(BigInteger.ZERO)}function pointFpNegate(){return new ECPointFp(this.curve,this.x,this.y.negate(),this.z)}function pointFpAdd(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(e.z)).mod(this.curve.q),n=e.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(e.z)).mod(this.curve.q);if(BigInteger.ZERO.equals(n))return BigInteger.ZERO.equals(t)?this.twice():this.curve.getInfinity();var r=new BigInteger("3"),i=this.x.toBigInteger(),o=this.y.toBigInteger();e.x.toBigInteger(),e.y.toBigInteger();var l=n.square(),s=l.multiply(n),a=i.multiply(l),u=t.square().multiply(this.z),c=u.subtract(a.shiftLeft(1)).multiply(e.z).subtract(s).multiply(n).mod(this.curve.q),h=a.multiply(r).multiply(t).subtract(o.multiply(s)).subtract(u.multiply(t)).multiply(e.z).add(t.multiply(s)).mod(this.curve.q),d=s.multiply(this.z).multiply(e.z).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(c),this.curve.fromBigInteger(h),d)}function pointFpTwice(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var e=new BigInteger("3"),t=this.x.toBigInteger(),n=this.y.toBigInteger(),r=n.multiply(this.z),i=r.multiply(n).mod(this.curve.q),o=this.curve.a.toBigInteger(),l=t.square().multiply(e);BigInteger.ZERO.equals(o)||(l=l.add(this.z.square().multiply(o)));var s=(l=l.mod(this.curve.q)).square().subtract(t.shiftLeft(3).multiply(i)).shiftLeft(1).multiply(r).mod(this.curve.q),a=l.multiply(e).multiply(t).subtract(i.shiftLeft(1)).shiftLeft(2).multiply(i).subtract(l.square().multiply(l)).mod(this.curve.q),u=r.square().multiply(r).shiftLeft(3).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(s),this.curve.fromBigInteger(a),u)}function pointFpMultiply(e){if(this.isInfinity())return this;if(0==e.signum())return this.curve.getInfinity();var t,n=e,r=n.multiply(new BigInteger("3")),i=this.negate(),o=this,l=this.curve.q.subtract(e),s=l.multiply(new BigInteger("3")),a=new ECPointFp(this.curve,this.x,this.y),u=a.negate();for(t=r.bitLength()-2;t>0;--t){o=o.twice();var c=r.testBit(t);c!=n.testBit(t)&&(o=o.add(c?this:i))}for(t=s.bitLength()-2;t>0;--t){a=a.twice();var h=s.testBit(t);h!=l.testBit(t)&&(a=a.add(h?a:u))}return o}function pointFpMultiplyTwo(e,t,n){var r;r=e.bitLength()>n.bitLength()?e.bitLength()-1:n.bitLength()-1;for(var i=this.curve.getInfinity(),o=this.add(t);r>=0;)i=i.twice(),e.testBit(r)?i=n.testBit(r)?i.add(o):i.add(this):n.testBit(r)&&(i=i.add(t)),--r;return i}function ECCurveFp(e,t,n){this.q=e,this.a=this.fromBigInteger(t),this.b=this.fromBigInteger(n),this.infinity=new ECPointFp(this,null,null)}function curveFpGetQ(){return this.q}function curveFpGetA(){return this.a}function curveFpGetB(){return this.b}function curveFpEquals(e){return e==this||this.q.equals(e.q)&&this.a.equals(e.a)&&this.b.equals(e.b)}function curveFpGetInfinity(){return this.infinity}function curveFpFromBigInteger(e){return new ECFieldElementFp(this.q,e)}function curveFpDecodePointHex(e){switch(parseInt(e.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:var t=e.substr(0,2);e.substr(2);var n=this.fromBigInteger(new BigInteger(s,16)),r=this.getA(),i=this.getB(),o=n.square().add(r).multiply(n).add(i).sqrt();return"03"==t&&(o=o.negate()),new ECPointFp(this,n,o);case 4:case 6:case 7:var l=(e.length-2)/2,s=e.substr(2,l),a=e.substr(l+2,l);return new ECPointFp(this,this.fromBigInteger(new BigInteger(s,16)),this.fromBigInteger(new BigInteger(a,16)));default:return null}}SecureRandom.prototype.nextBytes=rng_get_bytes,RSAKey.prototype.doPublic=RSADoPublic,RSAKey.prototype.setPublic=RSASetPublic,RSAKey.prototype.encrypt=RSAEncrypt,RSAKey.prototype.encryptOAEP=RSAEncryptOAEP,RSAKey.prototype.type="RSA",RSAKey.prototype.doPrivate=RSADoPrivate,RSAKey.prototype.setPrivate=RSASetPrivate,RSAKey.prototype.setPrivateEx=RSASetPrivateEx,RSAKey.prototype.generate=RSAGenerate,RSAKey.prototype.decrypt=RSADecrypt,RSAKey.prototype.decryptOAEP=RSADecryptOAEP,ECFieldElementFp.prototype.equals=feFpEquals,ECFieldElementFp.prototype.toBigInteger=feFpToBigInteger,ECFieldElementFp.prototype.negate=feFpNegate,ECFieldElementFp.prototype.add=feFpAdd,ECFieldElementFp.prototype.subtract=feFpSubtract,ECFieldElementFp.prototype.multiply=feFpMultiply,ECFieldElementFp.prototype.square=feFpSquare,ECFieldElementFp.prototype.divide=feFpDivide,ECFieldElementFp.prototype.sqrt=function(){return new ECFieldElementFp(this.q,this.x.sqrt().mod(this.q))},ECPointFp.prototype.getX=pointFpGetX,ECPointFp.prototype.getY=pointFpGetY,ECPointFp.prototype.equals=pointFpEquals,ECPointFp.prototype.isInfinity=pointFpIsInfinity,ECPointFp.prototype.negate=pointFpNegate,ECPointFp.prototype.add=pointFpAdd,ECPointFp.prototype.twice=pointFpTwice,ECPointFp.prototype.multiply=pointFpMultiply,ECPointFp.prototype.multiplyTwo=pointFpMultiplyTwo,ECCurveFp.prototype.getQ=curveFpGetQ,ECCurveFp.prototype.getA=curveFpGetA,ECCurveFp.prototype.getB=curveFpGetB,ECCurveFp.prototype.equals=curveFpEquals,ECCurveFp.prototype.getInfinity=curveFpGetInfinity,ECCurveFp.prototype.fromBigInteger=curveFpFromBigInteger,ECCurveFp.prototype.decodePointHex=curveFpDecodePointHex, +function lu(e,t){this.x=t,this.q=e}function uu(e,t,n,r){this.curve=e,this.x=t,this.y=n,this.z=null==r?Al.ONE:r,this.zinv=null}function hu(e,t,n){this.q=e,this.a=this.fromBigInteger(t),this.b=this.fromBigInteger(n),this.infinity=new uu(this,null,null)}ou.prototype.nextBytes=function(e){var t;for(t=0;t0&&t.length>0))throw"Invalid RSA public key";this.n=au(e,16),this.e=parseInt(t,16)}},cu.prototype.type="RSA",cu.prototype.doPrivate=function(e){if(null==this.p||null==this.q)return e.modPow(this.d,this.n);for(var t=e.mod(this.p).modPow(this.dmp1,this.p),n=e.mod(this.q).modPow(this.dmq1,this.q);t.compareTo(n)<0;)t=t.add(this.p);return t.subtract(n).multiply(this.coeff).mod(this.p).multiply(this.q).add(n)},cu.prototype.setPrivate=function(e,t,n){if(this.isPrivate=!0,"string"!=typeof e)this.n=e,this.e=t,this.d=n;else{if(!(null!=e&&null!=t&&e.length>0&&t.length>0))throw"Invalid RSA private key";this.n=au(e,16),this.e=parseInt(t,16),this.d=au(n,16)}},cu.prototype.setPrivateEx=function(e,t,n,r,i,s,o,a){if(this.isPrivate=!0,this.isPublic=!1,null==e)throw"RSASetPrivateEx N == null";if(null==t)throw"RSASetPrivateEx E == null";if(0==e.length)throw"RSASetPrivateEx N.length == 0";if(0==t.length)throw"RSASetPrivateEx E.length == 0";if(!(null!=e&&null!=t&&e.length>0&&t.length>0))throw"Invalid RSA private key in RSASetPrivateEx";this.n=au(e,16),this.e=parseInt(t,16),this.d=au(n,16),this.p=au(r,16),this.q=au(i,16),this.dmp1=au(s,16),this.dmq1=au(o,16),this.coeff=au(a,16)},cu.prototype.generate=function(e,t){var n=new ou,r=e>>1;this.e=parseInt(t,16);for(var i=new Al(t,16),s=e/2-100,o=Al.ONE.shiftLeft(s);;){for(;this.p=new Al(e-r,1,n),0!=this.p.subtract(Al.ONE).gcd(i).compareTo(Al.ONE)||!this.p.isProbablePrime(10););for(;this.q=new Al(r,1,n),0!=this.q.subtract(Al.ONE).gcd(i).compareTo(Al.ONE)||!this.q.isProbablePrime(10););if(this.p.compareTo(this.q)<=0){var a=this.p;this.p=this.q,this.q=a}var c=this.q.subtract(this.p).abs();if(!(c.bitLength()0;--t){s=s.twice();var u=r.testBit(t);u!=n.testBit(t)&&(s=s.add(u?this:i))}for(t=a.bitLength()-2;t>0;--t){c=c.twice();var h=a.testBit(t);h!=o.testBit(t)&&(c=c.add(h?c:l))}return s},uu.prototype.multiplyTwo=function(e,t,n){var r;r=e.bitLength()>n.bitLength()?e.bitLength()-1:n.bitLength()-1;for(var i=this.curve.getInfinity(),s=this.add(t);r>=0;)i=i.twice(),e.testBit(r)?i=n.testBit(r)?i.add(s):i.add(this):n.testBit(r)&&(i=i.add(t)),--r;return i},hu.prototype.getQ=function(){return this.q},hu.prototype.getA=function(){return this.a},hu.prototype.getB=function(){return this.b},hu.prototype.equals=function(e){return e==this||this.q.equals(e.q)&&this.a.equals(e.a)&&this.b.equals(e.b)},hu.prototype.getInfinity=function(){return this.infinity},hu.prototype.fromBigInteger=function(e){return new lu(this.q,e)},hu.prototype.decodePointHex=function(e){switch(parseInt(e.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:var t=e.substr(0,2);e.substr(2);var n=this.fromBigInteger(new Al(a,16)),r=this.getA(),i=this.getB(),s=n.square().add(r).multiply(n).add(i).sqrt();return"03"==t&&(s=s.negate()),new uu(this,n,s);case 4:case 6:case 7:var o=(e.length-2)/2,a=e.substr(2,o),c=e.substr(o+2,o);return new uu(this,this.fromBigInteger(new Al(a,16)),this.fromBigInteger(new Al(c,16)));default:return null}}, /*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib */ -ECFieldElementFp.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)},ECPointFp.prototype.getEncoded=function(e){var t=function(e,t){var n=e.toByteArrayUnsigned();if(tn.length;)n.unshift(0);return n},n=this.getX().toBigInteger(),r=this.getY().toBigInteger(),i=t(n,32);return e?r.isEven()?i.unshift(2):i.unshift(3):(i.unshift(4),i=i.concat(t(r,32))),i},ECPointFp.decodeFrom=function(e,t){t[0];var n=t.length-1,r=t.slice(1,1+n/2),i=t.slice(1+n/2,1+n);r.unshift(0),i.unshift(0);var o=new BigInteger(r),l=new BigInteger(i);return new ECPointFp(e,e.fromBigInteger(o),e.fromBigInteger(l))},ECPointFp.decodeFromHex=function(e,t){t.substr(0,2);var n=t.length-2,r=t.substr(2,n/2),i=t.substr(2+n/2,n/2),o=new BigInteger(r,16),l=new BigInteger(i,16);return new ECPointFp(e,e.fromBigInteger(o),e.fromBigInteger(l))},ECPointFp.prototype.add2D=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;if(this.x.equals(e.x))return this.y.equals(e.y)?this.twice():this.curve.getInfinity();var t=e.x.subtract(this.x),n=e.y.subtract(this.y).divide(t),r=n.square().subtract(this.x).subtract(e.x),i=n.multiply(this.x.subtract(r)).subtract(this.y);return new ECPointFp(this.curve,r,i)},ECPointFp.prototype.twice2D=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var e=this.curve.fromBigInteger(BigInteger.valueOf(2)),t=this.curve.fromBigInteger(BigInteger.valueOf(3)),n=this.x.square().multiply(t).add(this.curve.a).divide(this.y.multiply(e)),r=n.square().subtract(this.x.multiply(e)),i=n.multiply(this.x.subtract(r)).subtract(this.y);return new ECPointFp(this.curve,r,i)},ECPointFp.prototype.multiply2D=function(e){if(this.isInfinity())return this;if(0==e.signum())return this.curve.getInfinity();var t,n=e,r=n.multiply(new BigInteger("3")),i=this.negate(),o=this;for(t=r.bitLength()-2;t>0;--t){o=o.twice();var l=r.testBit(t);l!=n.testBit(t)&&(o=o.add2D(l?this:i))}return o},ECPointFp.prototype.isOnCurve=function(){var e=this.getX().toBigInteger(),t=this.getY().toBigInteger(),n=this.curve.getA().toBigInteger(),r=this.curve.getB().toBigInteger(),i=this.curve.getQ(),o=t.multiply(t).mod(i),l=e.multiply(e).multiply(e).add(n.multiply(e)).add(r).mod(i);return o.equals(l)},ECPointFp.prototype.toString=function(){return"("+this.getX().toBigInteger().toString()+","+this.getY().toBigInteger().toString()+")"},ECPointFp.prototype.validate=function(){var e=this.curve.getQ();if(this.isInfinity())throw new Error("Point is at infinity.");var t=this.getX().toBigInteger(),n=this.getY().toBigInteger();if(t.compareTo(BigInteger.ONE)<0||t.compareTo(e.subtract(BigInteger.ONE))>0)throw new Error("x coordinate out of bounds");if(n.compareTo(BigInteger.ONE)<0||n.compareTo(e.subtract(BigInteger.ONE))>0)throw new Error("y coordinate out of bounds");if(!this.isOnCurve())throw new Error("Point is not on the curve.");if(this.multiply(e).isInfinity())throw new Error("Point is not a scalar multiple of G.");return!0}; +lu.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)},uu.prototype.getEncoded=function(e){var t=function(e,t){var n=e.toByteArrayUnsigned();if(tn.length;)n.unshift(0);return n},n=this.getX().toBigInteger(),r=this.getY().toBigInteger(),i=t(n,32);return e?r.isEven()?i.unshift(2):i.unshift(3):(i.unshift(4),i=i.concat(t(r,32))),i},uu.decodeFrom=function(e,t){t[0];var n=t.length-1,r=t.slice(1,1+n/2),i=t.slice(1+n/2,1+n);r.unshift(0),i.unshift(0);var s=new Al(r),o=new Al(i);return new uu(e,e.fromBigInteger(s),e.fromBigInteger(o))},uu.decodeFromHex=function(e,t){t.substr(0,2);var n=t.length-2,r=t.substr(2,n/2),i=t.substr(2+n/2,n/2),s=new Al(r,16),o=new Al(i,16);return new uu(e,e.fromBigInteger(s),e.fromBigInteger(o))},uu.prototype.add2D=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;if(this.x.equals(e.x))return this.y.equals(e.y)?this.twice():this.curve.getInfinity();var t=e.x.subtract(this.x),n=e.y.subtract(this.y).divide(t),r=n.square().subtract(this.x).subtract(e.x),i=n.multiply(this.x.subtract(r)).subtract(this.y);return new uu(this.curve,r,i)},uu.prototype.twice2D=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var e=this.curve.fromBigInteger(Al.valueOf(2)),t=this.curve.fromBigInteger(Al.valueOf(3)),n=this.x.square().multiply(t).add(this.curve.a).divide(this.y.multiply(e)),r=n.square().subtract(this.x.multiply(e)),i=n.multiply(this.x.subtract(r)).subtract(this.y);return new uu(this.curve,r,i)},uu.prototype.multiply2D=function(e){if(this.isInfinity())return this;if(0==e.signum())return this.curve.getInfinity();var t,n=e,r=n.multiply(new Al("3")),i=this.negate(),s=this;for(t=r.bitLength()-2;t>0;--t){s=s.twice();var o=r.testBit(t);o!=n.testBit(t)&&(s=s.add2D(o?this:i))}return s},uu.prototype.isOnCurve=function(){var e=this.getX().toBigInteger(),t=this.getY().toBigInteger(),n=this.curve.getA().toBigInteger(),r=this.curve.getB().toBigInteger(),i=this.curve.getQ(),s=t.multiply(t).mod(i),o=e.multiply(e).multiply(e).add(n.multiply(e)).add(r).mod(i);return s.equals(o)},uu.prototype.toString=function(){return"("+this.getX().toBigInteger().toString()+","+this.getY().toBigInteger().toString()+")"},uu.prototype.validate=function(){var e=this.curve.getQ();if(this.isInfinity())throw new Error("Point is at infinity.");var t=this.getX().toBigInteger(),n=this.getY().toBigInteger();if(t.compareTo(Al.ONE)<0||t.compareTo(e.subtract(Al.ONE))>0)throw new Error("x coordinate out of bounds");if(n.compareTo(Al.ONE)<0||n.compareTo(e.subtract(Al.ONE))>0)throw new Error("y coordinate out of bounds");if(!this.isOnCurve())throw new Error("Point is not on the curve.");if(this.multiply(e).isInfinity())throw new Error("Point is not a scalar multiple of G.");return!0}; /*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval */ -var jsonParse=function(){var e=new RegExp('(?:false|true|null|[\\{\\}\\[\\]]|(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)|(?:"(?:[^\\0-\\x08\\x0a-\\x1f"\\\\]|\\\\(?:["/\\\\bfnrt]|u[0-9A-Fa-f]{4}))*"))',"g"),t=new RegExp("\\\\(?:([^u])|u(.{4}))","g"),n={'"':'"',"/":"/","\\":"\\",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"};function r(e,t,r){return t?n[t]:String.fromCharCode(parseInt(r,16))}var i=new String(""),o=Object.hasOwnProperty;return function(n,l){var s,a,u=n.match(e),c=u[0],h=!1;"{"===c?s={}:"["===c?s=[]:(s=[],h=!0);for(var d=[s],f=1-h,p=u.length;f=0;)delete n[r[a]]}return l.call(e,t,n)};s=w({"":s},"")}return s}}();void 0!==KJUR&&KJUR||(KJUR={}),void 0!==KJUR.asn1&&KJUR.asn1||(KJUR.asn1={}),KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(e){var t=e.toString(16);return t.length%2==1&&(t="0"+t),t},this.bigIntToMinTwosComplementsHex=function(e){var t=e.toString(16);if("-"!=t.substr(0,1))t.length%2==1?t="0"+t:t.match(/^[0-7]/)||(t="00"+t);else{var n=t.substr(1).length;n%2==1?n+=1:t.match(/^[0-7]/)||(n+=2);for(var r="",i=0;i15)throw new Error("ASN.1 length too long to represent by 8x: n = "+e.toString(16));return(128+n).toString(16)+t},this.tohex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV},this.getEncodedHex=function(){return this.tohex()},this.getValueHex=function(){return this.tohex(),this.hV},this.getFreshValueHex=function(){return""},this.setByParam=function(e){this.params=e},null!=e&&null!=e.tlv&&(this.hTLV=e.tlv,this.isModified=!1)},KJUR.asn1.DERAbstractString=function(e){KJUR.asn1.DERAbstractString.superclass.constructor.call(this),this.getString=function(){return this.s},this.setString=function(e){this.hTLV=null,this.isModified=!0,this.s=e,this.hV=utf8tohex(this.s).toLowerCase()},this.setStringHex=function(e){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=e},this.getFreshValueHex=function(){return this.hV},void 0!==e&&("string"==typeof e?this.setString(e):void 0!==e.str?this.setString(e.str):void 0!==e.hex&&this.setStringHex(e.hex))},extendClass(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object),KJUR.asn1.DERAbstractTime=function(e){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this),this.localDateToUTC=function(e){var t=e.getTime()+6e4*e.getTimezoneOffset();return new Date(t)},this.formatDate=function(e,t,n){var r=this.zeroPadding,i=this.localDateToUTC(e),o=String(i.getFullYear());"utc"==t&&(o=o.substr(2,2));var l=o+r(String(i.getMonth()+1),2)+r(String(i.getDate()),2)+r(String(i.getHours()),2)+r(String(i.getMinutes()),2)+r(String(i.getSeconds()),2);if(!0===n){var s=i.getMilliseconds();if(0!=s){var a=r(String(s),3);l=l+"."+(a=a.replace(/[0]+$/,""))}}return l+"Z"},this.zeroPadding=function(e,t){return e.length>=t?e:new Array(t-e.length+1).join("0")+e},this.setByParam=function(e){this.hV=null,this.hTLV=null,this.params=e},this.getString=function(){},this.setString=function(e){this.hTLV=null,this.isModified=!0,null==this.params&&(this.params={}),this.params.str=e},this.setByDate=function(e){this.hTLV=null,this.isModified=!0,null==this.params&&(this.params={}),this.params.date=e},this.setByDateValue=function(e,t,n,r,i,o){var l=new Date(Date.UTC(e,t-1,n,r,i,o,0));this.setByDate(l)},this.getFreshValueHex=function(){return this.hV}},extendClass(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object),KJUR.asn1.DERAbstractStructured=function(e){KJUR.asn1.DERAbstractString.superclass.constructor.call(this),this.setByASN1ObjectArray=function(e){this.hTLV=null,this.isModified=!0,this.asn1Array=e},this.appendASN1Object=function(e){this.hTLV=null,this.isModified=!0,this.asn1Array.push(e)},this.asn1Array=new Array,void 0!==e&&void 0!==e.array&&(this.asn1Array=e.array)},extendClass(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object),KJUR.asn1.DERBoolean=function(e){KJUR.asn1.DERBoolean.superclass.constructor.call(this),this.hT="01",this.hTLV=0==e?"010100":"0101ff"},extendClass(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object),KJUR.asn1.DERInteger=function(e){KJUR.asn1.DERInteger.superclass.constructor.call(this),this.hT="02",this.params=null;var t=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex;this.setByBigInteger=function(e){this.isModified=!0,this.params={bigint:e}},this.setByInteger=function(e){this.isModified=!0,this.params=e},this.setValueHex=function(e){this.isModified=!0,this.params={hex:e}},this.getFreshValueHex=function(){var e=this.params,n=null;if(null==e)throw new Error("value not set");if("object"==typeof e&&null!=e.hex)return this.hV=e.hex,this.hV;if("number"==typeof e)n=new BigInteger(String(e),10);else if(null!=e.int)n=new BigInteger(String(e.int),10);else{if(null==e.bigint)throw new Error("wrong parameter");n=e.bigint}return this.hV=t(n),this.hV},null!=e&&(this.params=e)},extendClass(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object),KJUR.asn1.DERBitString=function(e){if(void 0!==e&&void 0!==e.obj){var t=KJUR.asn1.ASN1Util.newObject(e.obj);e.hex="00"+t.tohex()}KJUR.asn1.DERBitString.superclass.constructor.call(this),this.hT="03",this.setHexValueIncludingUnusedBits=function(e){this.hTLV=null,this.isModified=!0,this.hV=e},this.setUnusedBitsAndHexValue=function(e,t){if(e<0||7>6).toString(16)+r.toString(16))}r=128|(15&t)<<2|(192&n)>>6;var i=128|63&n;return hextoutf8((224|(240&t)>>4).toString(16)+r.toString(16)+i.toString(16))}));return t.join("")}function encodeURIComponentAll(e){for(var t=encodeURIComponent(e),n="",r=0;r"7"?"00"+e:e}function oidtohex(e){var t=function(e){var t=e.toString(16);return 1==t.length&&(t="0"+t),t},n=function(e){var n="",r=parseInt(e,10).toString(2),i=7-r.length%7;7==i&&(i=0);for(var o="",l=0;l0&&(u=u+"."+s.join(".")),u}catch(e){return null}}ASN1HEX.getLblen=function(e,t){if("8"!=e.substr(t+2,1))return 1;var n=parseInt(e.substr(t+3,1));return 0==n?-1:0=r)break}return l},ASN1HEX.getNthChildIdx=function(e,t,n){return ASN1HEX.getChildIdx(e,t)[n]},ASN1HEX.getIdxbyList=function(e,t,n,r){var i,o,l=ASN1HEX;return 0==n.length?void 0!==r&&e.substr(t,2)!==r?-1:t:(i=n.shift())>=(o=l.getChildIdx(e,t)).length?-1:l.getIdxbyList(e,o[i],n,r)},ASN1HEX.getIdxbyListEx=function(e,t,n,r){var i,o,l=ASN1HEX;if(0==n.length)return void 0!==r&&e.substr(t,2)!==r?-1:t;i=n.shift(),o=l.getChildIdx(e,t);for(var s=0,a=0;a=e.length?null:i.getTLV(e,o)},ASN1HEX.getTLVbyListEx=function(e,t,n,r){var i=ASN1HEX,o=i.getIdxbyListEx(e,t,n,r);return-1==o?null:i.getTLV(e,o)},ASN1HEX.getVbyList=function(e,t,n,r,i){var o,l,s=ASN1HEX;return-1==(o=s.getIdxbyList(e,t,n,r))||o>=e.length?null:(l=s.getV(e,o),!0===i&&(l=l.substr(2)),l)},ASN1HEX.getVbyListEx=function(e,t,n,r,i){var o,l,s=ASN1HEX;return-1==(o=s.getIdxbyListEx(e,t,n,r))?null:(l=s.getV(e,o),"03"==e.substr(o,2)&&!1!==i&&(l=l.substr(2)),l)},ASN1HEX.getInt=function(e,t,n){null==n&&(n=-1);try{var r=e.substr(t,2);if("02"!=r&&"03"!=r)return n;var i=ASN1HEX.getV(e,t);return"02"==r?parseInt(i,16):bitstrtoint(i)}catch(e){return n}},ASN1HEX.getOID=function(e,t,n){null==n&&(n=null);try{return"06"!=e.substr(t,2)?n:hextooid(ASN1HEX.getV(e,t))}catch(e){return n}},ASN1HEX.getOIDName=function(e,t,n){null==n&&(n=null);try{var r=ASN1HEX.getOID(e,t,n);if(r==n)return n;var i=KJUR.asn1.x509.OID.oid2name(r);return""==i?r:i}catch(e){return n}},ASN1HEX.getString=function(e,t,n){null==n&&(n=null);try{return hextorstr(ASN1HEX.getV(e,t))}catch(e){return n}},ASN1HEX.hextooidstr=function(e){var t=function(e,t){return e.length>=t?e:new Array(t-e.length+1).join("0")+e},n=[],r=e.substr(0,2),i=parseInt(r,16);n[0]=new String(Math.floor(i/40)),n[1]=new String(i%40);for(var o=e.substr(2),l=[],s=0;s0&&(c=c+"."+a.join(".")),c},ASN1HEX.dump=function(e,t,n,r){var i=ASN1HEX,o=i.getV,l=i.dump,s=i.getChildIdx,a=e;e instanceof KJUR.asn1.ASN1Object&&(a=e.tohex());var u=function(e,t){return e.length<=2*t?e:e.substr(0,t)+"..(total "+e.length/2+"bytes).."+e.substr(e.length-t,t)};void 0===t&&(t={ommit_long_octet:32}),void 0===n&&(n=0),void 0===r&&(r="");var c,h=t.ommit_long_octet;if("01"==(c=a.substr(n,2)))return"00"==(d=o(a,n))?r+"BOOLEAN FALSE\n":r+"BOOLEAN TRUE\n";if("02"==c)return r+"INTEGER "+u(d=o(a,n),h)+"\n";if("03"==c){var d=o(a,n);if(i.isASN1HEX(d.substr(2))){var f=r+"BITSTRING, encapsulates\n";return f+=l(d.substr(2),t,0,r+" ")}return r+"BITSTRING "+u(d,h)+"\n"}if("04"==c){d=o(a,n);if(i.isASN1HEX(d)){f=r+"OCTETSTRING, encapsulates\n";return f+=l(d,t,0,r+" ")}return r+"OCTETSTRING "+u(d,h)+"\n"}if("05"==c)return r+"NULL\n";if("06"==c){var p=o(a,n),g=KJUR.asn1.ASN1Util.oidHexToInt(p),w=KJUR.asn1.x509.OID.oid2name(g),m=g.replace(/\./g," ");return""!=w?r+"ObjectIdentifier "+w+" ("+m+")\n":r+"ObjectIdentifier ("+m+")\n"}if("0a"==c)return r+"ENUMERATED "+parseInt(o(a,n))+"\n";if("0c"==c)return r+"UTF8String '"+hextoutf8(o(a,n))+"'\n";if("13"==c)return r+"PrintableString '"+hextoutf8(o(a,n))+"'\n";if("14"==c)return r+"TeletexString '"+hextoutf8(o(a,n))+"'\n";if("16"==c)return r+"IA5String '"+hextoutf8(o(a,n))+"'\n";if("17"==c)return r+"UTCTime "+hextoutf8(o(a,n))+"\n";if("18"==c)return r+"GeneralizedTime "+hextoutf8(o(a,n))+"\n";if("1a"==c)return r+"VisualString '"+hextoutf8(o(a,n))+"'\n";if("1e"==c)return r+"BMPString '"+ucs2hextoutf8(o(a,n))+"'\n";if("30"==c){if("3000"==a.substr(n,4))return r+"SEQUENCE {}\n";f=r+"SEQUENCE\n";var v=t;if((2==(S=s(a,n)).length||3==S.length)&&"06"==a.substr(S[0],2)&&"04"==a.substr(S[S.length-1],2)){w=i.oidname(o(a,S[0]));var y=JSON.parse(JSON.stringify(t));y.x509ExtName=w,v=y}for(var b=0;b4?{enum:{hex:w}}:{enum:parseInt(w,16)};if("30"==p||"31"==p)return g[f[p]]=function(e){for(var t=[],r=l(e,0),i=0;i31)&&(128==(192&n)&&(31&n)==r))}catch(e){return!1}},ASN1HEX.isASN1HEX=function(e){var t=ASN1HEX;if(e.length%2==1)return!1;var n=t.getVblen(e,0),r=e.substr(0,2),i=t.getL(e,0);return e.length-r.length-i.length==2*n},ASN1HEX.checkStrictDER=function(e,t,n,r,i){var o=ASN1HEX;if(void 0===n){if("string"!=typeof e)throw new Error("not hex string");if(e=e.toLowerCase(),!KJUR.lang.String.isHex(e))throw new Error("not hex string");n=e.length,i=(r=e.length/2)<128?1:Math.ceil(r.toString(16))+1}if(o.getL(e,t).length>2*i)throw new Error("L of TLV too long: idx="+t);var l=o.getVblen(e,t);if(l>r)throw new Error("value of L too long than hex: idx="+t);var s=o.getTLV(e,t),a=s.length-2-o.getL(e,t).length;if(a!==2*l)throw new Error("V string length and L's value not the same:"+a+"/"+2*l);if(0===t&&e.length!=s.length)throw new Error("total length and TLV length unmatch:"+e.length+"!="+s.length);var u=e.substr(t,2);if("02"===u){var c=o.getVidx(e,t);if("00"==e.substr(c,2)&&e.charCodeAt(c+2)<56)throw new Error("not least zeros for DER INTEGER")}if(32&parseInt(u,16)){for(var h=o.getVblen(e,t),d=0,f=o.getChildIdx(e,t),p=0;p0&&e.push(new r({tag:"a3",obj:new u(t.ext)})),new KJUR.asn1.DERSequence({array:e}).tohex()},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&this.setByParam(e)},extendClass(KJUR.asn1.x509.TBSCertificate,KJUR.asn1.ASN1Object),KJUR.asn1.x509.Extensions=function(e){KJUR.asn1.x509.Extensions.superclass.constructor.call(this);var t=KJUR.asn1,n=t.DERSequence,r=t.x509;this.aParam=[],this.setByParam=function(e){this.aParam=e},this.tohex=function(){for(var e=[],t=0;t-1&&e.push(new r({int:this.pathLen}));var t=new i({array:e});return this.asn1ExtnValue=t,this.asn1ExtnValue.tohex()},this.oid="2.5.29.19",this.cA=!1,this.pathLen=-1,void 0!==e&&(void 0!==e.cA&&(this.cA=e.cA),void 0!==e.pathLen&&(this.pathLen=e.pathLen))},extendClass(KJUR.asn1.x509.BasicConstraints,KJUR.asn1.x509.Extension),KJUR.asn1.x509.CRLDistributionPoints=function(e){KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,e);var t=KJUR.asn1,n=t.x509;this.getExtnValueHex=function(){return this.asn1ExtnValue.tohex()},this.setByDPArray=function(e){for(var r=[],i=0;i0&&e.push(new n({array:t}))}return new n({array:e}).tohex()},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&(this.params=e)},extendClass(KJUR.asn1.x509.PolicyInformation,KJUR.asn1.ASN1Object),KJUR.asn1.x509.PolicyQualifierInfo=function(e){KJUR.asn1.x509.PolicyQualifierInfo.superclass.constructor.call(this,e);var t=KJUR.asn1,n=t.DERSequence,r=t.DERIA5String,i=t.DERObjectIdentifier,o=t.x509.UserNotice;this.params=null,this.tohex=function(){return void 0!==this.params.cps?new n({array:[new i({oid:"1.3.6.1.5.5.7.2.1"}),new r({str:this.params.cps})]}).tohex():null!=this.params.unotice?new n({array:[new i({oid:"1.3.6.1.5.5.7.2.2"}),new o(this.params.unotice)]}).tohex():void 0},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&(this.params=e)},extendClass(KJUR.asn1.x509.PolicyQualifierInfo,KJUR.asn1.ASN1Object),KJUR.asn1.x509.UserNotice=function(e){KJUR.asn1.x509.UserNotice.superclass.constructor.call(this,e);var t=KJUR.asn1.DERSequence;KJUR.asn1.DERInteger;var n=KJUR.asn1.x509.DisplayText,r=KJUR.asn1.x509.NoticeReference;this.params=null,this.tohex=function(){var e=[];return void 0!==this.params.noticeref&&e.push(new r(this.params.noticeref)),void 0!==this.params.exptext&&e.push(new n(this.params.exptext)),new t({array:e}).tohex()},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&(this.params=e)},extendClass(KJUR.asn1.x509.UserNotice,KJUR.asn1.ASN1Object),KJUR.asn1.x509.NoticeReference=function(e){KJUR.asn1.x509.NoticeReference.superclass.constructor.call(this,e);var t=KJUR.asn1.DERSequence,n=KJUR.asn1.DERInteger,r=KJUR.asn1.x509.DisplayText;this.params=null,this.tohex=function(){var e=[];if(void 0!==this.params.org&&e.push(new r(this.params.org)),void 0!==this.params.noticenum){for(var i=[],o=this.params.noticenum,l=0;l0)for(var e=0;e0;i++){var o=t.shift();if(!0===n){var l=(r.pop()+","+o).replace(/\\,/g,",");r.push(l),n=!1}else r.push(o);"\\"===o.substr(-1,1)&&(n=!0)}return(r=r.map((function(e){return e.replace("/","\\/")}))).reverse(),"/"+r.join("/")},KJUR.asn1.x509.X500Name.ldapToOneline=function(e){return KJUR.asn1.x509.X500Name.ldapToCompat(e)},KJUR.asn1.x509.RDN=function(e){KJUR.asn1.x509.RDN.superclass.constructor.call(this),this.asn1Array=[],this.paramArray=[],this.sRule="utf8";var t=KJUR.asn1.x509.AttributeTypeAndValue;this.setByParam=function(e){void 0!==e.rule&&(this.sRule=e.rule),void 0!==e.str&&this.addByMultiValuedString(e.str),void 0!==e.array&&(this.paramArray=e.array)},this.addByString=function(e){this.asn1Array.push(new KJUR.asn1.x509.AttributeTypeAndValue({str:e,rule:this.sRule}))},this.addByMultiValuedString=function(e){for(var t=KJUR.asn1.x509.RDN.parseString(e),n=0;n0)for(var e=0;e0;i++){var o=t.shift();if(!0===n){var l=(r.pop()+"+"+o).replace(/\\\+/g,"+");r.push(l),n=!1}else r.push(o);"\\"===o.substr(-1,1)&&(n=!0)}var s=!1,a=[];for(i=0;r.length>0;i++){o=r.shift();if(!0===s){var u=a.pop();if(o.match(/"$/)){l=(u+"+"+o).replace(/^([^=]+)="(.*)"$/,"$1=$2");a.push(l),s=!1}else a.push(u+"+"+o)}else a.push(o);o.match(/^[^=]+="/)&&(s=!0)}return a},KJUR.asn1.x509.AttributeTypeAndValue=function(e){KJUR.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this),this.sRule="utf8",this.sType=null,this.sValue=null,this.dsType=null;var t=KJUR,n=t.asn1,r=n.DERSequence,i=n.DERUTF8String,o=n.DERPrintableString,l=n.DERTeletexString,s=n.DERIA5String,a=n.DERVisibleString,u=n.DERBMPString,c=t.lang.String.isMail,h=t.lang.String.isPrintable;this.setByParam=function(e){if(void 0!==e.rule&&(this.sRule=e.rule),void 0!==e.ds&&(this.dsType=e.ds),void 0===e.value&&void 0!==e.str){var t=e.str.match(/^([^=]+)=(.+)$/);if(!t)throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr);this.sType=t[1],this.sValue=t[2]}else this.sType=e.type,this.sValue=e.value},this.setByString=function(e,t){void 0!==t&&(this.sRule=t);var n=e.match(/^([^=]+)=(.+)$/);if(!n)throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr);this.setByAttrTypeAndValueStr(n[1],n[2])},this._getDsType=function(){var e=this.sType,t=this.sValue,n=this.sRule;return"prn"===n?"CN"==e&&c(t)?"ia5":h(t)?"prn":"utf8":"utf8"===n?"CN"==e&&c(t)?"ia5":"C"==e?"prn":"utf8":"utf8"},this.setByAttrTypeAndValueStr=function(e,t,n){void 0!==n&&(this.sRule=n),this.sType=e,this.sValue=t},this.getValueObj=function(e,t){if("utf8"==e)return new i({str:t});if("prn"==e)return new o({str:t});if("tel"==e)return new l({str:t});if("ia5"==e)return new s({str:t});if("vis"==e)return new a({str:t});if("bmp"==e)return new u({str:t});throw new Error("unsupported directory string type: type="+e+" value="+t)},this.tohex=function(){null==this.dsType&&(this.dsType=this._getDsType());var e=KJUR.asn1.x509.OID.atype2obj(this.sType),t=this.getValueObj(this.dsType,this.sValue),n=new r({array:[e,t]});return this.TLV=n.tohex(),this.TLV},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&this.setByParam(e)},extendClass(KJUR.asn1.x509.AttributeTypeAndValue,KJUR.asn1.ASN1Object),KJUR.asn1.x509.SubjectPublicKeyInfo=function(e){KJUR.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);var t=KJUR,n=t.asn1,r=n.DERInteger,i=n.DERBitString,o=n.DERObjectIdentifier,l=n.DERSequence,s=n.ASN1Util.newObject,a=n.x509.AlgorithmIdentifier,u=t.crypto;u.ECDSA,u.DSA,this.getASN1Object=function(){if(null==this.asn1AlgId||null==this.asn1SubjPKey)throw"algId and/or subjPubKey not set";return new l({array:[this.asn1AlgId,this.asn1SubjPKey]})},this.tohex=function(){var e=this.getASN1Object();return this.hTLV=e.tohex(),this.hTLV},this.getEncodedHex=function(){return this.tohex()},this.setPubKey=function(e){try{if(e instanceof RSAKey){var t=s({seq:[{int:{bigint:e.n}},{int:{int:e.e}}]}).tohex();this.asn1AlgId=new a({name:"rsaEncryption"}),this.asn1SubjPKey=new i({hex:"00"+t})}}catch(e){}try{if(e instanceof KJUR.crypto.ECDSA){var n=new o({name:e.curveName});this.asn1AlgId=new a({name:"ecPublicKey",asn1params:n}),this.asn1SubjPKey=new i({hex:"00"+e.pubKeyHex})}}catch(e){}try{if(e instanceof KJUR.crypto.DSA){n=new s({seq:[{int:{bigint:e.p}},{int:{bigint:e.q}},{int:{bigint:e.g}}]});this.asn1AlgId=new a({name:"dsa",asn1params:n});var l=new r({bigint:e.y});this.asn1SubjPKey=new i({hex:"00"+l.tohex()})}}catch(e){}},void 0!==e&&this.setPubKey(e)},extendClass(KJUR.asn1.x509.SubjectPublicKeyInfo,KJUR.asn1.ASN1Object),KJUR.asn1.x509.Time=function(e){KJUR.asn1.x509.Time.superclass.constructor.call(this);var t=KJUR.asn1,n=t.DERUTCTime,r=t.DERGeneralizedTime;this.params=null,this.type=null,this.setTimeParams=function(e){this.timeParams=e},this.setByParam=function(e){this.params=e},this.getType=function(e){return e.match(/^[0-9]{12}Z$/)?"utc":e.match(/^[0-9]{14}Z$/)?"gen":e.match(/^[0-9]{12}\.[0-9]+Z$/)?"utc":e.match(/^[0-9]{14}\.[0-9]+Z$/)?"gen":null},this.tohex=function(){var e=this.params,t=null;if("string"==typeof e&&(e={str:e}),null==e||!e.str||null!=e.type&&null!=e.type||(e.type=this.getType(e.str)),null!=e&&e.str?("utc"==e.type&&(t=new n(e.str)),"gen"==e.type&&(t=new r(e.str))):t="gen"==this.type?new r:new n,null==t)throw new Error("wrong setting for Time");return this.TLV=t.tohex(),this.TLV},this.getEncodedHex=function(){return this.tohex()},null!=e&&this.setByParam(e)},KJUR.asn1.x509.Time_bak=function(e){KJUR.asn1.x509.Time_bak.superclass.constructor.call(this);var t=KJUR.asn1,n=t.DERUTCTime,r=t.DERGeneralizedTime;this.setTimeParams=function(e){this.timeParams=e},this.tohex=function(){var e=null;return e=null!=this.timeParams?"utc"==this.type?new n(this.timeParams):new r(this.timeParams):"utc"==this.type?new n:new r,this.TLV=e.tohex(),this.TLV},this.getEncodedHex=function(){return this.tohex()},this.type="utc",void 0!==e&&(void 0!==e.type?this.type=e.type:void 0!==e.str&&(e.str.match(/^[0-9]{12}Z$/)&&(this.type="utc"),e.str.match(/^[0-9]{14}Z$/)&&(this.type="gen")),this.timeParams=e)},extendClass(KJUR.asn1.x509.Time,KJUR.asn1.ASN1Object),KJUR.asn1.x509.AlgorithmIdentifier=function(e){KJUR.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this),this.nameAlg=null,this.asn1Alg=null,this.asn1Params=null,this.paramEmpty=!1;var t=KJUR.asn1,n=t.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;if(this.tohex=function(){if(null===this.nameAlg&&null===this.asn1Alg)throw new Error("algorithm not specified");if(null!==this.nameAlg){var e=null;for(var r in n)r===this.nameAlg&&(e=n[r]);if(null!==e)return this.hTLV=e,this.hTLV}null!==this.nameAlg&&null===this.asn1Alg&&(this.asn1Alg=t.x509.OID.name2obj(this.nameAlg));var i=[this.asn1Alg];null!==this.asn1Params&&i.push(this.asn1Params);var o=new t.DERSequence({array:i});return this.hTLV=o.tohex(),this.hTLV},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&(void 0!==e.name&&(this.nameAlg=e.name),void 0!==e.asn1params&&(this.asn1Params=e.asn1params),void 0!==e.paramempty&&(this.paramEmpty=e.paramempty)),null===this.asn1Params&&!1===this.paramEmpty&&null!==this.nameAlg){void 0!==this.nameAlg.name&&(this.nameAlg=this.nameAlg.name);var r=this.nameAlg.toLowerCase();"withdsa"!==r.substr(-7,7)&&"withecdsa"!==r.substr(-9,9)&&(this.asn1Params=new t.DERNull)}},extendClass(KJUR.asn1.x509.AlgorithmIdentifier,KJUR.asn1.ASN1Object),KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV={SHAwithRSAandMGF1:"300d06092a864886f70d01010a3000",SHA256withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120",SHA384withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130",SHA512withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140"},KJUR.asn1.x509.GeneralName=function(e){KJUR.asn1.x509.GeneralName.superclass.constructor.call(this);var t=KJUR.asn1,n=t.x509,r=n.X500Name,i=n.OtherName,o=t.DERIA5String;t.DERPrintableString;var l=t.DEROctetString,s=t.DERTaggedObject,a=t.ASN1Object,u=Error;this.params=null,this.setByParam=function(e){this.params=e},this.tohex=function(){var e,t,n=this.params,c=!1;if(void 0!==n.other)e="a0",t=new i(n.other);else if(void 0!==n.rfc822)e="81",t=new o({str:n.rfc822});else if(void 0!==n.dns)e="82",t=new o({str:n.dns});else if(void 0!==n.dn)e="a4",c=!0,t="string"==typeof n.dn?new r({str:n.dn}):n.dn instanceof KJUR.asn1.x509.X500Name?n.dn:new r(n.dn);else if(void 0!==n.ldapdn)e="a4",c=!0,t=new r({ldapstr:n.ldapdn});else if(void 0!==n.certissuer||void 0!==n.certsubj){var h,d;e="a4",c=!0;var f=null;if(void 0!==n.certsubj?(h=!1,d=n.certsubj):(h=!0,d=n.certissuer),d.match(/^[0-9A-Fa-f]+$/),-1!=d.indexOf("-----BEGIN ")&&(f=pemtohex(d)),null==f)throw new Error("certsubj/certissuer not cert");var p,g=new X509;g.hex=f,p=h?g.getIssuerHex():g.getSubjectHex(),(t=new a).hTLV=p}else if(void 0!==n.uri)e="86",t=new o({str:n.uri});else{if(void 0===n.ip)throw new u("improper params");var w;e="87";var m=n.ip;try{if(m.match(/^[0-9a-f]+$/)){var v=m.length;if(8!=v&&16!=v&&32!=v&&64!=v)throw"err";w=m}else w=iptohex(m)}catch(e){throw new u("malformed IP address: "+n.ip+":"+e.message)}t=new l({hex:w})}return new s({tag:e,explicit:c,obj:t}).tohex()},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&this.setByParam(e)},extendClass(KJUR.asn1.x509.GeneralName,KJUR.asn1.ASN1Object),KJUR.asn1.x509.GeneralNames=function(e){KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);var t=KJUR.asn1;this.setByParamArray=function(e){for(var n=0;n0){for(var n=o(e.valhex,t[0]),r=c(n,0),i=[],l=0;l1){var u=o(e.valhex,t[1]);e.polhex=u}delete e.valhex},this.setSignaturePolicyIdentifier=function(e){var n=c(e.valhex,0);if(n.length>0){var l=r.getOID(e.valhex,n[0]);e.oid=l}if(n.length>1){var s=new t,a=c(e.valhex,n[1]),u=o(e.valhex,a[0]),h=s.getAlgorithmIdentifierName(u);e.alg=h;var d=i(e.valhex,a[1]);e.hash=d}delete e.valhex},this.setSigningCertificateV2=function(e){var t=c(e.valhex,0);if(t.length>0){for(var n=o(e.valhex,t[0]),r=c(n,0),i=[],l=0;l1){var u=o(e.valhex,t[1]);e.polhex=u}delete e.valhex},this.getESSCertID=function(e){var t={},n=c(e,0);if(n.length>0){var r=i(e,n[0]);t.hash=r}if(n.length>1){var l=o(e,n[1]),s=this.getIssuerSerial(l);null!=s.serial&&(t.serial=s.serial),null!=s.issuer&&(t.issuer=s.issuer)}return t},this.getESSCertIDv2=function(t){var r={},l=c(t,0);if(l.length<1||3s+1){var h=o(t,l[s+1]),d=this.getIssuerSerial(h);r.issuer=d.issuer,r.serial=d.serial}return r},this.getIssuerSerial=function(e){var t={},r=c(e,0),l=o(e,r[0]),s=n.getGeneralNames(l)[0].dn;t.issuer=s;var a=i(e,r[1]);return t.serial={hex:a},t},this.getCertificateSet=function(e){for(var t=c(e,0),n=[],r=0;r=0;l--)i+=r[l];return i}if("string"==typeof e&&null!=o[e])return namearraytobinstr([e],o);if("object"==typeof e&&null!=e.length)return namearraytobinstr(e,o);throw new t("wrong params")},this.tohex=function(){this.params;var e=this.getBinValue();return new r({bin:e}).tohex()},this.getEncodedHex=function(){return this.tohex()},null!=e&&this.setByParam(e)},extendClass(KJUR.asn1.tsp.PKIFailureInfo,KJUR.asn1.ASN1Object),KJUR.asn1.tsp.AbstractTSAAdapter=function(e){this.getTSTHex=function(e,t){throw"not implemented yet"}},KJUR.asn1.tsp.SimpleTSAAdapter=function(e){var t=KJUR,n=t.asn1.tsp,r=t.crypto.Util.hashHex;n.SimpleTSAAdapter.superclass.constructor.call(this),this.params=null,this.serial=0,this.getTSTHex=function(e,t){var i=r(e,t);this.params.econtent.content.messageImprint={alg:t,hash:i},this.params.econtent.content.serial={int:this.serial++};var o=Math.floor(1e9*Math.random());return this.params.econtent.content.nonce={int:o},new n.TimeStampToken(this.params).getContentInfoEncodedHex()},void 0!==e&&(this.params=e)},extendClass(KJUR.asn1.tsp.SimpleTSAAdapter,KJUR.asn1.tsp.AbstractTSAAdapter),KJUR.asn1.tsp.FixedTSAAdapter=function(e){var t=KJUR,n=t.asn1.tsp,r=t.crypto.Util.hashHex;n.FixedTSAAdapter.superclass.constructor.call(this),this.params=null,this.getTSTHex=function(e,t){var i=r(e,t);return this.params.econtent.content.messageImprint={alg:t,hash:i},new n.TimeStampToken(this.params).getContentInfoEncodedHex()},void 0!==e&&(this.params=e)},extendClass(KJUR.asn1.tsp.FixedTSAAdapter,KJUR.asn1.tsp.AbstractTSAAdapter),KJUR.asn1.tsp.TSPUtil=new function(){},KJUR.asn1.tsp.TSPUtil.newTimeStampToken=function(e){return new KJUR.asn1.tsp.TimeStampToken(e)},KJUR.asn1.tsp.TSPUtil.parseTimeStampReq=function(e){return(new KJUR.asn1.tsp.TSPParser).getTimeStampReq(e)},KJUR.asn1.tsp.TSPUtil.parseMessageImprint=function(e){return(new KJUR.asn1.tsp.TSPParser).getMessageImprint(e)},KJUR.asn1.tsp.TSPParser=function(){var e=new X509,t=ASN1HEX,n=t.getV,r=t.getTLV,i=t.getIdxbyList;t.getTLVbyListEx;var o=t.getChildIdx,l=["granted","grantedWithMods","rejection","waiting","revocationWarning","revocationNotification"],s={0:"badAlg",2:"badRequest",5:"badDataFormat",14:"timeNotAvailable",15:"unacceptedPolicy",16:"unacceptedExtension",17:"addInfoNotAvailable",25:"systemFailure"};this.getResponse=function(e){var t=o(e,0);if(1==t.length)return this.getPKIStatusInfo(r(e,t[0]));if(t.length>1){var n=this.getPKIStatusInfo(r(e,t[0])),i=r(e,t[1]),l=this.getToken(i);return l.statusinfo=n,l}},this.getToken=function(e){var t=(new KJUR.asn1.cms.CMSParser).getCMSSignedData(e);return this.setTSTInfo(t),t},this.setTSTInfo=function(e){var t=e.econtent;if("tstinfo"==t.type){var n=t.content.hex,r=this.getTSTInfo(n);t.content=r}},this.getTSTInfo=function(t){var i={},l=o(t,0),s=n(t,l[1]);i.policy=hextooid(s);var a=r(t,l[2]);i.messageImprint=this.getMessageImprint(a);var u=n(t,l[3]);i.serial={hex:u};var c=n(t,l[4]);i.genTime={str:hextoutf8(c)};var h=0;if(l.length>5&&"30"==t.substr(l[5],2)){var d=r(t,l[5]);i.accuracy=this.getAccuracy(d),h++}l.length>5+h&&"01"==t.substr(l[5+h],2)&&("ff"==n(t,l[5+h])&&(i.ordering=!0),h++);if(l.length>5+h&&"02"==t.substr(l[5+h],2)){var f=n(t,l[5+h]);i.nonce={hex:f},h++}if(l.length>5+h&&"a0"==t.substr(l[5+h],2)){var p=r(t,l[5+h]);p="30"+p.substr(2),pGeneralNames=e.getGeneralNames(p);var g=pGeneralNames[0].dn;i.tsa=g,h++}if(l.length>5+h&&"a1"==t.substr(l[5+h],2)){var w=r(t,l[5+h]);w="30"+w.substr(2);var m=e.getExtParamArray(w);i.ext=m,h++}return i},this.getAccuracy=function(e){for(var t={},r=o(e,0),i=0;i1&&"30"==e.substr(i[1],2)){var c=r(e,i[1]);t.statusstr=this.getPKIFreeText(c),s++}if(i.length>s&&"03"==e.substr(i[1+s],2)){var h=r(e,i[1+s]);t.failinfo=this.getPKIFailureInfo(h)}return t},this.getPKIFreeText=function(e){for(var n=[],r=o(e,0),i=0;i=t?e:new Array(t-e.length+1).join(n)+e};function bitstrtoint(e){if(e.length%2!=0)return-1;if(null==(e=e.toLowerCase()).match(/^[0-9a-f]+$/))return-1;try{var t=e.substr(0,2);if("00"==t)return parseInt(e.substr(2),16);var n=parseInt(t,16);if(n>7)return-1;var r=e.substr(2),i=parseInt(r,16).toString(2);"0"==i&&(i="00000000"),i=i.slice(0,0-n);var o=parseInt(i,2);return NaN==o?-1:o}catch(e){return-1}}function bitstrtobinstr(e){if("string"!=typeof e)return null;if(e.length%2!=0)return null;if(!e.match(/^[0-9a-f]+$/))return null;try{var t=parseInt(e.substr(0,2),16);if(t<0||7=0;r--)o+=i[r];return o}function aryval(e,t,n){if("object"==typeof e){t=String(t).split(".");for(var r=0;ri)throw"key is too short for SigAlg: keylen="+n+","+t;for(var o="0001",l="00"+r,s="",a=i-4-l.length,u=0;u=0)return!1;if(r.compareTo(n.ONE)<0||r.compareTo(o)>=0)return!1;var s=r.modInverse(o),a=e.multiply(s).mod(o),u=t.multiply(s).mod(o);return l.multiply(a).add(i.multiply(u)).getX().toBigInteger().mod(o).equals(t)},this.serializeSig=function(e,t){var n=e.toByteArraySigned(),r=t.toByteArraySigned(),i=[];return i.push(2),i.push(n.length),(i=i.concat(n)).push(2),i.push(r.length),(i=i.concat(r)).unshift(i.length),i.unshift(48),i},this.parseSig=function(e){var t;if(48!=e[0])throw new Error("Signature not a valid DERSequence");if(2!=e[t=2])throw new Error("First element in signature must be a DERInteger");var r=e.slice(t+2,t+2+e[t+1]);if(2!=e[t+=2+e[t+1]])throw new Error("Second element in signature must be a DERInteger");var i=e.slice(t+2,t+2+e[t+1]);return t+=2+e[t+1],{r:n.fromByteArrayUnsigned(r),s:n.fromByteArrayUnsigned(i)}},this.parseSigCompact=function(e){if(65!==e.length)throw"Signature has the wrong length";var t=e[0]-27;if(t<0||t>7)throw"Invalid signature type";var r=this.ecparams.n;return{r:n.fromByteArrayUnsigned(e.slice(1,33)).mod(r),s:n.fromByteArrayUnsigned(e.slice(33,65)).mod(r),i:t}},this.readPKCS5PrvKeyHex=function(e){if(!1===u(e))throw new Error("not ASN.1 hex string");var t,n,r;try{t=a(e,0,["[0]",0],"06"),n=a(e,0,[1],"04");try{r=a(e,0,["[1]",0],"03")}catch(e){}}catch(e){throw new Error("malformed PKCS#1/5 plain ECC private key")}if(this.curveName=l(t),void 0===this.curveName)throw"unsupported curve name";this.setNamedCurve(this.curveName),this.setPublicKeyHex(r),this.setPrivateKeyHex(n),this.isPublic=!1},this.readPKCS8PrvKeyHex=function(e){if(!1===u(e))throw new t("not ASN.1 hex string");var n,r,i;try{a(e,0,[1,0],"06"),n=a(e,0,[1,1],"06"),r=a(e,0,[2,0,1],"04");try{i=a(e,0,[2,0,"[1]",0],"03")}catch(e){}}catch(e){throw new t("malformed PKCS#8 plain ECC private key")}if(this.curveName=l(n),void 0===this.curveName)throw new t("unsupported curve name");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i),this.setPrivateKeyHex(r),this.isPublic=!1},this.readPKCS8PubKeyHex=function(e){if(!1===u(e))throw new t("not ASN.1 hex string");var n,r;try{a(e,0,[0,0],"06"),n=a(e,0,[0,1],"06"),r=a(e,0,[1],"03")}catch(e){throw new t("malformed PKCS#8 ECC public key")}if(this.curveName=l(n),null===this.curveName)throw new t("unsupported curve name");this.setNamedCurve(this.curveName),this.setPublicKeyHex(r)},this.readCertPubKeyHex=function(e,n){if(!1===u(e))throw new t("not ASN.1 hex string");var r,i;try{r=a(e,0,[0,5,0,1],"06"),i=a(e,0,[0,5,1],"03")}catch(e){throw new t("malformed X.509 certificate ECC public key")}if(this.curveName=l(r),null===this.curveName)throw new t("unsupported curve name");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i)},void 0!==e&&void 0!==e.curve&&(this.curveName=e.curve),void 0===this.curveName&&(this.curveName="secp256r1"),this.setNamedCurve(this.curveName),void 0!==e&&(void 0!==e.prv&&this.setPrivateKeyHex(e.prv),void 0!==e.pub&&this.setPublicKeyHex(e.pub))},KJUR.crypto.ECDSA.parseSigHex=function(e){var t=KJUR.crypto.ECDSA.parseSigHexInHexRS(e);return{r:new BigInteger(t.r,16),s:new BigInteger(t.s,16)}},KJUR.crypto.ECDSA.parseSigHexInHexRS=function(e){var t=ASN1HEX,n=t.getChildIdx,r=t.getV;if(t.checkStrictDER(e,0),"30"!=e.substr(0,2))throw new Error("signature is not a ASN.1 sequence");var i=n(e,0);if(2!=i.length)throw new Error("signature shall have two elements");var o=i[0],l=i[1];if("02"!=e.substr(o,2))throw new Error("1st item not ASN.1 integer");if("02"!=e.substr(l,2))throw new Error("2nd item not ASN.1 integer");return{r:r(e,o),s:r(e,l)}},KJUR.crypto.ECDSA.asn1SigToConcatSig=function(e){var t=KJUR.crypto.ECDSA.parseSigHexInHexRS(e),n=t.r,r=t.s;if(n.length>=130&&n.length<=134){if(n.length%2!=0)throw Error("unknown ECDSA sig r length error");if(r.length%2!=0)throw Error("unknown ECDSA sig s length error");"00"==n.substr(0,2)&&(n=n.substr(2)),"00"==r.substr(0,2)&&(r=r.substr(2));var i=Math.max(n.length,r.length);return(n=("000000"+n).slice(-i))+(r=("000000"+r).slice(-i))}if("00"==n.substr(0,2)&&n.length%32==2&&(n=n.substr(2)),"00"==r.substr(0,2)&&r.length%32==2&&(r=r.substr(2)),n.length%32==30&&(n="00"+n),r.length%32==30&&(r="00"+r),n.length%32!=0)throw Error("unknown ECDSA sig r length error");if(r.length%32!=0)throw Error("unknown ECDSA sig s length error");return n+r},KJUR.crypto.ECDSA.concatSigToASN1Sig=function(e){if(e.length%4!=0)throw Error("unknown ECDSA concatinated r-s sig length error");var t=e.substr(0,e.length/2),n=e.substr(e.length/2);return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(t,n)},KJUR.crypto.ECDSA.hexRSSigToASN1Sig=function(e,t){var n=new BigInteger(e,16),r=new BigInteger(t,16);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(n,r)},KJUR.crypto.ECDSA.biRSSigToASN1Sig=function(e,t){var n=KJUR.asn1,r=new n.DERInteger({bigint:e}),i=new n.DERInteger({bigint:t});return new n.DERSequence({array:[r,i]}).tohex()},KJUR.crypto.ECDSA.getName=function(e){return"2b8104001f"===e?"secp192k1":"2a8648ce3d030107"===e?"secp256r1":"2b8104000a"===e?"secp256k1":"2b81040021"===e?"secp224r1":"2b81040022"===e?"secp384r1":"2b81040023"===e?"secp521r1":-1!=="|secp256r1|NIST P-256|P-256|prime256v1|".indexOf(e)?"secp256r1":-1!=="|secp256k1|".indexOf(e)?"secp256k1":-1!=="|secp224r1|NIST P-224|P-224|".indexOf(e)?"secp224r1":-1!=="|secp384r1|NIST P-384|P-384|".indexOf(e)?"secp384r1":-1!=="|secp521r1|NIST P-521|P-521|".indexOf(e)?"secp521r1":null},void 0!==KJUR&&KJUR||(KJUR={}),void 0!==KJUR.crypto&&KJUR.crypto||(KJUR.crypto={}),KJUR.crypto.ECParameterDB=new function(){var e={},t={};function n(e){return new BigInteger(e,16)}this.getByName=function(n){var r=n;if(void 0!==t[r]&&(r=t[n]),void 0!==e[r])return e[r];throw"unregistered EC curve name: "+r},this.regist=function(r,i,o,l,s,a,u,c,h,d,f,p){e[r]={};var g=n(o),w=n(l),m=n(s),v=n(a),y=n(u),b=new ECCurveFp(g,w,m),S=b.decodePointHex("04"+c+h);e[r].name=r,e[r].keylen=i,e[r].keycharlen=2*Math.ceil(i/8),e[r].curve=b,e[r].G=S,e[r].n=v,e[r].h=y,e[r].oid=f,e[r].info=p;for(var $=0;$1?new BigInteger(r,16):null,u=new BigInteger(i,16),this.setPrivate(o,l,s,a,u)},this.setPublic=function(e,t,n,r){this.isPublic=!0,this.p=e,this.q=t,this.g=n,this.y=r,this.x=null},this.setPublicHex=function(e,t,n,r){var i,o,l,s;i=new BigInteger(e,16),o=new BigInteger(t,16),l=new BigInteger(n,16),s=new BigInteger(r,16),this.setPublic(i,o,l,s)},this.signWithMessageHash=function(e){var t=this.p,n=this.q,r=this.g;this.y;var i=this.x,o=KJUR.crypto.Util.getRandomBigIntegerMinToMax(BigInteger.ONE.add(BigInteger.ONE),n.subtract(BigInteger.ONE)),l=new BigInteger(e.substr(0,n.bitLength()/4),16),s=r.modPow(o,t).mod(n),a=o.modInverse(n).multiply(l.add(i.multiply(s))).mod(n);return KJUR.asn1.ASN1Util.jsonToASN1HEX({seq:[{int:{bigint:s}},{int:{bigint:a}}]})},this.verifyWithMessageHash=function(e,t){var n=this.p,r=this.q,i=this.g,o=this.y,l=this.parseASN1Signature(t),s=l[0],a=l[1],u=new BigInteger(e.substr(0,r.bitLength()/4),16);if(BigInteger.ZERO.compareTo(s)>0||s.compareTo(r)>0)throw"invalid DSA signature";if(BigInteger.ZERO.compareTo(a)>=0||a.compareTo(r)>0)throw"invalid DSA signature";var c=a.modInverse(r),h=u.multiply(c).mod(r),d=s.multiply(c).mod(r);return 0==i.modPow(h,n).multiply(o.modPow(d,n)).mod(n).mod(r).compareTo(s)},this.parseASN1Signature=function(e){try{return[new r(t(e,0,[0],"02"),16),new r(t(e,0,[1],"02"),16)]}catch(e){throw new Error("malformed ASN.1 DSA signature")}},this.readPKCS5PrvKeyHex=function(e){var r,i,o,l,s;if(!1===n(e))throw new Error("not ASN.1 hex string");try{r=t(e,0,[1],"02"),i=t(e,0,[2],"02"),o=t(e,0,[3],"02"),l=t(e,0,[4],"02"),s=t(e,0,[5],"02")}catch(e){throw new Error("malformed PKCS#1/5 plain DSA private key")}this.setPrivateHex(r,i,o,l,s)},this.readPKCS8PrvKeyHex=function(e){var r,i,o,l;if(!1===n(e))throw new Error("not ASN.1 hex string");try{r=t(e,0,[1,1,0],"02"),i=t(e,0,[1,1,1],"02"),o=t(e,0,[1,1,2],"02"),l=t(e,0,[2,0],"02")}catch(e){throw new Error("malformed PKCS#8 plain DSA private key")}this.setPrivateHex(r,i,o,null,l)},this.readPKCS8PubKeyHex=function(e){var r,i,o,l;if(!1===n(e))throw new Error("not ASN.1 hex string");try{r=t(e,0,[0,1,0],"02"),i=t(e,0,[0,1,1],"02"),o=t(e,0,[0,1,2],"02"),l=t(e,0,[1,0],"02")}catch(e){throw new Error("malformed PKCS#8 DSA public key")}this.setPublicHex(r,i,o,l)},this.readCertPubKeyHex=function(e,r){var i,o,l,s;if(!1===n(e))throw new Error("not ASN.1 hex string");try{i=t(e,0,[0,5,0,1,0],"02"),o=t(e,0,[0,5,0,1,1],"02"),l=t(e,0,[0,5,0,1,2],"02"),s=t(e,0,[0,5,1,0],"02")}catch(e){throw new Error("malformed X.509 certificate DSA public key")}this.setPublicHex(i,o,l,s)}};var KEYUTIL=function(){var e=function(e,n,r){return t(CryptoJS.AES,e,n,r)},t=function(e,t,n,r){var i=CryptoJS.enc.Hex.parse(t),o=CryptoJS.enc.Hex.parse(n),l=CryptoJS.enc.Hex.parse(r),s={};s.key=o,s.iv=l,s.ciphertext=i;var a=e.decrypt(s,o,{iv:l});return CryptoJS.enc.Hex.stringify(a)},n=function(e,t,n){return r(CryptoJS.AES,e,t,n)},r=function(e,t,n,r){var i=CryptoJS.enc.Hex.parse(t),o=CryptoJS.enc.Hex.parse(n),l=CryptoJS.enc.Hex.parse(r),s=e.encrypt(i,o,{iv:l}),a=CryptoJS.enc.Hex.parse(s.toString());return CryptoJS.enc.Base64.stringify(a)},i={"AES-256-CBC":{proc:e,eproc:n,keylen:32,ivlen:16},"AES-192-CBC":{proc:e,eproc:n,keylen:24,ivlen:16},"AES-128-CBC":{proc:e,eproc:n,keylen:16,ivlen:16},"DES-EDE3-CBC":{proc:function(e,n,r){return t(CryptoJS.TripleDES,e,n,r)},eproc:function(e,t,n){return r(CryptoJS.TripleDES,e,t,n)},keylen:24,ivlen:8},"DES-CBC":{proc:function(e,n,r){return t(CryptoJS.DES,e,n,r)},eproc:function(e,t,n){return r(CryptoJS.DES,e,t,n)},keylen:8,ivlen:8}},o=function(e){var t={},n=e.match(new RegExp("DEK-Info: ([^,]+),([0-9A-Fa-f]+)","m"));n&&(t.cipher=n[1],t.ivsalt=n[2]);var r=e.match(new RegExp("-----BEGIN ([A-Z]+) PRIVATE KEY-----"));r&&(t.type=r[1]);var i=-1,o=0;-1!=e.indexOf("\r\n\r\n")&&(i=e.indexOf("\r\n\r\n"),o=2),-1!=e.indexOf("\n\n")&&(i=e.indexOf("\n\n"),o=1);var l=e.indexOf("-----END");if(-1!=i&&-1!=l){var s=e.substring(i+2*o,l-o);s=s.replace(/\s+/g,""),t.data=s}return t},l=function(e,t,n){for(var r=n.substring(0,16),o=CryptoJS.enc.Hex.parse(r),l=CryptoJS.enc.Utf8.parse(t),s=i[e].keylen+i[e].ivlen,a="",u=null;;){var c=CryptoJS.algo.MD5.create();if(null!=u&&c.update(u),c.update(l),c.update(o),u=c.finalize(),(a+=CryptoJS.enc.Hex.stringify(u)).length>=2*s)break}var h={};return h.keyhex=a.substr(0,2*i[e].keylen),h.ivhex=a.substr(2*i[e].keylen,2*i[e].ivlen),h},s=function(e,t,n,r){var o=CryptoJS.enc.Base64.parse(e),l=CryptoJS.enc.Hex.stringify(o);return(0,i[t].proc)(l,n,r)};return{version:"1.0.0",parsePKCS5PEM:function(e){return o(e)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(e,t,n){return l(e,t,n)},decryptKeyB64:function(e,t,n,r){return s(e,t,n,r)},getDecryptedKeyHex:function(e,t){var n=o(e),r=n.cipher,i=n.ivsalt,a=n.data,u=l(r,t,i).keyhex;return s(a,r,u,i)},getEncryptedPKCS5PEMFromPrvKeyHex:function(e,t,n,r,o){var s="";if(void 0!==r&&null!=r||(r="AES-256-CBC"),void 0===i[r])throw new Error("KEYUTIL unsupported algorithm: "+r);if(void 0===o||null==o){var a=function(e){var t=CryptoJS.lib.WordArray.random(e);return CryptoJS.enc.Hex.stringify(t)}(i[r].ivlen);o=a.toUpperCase()}var u=function(e,t,n,r){return(0,i[t].eproc)(e,n,r)}(t,r,l(r,n,o).keyhex,o);s="-----BEGIN "+e+" PRIVATE KEY-----\r\n";return s+="Proc-Type: 4,ENCRYPTED\r\n",s+="DEK-Info: "+r+","+o+"\r\n",s+="\r\n",s+=u.replace(/(.{64})/g,"$1\r\n"),s+="\r\n-----END "+e+" PRIVATE KEY-----\r\n"},parseHexOfEncryptedPKCS8:function(e){var t=ASN1HEX,n=t.getChildIdx,r=t.getV,i={},o=n(e,0);if(2!=o.length)throw new Error("malformed format: SEQUENCE(0).items != 2: "+o.length);i.ciphertext=r(e,o[1]);var l=n(e,o[0]);if(2!=l.length)throw new Error("malformed format: SEQUENCE(0.0).items != 2: "+l.length);if("2a864886f70d01050d"!=r(e,l[0]))throw new Error("this only supports pkcs5PBES2");var s=n(e,l[1]);if(2!=l.length)throw new Error("malformed format: SEQUENCE(0.0.1).items != 2: "+s.length);var a=n(e,s[1]);if(2!=a.length)throw new Error("malformed format: SEQUENCE(0.0.1.1).items != 2: "+a.length);if("2a864886f70d0307"!=r(e,a[0]))throw"this only supports TripleDES";i.encryptionSchemeAlg="TripleDES",i.encryptionSchemeIV=r(e,a[1]);var u=n(e,s[0]);if(2!=u.length)throw new Error("malformed format: SEQUENCE(0.0.1.0).items != 2: "+u.length);if("2a864886f70d01050c"!=r(e,u[0]))throw new Error("this only supports pkcs5PBKDF2");var c=n(e,u[1]);if(c.length<2)throw new Error("malformed format: SEQUENCE(0.0.1.0.1).items < 2: "+c.length);i.pbkdf2Salt=r(e,c[0]);var h=r(e,c[1]);try{i.pbkdf2Iter=parseInt(h,16)}catch(e){throw new Error("malformed format pbkdf2Iter: "+h)}return i},getPBKDF2KeyHexFromParam:function(e,t){var n=CryptoJS.enc.Hex.parse(e.pbkdf2Salt),r=e.pbkdf2Iter,i=CryptoJS.PBKDF2(t,n,{keySize:6,iterations:r});return CryptoJS.enc.Hex.stringify(i)},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function(e,t){var n=pemtohex(e,"ENCRYPTED PRIVATE KEY"),r=this.parseHexOfEncryptedPKCS8(n),i=KEYUTIL.getPBKDF2KeyHexFromParam(r,t),o={};o.ciphertext=CryptoJS.enc.Hex.parse(r.ciphertext);var l=CryptoJS.enc.Hex.parse(i),s=CryptoJS.enc.Hex.parse(r.encryptionSchemeIV),a=CryptoJS.TripleDES.decrypt(o,l,{iv:s});return CryptoJS.enc.Hex.stringify(a)},getKeyFromEncryptedPKCS8PEM:function(e,t){var n=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(e,t);return this.getKeyFromPlainPrivatePKCS8Hex(n)},parsePlainPrivatePKCS8Hex:function(e){var t=ASN1HEX,n=t.getChildIdx,r=t.getV,i={algparam:null};if("30"!=e.substr(0,2))throw new Error("malformed plain PKCS8 private key(code:001)");var o=n(e,0);if(o.length<3)throw new Error("malformed plain PKCS8 private key(code:002)");if("30"!=e.substr(o[1],2))throw new Error("malformed PKCS8 private key(code:003)");var l=n(e,o[1]);if(2!=l.length)throw new Error("malformed PKCS8 private key(code:004)");if("06"!=e.substr(l[0],2))throw new Error("malformed PKCS8 private key(code:005)");if(i.algoid=r(e,l[0]),"06"==e.substr(l[1],2)&&(i.algparam=r(e,l[1])),"04"!=e.substr(o[2],2))throw new Error("malformed PKCS8 private key(code:006)");return i.keyidx=t.getVidx(e,o[2]),i},getKeyFromPlainPrivatePKCS8PEM:function(e){var t=pemtohex(e,"PRIVATE KEY");return this.getKeyFromPlainPrivatePKCS8Hex(t)},getKeyFromPlainPrivatePKCS8Hex:function(e){var t,n=this.parsePlainPrivatePKCS8Hex(e);if("2a864886f70d010101"==n.algoid)t=new RSAKey;else if("2a8648ce380401"==n.algoid)t=new KJUR.crypto.DSA;else{if("2a8648ce3d0201"!=n.algoid)throw new Error("unsupported private key algorithm");t=new KJUR.crypto.ECDSA}return t.readPKCS8PrvKeyHex(e),t},_getKeyFromPublicPKCS8Hex:function(e){var t,n=ASN1HEX.getVbyList(e,0,[0,0],"06");if("2a864886f70d010101"===n)t=new RSAKey;else if("2a8648ce380401"===n)t=new KJUR.crypto.DSA;else{if("2a8648ce3d0201"!==n)throw new Error("unsupported PKCS#8 public key hex");t=new KJUR.crypto.ECDSA}return t.readPKCS8PubKeyHex(e),t},parsePublicRawRSAKeyHex:function(e){var t=ASN1HEX,n=t.getChildIdx,r=t.getV,i={};if("30"!=e.substr(0,2))throw new Error("malformed RSA key(code:001)");var o=n(e,0);if(2!=o.length)throw new Error("malformed RSA key(code:002)");if("02"!=e.substr(o[0],2))throw new Error("malformed RSA key(code:003)");if(i.n=r(e,o[0]),"02"!=e.substr(o[1],2))throw new Error("malformed RSA key(code:004)");return i.e=r(e,o[1]),i},parsePublicPKCS8Hex:function(e){var t=ASN1HEX,n=t.getChildIdx,r=t.getV,i={algparam:null},o=n(e,0);if(2!=o.length)throw new Error("outer DERSequence shall have 2 elements: "+o.length);var l=o[0];if("30"!=e.substr(l,2))throw new Error("malformed PKCS8 public key(code:001)");var s=n(e,l);if(2!=s.length)throw new Error("malformed PKCS8 public key(code:002)");if("06"!=e.substr(s[0],2))throw new Error("malformed PKCS8 public key(code:003)");if(i.algoid=r(e,s[0]),"06"==e.substr(s[1],2)?i.algparam=r(e,s[1]):"30"==e.substr(s[1],2)&&(i.algparam={},i.algparam.p=t.getVbyList(e,s[1],[0],"02"),i.algparam.q=t.getVbyList(e,s[1],[1],"02"),i.algparam.g=t.getVbyList(e,s[1],[2],"02")),"03"!=e.substr(o[1],2))throw new Error("malformed PKCS8 public key(code:004)");return i.key=r(e,o[1]).substr(2),i}}}();function _zeroPaddingOfSignature(e,t){for(var n="",r=t/4-e.length,i=0;i>24,(16711680&i)>>16,(65280&i)>>8,255&i])))),i+=1;return r}function _rsasign_getAlgNameAndHashFromHexDisgestInfo(e){for(var t in KJUR.crypto.Util.DIGESTINFOHEAD){var n=KJUR.crypto.Util.DIGESTINFOHEAD[t],r=n.length;if(e.substring(0,r)==n)return[t,e.substring(r)]}return[]}function X509(e){var t=ASN1HEX,n=t.getChildIdx,r=t.getV;t.dump;var i,o=t.parse,l=t.getTLV,s=t.getVbyList,a=t.getVbyListEx,u=t.getTLVbyList,c=t.getTLVbyListEx,h=t.getIdxbyList,d=t.getIdxbyListEx,f=t.getVidx,p=t.getInt,g=t.oidname,w=t.hextooidstr,m=pemtohex,v=Error;try{i=KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV}catch(e){}this.HEX2STAG={"0c":"utf8",13:"prn",16:"ia5","1a":"vis","1e":"bmp"},this.hex=null,this.version=0,this.foffset=0,this.aExtInfo=null,this.getVersion=function(){if(null===this.hex||0!==this.version)return this.version;var e=u(this.hex,0,[0,0]);if("a0"==e.substr(0,2)){var t=u(e,0,[0]),n=p(t,0);if(n<0||20?t:void 0}catch(e){return}},this._asn1ToNoticeRef=function(e){try{for(var t={},n=aryval(e,"seq"),r=0;r0?t:void 0}catch(e){return}},this._asn1ToNoticeNum=function(e){try{for(var t=aryval(e,"seq"),n=[],r=0;r1){var s=l(e,o[1]),a=this.getGeneralName(s);null!=a.uri&&(i.uri=a.uri)}if(o.length>2){var u=l(e,o[2]);"0101ff"==u&&(i.reqauth=!0),"010100"==u&&(i.reqauth=!1)}return i},this.getExtSubjectDirectoryAttributes=function(e,t){if(void 0===e&&void 0===t){var n=this.getExtInfo("subjectDirectoryAttributes");if(void 0===n)return;e=l(this.hex,n.vidx),t=n.critical}var r={extname:"subjectDirectoryAttributes"};t&&(r.critical=!0);try{for(var i=o(e),s=[],a=0;a0&&(t.ext=this.getExtParamArray()),t.sighex=this.getSignatureValueHex(),1==e.tbshex&&(t.tbshex=u(this.hex,0,[0])),1==e.nodnarray&&(delete t.issuer.array,delete t.subject.array),t},this.getExtParamArray=function(e){null==e&&(-1!=d(this.hex,0,[0,"[3]"])&&(e=c(this.hex,0,[0,"[3]",0],"30")));for(var t=[],r=n(e,0),i=0;i2&&"04"===g.substr(p[1],2)))throw new Error("unsupported PKCS#1/5 hexadecimal key");(D=new l).readPKCS5PrvKeyHex(g)}return D}if("pkcs8prv"===n)return D=c.getKeyFromPlainPrivatePKCS8Hex(e);if("pkcs8pub"===n)return c._getKeyFromPublicPKCS8Hex(e);if("x509pub"===n)return X509.getPublicKeyFromCertHex(e);if(-1!=e.indexOf("-END CERTIFICATE-",0)||-1!=e.indexOf("-END X509 CERTIFICATE-",0)||-1!=e.indexOf("-END TRUSTED CERTIFICATE-",0))return X509.getPublicKeyFromCertPEM(e);if(-1!=e.indexOf("-END PUBLIC KEY-")){var m=pemtohex(e,"PUBLIC KEY");return c._getKeyFromPublicPKCS8Hex(m)}if(-1!=e.indexOf("-END RSA PRIVATE KEY-")&&-1==e.indexOf("4,ENCRYPTED")){var v=u(e,"RSA PRIVATE KEY");return c.getKey(v,null,"pkcs5prv")}if(-1!=e.indexOf("-END DSA PRIVATE KEY-")&&-1==e.indexOf("4,ENCRYPTED")){var y=i(_=u(e,"DSA PRIVATE KEY"),0,[1],"02"),b=i(_,0,[2],"02"),S=i(_,0,[3],"02"),$=i(_,0,[4],"02"),C=i(_,0,[5],"02");return(D=new s).setPrivate(new BigInteger(y,16),new BigInteger(b,16),new BigInteger(S,16),new BigInteger($,16),new BigInteger(C,16)),D}if(-1!=e.indexOf("-END EC PRIVATE KEY-")&&-1==e.indexOf("4,ENCRYPTED")){v=u(e,"EC PRIVATE KEY");return c.getKey(v,null,"pkcs5prv")}if(-1!=e.indexOf("-END PRIVATE KEY-"))return c.getKeyFromPlainPrivatePKCS8PEM(e);if(-1!=e.indexOf("-END RSA PRIVATE KEY-")&&-1!=e.indexOf("4,ENCRYPTED")){var I=c.getDecryptedKeyHex(e,t),x=new RSAKey;return x.readPKCS5PrvKeyHex(I),x}if(-1!=e.indexOf("-END EC PRIVATE KEY-")&&-1!=e.indexOf("4,ENCRYPTED")){var E,D=i(_=c.getDecryptedKeyHex(e,t),0,[1],"04"),A=i(_,0,[2,0],"06"),k=i(_,0,[3,0],"03").substr(2);if(void 0===KJUR.crypto.OID.oidhex2name[A])throw new Error("undefined OID(hex) in KJUR.crypto.OID: "+A);return(E=new l({curve:KJUR.crypto.OID.oidhex2name[A]})).setPublicKeyHex(k),E.setPrivateKeyHex(D),E.isPublic=!1,E}if(-1!=e.indexOf("-END DSA PRIVATE KEY-")&&-1!=e.indexOf("4,ENCRYPTED")){var _;y=i(_=c.getDecryptedKeyHex(e,t),0,[1],"02"),b=i(_,0,[2],"02"),S=i(_,0,[3],"02"),$=i(_,0,[4],"02"),C=i(_,0,[5],"02");return(D=new s).setPrivate(new BigInteger(y,16),new BigInteger(b,16),new BigInteger(S,16),new BigInteger($,16),new BigInteger(C,16)),D}if(-1!=e.indexOf("-END ENCRYPTED PRIVATE KEY-"))return c.getKeyFromEncryptedPKCS8PEM(e,t);throw new Error("not supported argument")},KEYUTIL.generateKeypair=function(e,t){if("RSA"==e){var n=t;(l=new RSAKey).generate(n,"10001"),l.isPrivate=!0,l.isPublic=!0;var r=new RSAKey,i=l.n.toString(16),o=l.e.toString(16);return r.setPublic(i,o),r.isPrivate=!1,r.isPublic=!0,(s={}).prvKeyObj=l,s.pubKeyObj=r,s}if("EC"==e){var l,s,a=t,u=new KJUR.crypto.ECDSA({curve:a}).generateKeyPairHex();return(l=new KJUR.crypto.ECDSA({curve:a})).setPublicKeyHex(u.ecpubhex),l.setPrivateKeyHex(u.ecprvhex),l.isPrivate=!0,l.isPublic=!1,(r=new KJUR.crypto.ECDSA({curve:a})).setPublicKeyHex(u.ecpubhex),r.isPrivate=!1,r.isPublic=!0,(s={}).prvKeyObj=l,s.pubKeyObj=r,s}throw new Error("unknown algorithm: "+e)},KEYUTIL.getPEM=function(e,t,n,r,i,o){var l=KJUR,s=l.asn1,a=s.DERObjectIdentifier,u=s.DERInteger,c=s.ASN1Util.newObject,h=s.x509.SubjectPublicKeyInfo,d=l.crypto,f=d.DSA,p=d.ECDSA,g=RSAKey;function w(e){return c({seq:[{int:0},{int:{bigint:e.n}},{int:e.e},{int:{bigint:e.d}},{int:{bigint:e.p}},{int:{bigint:e.q}},{int:{bigint:e.dmp1}},{int:{bigint:e.dmq1}},{int:{bigint:e.coeff}}]})}function m(e){return c({seq:[{int:1},{octstr:{hex:e.prvKeyHex}},{tag:["a0",!0,{oid:{name:e.curveName}}]},{tag:["a1",!0,{bitstr:{hex:"00"+e.pubKeyHex}}]}]})}function v(e){return c({seq:[{int:0},{int:{bigint:e.p}},{int:{bigint:e.q}},{int:{bigint:e.g}},{int:{bigint:e.y}},{int:{bigint:e.x}}]})}if((void 0!==g&&e instanceof g||void 0!==f&&e instanceof f||void 0!==p&&e instanceof p)&&1==e.isPublic&&(void 0===t||"PKCS8PUB"==t))return hextopem($=new h(e).tohex(),"PUBLIC KEY");if("PKCS1PRV"==t&&void 0!==g&&e instanceof g&&(void 0===n||null==n)&&1==e.isPrivate)return hextopem($=w(e).tohex(),"RSA PRIVATE KEY");if("PKCS1PRV"==t&&void 0!==p&&e instanceof p&&(void 0===n||null==n)&&1==e.isPrivate){var y=new a({name:e.curveName}).tohex(),b=m(e).tohex(),S="";return S+=hextopem(y,"EC PARAMETERS"),S+=hextopem(b,"EC PRIVATE KEY")}if("PKCS1PRV"==t&&void 0!==f&&e instanceof f&&(void 0===n||null==n)&&1==e.isPrivate)return hextopem($=v(e).tohex(),"DSA PRIVATE KEY");if("PKCS5PRV"==t&&void 0!==g&&e instanceof g&&void 0!==n&&null!=n&&1==e.isPrivate){var $=w(e).tohex();return void 0===r&&(r="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("RSA",$,n,r,o)}if("PKCS5PRV"==t&&void 0!==p&&e instanceof p&&void 0!==n&&null!=n&&1==e.isPrivate){$=m(e).tohex();return void 0===r&&(r="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("EC",$,n,r,o)}if("PKCS5PRV"==t&&void 0!==f&&e instanceof f&&void 0!==n&&null!=n&&1==e.isPrivate){$=v(e).tohex();return void 0===r&&(r="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("DSA",$,n,r,o)}var C=function(e,t){var n=I(e,t);return new c({seq:[{seq:[{oid:{name:"pkcs5PBES2"}},{seq:[{seq:[{oid:{name:"pkcs5PBKDF2"}},{seq:[{octstr:{hex:n.pbkdf2Salt}},{int:n.pbkdf2Iter}]}]},{seq:[{oid:{name:"des-EDE3-CBC"}},{octstr:{hex:n.encryptionSchemeIV}}]}]}]},{octstr:{hex:n.ciphertext}}]}).tohex()},I=function(e,t){var n=CryptoJS.lib.WordArray.random(8),r=CryptoJS.lib.WordArray.random(8),i=CryptoJS.PBKDF2(t,n,{keySize:6,iterations:100}),o=CryptoJS.enc.Hex.parse(e),l=CryptoJS.TripleDES.encrypt(o,i,{iv:r})+"",s={};return s.ciphertext=l,s.pbkdf2Salt=CryptoJS.enc.Hex.stringify(n),s.pbkdf2Iter=100,s.encryptionSchemeAlg="DES-EDE3-CBC",s.encryptionSchemeIV=CryptoJS.enc.Hex.stringify(r),s};if("PKCS8PRV"==t&&null!=g&&e instanceof g&&1==e.isPrivate){var x=w(e).tohex();$=c({seq:[{int:0},{seq:[{oid:{name:"rsaEncryption"}},{null:!0}]},{octstr:{hex:x}}]}).tohex();return void 0===n||null==n?hextopem($,"PRIVATE KEY"):hextopem(b=C($,n),"ENCRYPTED PRIVATE KEY")}if("PKCS8PRV"==t&&void 0!==p&&e instanceof p&&1==e.isPrivate){var E={seq:[{int:1},{octstr:{hex:e.prvKeyHex}}]};"string"==typeof e.pubKeyHex&&E.seq.push({tag:["a1",!0,{bitstr:{hex:"00"+e.pubKeyHex}}]});x=new c(E).tohex(),$=c({seq:[{int:0},{seq:[{oid:{name:"ecPublicKey"}},{oid:{name:e.curveName}}]},{octstr:{hex:x}}]}).tohex();return void 0===n||null==n?hextopem($,"PRIVATE KEY"):hextopem(b=C($,n),"ENCRYPTED PRIVATE KEY")}if("PKCS8PRV"==t&&void 0!==f&&e instanceof f&&1==e.isPrivate){x=new u({bigint:e.x}).tohex(),$=c({seq:[{int:0},{seq:[{oid:{name:"dsa"}},{seq:[{int:{bigint:e.p}},{int:{bigint:e.q}},{int:{bigint:e.g}}]}]},{octstr:{hex:x}}]}).tohex();return void 0===n||null==n?hextopem($,"PRIVATE KEY"):hextopem(b=C($,n),"ENCRYPTED PRIVATE KEY")}throw new Error("unsupported object nor format")},KEYUTIL.getKeyFromCSRPEM=function(e){var t=pemtohex(e,"CERTIFICATE REQUEST");return KEYUTIL.getKeyFromCSRHex(t)},KEYUTIL.getKeyFromCSRHex=function(e){var t=KEYUTIL.parseCSRHex(e);return KEYUTIL.getKey(t.p8pubkeyhex,null,"pkcs8pub")},KEYUTIL.parseCSRHex=function(e){var t=ASN1HEX,n=t.getChildIdx,r=t.getTLV,i={},o=e;if("30"!=o.substr(0,2))throw new Error("malformed CSR(code:001)");var l=n(o,0);if(l.length<1)throw new Error("malformed CSR(code:002)");if("30"!=o.substr(l[0],2))throw new Error("malformed CSR(code:003)");var s=n(o,l[0]);if(s.length<3)throw new Error("malformed CSR(code:004)");return i.p8pubkeyhex=r(o,s[2]),i},KEYUTIL.getKeyID=function(e){var t=KEYUTIL,n=ASN1HEX;"string"==typeof e&&-1!=e.indexOf("BEGIN ")&&(e=t.getKey(e));var r=pemtohex(t.getPEM(e)),i=n.getIdxbyList(r,0,[1]),o=n.getV(r,i).substring(2);return KJUR.crypto.Util.hashHex(o,"sha1")},KEYUTIL.getJWK=function(e,t,n,r,i){var o,l,s={},a=KJUR.crypto.Util.hashHex;if("string"==typeof e)o=KEYUTIL.getKey(e),-1!=e.indexOf("CERTIFICATE")&&(l=pemtohex(e));else{if("object"!=typeof e)throw new Error("unsupported keyinfo type");e instanceof X509?(o=e.getPublicKey(),l=e.hex):o=e}if(o instanceof RSAKey&&o.isPrivate)s.kty="RSA",s.n=hextob64u(o.n.toString(16)),s.e=hextob64u(o.e.toString(16)),s.d=hextob64u(o.d.toString(16)),s.p=hextob64u(o.p.toString(16)),s.q=hextob64u(o.q.toString(16)),s.dp=hextob64u(o.dmp1.toString(16)),s.dq=hextob64u(o.dmq1.toString(16)),s.qi=hextob64u(o.coeff.toString(16));else if(o instanceof RSAKey&&o.isPublic)s.kty="RSA",s.n=hextob64u(o.n.toString(16)),s.e=hextob64u(o.e.toString(16));else if(o instanceof KJUR.crypto.ECDSA&&o.isPrivate){if("P-256"!==(c=o.getShortNISTPCurveName())&&"P-384"!==c&&"P-521"!==c)throw new Error("unsupported curve name for JWT: "+c);var u=o.getPublicKeyXYHex();s.kty="EC",s.crv=c,s.x=hextob64u(u.x),s.y=hextob64u(u.y),s.d=hextob64u(o.prvKeyHex)}else if(o instanceof KJUR.crypto.ECDSA&&o.isPublic){var c;if("P-256"!==(c=o.getShortNISTPCurveName())&&"P-384"!==c&&"P-521"!==c)throw new Error("unsupported curve name for JWT: "+c);u=o.getPublicKeyXYHex();s.kty="EC",s.crv=c,s.x=hextob64u(u.x),s.y=hextob64u(u.y)}if(null==s.kty)throw new Error("unsupported keyinfo");return o.isPrivate||1==t||(s.kid=KJUR.jws.JWS.getJWKthumbprint(s)),null!=l&&1!=n&&(s.x5c=[hex2b64(l)]),null!=l&&1!=r&&(s.x5t=b64tob64u(hex2b64(a(l,"sha1")))),null!=l&&1!=i&&(s["x5t#S256"]=b64tob64u(hex2b64(a(l,"sha256")))),s},KEYUTIL.getJWKFromKey=function(e){return KEYUTIL.getJWK(e,!0,!0,!0,!0)},RSAKey.getPosArrayOfChildrenFromHex=function(e){return ASN1HEX.getChildIdx(e,0)},RSAKey.getHexValueArrayOfChildrenFromHex=function(e){var t,n=ASN1HEX.getV,r=n(e,(t=RSAKey.getPosArrayOfChildrenFromHex(e))[0]),i=n(e,t[1]),o=n(e,t[2]),l=n(e,t[3]),s=n(e,t[4]),a=n(e,t[5]),u=n(e,t[6]),c=n(e,t[7]),h=n(e,t[8]);return(t=new Array).push(r,i,o,l,s,a,u,c,h),t},RSAKey.prototype.readPrivateKeyFromPEMString=function(e){var t=pemtohex(e),n=RSAKey.getHexValueArrayOfChildrenFromHex(t);this.setPrivateEx(n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8])},RSAKey.prototype.readPKCS5PrvKeyHex=function(e){var t=RSAKey.getHexValueArrayOfChildrenFromHex(e);this.setPrivateEx(t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},RSAKey.prototype.readPKCS8PrvKeyHex=function(e){var t,n,r,i,o,l,s,a,u=ASN1HEX,c=u.getVbyListEx;if(!1===u.isASN1HEX(e))throw new Error("not ASN.1 hex string");try{t=c(e,0,[2,0,1],"02"),n=c(e,0,[2,0,2],"02"),r=c(e,0,[2,0,3],"02"),i=c(e,0,[2,0,4],"02"),o=c(e,0,[2,0,5],"02"),l=c(e,0,[2,0,6],"02"),s=c(e,0,[2,0,7],"02"),a=c(e,0,[2,0,8],"02")}catch(e){throw new Error("malformed PKCS#8 plain RSA private key")}this.setPrivateEx(t,n,r,i,o,l,s,a)},RSAKey.prototype.readPKCS5PubKeyHex=function(e){var t=ASN1HEX,n=t.getV;if(!1===t.isASN1HEX(e))throw new Error("keyHex is not ASN.1 hex string");var r=t.getChildIdx(e,0);if(2!==r.length||"02"!==e.substr(r[0],2)||"02"!==e.substr(r[1],2))throw new Error("wrong hex for PKCS#5 public key");var i=n(e,r[0]),o=n(e,r[1]);this.setPublic(i,o)},RSAKey.prototype.readPKCS8PubKeyHex=function(e){var t=ASN1HEX;if(!1===t.isASN1HEX(e))throw new Error("not ASN.1 hex string");if("06092a864886f70d010101"!==t.getTLVbyListEx(e,0,[0,0]))throw new Error("not PKCS8 RSA public key");var n=t.getTLVbyListEx(e,0,[1,0]);this.readPKCS5PubKeyHex(n)},RSAKey.prototype.readCertPubKeyHex=function(e,t){var n,r;(n=new X509).readCertHex(e),r=n.getPublicKeyHex(),this.readPKCS8PubKeyHex(r)},RSAKey.prototype.sign=function(e,t){var n=function(e){return KJUR.crypto.Util.hashString(e,t)}(e);return this.signWithMessageHash(n,t)},RSAKey.prototype.signWithMessageHash=function(e,t){var n=parseBigInt(KJUR.crypto.Util.getPaddedDigestInfoHex(e,t,this.n.bitLength()),16);return _zeroPaddingOfSignature(this.doPrivate(n).toString(16),this.n.bitLength())},RSAKey.prototype.signPSS=function(e,t,n){var r,i=(r=rstrtohex(e),KJUR.crypto.Util.hashHex(r,t));return void 0===n&&(n=-1),this.signWithMessageHashPSS(i,t,n)},RSAKey.prototype.signWithMessageHashPSS=function(e,t,n){var r,i=hextorstr(e),o=i.length,l=this.n.bitLength()-1,s=Math.ceil(l/8),a=function(e){return KJUR.crypto.Util.hashHex(e,t)};if(-1===n||void 0===n)n=o;else if(-2===n)n=s-o-2;else if(n<-2)throw new Error("invalid salt length");if(s0&&(u=new Array(n),(new SecureRandom).nextBytes(u),u=String.fromCharCode.apply(String,u));var c=hextorstr(a(rstrtohex("\0\0\0\0\0\0\0\0"+i+u))),h=[];for(r=0;r>8*s-l&255;for(p[0]&=~g,r=0;rr)return!1;var i=this.doPublic(n).toString(16);if(i.length+3!=r/4)return!1;var o=_rsasign_getAlgNameAndHashFromHexDisgestInfo(i.replace(/^1f+00/,""));if(0==o.length)return!1;var l=o[0],s=o[1],a=function(e){return KJUR.crypto.Util.hashString(e,l)}(e);return s==a},RSAKey.prototype.verifyWithMessageHash=function(e,t){if(t.length!=Math.ceil(this.n.bitLength()/4))return!1;var n=parseBigInt(t,16);if(n.bitLength()>this.n.bitLength())return 0;var r=_rsasign_getAlgNameAndHashFromHexDisgestInfo(this.doPublic(n).toString(16).replace(/^1f+00/,""));return 0!=r.length&&(r[0],r[1]==e)},RSAKey.prototype.verifyPSS=function(e,t,n,r){var i=function(e){return KJUR.crypto.Util.hashHex(e,n)}(rstrtohex(e));return void 0===r&&(r=-1),this.verifyWithMessageHashPSS(i,t,n,r)},RSAKey.prototype.verifyWithMessageHashPSS=function(e,t,n,r){if(t.length!=Math.ceil(this.n.bitLength()/4))return!1;var i,o=new BigInteger(t,16),l=function(e){return KJUR.crypto.Util.hashHex(e,n)},s=hextorstr(e),a=s.length,u=this.n.bitLength()-1,c=Math.ceil(u/8);if(-1===r||void 0===r)r=a;else if(-2===r)r=c-a-2;else if(r<-2)throw new Error("invalid salt length");if(c>8*c-u&255;if(0!=(d.charCodeAt(0)&p))throw new Error("bits beyond keysize not zero");var g=pss_mgf1_str(f,d.length,l),w=[];for(i=0;i0)&&-1==(":"+n.join(":")+":").indexOf(":"+g+":"))throw"algorithm '"+g+"' not accepted in the list";if("none"!=g&&null===t)throw"key shall be specified to verify.";if("string"==typeof t&&-1!=t.indexOf("-----BEGIN ")&&(t=KEYUTIL.getKey(t)),!("RS"!=w&&"PS"!=w||t instanceof r))throw"key shall be a RSAKey obj for RS* and PS* algs";if("ES"==w&&!(t instanceof a))throw"key shall be a ECDSA obj for ES* algs";var m=null;if(void 0===o.jwsalg2sigalg[p.alg])throw"unsupported alg name: "+g;if("none"==(m=o.jwsalg2sigalg[g]))throw"not supported";if("Hmac"==m.substr(0,4)){if(void 0===t)throw"hexadecimal key shall be specified for HMAC";var v=new u({alg:m,pass:t});return v.updateString(d),f==v.doFinal()}if(-1!=m.indexOf("withECDSA")){var y,b=null;try{b=a.concatSigToASN1Sig(f)}catch(e){return!1}return(y=new c({alg:m})).init(t),y.updateString(d),y.verify(b)}return(y=new c({alg:m})).init(t),y.updateString(d),y.verify(f)},KJUR.jws.JWS.parse=function(e){var t,n,r,i=e.split("."),o={};if(2!=i.length&&3!=i.length)throw"malformed sJWS: wrong number of '.' splitted elements";return t=i[0],n=i[1],3==i.length&&(r=i[2]),o.headerObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(t)),o.payloadObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(n)),o.headerPP=JSON.stringify(o.headerObj,null," "),null==o.payloadObj?o.payloadPP=b64utoutf8(n):o.payloadPP=JSON.stringify(o.payloadObj,null," "),void 0!==r&&(o.sigHex=b64utohex(r)),o},KJUR.jws.JWS.verifyJWT=function(e,t,n){var r=KJUR.jws,i=r.JWS,o=i.readSafeJSONString,l=i.inArray,s=i.includedArray;if(!isBase64URLDot(e))return!1;var a=e.split(".");if(3!=a.length)return!1;var u=a[0],c=a[1];b64utohex(a[2]);var h=o(b64utoutf8(u)),d=o(b64utoutf8(c));if(void 0===h.alg)return!1;if(void 0===n.alg)throw"acceptField.alg shall be specified";if(!l(h.alg,n.alg))return!1;if(void 0!==d.iss&&"object"==typeof n.iss&&!l(d.iss,n.iss))return!1;if(void 0!==d.sub&&"object"==typeof n.sub&&!l(d.sub,n.sub))return!1;if(void 0!==d.aud&&"object"==typeof n.aud)if("string"==typeof d.aud){if(!l(d.aud,n.aud))return!1}else if("object"==typeof d.aud&&!s(d.aud,n.aud))return!1;var f=r.IntDate.getNow();return void 0!==n.verifyAt&&"number"==typeof n.verifyAt&&(f=n.verifyAt),void 0!==n.gracePeriod&&"number"==typeof n.gracePeriod||(n.gracePeriod=0),!(void 0!==d.exp&&"number"==typeof d.exp&&d.exp+n.gracePeriodi&&this.aHeader.pop(),this.aSignature.length>i&&this.aSignature.pop(),"addSignature failed: "+e}},this.verifyAll=function(e){if(this.aHeader.length!==e.length||this.aSignature.length!==e.length)return!1;for(var t=0;t0))throw"malformed header";if(this.aHeader=e.headers,"string"!=typeof e.payload)throw"malformed signatures";if(this.sPayload=e.payload,!(e.signatures.length>0))throw"malformed signatures";this.aSignature=e.signatures}catch(e){throw"malformed JWS-JS JSON object: "+e}},this.getJSON=function(){return{headers:this.aHeader,payload:this.sPayload,signatures:this.aSignature}},this.isEmpty=function(){return 0==this.aHeader.length?1:0}},KJUR.crypto.ECDSA,KJUR.crypto.DSA,KJUR.crypto.Signature,KJUR.crypto.MessageDigest,KJUR.crypto.Mac,KJUR.crypto.Cipher;var b64utoutf8_1=b64utoutf8,KJUR_1=KJUR;KJUR.crypto,KJUR.asn1,KJUR.jws,KJUR.lang;class LicenseController{constructor(){this._key=[52,50,52,50,52,50]}verifyLicense(e){if(!e||"string"!=typeof e)return{valid:!1};return{valid:KJUR_1.jws.JWS.verifyJWT(e,this.key,{alg:["HS256"]})}}getLicensePayload(e){if(!e)throw new Error("No license key was provided");const t=KJUR_1.jws.JWS.readSafeJSONString(b64utoutf8_1(e.split(".")[1]));if(!t||"string"!=typeof t.type||"number"!=typeof t.expiration)throw new Error("The license key payload is invalid");return t.type=t.type.toLowerCase(),t}checkExpired(e){if(!e||"number"!=typeof e)return!1;return e<=Math.floor((new Date).getTime()/1e3)}get key(){return String.fromCharCode(...this._key)}}class Builder{constructor(e,t,n,r){this.glueController=e,this.sessionStore=t,this.windowsController=n,this.workspacesController=r}get logger(){return logger.get("layouts.builder")}saveGlobalLayout(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){const o=yield this.getRawWindowsLayoutData({layoutType:"Global",layoutName:e.layout.name,context:e.layout.context,instances:e.layout.instances,ignoreInstances:e.layout.ignoreInstances},t);null===(n=this.logger)||void 0===n||n.trace(`[${t}] received valid data for the eligible windows`);const l=yield this.glueController.getLayout(e.layout.name),s=l?yield this.updateLayout(l,e.layout,o.windows,t):yield this.buildNewLayout(e.layout,o.windows,t);return null===(r=this.logger)||void 0===r||r.trace(`[${t}] the layout object was constructed, importing.`),yield this.glueController.importLayout(s),null===(i=this.logger)||void 0===i||i.trace(`[${t}] the import for layout: ${s.name} was completed, responding.`),s}))}updateLayout(e,t,n,r){var i,o,l,s,a;return __awaiter$7(this,void 0,void 0,(function*(){null===(i=this.logger)||void 0===i||i.trace(`[${r}] updating an existing layout with name ${t.name}`),e.context=null!==(o=t.context)&&void 0!==o?o:{},e.metadata=null!==(l=t.metadata)&&void 0!==l?l:{};const u=n.filter((e=>!!e.layoutComponentId)).map((e=>e.layoutComponentId)),c=this.getLayoutIdOccurrenceMap(u),h=n.map((t=>this.generateWindowComponent(e,t,c,r)));null===(s=this.logger)||void 0===s||s.trace(`[${r}] the window components are completed, we have ${h.length} windows for the layout`);const d={layoutName:t.name,layoutType:"Global",context:t.context},f=e.components.filter((e=>"workspaceFrame"===e.type)),p=yield this.compileWorkspacesFrameComponents(f,d,r);return null===(a=this.logger)||void 0===a||a.trace(`[${r}] the workspaces frame components are completed, we have ${p.length} frames for the layout`),e.components=[],e.components.push(...h),e.components.push(...p),e}))}buildNewLayout(e,t,n){var r,i,o,l,s;return __awaiter$7(this,void 0,void 0,(function*(){null===(r=this.logger)||void 0===r||r.trace(`[${n}] build a brand new layout with name ${e.name}`);const a={name:e.name,type:"Global",context:null!==(i=e.context)&&void 0!==i?i:{},metadata:null!==(o=e.metadata)&&void 0!==o?o:{},components:[],version:2},u=t.map((e=>this.buildNewWindowComponent(e,n)));null===(l=this.logger)||void 0===l||l.trace(`[${n}] the window components are completed, we have ${u.length} windows for the layout`);const c={layoutName:e.name,layoutType:"Global",context:e.context},h=yield this.compileWorkspacesFrameComponents([],c,n);return null===(s=this.logger)||void 0===s||s.trace(`[${n}] the workspaces frame components are completed, we have ${h.length} frames for the layout`),a.components.push(...u),a.components.push(...h),a}))}getRawWindowsLayoutData(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling send save requests for layout: ${e.layoutName} to instances: ${null===(r=e.instances)||void 0===r?void 0:r.join(", ")}`);const o={windows:[...yield Promise.all(this.getEligibleGlueWindows(e.instances,e.ignoreInstances).map((n=>this.buildRawGlueWindowData(n,e,t)))),...yield Promise.all(this.getEligibleNonGlueWindows(e.instances,e.ignoreInstances).map((e=>this.buildRawNonGlueWindowData(e))))]};return null===(i=this.logger)||void 0===i||i.trace(`[${t}] request completed, responding to the caller`),o}))}buildRawGlueWindowData(e,t,n){var r;return __awaiter$7(this,void 0,void 0,(function*(){const i=`Cannot fetch the layout save data from: ${e.name} with id: ${e.windowId}`;if(!e.initialUrl)throw new Error(`Missing URL for client: ${e.name}`);const o=yield PromiseWrap((()=>__awaiter$7(this,void 0,void 0,(function*(){try{return yield this.glueController.callWindow("layouts",{name:"clientSaveRequest",execute:()=>__awaiter$7(this,void 0,void 0,(function*(){}))},t,{windowId:e.windowId})}catch(e){return{}}}))),15e3,i),l=this.sessionStore.getAllInstancesData().find((t=>t.id===e.windowId));return{bounds:yield this.windowsController.getWindowBounds(e.windowId,n),windowContext:null!==(r=o.windowContext)&&void 0!==r?r:{},url:e.initialUrl,name:e.name,application:l?l.applicationName:defaultNoAppWindowComponentAppName,initialContext:e.initialContext,windowId:e.windowId,layoutComponentId:e.layoutComponentId}}))}buildRawNonGlueWindowData(e){var t;return __awaiter$7(this,void 0,void 0,(function*(){if(!e.initialUrl)throw new Error(`Missing URL for client: ${e.name}`);const n=this.sessionStore.getAllInstancesData().find((t=>t.id===e.windowId));return{bounds:null!==(t=e.initialBounds)&&void 0!==t?t:defaultPlatformConfig.windows.defaultWindowOpenBounds,windowContext:{},url:e.initialUrl,name:e.name,application:n?n.applicationName:defaultNoAppWindowComponentAppName,initialContext:e.initialContext,windowId:e.windowId,layoutComponentId:e.layoutComponentId}}))}getEligibleNonGlueWindows(e,t){const n=this.getAllEligibleWindows(e,t),r=this.sessionStore.getAllNonGlue(),i=this.sessionStore.pickWorkspaceClients((()=>!0));return n.filter((e=>r.some((t=>t.windowId===e.windowId))&&i.every((t=>t.windowId!==e.windowId))))}getEligibleGlueWindows(e,t){const n=this.getAllEligibleWindows(e,t),r=this.sessionStore.getAllNonGlue(),i=this.sessionStore.pickWorkspaceClients((()=>!0));return n.filter((e=>i.every((t=>t.windowId!==e.windowId))&&r.every((t=>t.windowId!==e.windowId))))}getAllEligibleWindows(e,t){let n=this.sessionStore.getAllWindowsData().filter((e=>"Platform"!==e.name));if(e&&e.length){const t=this.glueController.getServers().filter((t=>e.some((e=>t.instance===e))));n=n.filter((e=>t.some((t=>t.windowId===e.windowId))))}if(t&&t.length){const e=this.glueController.getServers().filter((e=>t.some((t=>e.instance===t))));n=n.filter((t=>e.every((e=>e.windowId!==t.windowId))))}return n}updateExistingWindowComponent(e,t,n){var r,i;return null===(r=this.logger)||void 0===r||r.trace(`[${n}] performing a soft update on am existing component ${e.application} with id ${e.state.instanceId}`),e.state.context=t.windowContext?t.windowContext:e.state.context,e.state.bounds=t.bounds,e.state.createArgs.context=t.initialContext?t.initialContext:null===(i=e.state.createArgs)||void 0===i?void 0:i.context,e.state.instanceId=e.state.instanceId?e.state.instanceId:t.windowId,e}buildNewWindowComponent(e,t){var n,r,i;return null===(n=this.logger)||void 0===n||n.trace(`[${t}] building a brand new component ${e.application} with id ${e.windowId}`),{type:"window",componentType:"application",application:e.application,state:{context:null!==(r=e.windowContext)&&void 0!==r?r:{},bounds:e.bounds,createArgs:{name:e.name,url:e.url,context:null!==(i=e.initialContext)&&void 0!==i?i:{}},windowState:"Normal",restoreState:"Normal",restoreSettings:{groupId:"glue_42_core",groupZOrder:0},instanceId:e.windowId,isSticky:!0,isCollapsed:!1}}}compileWorkspacesFrameComponents(e,t,n){var r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(r=this.logger)||void 0===r||r.trace(`[${n}] requesting information about all running workspaces frames`);const o=yield this.getAllFramesSnapshotsWithBounds(t,n);null===(i=this.logger)||void 0===i||i.trace(`[${n}] got information on ${o.length} frames, composing the frame components`);const l=o.filter((e=>{var t;return!!(null===(t=e.config)||void 0===t?void 0:t.layoutComponentId)})).map((e=>e.config.layoutComponentId)),s=this.getLayoutIdOccurrenceMap(l);return o.map((t=>this.generateFrameComponent(t,e,s,n)))}))}getLayoutIdOccurrenceMap(e){const t={};return e.forEach((e=>{t[e]?t[e]=1+t[e]:t[e]=1})),t}softUpdateFrameComponent(e,t,n,r){var i;return null===(i=this.logger)||void 0===i||i.trace(`[${r}] performing a soft update on am existing frame component ${e.state.instanceId}`),e.state.bounds=t.bounds,e.state.selectedWorkspace=-1===n?0:n,e.state.workspaces=t.snapshot.workspaces,e.state.context=Object.assign({},e.state.context,{isPlatform:t.config.isPlatform}),e}createNewFrameComponent(e,t,n){var r;return null===(r=this.logger)||void 0===r||r.trace(`[${n}] building a new frame component ${e.snapshot.id}`),{type:"workspaceFrame",application:"workspaces-demo",componentType:"application",state:{context:{isPlatform:e.config.isPlatform},bounds:e.bounds,instanceId:e.snapshot.id,selectedWorkspace:-1===t?0:t,workspaces:e.snapshot.workspaces,restoreState:"Normal",windowState:"Normal"}}}generateWindowComponent(e,t,n,r){const i=e.components.find((e=>"window"===e.type&&e.state.instanceId===t.layoutComponentId)),o=t.layoutComponentId?n[t.layoutComponentId]:0;return i&&o<2?this.updateExistingWindowComponent(i,t,r):this.buildNewWindowComponent(t,r)}generateFrameComponent(e,t,n,r){const i=e.snapshot.workspaces.findIndex((e=>{var t;return null===(t=null==e?void 0:e.config)||void 0===t?void 0:t.isSelected})),o=t.find((t=>t.state.instanceId===e.config.layoutComponentId)),l=e.config.layoutComponentId?n[e.config.layoutComponentId]:0;return o&&l<2?this.softUpdateFrameComponent(o,e,i,r):this.createNewFrameComponent(e,i,r)}getAllFramesSnapshotsWithBounds(e,t){return __awaiter$7(this,void 0,void 0,(function*(){const n=(yield this.workspacesController.getAllFramesSummaries(void 0,t)).summaries||[];return yield Promise.all(n.map((n=>__awaiter$7(this,void 0,void 0,(function*(){const r=yield this.workspacesController.handleGetWorkspacesLayouts(Object.assign({frameId:n.id},e),t),i=yield this.workspacesController.getFrameSessionData({frameId:n.id},t);return{bounds:(yield this.workspacesController.getFrameBounds({itemId:n.id},t)).bounds,snapshot:{id:n.id,workspaces:r.workspaces,config:{}},config:{isPlatform:null==i?void 0:i.isPlatform,layoutComponentId:null==i?void 0:i.layoutComponentId}}})))))}))}}class Restorer{constructor(e,t,n,r){this.glueController=e,this.validator=t,this.resetter=n,this.workspacesController=r}get logger(){return logger.get("layouts.restorer")}restoreGlobalLayout(e,t,n,r){var i,o,l;return __awaiter$7(this,void 0,void 0,(function*(){const s=yield this.glueController.getLayout(e.layout.name);if(!s)throw new Error(`Cannot restore layout: ${e.layout.name}, because it was not found in this platform`);if("Global"!==s.type)throw new Error(`Cannot restore layout: ${e.layout.name}, because it is not a Global Layout`);if(!n||!r)throw new Error(`Cannot restore layout: ${e.layout.name}, because the callerId or callerType are missing`);yield this.validator.doInitialValidation(s,t),null===(i=this.logger)||void 0===i||i.trace(`[${t}] the initial validation of the compliancy of the layout was completed`),yield this.closeInstances(r,n,t,e.layout.closeMe,e.layout.closeRunningInstances),null===(o=this.logger)||void 0===o||o.trace(`[${t}] closed all necessary running instances`),yield this.restore(s,e,t),null===(l=this.logger)||void 0===l||l.trace(`[${t}] the layout ${s.name} was restored`)}))}closeInstances(e,t,n,r,i){return __awaiter$7(this,void 0,void 0,(function*(){(void 0===i||i)&&(yield this.resetter.closeAllExceptCaller(t,n));(r||void 0===r&&void 0===i||void 0===r&&i)&&(yield this.resetter.closeCaller(e,t,n))}))}restore(e,t,n){var r;return __awaiter$7(this,void 0,void 0,(function*(){null===(r=this.logger)||void 0===r||r.trace(`[${n}] starting the restore process of ${e.name}`);const i=(yield this.canPlatformFrameAcceptComponent(n))?this.pickComponentForPlatformFrame(e.components.filter((e=>"workspaceFrame"===e.type))):null,o=Promise.all(e.components.map((r=>{if("window"===r.type)return this.restoreWindowComponent(r,n,e.context,t.layout.context);if("workspaceFrame"===r.type){const o=i===r;return this.restoreWorkspaceFrameComponent(r,n,e.context,t.layout.context,o)}})));yield o}))}restoreWindowComponent(e,t,n,r){var i,o,l,s;return __awaiter$7(this,void 0,void 0,(function*(){null===(i=this.logger)||void 0===i||i.trace(`[${t}] restoring window component ${e.application} with id ${e.state.instanceId} and bounds: ${JSON.stringify(e.state.bounds)}`);const a=Object.assign({},n,e.state.context,e.state.createArgs.context,r),u=e.state.bounds,c=yield this.checkTargetBoundsPossible(u);c.isPossible||null===(o=this.logger)||void 0===o||o.warn(`Restoring ${e.application} not possible with the saved bounds, falling back to default bounds`);const h=c.isPossible?u:void 0;null===(l=this.logger)||void 0===l||l.trace(`[${t}] calling the respective glue open/start method`);const d=e.application===defaultNoAppWindowComponentAppName?this.glueController.openWindow({name:e.state.createArgs.name,url:e.state.createArgs.url,layoutComponentId:e.state.instanceId,context:a,bounds:h}):this.glueController.startApp({name:e.application,layoutComponentId:e.state.instanceId,context:a,bounds:h});null===(s=this.logger)||void 0===s||s.trace(`[${t}] the component was started`),yield d}))}restoreWorkspaceFrameComponent(e,t,n,r,i){var o,l,s,a,u,c;return __awaiter$7(this,void 0,void 0,(function*(){null===(o=this.logger)||void 0===o||o.trace(`[${t}] restoring workspace frame component $with id ${e.state.instanceId} and bounds: ${JSON.stringify(e.state.bounds)}`);const h=i?null===(l=yield this.getPlatformFrame(t))||void 0===l?void 0:l.id:void 0,d=yield this.createFrameWithWorkspaceComponents(e,h);null===(s=this.logger)||void 0===s||s.trace(`[${t}] the frame was restored, selecting the correct workspace`);const f=yield d.workspaces();yield null===(a=f[e.state.selectedWorkspace])||void 0===a?void 0:a.focus(),null===(u=this.logger)||void 0===u||u.trace(`[${t}] the correct workspace was selected, restoring the workspaces context`);const p=Object.assign({},n,r);yield Promise.all(f.map((e=>e.updateContext(p)))),null===(c=this.logger)||void 0===c||c.trace(`[${t}] the frame component ${e.state.instanceId} is restored`)}))}canPlatformFrameAcceptComponent(e){return __awaiter$7(this,void 0,void 0,(function*(){const t=yield this.getPlatformFrame(e);if(!t)return!1;const n=yield t.workspaces();return 1===n.length&&0===n[0].getAllWindows().length}))}pickComponentForPlatformFrame(e){if(0===e.length)return;return e.find((e=>{var t;return null===(t=e.state.context)||void 0===t?void 0:t.isPlatform}))||e[0]}checkTargetBoundsPossible(e){return __awaiter$7(this,void 0,void 0,(function*(){if(window.gtf)return{isPossible:!0};return(yield window.getScreenDetails()).screens.find((t=>{const n=e.left>=t.left&&e.left<=t.left+t.width,r=e.top>=t.top&&e.top<=t.top+t.height;return n&&r}))?{isPossible:!0}:{isPossible:!1}}))}getPlatformFrame(e){return __awaiter$7(this,void 0,void 0,(function*(){if(!this.glueController.isWorkspacesEnabled)return;if(!(yield this.workspacesController.handleCheckStarted(void 0,e)))return;const t=(yield this.workspacesController.handleGetPlatformFrameId({},e)).id;return t?this.glueController.getOrCreateWorkspaceFrame({frameId:t}):void 0}))}createFrameWithWorkspaceComponents(e,t){return __awaiter$7(this,void 0,void 0,(function*(){const n=yield this.glueController.getOrCreateWorkspaceFrame({frameId:t,bounds:e.state.bounds,layoutComponentId:e.state.instanceId});return yield this.glueController.invokeMethod(GlueWorkspaceFrameClientControlName,{operation:"initFrameFromSnapshot",operationArguments:{workspaces:e.state.workspaces,keepWorkspaces:[]}},{windowId:n.id}),n}))}}class LayoutValidator{constructor(e,t){this.glueController=e,this.workspacesController=t}doInitialValidation(e,t){return __awaiter$7(this,void 0,void 0,(function*(){this.validateRequiredApplicationsExistence(e),yield this.validateWorkspaceConfigurationInPlatform(e,t),this.validateNoAppNameAndUrl(e)}))}doFinalValidation(e){return __awaiter$7(this,void 0,void 0,(function*(){this.validateWindowNamesCollision(e),this.validateInstanceIdCollision(e),yield this.validateWorkspaceFramesIdCollisions(e)}))}validateWindowNamesCollision(e){const t=e.components.filter((e=>"window"===e.type&&e.application===defaultNoAppWindowComponentAppName&&!!e.state.createArgs.name)).map((e=>e.state.createArgs.name)),n=this.glueController.getAllWindowNames(),r=t.filter((e=>n.some((t=>e===t))));if(r.length)throw new Error(`Cannot restore layout: ${e.name}, because there are window names collisions: ${r.join(", ")}`)}validateInstanceIdCollision(e){const t=e.components.filter((e=>"window"===e.type&&!!e.state.instanceId)).map((e=>e.state.instanceId)),n=this.glueController.getAllOpenedIds(),r=t.filter((e=>n.some((t=>e===t))));if(r.length)throw new Error(`Cannot restore layout: ${e.name}, because there are instances ids collisions: ${r.join(", ")}`)}validateWorkspaceFramesIdCollisions(e){return __awaiter$7(this,void 0,void 0,(function*(){if(e.components.every((e=>"workspaceFrame"!==e.type)))return;const t=yield this.glueController.getAllOpenedFrameIds(),n=e.components.filter((e=>"workspaceFrame"===e.type)).map((e=>e.state.instanceId)).filter((e=>t.some((t=>e===t))));if(n.length)throw new Error(`Cannot restore layout: ${e.name}, because there are frame ids collisions: ${n.join(", ")}`)}))}validateNoAppNameAndUrl(e){const t=e.components.filter((e=>"window"===e.type&&e.application===defaultNoAppWindowComponentAppName)).filter((e=>!("window"!==e.type||e.state.createArgs.name&&e.state.createArgs.url)));if(!t.length)return;const n=t.map((e=>JSON.stringify(e.state.createArgs))).join(", ");throw new Error(`Cannot restore layout: ${e.name}, because it has window components, which are not defined applications and are missing name or url, provided insufficient createArgs are: ${n}`)}validateRequiredApplicationsExistence(e){const t=this.glueController.getAllApplicationNames(),n=e.components.filter((e=>"window"===e.type&&e.application!==defaultNoAppWindowComponentAppName)).map((e=>e.application));if(n.push(...this.getRequiredAppNamesFromWorkspaceFrameComponents(e)),!n.length)return;const r=n.filter((e=>t.every((t=>t!==e))));if(r.length)throw new Error(`Cannot restore layout: ${e.name}, because some required applications are not registered with this platform: ${r.join(", ")}`)}validateWorkspaceConfigurationInPlatform(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){if(e.components.every((e=>"Workspace"!==e.type||"workspaceFrame"!==e.type)))return;if(!(null===(n=yield this.workspacesController.handleCheckStarted({},t))||void 0===n?void 0:n.started))throw new Error(`Cannot restore layout: ${e.name}, because this platform does not have a valid Workspaces configuration`)}))}getRequiredAppNamesFromWorkspaceFrameComponents(e){const t=[];for(const n of e.components)if("workspaceFrame"===n.type){const e=n.state.workspaces.reduce(((e,t)=>(e.push(...this.getAllAppNamesFromChildren(t.children)),e)),[]);t.push(...e)}return t}getAllAppNamesFromChildren(e){const t=e.filter((e=>"window"===e.type&&!!e.config.appName&&e.config.appName!==defaultNoAppWindowComponentAppName)).map((e=>e.config.appName));for(const n of e)"window"!==n.type&&t.push(...this.getAllAppNamesFromChildren(n.children));return t}}class Resetter{constructor(e,t){this.glueController=e,this.workspacesController=t}get logger(){return logger.get("layouts.resetter")}closeAllExceptCaller(e,t){return __awaiter$7(this,void 0,void 0,(function*(){const n=this.glueController.getAllOtherNonPlatformWindows(e);yield Promise.all(n.map((e=>__awaiter$7(this,void 0,void 0,(function*(){if(this.glueController.isWorkspacesEnabled){if(yield this.glueController.getWorkspaceWindowById(e.id))return}return e.close()}))))),this.glueController.isWorkspacesEnabled&&(yield this.closeNecessaryWorkspacesFrames(e,t))}))}closeCaller(e,t,n){var r;return __awaiter$7(this,void 0,void 0,(function*(){if("plugin"===e)return;if(yield this.glueController.getWorkspaceWindowById(t))return void(yield this.cleanupWorkspaceCaller(t,n));const i=this.glueController.getWindowById(t);i&&"Platform"!==i.name?yield i.close():null===(r=this.logger)||void 0===r||r.warn("The close caller was missing, is an iframe or is a platform")}))}closeNecessaryWorkspacesFrames(e,t){return __awaiter$7(this,void 0,void 0,(function*(){const n=(yield this.workspacesController.handleGetPlatformFrameId({},t)).id;let r=yield this.glueController.getAllWorkspacesFrames();n&&(r=r.filter((e=>e.id!==n)),yield this.cleanUpFrameExceptCaller(n,e));const i=yield this.glueController.getWorkspaceWindowById(e);i&&(r=r.filter((e=>e.id!==i.frameId)),yield this.cleanUpFrameExceptCaller(i.frameId,e)),yield Promise.all(r.map((e=>e.close())))}))}cleanUpFrameExceptCaller(e,t){return __awaiter$7(this,void 0,void 0,(function*(){const n=yield this.glueController.getWorkspacesByFrameId(e),r=n.filter((e=>!e.getWindow((e=>e.id===t)))),i=n.find((e=>e.getWindow((e=>e.id===t))));yield Promise.all(r.map((e=>e.close())));const o=i?i.getAllWindows((e=>e.id!==t)):[];yield Promise.all(o.map((e=>e.close())))}))}cleanupWorkspaceCaller(e,t){return __awaiter$7(this,void 0,void 0,(function*(){const n=(yield this.workspacesController.handleGetPlatformFrameId({},t)).id,r=yield this.glueController.getWorkspaceWindowById(e);r&&(r.frameId!==n?yield r.frame.close():yield r.workspace.close())}))}}const searchOperationDecoder=oneOf$1(constant$1("operationCheck"));class SearchController{constructor(e,t,n,r){this.glueController=e,this.appsRepo=t,this.layoutsRepo=n,this.workspacesRepo=r,this.started=!1,this.repos=[],this.providerName="Glue42 Core Plus Platform",this.activeQueries={},this.unsubFuncs=[],this.operations={operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder,resultDecoder:operationCheckResultDecoder,execute:this.handleOperationCheck.bind(this)}}}get logger(){return logger.get("notifications.controller")}handlePlatformShutdown(){var e;this.started=!1,this.unsubFuncs.forEach((e=>e())),this.unsubFuncs=[],this.repos=[],this.activeQueries={},null===(e=this.provider)||void 0===e||e.unregister()}configurePostStart(){var e,t,n,r;return __awaiter$7(this,void 0,void 0,(function*(){if(this.repos.push(this.appsRepo),this.repos.push(this.layoutsRepo),!this.glueController.isWorkspacesEnabled)return;this.repos.push(this.workspacesRepo);const i=this.repos.map((e=>({name:e.type,displayName:e.displayType}))),o={name:this.providerName,types:i};if(null===(e=this.logger)||void 0===e||e.trace(`Registering the plus platform as a provider with name: ${o.name} and types: ${JSON.stringify(null===(t=o.types)||void 0===t?void 0:t.join(", "))}.`),this.provider=yield this.glueController.registerProvider(o),!this.provider)throw new Error("The platform was not registered successfully as a provider.");null===(n=this.logger)||void 0===n||n.trace("The platform plus was registered successfully as a provider.");const l=this.provider.onQuery((e=>{this.processQuery(e).then((()=>this.markQueryDone(e))).catch((t=>this.markQueryError(e,t)))})),s=this.provider.onQueryCancel(this.processQueryCancel.bind(this));this.unsubFuncs.push(l),this.unsubFuncs.push(s),this.started=!0,null===(r=this.logger)||void 0===r||r.info("The module started successfully.")}))}start(){var e;return __awaiter$7(this,void 0,void 0,(function*(){null===(e=this.logger)||void 0===e||e.info("Starting the Global Search provider.")}))}handleControl(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.started)throw new Error("Cannot handle this search control message, because the controller has not been started");const o=e.data,l=e.commandId,s=searchOperationDecoder.run(e.operation);if(!s.ok)throw new Error(`This search request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(s.error)}`);const a=s.result,u=null===(t=this.operations[a].dataDecoder)||void 0===t?void 0:t.run(o);if(u&&!u.ok)throw new Error(`Search request for ${a} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(u.error)}`);null===(n=this.logger)||void 0===n||n.debug(`[${l}] ${a} command is valid with data: ${JSON.stringify(o)}`);const c=yield this.operations[a].execute(o,l),h=null===(r=this.operations[a].resultDecoder)||void 0===r?void 0:r.run(c);if(h&&!h.ok)throw new Error(`Search request for ${a} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(h.error)}`);return null===(i=this.logger)||void 0===i||i.trace(`[${l}] ${a} command was executed successfully`),c}))}handleOperationCheck(e){return __awaiter$7(this,void 0,void 0,(function*(){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}))}processQuery(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){null===(t=this.logger)||void 0===t||t.info(`Processing a new query for: ${e.search}`),this.activeQueries[e.id]={allowedResultsCount:(null===(n=e.providerLimits)||void 0===n?void 0:n.maxResults)||Number.MAX_SAFE_INTEGER};const r=e.types?this.repos.filter((t=>{var n;return null===(n=e.types)||void 0===n?void 0:n.some((e=>e.name===t.type))})):this.repos;yield Promise.all(r.map((t=>this.callRepo(t,e))))}))}callRepo(e,t){return __awaiter$7(this,void 0,void 0,(function*(){const n=yield this.getRepoResults(e,t);this.activeQueries[t.id]&&n&&this.sendResults(n,t)}))}getRepoResults(e,t){return __awaiter$7(this,void 0,void 0,(function*(){try{return yield e.getResults(t)}catch(e){return void this.markQueryError(t,e)}}))}sendResults(e,t){var n;try{e.forEach((e=>{this.activeQueries[t.id]&&(this.activeQueries[t.id].allowedResultsCount?(--this.activeQueries[t.id].allowedResultsCount,t.sendResult(e)):this.markQueryDone(t))}))}catch(e){null===(n=this.logger)||void 0===n||n.warn(`Failed sending results for query: ${t.search} with an error: ${extractErrorMsg$1(e)}`)}}markQueryDone(e){var t;this.activeQueries[e.id]&&(null===(t=this.logger)||void 0===t||t.info(`The query for: ${e.search} is completed`),delete this.activeQueries[e.id],e.done())}markQueryError(e,t){var n;this.activeQueries[e.id]&&(null===(n=this.logger)||void 0===n||n.warn(`The query for: ${e.search} ended with an error: ${extractErrorMsg$1(t)}`),delete this.activeQueries[e.id],e.error(extractErrorMsg$1(t)))}processQueryCancel(e){delete this.activeQueries[e.id]}}class ApplicationsRepository{constructor(e){this.glueController=e,this.type="application",this.displayType="Applications"}getResults(e){var t,n;const r=new Set,i={count:Math.min((null===(t=e.providerLimits)||void 0===t?void 0:t.maxResultsPerType)||Number.MAX_SAFE_INTEGER,(null===(n=e.providerLimits)||void 0===n?void 0:n.maxResults)||Number.MAX_SAFE_INTEGER)},o=this.glueController.getAllApplications(),l=o.filter((t=>checkMatch(i,(()=>{var n;return!!(null===(n=t.title)||void 0===n?void 0:n.toLowerCase().includes(e.search.toLowerCase()))}))));if(l.forEach((e=>r.add(e))),!i.count)return Promise.resolve(this.transformApps(r));const s=o.filter((t=>checkMatch(i,(()=>{var n;return!!(null===(n=t.caption)||void 0===n?void 0:n.toLowerCase().includes(e.search.toLowerCase()))}))));if(s.forEach((e=>r.add(e))),!i.count)return Promise.resolve(this.transformApps(r));return o.filter((t=>checkMatch(i,(()=>t.name.toLowerCase().includes(e.search.toLowerCase()))))).forEach((e=>r.add(e))),Promise.resolve(this.transformApps(r))}transformApps(e){const t=[];for(const n of e.values())t.push({type:{name:this.type,displayName:this.displayType},id:n.name,displayName:n.title,description:n.caption,iconURL:n.icon});return t}}class LayoutsRepository{constructor(e){this.glueController=e,this.type="layout",this.displayType="Layouts"}getResults(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){const r=new Set,i={count:Math.min((null===(t=e.providerLimits)||void 0===t?void 0:t.maxResultsPerType)||Number.MAX_SAFE_INTEGER,(null===(n=e.providerLimits)||void 0===n?void 0:n.maxResults)||Number.MAX_SAFE_INTEGER)};return(yield this.glueController.getAllLayoutsSummaries()).filter((t=>checkMatch(i,(()=>t.name.toLowerCase().includes(e.search.toLowerCase()))))).forEach((e=>r.add(e))),this.transformLayouts(r)}))}transformLayouts(e){const t=[];for(const n of e.values())t.push({type:{name:this.type,displayName:this.displayType},id:n.name,displayName:n.name});return t}}class WorkspacesRepository{constructor(e){this.glueController=e,this.type="workspace",this.displayType="Workspaces"}getResults(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){const r=new Set,i={count:Math.min((null===(t=e.providerLimits)||void 0===t?void 0:t.maxResultsPerType)||Number.MAX_SAFE_INTEGER,(null===(n=e.providerLimits)||void 0===n?void 0:n.maxResults)||Number.MAX_SAFE_INTEGER)};return(yield this.glueController.getAllWorkspacesSummaries()).filter((t=>checkMatch(i,(()=>t.name.toLowerCase().includes(e.search.toLowerCase()))))).forEach((e=>r.add(e))),this.transformWorkspaces(r)}))}transformWorkspaces(e){const t=[];for(const n of e.values())t.push({type:{name:this.type,displayName:this.displayType},id:n.name,displayName:n.name});return t}}class LocalStoreController{constructor(){this.defaultGlobalLayoutNamespace="g42_core_plus_default_global_layout",this.themesNamespace="g42_core_plus_themes",this.notificationsNamespace="g42_core_notifications_config",this.username="g42_public",this.localStorage=window.localStorage}start(e){(null==e?void 0:e.username)&&(this.username=e.username);if(!this.localStorage.getItem(this.username)){const e={[this.defaultGlobalLayoutNamespace]:{},[this.themesNamespace]:[]};this.localStorage.setItem(this.username,JSON.stringify(e))}}stop(){this.username="g42_public"}saveThemeIfMissing(e){const t=this.getData(this.themesNamespace)||[];t.some((t=>t.theme.name===e.theme.name))||(t.push(e),this.saveData(this.themesNamespace,t))}getAllThemes(){return this.getData(this.themesNamespace)||[]}markThemeSelected(e,t){const n=this.getData(this.themesNamespace)||[],r=n.find((t=>t.theme.name===e));if(!r)throw new Error(`Cannot mark theme: ${e} as selected, because it doesn't exist`);n.forEach((e=>{e.selected=!1,e.isUserSelected=!1})),r.selected=!0,r.isUserSelected=!!t,this.saveData(this.themesNamespace,n)}getDefaultGlobalLayoutName(){const e=this.getData(this.defaultGlobalLayoutNamespace);return null==e?void 0:e.name}saveDefaultGlobalLayout(e){this.saveData(this.defaultGlobalLayoutNamespace,{name:e})}clearDefaultGlobalLayout(){this.saveData(this.defaultGlobalLayoutNamespace,{})}getNotificationsConfig(){return this.getData(this.notificationsNamespace)}setNotificationsConfig(e){this.saveData(this.notificationsNamespace,e)}updateNotificationsConfig(e){const t=this.getNotificationsConfig();if(!t)throw new Error("Cannot update notifications config, because it doesn't exist");this.setNotificationsConfig(deepMerge(t,e,{arrayMerge:(e,t)=>t}))}getData(e){const t=this.localStorage.getItem(this.username);if(!t)throw new Error(`Cannot get data for namespace: ${e}, because the user data is missing`);return JSON.parse(t)[e]}saveData(e,t){const n=this.localStorage.getItem(this.username);if(!n)throw new Error(`Cannot set data for namespace: ${e}, because the user data is missing`);const r=JSON.parse(n);r[e]=t,this.localStorage.setItem(this.username,JSON.stringify(r))}}const themesOperationDecoder=oneOf$1(constant$1("getCurrent"),constant$1("list"),constant$1("select"),constant$1("operationCheck")),themeDecoder=object$1({displayName:nonEmptyStringDecoder$1,name:nonEmptyStringDecoder$1}),simpleThemeResponseDecoder=object$1({theme:themeDecoder}),allThemesResponseDecoder=object$1({themes:array$1(themeDecoder)}),selectThemeConfigDecoder=object$1({name:nonEmptyStringDecoder$1}),GlueCorePlusThemesStream="T42.Core.Plus.Themes.Stream",lightTheme={name:"light",displayName:"Day"},darkTheme={name:"dark",displayName:"Night"};class ThemesController{constructor(e,t){this.glueController=e,this.localStore=t,this.started=!1,this.operations={getCurrent:{name:"getCurrent",resultDecoder:simpleThemeResponseDecoder,execute:this.handleGetCurrent.bind(this)},list:{name:"list",resultDecoder:allThemesResponseDecoder,execute:this.handleList.bind(this)},select:{name:"select",dataDecoder:selectThemeConfigDecoder,execute:this.handleSelect.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder,resultDecoder:operationCheckResultDecoder,execute:this.handleOperationCheck.bind(this)}}}get logger(){return logger.get("themes.controller")}start(e){var t,n,r;return __awaiter$7(this,void 0,void 0,(function*(){this.started=!0,this.localStore.saveThemeIfMissing({theme:lightTheme,selected:!1,isUserSelected:!1}),this.localStore.saveThemeIfMissing({theme:darkTheme,selected:!1,isUserSelected:!1}),this.themesStream=yield this.glueController.createSystemStream(GlueCorePlusThemesStream);if(this.localStore.getAllThemes().some((e=>e.isUserSelected)))return;const i="os"===(null===(t=e.themes)||void 0===t?void 0:t.defaultTheme)?this.getOsTheme():"light"===(null===(n=e.themes)||void 0===n?void 0:n.defaultTheme)?"light":"dark";this.localStore.markThemeSelected(i,!1);const o=null===(r=this.localStore.getAllThemes().find((e=>e.selected)))||void 0===r?void 0:r.theme;this.themesStream.push({theme:o})}))}handlePlatformShutdown(){this.started=!1,this.themesStream.close()}handleControl(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.started)throw new Error("Cannot handle this themes control message, because the controller has not been started");const o=e.data,l=e.commandId,s=themesOperationDecoder.run(e.operation);if(!s.ok)throw new Error(`This themes request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(s.error)}`);const a=s.result,u=null===(t=this.operations[a].dataDecoder)||void 0===t?void 0:t.run(o);if(u&&!u.ok)throw new Error(`Themes request for ${a} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(u.error)}`);null===(n=this.logger)||void 0===n||n.debug(`[${l}] ${a} command is valid with data: ${JSON.stringify(o)}`);const c=yield this.operations[a].execute(o,l),h=null===(r=this.operations[a].resultDecoder)||void 0===r?void 0:r.run(c);if(h&&!h.ok)throw new Error(`Themes request for ${a} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(h.error)}`);return null===(i=this.logger)||void 0===i||i.trace(`[${l}] ${a} command was executed successfully`),c}))}handleClientUnloaded(){}handleGetCurrent(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a getCurrent message`);const e=this.localStore.getAllThemes().find((e=>e.selected));if(!e)throw new Error("No selected theme found!");return{theme:e.theme}}))}handleList(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a list message`);return{themes:this.localStore.getAllThemes().map((e=>e.theme))}}))}handleSelect(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling a select message`),this.localStore.markThemeSelected(e.name,!0);const i=null===(r=this.localStore.getAllThemes().find((e=>e.selected)))||void 0===r?void 0:r.theme;if(!i)throw new Error("No selected theme found!");this.themesStream.push({theme:i})}))}handleOperationCheck(e){return __awaiter$7(this,void 0,void 0,(function*(){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}))}getOsTheme(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}}const managerOperationDecoder=oneOf$1(constant$1("operationCheck")),DEFAULT_RESPONSE_TIMEOUT_MS=1e4;class ManagerController{constructor(e,t,n,r){this.layoutsController=e,this.identity=t,this.session=n,this.buildClient=r,this.started=!1,this.name="Glue42 Server Client",this.operations={operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder,resultDecoder:operationCheckResultDecoder,execute:this.handleOperationCheck.bind(this)}},this.unloadCallback=this.handleUnload.bind(this),window.addEventListener("beforeunload",this.unloadCallback)}get logger(){return logger.get("manager.controller")}callManager(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){return PromiseWrap(e,null!==(r=null===(n=this.config)||void 0===n?void 0:n.responseTimeoutMS)&&void 0!==r?r:DEFAULT_RESPONSE_TIMEOUT_MS,t)}))}get isStarted(){return this.started}get isCritical(){var e,t;return null===(t=null===(e=this.config)||void 0===e?void 0:e.critical)||void 0===t||t}handlePlatformShutdown(){this.started=!1,window.removeEventListener("beforeunload",this.unloadCallback),this.handleUnload(),this.unsubLayouts&&this.unsubLayouts()}configurePostStart(){var e,t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.config)return;const o=null!==(e=this.config.auth.username)&&void 0!==e?e:null===(t=this.config.auth.basic)||void 0===t?void 0:t.username;if(!o)throw new Error("Cannot connect to the Glue42 Server, because no username was provided. Please provide a username in auth.username or auth.basic.username");const l={baseUrl:this.config.url,auth:this.config.auth,headers:this.config.headers};this.client=this.buildClient(l),null===(n=this.logger)||void 0===n||n.trace("The client API is ready.");const s=yield this.identity.getMachineInfo(o),a=this.identity.getGlueInfo();null===(r=this.logger)||void 0===r||r.trace(`Opening a session for machine: ${JSON.stringify(s)} and glue: ${JSON.stringify(a)}`),yield this.session.openSession(this.client,s,a,this.config),this.started=!0,this.unsubLayouts=this.layoutsController.onUserLayoutEvent(this.handleLayoutEvent.bind(this)),null===(i=this.logger)||void 0===i||i.info(`Module ${this.name} started`)}))}start(e){var t;return __awaiter$7(this,void 0,void 0,(function*(){e.manager&&(this.config=e.manager,null===(t=this.logger)||void 0===t||t.info("Starting the Manager controller."))}))}handleControl(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.started)throw new Error("Cannot handle this manager control message, because the controller has not been started");const o=e.data,l=e.commandId,s=managerOperationDecoder.run(e.operation);if(!s.ok)throw new Error(`This manager request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(s.error)}`);const a=s.result,u=null===(t=this.operations[a].dataDecoder)||void 0===t?void 0:t.run(o);if(u&&!u.ok)throw new Error(`Manager request for ${a} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(u.error)}`);null===(n=this.logger)||void 0===n||n.debug(`[${l}] ${a} command is valid with data: ${JSON.stringify(o)}`);const c=yield this.operations[a].execute(o,l),h=null===(r=this.operations[a].resultDecoder)||void 0===r?void 0:r.run(c);if(h&&!h.ok)throw new Error(`Manager request for ${a} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(h.error)}`);return null===(i=this.logger)||void 0===i||i.trace(`[${l}] ${a} command was executed successfully`),c}))}getDefaultGlobal(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){null===(t=this.logger)||void 0===t||t.trace(`[${e}] handling Get Default Global request`);const r=`Cannot get default global layout from Manager because of timeout (${null===(n=this.config)||void 0===n?void 0:n.responseTimeoutMS} ms)`,i=yield this.callManager((()=>__awaiter$7(this,void 0,void 0,(function*(){var t;const n=yield this.client.getDefaultLayout();return null===(t=this.logger)||void 0===t||t.trace(`[${e}] request completed, default global layout with name ${null==i?void 0:i.name} retrieved from Manager`),n}))),r);return i}))}setDefaultGlobal(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling Set Default Global request for name: ${e}`);const o=`Cannot set default global layout in Manager because of timeout (${null===(r=this.config)||void 0===r?void 0:r.responseTimeoutMS} ms)`,l=yield this.getLayoutId(e);l?yield this.callManager((()=>__awaiter$7(this,void 0,void 0,(function*(){var n;yield this.client.setDefaultLayout(l),null===(n=this.logger)||void 0===n||n.trace(`[${t}] request completed, global layout with name ${e} set as default`)}))),o):null===(i=this.logger)||void 0===i||i.trace(`[${t}] layout with name ${e} could not be set as default because it does not exist in Manager`)}))}clearDefaultGlobal(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){null===(t=this.logger)||void 0===t||t.trace(`[${e}] handling Clear Default Global request`);const r=`Cannot clear default global layout in Manager because of timeout (${null===(n=this.config)||void 0===n?void 0:n.responseTimeoutMS} ms)`;yield this.callManager((()=>__awaiter$7(this,void 0,void 0,(function*(){var t;yield this.client.setDefaultLayout(),null===(t=this.logger)||void 0===t||t.trace(`[${e}] request completed, default global layout cleared`)}))),r)}))}saveLayout(e,t){var n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){const o={type:e.type,name:e.name,definition:JSON.stringify(e),default:null!==(n=null==t?void 0:t.default)&&void 0!==n&&n},l=`Cannot save layout with name ${e.name} to Manager because of timeout (${null===(r=this.config)||void 0===r?void 0:r.responseTimeoutMS} ms)`;yield this.callManager((()=>__awaiter$7(this,void 0,void 0,(function*(){yield this.client.saveLayout(o)}))),l),null===(i=this.logger)||void 0===i||i.trace(`Layout with name ${e.name} saved to manager`)}))}getPrefs(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling Get Prefs request`);const i=`Cannot get prefs for app ${e} from Manager because of timeout (${null===(r=this.config)||void 0===r?void 0:r.responseTimeoutMS} ms)`;return yield this.callManager((()=>__awaiter$7(this,void 0,void 0,(function*(){var n;const r=(yield this.client.getAllPrefs()).find((t=>t.app===e));return null===(n=this.logger)||void 0===n||n.trace(`[${t}] request completed, prefs for app ${e} retrieved from Manager`),r?this.transformPrefs(r):void 0}))),i)}))}getAllPrefs(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){null===(t=this.logger)||void 0===t||t.trace(`[${e}] handling Get All Prefs request`);const r=`Cannot get all prefs from Manager because of timeout (${null===(n=this.config)||void 0===n?void 0:n.responseTimeoutMS} ms)`;return yield this.callManager((()=>__awaiter$7(this,void 0,void 0,(function*(){var t;const n=yield this.client.getAllPrefs();return null===(t=this.logger)||void 0===t||t.trace(`[${e}] request completed, all prefs retrieved from Manager`),n.map(this.transformPrefs)}))),r)}))}setPrefs(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling Set Prefs request`);const i=`Cannot set prefs for app ${e.app} in Manager because of timeout (${null===(r=this.config)||void 0===r?void 0:r.responseTimeoutMS} ms)`;yield this.callManager((()=>__awaiter$7(this,void 0,void 0,(function*(){var n;yield this.client.setPrefs({app:e.app,data:e.data,merge:!1}),null===(n=this.logger)||void 0===n||n.trace(`[${t}] request completed, prefs for app ${e.app} set in Manager`)}))),i)}))}clearAllPrefs(e,t){var n,r;return __awaiter$7(this,void 0,void 0,(function*(){null===(n=this.logger)||void 0===n||n.trace(`[${t}] handling Clear All Prefs request`),yield Promise.all(e.map((e=>this.setPrefs({app:e,data:{}},t)))),null===(r=this.logger)||void 0===r||r.trace(`[${t}] request completed, all prefs cleared`)}))}handleOperationCheck(e){return __awaiter$7(this,void 0,void 0,(function*(){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}))}handleLayoutRemoved(e){var t,n;return __awaiter$7(this,void 0,void 0,(function*(){const r=yield this.getLayoutId(e);r?(yield this.client.deleteUserLayout(r).catch((e=>{var t;return null===(t=this.logger)||void 0===t?void 0:t.warn(extractErrorMsg$1(e))})),null===(n=this.logger)||void 0===n||n.trace(`Deleted layout ${e}`)):null===(t=this.logger)||void 0===t||t.trace(`Layout with name ${e} could not be removed because it does not exist in Manager.`)}))}handleLayoutAdded(e){var t;return __awaiter$7(this,void 0,void 0,(function*(){try{yield this.saveLayout(e)}catch(e){null===(t=this.logger)||void 0===t||t.warn(extractErrorMsg$1(e))}}))}handleLayoutEvent(e){return __awaiter$7(this,void 0,void 0,(function*(){"layoutRemoved"!==e.operation?yield this.handleLayoutAdded(e.layout):yield this.handleLayoutRemoved(e.layout.name)}))}getLayoutId(e){var t;return __awaiter$7(this,void 0,void 0,(function*(){const n=`Cannot get layout id from Manager because of timeout (${null===(t=this.config)||void 0===t?void 0:t.responseTimeoutMS} ms)`;return this.callManager((()=>__awaiter$7(this,void 0,void 0,(function*(){var t;return null===(t=(yield this.client.getLayouts()).find((t=>t.name===e)))||void 0===t?void 0:t.id}))),n)}))}handleUnload(){this.client&&this.client.unload()}transformPrefs({app:e,data:t,lastUpdate:n}){return{app:e,data:t,lastUpdate:n}}}class Identity{constructor(e,t,n,r){this.uaParser=e,this.glueController=t,this.pluginsController=n,this.workspacesFrameUrl=r}getMachineInfo(e){var t;return __awaiter$7(this,void 0,void 0,(function*(){const n=this.uaParser.getResult(),r={name:n.os.name||"",version:n.os.version||"",arch:n.cpu.architecture||""},i={name:n.browser.name,version:n.browser.version,engine:n.engine.name},o="mobile"===(null===(t=n.device)||void 0===t?void 0:t.type)?{vendor:n.device.vendor,model:n.device.model}:void 0,l=yield this.getDisplays();return{user:e,name:"",os:r,browser:i,mobileDevice:o,displays:l}}))}getGlueInfo(){var e;return{version:"",build:"",region:"",env:"",core:{web:{version:this.glueController.clientGlue.version},platform:{version:this.glueController.platformVersion,plugins:this.pluginsController.registeredPlugins},plus:{version:version}},workspaces:this.glueController.isWorkspacesEnabled?{version:null===(e=this.glueController.clientGlue.workspaces)||void 0===e?void 0:e.version,frameUrl:this.workspacesFrameUrl}:void 0}}getDisplays(){return __awaiter$7(this,void 0,void 0,(function*(){const{state:e}=yield navigator.permissions.query({name:"window-placement"});if("granted"!==e)return[];return(yield window.getScreenDetails()).screens.map((e=>({bounds:{x:e.left,y:e.top,width:e.width,height:e.height},workingArea:{x:e.availLeft,y:e.availTop,width:e.availWidth,height:e.availHeight},dpi:e.devicePixelRatio,isPrimary:e.isPrimary})))}))}}const defaultDataRefreshIntervalMS=6e4,defaultTokenRefreshIntervalMS=36e5;class Session{constructor(e,t){this.glueController=e,this.layoutsController=t,this.sessionInitiated=!1}get logger(){return logger.get("manager.session")}openSession(e,t,n,r){var i,o,l;return __awaiter$7(this,void 0,void 0,(function*(){if(this.sessionInitiated)throw new Error("A server session has already been initiated");this.serverConfig=r,this.client=e,this.sessionInitiated=!0;const s=yield this.client.openSession(t,n);null===(i=this.logger)||void 0===i||i.trace("The client session has been opened successfully"),this.token=s.token,yield this.updateApplications(null===(o=s.data)||void 0===o?void 0:o.applications),yield this.updateLayouts(null===(l=s.data)||void 0===l?void 0:l.layouts),this.refreshData().catch((e=>{var t;null===(t=this.logger)||void 0===t||t.warn(`Error while fetching server snapshot: ${JSON.stringify(e)}`)})),this.refreshToken().catch((e=>{var t;null===(t=this.logger)||void 0===t||t.warn(`Error while refreshing the server token: ${JSON.stringify(e)}`)}))}))}closeSession(){return __awaiter$7(this,void 0,void 0,(function*(){this.sessionInitiated=!1,yield this.client.closeSession()}))}refreshData(){var e,t,n,r,i,o;return __awaiter$7(this,void 0,void 0,(function*(){if(this.sessionInitiated){yield this.waitInterval((null===(e=this.serverConfig)||void 0===e?void 0:e.fetchIntervalMS)||defaultDataRefreshIntervalMS);try{null===(t=this.logger)||void 0===t||t.trace("Sending a fresh snapshot request");const e=yield this.client.refreshData({applications:{include:!0,latestDataInfo:null===(n=this.lastApps)||void 0===n?void 0:n.info},layouts:{include:!0,latestDataInfo:null===(r=this.lastLayouts)||void 0===r?void 0:r.info},commands:{include:!1}});null===(i=this.logger)||void 0===i||i.trace("Got a snapshot response, processing the applications and layouts"),yield this.updateApplications(e.applications),yield this.updateLayouts(e.layouts)}catch(e){const t="string"==typeof e?e:JSON.stringify(e.message);null===(o=this.logger)||void 0===o||o.warn(`An error occurred while refreshing the server snapshot: ${t}`)}finally{this.refreshData()}}}))}refreshToken(){var e,t,n,r;return __awaiter$7(this,void 0,void 0,(function*(){if(this.sessionInitiated){yield this.waitInterval((null===(e=this.serverConfig)||void 0===e?void 0:e.tokenRefreshIntervalMS)||defaultTokenRefreshIntervalMS);try{null===(t=this.logger)||void 0===t||t.trace("Sending a fresh token refresh request");const e=yield this.client.refreshToken();this.token=e,null===(n=this.logger)||void 0===n||n.trace("Server token refreshed successfully")}catch(e){const t="string"==typeof e?e:JSON.stringify(e.message);null===(r=this.logger)||void 0===r||r.warn(`An error occurred while refreshing the server token: ${t}`)}finally{this.refreshToken()}}}))}waitInterval(e){return new Promise((t=>setTimeout(t,e)))}updateApplications(e){return __awaiter$7(this,void 0,void 0,(function*(){e&&e.hasChanges&&(this.lastApps=e,yield this.glueController.processServerApplicationsData(e))}))}updateLayouts(e){return __awaiter$7(this,void 0,void 0,(function*(){e&&e.hasChanges&&(this.lastLayouts=e,yield this.processServerLayoutsData(e))}))}processServerLayoutsData(e){var t;return __awaiter$7(this,void 0,void 0,(function*(){if(!e||!e.data)return;const n=e.data.map((e=>"string"==typeof e.definition?JSON.parse(e.definition):e.definition));try{const e=this.sanitizeLayouts(n),t=n.filter((t=>e.valid.some((e=>e.name===t.name))));yield this.layoutsController.handleImport({layouts:t,mode:"merge",isManagerOperation:!0},"ManagerOperation")}catch(e){const n=extractErrorMsg$1(e);null===(t=this.logger)||void 0===t||t.warn(`An error importing layouts: ${n}`)}}))}sanitizeLayouts(e){return e.reduce(((e,t)=>{var n;const r=glueLayoutDecoder.run(t);return r.ok?e.valid.push(t):null===(n=this.logger)||void 0===n||n.warn(`A layout with name: ${t.name} was not imported, because of error: ${JSON.stringify(r.error)}`),e}),{valid:[]})}}const prefsOperationTypesDecoder=oneOf$1(constant$1("operationCheck"),constant$1("clear"),constant$1("clearAll"),constant$1("get"),constant$1("getAll"),constant$1("set"),constant$1("update"),constant$1("prefsHello")),appPreferencesDecoder=object$1({app:nonEmptyStringDecoder$1,data:object$1(),lastUpdate:optional$1(nonEmptyStringDecoder$1)}),basePrefsConfigDecoder=object$1({app:nonEmptyStringDecoder$1}),getPrefsResultDecoder=object$1({prefs:appPreferencesDecoder}),getAllPrefsResultDecoder=object$1({all:array$1(appPreferencesDecoder)}),changePrefsDataDecoder=object$1({app:nonEmptyStringDecoder$1,data:object$1()}),prefsHelloSuccessDecoder=object$1({platform:object$1({app:nonEmptyStringDecoder$1})});class PrefsController{constructor(e,t,n){this.glueController=e,this.idbController=t,this.managerController=n,this.operations={operationCheck:{name:"operationCheck",dataDecoder:operationCheckConfigDecoder,resultDecoder:operationCheckResultDecoder,execute:this.handleOperationCheck.bind(this)},clear:{name:"clear",execute:this.clear.bind(this),dataDecoder:basePrefsConfigDecoder},clearAll:{name:"clearAll",execute:this.clearAll.bind(this)},get:{name:"get",execute:this.get.bind(this),dataDecoder:basePrefsConfigDecoder,resultDecoder:getPrefsResultDecoder},getAll:{name:"getAll",execute:this.getAll.bind(this),resultDecoder:getAllPrefsResultDecoder},set:{name:"set",execute:this.set.bind(this),dataDecoder:changePrefsDataDecoder},update:{name:"update",execute:this.update.bind(this),dataDecoder:changePrefsDataDecoder},prefsHello:{name:"prefsHello",execute:this.prefsHello.bind(this),resultDecoder:prefsHelloSuccessDecoder}},this.started=!1,this.platformAppName=`Platform-${window.location.origin}`}get logger(){return logger.get("prefs.controller")}get shouldUseManager(){var e,t;return this.managerController.isStarted&&"local"!==(null===(t=null===(e=this.config)||void 0===e?void 0:e.store)||void 0===t?void 0:t.type)}handlePlatformShutdown(){this.started=!1}start(e){var t,n,r,i,o;return __awaiter$7(this,void 0,void 0,(function*(){null===(t=this.logger)||void 0===t||t.trace("initializing prefs"),this.started=!0,this.config=e.applicationPreferences,"manager"!==(null===(r=null===(n=this.config)||void 0===n?void 0:n.store)||void 0===r?void 0:r.type)||e.manager||null===(i=this.logger)||void 0===i||i.warn("Prefs store type is set to 'manager', but ioManager is not started"),null===(o=this.logger)||void 0===o||o.trace("initialization is completed")}))}handleControl(e){var t,n,r,i;return __awaiter$7(this,void 0,void 0,(function*(){if(!this.started)throw new Error("Cannot handle this prefs control message, because the controller has not been started");const o=e.data,l=e.commandId,s=prefsOperationTypesDecoder.run(e.operation);if(!s.ok)throw new Error(`This prefs request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(s.error)}`);const a=s.result,u=null===(t=this.operations[a].dataDecoder)||void 0===t?void 0:t.run(o);if(u&&!u.ok)throw new Error(`Prefs request for ${a} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(u.error)}`);null===(n=this.logger)||void 0===n||n.debug(`[${l}] ${a} command is valid with data: ${JSON.stringify(o)}`);const c=yield this.operations[a].execute(o,l),h=null===(r=this.operations[a].resultDecoder)||void 0===r?void 0:r.run(c);if(h&&!h.ok)throw new Error(`Prefs request for ${a} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(h.error)}`);return null===(i=this.logger)||void 0===i||i.trace(`[${l}] ${a} command was executed successfully`),c}))}handleOperationCheck(e){return __awaiter$7(this,void 0,void 0,(function*(){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}))}clear({app:e},t){return __awaiter$7(this,void 0,void 0,(function*(){this.trace(`[${t}] handling clear command with app: ${e}`,t);const n=this.validateApp(e),r=yield this.idbController.setPrefs({app:n,data:{},lastUpdate:this.getLastUpdateTimestamp()});yield this.callManagerIfApplicable((()=>this.managerController.setPrefs(r,t))),this.emitStreamData("prefsChanged",{prefs:r})}))}clearAll(e,t){return __awaiter$7(this,void 0,void 0,(function*(){this.trace(`[${t}] handling clearAll command`,t);const e=yield this.idbController.clearAllPrefs(this.getLastUpdateTimestamp());yield this.callManagerIfApplicable((()=>this.managerController.clearAllPrefs(e.map((({app:e})=>e)),t))),e.forEach((e=>this.emitStreamData("prefsChanged",{prefs:e})))}))}get({app:e},t){var n;return __awaiter$7(this,void 0,void 0,(function*(){this.trace(`[${t}] handling get command with app: ${e}`,t);const r={app:e,data:{}};if(!this.shouldUseManager){return{prefs:(yield this.idbController.getPrefs(e))||r}}let i;try{i=yield this.managerController.getPrefs(e,t)}catch(t){null===(n=this.logger)||void 0===n||n.warn(extractErrorMsg$1(t));return{prefs:(yield this.idbController.getPrefs(e))||r}}return i?(yield this.idbController.setPrefs(i),{prefs:i}):(yield this.idbController.deletePrefs(e),{prefs:r})}))}getAll(e,t){var n;return __awaiter$7(this,void 0,void 0,(function*(){if(this.trace(`[${t}] handling getAll command`,t),!this.shouldUseManager){return{all:yield this.idbController.getAllPrefs()}}let e;try{e=yield this.managerController.getAllPrefs(t)}catch(e){null===(n=this.logger)||void 0===n||n.warn(extractErrorMsg$1(e));return{all:yield this.idbController.getAllPrefs()}}return yield this.idbController.replaceAllPrefs(e),{all:e}}))}set({app:e,data:t},n){return __awaiter$7(this,void 0,void 0,(function*(){this.trace(`[${n}] handling set command with app: ${e} and data: ${JSON.stringify(t)}`,n);const r=this.validateApp(e),i=yield this.idbController.setPrefs({app:r,data:t,lastUpdate:this.getLastUpdateTimestamp()});yield this.callManagerIfApplicable((()=>this.managerController.setPrefs(i,n))),this.emitStreamData("prefsChanged",{prefs:i})}))}update({app:e,data:t},n){return __awaiter$7(this,void 0,void 0,(function*(){this.trace(`[${n}] handling update command with app: ${e} and data: ${JSON.stringify(t)}`,n);const r=this.validateApp(e),i=yield this.idbController.updatePrefs({app:r,data:t,lastUpdate:this.getLastUpdateTimestamp()});yield this.callManagerIfApplicable((()=>this.managerController.setPrefs(i,n))),this.emitStreamData("prefsChanged",{prefs:i})}))}prefsHello(){return __awaiter$7(this,void 0,void 0,(function*(){return{platform:{app:this.platformAppName}}}))}getLastUpdateTimestamp(){return(new Date).toISOString()}callManagerIfApplicable(e){var t;return __awaiter$7(this,void 0,void 0,(function*(){if(this.shouldUseManager)try{yield e()}catch(e){null===(t=this.logger)||void 0===t||t.warn(extractErrorMsg$1(e))}}))}validateApp(e){const t=this.glueController.getAllApplicationNames();if(!(e===this.platformAppName||t.includes(e)))throw new Error(`The provided app name "${e}" is not valid.`);return e}trace(e,t){var n;t&&(null===(n=this.logger)||void 0===n||n.trace(e))}emitStreamData(e,t){var n;null===(n=this.logger)||void 0===n||n.trace(`sending notification of event: ${e} with data: ${JSON.stringify(t)}`),this.glueController.pushSystemMessage("prefs",e,t)}}class IoC{constructor(e){this.config=e}get gateway(){return this._gatewayInstance||(this._gatewayInstance=new Gateway),this._gatewayInstance}get platform(){return this._platformInstance||(this._platformInstance=new Platform(this.controller,this.sessionController,this.localStorageController,this.config)),this._platformInstance}get domainsController(){return this._domainsController||(this._domainsController=new DomainsController(this.systemController,this.windowsController,this.applicationsController,this.layoutsController,this.workspacesController,this.intentsController,this.channelsController,this.notificationsController,this.extensionController,this.searchController,this.themesController,this.managerController,this.prefsController)),this._domainsController}get controller(){return this._mainController||(this._mainController=new PlatformController(this.domainsController,this.glueController,this.portsBridge,this.stateController,this.serviceWorkerController,this.preferredConnectionController,this.interceptionController,this.pluginsController,this.sessionController,this.licenseController,this.localStorageController,this.idbController)),this._mainController}get glueController(){return this._glueController||(this._glueController=new GlueController(this.portsBridge,this.sessionController)),this._glueController}get systemController(){return this._systemController||(this._systemController=new SystemController(this.sessionController)),this._systemController}get searchController(){return this._searchController||(this._searchController=new SearchController(this.glueController,this.appsSearchRepo,this.layoutsSearchRepo,this.workspacesSearchRepo)),this._searchController}get themesController(){return this._themesController||(this._themesController=new ThemesController(this.glueController,this.localStorageController)),this._themesController}get sessionController(){return this._sessionController||(this._sessionController=new SessionStorageController),this._sessionController}get localStorageController(){return this._localStorageController||(this._localStorageController=new LocalStoreController),this._localStorageController}get stateController(){return this._stateChecker||(this._stateChecker=new WindowsStateController(this.sessionController)),this._stateChecker}get windowsController(){return this._windowsController||(this._windowsController=new WindowsController(this.glueController,this.sessionController,this.stateController,this)),this._windowsController}get applicationsController(){return this._applicationsController||(this._applicationsController=new ApplicationsController(this.glueController,this.sessionController,this.stateController,this.appDirectory,this)),this._applicationsController}get appDirectory(){return this._appDirectory||(this._appDirectory=new AppDirectory(this.sessionController,this.remoteWatcher)),this._appDirectory}get remoteWatcher(){return this._remoteWatcher||(this._remoteWatcher=new RemoteWatcher),this._remoteWatcher}get licenseController(){return this._licenseController||(this._licenseController=new LicenseController),this._licenseController}get layoutsController(){return this._layoutsController||(this._layoutsController=new LayoutsController(this.glueController,this.idbController,this.sessionController,this.localStorageController,this.layoutsBuilder,this.layoutsRestorer,CallbackRegistryFactory(),this.getManager.bind(this))),this._layoutsController}get workspacesController(){return this._workspacesController||(this._workspacesController=new WorkspacesController(this.framesController,this.glueController,this.stateController,this.hibernationWatcher,this)),this._workspacesController}get hibernationWatcher(){return this._hibernationWatcher||(this._hibernationWatcher=new WorkspaceHibernationWatcher(this.sessionController,this.createSequelizer())),this._hibernationWatcher}get intentsController(){return this._intentsController||(this._intentsController=new IntentsController(this.glueController,this.intentsResolverHelper,this.appDirectory,this)),this._intentsController}get intentsResolverHelper(){return this._intentsResolverController||(this._intentsResolverController=new IntentsResolverHelper(this.glueController,this.workspacesController,this.windowsController)),this._intentsResolverController}get channelsController(){return this._channelsController||(this._channelsController=new ChannelsController(this.glueController)),this._channelsController}get extensionController(){return this._extensionController||(this._extensionController=new ExtensionController(this.sessionController)),this._extensionController}get layoutsBuilder(){return this._layoutsBuilder||(this._layoutsBuilder=new Builder(this.glueController,this.sessionController,this.windowsController,this.workspacesController)),this._layoutsBuilder}get layoutsRestorer(){return this._layoutsRestorer||(this._layoutsRestorer=new Restorer(this.glueController,this.layoutsValidator,this.layoutsResetter,this.workspacesController)),this._layoutsRestorer}get layoutsValidator(){return this._layoutsValidator||(this._layoutsValidator=new LayoutValidator(this.glueController,this.workspacesController)),this._layoutsValidator}get layoutsResetter(){return this._layoutsResetter||(this._layoutsResetter=new Resetter(this.glueController,this.workspacesController)),this._layoutsResetter}get notificationsController(){return this._notificationsController||(this._notificationsController=new NotificationsController(this.glueController,this.serviceWorkerController,this.sessionController,this.localStorageController)),this._notificationsController}get framesController(){return this._framesController||(this._framesController=new FramesController(this.sessionController,this.glueController,this)),this._framesController}get idbController(){return this._idbController||(this._idbController=new IDBController),this._idbController}get portsBridge(){return this._portsBridge||(this._portsBridge=new PortsBridge(this.gateway,this.sessionController,this)),this._portsBridge}get serviceWorkerController(){return this._serviceWorkerController||(this._serviceWorkerController=new ServiceWorkerController(this.idbController)),this._serviceWorkerController}get transactionsController(){return this._transactionsController||(this._transactionsController=new TransactionsController),this._transactionsController}get interceptionController(){return this._interceptionController||(this._interceptionController=new InterceptionController),this._interceptionController}get pluginsController(){return this._pluginsController||(this._pluginsController=new PluginsController(this.interceptionController,this.glueController)),this._pluginsController}get appsSearchRepo(){return this._appsSearchRepo||(this._appsSearchRepo=new ApplicationsRepository(this.glueController)),this._appsSearchRepo}get managerController(){return this._managerController||(this._managerController=new ManagerController(this.layoutsController,this.managerIdentity,this.managerSession,this.buildClient.bind(this))),this._managerController}get managerIdentity(){var e,t;return this._managerIdentity||(this._managerIdentity=new Identity(new uaParserExports.UAParser,this.glueController,this.pluginsController,null===(t=null===(e=this.config)||void 0===e?void 0:e.workspaces)||void 0===t?void 0:t.src)),this._managerIdentity}get managerSession(){return this._managerSession||(this._managerSession=new Session(this.glueController,this.layoutsController)),this._managerSession}get layoutsSearchRepo(){return this._layoutsSearchRepo||(this._layoutsSearchRepo=new LayoutsRepository(this.glueController)),this._layoutsSearchRepo}get workspacesSearchRepo(){return this._workspacesSearchRepo||(this._workspacesSearchRepo=new WorkspacesRepository(this.glueController)),this._workspacesSearchRepo}get preferredConnectionController(){return this._preferredConnectionController||(this._preferredConnectionController=new PreferredConnectionController(this.glueController,this.portsBridge,this.createSequelizer())),this._preferredConnectionController}get prefsController(){return this._prefsController||(this._prefsController=new PrefsController(this.glueController,this.idbController,this.managerController)),this._prefsController}createMessageChannel(){return new MessageChannel}createSequelizer(e){return new AsyncSequelizer(e)}buildClient(e){return new client$1.ClientAPI(e)}getManager(){return this.managerController}}const ioConnectBrowserPlatformFactory=e=>__awaiter$7(void 0,void 0,void 0,(function*(){var t;if(window.glue42gd||window.iodesktop)return fallbackToEnterprise(e);const n=!(null===(t=e.connection)||void 0===t?void 0:t.alwaysPlatform)&&(yield checkIsOpenerIOConnect(null==e?void 0:e.connection)),r=checkIfPlacedInWorkspace();if((null==e?void 0:e.clientOnly)||n||r){return{io:(null==e?void 0:e.browserFactory)?yield null==e?void 0:e.browserFactory(null==e?void 0:e.browser):yield iOConnectBrowserFactory(null==e?void 0:e.browser)}}const i=new IoC(e);yield i.platform.ready();return{io:i.platform.getClientGlue(),platform:null==i?void 0:i.platform.getPlatformApi()}}));"undefined"!=typeof window&&(window.IOBrowserPlatform=ioConnectBrowserPlatformFactory);const legacyGlobal=window.glue42gd||window.glue42core,ioGlobal=window.iodesktop||window.iobrowser;legacyGlobal||ioGlobal||(window.iobrowser={webStarted:!1});export{ioConnectBrowserPlatformFactory as default}; +var du=function(){var e=new RegExp('(?:false|true|null|[\\{\\}\\[\\]]|(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)|(?:"(?:[^\\0-\\x08\\x0a-\\x1f"\\\\]|\\\\(?:["/\\\\bfnrt]|u[0-9A-Fa-f]{4}))*"))',"g"),t=new RegExp("\\\\(?:([^u])|u(.{4}))","g"),n={'"':'"',"/":"/","\\":"\\",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"};function r(e,t,r){return t?n[t]:String.fromCharCode(parseInt(r,16))}var i=new String(""),s=Object.hasOwnProperty;return function(n,o){var a,c,l=n.match(e),u=l[0],h=!1;"{"===u?a={}:"["===u?a=[]:(a=[],h=!0);for(var d=[a],p=1-h,g=l.length;p=0;)delete n[r[c]]}return o.call(e,t,n)};a=m({"":a},"")}return a}}();void 0!==pu&&pu||(pu={}),void 0!==pu.asn1&&pu.asn1||(pu.asn1={}),pu.asn1.ASN1Util=new function(){this.integerToByteHex=function(e){var t=e.toString(16);return t.length%2==1&&(t="0"+t),t},this.bigIntToMinTwosComplementsHex=function(e){return Vu(e)},this.getPEMStringFromHex=function(e,t){return _u(e,t)},this.newObject=function(e){var t=pu.asn1,n=t.ASN1Object,r=t.DERBoolean,i=t.DERInteger,s=t.DERBitString,o=t.DEROctetString,a=t.DERNull,c=t.DERObjectIdentifier,l=t.DEREnumerated,u=t.DERUTF8String,h=t.DERNumericString,d=t.DERPrintableString,p=t.DERTeletexString,g=t.DERIA5String,f=t.DERUTCTime,m=t.DERGeneralizedTime,y=t.DERVisibleString,w=t.DERBMPString,v=t.DERSequence,b=t.DERSet,S=t.DERTaggedObject,C=t.ASN1Util.newObject;if(e instanceof t.ASN1Object)return e;var x=Object.keys(e);if(1!=x.length)throw new Error("key of param shall be only one.");var I=x[0];if(-1==":asn1:bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:visstr:bmpstr:seq:set:tag:".indexOf(":"+I+":"))throw new Error("undefined key: "+I);if("bool"==I)return new r(e[I]);if("int"==I)return new i(e[I]);if("bitstr"==I)return new s(e[I]);if("octstr"==I)return new o(e[I]);if("null"==I)return new a(e[I]);if("oid"==I)return new c(e[I]);if("enum"==I)return new l(e[I]);if("utf8str"==I)return new u(e[I]);if("numstr"==I)return new h(e[I]);if("prnstr"==I)return new d(e[I]);if("telstr"==I)return new p(e[I]);if("ia5str"==I)return new g(e[I]);if("utctime"==I)return new f(e[I]);if("gentime"==I)return new m(e[I]);if("visstr"==I)return new y(e[I]);if("bmpstr"==I)return new w(e[I]);if("asn1"==I)return new n(e[I]);if("seq"==I){for(var E=e[I],A=[],k=0;k15)throw new Error("ASN.1 length too long to represent by 8x: n = "+e.toString(16));return(128+n).toString(16)+t},this.tohex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV},this.getEncodedHex=function(){return this.tohex()},this.getValueHex=function(){return this.tohex(),this.hV},this.getFreshValueHex=function(){return""},this.setByParam=function(e){this.params=e},null!=e&&null!=e.tlv&&(this.hTLV=e.tlv,this.isModified=!1)},pu.asn1.DERAbstractString=function(e){pu.asn1.DERAbstractString.superclass.constructor.call(this),this.getString=function(){return this.s},this.setString=function(e){this.hTLV=null,this.isModified=!0,this.s=e,this.hV=xu(this.s).toLowerCase()},this.setStringHex=function(e){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=e},this.getFreshValueHex=function(){return this.hV},void 0!==e&&("string"==typeof e?this.setString(e):void 0!==e.str?this.setString(e.str):void 0!==e.hex&&this.setStringHex(e.hex))},Qu(pu.asn1.DERAbstractString,pu.asn1.ASN1Object),pu.asn1.DERAbstractTime=function(e){pu.asn1.DERAbstractTime.superclass.constructor.call(this),this.localDateToUTC=function(e){var t=e.getTime()+6e4*e.getTimezoneOffset();return new Date(t)},this.formatDate=function(e,t,n){var r=this.zeroPadding,i=this.localDateToUTC(e),s=String(i.getFullYear());"utc"==t&&(s=s.substr(2,2));var o=s+r(String(i.getMonth()+1),2)+r(String(i.getDate()),2)+r(String(i.getHours()),2)+r(String(i.getMinutes()),2)+r(String(i.getSeconds()),2);if(!0===n){var a=i.getMilliseconds();if(0!=a){var c=r(String(a),3);o=o+"."+(c=c.replace(/[0]+$/,""))}}return o+"Z"},this.zeroPadding=function(e,t){return e.length>=t?e:new Array(t-e.length+1).join("0")+e},this.setByParam=function(e){this.hV=null,this.hTLV=null,this.params=e},this.getString=function(){},this.setString=function(e){this.hTLV=null,this.isModified=!0,null==this.params&&(this.params={}),this.params.str=e},this.setByDate=function(e){this.hTLV=null,this.isModified=!0,null==this.params&&(this.params={}),this.params.date=e},this.setByDateValue=function(e,t,n,r,i,s){var o=new Date(Date.UTC(e,t-1,n,r,i,s,0));this.setByDate(o)},this.getFreshValueHex=function(){return this.hV}},Qu(pu.asn1.DERAbstractTime,pu.asn1.ASN1Object),pu.asn1.DERAbstractStructured=function(e){pu.asn1.DERAbstractString.superclass.constructor.call(this),this.setByASN1ObjectArray=function(e){this.hTLV=null,this.isModified=!0,this.asn1Array=e},this.appendASN1Object=function(e){this.hTLV=null,this.isModified=!0,this.asn1Array.push(e)},this.asn1Array=new Array,void 0!==e&&void 0!==e.array&&(this.asn1Array=e.array)},Qu(pu.asn1.DERAbstractStructured,pu.asn1.ASN1Object),pu.asn1.DERBoolean=function(e){pu.asn1.DERBoolean.superclass.constructor.call(this),this.hT="01",this.hTLV=0==e?"010100":"0101ff"},Qu(pu.asn1.DERBoolean,pu.asn1.ASN1Object),pu.asn1.DERInteger=function(e){pu.asn1.DERInteger.superclass.constructor.call(this),this.hT="02",this.params=null;var t=Vu;this.setByBigInteger=function(e){this.isModified=!0,this.params={bigint:e}},this.setByInteger=function(e){this.isModified=!0,this.params=e},this.setValueHex=function(e){this.isModified=!0,this.params={hex:e}},this.getFreshValueHex=function(){var e=this.params,n=null;if(null==e)throw new Error("value not set");if("object"==typeof e&&null!=e.hex)return this.hV=e.hex,this.hV;if("number"==typeof e)n=new Al(String(e),10);else if(null!=e.int)n=new Al(String(e.int),10);else{if(null==e.bigint)throw new Error("wrong parameter");n=e.bigint}return this.hV=t(n),this.hV},null!=e&&(this.params=e)},Qu(pu.asn1.DERInteger,pu.asn1.ASN1Object),pu.asn1.DERBitString=function(e){if(void 0!==e&&void 0!==e.obj){var t=pu.asn1.ASN1Util.newObject(e.obj);e.hex="00"+t.tohex()}pu.asn1.DERBitString.superclass.constructor.call(this),this.hT="03",this.setHexValueIncludingUnusedBits=function(e){this.hTLV=null,this.isModified=!0,this.hV=e},this.setUnusedBitsAndHexValue=function(e,t){if(e<0||7>6).toString(16)+r.toString(16))}r=128|(15&t)<<2|(192&n)>>6;var i=128|63&n;return Iu((224|(240&t)>>4).toString(16)+r.toString(16)+i.toString(16))}));return t.join("")}function Bu(e){for(var t=encodeURIComponent(e),n="",r=0;r"7"?"00"+e:e}function Uu(e){if(!Lu(e))return null;try{var t=[],n=e.substr(0,2),r=parseInt(n,16);t[0]=new String(Math.floor(r/40)),t[1]=new String(r%40);for(var i=e.substr(2),s=[],o=0;o0&&(l=l+"."+a.join(".")),l}catch(e){return null}}function Gu(e){return Vu(new Al(String(e),10))}function Vu(e){var t=e.toString(16);if("-"!=t.substr(0,1))return t.length%2==1?t="0"+t:t.match(/^[0-7]/)||(t="00"+t),t;var n=t.substr(1).length;n%2==1?n+=1:t.match(/^[0-7]/)||(n+=2);for(var r="",i=0;i=r)break}return o},mu.getNthChildIdx=function(e,t,n){return mu.getChildIdx(e,t)[n]},mu.getIdxbyList=function(e,t,n,r){var i,s,o=mu;return 0==n.length?void 0!==r&&e.substr(t,2)!==r?-1:t:(i=n.shift())>=(s=o.getChildIdx(e,t)).length?-1:o.getIdxbyList(e,s[i],n,r)},mu.getIdxbyListEx=function(e,t,n,r){var i,s,o=mu;if(0==n.length)return void 0!==r&&e.substr(t,2)!==r?-1:t;i=n.shift(),s=o.getChildIdx(e,t);for(var a=0,c=0;c=e.length?null:i.getTLV(e,s)},mu.getTLVbyListEx=function(e,t,n,r){var i=mu,s=i.getIdxbyListEx(e,t,n,r);return-1==s?null:i.getTLV(e,s)},mu.getVbyList=function(e,t,n,r,i){var s,o,a=mu;return-1==(s=a.getIdxbyList(e,t,n,r))||s>=e.length?null:(o=a.getV(e,s),!0===i&&(o=o.substr(2)),o)},mu.getVbyListEx=function(e,t,n,r,i){var s,o,a=mu;return-1==(s=a.getIdxbyListEx(e,t,n,r))?null:(o=a.getV(e,s),"03"==e.substr(s,2)&&!1!==i&&(o=o.substr(2)),o)},mu.getInt=function(e,t,n){null==n&&(n=-1);try{var r=e.substr(t,2);if("02"!=r&&"03"!=r)return n;var i=mu.getV(e,t);return"02"==r?parseInt(i,16):function(e){if(e.length%2!=0)return-1;if(e=e.toLowerCase(),null==e.match(/^[0-9a-f]+$/))return-1;try{var t=e.substr(0,2);if("00"==t)return parseInt(e.substr(2),16);var n=parseInt(t,16);if(n>7)return-1;var r=e.substr(2),i=parseInt(r,16).toString(2);"0"==i&&(i="00000000"),i=i.slice(0,0-n);var s=parseInt(i,2);return NaN==s?-1:s}catch(e){return-1}}(i)}catch(e){return n}},mu.getOID=function(e,t,n){null==n&&(n=null);try{return"06"!=e.substr(t,2)?n:Uu(mu.getV(e,t))}catch(e){return n}},mu.getOIDName=function(e,t,n){null==n&&(n=null);try{var r=mu.getOID(e,t,n);if(r==n)return n;var i=pu.asn1.x509.OID.oid2name(r);return""==i?r:i}catch(e){return n}},mu.getString=function(e,t,n){null==n&&(n=null);try{return Au(mu.getV(e,t))}catch(e){return n}},mu.hextooidstr=function(e){var t=function(e,t){return e.length>=t?e:new Array(t-e.length+1).join("0")+e},n=[],r=e.substr(0,2),i=parseInt(r,16);n[0]=new String(Math.floor(i/40)),n[1]=new String(i%40);for(var s=e.substr(2),o=[],a=0;a0&&(u=u+"."+c.join(".")),u},mu.dump=function(e,t,n,r){var i=mu,s=i.getV,o=i.dump,a=i.getChildIdx,c=e;e instanceof pu.asn1.ASN1Object&&(c=e.tohex());var l=function(e,t){return e.length<=2*t?e:e.substr(0,t)+"..(total "+e.length/2+"bytes).."+e.substr(e.length-t,t)};void 0===t&&(t={ommit_long_octet:32}),void 0===n&&(n=0),void 0===r&&(r="");var u,h=t.ommit_long_octet;if("01"==(u=c.substr(n,2)))return"00"==(d=s(c,n))?r+"BOOLEAN FALSE\n":r+"BOOLEAN TRUE\n";if("02"==u)return r+"INTEGER "+l(d=s(c,n),h)+"\n";if("03"==u){var d=s(c,n);if(i.isASN1HEX(d.substr(2))){var p=r+"BITSTRING, encapsulates\n";return p+=o(d.substr(2),t,0,r+" ")}return r+"BITSTRING "+l(d,h)+"\n"}if("04"==u){d=s(c,n);if(i.isASN1HEX(d)){p=r+"OCTETSTRING, encapsulates\n";return p+=o(d,t,0,r+" ")}return r+"OCTETSTRING "+l(d,h)+"\n"}if("05"==u)return r+"NULL\n";if("06"==u){var g=s(c,n),f=pu.asn1.ASN1Util.oidHexToInt(g),m=pu.asn1.x509.OID.oid2name(f),y=f.replace(/\./g," ");return""!=m?r+"ObjectIdentifier "+m+" ("+y+")\n":r+"ObjectIdentifier ("+y+")\n"}if("0a"==u)return r+"ENUMERATED "+parseInt(s(c,n))+"\n";if("0c"==u)return r+"UTF8String '"+Iu(s(c,n))+"'\n";if("13"==u)return r+"PrintableString '"+Iu(s(c,n))+"'\n";if("14"==u)return r+"TeletexString '"+Iu(s(c,n))+"'\n";if("16"==u)return r+"IA5String '"+Iu(s(c,n))+"'\n";if("17"==u)return r+"UTCTime "+Iu(s(c,n))+"\n";if("18"==u)return r+"GeneralizedTime "+Iu(s(c,n))+"\n";if("1a"==u)return r+"VisualString '"+Iu(s(c,n))+"'\n";if("1e"==u)return r+"BMPString '"+qu(s(c,n))+"'\n";if("30"==u){if("3000"==c.substr(n,4))return r+"SEQUENCE {}\n";p=r+"SEQUENCE\n";var w=t;if((2==(S=a(c,n)).length||3==S.length)&&"06"==c.substr(S[0],2)&&"04"==c.substr(S[S.length-1],2)){m=i.oidname(s(c,S[0]));var v=JSON.parse(JSON.stringify(t));v.x509ExtName=m,w=v}for(var b=0;b4?{enum:{hex:m}}:{enum:parseInt(m,16)};if("30"==g||"31"==g)return f[p[g]]=function(e){for(var t=[],r=o(e,0),i=0;i31)&&(128==(192&n)&&(31&n)==r))}catch(e){return!1}},mu.isASN1HEX=function(e){var t=mu;if(e.length%2==1)return!1;var n=t.getVblen(e,0),r=e.substr(0,2),i=t.getL(e,0);return e.length-r.length-i.length==2*n},mu.checkStrictDER=function(e,t,n,r,i){var s=mu;if(void 0===n){if("string"!=typeof e)throw new Error("not hex string");if(e=e.toLowerCase(),!pu.lang.String.isHex(e))throw new Error("not hex string");n=e.length,i=(r=e.length/2)<128?1:Math.ceil(r.toString(16))+1}if(s.getL(e,t).length>2*i)throw new Error("L of TLV too long: idx="+t);var o=s.getVblen(e,t);if(o>r)throw new Error("value of L too long than hex: idx="+t);var a=s.getTLV(e,t),c=a.length-2-s.getL(e,t).length;if(c!==2*o)throw new Error("V string length and L's value not the same:"+c+"/"+2*o);if(0===t&&e.length!=a.length)throw new Error("total length and TLV length unmatch:"+e.length+"!="+a.length);var l=e.substr(t,2);if("02"===l){var u=s.getVidx(e,t);if("00"==e.substr(u,2)&&e.charCodeAt(u+2)<56)throw new Error("not least zeros for DER INTEGER")}if(32&parseInt(l,16)){for(var h=s.getVblen(e,t),d=0,p=s.getChildIdx(e,t),g=0;g0&&e.push(new r({tag:"a3",obj:new l(t.ext)})),new pu.asn1.DERSequence({array:e}).tohex()},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&this.setByParam(e)},Qu(pu.asn1.x509.TBSCertificate,pu.asn1.ASN1Object),pu.asn1.x509.Extensions=function(e){pu.asn1.x509.Extensions.superclass.constructor.call(this);var t=pu.asn1,n=t.DERSequence,r=t.x509;this.aParam=[],this.setByParam=function(e){this.aParam=e},this.tohex=function(){for(var e=[],t=0;t-1&&e.push(new r({int:this.pathLen}));var t=new i({array:e});return this.asn1ExtnValue=t,this.asn1ExtnValue.tohex()},this.oid="2.5.29.19",this.cA=!1,this.pathLen=-1,void 0!==e&&(void 0!==e.cA&&(this.cA=e.cA),void 0!==e.pathLen&&(this.pathLen=e.pathLen))},Qu(pu.asn1.x509.BasicConstraints,pu.asn1.x509.Extension),pu.asn1.x509.CRLDistributionPoints=function(e){pu.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,e);var t=pu.asn1,n=t.x509;this.getExtnValueHex=function(){return this.asn1ExtnValue.tohex()},this.setByDPArray=function(e){for(var r=[],i=0;i0&&e.push(new n({array:t}))}return new n({array:e}).tohex()},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&(this.params=e)},Qu(pu.asn1.x509.PolicyInformation,pu.asn1.ASN1Object),pu.asn1.x509.PolicyQualifierInfo=function(e){pu.asn1.x509.PolicyQualifierInfo.superclass.constructor.call(this,e);var t=pu.asn1,n=t.DERSequence,r=t.DERIA5String,i=t.DERObjectIdentifier,s=t.x509.UserNotice;this.params=null,this.tohex=function(){return void 0!==this.params.cps?new n({array:[new i({oid:"1.3.6.1.5.5.7.2.1"}),new r({str:this.params.cps})]}).tohex():null!=this.params.unotice?new n({array:[new i({oid:"1.3.6.1.5.5.7.2.2"}),new s(this.params.unotice)]}).tohex():void 0},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&(this.params=e)},Qu(pu.asn1.x509.PolicyQualifierInfo,pu.asn1.ASN1Object),pu.asn1.x509.UserNotice=function(e){pu.asn1.x509.UserNotice.superclass.constructor.call(this,e);var t=pu.asn1.DERSequence;pu.asn1.DERInteger;var n=pu.asn1.x509.DisplayText,r=pu.asn1.x509.NoticeReference;this.params=null,this.tohex=function(){var e=[];return void 0!==this.params.noticeref&&e.push(new r(this.params.noticeref)),void 0!==this.params.exptext&&e.push(new n(this.params.exptext)),new t({array:e}).tohex()},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&(this.params=e)},Qu(pu.asn1.x509.UserNotice,pu.asn1.ASN1Object),pu.asn1.x509.NoticeReference=function(e){pu.asn1.x509.NoticeReference.superclass.constructor.call(this,e);var t=pu.asn1.DERSequence,n=pu.asn1.DERInteger,r=pu.asn1.x509.DisplayText;this.params=null,this.tohex=function(){var e=[];if(void 0!==this.params.org&&e.push(new r(this.params.org)),void 0!==this.params.noticenum){for(var i=[],s=this.params.noticenum,o=0;o0)for(var e=0;e0;i++){var s=t.shift();if(!0===n){var o=(r.pop()+","+s).replace(/\\,/g,",");r.push(o),n=!1}else r.push(s);"\\"===s.substr(-1,1)&&(n=!0)}return(r=r.map((function(e){return e.replace("/","\\/")}))).reverse(),"/"+r.join("/")},pu.asn1.x509.X500Name.ldapToOneline=function(e){return pu.asn1.x509.X500Name.ldapToCompat(e)},pu.asn1.x509.RDN=function(e){pu.asn1.x509.RDN.superclass.constructor.call(this),this.asn1Array=[],this.paramArray=[],this.sRule="utf8";var t=pu.asn1.x509.AttributeTypeAndValue;this.setByParam=function(e){void 0!==e.rule&&(this.sRule=e.rule),void 0!==e.str&&this.addByMultiValuedString(e.str),void 0!==e.array&&(this.paramArray=e.array)},this.addByString=function(e){this.asn1Array.push(new pu.asn1.x509.AttributeTypeAndValue({str:e,rule:this.sRule}))},this.addByMultiValuedString=function(e){for(var t=pu.asn1.x509.RDN.parseString(e),n=0;n0)for(var e=0;e0;i++){var s=t.shift();if(!0===n){var o=(r.pop()+"+"+s).replace(/\\\+/g,"+");r.push(o),n=!1}else r.push(s);"\\"===s.substr(-1,1)&&(n=!0)}var a=!1,c=[];for(i=0;r.length>0;i++){s=r.shift();if(!0===a){var l=c.pop();if(s.match(/"$/)){o=(l+"+"+s).replace(/^([^=]+)="(.*)"$/,"$1=$2");c.push(o),a=!1}else c.push(l+"+"+s)}else c.push(s);s.match(/^[^=]+="/)&&(a=!0)}return c},pu.asn1.x509.AttributeTypeAndValue=function(e){pu.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this),this.sRule="utf8",this.sType=null,this.sValue=null,this.dsType=null;var t=pu,n=t.asn1,r=n.DERSequence,i=n.DERUTF8String,s=n.DERPrintableString,o=n.DERTeletexString,a=n.DERIA5String,c=n.DERVisibleString,l=n.DERBMPString,u=t.lang.String.isMail,h=t.lang.String.isPrintable;this.setByParam=function(e){if(void 0!==e.rule&&(this.sRule=e.rule),void 0!==e.ds&&(this.dsType=e.ds),void 0===e.value&&void 0!==e.str){var t=e.str.match(/^([^=]+)=(.+)$/);if(!t)throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr);this.sType=t[1],this.sValue=t[2]}else this.sType=e.type,this.sValue=e.value},this.setByString=function(e,t){void 0!==t&&(this.sRule=t);var n=e.match(/^([^=]+)=(.+)$/);if(!n)throw new Error("malformed attrTypeAndValueStr: "+attrTypeAndValueStr);this.setByAttrTypeAndValueStr(n[1],n[2])},this._getDsType=function(){var e=this.sType,t=this.sValue,n=this.sRule;return"prn"===n?"CN"==e&&u(t)?"ia5":h(t)?"prn":"utf8":"utf8"===n?"CN"==e&&u(t)?"ia5":"C"==e?"prn":"utf8":"utf8"},this.setByAttrTypeAndValueStr=function(e,t,n){void 0!==n&&(this.sRule=n),this.sType=e,this.sValue=t},this.getValueObj=function(e,t){if("utf8"==e)return new i({str:t});if("prn"==e)return new s({str:t});if("tel"==e)return new o({str:t});if("ia5"==e)return new a({str:t});if("vis"==e)return new c({str:t});if("bmp"==e)return new l({str:t});throw new Error("unsupported directory string type: type="+e+" value="+t)},this.tohex=function(){null==this.dsType&&(this.dsType=this._getDsType());var e=pu.asn1.x509.OID.atype2obj(this.sType),t=this.getValueObj(this.dsType,this.sValue),n=new r({array:[e,t]});return this.TLV=n.tohex(),this.TLV},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&this.setByParam(e)},Qu(pu.asn1.x509.AttributeTypeAndValue,pu.asn1.ASN1Object),pu.asn1.x509.SubjectPublicKeyInfo=function(e){pu.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);var t=pu,n=t.asn1,r=n.DERInteger,i=n.DERBitString,s=n.DERObjectIdentifier,o=n.DERSequence,a=n.ASN1Util.newObject,c=n.x509.AlgorithmIdentifier,l=t.crypto;l.ECDSA,l.DSA,this.getASN1Object=function(){if(null==this.asn1AlgId||null==this.asn1SubjPKey)throw"algId and/or subjPubKey not set";return new o({array:[this.asn1AlgId,this.asn1SubjPKey]})},this.tohex=function(){var e=this.getASN1Object();return this.hTLV=e.tohex(),this.hTLV},this.getEncodedHex=function(){return this.tohex()},this.setPubKey=function(e){try{if(e instanceof cu){var t=a({seq:[{int:{bigint:e.n}},{int:{int:e.e}}]}).tohex();this.asn1AlgId=new c({name:"rsaEncryption"}),this.asn1SubjPKey=new i({hex:"00"+t})}}catch(e){}try{if(e instanceof pu.crypto.ECDSA){var n=new s({name:e.curveName});this.asn1AlgId=new c({name:"ecPublicKey",asn1params:n}),this.asn1SubjPKey=new i({hex:"00"+e.pubKeyHex})}}catch(e){}try{if(e instanceof pu.crypto.DSA){n=new a({seq:[{int:{bigint:e.p}},{int:{bigint:e.q}},{int:{bigint:e.g}}]});this.asn1AlgId=new c({name:"dsa",asn1params:n});var o=new r({bigint:e.y});this.asn1SubjPKey=new i({hex:"00"+o.tohex()})}}catch(e){}},void 0!==e&&this.setPubKey(e)},Qu(pu.asn1.x509.SubjectPublicKeyInfo,pu.asn1.ASN1Object),pu.asn1.x509.Time=function(e){pu.asn1.x509.Time.superclass.constructor.call(this);var t=pu.asn1,n=t.DERUTCTime,r=t.DERGeneralizedTime;this.params=null,this.type=null,this.setTimeParams=function(e){this.timeParams=e},this.setByParam=function(e){this.params=e},this.getType=function(e){return e.match(/^[0-9]{12}Z$/)?"utc":e.match(/^[0-9]{14}Z$/)?"gen":e.match(/^[0-9]{12}\.[0-9]+Z$/)?"utc":e.match(/^[0-9]{14}\.[0-9]+Z$/)?"gen":null},this.tohex=function(){var e=this.params,t=null;if("string"==typeof e&&(e={str:e}),null==e||!e.str||null!=e.type&&null!=e.type||(e.type=this.getType(e.str)),null!=e&&e.str?("utc"==e.type&&(t=new n(e.str)),"gen"==e.type&&(t=new r(e.str))):t="gen"==this.type?new r:new n,null==t)throw new Error("wrong setting for Time");return this.TLV=t.tohex(),this.TLV},this.getEncodedHex=function(){return this.tohex()},null!=e&&this.setByParam(e)},pu.asn1.x509.Time_bak=function(e){pu.asn1.x509.Time_bak.superclass.constructor.call(this);var t=pu.asn1,n=t.DERUTCTime,r=t.DERGeneralizedTime;this.setTimeParams=function(e){this.timeParams=e},this.tohex=function(){var e=null;return e=null!=this.timeParams?"utc"==this.type?new n(this.timeParams):new r(this.timeParams):"utc"==this.type?new n:new r,this.TLV=e.tohex(),this.TLV},this.getEncodedHex=function(){return this.tohex()},this.type="utc",void 0!==e&&(void 0!==e.type?this.type=e.type:void 0!==e.str&&(e.str.match(/^[0-9]{12}Z$/)&&(this.type="utc"),e.str.match(/^[0-9]{14}Z$/)&&(this.type="gen")),this.timeParams=e)},Qu(pu.asn1.x509.Time,pu.asn1.ASN1Object),pu.asn1.x509.AlgorithmIdentifier=function(e){pu.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this),this.nameAlg=null,this.asn1Alg=null,this.asn1Params=null,this.paramEmpty=!1;var t=pu.asn1,n=t.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;if(this.tohex=function(){if(null===this.nameAlg&&null===this.asn1Alg)throw new Error("algorithm not specified");if(null!==this.nameAlg){var e=null;for(var r in n)r===this.nameAlg&&(e=n[r]);if(null!==e)return this.hTLV=e,this.hTLV}null!==this.nameAlg&&null===this.asn1Alg&&(this.asn1Alg=t.x509.OID.name2obj(this.nameAlg));var i=[this.asn1Alg];null!==this.asn1Params&&i.push(this.asn1Params);var s=new t.DERSequence({array:i});return this.hTLV=s.tohex(),this.hTLV},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&(void 0!==e.name&&(this.nameAlg=e.name),void 0!==e.asn1params&&(this.asn1Params=e.asn1params),void 0!==e.paramempty&&(this.paramEmpty=e.paramempty)),null===this.asn1Params&&!1===this.paramEmpty&&null!==this.nameAlg){void 0!==this.nameAlg.name&&(this.nameAlg=this.nameAlg.name);var r=this.nameAlg.toLowerCase();"withdsa"!==r.substr(-7,7)&&"withecdsa"!==r.substr(-9,9)&&(this.asn1Params=new t.DERNull)}},Qu(pu.asn1.x509.AlgorithmIdentifier,pu.asn1.ASN1Object),pu.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV={SHAwithRSAandMGF1:"300d06092a864886f70d01010a3000",SHA256withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120",SHA384withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130",SHA512withRSAandMGF1:"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140"},pu.asn1.x509.GeneralName=function(e){pu.asn1.x509.GeneralName.superclass.constructor.call(this);var t=pu.asn1,n=t.x509,r=n.X500Name,i=n.OtherName,s=t.DERIA5String;t.DERPrintableString;var o=t.DEROctetString,a=t.DERTaggedObject,c=t.ASN1Object,l=Error;this.params=null,this.setByParam=function(e){this.params=e},this.tohex=function(){var e,t,n=this.params,u=!1;if(void 0!==n.other)e="a0",t=new i(n.other);else if(void 0!==n.rfc822)e="81",t=new s({str:n.rfc822});else if(void 0!==n.dns)e="82",t=new s({str:n.dns});else if(void 0!==n.dn)e="a4",u=!0,t="string"==typeof n.dn?new r({str:n.dn}):n.dn instanceof pu.asn1.x509.X500Name?n.dn:new r(n.dn);else if(void 0!==n.ldapdn)e="a4",u=!0,t=new r({ldapstr:n.ldapdn});else if(void 0!==n.certissuer||void 0!==n.certsubj){var h,d;e="a4",u=!0;var p=null;if(void 0!==n.certsubj?(h=!1,d=n.certsubj):(h=!0,d=n.certissuer),d.match(/^[0-9A-Fa-f]+$/),-1!=d.indexOf("-----BEGIN ")&&(p=Pu(d)),null==p)throw new Error("certsubj/certissuer not cert");var g,f=new th;f.hex=p,g=h?f.getIssuerHex():f.getSubjectHex(),(t=new c).hTLV=g}else if(void 0!==n.uri)e="86",t=new s({str:n.uri});else{if(void 0===n.ip)throw new l("improper params");var m;e="87";var y=n.ip;try{if(y.match(/^[0-9a-f]+$/)){var w=y.length;if(8!=w&&16!=w&&32!=w&&64!=w)throw"err";m=y}else m=$u(y)}catch(e){throw new l("malformed IP address: "+n.ip+":"+e.message)}t=new o({hex:m})}return new a({tag:e,explicit:u,obj:t}).tohex()},this.getEncodedHex=function(){return this.tohex()},void 0!==e&&this.setByParam(e)},Qu(pu.asn1.x509.GeneralName,pu.asn1.ASN1Object),pu.asn1.x509.GeneralNames=function(e){pu.asn1.x509.GeneralNames.superclass.constructor.call(this);var t=pu.asn1;this.setByParamArray=function(e){for(var n=0;n0){for(var n=s(e.valhex,t[0]),r=u(n,0),i=[],o=0;o1){var l=s(e.valhex,t[1]);e.polhex=l}delete e.valhex},this.setSignaturePolicyIdentifier=function(e){var n=u(e.valhex,0);if(n.length>0){var o=r.getOID(e.valhex,n[0]);e.oid=o}if(n.length>1){var a=new t,c=u(e.valhex,n[1]),l=s(e.valhex,c[0]),h=a.getAlgorithmIdentifierName(l);e.alg=h;var d=i(e.valhex,c[1]);e.hash=d}delete e.valhex},this.setSigningCertificateV2=function(e){var t=u(e.valhex,0);if(t.length>0){for(var n=s(e.valhex,t[0]),r=u(n,0),i=[],o=0;o1){var l=s(e.valhex,t[1]);e.polhex=l}delete e.valhex},this.getESSCertID=function(e){var t={},n=u(e,0);if(n.length>0){var r=i(e,n[0]);t.hash=r}if(n.length>1){var o=s(e,n[1]),a=this.getIssuerSerial(o);null!=a.serial&&(t.serial=a.serial),null!=a.issuer&&(t.issuer=a.issuer)}return t},this.getESSCertIDv2=function(t){var r={},o=u(t,0);if(o.length<1||3a+1){var h=s(t,o[a+1]),d=this.getIssuerSerial(h);r.issuer=d.issuer,r.serial=d.serial}return r},this.getIssuerSerial=function(e){var t={},r=u(e,0),o=s(e,r[0]),a=n.getGeneralNames(o)[0].dn;t.issuer=a;var c=i(e,r[1]);return t.serial={hex:c},t},this.getCertificateSet=function(e){for(var t=u(e,0),n=[],r=0;r=0;o--)i+=r[o];return i}if("string"==typeof e&&null!=s[e])return Ku([e],s);if("object"==typeof e&&null!=e.length)return Ku(e,s);throw new t("wrong params")},this.tohex=function(){this.params;var e=this.getBinValue();return new r({bin:e}).tohex()},this.getEncodedHex=function(){return this.tohex()},null!=e&&this.setByParam(e)},Qu(pu.asn1.tsp.PKIFailureInfo,pu.asn1.ASN1Object),pu.asn1.tsp.AbstractTSAAdapter=function(e){this.getTSTHex=function(e,t){throw"not implemented yet"}},pu.asn1.tsp.SimpleTSAAdapter=function(e){var t=pu,n=t.asn1.tsp,r=t.crypto.Util.hashHex;n.SimpleTSAAdapter.superclass.constructor.call(this),this.params=null,this.serial=0,this.getTSTHex=function(e,t){var i=r(e,t);this.params.econtent.content.messageImprint={alg:t,hash:i},this.params.econtent.content.serial={int:this.serial++};var s=Math.floor(1e9*Math.random());return this.params.econtent.content.nonce={int:s},new n.TimeStampToken(this.params).getContentInfoEncodedHex()},void 0!==e&&(this.params=e)},Qu(pu.asn1.tsp.SimpleTSAAdapter,pu.asn1.tsp.AbstractTSAAdapter),pu.asn1.tsp.FixedTSAAdapter=function(e){var t=pu,n=t.asn1.tsp,r=t.crypto.Util.hashHex;n.FixedTSAAdapter.superclass.constructor.call(this),this.params=null,this.getTSTHex=function(e,t){var i=r(e,t);return this.params.econtent.content.messageImprint={alg:t,hash:i},new n.TimeStampToken(this.params).getContentInfoEncodedHex()},void 0!==e&&(this.params=e)},Qu(pu.asn1.tsp.FixedTSAAdapter,pu.asn1.tsp.AbstractTSAAdapter),pu.asn1.tsp.TSPUtil=new function(){},pu.asn1.tsp.TSPUtil.newTimeStampToken=function(e){return new pu.asn1.tsp.TimeStampToken(e)},pu.asn1.tsp.TSPUtil.parseTimeStampReq=function(e){return(new pu.asn1.tsp.TSPParser).getTimeStampReq(e)},pu.asn1.tsp.TSPUtil.parseMessageImprint=function(e){return(new pu.asn1.tsp.TSPParser).getMessageImprint(e)},pu.asn1.tsp.TSPParser=function(){var e=new th,t=mu,n=t.getV,r=t.getTLV,i=t.getIdxbyList;t.getTLVbyListEx;var s=t.getChildIdx,o=["granted","grantedWithMods","rejection","waiting","revocationWarning","revocationNotification"],a={0:"badAlg",2:"badRequest",5:"badDataFormat",14:"timeNotAvailable",15:"unacceptedPolicy",16:"unacceptedExtension",17:"addInfoNotAvailable",25:"systemFailure"};this.getResponse=function(e){var t=s(e,0);if(1==t.length)return this.getPKIStatusInfo(r(e,t[0]));if(t.length>1){var n=this.getPKIStatusInfo(r(e,t[0])),i=r(e,t[1]),o=this.getToken(i);return o.statusinfo=n,o}},this.getToken=function(e){var t=(new pu.asn1.cms.CMSParser).getCMSSignedData(e);return this.setTSTInfo(t),t},this.setTSTInfo=function(e){var t=e.econtent;if("tstinfo"==t.type){var n=t.content.hex,r=this.getTSTInfo(n);t.content=r}},this.getTSTInfo=function(t){var i={},o=s(t,0),a=n(t,o[1]);i.policy=Uu(a);var c=r(t,o[2]);i.messageImprint=this.getMessageImprint(c);var l=n(t,o[3]);i.serial={hex:l};var u=n(t,o[4]);i.genTime={str:Iu(u)};var h=0;if(o.length>5&&"30"==t.substr(o[5],2)){var d=r(t,o[5]);i.accuracy=this.getAccuracy(d),h++}o.length>5+h&&"01"==t.substr(o[5+h],2)&&("ff"==n(t,o[5+h])&&(i.ordering=!0),h++);if(o.length>5+h&&"02"==t.substr(o[5+h],2)){var p=n(t,o[5+h]);i.nonce={hex:p},h++}if(o.length>5+h&&"a0"==t.substr(o[5+h],2)){var g=r(t,o[5+h]);g="30"+g.substr(2),pGeneralNames=e.getGeneralNames(g);var f=pGeneralNames[0].dn;i.tsa=f,h++}if(o.length>5+h&&"a1"==t.substr(o[5+h],2)){var m=r(t,o[5+h]);m="30"+m.substr(2);var y=e.getExtParamArray(m);i.ext=y,h++}return i},this.getAccuracy=function(e){for(var t={},r=s(e,0),i=0;i1&&"30"==e.substr(i[1],2)){var u=r(e,i[1]);t.statusstr=this.getPKIFreeText(u),a++}if(i.length>a&&"03"==e.substr(i[1+a],2)){var h=r(e,i[1+a]);t.failinfo=this.getPKIFailureInfo(h)}return t},this.getPKIFreeText=function(e){for(var n=[],r=s(e,0),i=0;i=t?e:new Array(t-e.length+1).join(n)+e};function Ku(e,t){for(var n=0,r=0;r=0;r--)s+=i[r];return s}function zu(e,t,n){if("object"==typeof e){t=String(t).split(".");for(var r=0;ri)throw"key is too short for SigAlg: keylen="+n+","+t;for(var s="0001",o="00"+r,a="",c=i-4-o.length,l=0;l=0)return!1;if(r.compareTo(n.ONE)<0||r.compareTo(s)>=0)return!1;var a=r.modInverse(s),c=e.multiply(a).mod(s),l=t.multiply(a).mod(s);return o.multiply(c).add(i.multiply(l)).getX().toBigInteger().mod(s).equals(t)},this.serializeSig=function(e,t){var n=e.toByteArraySigned(),r=t.toByteArraySigned(),i=[];return i.push(2),i.push(n.length),(i=i.concat(n)).push(2),i.push(r.length),(i=i.concat(r)).unshift(i.length),i.unshift(48),i},this.parseSig=function(e){var t;if(48!=e[0])throw new Error("Signature not a valid DERSequence");if(2!=e[t=2])throw new Error("First element in signature must be a DERInteger");var r=e.slice(t+2,t+2+e[t+1]);if(2!=e[t+=2+e[t+1]])throw new Error("Second element in signature must be a DERInteger");var i=e.slice(t+2,t+2+e[t+1]);return t+=2+e[t+1],{r:n.fromByteArrayUnsigned(r),s:n.fromByteArrayUnsigned(i)}},this.parseSigCompact=function(e){if(65!==e.length)throw"Signature has the wrong length";var t=e[0]-27;if(t<0||t>7)throw"Invalid signature type";var r=this.ecparams.n;return{r:n.fromByteArrayUnsigned(e.slice(1,33)).mod(r),s:n.fromByteArrayUnsigned(e.slice(33,65)).mod(r),i:t}},this.readPKCS5PrvKeyHex=function(e){if(!1===l(e))throw new Error("not ASN.1 hex string");var t,n,r;try{t=c(e,0,["[0]",0],"06"),n=c(e,0,[1],"04");try{r=c(e,0,["[1]",0],"03")}catch(e){}}catch(e){throw new Error("malformed PKCS#1/5 plain ECC private key")}if(this.curveName=o(t),void 0===this.curveName)throw"unsupported curve name";this.setNamedCurve(this.curveName),this.setPublicKeyHex(r),this.setPrivateKeyHex(n),this.isPublic=!1},this.readPKCS8PrvKeyHex=function(e){if(!1===l(e))throw new t("not ASN.1 hex string");var n,r,i;try{c(e,0,[1,0],"06"),n=c(e,0,[1,1],"06"),r=c(e,0,[2,0,1],"04");try{i=c(e,0,[2,0,"[1]",0],"03")}catch(e){}}catch(e){throw new t("malformed PKCS#8 plain ECC private key")}if(this.curveName=o(n),void 0===this.curveName)throw new t("unsupported curve name");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i),this.setPrivateKeyHex(r),this.isPublic=!1},this.readPKCS8PubKeyHex=function(e){if(!1===l(e))throw new t("not ASN.1 hex string");var n,r;try{c(e,0,[0,0],"06"),n=c(e,0,[0,1],"06"),r=c(e,0,[1],"03")}catch(e){throw new t("malformed PKCS#8 ECC public key")}if(this.curveName=o(n),null===this.curveName)throw new t("unsupported curve name");this.setNamedCurve(this.curveName),this.setPublicKeyHex(r)},this.readCertPubKeyHex=function(e,n){if(!1===l(e))throw new t("not ASN.1 hex string");var r,i;try{r=c(e,0,[0,5,0,1],"06"),i=c(e,0,[0,5,1],"03")}catch(e){throw new t("malformed X.509 certificate ECC public key")}if(this.curveName=o(r),null===this.curveName)throw new t("unsupported curve name");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i)},void 0!==e&&void 0!==e.curve&&(this.curveName=e.curve),void 0===this.curveName&&(this.curveName="secp256r1"),this.setNamedCurve(this.curveName),void 0!==e&&(void 0!==e.prv&&this.setPrivateKeyHex(e.prv),void 0!==e.pub&&this.setPublicKeyHex(e.pub))},pu.crypto.ECDSA.parseSigHex=function(e){var t=pu.crypto.ECDSA.parseSigHexInHexRS(e);return{r:new Al(t.r,16),s:new Al(t.s,16)}},pu.crypto.ECDSA.parseSigHexInHexRS=function(e){var t=mu,n=t.getChildIdx,r=t.getV;if(t.checkStrictDER(e,0),"30"!=e.substr(0,2))throw new Error("signature is not a ASN.1 sequence");var i=n(e,0);if(2!=i.length)throw new Error("signature shall have two elements");var s=i[0],o=i[1];if("02"!=e.substr(s,2))throw new Error("1st item not ASN.1 integer");if("02"!=e.substr(o,2))throw new Error("2nd item not ASN.1 integer");return{r:r(e,s),s:r(e,o)}},pu.crypto.ECDSA.asn1SigToConcatSig=function(e){var t=pu.crypto.ECDSA.parseSigHexInHexRS(e),n=t.r,r=t.s;if(n.length>=130&&n.length<=134){if(n.length%2!=0)throw Error("unknown ECDSA sig r length error");if(r.length%2!=0)throw Error("unknown ECDSA sig s length error");"00"==n.substr(0,2)&&(n=n.substr(2)),"00"==r.substr(0,2)&&(r=r.substr(2));var i=Math.max(n.length,r.length);return(n=("000000"+n).slice(-i))+(r=("000000"+r).slice(-i))}if("00"==n.substr(0,2)&&n.length%32==2&&(n=n.substr(2)),"00"==r.substr(0,2)&&r.length%32==2&&(r=r.substr(2)),n.length%32==30&&(n="00"+n),r.length%32==30&&(r="00"+r),n.length%32!=0)throw Error("unknown ECDSA sig r length error");if(r.length%32!=0)throw Error("unknown ECDSA sig s length error");return n+r},pu.crypto.ECDSA.concatSigToASN1Sig=function(e){if(e.length%4!=0)throw Error("unknown ECDSA concatinated r-s sig length error");var t=e.substr(0,e.length/2),n=e.substr(e.length/2);return pu.crypto.ECDSA.hexRSSigToASN1Sig(t,n)},pu.crypto.ECDSA.hexRSSigToASN1Sig=function(e,t){var n=new Al(e,16),r=new Al(t,16);return pu.crypto.ECDSA.biRSSigToASN1Sig(n,r)},pu.crypto.ECDSA.biRSSigToASN1Sig=function(e,t){var n=pu.asn1,r=new n.DERInteger({bigint:e}),i=new n.DERInteger({bigint:t});return new n.DERSequence({array:[r,i]}).tohex()},pu.crypto.ECDSA.getName=function(e){return"2b8104001f"===e?"secp192k1":"2a8648ce3d030107"===e?"secp256r1":"2b8104000a"===e?"secp256k1":"2b81040021"===e?"secp224r1":"2b81040022"===e?"secp384r1":"2b81040023"===e?"secp521r1":-1!=="|secp256r1|NIST P-256|P-256|prime256v1|".indexOf(e)?"secp256r1":-1!=="|secp256k1|".indexOf(e)?"secp256k1":-1!=="|secp224r1|NIST P-224|P-224|".indexOf(e)?"secp224r1":-1!=="|secp384r1|NIST P-384|P-384|".indexOf(e)?"secp384r1":-1!=="|secp521r1|NIST P-521|P-521|".indexOf(e)?"secp521r1":null},void 0!==pu&&pu||(pu={}),void 0!==pu.crypto&&pu.crypto||(pu.crypto={}),pu.crypto.ECParameterDB=new function(){var e={},t={};function n(e){return new Al(e,16)}this.getByName=function(n){var r=n;if(void 0!==t[r]&&(r=t[n]),void 0!==e[r])return e[r];throw"unregistered EC curve name: "+r},this.regist=function(r,i,s,o,a,c,l,u,h,d,p,g){e[r]={};var f=n(s),m=n(o),y=n(a),w=n(c),v=n(l),b=new hu(f,m,y),S=b.decodePointHex("04"+u+h);e[r].name=r,e[r].keylen=i,e[r].keycharlen=2*Math.ceil(i/8),e[r].curve=b,e[r].G=S,e[r].n=w,e[r].h=v,e[r].oid=p,e[r].info=g;for(var C=0;C1?new Al(r,16):null,l=new Al(i,16),this.setPrivate(s,o,a,c,l)},this.setPublic=function(e,t,n,r){this.isPublic=!0,this.p=e,this.q=t,this.g=n,this.y=r,this.x=null},this.setPublicHex=function(e,t,n,r){var i,s,o,a;i=new Al(e,16),s=new Al(t,16),o=new Al(n,16),a=new Al(r,16),this.setPublic(i,s,o,a)},this.signWithMessageHash=function(e){var t=this.p,n=this.q,r=this.g;this.y;var i=this.x,s=pu.crypto.Util.getRandomBigIntegerMinToMax(Al.ONE.add(Al.ONE),n.subtract(Al.ONE)),o=new Al(e.substr(0,n.bitLength()/4),16),a=r.modPow(s,t).mod(n),c=s.modInverse(n).multiply(o.add(i.multiply(a))).mod(n);return pu.asn1.ASN1Util.jsonToASN1HEX({seq:[{int:{bigint:a}},{int:{bigint:c}}]})},this.verifyWithMessageHash=function(e,t){var n=this.p,r=this.q,i=this.g,s=this.y,o=this.parseASN1Signature(t),a=o[0],c=o[1],l=new Al(e.substr(0,r.bitLength()/4),16);if(Al.ZERO.compareTo(a)>0||a.compareTo(r)>0)throw"invalid DSA signature";if(Al.ZERO.compareTo(c)>=0||c.compareTo(r)>0)throw"invalid DSA signature";var u=c.modInverse(r),h=l.multiply(u).mod(r),d=a.multiply(u).mod(r);return 0==i.modPow(h,n).multiply(s.modPow(d,n)).mod(n).mod(r).compareTo(a)},this.parseASN1Signature=function(e){try{return[new r(t(e,0,[0],"02"),16),new r(t(e,0,[1],"02"),16)]}catch(e){throw new Error("malformed ASN.1 DSA signature")}},this.readPKCS5PrvKeyHex=function(e){var r,i,s,o,a;if(!1===n(e))throw new Error("not ASN.1 hex string");try{r=t(e,0,[1],"02"),i=t(e,0,[2],"02"),s=t(e,0,[3],"02"),o=t(e,0,[4],"02"),a=t(e,0,[5],"02")}catch(e){throw new Error("malformed PKCS#1/5 plain DSA private key")}this.setPrivateHex(r,i,s,o,a)},this.readPKCS8PrvKeyHex=function(e){var r,i,s,o;if(!1===n(e))throw new Error("not ASN.1 hex string");try{r=t(e,0,[1,1,0],"02"),i=t(e,0,[1,1,1],"02"),s=t(e,0,[1,1,2],"02"),o=t(e,0,[2,0],"02")}catch(e){throw new Error("malformed PKCS#8 plain DSA private key")}this.setPrivateHex(r,i,s,null,o)},this.readPKCS8PubKeyHex=function(e){var r,i,s,o;if(!1===n(e))throw new Error("not ASN.1 hex string");try{r=t(e,0,[0,1,0],"02"),i=t(e,0,[0,1,1],"02"),s=t(e,0,[0,1,2],"02"),o=t(e,0,[1,0],"02")}catch(e){throw new Error("malformed PKCS#8 DSA public key")}this.setPublicHex(r,i,s,o)},this.readCertPubKeyHex=function(e,r){var i,s,o,a;if(!1===n(e))throw new Error("not ASN.1 hex string");try{i=t(e,0,[0,5,0,1,0],"02"),s=t(e,0,[0,5,0,1,1],"02"),o=t(e,0,[0,5,0,1,2],"02"),a=t(e,0,[0,5,1,0],"02")}catch(e){throw new Error("malformed X.509 certificate DSA public key")}this.setPublicHex(i,s,o,a)}};var Xu=function(){var e=function(e,n,r){return t(bl.AES,e,n,r)},t=function(e,t,n,r){var i=bl.enc.Hex.parse(t),s=bl.enc.Hex.parse(n),o=bl.enc.Hex.parse(r),a={};a.key=s,a.iv=o,a.ciphertext=i;var c=e.decrypt(a,s,{iv:o});return bl.enc.Hex.stringify(c)},n=function(e,t,n){return r(bl.AES,e,t,n)},r=function(e,t,n,r){var i=bl.enc.Hex.parse(t),s=bl.enc.Hex.parse(n),o=bl.enc.Hex.parse(r),a=e.encrypt(i,s,{iv:o}),c=bl.enc.Hex.parse(a.toString());return bl.enc.Base64.stringify(c)},i={"AES-256-CBC":{proc:e,eproc:n,keylen:32,ivlen:16},"AES-192-CBC":{proc:e,eproc:n,keylen:24,ivlen:16},"AES-128-CBC":{proc:e,eproc:n,keylen:16,ivlen:16},"DES-EDE3-CBC":{proc:function(e,n,r){return t(bl.TripleDES,e,n,r)},eproc:function(e,t,n){return r(bl.TripleDES,e,t,n)},keylen:24,ivlen:8},"DES-CBC":{proc:function(e,n,r){return t(bl.DES,e,n,r)},eproc:function(e,t,n){return r(bl.DES,e,t,n)},keylen:8,ivlen:8}},s=function(e){var t={},n=e.match(new RegExp("DEK-Info: ([^,]+),([0-9A-Fa-f]+)","m"));n&&(t.cipher=n[1],t.ivsalt=n[2]);var r=e.match(new RegExp("-----BEGIN ([A-Z]+) PRIVATE KEY-----"));r&&(t.type=r[1]);var i=-1,s=0;-1!=e.indexOf("\r\n\r\n")&&(i=e.indexOf("\r\n\r\n"),s=2),-1!=e.indexOf("\n\n")&&(i=e.indexOf("\n\n"),s=1);var o=e.indexOf("-----END");if(-1!=i&&-1!=o){var a=e.substring(i+2*s,o-s);a=a.replace(/\s+/g,""),t.data=a}return t},o=function(e,t,n){for(var r=n.substring(0,16),s=bl.enc.Hex.parse(r),o=bl.enc.Utf8.parse(t),a=i[e].keylen+i[e].ivlen,c="",l=null;;){var u=bl.algo.MD5.create();if(null!=l&&u.update(l),u.update(o),u.update(s),l=u.finalize(),(c+=bl.enc.Hex.stringify(l)).length>=2*a)break}var h={};return h.keyhex=c.substr(0,2*i[e].keylen),h.ivhex=c.substr(2*i[e].keylen,2*i[e].ivlen),h},a=function(e,t,n,r){var s=bl.enc.Base64.parse(e),o=bl.enc.Hex.stringify(s);return(0,i[t].proc)(o,n,r)};return{version:"1.0.0",parsePKCS5PEM:function(e){return s(e)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(e,t,n){return o(e,t,n)},decryptKeyB64:function(e,t,n,r){return a(e,t,n,r)},getDecryptedKeyHex:function(e,t){var n=s(e),r=n.cipher,i=n.ivsalt,c=n.data,l=o(r,t,i).keyhex;return a(c,r,l,i)},getEncryptedPKCS5PEMFromPrvKeyHex:function(e,t,n,r,s){var a="";if(void 0!==r&&null!=r||(r="AES-256-CBC"),void 0===i[r])throw new Error("KEYUTIL unsupported algorithm: "+r);if(void 0===s||null==s){var c=function(e){var t=bl.lib.WordArray.random(e);return bl.enc.Hex.stringify(t)}(i[r].ivlen);s=c.toUpperCase()}var l=function(e,t,n,r){return(0,i[t].eproc)(e,n,r)}(t,r,o(r,n,s).keyhex,s);a="-----BEGIN "+e+" PRIVATE KEY-----\r\n";return a+="Proc-Type: 4,ENCRYPTED\r\n",a+="DEK-Info: "+r+","+s+"\r\n",a+="\r\n",a+=l.replace(/(.{64})/g,"$1\r\n"),a+="\r\n-----END "+e+" PRIVATE KEY-----\r\n"},getEncryptedPKCS8PEM:function(e,t,n){return _u(this.getEncryptedPKCS8Hex(e,t,n),"ENCRYPTED PRIVATE KEY")},getEncryptedPKCS8Hex:function(e,t,n){var r;(r=null==n||null==n?{}:JSON.parse(JSON.stringify(n))).plain=e,this.initPBES2Param(r),this.encryptPBES2Param(r,t);var i=this.generatePBES2ASN1Param(r);return pu.asn1.ASN1Util.newObject(i).tohex()},initPBES2Param:function(e){var t;(null==zu(e,"encalg")&&(e.encalg="aes256-CBC"),null==zu(e,"iter")&&(e.iter=2048),null==zu(e,"prf")&&(e.prf="hmacWithSHA256"),null==zu(e,"salt")&&(e.salt=bl.enc.Hex.stringify(bl.lib.WordArray.random(8))),null==zu(e,"enciv"))&&("des-EDE3-CBC"==e.encalg&&(t=8),"aes128-CBC"==e.encalg&&(t=16),"aes256-CBC"==e.encalg&&(t=16),e.enciv=bl.enc.Hex.stringify(bl.lib.WordArray.random(t)))},encryptPBES2Param:function(e,t){var n=Xu.getDKFromPBES2Param(e,t);try{var r=pu.crypto.Cipher.encrypt(e.plain,n,e.encalg,{iv:e.enciv})}catch(t){throw new Error("encrypt error: "+e.plain+" "+n+" "+e.encalg+" "+e.enciv)}e.enc=r},generatePBES2ASN1Param:function(e){var t={seq:[{seq:[{oid:"pkcs5PBES2"},{seq:[{seq:[{oid:"pkcs5PBKDF2"},{seq:[{octstr:{hex:e.salt}},{int:{hex:Gu(e.iter)}}]}]},{seq:[{oid:e.encalg},{octstr:{hex:e.enciv}}]}]}]},{octstr:{hex:e.enc}}]};return"hmacWithSHA1"!=e.prf&&t.seq[0].seq[1].seq[0].seq[1].seq.push({seq:[{oid:e.prf},{null:""}]}),t},parseHexOfEncryptedPKCS8:function(e){var t=mu,n=t.getChildIdx,r=t.getV,i={},s=n(e,0);if(2!=s.length)throw new Error("malformed format: SEQUENCE(0).items != 2: "+s.length);i.ciphertext=r(e,s[1]);var o=n(e,s[0]);if(2!=o.length)throw new Error("malformed format: SEQUENCE(0.0).items != 2: "+o.length);if("2a864886f70d01050d"!=r(e,o[0]))throw new Error("this only supports pkcs5PBES2");var a=n(e,o[1]);if(2!=o.length)throw new Error("malformed format: SEQUENCE(0.0.1).items != 2: "+a.length);var c=n(e,a[1]);if(2!=c.length)throw new Error("malformed format: SEQUENCE(0.0.1.1).items != 2: "+c.length);if("2a864886f70d0307"!=r(e,c[0]))throw"this only supports TripleDES";i.encryptionSchemeAlg="TripleDES",i.encryptionSchemeIV=r(e,c[1]);var l=n(e,a[0]);if(2!=l.length)throw new Error("malformed format: SEQUENCE(0.0.1.0).items != 2: "+l.length);if("2a864886f70d01050c"!=r(e,l[0]))throw new Error("this only supports pkcs5PBKDF2");var u=n(e,l[1]);if(u.length<2)throw new Error("malformed format: SEQUENCE(0.0.1.0.1).items < 2: "+u.length);i.pbkdf2Salt=r(e,u[0]);var h=r(e,u[1]);try{i.pbkdf2Iter=parseInt(h,16)}catch(e){throw new Error("malformed format pbkdf2Iter: "+h)}return i},getPBKDF2KeyHexFromParam:function(e,t){var n=bl.enc.Hex.parse(e.pbkdf2Salt),r=e.pbkdf2Iter,i=bl.PBKDF2(t,n,{keySize:6,iterations:r});return bl.enc.Hex.stringify(i)},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function(e,t){var n=Pu(e,"ENCRYPTED PRIVATE KEY"),r=this.parseHexOfEncryptedPKCS8(n),i=Xu.getPBKDF2KeyHexFromParam(r,t),s={};s.ciphertext=bl.enc.Hex.parse(r.ciphertext);var o=bl.enc.Hex.parse(i),a=bl.enc.Hex.parse(r.encryptionSchemeIV),c=bl.TripleDES.decrypt(s,o,{iv:a});return bl.enc.Hex.stringify(c)},parsePBES2:function(e){var t=mu.parse(e);if("pkcs5PBES2"!=zu(t,"seq.0.seq.0.oid")||"pkcs5PBKDF2"!=zu(t,"seq.0.seq.1.seq.0.seq.0.oid"))throw new Error("not pkcs5PBES2 and pkcs5PBKDF2 used");var n=zu(t,"seq.0.seq.1.seq.0.seq.1.seq");if(null==n)throw new Error("PBKDF2 parameter not found");var r=zu(n,"0.octstr.hex"),i=zu(n,"1.int.hex"),s=zu(n,"2.seq.0.oid","hmacWithSHA1"),o=-1;try{o=parseInt(i,16)}catch(e){throw new Error("iter not proper value")}var a=zu(t,"seq.0.seq.1.seq.1.seq.0.oid"),c=zu(t,"seq.0.seq.1.seq.1.seq.1.octstr.hex"),l=zu(t,"seq.1.octstr.hex");if(null==a||null==c||null==l)throw new Error("encalg, enciv or enc is undefined");return{salt:r,iter:o,prf:s,encalg:a,enciv:c,enc:l}},getDKFromPBES2Param:function(e,t){var n={hmacWithSHA1:bl.algo.SHA1,hmacWithSHA224:bl.algo.SHA224,hmacWithSHA256:bl.algo.SHA256,hmacWithSHA384:bl.algo.SHA384,hmacWithSHA512:bl.algo.SHA512}[e.prf];if(null==n)throw new Error("unsupported prf");var r={"des-EDE3-CBC":6,"aes128-CBC":4,"aes256-CBC":8}[e.encalg];if(null==r)throw new Error("unsupported encalg");var i=bl.enc.Hex.parse(e.salt),s=e.iter;try{var o=bl.PBKDF2(t,i,{keySize:r,iterations:s,hasher:n});return bl.enc.Hex.stringify(o)}catch(n){throw new Error("PBKDF2 error: "+n+" "+JSON.stringify(e)+" "+t)}},getPlainHexFromEncryptedPKCS8PEM:function(e,t){if(-1==e.indexOf("BEGIN ENCRYPTED PRIVATE KEY"))throw new Error("not Encrypted PKCS#8 PEM string");var n,r=Pu(e);try{n=Xu.parsePBES2(r)}catch(e){throw new Error("malformed PBES2 format: "+e.message)}var i=Xu.getDKFromPBES2Param(n,t);return pu.crypto.Cipher.decrypt(n.enc,i,n.encalg,{iv:n.enciv})},getKeyFromEncryptedPKCS8PEM:function(e,t){var n=this.getPlainHexFromEncryptedPKCS8PEM(e,t);return this.getKeyFromPlainPrivatePKCS8Hex(n)},parsePlainPrivatePKCS8Hex:function(e){var t=mu,n=t.getChildIdx,r=t.getV,i={algparam:null};if("30"!=e.substr(0,2))throw new Error("malformed plain PKCS8 private key(code:001)");var s=n(e,0);if(s.length<3)throw new Error("malformed plain PKCS8 private key(code:002)");if("30"!=e.substr(s[1],2))throw new Error("malformed PKCS8 private key(code:003)");var o=n(e,s[1]);if(2!=o.length)throw new Error("malformed PKCS8 private key(code:004)");if("06"!=e.substr(o[0],2))throw new Error("malformed PKCS8 private key(code:005)");if(i.algoid=r(e,o[0]),"06"==e.substr(o[1],2)&&(i.algparam=r(e,o[1])),"04"!=e.substr(s[2],2))throw new Error("malformed PKCS8 private key(code:006)");return i.keyidx=t.getVidx(e,s[2]),i},getKeyFromPlainPrivatePKCS8PEM:function(e){var t=Pu(e,"PRIVATE KEY");return this.getKeyFromPlainPrivatePKCS8Hex(t)},getKeyFromPlainPrivatePKCS8Hex:function(e){var t,n=this.parsePlainPrivatePKCS8Hex(e);if("2a864886f70d010101"==n.algoid)t=new cu;else if("2a8648ce380401"==n.algoid)t=new pu.crypto.DSA;else{if("2a8648ce3d0201"!=n.algoid)throw new Error("unsupported private key algorithm");t=new pu.crypto.ECDSA}return t.readPKCS8PrvKeyHex(e),t},_getKeyFromPublicPKCS8Hex:function(e){var t,n=mu.getVbyList(e,0,[0,0],"06");if("2a864886f70d010101"===n)t=new cu;else if("2a8648ce380401"===n)t=new pu.crypto.DSA;else{if("2a8648ce3d0201"!==n)throw new Error("unsupported PKCS#8 public key hex");t=new pu.crypto.ECDSA}return t.readPKCS8PubKeyHex(e),t},parsePublicRawRSAKeyHex:function(e){var t=mu,n=t.getChildIdx,r=t.getV,i={};if("30"!=e.substr(0,2))throw new Error("malformed RSA key(code:001)");var s=n(e,0);if(2!=s.length)throw new Error("malformed RSA key(code:002)");if("02"!=e.substr(s[0],2))throw new Error("malformed RSA key(code:003)");if(i.n=r(e,s[0]),"02"!=e.substr(s[1],2))throw new Error("malformed RSA key(code:004)");return i.e=r(e,s[1]),i},parsePublicPKCS8Hex:function(e){var t=mu,n=t.getChildIdx,r=t.getV,i={algparam:null},s=n(e,0);if(2!=s.length)throw new Error("outer DERSequence shall have 2 elements: "+s.length);var o=s[0];if("30"!=e.substr(o,2))throw new Error("malformed PKCS8 public key(code:001)");var a=n(e,o);if(2!=a.length)throw new Error("malformed PKCS8 public key(code:002)");if("06"!=e.substr(a[0],2))throw new Error("malformed PKCS8 public key(code:003)");if(i.algoid=r(e,a[0]),"06"==e.substr(a[1],2)?i.algparam=r(e,a[1]):"30"==e.substr(a[1],2)&&(i.algparam={},i.algparam.p=t.getVbyList(e,a[1],[0],"02"),i.algparam.q=t.getVbyList(e,a[1],[1],"02"),i.algparam.g=t.getVbyList(e,a[1],[2],"02")),"03"!=e.substr(s[1],2))throw new Error("malformed PKCS8 public key(code:004)");return i.key=r(e,s[1]).substr(2),i}}}();function Yu(e,t){for(var n="",r=t/4-e.length,i=0;i>24,(16711680&i)>>16,(65280&i)>>8,255&i])))),i+=1;return r}function eh(e){for(var t in pu.crypto.Util.DIGESTINFOHEAD){var n=pu.crypto.Util.DIGESTINFOHEAD[t],r=n.length;if(e.substring(0,r)==n)return[t,e.substring(r)]}return[]}function th(e){var t=mu,n=t.getChildIdx,r=t.getV;t.dump;var i,s=t.parse,o=t.getTLV,a=t.getVbyList,c=t.getVbyListEx,l=t.getTLVbyList,u=t.getTLVbyListEx,h=t.getIdxbyList,d=t.getIdxbyListEx,p=t.getVidx,g=t.getInt,f=t.oidname,m=t.hextooidstr,y=Pu,w=Error;try{i=pu.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV}catch(e){}this.HEX2STAG={"0c":"utf8",13:"prn",16:"ia5","1a":"vis","1e":"bmp"},this.hex=null,this.version=0,this.foffset=0,this.aExtInfo=null,this.getVersion=function(){if(null===this.hex||0!==this.version)return this.version;var e=l(this.hex,0,[0,0]);if("a0"==e.substr(0,2)){var t=l(e,0,[0]),n=g(t,0);if(n<0||20?t:void 0}catch(e){return}},this._asn1ToNoticeRef=function(e){try{for(var t={},n=zu(e,"seq"),r=0;r0?t:void 0}catch(e){return}},this._asn1ToNoticeNum=function(e){try{for(var t=zu(e,"seq"),n=[],r=0;r1){var a=o(e,s[1]),c=this.getGeneralName(a);null!=c.uri&&(i.uri=c.uri)}if(s.length>2){var l=o(e,s[2]);"0101ff"==l&&(i.reqauth=!0),"010100"==l&&(i.reqauth=!1)}return i},this.getExtSubjectDirectoryAttributes=function(e,t){if(void 0===e&&void 0===t){var n=this.getExtInfo("subjectDirectoryAttributes");if(void 0===n)return;e=o(this.hex,n.vidx),t=n.critical}var r={extname:"subjectDirectoryAttributes"};t&&(r.critical=!0);try{for(var i=s(e),a=[],c=0;c0&&(t.ext=this.getExtParamArray()),t.sighex=this.getSignatureValueHex(),1==e.tbshex&&(t.tbshex=l(this.hex,0,[0])),1==e.nodnarray&&(delete t.issuer.array,delete t.subject.array),t},this.getExtParamArray=function(e){null==e&&(-1!=d(this.hex,0,[0,"[3]"])&&(e=u(this.hex,0,[0,"[3]",0],"30")));for(var t=[],r=n(e,0),i=0;i2&&"04"===f.substr(g[1],2)))throw new Error("unsupported PKCS#1/5 hexadecimal key");(k=new o).readPKCS5PrvKeyHex(f)}return k}if("pkcs8prv"===n)return k=u.getKeyFromPlainPrivatePKCS8Hex(e);if("pkcs8pub"===n)return u._getKeyFromPublicPKCS8Hex(e);if("x509pub"===n)return th.getPublicKeyFromCertHex(e);if(-1!=e.indexOf("-END CERTIFICATE-",0)||-1!=e.indexOf("-END X509 CERTIFICATE-",0)||-1!=e.indexOf("-END TRUSTED CERTIFICATE-",0))return th.getPublicKeyFromCertPEM(e);if(-1!=e.indexOf("-END PUBLIC KEY-")){var y=Pu(e,"PUBLIC KEY");return u._getKeyFromPublicPKCS8Hex(y)}if(-1!=e.indexOf("-END RSA PRIVATE KEY-")&&-1==e.indexOf("4,ENCRYPTED")){var w=l(e,"RSA PRIVATE KEY");return u.getKey(w,null,"pkcs5prv")}if(-1!=e.indexOf("-END DSA PRIVATE KEY-")&&-1==e.indexOf("4,ENCRYPTED")){var v=i(T=l(e,"DSA PRIVATE KEY"),0,[1],"02"),b=i(T,0,[2],"02"),S=i(T,0,[3],"02"),C=i(T,0,[4],"02"),x=i(T,0,[5],"02");return(k=new a).setPrivate(new Al(v,16),new Al(b,16),new Al(S,16),new Al(C,16),new Al(x,16)),k}if(-1!=e.indexOf("-END EC PRIVATE KEY-")&&-1==e.indexOf("4,ENCRYPTED")){w=l(e,"EC PRIVATE KEY");return u.getKey(w,null,"pkcs5prv")}if(-1!=e.indexOf("-END PRIVATE KEY-"))return u.getKeyFromPlainPrivatePKCS8PEM(e);if(-1!=e.indexOf("-END RSA PRIVATE KEY-")&&-1!=e.indexOf("4,ENCRYPTED")){var I=u.getDecryptedKeyHex(e,t),E=new cu;return E.readPKCS5PrvKeyHex(I),E}if(-1!=e.indexOf("-END EC PRIVATE KEY-")&&-1!=e.indexOf("4,ENCRYPTED")){var A,k=i(T=u.getDecryptedKeyHex(e,t),0,[1],"04"),_=i(T,0,[2,0],"06"),P=i(T,0,[3,0],"03").substr(2);if(void 0===pu.crypto.OID.oidhex2name[_])throw new Error("undefined OID(hex) in KJUR.crypto.OID: "+_);return(A=new o({curve:pu.crypto.OID.oidhex2name[_]})).setPublicKeyHex(P),A.setPrivateKeyHex(k),A.isPublic=!1,A}if(-1!=e.indexOf("-END DSA PRIVATE KEY-")&&-1!=e.indexOf("4,ENCRYPTED")){var T;v=i(T=u.getDecryptedKeyHex(e,t),0,[1],"02"),b=i(T,0,[2],"02"),S=i(T,0,[3],"02"),C=i(T,0,[4],"02"),x=i(T,0,[5],"02");return(k=new a).setPrivate(new Al(v,16),new Al(b,16),new Al(S,16),new Al(C,16),new Al(x,16)),k}if(-1!=e.indexOf("-END ENCRYPTED PRIVATE KEY-"))return u.getKeyFromEncryptedPKCS8PEM(e,t);throw new Error("not supported argument")},Xu.generateKeypair=function(e,t){if("RSA"==e){var n=t;(o=new cu).generate(n,"10001"),o.isPrivate=!0,o.isPublic=!0;var r=new cu,i=o.n.toString(16),s=o.e.toString(16);return r.setPublic(i,s),r.isPrivate=!1,r.isPublic=!0,(a={}).prvKeyObj=o,a.pubKeyObj=r,a}if("EC"==e){var o,a,c=t,l=new pu.crypto.ECDSA({curve:c}).generateKeyPairHex();return(o=new pu.crypto.ECDSA({curve:c})).setPublicKeyHex(l.ecpubhex),o.setPrivateKeyHex(l.ecprvhex),o.isPrivate=!0,o.isPublic=!1,(r=new pu.crypto.ECDSA({curve:c})).setPublicKeyHex(l.ecpubhex),r.isPrivate=!1,r.isPublic=!0,(a={}).prvKeyObj=o,a.pubKeyObj=r,a}throw new Error("unknown algorithm: "+e)},Xu.getPEM=function(e,t,n,r,i,s){var o=pu,a=o.asn1,c=a.DERObjectIdentifier,l=a.DERInteger,u=a.ASN1Util.newObject,h=a.x509.SubjectPublicKeyInfo,d=o.crypto,p=d.DSA,g=d.ECDSA,f=cu;function m(e){return u({seq:[{int:0},{int:{bigint:e.n}},{int:e.e},{int:{bigint:e.d}},{int:{bigint:e.p}},{int:{bigint:e.q}},{int:{bigint:e.dmp1}},{int:{bigint:e.dmq1}},{int:{bigint:e.coeff}}]})}function y(e){return u({seq:[{int:1},{octstr:{hex:e.prvKeyHex}},{tag:["a0",!0,{oid:{name:e.curveName}}]},{tag:["a1",!0,{bitstr:{hex:"00"+e.pubKeyHex}}]}]})}function w(e){return u({seq:[{int:0},{int:{bigint:e.p}},{int:{bigint:e.q}},{int:{bigint:e.g}},{int:{bigint:e.y}},{int:{bigint:e.x}}]})}if((void 0!==f&&e instanceof f||void 0!==p&&e instanceof p||void 0!==g&&e instanceof g)&&1==e.isPublic&&(void 0===t||"PKCS8PUB"==t))return _u(C=new h(e).tohex(),"PUBLIC KEY");if("PKCS1PRV"==t&&void 0!==f&&e instanceof f&&(void 0===n||null==n)&&1==e.isPrivate)return _u(C=m(e).tohex(),"RSA PRIVATE KEY");if("PKCS1PRV"==t&&void 0!==g&&e instanceof g&&(void 0===n||null==n)&&1==e.isPrivate){var v=new c({name:e.curveName}).tohex(),b=y(e).tohex(),S="";return S+=_u(v,"EC PARAMETERS"),S+=_u(b,"EC PRIVATE KEY")}if("PKCS1PRV"==t&&void 0!==p&&e instanceof p&&(void 0===n||null==n)&&1==e.isPrivate)return _u(C=w(e).tohex(),"DSA PRIVATE KEY");if("PKCS5PRV"==t&&void 0!==f&&e instanceof f&&void 0!==n&&null!=n&&1==e.isPrivate){var C=m(e).tohex();return void 0===r&&(r="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("RSA",C,n,r,s)}if("PKCS5PRV"==t&&void 0!==g&&e instanceof g&&void 0!==n&&null!=n&&1==e.isPrivate){C=y(e).tohex();return void 0===r&&(r="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("EC",C,n,r,s)}if("PKCS5PRV"==t&&void 0!==p&&e instanceof p&&void 0!==n&&null!=n&&1==e.isPrivate){C=w(e).tohex();return void 0===r&&(r="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("DSA",C,n,r,s)}var x=function(e,t){if("string"==typeof t)return Xu.getEncryptedPKCS8PEM(e,t);if("object"==typeof t&&null!=zu(t,"passcode")){var n=JSON.parse(JSON.stringify(t)),r=n.passcode;return delete n.passcode,Xu.getEncryptedPKCS8PEM(e,r,n)}};if("PKCS8PRV"==t&&null!=f&&e instanceof f&&1==e.isPrivate){var I=m(e).tohex();C=u({seq:[{int:0},{seq:[{oid:{name:"rsaEncryption"}},{null:!0}]},{octstr:{hex:I}}]}).tohex();return void 0===n||null==n?_u(C,"PRIVATE KEY"):x(C,n)}if("PKCS8PRV"==t&&void 0!==g&&e instanceof g&&1==e.isPrivate){var E={seq:[{int:1},{octstr:{hex:e.prvKeyHex}}]};"string"==typeof e.pubKeyHex&&E.seq.push({tag:["a1",!0,{bitstr:{hex:"00"+e.pubKeyHex}}]});I=new u(E).tohex(),C=u({seq:[{int:0},{seq:[{oid:{name:"ecPublicKey"}},{oid:{name:e.curveName}}]},{octstr:{hex:I}}]}).tohex();return void 0===n||null==n?_u(C,"PRIVATE KEY"):x(C,n)}if("PKCS8PRV"==t&&void 0!==p&&e instanceof p&&1==e.isPrivate){I=new l({bigint:e.x}).tohex(),C=u({seq:[{int:0},{seq:[{oid:{name:"dsa"}},{seq:[{int:{bigint:e.p}},{int:{bigint:e.q}},{int:{bigint:e.g}}]}]},{octstr:{hex:I}}]}).tohex();return void 0===n||null==n?_u(C,"PRIVATE KEY"):x(C,n)}throw new Error("unsupported object nor format")},Xu.getKeyFromCSRPEM=function(e){var t=Pu(e,"CERTIFICATE REQUEST");return Xu.getKeyFromCSRHex(t)},Xu.getKeyFromCSRHex=function(e){var t=Xu.parseCSRHex(e);return Xu.getKey(t.p8pubkeyhex,null,"pkcs8pub")},Xu.parseCSRHex=function(e){var t=mu,n=t.getChildIdx,r=t.getTLV,i={},s=e;if("30"!=s.substr(0,2))throw new Error("malformed CSR(code:001)");var o=n(s,0);if(o.length<1)throw new Error("malformed CSR(code:002)");if("30"!=s.substr(o[0],2))throw new Error("malformed CSR(code:003)");var a=n(s,o[0]);if(a.length<3)throw new Error("malformed CSR(code:004)");return i.p8pubkeyhex=r(s,a[2]),i},Xu.getKeyID=function(e){var t=Xu,n=mu;"string"==typeof e&&-1!=e.indexOf("BEGIN ")&&(e=t.getKey(e));var r=Pu(t.getPEM(e)),i=n.getIdxbyList(r,0,[1]),s=n.getV(r,i).substring(2);return pu.crypto.Util.hashHex(s,"sha1")},Xu.getJWK=function(e,t,n,r,i){var s,o,a={},c=pu.crypto.Util.hashHex;if("string"==typeof e)s=Xu.getKey(e),-1!=e.indexOf("CERTIFICATE")&&(o=Pu(e));else{if("object"!=typeof e)throw new Error("unsupported keyinfo type");e instanceof th?(s=e.getPublicKey(),o=e.hex):s=e}if(s instanceof cu&&s.isPrivate)a.kty="RSA",a.n=Su(s.n.toString(16)),a.e=Su(s.e.toString(16)),a.d=Su(s.d.toString(16)),a.p=Su(s.p.toString(16)),a.q=Su(s.q.toString(16)),a.dp=Su(s.dmp1.toString(16)),a.dq=Su(s.dmq1.toString(16)),a.qi=Su(s.coeff.toString(16));else if(s instanceof cu&&s.isPublic)a.kty="RSA",a.n=Su(s.n.toString(16)),a.e=Su(s.e.toString(16));else if(s instanceof pu.crypto.ECDSA&&s.isPrivate){if("P-256"!==(u=s.getShortNISTPCurveName())&&"P-384"!==u&&"P-521"!==u)throw new Error("unsupported curve name for JWT: "+u);var l=s.getPublicKeyXYHex();a.kty="EC",a.crv=u,a.x=Su(l.x),a.y=Su(l.y),a.d=Su(s.prvKeyHex)}else if(s instanceof pu.crypto.ECDSA&&s.isPublic){var u;if("P-256"!==(u=s.getShortNISTPCurveName())&&"P-384"!==u&&"P-521"!==u)throw new Error("unsupported curve name for JWT: "+u);l=s.getPublicKeyXYHex();a.kty="EC",a.crv=u,a.x=Su(l.x),a.y=Su(l.y)}if(null==a.kty)throw new Error("unsupported keyinfo");return s.isPrivate||1==t||(a.kid=pu.jws.JWS.getJWKthumbprint(a)),null!=o&&1!=n&&(a.x5c=[Il(o)]),null!=o&&1!=r&&(a.x5t=vu(Il(c(o,"sha1")))),null!=o&&1!=i&&(a["x5t#S256"]=vu(Il(c(o,"sha256")))),a},Xu.getJWKFromKey=function(e){return Xu.getJWK(e,!0,!0,!0,!0)},cu.getPosArrayOfChildrenFromHex=function(e){return mu.getChildIdx(e,0)},cu.getHexValueArrayOfChildrenFromHex=function(e){var t,n=mu.getV,r=n(e,(t=cu.getPosArrayOfChildrenFromHex(e))[0]),i=n(e,t[1]),s=n(e,t[2]),o=n(e,t[3]),a=n(e,t[4]),c=n(e,t[5]),l=n(e,t[6]),u=n(e,t[7]),h=n(e,t[8]);return(t=new Array).push(r,i,s,o,a,c,l,u,h),t},cu.prototype.readPrivateKeyFromPEMString=function(e){var t=Pu(e),n=cu.getHexValueArrayOfChildrenFromHex(t);this.setPrivateEx(n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8])},cu.prototype.readPKCS5PrvKeyHex=function(e){var t=cu.getHexValueArrayOfChildrenFromHex(e);this.setPrivateEx(t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},cu.prototype.readPKCS8PrvKeyHex=function(e){var t,n,r,i,s,o,a,c,l=mu,u=l.getVbyListEx;if(!1===l.isASN1HEX(e))throw new Error("not ASN.1 hex string");try{t=u(e,0,[2,0,1],"02"),n=u(e,0,[2,0,2],"02"),r=u(e,0,[2,0,3],"02"),i=u(e,0,[2,0,4],"02"),s=u(e,0,[2,0,5],"02"),o=u(e,0,[2,0,6],"02"),a=u(e,0,[2,0,7],"02"),c=u(e,0,[2,0,8],"02")}catch(e){throw new Error("malformed PKCS#8 plain RSA private key")}this.setPrivateEx(t,n,r,i,s,o,a,c)},cu.prototype.readPKCS5PubKeyHex=function(e){var t=mu,n=t.getV;if(!1===t.isASN1HEX(e))throw new Error("keyHex is not ASN.1 hex string");var r=t.getChildIdx(e,0);if(2!==r.length||"02"!==e.substr(r[0],2)||"02"!==e.substr(r[1],2))throw new Error("wrong hex for PKCS#5 public key");var i=n(e,r[0]),s=n(e,r[1]);this.setPublic(i,s)},cu.prototype.readPKCS8PubKeyHex=function(e){var t=mu;if(!1===t.isASN1HEX(e))throw new Error("not ASN.1 hex string");if("06092a864886f70d010101"!==t.getTLVbyListEx(e,0,[0,0]))throw new Error("not PKCS8 RSA public key");var n=t.getTLVbyListEx(e,0,[1,0]);this.readPKCS5PubKeyHex(n)},cu.prototype.readCertPubKeyHex=function(e,t){var n,r;(n=new th).readCertHex(e),r=n.getPublicKeyHex(),this.readPKCS8PubKeyHex(r)},cu.prototype.sign=function(e,t){var n=function(e){return pu.crypto.Util.hashString(e,t)}(e);return this.signWithMessageHash(n,t)},cu.prototype.signWithMessageHash=function(e,t){var n=au(pu.crypto.Util.getPaddedDigestInfoHex(e,t,this.n.bitLength()),16);return Yu(this.doPrivate(n).toString(16),this.n.bitLength())},cu.prototype.signPSS=function(e,t,n){var r=function(e){return pu.crypto.Util.hashHex(e,t)}(ku(e));return void 0===n&&(n=-1),this.signWithMessageHashPSS(r,t,n)},cu.prototype.signWithMessageHashPSS=function(e,t,n){var r,i=Au(e),s=i.length,o=this.n.bitLength()-1,a=Math.ceil(o/8),c=function(e){return pu.crypto.Util.hashHex(e,t)};if(-1===n||void 0===n)n=s;else if(-2===n)n=a-s-2;else if(n<-2)throw new Error("invalid salt length");if(a0&&(l=new Array(n),(new ou).nextBytes(l),l=String.fromCharCode.apply(String,l));var u=Au(c(ku("\0\0\0\0\0\0\0\0"+i+l))),h=[];for(r=0;r>8*a-o&255;for(g[0]&=~f,r=0;rr)return!1;var i=this.doPublic(n).toString(16);if(i.length+3!=r/4)return!1;var s=eh(i.replace(/^1f+00/,""));if(0==s.length)return!1;var o,a=s[0];return s[1]==(o=e,pu.crypto.Util.hashString(o,a))},cu.prototype.verifyWithMessageHash=function(e,t){if(t.length!=Math.ceil(this.n.bitLength()/4))return!1;var n=au(t,16);if(n.bitLength()>this.n.bitLength())return 0;var r=eh(this.doPublic(n).toString(16).replace(/^1f+00/,""));return 0!=r.length&&(r[0],r[1]==e)},cu.prototype.verifyPSS=function(e,t,n,r){var i=function(e){return pu.crypto.Util.hashHex(e,n)}(ku(e));return void 0===r&&(r=-1),this.verifyWithMessageHashPSS(i,t,n,r)},cu.prototype.verifyWithMessageHashPSS=function(e,t,n,r){if(t.length!=Math.ceil(this.n.bitLength()/4))return!1;var i,s=new Al(t,16),o=function(e){return pu.crypto.Util.hashHex(e,n)},a=Au(e),c=a.length,l=this.n.bitLength()-1,u=Math.ceil(l/8);if(-1===r||void 0===r)r=c;else if(-2===r)r=u-c-2;else if(r<-2)throw new Error("invalid salt length");if(u>8*u-l&255;if(0!=(d.charCodeAt(0)&g))throw new Error("bits beyond keysize not zero");var f=Zu(p,d.length,o),m=[];for(i=0;i0)&&-1==(":"+n.join(":")+":").indexOf(":"+f+":"))throw"algorithm '"+f+"' not accepted in the list";if("none"!=f&&null===t)throw"key shall be specified to verify.";if("string"==typeof t&&-1!=t.indexOf("-----BEGIN ")&&(t=Xu.getKey(t)),!("RS"!=m&&"PS"!=m||t instanceof r))throw"key shall be a RSAKey obj for RS* and PS* algs";if("ES"==m&&!(t instanceof c))throw"key shall be a ECDSA obj for ES* algs";var y=null;if(void 0===s.jwsalg2sigalg[g.alg])throw"unsupported alg name: "+f;if("none"==(y=s.jwsalg2sigalg[f]))throw"not supported";if("Hmac"==y.substr(0,4)){if(void 0===t)throw"hexadecimal key shall be specified for HMAC";var w=new l({alg:y,pass:t});return w.updateString(d),p==w.doFinal()}if(-1!=y.indexOf("withECDSA")){var v,b=null;try{b=c.concatSigToASN1Sig(p)}catch(e){return!1}return(v=new u({alg:y})).init(t),v.updateString(d),v.verify(b)}return(v=new u({alg:y})).init(t),v.updateString(d),v.verify(p)},pu.jws.JWS.parse=function(e){var t,n,r,i=e.split("."),s={};if(2!=i.length&&3!=i.length)throw"malformed sJWS: wrong number of '.' splitted elements";return t=i[0],n=i[1],3==i.length&&(r=i[2]),s.headerObj=pu.jws.JWS.readSafeJSONString(fu(t)),s.payloadObj=pu.jws.JWS.readSafeJSONString(fu(n)),s.headerPP=JSON.stringify(s.headerObj,null," "),null==s.payloadObj?s.payloadPP=fu(n):s.payloadPP=JSON.stringify(s.payloadObj,null," "),void 0!==r&&(s.sigHex=Cu(r)),s},pu.jws.JWS.verifyJWT=function(e,t,n){var r=pu.jws,i=r.JWS,s=i.readSafeJSONString,o=i.inArray,a=i.includedArray;if(!Wu(e))return!1;var c=e.split(".");if(3!=c.length)return!1;var l=c[0],u=c[1];Cu(c[2]);var h=s(fu(l)),d=s(fu(u));if(void 0===h.alg)return!1;if(void 0===n.alg)throw"acceptField.alg shall be specified";if(!o(h.alg,n.alg))return!1;if(void 0!==d.iss&&"object"==typeof n.iss&&!o(d.iss,n.iss))return!1;if(void 0!==d.sub&&"object"==typeof n.sub&&!o(d.sub,n.sub))return!1;if(void 0!==d.aud&&"object"==typeof n.aud)if("string"==typeof d.aud){if(!o(d.aud,n.aud))return!1}else if("object"==typeof d.aud&&!a(d.aud,n.aud))return!1;var p=r.IntDate.getNow();return void 0!==n.verifyAt&&"number"==typeof n.verifyAt&&(p=n.verifyAt),void 0!==n.gracePeriod&&"number"==typeof n.gracePeriod||(n.gracePeriod=0),!(void 0!==d.exp&&"number"==typeof d.exp&&d.exp+n.gracePeriodi&&this.aHeader.pop(),this.aSignature.length>i&&this.aSignature.pop(),"addSignature failed: "+e}},this.verifyAll=function(e){if(this.aHeader.length!==e.length||this.aSignature.length!==e.length)return!1;for(var t=0;t0))throw"malformed header";if(this.aHeader=e.headers,"string"!=typeof e.payload)throw"malformed signatures";if(this.sPayload=e.payload,!(e.signatures.length>0))throw"malformed signatures";this.aSignature=e.signatures}catch(e){throw"malformed JWS-JS JSON object: "+e}},this.getJSON=function(){return{headers:this.aHeader,payload:this.sPayload,signatures:this.aSignature}},this.isEmpty=function(){return 0==this.aHeader.length?1:0}},pu.crypto.ECDSA,pu.crypto.DSA,pu.crypto.Signature,pu.crypto.MessageDigest,pu.crypto.Mac;var nh=fu,rh=pu;pu.crypto,pu.asn1,pu.jws,pu.lang;var ih,sh=((ih=sh||{})[ih.trace=0]="trace",ih[ih.debug=1]="debug",ih[ih.info=2]="info",ih[ih.warn=3]="warn",ih[ih.error=4]="error",ih),oh=Object.create(null),ah={},ch="gateway";ah[ch]=2;var lh=e=>{console.log(`${e.time.toISOString()} [${e.level}] ${e.name}: ${e.message}`)};function uh(e,t,n,...r){this.enabledFor(t)&&lh({time:new Date,level:t,name:e,message:n,data:r})}function hh(e){if(!e.startsWith(ch))throw new Error(`Logger name must start with ${ch}`);return oh[e]||(oh[e]=function(e){let t=function(n,r,...i){uh.call(t,e,n,r,...i)};for(let n of Object.keys(sh).filter((function(e){return isNaN(Number(e))})))t[n]=function(r,...i){uh.call(t,e,n,r,...i)};if(!ah[e]){let t=Object.entries(ah).sort((([e],[t])=>t.localeCompare(e))),[,n]=t.find((([t])=>e.startsWith(t)));ah[e]=n}return t.enabledFor=function(t){let n=sh[t];return ah[e]<=n},t}(e))}function dh(e){function t(e,t){for(let n of Object.keys(ah).filter((t=>t.startsWith(e))))ah[n]=sh[t]}let n=e.level;if("string"==typeof n)ah[ch]=sh[n],t(ch,n);else if("object"==typeof n){let e=Object.entries(n).sort((([e],[t])=>e.localeCompare(t)));for(let[n,r]of e)t(n,r)}lh=e.appender??lh}var ph="global",gh="context",fh=`${ph}.errors.failure`;function mh(e,t){return{receiver:e,body:t}}function yh(e,t){return{...mh({type:"cluster"},t),source:e}}function wh(e,t,n){return{...mh(t,n),source:e}}function vh(e,t,n,r,i,s){return mh(t,function(e,t,n,r,i){let s={type:"error",request_id:t,reason_uri:r.uri,reason:r.message};return e&&(s.domain=e),n&&(s.peer_id=n),i&&(s.context=i),s}(e,n,r,i,s))}function bh(e,t,n,r){return mh(t,function(e,t,n){return{type:"success",request_id:t,domain:e,peer_id:n}}(e,n,r))}function Sh(e){let t=e.type;return t&&"local"===t}function Ch(e){return!Sh(e)}function xh(e,t,n,r,i){return mh(t,function(e,t,n,r){return{domain:e,type:"token",request_id:t,peer_id:n,token:r}}(e,n,r,i))}function Ih(e,t,n,r,i,s){return mh(t,function(e,t,n,r,i){return{domain:e,type:"peer-added",peer_id:t,new_peer_id:n,identity:r,meta:i}}(e,n,r,i,s))}function Eh(e,t,n,r,i){return mh(t,function(e,t,n,r){return{domain:e,type:"peer-removed",peer_id:t,removed_id:n,reason_uri:r.uri,reason:r.message}}(e,n,r,i))}var Ah=class extends Error{constructor(e,t,n){super(e),this.data=t,this.cause=n,this.name="ExceptionInfo",this.data=t,this.cause=n}};function kh(e,t,n){return new Ah(e,t,n)}function _h(e){if(e instanceof Ah)return e.data}function Ph(e){if(e instanceof Error)return e.message}function Th(e,t){return{uri:e,message:t}}function Fh(e,t){let n=_h(e);return{uri:n?.uri??t,message:n?.message??Ph(e)??""}}function Dh(e,t){throw new Ah(t,{uri:e,message:t})}function Oh(e){return{uri:e.reason_uri,message:e.reason}}function Rh(){let e=function(e){return Math.floor(Math.random()*e)},t=function(){return e(16).toString(16)},n=(8|3&e(16)).toString(16);return(t()+t()+t()+t()+t()+t()+t()+t()+"-"+t()+t()+t()+t()+"-4"+t()+t()+t()+"-"+n+t()+t()+t()+"-"+t()+t()+t()+t()+t()+t()+t()+t()+t()+t()+t()+t()).replace("-","")}function Nh(e){return e?e.nodeId:Rh()}function jh(e){let t=e.currentId??1,n=`r-${e.nodeId}-${t}`;return[{...e,currentId:t+1},n]}function $h(e){let t=e.currentId??1,n=`c-${e.nodeId}-${t}`;return[{...e,currentId:t+1},n]}function Mh(e,t){return{ids:{nodeId:e,currentId:1},signatureKey:t??Rh()}}function qh(e,t,n,r){return yl(e,(e=>{e.peers[t][n]=r??{},e.domains=e.domains||{},e.domains[n]=e.domains[n]||new Set,e.domains[n].add(t)}))}function Bh(e,t,n){return yl(e,(e=>{e.peers&&delete e.peers[t][n],e.domains&&e.domains[n]&&e.domains[n].delete(t)}))}function Lh(e,t,n){return!!e.domains?.[n]?.has(t)}function Wh(e,t,n){return t?yl(e,(e=>{e.gatewayRequests=e.gatewayRequests||{},e.gatewayRequests[t]=n})):e}function Hh(e,t){return yl({state:e},(e=>{e.state.gatewayRequests&&(e.removed=e.state.gatewayRequests[t],delete e.state.gatewayRequests[t],0===Object.keys(e.state.gatewayRequests).length&&delete e.state.gatewayRequests)}))}function Uh(e,t){return e.registeredDomains?.[t]?.domain}function Gh(e,...t){return t.reduce((([e,t],n)=>{let[r,i]=n(e);return[r,t.concat(i)]}),[e,[]])}function Vh(e,t,n){let r=e=>function(e,t){switch(t.type){case"node":return t.node===e.node;case"peer":return t.node===e.node&&t.peerId===e.peerId;case"local":return t.receive===e.receive;default:return!1}}(e.source,t);return n?Yh(e,n).filter(r):Object.values(e.peers??{}).filter(r)}function Jh(e,t,n){let r=Kh(e,t);if(r?.[n])return r}function Kh(e,t){return t?e.peers?.[t]:void 0}function zh(e,t){if(t){let n=Kh(e,t);if(n)return n;throw kh(`Unable to find peer ${t}`,{})}throw kh("Peer id is missing",{})}function Qh(e,t,n){if(t){let r=Jh(e,t,n);if(r)return r;throw kh(`Unable to find peer ${t} in domain ${n}`,{})}throw kh("Peer id is missing",{})}function Xh(e){return"local"===e?.source.type}function Yh(e,t){return t?Array.from(e.domains?.[t]??[],(t=>Kh(e,t))).filter((e=>!!e)):Object.values(e.peers||{})}function Zh(e,t,n,r,i,s){let o=Kh(e,n);if(o)return[e,o];let a=yl({id:n,identity:r,source:t},(e=>{s&&(e.options=s),i&&(e.creationRequest=i)}));return[yl(e,(e=>{e.users=e.users||{},r.user?(e.users.byName=e.users.byName||{},e.users.byName[r.user]?e.users.byName[r.user].add(n):e.users.byName[r.user]=new Set([n])):(e.users.noUser=e.users.noUser||new Set,e.users.noUser.add(n)),e.identities=e.identities||new Map,e.identities.set(JSON.stringify(r,Object.keys(r).sort()),n),e.peers=e.peers||{},e.peers[n]=a,s?.service&&(e.services=e.services||new Set,e.services.add(n))})),a]}function ed(e,t,n){return yl(e,(e=>{e.peers=e.peers||{},e.peers[t]=n}))}function td(e,t,n){return yl(e,(e=>{e.peers[t]=yl(e.peers[t],n)}))}function nd(e,t,n,r,i,s){if(t||i)return!0;{let t=r.user,i=e.user;return s||n||t===i}}function rd(e,t,n){let r=t.identity,i=t[e]?.restrictions,s=t.options?.service,o=n.identity,a=n[e]?.restrictions,c=n.options?.service;return n.id!==t.id&&nd(r,i,s,o,a,c)}function id(e,t,n,r=!1){return Yh(e,t).concat(Array.from(e.services??[],(t=>Kh(e,t))).filter((e=>!!e))).filter((e=>r&&n.id===e.id||rd(t,n,e)))}function sd(e,t,n,r){if(n.options?.service)return id(e,t,n,r);{let i=n.identity.user;return i?Array.from(e.users?.byName?.[i]??[]).concat(Array.from(e.services??[])).map((t=>Kh(e,t))).filter((e=>!!e)).filter((e=>function(e,t){return!!e[t]}(e,t)&&rd(t,n,e)||r&&e.id===n.id)):id(e,t,n,r)}}function od(e,t,n,r,i){return sd(n,t,i).reduce(((t,n)=>function(e,t,n,r,i){let s=i.identity,o=i.id,a=r.id,c=Xh(r);return yl(t,(t=>{c&&t.push(Ih(e,n,a,o,s,{local:c})),Xh(i)&&t.push(Ih(e,i.source,o,a,r.identity,{local:c}))}))}(e,t,r,i,n)),[])}function ad(e,t,n,r,i,s){let o=r.id;return[Bh(n,o,t),sd(n,t,r).reduce(((t,n)=>(t=t.concat(Eh(e,n.source,n.id,o,i)),s||(t=t.concat(Eh(e,r.source,o,n.id,i))),t)),[])]}function cd(e,t,n){let{peer_id:r}=n,i=Kh(e,r);if(i&&!function(e,t){if(e===t)return!0;let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(e[r]!==t[r])return!1;return!0}(t,i.source))throw kh(`The original source ${JSON.stringify(i.source)} of peer ${r} doesnt match the current source ${JSON.stringify(t)}`,{message:"Bad Source"})}!function(){class e extends Map{constructor(e,t){super(),this[Fc]={type_:2,parent_:t,scope_:t?t.scope_:Yc(),modified_:!1,finalized_:!1,copy_:void 0,assigned_:void 0,base_:e,draft_:this,isManual_:!1,revoked_:!1}}get size(){return Uc(this[Fc]).size}has(e){return Uc(this[Fc]).has(e)}set(e,n){const r=this[Fc];return i(r),Uc(r).has(e)&&Uc(r).get(e)===n||(t(r),dl(r),r.assigned_.set(e,!0),r.copy_.set(e,n),r.assigned_.set(e,!0)),this}delete(e){if(!this.has(e))return!1;const n=this[Fc];return i(n),t(n),dl(n),n.base_.has(e)?n.assigned_.set(e,!1):n.assigned_.delete(e),n.copy_.delete(e),!0}clear(){const e=this[Fc];i(e),Uc(e).size&&(t(e),dl(e),e.assigned_=new Map,Mc(e.base_,(t=>{e.assigned_.set(t,!1)})),e.copy_.clear())}forEach(e,t){Uc(this[Fc]).forEach(((n,r,i)=>{e.call(t,this.get(r),r,this)}))}get(e){const n=this[Fc];i(n);const r=Uc(n).get(e);if(n.finalized_||!Nc(r))return r;if(r!==n.base_.get(e))return r;const s=gl(r,n);return t(n),n.copy_.set(e,s),s}keys(){return Uc(this[Fc]).keys()}values(){const e=this.keys();return{[Symbol.iterator]:()=>this.values(),next:()=>{const t=e.next();if(t.done)return t;return{done:!1,value:this.get(t.value)}}}}entries(){const e=this.keys();return{[Symbol.iterator]:()=>this.entries(),next:()=>{const t=e.next();if(t.done)return t;const n=this.get(t.value);return{done:!1,value:[t.value,n]}}}}[Symbol.iterator](){return this.entries()}}function t(e){e.copy_||(e.assigned_=new Map,e.copy_=new Map(e.base_))}class n extends Set{constructor(e,t){super(),this[Fc]={type_:3,parent_:t,scope_:t?t.scope_:Yc(),modified_:!1,finalized_:!1,copy_:void 0,base_:e,draft_:this,drafts_:new Map,revoked_:!1,isManual_:!1}}get size(){return Uc(this[Fc]).size}has(e){const t=this[Fc];return i(t),t.copy_?!!t.copy_.has(e)||!(!t.drafts_.has(e)||!t.copy_.has(t.drafts_.get(e))):t.base_.has(e)}add(e){const t=this[Fc];return i(t),this.has(e)||(r(t),dl(t),t.copy_.add(e)),this}delete(e){if(!this.has(e))return!1;const t=this[Fc];return i(t),r(t),dl(t),t.copy_.delete(e)||!!t.drafts_.has(e)&&t.copy_.delete(t.drafts_.get(e))}clear(){const e=this[Fc];i(e),Uc(e).size&&(r(e),dl(e),e.copy_.clear())}values(){const e=this[Fc];return i(e),r(e),e.copy_.values()}entries(){const e=this[Fc];return i(e),r(e),e.copy_.entries()}keys(){return this.values()}[Symbol.iterator](){return this.values()}forEach(e,t){const n=this.values();let r=n.next();for(;!r.done;)e.call(t,r.value,r.value,this),r=n.next()}}function r(e){e.copy_||(e.copy_=new Set,e.base_.forEach((t=>{if(Nc(t)){const n=gl(t,e);e.drafts_.set(t,n),e.copy_.add(n)}else e.copy_.add(t)})))}function i(e){e.revoked_&&Dc(3,JSON.stringify(Uc(e)))}!function(e,t){Qc[e]||(Qc[e]=t)}("MapSet",{proxyMap_:function(t,n){return new e(t,n)},proxySet_:function(e,t){return new n(e,t)}})}();var ld=hh("gateway.node");function ud(e,t){if("commands/source-removed"===t.body.type)return function(e,t){let n=Object.values(t.registeredDomains).filter((e=>e.info.uri!==ph)).map((e=>e.domain));return t.registeredDomains[ph]&&n.push(t.registeredDomains[ph].domain),n.reduce((([t,n],r)=>{ld.debug(`About to remove source from domain ${JSON.stringify(r.info())}`);let i=r.handleMessage(t,e);if(i){ld.debug(`removed source from domain ${JSON.stringify(r.info())}`);let[e,t]=i;return[e,n.concat(t)]}return[t,n]}),[t,[]])}(t,e);{let{source:n,body:r}=t,{registeredDomains:i}=e,s=r.domain??ph,o=i[s]?.domain;if(o)return ld.debug(`Handling message with domain ${JSON.stringify(o.info())} message: \n ${JSON.stringify(t,null,"\t")}`),cd(e,n,r),o.handleMessage(e,t);{let i=r;return[e,[vh(i.domain,n,i.request_id,i.peer_id,Th(fh,`Unable to find domain for message ${JSON.stringify(t)}`))]]}}}var hd=class{constructor(e=-1){this.bufferSize=e,this.queue=[],this.closed=!1,this.draining=!1}put(e){return new Promise(((t,n)=>{this.closed&&n(new Error("cannot enqueue promise serializer is closed"));let r={action:e,resolve:t,reject:n};if(!(this.bufferSize<0||this.queue.length{let r=dd(e[n]);return t[n]=r,t}),{}):e}function pd(...e){return function(e){let t=new Map;return function(n,r){let i=t.get(this)+(Array.isArray(this)?`[${n}]`:`.${n}`);return r===Object(r)&&t.set(r,i),e.call(this,n,r,i.replace(/undefined\.\.?/,""))}}(((t,n,r)=>-1!==e.indexOf(r)?"******":n))}function gd(e){return e.reduce(((e,t)=>{let n=t.info(),r={};return r[n.uri]={domain:t,info:n},Object.assign(e,r)}),{})}var fd=hh("gateway.node.local");async function md(e){switch(e.receiver.type){case"cluster":case"node":case"peer":return;case"local":{let{receiver:t,body:n}=e;fd.debug(`Sending message ${JSON.stringify(n,null,"\t")} to ${JSON.stringify(t)}`),function(e){return"receive"in e&&e.receive}(t)&&await t.receive(n);break}default:fd.error(`Unable to process ${JSON.stringify(e)}`)}}async function yd(e,t){try{fd.trace(`domain handler processing message ${JSON.stringify(t)}`);let[n,r]=function(e,t){let{source:n,body:r,origin:i}=t;try{return r.dump?(fd.info(`state dump:\n${JSON.stringify(dd(e),null,"\t")}`),[e,[]]):"cluster"===i?[e,[]]:ud(e,t)}catch(i){fd.error(`Error handling message ${JSON.stringify(t)}`,i);let s=r;return[e,[vh(void 0,n,s.request_id,s.peer_id,Fh(i,fh))]]}}(e,t);if(r)for(let e of r)await md(e);return n??e}catch(n){return fd.error(`error handling message ${JSON.stringify(t)}`,n),e}}var wd=ph,vd=fh,bd=`${wd}.errors.unhandled_message`,Sd=`${wd}.errors.already_seen`,Cd=`${wd}.errors.invalid_domain`,xd=`${wd}.errors.authentication.failure`,Id=`${wd}.errors.invalid_peer`;function Ed(e,t,n,r,i){let s={domain:e,type:"authentication-request",request_id:n,authentication:i};return r&&(s.peer_id=r),mh(t,s)}var Ad={application:{required:!0},instance:{required:!1},region:{required:!1},environment:{required:!1},machine:{required:!1},user:{required:!1}};function kd(e){let t=function(e){return Object.keys(Ad).find((t=>Ad[t]&&Ad[t].required&&void 0===e[t]))}(e);if(t)throw new Ah(`Identity ${JSON.stringify(e)} is missing required key: ${t}`,{})}function _d(e,t){let n=e;return n&&-1!==n.indexOf(":")&&(n=n.substring(0,n.indexOf(":"))),n&&n.indexOf("127.0.0.1")>=0?t??n:n??t}function Pd(e,t){return rh.jws.JWS.sign(null,{alg:"HS256",typ:"JWT"},e,t)}function Td(e,t,n){let r;if(!rh.jws.JWS.verifyJWT(e,t,{alg:["HS256"],verifyAt:n?.now}))throw new Error("invalid jwt token");return r=rh.jws.JWS.parse(e),r.payloadObj}function Fd(e,t,n,r){let i={type:"gw-request","impersonate-peer":t,"gw-request":n};return r&&(i.exp=Math.floor(r/1e3)),Pd(i,e.signatureKey)}function Dd(e,t,n){let r={type:"authentication",user:t.user};return n&&(r.exp=Math.floor(n/1e3)),Pd(r,e.signatureKey)}var Od="context-domain";function Rd(e,t){return yl(e,(e=>{e.contexts=e.contexts||{},e.contexts[t.id]=t}))}function Nd(e,t){return yl(e,(e=>{e.contexts&&(delete e.contexts[t],0===Object.values(e.contexts).length&&delete e.contexts)}))}function jd(e,t,n){let r,i=n.identity.user,s=n.options?.service,o=Object.values(e.contexts||{});return r=o.find((e=>t===e.name&&e.identity.user===i)),r||(r=o.find((e=>t===e.name&&(s||e.options?.service)))),r}function $d(e,t){if(t)return e.contexts?.[t]}function Md(e,t){let n=e.contexts?.[t];if(n)return n;throw kh(`Unable to find context with id ${t}`,{})}function qd(e,t,n){return t&&n?t.members.has(n)?e:yl(e,(e=>{e.contexts=e.contexts||{},e.contexts[t.id]=yl(t,(e=>{e.members=e.members||new Set,e.members.add(n)}))})):e}function Bd(e,t,n){return yl([e,t],(([e,r])=>{r.members.delete(n),n===r.owner&&delete r.owner,e.contexts=e.contexts||{},e.contexts[t.id]=r}))}function Ld(e,t,n){if(!t)return n;if(1===t.length)e[t[0]]=n;else{let r=e[t[0]]||{};(Array.isArray(r)||"number"==typeof r||"boolean"==typeof r)&&(r={}),e[t[0]]=Ld(r,t.slice(1),n)}return e}function Wd(e,t){let[n,r]=t;switch(n){case"removed":r.forEach((t=>{delete e[t]}));break;case"added":Object.entries(r).reduce(((e,[t,n])=>(e[t]=n,e)),e);break;case"updated":Object.entries(r).reduce(((e,[t,n])=>(Array.isArray(n)&&Array.isArray(e[t])?e[t]=n:n instanceof Object&&e[t]instanceof Object?e[t]=function(e,t){return{...e,...t}}(e[t],n):e[t]=n,e)),e);break;case"reset":r&&(e=r);break;case"commands":e=r.reduce(((e,t)=>{switch(t.type){case"set":return Ld(e,Hd(t.path),t.value);case"remove":{let n=Hd(t.path);if(!n)return{};{let t=e;for(let r=0;rr.updates||n.updates===r.updates&&n.timestamp>=r.timestamp}function rp(e,t,n=!1){let r=e.lifetime;return t.id===e.creator||("activity"===r?e.members.has(t.id):t.id===e.creator||t.id===e.owner||(n?!!e.write_permissions&&(e.write_permissions,e.identity,t.identity,!0):(e.write_permissions,e.identity,t.identity,!0)))}function ip(e,t,n){"activity"===t.lifetime&&Dh(Qd(e),"Activity contexts cannot be explicitly destroyed");let r="ownership"===t.lifetime;r&&t.owner===n.id||!r&&rp(t,n)||Dh(Qd(e),"Not authorized to destroy context")}function sp(e,t){return t.id===e.creator||t.id===e.owner||(e.read_permissions,e.identity,t.identity,!0)||rp(e,t,!0)}function op(e,t,n){sp(t,n)||Dh(Qd(e),"Not authorized to read context")}function ap(e,t,n,r){return Ch(n)?function(e,t,n,r){let{peer_id:i,name:s}=r;try{let n=jd(t,s,zh(t,i));return n?xp(e,t,i,n):(vp.warn(`unable to find remote context ${s}`),[t,[]])}catch(e){return vp.warn(`unable to process remote unsubscribe ${r}`,e),[t,[]]}}(e,t,0,r):function(e,t,n,r){let{request_id:i,peer_id:s,context_id:o}=r;try{zh(t,s);let a=Md(t,o),[c,l]=xp(e,t,s,a),u={...r,type:"unsubscribe-context",name:a.name};return[c,l.concat([bh(e,n,i,s),yh(Zd(Nh(c.ids),s),u)])]}catch(r){return[t,[vh(e,n,i,s,Fh(r,Yd(e)))]]}}(e,t,n,r)}function cp(e,t,n){let{source:r,id:i}=n;return tp(t).filter((e=>function(e,t){return Xh(e)&&"activity"!==t.lifetime&&sp(t,e)}(n,e))).map((t=>{let{creator:n,id:s,name:o}=t;return Jd(e,r,i,n,s,o)}))}function lp(e){return e.options?.context_compatibility_mode?ph:gh}function up(e,t,n,r,i,s){let o=t.id,a=function(e,t,n,r){return yl(e,(e=>{e.contexts[t].data=Object.entries(n).reduce(((e,[t,n])=>Wd(e,[t,n])),e.contexts[t].data),e.contexts[t].version=r}))}(e,t.id,r,i);return[a,Array.from(t.members).filter((e=>e!==n)).map((e=>Kh(a,e))).filter((e=>!!e)).filter((e=>Xh(e))).map((e=>function(e,t,n,r,i,s){return mh(t,{domain:e,type:"context-updated",peer_id:n,updater_id:r,context_id:i,delta:s})}(lp(e),e.source,e.id,n,o,r)))]}function hp(e,t,n,r){let{request_id:i,peer_id:s,context_id:o,delta:a}=r;try{let c=zh(t,s),l=Md(t,o),u=function(e){let t=e.version?.updates||0;return t++,{updates:t,timestamp:Date.now()}}(l);rp(l,c)||Dh(Qd(e),"Not authorized to update context");let h={...r,type:"update-context",version:u,name:l.name,delta:a};return Gh(t,(e=>up(e,l,s,a,u)),(t=>[t,[bh(e,n,i,s),yh(Zd(Nh(t.ids),s),h)]]))}catch(r){return[t,[vh(e,n,i,s,Fh(r,Yd(e)))]]}}function dp(e,t,n,r){return Ch(n)?function(e,t,n){let{request_id:r,peer_id:i,name:s,delta:o,version:a}=n;try{let e=zh(t,i),r=jd(t,s,e);return r?rp(r,e)&&np(n,r)?up(t,r,i,o,a):[t,[]]:(vp.warn(`unable to find remote context ${s}`),[t,[]])}catch{return vp.error(`error performing remote context update ${s}`),[t,[]]}}(0,t,r):hp(e,t,n,r)}function pp(e,t,n,r){let{name:i,data:s,read_permissions:o,write_permissions:a,peer_id:c}=r,l=r.lifetime??n.defaultLifetime,u=!n.isLocal||t.options?.respect_context_lifetime||"retained"!==l&&void 0!==l?l:n.defaultLifetime??"retained",[h,d]=$h(e.ids),p=yl(Ud(t,i,s,u,o,a,d,Gd()),(e=>{e.members=new Set([c]),e.local=n.isLocal,e.lifetime=u,"ownership"===u&&(e.owner=c)}));return[Rd({...e,ids:h},p),p]}function gp(e,t,n,r,i,s){return[qd(t,i,s),[Vd(e,n,r,s,i.id,i.data)]]}function fp(e,t,n,r){return Ch(n)?function(e,t,n,r){let{request_id:i,peer_id:s,name:o}=r;try{let n=zh(t,s),r=jd(t,o,n);return r?(op(e,r,n),[qd(t,r,s),[]]):(vp.warn(`unable to find remote context ${o}`),[t,[]])}catch{return[t,[]]}}(e,t,0,r):function(e,t,n,r){let{request_id:i,peer_id:s,context_id:o}=r;try{let a=zh(t,s),c=Md(t,o);op(e,c,a);let[l,u]=gp(e,t,n,i,c,s),h={...r,type:"subscribe-context",name:c.name};return[l,u.concat([yh(Zd(Nh(l.ids),s),h)])]}catch(r){return[t,[vh(e,n,i,s,Fh(r,Yd(e)))]]}}(e,t,n,r)}function mp(e,t,n){let r=t.name,i=t.id,s=n.id;return sd(e,"context-domain",n,!0).filter((e=>Xh(e))).filter((e=>sp(t,e))).map((e=>Jd(lp(e),e.source,e.id,s,i,r)))}function yp(e,t,n){let r=e.id;return t.filter((e=>Xh(e))).filter((t=>sp(e,t))).map((e=>Kd(lp(e),e.source,e.id,r,n)))}function wp(e,t){let n=void t.read_permissions,r=void t.write_permissions,i=t.lifetime;return i||Dh(function(e){return`${e}.errors.bad_lifetime`}(e),`Bad lifetime value ${i}`),{...t,read_permissions:n,write_permissions:r,lifetime:i}}var vp=hh("gateway.contexts");function bp(e,t,n,r,i){return Ch(n)?function(e,t,n){let{request_id:r,peer_id:i,name:s}=n;try{let r=zh(t,i),o=jd(t,s,r);if(o)return op(e,o,r),np(n,o)?up(t,o,i,{reset:n.data},n.version):[t,[]];{let[i,s]=pp(t,r,{isLocal:!1},wp(e,n));return[i,mp(i,s,r)]}}catch{return[t,[]]}}(e,t,r):function(e,t,n,r,i){let{request_id:s,peer_id:o,name:a}=r;try{let c=zh(t,o),l=jd(t,a,c);if(l)return op(e,l,c),gp(e,t,n,s,l,o);{let[a,l]=pp(t,c,{isLocal:!0,defaultLifetime:i},wp(e,r)),u=mp(a,l,c),h={...r,type:"create-context",version:l.version,lifetime:l.lifetime};return[a,u.concat([zd(e,n,s,o,l.id),yh(Zd(Nh(t.ids),o),h)])]}}catch(i){return vp.error(`error creating context from request ${JSON.stringify(r)}`,i),[t,[vh(e,n,s,o,Fh(i,Yd(e)))]]}}(e,t,n,r,i)}function Sp(e,t,n,r){let i=n.id,s=n.members;return[Nd(t,i),yp(n,Yh(t,Od).filter((e=>!s.has(e.id))),r).reduce(((e,t)=>e.concat(t)),Array.from(s).map((e=>Kh(t,e))).filter((e=>!!e)).filter((e=>Xh(e))).map((t=>Kd(e,t.source,t.id,i,r))))]}function Cp(e,t,n,r){return Ch(n)?function(e,t,n,r){let{peer_id:i,name:s}=r;try{let n=zh(t,i),r=jd(t,s,n);return r?(ip(e,r,n),Sp(e,t,r,Xd(e))):(vp.warn(`unable to find remote context ${s}`),[t,[]])}catch{return[t,[]]}}(e,t,0,r):function(e,t,n,r){let{request_id:i,peer_id:s,context_id:o}=r;try{let a=zh(t,s),c=Md(t,o);ip(e,c,a);let l={...r,type:"destroy-context",name:c.name};return Gh(t,(t=>Sp(e,t,c,Xd(e))),(r=>[r,[bh(e,n,i,s),yh(Zd(Nh(t.ids),s),l)]]))}catch(r){return[t,[vh(e,n,i,s,Fh(r,Yd(e)))]]}}(e,t,n,r)}function xp(e,t,n,r){if(r.members.has(n)){let[i,s]=Bd(t,r,n);return function(e){switch(e.lifetime){case"ownership":return!e.owner;case"ref-counted":return 0===e.members.size;default:return!1}}(s)?Sp(e,i,s,function(e){return Th(`${e}.peer-left`,"Context destroyed because its owner/last peer left")}(e)):[i,[]]}return[t,[]]}function Ip(e,t,n,r,i){let[s,o]=ad(e,Od,t,n,r,i),[a,c]=function(e,t,n){let r=n.id;return tp(t).reduce((([t,n],i)=>{let[s,o]=xp(e,t,r,i);return[s,n.concat(o)]}),[t,[]])}(e,s,n);return[a,c.concat(o.filter((e=>Ep(a,e))))]}function Ep(e,t){let n=Kh(e,t.body.peer_id);return!!n&&!n.options?.context_compatibility_mode}function Ap(e,t,n){let{peer_id:r,request_id:i,destination:s}=n,o=Kh(e,r);if(o?.identity){let a=Uh(e,s);if(a){let r={...n,type:"domain/join",identity:o.identity};return n.restrictions&&(r.restrictions=n.restrictions),a.handleMessage(e,{origin:"local",source:t,body:r})}return[e,[vh(wd,t,i,r,Th(Cd,`Unable to join missing domain ${s}`))]]}return[e,[vh(wd,t,i,r,Th(Id,`Unable to find peer with id ${r}`))]]}function kp(e,t,n){return Ch(t)?function(e,t,n){let{peer_id:r,identity:i,options:s}=n,o=Uh(e,n.destination);return o?([e]=Zh(e,t,r,i,null,s),o.handleMessage(e,{origin:"cluster",source:t,body:{...n,type:"domain/join"}})):[e,[]]}(e,t,n):Ap(e,t,n)}function _p(e,t,n){return Ch(t)?function(e,t,n){let{peer_id:r,destination:i}=n;if(Kh(e,r)){let r=Uh(e,i);if(r)return r.handleMessage(e,{origin:"local",source:t,body:{...n,type:"domain/leave"}})}return[e,[]]}(e,t,n):function(e,t,n){let{peer_id:r,request_id:i,destination:s}=n;if(Kh(e,r)){let o=Uh(e,s);return o?o.handleMessage(e,{origin:"local",source:t,body:{...n,type:"domain/leave"}}):[e,[vh(wd,t,i,r,Th(Cd,`Unable to join missing domain ${s}`))]]}return[e,[vh(wd,t,i,r,Th(Id,`Unable to find peer with id ${r}`))]]}(e,t,n)}var Pp=hh("gateway.domains.global");function Tp(e,t,n){Pp.debug("removing source from global domain");let r=e.ids.nodeId,[i,s]=Vh(e,t).reduce((([e,i],s)=>(e=function(e,t){let n=t.identity,r=t.id,i=n.user;return yl(e,(e=>{e.identities&&e.identities.delete(JSON.stringify(n,Object.keys(n).sort())),e.users&&(i?(e.users.byName[i]&&(e.users.byName[i].delete(r),0==e.users.byName[i].size&&delete e.users.byName[i]),e.users.byName&&0===Object.keys(e.users.byName).length&&delete e.users.byName):(e.users.noUser.delete(r),0===e.users.noUser?.size&&delete e.users.noUser)),e.peers&&delete e.peers[r],e.services=e.services||new Set,e.services&&e.services.delete(r)}))}(e,s),Sh(t)&&(Pp.info(`removed peer ${s.id} was on endpoint ${t.endpoint}`),i=i.concat(yh({type:"peer",peerId:s.id,node:r},n))),[e,i])),[e,[]]);return Pp.debug("removed source from global domain"),[i,s]}function Fp(e,t,n,r=!0){let{request_id:i,identity:s,user:o,login:a,impersonatePeer:c,gwRequest:l,accessToken:u}=n;l?.id&&(e=Hh(e,l.id).state);let h={machine:_d(t.host,"127.0.0.1"),...s};if(o&&(h={...h,user:o}),a&&(h={...h,login:a}),c&&(h=function(e,t){let n=t.user;return n?{...e,user:n}:e}(h,c)),!h.instance){let[t,n]=function(e){let t=e.currentId??1,n=`i-${e.nodeId}-${t}`;return[{...e,currentId:t+1},n]}(e.ids);h={...h,instance:n},e={...e,ids:t}}let d={...n.options};"context_compatibility_mode"in d||(d.context_compatibility_mode=r);try{let n=function(e,t){let n=JSON.stringify(t,Object.keys(t).sort());return e.identities?.get(n)}(e,h);n&&(Pp.warn(`peer ${n} already accepted on source ${JSON.stringify(Kh(e,n)?.source)}`),Dh(Sd,"Hello already received once")),kd(h);let r,[s,o]=function(e){let t=e.currentId??1,n=`p-${e.nodeId}-${t}`;return[{...e,currentId:t+1},n]}(e.ids);h=function(e,t){return Object.keys(e).filter((t=>"?"===e[t])).reduce(((e,n)=>{let r={};return r[n]=t,Object.assign(e,r)}),e)}(h,o),[e,r]=Zh({...e,ids:s},t,o,h,l,d),Pp.info(`added peer ${r.id} on endpoint ${t.endpoint} with ${JSON.stringify(h)}`);let a={};u&&(a.access_token=u);let c=Object.values(e.registeredDomains??{}).map((e=>e.info)),p=function(e,t,n,r,i,s){let o={domain:wd,type:"welcome",request_id:t,peer_id:n,available_domains:r,resolved_identity:i};return s&&(o.options=s),mh(e,o)}(t,i,r.id,c,h,0===Object.keys(a).length?void 0:a);return Gh(e,(e=>[e,[p]]),(e=>d.context_compatibility_mode?function(e,t,n){return Ap(e,t,n)}(e,t,{request_id:i,peer_id:r.id,identity:h,options:d,destination:gh,domain:wd}):[e,[]]))}catch(n){return Sh(t)?[e,[vh(wd,t,i,void 0,Fh(n,vd))]]:[e,[]]}}function Dp(e,t,n,r,i=!0,s){switch(n.type){case"hello":return function(e,t,n,r,i){let{request_id:s,identity:o,authentication:a,options:c}=n,l=a?.provider??r.default,u=r.available[l];if(u){let n={requestId:s,remoteIdentity:o,authentication:a,signatureKey:e.signatureKey};return u.authenticate(n).then((e=>({...e,type:"success"===e.type?"internal/authenticated":"continue"===e.type?"internal/authentication-request":e.type}))).catch((e=>(Pp.debug("authentication request rejected",e),{..._h(e),type:"internal/authentication-failed"}))).then((e=>{let n={...e,request_id:s,identity:o};"internal/authenticated"===n.type&&(n.options=c),i({origin:"local",source:t,body:n})})),[e,[]]}return[e,[vh(wd,t,s,void 0,Th(xd,`Requested authentication provider ${l} is not available`))]]}(e,t,n,r,e.handler);case"join":return kp(e,t,n);case"leave":return _p(e,t,n);case"internal/authenticated":return Fp(e,t,n,i);case"internal/authentication-failed":return function(e,t,n){let{request_id:r,message:i}=n;return[e,[vh(wd,t,r,void 0,Th(xd,i))]]}(e,t,n);case"internal/authentication-request":return function(e,t,n){let{requestId:r,authentication:i}=n;return[e,[Ed(wd,t,r,void 0,i)]]}(e,t,n);case"create-context":return function(e,t,n,r){return bp(wd,e,t,n,r)}(e,t,n,s);case"update-context":return function(e,t,n){return dp(wd,e,t,n)}(e,t,n);case"subscribe-context":return function(e,t,n){return fp(wd,e,t,n)}(e,t,n);case"unsubscribe-context":return function(e,t,n){return ap(wd,e,t,n)}(e,t,n);case"destroy-context":return function(e,t,n){return Cp(wd,e,t,n)}(e,t,n);case"ping":return[e,[]];case"commands/source-removed":return Tp(e,t,n);case"create-token":{let{request_id:r,peer_id:i}=n,s=zh(e,i);if(s.identity.user)return[e,[xh(wd,t,r,i,Dd(e,{user:s.identity.user}))]];throw kh("Cannot create token for peer without user",{})}default:{let r=`Unhandled message ${JSON.stringify(n)}`;return Pp.error(r),[e,[vh(wd,t,n.request_id??-1,n.peer_id,Th(bd,r))]]}}}function Op(e,t){return new class{constructor(e,t,n){this.authenticators=e,this.contextCompatibility=t,this.retainedOverride=n}info(){return{uri:wd,description:"",version:2}}init(e){return e}destroy(e){return e}handleMessage(e,t){return function(e,t,n,r,i){let{source:s,body:o}=t;try{return Dp(e,s,o,n,r,i)}catch(t){return[e,[vh(wd,s,o.request_id??-1,o.peer_id,Fh(t,vd))]]}}(e,t,this.authenticators,this.contextCompatibility,this.retainedOverride)}}(e,t?.contextCompatibility??!0,t?.retainedOverride)}async function Rp(e,t){let n=function(e,t,n){void 0===n&&(n=n??Date.now());let r={};return n&&(r.now=Math.floor(n/1e3)),Td(t,e,r)}(e,t);switch(n.type){case"gw-request":{let e=n["gw-request"];if(e){return{type:"success",gwRequest:e,impersonatePeer:n["impersonate-peer"]}}throw new Error("Token is missing the gateway request information")}case"authentication":{let e=n.user;if(e)return{type:"success",user:e};throw new Error("Token is missing the impersonation information")}default:throw new Error(`Invalid gateway token type: ${n.type}`)}}var Np=hh("gateway.auth.impl"),jp=class{constructor(e,t,n){this.timeout=e,this.processor=n,this.ch=new hd(t)}stop(){this.ch.close()}async authenticate(e){let t=function(e){if("gateway-token"===e?.method)return e.token}(e.authentication);if(t)return await Rp(e.signatureKey,t);{let t;return await Promise.race([this.ch.put((()=>new Promise(((t,n)=>{let r=e.authentication;Np.debug(`processing authentication ${JSON.stringify(r,pd("secret","token"))}`),this.processor(t,n,r)})))),new Promise(((e,n)=>{t=setTimeout((()=>{n("timeout")}),this.timeout)}))]).finally((()=>clearTimeout(t)))}}},$p={timeout:5e3,max_pending_requests:2e4};var Mp=hh("gateway.auth.basic");async function qp(e,t,n,r){switch(e?.method){case"secret":{if(r&&!await r(e.login,e.secret))throw kh("Invalid login/secret",{type:"failure",message:"Invalid login/secret"});let i=await function(e){let{login:t,secret:n}=e;return t&&(n||""===n)?Promise.resolve({type:"success",user:t,login:t}):Promise.reject(kh("Missing login/secret",{type:"failure",message:"Missing login/secret"}))}(e),s=Pd({user:i.user,exp:Math.floor((Date.now()+n)/1e3)},t);return{...i,accessToken:s}}case"access-token":try{let n=e.token,r=Td(n,t).user;return{type:"success",login:r,user:r,accessToken:n}}catch(e){throw kh(`Invalid or expired token:${Ph(e)}`,{type:"failure",message:"Invalid or expired token: "+Ph(e)},e)}default:{let t=`Unknown authentication method '${e?.method}'`;throw Mp.debug(t),kh(t,{type:"failure",message:t})}}}var Bp=class{constructor(e,t,n){this.secret=e,this.ttl=t,this.secretVerifier=n}auth(e){return qp(e,this.secret,this.ttl,this.secretVerifier)}};function Lp(e){let t=1e3*(e.ttl??6e4),n=e.secretVerifier;return n&&Mp.debug("will use secret verifier"),function(e,t){return new jp(e.timeout??$p.timeout,e.max_pending_requests??$p.max_pending_requests,((e,n,r)=>{t.auth(r).then((t=>e(t))).catch((e=>n(e)))}))}(e,new Bp(Rh(),t,n))}var Wp="agm",Hp=`${Wp}.errors.failure`,Up=`${Wp}.errors.unhandled_message`,Gp=`${Wp}.errors.unregistration.failure`,Vp=`${Wp}.errors.invocation.failure`,Jp=`${Wp}.errors.subscription.failure`,Kp=`${Wp}.errors.subscription.invalid_subscription`,zp=Th(`${Wp}.peer-removed`,"Peer has been removed"),Qp=Th(`${Wp}.method-removed`,"Method has been removed"),Xp=Th(Kp,"Trying to drop a subscription that wasnt established. Did you mean to return an error instead?"),Yp="agm-domain";function Zp(e,t,n,r,i){return mh(e,function(e,t,n,r){return{domain:Wp,type:"methods-added",peer_id:e,source_type:r,server_id:t,methods:n}}(t,n,r,i))}function eg(e,t,n,r){return mh(e,function(e,t,n){return{domain:Wp,type:"methods-removed",peer_id:e,server_id:t,methods:n}}(t,n,r))}function tg(e,t,n,r,i,s,o,a){return mh(e,function(e,t,n,r,i,s,o){return{domain:Wp,type:"invoke",invocation_id:e,peer_id:t,method_id:n,caller_id:r,arguments:i,arguments_kv:s,context:o}}(t,n,r,i,s,o,a))}function ng(e,t,n,r){return mh(e,function(e,t,n){return{domain:Wp,type:"result",request_id:e,peer_id:t,result:n}}(t,n,r))}function rg(e,t,n,r,i,s,o,a,c){return mh(e,function(e,t,n,r,i,s,o,a){return{domain:Wp,type:"add-interest",subscription_id:e,peer_id:t,method_id:n,caller_id:r,arguments:i,arguments_kv:s,flags:o,context:a}}(t,n,r,i,s,o,a,c))}function ig(e,t,n,r,i,s){return mh(e,function(e,t,n,r,i){return{domain:Wp,type:"remove-interest",subscription_id:e,peer_id:t,method_id:n,caller_id:r,reason_uri:i.uri,reason:i.message}}(t,n,r,i,s))}function sg(e,t,n,r){return mh(e,function(e,t,n){return{domain:Wp,type:"subscribed",request_id:e,peer_id:t,subscription_id:n}}(t,n,r))}function og(e,t,n,r,i,s,o){return mh(e,function(e,t,n,r,i,s){return{domain:Wp,type:"event",peer_id:e,subscription_id:t,oob:n,sequence:r,snapshot:i,data:s}}(t,n,r,i,s,o))}function ag(e,t,n,r){return mh(e,function(e,t,n){return{domain:Wp,type:"subscription-cancelled",subscription_id:e,peer_id:t,reason_uri:n.uri,reason:n.message}}(t,n,r))}function cg(e,t,n){let{server_id:r,method_id:i,arguments:s,arguments_kv:o}=n;e.id!==t.id&&!rd(Yp,e,t)&&Dh(Vp,"Unable to invoke methods across different users"),e[Yp]?.methods?.[r]?.[i]||Dh(Vp,`Unable to find method with id ${i} on server id ${r} registered with this peer`),s&&o&&Dh(Vp,"Cant use positional and by-name arguments at the same time")}function lg(e,t,n,r,i){let{server:s,stream:o,method_id:a}=n,c=yl(zh(e,s),yg(t,r,o));return e=ed(e,s,c),Xh(c)?[e,[ig(c.source,t,s,a,r,i)]]:[e,[]]}function ug(e,t,n,r,i){let s=n.id,{removed:o,remaining:a}=function(e,t,n){return Object.entries(e).reduce(((e,[r,i])=>(t!==i.server||n&&0!==n.size&&!n.has(i.method_id)?e.remaining[r]=i:e.removed[r]=i,e)),{removed:{},remaining:{}})}(t["agm-domain"]?.subscriptions||{},s,r),c=Object.entries(o).reduce(((n,[r,s])=>{let o;return[e,o]=lg(e,r,s,t.id,i),e}),e);return Object.keys(o).length>0?[td(c,t.id,(e=>{Object.keys(a).length>0?e[Yp].subscriptions=a:e["agm-domain"]&&delete e["agm-domain"].subscriptions})),Sh(t.source)?Object.keys(o).map((e=>ag(t.source,e,t.id,i))):[]]:[e,[]]}function hg(e,t,n){let{request_id:r,peer_id:i,server_id:s,method_id:o}=t,a=yl(Qh(e,i,"agm-domain"),(e=>{e["agm-domain"].subscriptions=e["agm-domain"].subscriptions||{},e["agm-domain"].subscriptions[n]={server:s,method_id:o,request_id:r}}));cg(a,Qh(e,s,"agm-domain"),t);let c={...t,subscriptionId:n};return function(e,t,n){let{peer_id:r,server_id:i,subscriptionId:s,method_id:o,arguments:a,arguments_kv:c,context:l,flags:u}=n,h=Kh(t,i);if(h){h=yl(h,(e=>{e[Yp].interests=e[Yp].interests||{},e[Yp].interests[s]={subscriber:r,method_id:o}}));let e=h.source;return h[Yp].methods[i][o],[ed(t,i,h),Sh(e)?[rg(e,s,i,o,r,a,c,u,l)]:[wh(Zd(Nh(t.ids),r),ep(e.node),n)]]}throw kh(`unable to find server with id ${i}`,{})}(0,ed(e,i,a),c)}function dg(e,t,n){return Sh(t)?function(e,t,n){let[r,i]=jh(e.ids);return hg({...e,ids:r},n,i)}(e,0,n):function(e,t){let{subscriptionId:n,server_id:r}=t;return Kh(e,r)?hg(e,t,n):[e,[]]}(e,n)}function pg(e,t,n,r,i,s,o){if(t){let a=t[Yp]?.subscriptions?.[r]?.request_id,c=t.source;return[ed(e,n,yl(t,(e=>{let t=e[Yp];t.subscriptions&&(delete t.subscriptions[r],0===Object.keys(t.subscriptions).length&&delete t.subscriptions)}))),Sh(c)?o?[vh(Wp,c,a,n,i,s)]:[ag(c,r,n,i)]:[]]}return[e,[]]}var gg=hh("gateway.domains.agm.subscriptions");function fg(e,t,n){let{subscription_id:r,peer_id:i,stream_id:s}=n;s||Dh(Kp,"Invalid or missing stream id");let o=t["agm-domain"].interests?.[r];if(o){let a=o.subscriber;return function(e,t,n,r,i){let s=Kh(e,t);if(s){let o=s[Yp]?.subscriptions?.[n]?.request_id;e=ed(e,t,yl(s,(e=>{e[Yp].subscriptions[n].stream=r})));let a=s.source;return Xh(s)?[e,[sg(a,o,t,n)]]:[e,[wh(Zd(Nh(e.ids),i.peer_id),ep(a.node),i)]]}return[e,[]]}(e=ed(e,i,yl(t,(e=>{let t=e[Yp];t.interests=t.interests||{},t.interests[r]=t.interests[r]||{},t.interests[r].stream=s,t.streams=t.streams||{},t.streams[s]=t.streams[s]||{},t.streams[s][a]=t.streams[s][a]||new Set,t.streams[s][a].add(r)}))),a,r,s,n)}return gg.debug(`Subscription accept response ${JSON.stringify(n)} for missing interest`),[e,[]]}function mg(e,t,n){return Sh(t)?function(e,t,n){let{subscription_id:r,peer_id:i}=n;return fg(e,Qh(e,i,"agm-domain"),n)}(e,0,n):function(e,t){let{subscription_id:n,peer_id:r,subscriber_id:i}=t,s=Jh(e,r,"agm-domain");return s?fg(e,s,t):(gg.warn(`Subscription accept response ${JSON.stringify(t)} from missing peer`),pg(e,Kh(e,i),i,n,Th(Jp,"Received a response from a missing server"),null,!0))}(e,n)}function yg(e,t,n){return r=>{let i=r["agm-domain"];i&&(i.interests&&(delete i.interests[e],0===Object.keys(i.interests).length&&delete i.interests),n&&i.streams&&(i.streams[n][t].delete(e),0===i.streams[n][t].size&&(delete i.streams[n][t],0===Object.keys(i.streams[n]).length&&(delete i.streams[n],0===Object.keys(i.streams).length&&delete i.streams))))}}function wg(e,t,n,r){let i=n.peer_id,s=r?n.request_id:n.subscription_id,o=Qh(e,i,"agm-domain"),a=o["agm-domain"].interests?.[s];if(a){let c=a.subscriber,l=a.stream,u=Kh(e,c),h=u.source;if(l||r){let t;return e=ed(e,i,yl(o,yg(s,c,l))),[e,t]=pg(e,u,c,s,Oh(n),n.context,r),u&&!Sh(h)&&(t=t.concat(wh(Zd(Nh(e.ids),i),ep(h.node),n))),[e,t]}return[e,[vh(Wp,t,s,i,Xp)]]}return[e,[vh(Wp,t,s,i,Th(Kp,"Trying to drop a non-existing subscription"))]]}function vg(e,t,n,r,i){let s=Qh(e,n,"agm-domain"),o=s["agm-domain"].subscriptions?.[r]?.server;return o||Dh(Kp,`Unable to find subscription with id ${r} on subscriber id ${n}`),function(e,t,n,r,i){let s=Kh(e,n);if(s){let o=s[Yp]?.interests?.[r];if(o){let a=t.id,c=s.source;return[e=ed(e,n,yl(s,yg(r,a,o.stream))),[Sh(c)?ig(c,r,n,o.method_id,a,Oh(i)):wh(Zd(Nh(e.ids),a),ep(c.node),i)]]}}}(e=ed(e,n,yl(s,(e=>{let t=e["agm-domain"];t.subscriptions&&(delete t.subscriptions[r],0===Object.keys(t.subscriptions).length&&delete t.subscriptions)}))),s,o,r,t)||[e,[]]}function bg(e,t,n){return Sh(t)?function(e,t,n){let r,{request_id:i,peer_id:s,subscription_id:o}=n;return[e,r]=vg(e,n,s,o),[e,r.concat(bh(Wp,t,i,s))]}(e,t,n):function(e,t){let{request_id:n,peer_id:r,subscription_id:i}=t;return vg(e,t,r,i)}(e,n)}function Sg(e){let t={...e};return delete t.parsedRestrictions,t}function Cg(e,t,n,r){let{id:i,identity:s}=t,{id:o,identity:a}=r,c=r[Yp]?.methods?.[i]||{},[l,u]=n.filter((e=>function(e,t,n){return e.parsedRestrictions,!0}(e))).reduce((([e,t],n)=>[e=yl(e,(e=>{e[n.id]=n})),t.concat(Sg(n))]),[c,new Array]);return u.length>0?[ed(e,o,r=yl(r,(e=>{e[Yp].methods=e[Yp].methods||{},e[Yp].methods[i]=l}))),Xh(r)?Zp(r.source,o,i,u,t.source.type):[]]:[e,[]]}function xg(e,t){let{peer_id:n,methods:r}=t,i=r.map((e=>function(e){let t=void e.restrictions;return t?{...e,parsedRestrictions:t}:e}(e))),s=i.reduce(((e,t)=>yl(e,(e=>{e[Yp].methods=e[Yp].methods||{},e[Yp].methods[n]=e[Yp].methods[n]||{},e[Yp].methods[n][t.id]=t}))),zh(e,n)),o=ed(e,n,s);return sd(e,Yp,s).reduce((([e,t],n)=>{let[r,o]=Cg(e,s,i,n);return[r,t.concat(o)]}),[o,[]])}function Ig(e,t,n){return Ch(t)?function(e,t,n){return xg(e,n)}(e,0,n):function(e,t,n){let{request_id:r,peer_id:i,methods:s}=n,[o,a]=xg(e,n);return[o,a.concat(Zp(t,i,i,s,"local"),bh(Wp,t,r,i),yh(Zd(Nh(e.ids),i),n))]}(e,t,n)}function Eg(e,t,n,r){if(!r&&(!(r=Object.keys(n[Yp]?.methods?.[t]??{}))||0==r.length))return[td(e,n.id,(e=>{let n=e[Yp];n.methods&&delete n.methods[t]})),[]];let i;if([n,i]=r.reduce((([e,n],r)=>(e["agm-domain"]?.methods?.[t]?.[r]&&(e=yl(e,(e=>{let n=e["agm-domain"]?.methods;n?.[t]?.[r]&&(delete n[t][r],0===Object.keys(n[t]).length&&delete n[t],0===Object.keys(n).length&&delete e["agm-domain"]?.methods)})),n.add(r)),[e,n])),[n,new Set]),0==i.size)return[e,[]];{let r,s=zh(e,t);return[e,r]=ug(e,n,s,i,Qp),Xh(n)&&(r=r.concat(eg(n.source,n.id,t,Array.from(i)))),[e,r]}}function Ag(e,t){let{peer_id:n,methods:r}=t,i=function(e,t){return e[t]?e:yl(e,(e=>{e[t]={}}))}(r.reduce(((e,t)=>(e[Yp]?.methods?.[n][t]?e=yl(e,(e=>{delete e[Yp].methods?.[n][t]})):Dh(Gp,`Unable to unregister missing method ${t}`),e)),zh(e,n)),Yp),[s,o]=[ed(e,n,i),new Array];return[s,o]=sd(e,Yp,i).filter((e=>e.id!==n)).reduce((([,t],i)=>{let[s,o]=Eg(e,n,i,r);return[s,t.concat(o)]}),[s,new Array]),[s,o]}function kg(e,t,n){return Ch(t)?function(e,t){return Ag(e,t)}(e,n):function(e,t,n){let{request_id:r,peer_id:i,methods:s}=n,[o,a]=Ag(e,n);return[o,a.concat(eg(t,i,i,s),bh(Wp,t,r,i),yh(Zd(Nh(e.ids),i),n))]}(e,t,n)}function _g(e,t,n,r,i){let{request_id:s,peer_id:o,server_id:a,method_id:c}=t;return function(e,t,n){let{request_id:r,peer_id:i,server_id:s,invocationId:o,method_id:a,arguments:c,arguments_kv:l,context:u}=t,h=!Xh(n=yl(n,(e=>{let t=e[Yp];t.invocations=t.invocations||{},t.invocations[o]={caller:i,method_id:a,request_id:r}})));return[ed(e,s,n),h?[wh(Zd(Nh(e.ids),i),ep(n.source.node),t)]:[tg(n.source,o,s,a,i,c,l,u)]]}(ed(e,o,i=yl(i,(e=>{let t=e[Yp];t.calls=t.calls||{},t.calls[s]={callee:a,method_id:c,invocation_id:n}}))),{...t,invocationId:n},o===a?i:r)}function Pg(e,t,n){return Ch(t)?function(e,t,n){let{request_id:r,peer_id:i,server_id:s,invocationId:o}=n,a=Jh(e,s,"agm-domain");return Xh(a)?_g(e,n,o,a,Qh(e,i,"agm-domain")):[e,[]]}(e,0,n):function(e,t,n){let{peer_id:r,server_id:i}=n,s=Qh(e,i,"agm-domain"),o=Qh(e,r,"agm-domain"),[a,c]=jh(e.ids);return cg(o,s,n),_g({...e,ids:a},n,c,s,o)}(e,0,n)}function Tg(e,t,n,r,i){let s=Kh(e,n),o=s?.[Yp]?.invocations?.[t];if(o)return function(e,t,n,r,i){let{request_id:s,caller:o,method_id:a}=n,c=Kh(e,o);if(c&&(c=yl(c,(e=>{e[Yp]&&e[Yp].calls&&(delete e[Yp].calls[s],0===Object.keys(e[Yp].calls).length&&delete e[Yp].calls)}))),c){e=ed(e,o,c),Kh(e,t)?.[Yp]?.methods?.[t][a];let n=i.success,l=i.failure;return Xh(c)?n?[e,[ng(c.source,s,o,n.result)]]:[e,[vh(Wp,c.source,s,o,Oh(l),l.context)]]:[e,[wh(Zd(Nh(e.ids),t),ep(c.source.node),r)]]}return[e,[]]}(e=ed(e,n,yl(s,(e=>{e[Yp]?.invocations&&(delete e[Yp].invocations[t],0===Object.keys(e[Yp].invocations).length&&delete e[Yp].invocations)}))),n,o,r,i)}function Fg(e,t,n){let{invocation_id:r,peer_id:i}=n;return Qh(e,i,"agm-domain"),Tg(e,r,i,n,{success:n})??[e,[]]}function Dg(e,t,n){return Sh(t),function(e,t,n){return Fg(e,0,n)}(e,0,n)}var Og=hh("gateway.domains.agm");function Rg(e,t,n){return sd(e,"agm-domain",Qh(e,n,"agm-domain")).reduce((([e,r],i)=>{let[s,o]=function(e,t,n,r){let i,{identity:s,id:o}=r,a=Object.values(r[Yp]?.methods?.[o]||{}),c=n.id,l=Xh(n),u=Xh(r),h=new Array;return l&&h.push(Ih(Wp,t,c,o,s,{local:u})),u&&h.push(Ih(Wp,r.source,o,c,n.identity,{local:l})),[e,i]=Cg(e,r,a,n),[e,h.concat(i)]}(e,t,Kh(e,n),i);return[s,r.concat(o)]}),[e,[]])}function Ng(e,t,n,r,i){let s;return Rg(e=qh(e,n,Yp,s),t,n)}function jg(e,t,n){return Ch(t)?function(e,t,n){let{peer_id:r,identity:i,restrictions:s}=n;return Lh(e,r,Yp)?[e,[]]:Ng(e,t,r)}(e,t,n):function(e,t,n){let{peer_id:r,request_id:i,identity:s,restrictions:o}=n;if(Lh(e,r,Yp))return[e,[bh(Wp,t,i,r)]];{let s;[e,s]=Ng(e,t,r);let o=Kh(e,r),a={...n,type:"join"};return o?.options&&(a.options=o.options),[e,s.concat(bh(Wp,t,i,r),yh(Zd(Nh(e.ids),r),a))]}}(e,t,n)}function $g(e,t,n,r){let i,s=zh(e,n),o=s.source;return[e,i]=Gh(e,(e=>function(e,t,n,r){let i=r.id,[s,o]=Object.entries(n[Yp]?.calls??{}).reduce((([e,t],[n,r])=>((r.callee===i?e:t).push([n,r]),[e,t])),[new Array,new Array]);return s.length>0?[td(e,n.id,(e=>{let t=e[Yp];o.length>0?t.calls=o.reduce(((e,[t,n])=>yl(e,(e=>{e[t]=n}))),{}):delete t.calls})),Xh(n)?s.map((function([e]){return vh(Wp,t,e,n.id,Th(Vp,"Peer has left while waiting for result"))})):[]]:[e,[]]}(e,o,s,t)),(e=>ug(e,s,t,void 0,zp)),(e=>Eg(e,t.id,zh(e,s.id)))),[e,Sh(o)?i.concat(Eh(Wp,o,n,t.id,r)):i]}function Mg(e,t,n){let r=t.id,[i,s]=sd(e,Yp,t).map((e=>e.id)).reduce((([e,r],i)=>{let[s,o]=$g(e,t,i,n);return[s,r.concat(o)]}),function(e,t,n){let r=t[Yp]?.subscriptions,i=t.id,[s,o]=Object.entries(r||{}).reduce((([e,t],[r,s])=>{let[o,a]=lg(e,r,s,i,n);return[o,t.concat(a)]}),[e,[]]);return[s,o]}(e,t,n));return[Bh(i,r,Yp),s]}function qg(e,t,n){return Ch(t)?function(e,t,n){let{peer_id:r}=n,i=Kh(e,r);return i?Mg(e,i,Oh(n)):[e,[]]}(e,0,n):function(e,t,n){let{request_id:r,peer_id:i}=n,[s,o]=Mg(e,zh(e,i),Oh(n));return[s,o.concat(bh(Wp,t,r,i),yh(Zd(Nh(e.ids),i),{...n,type:"leave"}))]}(e,t,n)}function Bg(e,t,n){switch(n.type){case"domain/join":return jg(e,t,n);case"domain/leave":return qg(e,t,n);case"register":return Ig(e,t,n);case"unregister":return kg(e,t,n);case"call":return Pg(e,t,n);case"yield":return Dg(e,t,n);case"subscribe":return dg(e,t,n);case"unsubscribe":return bg(e,t,n);case"drop-subscription":return wg(e,t,n,!1);case"accepted":return mg(e,t,n);case"publish":return function(e,t,n){let{peer_id:r,stream_id:i,sequence:s,snapshot:o,data:a}=n,c=Jh(e,r,"agm-domain")?.["agm-domain"].streams?.[i]||{},l=new Set;return[e,Object.entries(c).flatMap((([t,i])=>{let c=Kh(e,t).source,u=[];if(Sh(c))u=Array.from(i,(e=>og(c,t,e,!1,s,o,a)));else{let t=c.node;l.has(t)||(l.add(t),u=[wh(Zd(Nh(e.ids),r),ep(t),n)])}return u}))]}(e,0,n);case"post":return function(e,t,n){let{peer_id:r,subscription_id:i,sequence:s,snapshot:o,data:a}=n,c=Jh(e,r,"agm-domain")?.["agm-domain"].interests?.[i].subscriber,l=Jh(e,c,"agm-domain"),u=l?.source;if(u){let t;if(Xh(l))t=[og(u,c,i,!0,s,o,a)];else{let i={type:"node",node:u.node};t=[wh(Zd(Nh(e.ids),r),i,n)]}return[e,t]}return[e,[]]}(e,0,n);case"error":return function(e,t,n){let{request_id:r,peer_id:i}=n;return zh(e,i),Tg(e,r,i,n,{failure:n})||wg(e,t,n,!0)}(e,t,n);case"commands/source-removed":return function(e,t,n){Og.debug("removing source from agm domain");let r=Vh(e,t,Yp),i=r.map((e=>e.id)).reduce(((e,t)=>Bh(e,t,Yp)),e),s=r.reduce((([e,t],n)=>{let[r,i]=Mg(e,n,zp);return[r,t.concat(i)]}),[i,[]]);return Og.debug("removed source from agm domain"),s}(e,t);default:return Og.error(`Unhandled message ${JSON.stringify(n)}`),[e,[vh(Wp,t,n.request_id??-1,n.peer_id,Th(Up,`Unhandled message ${JSON.stringify(n)}`))]]}}function Lg(){return new class{info(){return{uri:Wp,description:"",version:1}}init(e){return e}destroy(e){return e}handleMessage(e,t){let{source:n,body:r}=t;try{return Bg(e,n,r)}catch(t){return Sh(n)?[e,[vh(Wp,n,r.request_id,r.peer_id,Fh(t,Hp))]]:[e,[]]}}}}var Wg="activity",Hg=`${Wg}.errors.failure`,Ug=`${Wg}.errors.registration.failure`,Gg=`${Wg}.errors.missing_factory`,Vg=`${Wg}.errors.factory_already_registered`,Jg=`${Wg}.errors.owner_creation`,Kg=`${Wg}.errors.missing_type`,zg=`${Wg}.errors.invalid_activity`,Qg=`${Wg}.errors.activity_is_child`,Xg=`${Wg}.errors.invalid_peer`,Yg=`${Wg}.errors.not_authorized`,Zg=`${Wg}.errors.unhandled_message`,ef=Th(`${Wg}.peer-removed`,"Peer has been removed"),tf=Th(`${Wg}.destroyed`,"Activity destroyed"),nf="activity-domain";function rf(e,t,n){return t.length>0&&n?t.reduce(((e,t)=>yl(e,(e=>{e.factories&&(e.factories[t]=function(e,t){return t.reduce(((t,n)=>n===e?t:t.concat(n)),[])}(n,e.factories[t]),0==e.factories[t].length&&delete e.factories[t],0===Object.keys(e.factories).length&&delete e.factories)}))),e):e}function sf(e,t){if(t)return e.activities?.[t]}function of(e,t,n){return t?yl(e,(e=>{e.activities=e.activities||{},e.activities[t]=n})):e}function af(e,t){if(t)return e.activityTypes?.[t]}function cf(e,t,n){return n.reduce(((e,n)=>yl(e,(e=>{e.activityTypes=e.activityTypes||{},e.activityTypes[t]=e.activityTypes[t]||{},e.activityTypes[t][n.name]=n}))),e)}function lf(e,t,n){return Array.from(n).reduce(((e,n)=>yl(e,(e=>{e.activityTypes&&(e.activityTypes[t]&&(delete e.activityTypes[t][n],0===Object.keys(e.activityTypes[t]).length&&delete e.activityTypes[t]),0===Object.keys(e.activityTypes).length&&delete e.activityTypes)}))),e)}function uf(e,t){let n=new Set;return e.activitySubscribers?.byType?.[t].forEach(n.add),e.activitySubscribers?.all?.forEach(n.add),n}function hf(e,t,n){return yl(e,(e=>{e.activitySubscribers=e.activitySubscribers||{},!0===n?(e.activitySubscribers.all=e.activitySubscribers.all||new Set,e.activitySubscribers.all.add(t)):(e.activitySubscribers.byType=e.activitySubscribers.byType||{},e.activitySubscribers.byType[n]=e.activitySubscribers.byType[n]||new Set,e.activitySubscribers.byType[n].add(t))}))}function df(e,t,n){return yl(e,(e=>{e.activitySubscribers&&(!0===n?e.activitySubscribers.all&&(e.activitySubscribers.all.delete(t),0===e.activitySubscribers.all.size&&delete e.activitySubscribers.all):e.activitySubscribers.byType&&(e.activitySubscribers.byType[n]&&(e.activitySubscribers.byType[n].delete(t),0===e.activitySubscribers.byType[n].size&&delete e.activitySubscribers.byType[n]),0===Object.keys(e.activitySubscribers.byType).length&&delete e.activitySubscribers.byType),0===Object.keys(e.activitySubscribers).length&&delete e.activitySubscribers)}))}function pf(e,t){let n=sf(e,t);if(n)return n;Dh(zg,`Unable to find activity with id ${t}`)}function gf(e,t,n,r){return mh(e,function(e,t,n){return{domain:Wg,type:"peer-factories-added",peer_id:e,owner_id:t,factories:n}}(t,n,r))}function ff(e,t,n,r){return mh(e,function(e,t,n){return{domain:Wg,type:"peer-factories-removed",peer_id:e,owner_id:t,factory_ids:n}}(t,n,r))}function mf(e,t,n,r,i,s,o){return mh(e,function(e,t,n,r,i,s){return{domain:Wg,type:"peer-requested",request_id:e,peer_id:t,peer_factory:n,gateway_token:r,configuration:i,...s}}(t,n,r,i,s,o))}function yf(e,t,n,r){return mh(e,{domain:Wg,type:"dispose-peer",peer_id:t,requestor_id:n,reason_uri:r.uri,reason:r.message})}function wf(e,t,n,r){return mh(e,function(e,t,n){return{domain:Wg,type:"peer-created",request_id:e,peer_id:t,created_id:n}}(t,n,r))}function vf(e,t,n){return mh(e,{domain:Wg,type:"types-added",peer_id:t,types:n})}function bf(e,t,n,r){return mh(e,{domain:Wg,type:"initiated",request_id:t,peer_id:n,activity_id:r})}function Sf(e){return Object.entries(e).reduce(((e,[t,n])=>(e[t]=yl(n,(e=>{e.context=e.context.data,e.children&&(e.children=Sf(e.children))})),e)),{})}function Cf(e,t){let n=Kh(e,t);return{peer_id:t,name:n?.peerName,type:n?.peerType}}function xf(e,t,n,r,i){return mh(t,function(e,t,n,r){let i=n.children,s=t.peerName,o=t.peerType,a={domain:Wg,type:"joined",peer_id:t.id,activity_id:n.id,activity_type:n.type,initiator:n.initiator,context_id:n.contextId,owner:Cf(e,n.owner),participants:Array.from(n.readyMembers||[]).map((t=>Cf(e,t))),context_snapshot:r};return s&&(a.peer_name=s),o&&(a.peer_type=o),i&&(a.children=Sf(i)),a}(e,n,r,i))}function If(e,t,n,r){return mh(e,function(e,t,n){let r=t.peerName,i={domain:Wg,type:"activity-joined",peer_id:e,activity_id:n,joined_id:t.id,joined_type:t.peerType};return r&&(i.peer_name=r),i}(t,n,r))}function Ef(e,t,n,r){return mh(t,function(e,t,n){let r=n.children,i={domain:Wg,type:"created",peer_id:t,activity_id:n.id,context_id:n.contextId,owner:Cf(e,n.owner),participants:Array.from(n.readyMembers||[]).concat(Array.from(n.participants||[])).map((t=>Cf(e,t))),activity_type:n.type,initiator:n.initiator};return r&&(i.children=Sf(r)),i}(e,n,r))}function Af(e,t,n,r){return mh(e,function(e,t,n){let r=n.peerName,i=n.peerType,s={domain:Wg,type:"owner-changed",peer_id:e,activity_id:t,owner_id:n.id};return r&&(s.peer_name=r),i&&(s.peer_type=i),s}(t,n,r))}function kf(e,t,n){return bh(Wg,e,t,n)}function _f(e,t,n,r,i){return vh(Wg,e,t,n,r,i)}function Pf(e,t,n){let r=n.reduce(((e,t)=>(e[t.peer_type]?e[t.peer_type].push(t):e[t.peer_type]=[t],e)),{});return e=ed(e,t.id,yl(t,(e=>{e[nf].factories=e[nf].factories||{};for(let[t,n]of Object.entries(r))e[nf].factories[t]=n[0]}))),e=function(e,t,n){return t.reduce(((e,t)=>yl(e,(e=>{e.factories||(e.factories={}),e.factories[t]||(e.factories[t]=[]),e.factories[t].push(n)}))),e)}(e,Object.keys(r),t.id),e}function Tf(e,t,n){let{request_id:r,peer_id:i,factories:s}=n,o=Qh(e,i,"activity-domain");s.forEach((e=>function(e,t){let n=t.peer_type;e[nf]?.factories?.[n]&&Dh(Vg,`Factory for type ${n} is already registered by this peer`)}(o,e)));let a=Pf(e,o,s),c=function(e,t,n){return sd(e,nf,t).map((e=>gf(e.source,e.id,t.id,n)))}(a,o,s);return[a,c.concat(bh(Wg,t,r,i))]}function Ff(e,t,n,r){return sd(e,nf,t).filter((e=>r||e.id!==t.id)).map((e=>ff(e.source,e.id,t.id,n)))}function Df(e,t){let n=e[nf]?.factories,[r,i]=t.reduce((([e,t],r)=>{let i=function(e,t){return Object.values(e||{}).find((e=>e.id===t))}(n,r);return i?[yl(e,(e=>{e[nf]?.factories&&(delete e[nf]?.factories?.[i.peer_type],0===Object.keys(e[nf]?.factories).length&&delete e[nf]?.factories)})),t.concat(i)]:[e,t]}),[e,[]]);return[r,i]}function Of(e,t,n,r,i,s,o,a,c){let l={};return o&&(l.activity={id:o.id,type:o.type,context_id:a?.id,"initial-context":a?.data}),c&&(l.peer_name=c),mf(t.source,s,t.id,n.id,i,{...n.configuration,...r},l)}function Rf(e,t,n,r){return function(e,t,n){let r=Kh(e,t?.peer_id);return r?[e,[vh(Wg,r.source,t.request_id,r.id,n)]]:[e,[]]}(e,n,t)}function Nf(e,t,n){let r=Kh(e,t??function(e,t){return e.factories?.[t]}(e,n)?.[0]),i=r?.[nf]?.factories?.[n];return i||Dh(Gg,`Unable to find factory owner for type ${n}`),[r,i]}function jf(e,t,n,r,i,s,o){let[a,c]=Nf(e,void 0,n.type),l=zh(e,t),[u,h]=jh(e.ids),d=function(e,t,n,r){let i={type:"activity",id:e,peer_type:t.type,activity:{id:n.id,"owner?":r}};return t.name&&(i.peer_name=t.name),i}(h,n,r,s),p=Fd(e,l.identity,d);return{state:e=Wh({...e,ids:u},h,d),messages:[Of(0,a,c,o,p,h,r,i,null)],requestId:h}}function $f(e,t,n){let{request_id:r,peer_id:i,owner_id:s,peer_type:o,peer_name:a,activity_id:c}=n;Qh(e,i,"activity-domain");let l=function(e,t){if(t)return pf(e,t)}(e,c),u=function(e,t,n,r,i,s,o,a){let[c,l]=Nf(e,n,r),u=zh(e,t),[h,d]=jh(e.ids),p=function(e,t,n,r){let i={type:"create-peer",id:e,peer_type:t,clientRequest:r};return n&&(i.peer_name=n),i}(d,r,i,{request_id:a.request_id,peer_id:a.peer_id}),g=Fd(e,u.identity,p);return{state:e=Wh({...e,ids:h},d,p),messages:[Of(0,c,l,o,g,d,s,$d(e,s?.contextId),i)],requestId:d}}(e,i,s,o,a??o,l,n.configuration,n);return[u.state,u.messages.concat(bh(Wg,t,r,i))]}var Mf=hh("gateway.domains.activity.activities");function qf(e,t,n){return Yh(e,nf).filter((e=>e.identity.user===t)).map((e=>function(e,t,n){return mh(e,{domain:Wg,type:"types-removed",peer_id:t,types:n})}(e.source,e.id,n)))}function Bf(e,t,n,r,i){let s=Qh(e,r,"activity-domain"),o=s.identity.user;if(o){let s=function(e,t,n){return Yh(e,nf).filter((e=>e.identity.user===t)).map((e=>vf(e.source,e.id,n)))}(e,o,i);return s=s.concat(kf(t,n,r)),[cf(e,o,i),s]}return[e,[_f(Wg,t,n,r,Th(Ug,`Registering peer is missing an user in its identity ${JSON.stringify(s.identity)}`))]]}function Lf(e,t){e.configuration}function Wf(e,t,n,r){let i,s,{request_id:o,peer_id:a}=n,c=Qh(e,a,"activity-domain"),l=function(e,t,n){let r=af(e,t.identity.user)?.[n];return r||Dh(Kg,`Unable to find activity type ${n}`),r}(e,c,n.activity_type),u=(r||[]).reduce(((e,t)=>(e[`[${t.type},${t.name??""}]`]=t.configuration||null,e)),{}),h=n.types_override;h&&0!==Object.keys(u).length&&Dh(Qg,"Cannot specify types override and custom configuration at the same time"),[e,s,i]=function(e,t,n){let[r,i]=$h(e.ids),s=Ud(n,i,t.initial_context,"activity",t.read_permissions,t.write_permissions,i,Gd()),[o,a]=function(e){let t=e.currentId??1,n=`a-${e.nodeId}-${t}`;return[{...e,currentId:t+1},n]}(r),c={id:a,type:t.activity_type,contextId:i,initiator:t.peer_id};return c.client_request=t,[{...e,ids:o},c,s]}(e,n,c);let d=[bf(t,o,a,s.id)],p={state:e,messages:d,activity:s};return p=function(e,t,n,r,i){let{state:s,messages:o,requestId:a}=jf(e.state,n,t,e.activity,r,!0,Lf(t));return yl(e,(e=>{e.state=s,e.messages=e.messages.concat(o),e.activity.gatewayRequests=e.activity.gatewayRequests||new Set,e.activity.gatewayRequests.add(a)}))}(p,h?.owner_type??l.owner_type,a,i),p=function(e,t,n,r,i){return t?t.reduce(((t,i)=>{let{state:s,messages:o,requestId:a}=jf(t.state,n,i,t.activity,r,!1,Lf(i));return yl(e,(e=>{e.state=s,e.messages=e.messages.concat(o),e.activity.gatewayRequests=e.activity.gatewayRequests||new Set,e.activity.gatewayRequests.add(a)}))}),e):e}(p,h?.helper_types??l.helper_types,a,i),({state:e,activity:s,messages:d}=p),[e=of(e=Rd(e,i),s.id,s),d]}function Hf(e,t,n){let r=t.contextId,i=$d(e,r)?.data||{},s=n.id,o=n[nf]?.reload;t=yl(t,(e=>{e.owner=s,e["ready?"]=!0,delete e.clientRequest}));let a=[];return o?(a=a.concat(xf(e,n.source,n,t,i)),a=a.concat(function(e,t,n){if(t["ready?"])return Vf(e,n.id,t,n,!0).map((e=>Af(e.source,e.id,t.id,n)));return[]}(e,t,n))):(a=a.concat(function(e,t,n){let r=t.owner,i=t.readyMembers;return(r?[r]:[]).concat(Array.from(i||[])).map((t=>Kh(e,t))).filter((e=>!!e)).map((r=>xf(e,r.source,r,t,n)))}(e,t,i)),a=a.concat(function(e,t){let n=t.type,r=Kh(e,t.owner);return Array.from(uf(e,n)).map((t=>Kh(e,t))).filter((e=>!!e)).filter((e=>Uf(t,r,e))).map((n=>Ef(e,n.source,n.id,t)))}(e,t))),{state:e,activity:t,messages:a}}function Uf(e,t,n){let r=n.id;return!(!e.readyMembers?.has(r)&&!e.participants?.has(r)&&e.owner!==r)||nd(t.identity,e.read_permissions,t.options?.service,n.identity,void 0,n.options?.service)}function Gf(e,t,n,r,i){let s=zh(e,n.owner);return Vf(e,t,n,s,i).map((e=>function(e,t,n,r,i){return mh(e,{domain:Wg,type:"left",peer_id:t,activity_id:r,left_id:n,reason_uri:i.uri,reason:i.message})}(e.source,e.id,t,n.id,r)))}function Vf(e,t,n,r,i){let s=new Set;return uf(e,n.type).forEach(s.add),i&&function(e,t,n){let r=new Set;n&&r.add(n),t.participants&&t.participants.forEach(r.add),t.readyMembers&&t.readyMembers.forEach(r.add)}(0,n,r?.id),s.delete(t),Array.from(s).map((t=>Kh(e,t))).filter((e=>!!e)).filter((e=>Uf(n,r,e)))}function Jf(e,t,n){let r=n.id,i=$d(e,t.contextId);t=yl(t,(e=>{e.readyMembers=e.readyMembers||new Set,e.readyMembers.add(r)}));let s=new Array;if(t["ready?"]){let r=zh(e,t.owner);s=s.concat(function(e,t,n,r){return Vf(e,t.id,n,r,!0).map((e=>If(e.source,e.id,t,n.id)))}(e,n,t,r)),s=s.concat(xf(e,n.source,n,t,i?.data||{}))}return{state:qd(e,i,r),activity:t,messages:s}}function Kf(e){return yl(e,(e=>{delete e[nf]?.member,delete e[nf]?.owner}))}function zf(e,t){return e=function(e,t){return(t.gatewayRequests?Array.from(t.gatewayRequests):[]).reduce(((e,t)=>Hh(e,t).state),e)}(e,t),e=function(e,t){return yl(e,(e=>{e.activities&&(delete e.activities[t],0===Object.keys(e.activities).length&&delete e.activities)}))}(e,t.id),e=Nd(e,t.contextId)}function Qf(e,t,n){let r,i=t.clientRequest,s=t.owner;t.id,[e,r]=Gh(e,(e=>[zf(e,t),[]]),(e=>{let r=new Set;return s&&r.add(s),t.participants&&t.participants.forEach(r.add),t.readyMembers&&t.readyMembers.forEach(r.add),function(e,t,n){return t.reduce((([e,t],r)=>{let i=Kh(e,r);return i?[ed(e,r,Kf(i)),t.concat(yf(i.source,r,void 0,n))]:[e,t]}),[e,[]])}(e,Array.from(r),n)}));let o=Kh(e,i?.peer_id);return o?[e,r.concat(_f(o.source,i?.request_id,i?.peer_id,n))]:[e,r]}function Xf(e,t,n){let{request_id:r,peer_id:i,activity_id:s}=n,o=zh(e,i),a=pf(e,s);return function(e,t,n){let r=n.id;if(t.readyMembers?.has(r)||t.participants?.has(r)||t.owner===r)return!0;{let r=Kh(e,t.owner);return nd(r?.identity,t.write_permissions,!1,n.identity,void 0,!1)}}(e,a,o)?Gh(e,(e=>Qf(e,a,Oh(n))),(e=>[e,[kf(t,r,i)]])):[e,[_f(t,r,i,Th(Yg,"Not authorized to destroy activity"))]]}function Yf(e,t){return t["owner?"]?function(e,t){return Qf(e,pf(e,t.id),Th(Jg,"Activity owner cannot be created"))}(e,t):[e,[]]}function Zf(e,t,n,r){Mf.debug(`a participant ${n.id} of activity ${t.id} has left.`);let i=n.id;t=function(e,t){return yl(e,(e=>{e.participants&&(e.participants.delete(t),0===e.participants.size&&delete e.participants),e.readyMembers&&(e.readyMembers.delete(t),0===e.readyMembers.size&&delete e.readyMembers)}))}(t,i);let s,o=t.id,a=Gf(e,i,t,r,!0);return e=of(e=ed(e,i,Kf(n)),o,t),[e,s]=Bd(e,$d(e,t.contextId),i),{state:e,activity:t,messages:a}}function em(e,t,n){let r=t[nf]?.member,i=sf(e,r);if(i){let r=i.owner,s=t.id,o=i.reloading&&i.reloading.has(s);if(i=yl(i,(e=>{o&&e.reloading&&(e.reloading.delete(s),0===e.reloading.size&&delete e.reloading)})),r===s)return function(e,t,n,r,i){let s=n.id;if(Mf.debug(`the owner ${s} of activity ${t.id} has left`),i)return Qf(ed(e,s,Kf(n)),t,r);{let{state:i,messages:s}=Zf(e,t,n,r);return[i,s]}}(e,i,t,n,!o);{let{state:r,messages:s}=Zf(e,i,t,n);return[r,s]}}return[e,[]]}function tm(e,t,n,r,i,s){return[e=i?i.filter((e=>!!e)).reduce(((e,t)=>s(e,r,t)),e):s(e,r,!0),[kf(t,n,r)]]}function nm(e,t,n){let r,{request_id:i,peer_id:s,activity_types:o}=n,a=Qh(e,s,"activity-domain");[e,r]=tm(e,t,i,s,o,hf);let c=function(e){return Object.values(e.activities??{})}(e).filter((e=>e["ready?"]));return r=r.concat((o?c.filter((e=>-1!==o.indexOf(e.type))):c).map((t=>Ef(e,a.source,a.id,t)))),[e,r]}var rm=hh("gateway.domains.activity");function im(e,t){let n=t.creationRequest;if(n){let{peer_name:r,peer_type:i}=n;switch(t=yl(t,(e=>{r&&(e.peerName=r),i&&(e.peerType=i)})),n.type){case"activity":return function(e,t,n,r){let i=sf(e,t);if(i){let t=n.id,s=r.activity?.["owner?"],o=$d(e,i.contextId);e=qd(e=ed(e=of(e,i.id,yl(i,(e=>{e.participants||(e.participants=new Set),e.participants.add(t),s&&(e.owner=n.id),e.gatewayRequests&&(e.gatewayRequests.delete(r.id),0===e.gatewayRequests.size&&delete e.gatewayRequests)}))),t,yl(n,(e=>{e["activity-domain"].member=i.id,e["activity-domain"].reload=r.reload}))),o,t)}return e}(e,n.activity?.id,t,n);case"create-peer":return ed(e,t.id,t)}}return e}function sm(e,t,n){let r,{request_id:i,peer_id:s,restrictions:o}=n;if(Lh(e,s,nf))return[e,[bh(Wg,t,i,s)]];let a=zh(e=qh(e,s,nf,r),s);e=im(e,a);let c=new Array;return c=c.concat(od(Wg,nf,e,t,a)),c=c.concat(function(e,t){let n=af(e,t.identity.user);if(n){let e=Object.values(n);return[vf(t.source,t.id,e)]}return[]}(e,a)),c=c.concat(function(e,t){return Array.from(new Set(Object.values(function(e){return e.factories}(e)||{}).flat(1))).map((t=>Kh(e,t))).filter((e=>!!e)).filter((e=>rd(nf,t,e))).map((e=>{let n=e[nf]?.factories;if(n)return gf(t.source,t.id,e.id,Object.values(n))})).filter((e=>!!e))}(e,a)),c=c.concat([bh(Wg,t,i,s)]),[e,c]}function om(e,t,n,r){return Gh(e,(e=>em(e,t,n)),(e=>function(e,t){let n=Object.values(t[nf]?.factories||{});return n?[rf(e,n.map((e=>e.peer_type)),t.id),Ff(e,t,n.map((e=>e.id)),!1)]:[e,[]]}(e,t)),(e=>ad(Wg,nf,e,t,n,r)))}function am(e,t,n){let r=zh(e,n.peer_id),i=r[nf]?.member;return i?function(e,t,n,r){let i=r.id,s=sf(e,n);if(s){let t=s.owner===i;s=yl(s,(e=>{t||(e.readyMembers=e.readyMembers||new Set,e.readyMembers.add(i)),e.participants?.delete(i),0===e.participants?.size&&delete e.participants}));let{state:o,activity:a,messages:c}=t?Hf(e,s,r):Jf(e,s,r);return[of(o,n,a),c]}return[ed(e,i,Kf(r)),[yf(t,i,void 0,tf)]]}(e,t,i,r):function(e,t){let n=t.creationRequest?.clientRequest;n||Dh(Xg,`Unable to find originating request for a ready message from peer ${t.id}`);let r=n.peer_id;return[e,[wf(Kh(e,r).source,n.request_id,r,t.id)]]}(e,r)}function cm(e,t,n){switch(n.type){case"domain/join":return sm(e,t,n);case"domain/leave":return function(e,t,n){let{request_id:r,peer_id:i}=n,s=Qh(e,i,"activity-domain");return Gh(e,(e=>om(e,s,Oh(n),!1)),(e=>[e,[bh(Wg,t,r,i)]]))}(e,t,n);case"ready":return am(e,t,n);case"add-types":{let{request_id:r,peer_id:i,types:s}=n;return Bf(e,t,r,i,s)}case"remove-types":return function(e,t,n){let{request_id:r,peer_id:i,types:s}=n,o=Qh(e,i,"activity-domain"),a=o.identity.user;if(a){let n=new Set(s),o=Array.from(new Set(Object.keys(af(e,a)).filter((e=>n.has(e))))),c=qf(e,a,o);return c=c.concat(kf(t,r,i)),[lf(e,a,o),c]}return[e,[_f(t,r,i,Th(Ug,`Removing peer is missing an user in its identity ${JSON.stringify(o.identity)}`))]]}(e,t,n);case"create":{let{configuration:r,...i}=n;return Wf(e,t,i,r)}case"destroy":return Xf(e,t,n);case"subscribe":return nm(e,t,n);case"unsubscribe":return function(e,t,n){let{request_id:r,peer_id:i,activity_types:s}=n;return Qh(e,i,"activity-domain"),tm(e,t,r,i,s,df)}(e,t,n);case"join-activity":return function(e,t,n){let{request_id:r,peer_id:i,target_id:s,activity_id:o,peer_type:a,peer_name:c}=n;Qh(e,i,"activity-domain");let l=pf(e,o),u=yl(Qh(e,s,nf),(e=>{a&&(e.peerType=a),c&&(e.peerName=c)})),h=u[nf]?.member,d=u[nf]?.owner,p=sf(e,h??d);if(p?.id===o)return[e,[kf(t,r,i)]];p&&Dh(Qg,`Peer is already in activity ${p.id}`);let{state:g,messages:f}=function(e,t,n){return{state:e,activity:t,messages:[]}}(e,l);return[g,f.concat(kf(t,r,i))]}(e,t,n);case"add-peer-factories":return Tf(e,t,n);case"remove-peer-factories":return function(e,t,n){let{request_id:r,peer_id:i,factory_ids:s}=n,o=Qh(e,i,"activity-domain"),[a,c]=Df(o,s),l=rf(ed(e,i,a),c.map((e=>e.peer_type)),i),u=Ff(l,o,c.map((e=>e.id)),i);return u=u.concat([bh(Wg,t,r,i)]),[l,u]}(e,t,n);case"create-peer":return $f(e,t,n);case"error":return function(e,t,n){let{state:r,removed:i}=Hh(e,n.request_id);if(i){let e=i.type;switch(e){case"activity":{let e=i.activity;if(e)return Yf(r,e);break}case"create-peer":return Rf(r,Oh(n),i.clientRequest);default:rm.error("Unable to handle error for an unknown incoming request type "+e)}}return[e,[]]}(e,0,n);case"update-context":return dp(Wg,e,t,n);case"commands/source-removed":return function(e,t){rm.debug("removing source from activity domain");let n=Vh(e,t,nf),r=n.map((e=>e.id)).reduce(((e,t)=>Bh(e,t,nf)),e),i=n.reduce((([e,t],n)=>{let[r,i]=om(e,n,ef,!0);return[r,t.concat(i)]}),[r,[]]);return rm.debug("removed source from activity domain"),i}(e,t);default:return rm.error(`Unhandled message ${JSON.stringify(n)}`),[e,[vh(Wg,t,n.request_id??-1,n.peer_id,Th(Zg,`Unhandled message ${JSON.stringify(n)}`))]]}}function lm(){return new class{info(){return{uri:Wg,description:"",version:2}}init(e){return e}destroy(e){return e}handleMessage(e,t){let{source:n,body:r}=t;try{return cm(e,n,r)}catch(t){return Sh(n)?[e,[vh(Wg,n,r.request_id,r.peer_id,Fh(t,Hg))]]:[e,[]]}}}}var um="metrics",hm=`${um}.errors.failure`,dm=`${um}.errors.unhandled_message`,pm="metrics-domain",gm=hh("gateway.domains.metrics");function fm(e,t,n){return Bh(e,t.id,pm)}function mm(e,t,n){switch(n.type){case"domain/join":return function(e,t,n){let{request_id:r,peer_id:i,identity:s,options:o}=n,a=Object.assign({},function(e,t){return{system:t.system,service:t.application}}(0,s),o,s);return Lh(e,i,pm)||(e=yl(qh(e,i,pm,void 0),(e=>{e.peers[i][pm]={repoId:a}}))),[e,[bh(um,t,r,i)]]}(e,t,n);case"domain/leave":return function(e,t,n){let{request_id:r,peer_id:i}=n;return[fm(e,zh(e,i),Oh(n)),[bh(um,t,r,i)]]}(e,t,n);case"commands/source-removed":return function(e,t){return gm.debug(`removing source ${t}`),e=Vh(e,t,pm).reduce(((e,t)=>fm(e,t)),e),[e,[]]}(e,t);case"define":return function(e,t,n){return[yl(e,(e=>{})),[]]}(e);case"publish":return function(e,t){return[e,[]]}(e);default:return gm.error(`Unhandled message ${JSON.stringify(n)}`),[e,[vh(um,t,n.request_id??-1,n.peer_id,Th(dm,`Unhandled message ${JSON.stringify(n)}`))]]}}function ym(){return new class{info(){return{uri:um,description:"",version:1}}init(e){return e}destroy(e){return e=Yh(e,pm).reduce(((e,t)=>fm(e,t)),e),e}handleMessage(e,t){let{source:n,body:r}=t;try{return mm(e,n,r)}catch(t){return Sh(n)?[e,[vh(um,n,r.request_id,r.peer_id,Fh(t,hm))]]:[e,[]]}}}}var wm=gh,vm=Th(`${wm}.peer-removed`,"Peer has been removed"),bm=hh("gateway.domains.context");function Sm(e,t,n,r){let i=Qh(e,n,"context-domain"),s=od(wm,"context-domain",e,t,i).filter((t=>Ep(e,t)));r&&(s=s.filter((e=>n!==e.body.new_peer_id)));let o=r?[]:cp(lp(i),e,i);return s.concat(o)}function Cm(e,t,n,r,i,s){let o,a=qh(e,n,Od,o);return s&&(a=td(a,n,(e=>{e.options&&(delete e.options.context_compatibility_mode,0===Object.keys(e.options).length&&delete e.options)}))),[a,Sm(a,t,n,s)]}function xm(e,t,n){return Ch(t)?function(e,t,n){let{peer_id:r,identity:i,restrictions:s}=n,o=Kh(e,r)?.options?.context_compatibility_mode;return o&&Lh(e,r,Od)?[e,[]]:Cm(e,t,r,0,0,o)}(e,t,n):function(e,t,n){let{request_id:r,peer_id:i,identity:s,restrictions:o}=n,a=n.options?.context_compatibility_mode,c=Kh(e,i)?.options?.context_compatibility_mode,l=Lh(e,i,Od);if(l&&!c)return[e,[bh(wm,t,r,i)]];{let[s,o]=Cm(e,t,i,0,0,l&&c),u=Kh(s,i),h={...n,type:"join"};u?.options&&(h.options=u.options);let d=[];return a||d.push(bh(wm,t,r,i)),d.push(yh(Zd(Nh(e.ids),i),h)),[s,o.concat(d)]}}(e,t,n)}function Im(e,t,n){return Ch(t)?function(e,t,n){let{peer_id:r}=n,i=Kh(e,r);return i?Ip(wm,e,i,Oh(n),!1):[e,[]]}(e,0,n):function(e,t,n){let{request_id:r,peer_id:i}=n,[s,o]=Ip(wm,e,zh(e,i),Oh(n),!1);return[s,o.concat([bh(wm,t,r,i),yh(Zd(Nh(s.ids),i),{...n,type:"leave"})])]}(e,t,n)}function Em(e,t,n,r){switch(n.type){case"domain/join":return xm(e,t,n);case"domain/leave":return Im(e,t,n);case"create-context":return bp(wm,e,t,n,r);case"update-context":return dp(wm,e,t,n);case"subscribe-context":return fp(wm,e,t,n);case"unsubscribe-context":return ap(wm,e,t,n);case"destroy-context":return Cp(wm,e,t,n);case"commands/source-removed":return function(e,t,n){bm.debug("removing source from context domain");let r=Vh(e,t,Od),i=r.map((e=>e.id)).reduce(((e,t)=>Bh(e,t,Od)),e),s={domain:wd,type:"leave",destination:wm,reason_uri:vm.uri,reason:vm.message},o=r.reduce((([t,n],r)=>{let[i,o]=Ip(wm,t,r,vm,!0),a={...s,peer_id:r.id},c=[yh(Zd(Nh(e.ids),r.id),a)];return[i,n.concat(o.concat(c))]}),[i,[]]);return bm.debug("removed source from context domain"),o}(e,t);default:return bm.error(`Unhandled message ${JSON.stringify(n)}`),[e,[vh(um,t,n.request_id??-1,n.peer_id,Th(dm,`Unhandled message ${JSON.stringify(n)}`))]]}}function Am(e){return new class{constructor(e){this.retainedOverride=e}destroy(e){return e}handleMessage(e,t){let{source:n,body:r}=t;try{return Em(e,n,r,this.retainedOverride)}catch(t){return Sh(n)?[e,[vh(um,n,r.request_id,r.peer_id,Fh(t,hm))]]:[e,[]]}}info(){return{uri:wm,description:"",version:3}}init(e){return e}}(e?.retainedOverride)}var km="bus",_m=`${km}.errors.failure`,Pm=`${km}.errors.unhandled_message`,Tm="bus-domain";function Fm(e,t,n,r){return mh(e,{domain:km,type:"subscribed",request_id:t,peer_id:n,subscription_id:r})}var Dm=hh("gateway.domains.bus");function Om(e,t,n){return Ch(t)?function(e,t,n){let{peer_id:r,restrictions:i}=n;return Lh(e,r,Tm)?[e,[]]:[qh(e,r,"bus-domain",void 0),[]]}(e,0,n):function(e,t,n){let{request_id:r,peer_id:i,restrictions:s}=n;if(Lh(e,i,Tm))return[e,[bh(km,t,r,i)]];let o=Kh(e=qh(e,i,Tm,void 0),i),a={...n,type:"join",options:o?.options};return[e,[bh(km,t,r,i),yh(Zd(Nh(e.ids),i),a)]]}(e,t,n)}function Rm(e,t,n){return Ch(t)?function(e,t,n){let{peer_id:r}=n;return Kh(e,r)?[Bh(e,r,Tm),[]]:[e,[]]}(e,0,n):function(e,t,n){let{request_id:r,peer_id:i}=n;return[Bh(e,i,Tm),[bh(km,t,r,i),yh(Zd(Nh(e.ids),i),{...n,type:"leave"})]]}(e,t,n)}function Nm(e,t,n){let{data:r}=t;if(r){let{topic:i,routing_key:s,peer_id:o,target_identity:a}=t,c=e=>function(e,t,[,n]){return function({topic:e,topicRepattern:t},n){if(t){let e=n.match(t);return null!==e&&n===e[0]}return e===n}(n,e)&&function(e,t){return!e||!t||e===t}(n.routingKey,t)}(i,s,e),l=e=>function(e,t){if(e){let n=t.identity;for(let[t,r]of Object.entries(e))if(n[t]!==r)return!1}return!0}(a,e),u=n.identity,h=new Set,d=function(e){return e.map((e=>[e,Object.entries(e[Tm]?.subscriptions||{})])).flatMap((([e,t])=>t.map((([t,n])=>({peer:e,subscription:[t,n]})))))}(sd(e,Tm,n,!0).filter(l)).filter((({subscription:e})=>c(e))).reduce(((n,{peer:i,subscription:s})=>{let a=i.source,c=i.id,[l]=s,d=Sh(a)?function(e,t,n,r,i){return mh(e,{domain:km,type:"event",peer_id:t,subscription_id:n,"publisher-identity":r,data:i})}(a,c,l,u,r):function(){if(o!==c){let n=a.node;if(h.has(n)){h.add(n);let r={type:"node",node:n};return wh(Zd(Nh(e.ids),o),r,t)}}}();return d?n.concat(d):n}),[]);return[e,d]}return[e,[]]}function jm(e,t,n){return Sh(t)?function(e,t){let{peer_id:n}=t,r=zh(e,n);return r?Nm(e,t,r):[e,[]]}(e,n):function(e,t){let{peer_id:n}=t,r=Kh(e,n);return r?Nm(e,t,r):[e,[]]}(e,n)}function $m(e,t,n,r){let{topic:i,routing_key:s,request_id:o,peer_id:a}=t,c=r.source;r=yl(r,(e=>{e[Tm].subscriptions=e[Tm]?.subscriptions||{};let t={topic:i,routingKey:s};e[Tm].subscriptions[n]=t,function(e){return-1!==e.indexOf(">")||-1!==e.indexOf("*")}(i)&&(e[Tm].subscriptions[n].topicRepattern=function(e){return new RegExp(e.replace(/\./g,"\\.").replace(/\*/g,"[a-zA-Z_0-9]+").replace(/>/g,".*"),"g")}(i))}));let l={...t,subscription_id:n};return[ed(e,a,r),Sh(c)?[Fm(c,o,a,n),yh(Zd(Nh(e.ids),a),l)]:[]]}function Mm(e,t,n){return Sh(t)?function(e,t,n){let[r,i]=jh(e.ids),s=Qh(e,n.peer_id,"bus-domain");return $m({...e,ids:r},n,i,s)}(e,0,n):function(e,t,n){let{subscription_id:r,peer_id:i}=n,s=Jh(e,i,"bus-domain");return s?$m(e,n,r,s):[e,[]]}(e,0,n)}function qm(e,t,n){let{request_id:r,peer_id:i,subscription_id:s}=t,o=n.source;return[ed(e,i,n=yl(n,(e=>{e[Tm]?.subscriptions&&delete e[Tm]?.subscriptions[s]}))),Sh(o)?[bh(km,o,r,i),yh(Zd(Nh(e.ids),i),t)]:[]]}function Bm(e,t,n){return Sh(t)?function(e,t,n){return qm(e,n,Qh(e,n.peer_id,"bus-domain"))}(e,0,n):function(e,t){let n=Kh(e,t.peer_id);return n?qm(e,t,n):[e,[]]}(e,n)}function Lm(e,t,n){switch(n.type){case"domain/join":return Om(e,t,n);case"domain/leave":return Rm(e,t,n);case"commands/source-removed":return function(e,t){return Dm.debug(`removing source ${t}`),e=Vh(e,t,Tm).reduce(((e,t)=>Bh(e,t.id,Tm)),e),[e,[]]}(e,t);case"publish":return jm(e,t,n);case"subscribe":return Mm(e,t,n);case"unsubscribe":return Bm(e,t,n);default:return Dm.error(`Unhandled message ${JSON.stringify(n)}`),[e,[vh(km,t,n.request_id??-1,n.peer_id,Th(Pm,`Unhandled message ${JSON.stringify(n)}`))]]}}function Wm(){return new class{info(){return{uri:km,description:"",version:1}}init(e){return e}destroy(e){return e}handleMessage(e,t){let{source:n,body:r}=t;try{return Lm(e,n,r)}catch(i){return _h(i)||Dm.error(`Error processing message ${JSON.stringify(t)}`,i),[e,[vh(km,n,r.request_id,r.peer_id,Fh(i,_m))]]}}}}var Hm=hh("gateway.local.client");var Um=hh("gateway.scavenger");var Gm=hh("gateway");function Vm(e,t,n){Gm.info(`removing client for key ${n}`);let r=e[n].source;delete e[n];try{t.removeSource(r)}catch(e){Gm.error(`Unable to remove client for ${n}`,e)}}function Jm(e){return e instanceof Array||Array.isArray(e)?e.map(Jm):e?.constructor===Object?Object.keys(e).reduce(((t,n)=>(t[n]=Jm(e[n]),t)),{}):void 0===e?null:e}var Km=class{constructor(e){this.config=e,this.cnt=0}doStart(e){let t=function(e){return{default:"basic",available:{basic:Lp(e?.basic??{})}}}(e.authentication),n=e.default_context_lifetime,r="retained"===n?void 0:n??"ref-counted",i=function(e,t){let n,r=new hd,i=async e=>{try{n=await r.put((()=>yd(n,e)))}catch(t){throw fd.error(`Error processing internal message ${JSON.stringify(e)}`,t),t}};return n=e.reduce(((e,t)=>t.init(e)),{...Mh(Nh(),t?.signingKey),registeredDomains:gd(e),handler:i}),new class{constructor(e){this.handler=e}close(){}message(e){this.handler(e)}addSource(e){}removeSource(e){let t={origin:"local",source:e,body:{type:"commands/source-removed"}};return this.handler(t)}}(i)}([Lg(),lm(),Wm(),Am({retainedOverride:r}),ym(),Op(t,{retainedOverride:r})],{signingKey:e.token?.key}),s={},o=new class{constructor(e,t,n){this.clients=e,this.node=t,this.inactiveSeconds=n,this.scavenging=!1,n>0&&(Um.info(`clients inactive for ${n} seconds will be scavenged`),this.cancel=setInterval((async()=>{await this.scavengeClients()}),1e3))}async scavengeClients(){if(!this.scavenging)try{this.scavenging=!0;let e=Date.now()-1e3*this.inactiveSeconds;await function(e,t,n){Um.trace(`running client scavenger. collecting everything older than ${n}`);for(let[r,i]of Object.entries(e))i.lastAccesse.stop()))}async stop(){this.gateway&&(await this.doStop(this.gateway),delete this.gateway)}info(){return{endpoint:"local",version:"0.3.0-beta"}}async connect(e){if(!this.gateway)throw new Error("cannot connect local client (no gateway) did you call start?");let t=this.gateway.config.clients?.buffer_size??100;Gm.info(`local client connected, buffer-size: ${t}`);let n="local:"+ ++this.cnt,r=this.gateway,i=new class{disconnect(){return Vm(r.clients,r.node,n),Promise.resolve(!0)}send(e){Gm.debug("processing incoming message from local client");let t=r.clients[n];if("ping"===e.type)t.lastAccess=Date.now();else{let n=t.source,i=Jm(e);r.node.message({origin:"local",source:n,body:i})}}},s=function(e,t,n){return{type:"local",receive:async t=>{try{e(n,t)}catch(e){Hm.error("error while invoking the client callback",e)}},endpoint:t.localIp??"127.0.0.1"}}(e,r,i);return function(e,t,n,r,i){e[n]={source:r,lastAccess:Date.now(),onScavenge:i},t.addSource(r)}(r.clients,r.node,n,s),i}},zm=class extends Km{constructor(e){super(e)}};function Qm(e){return new zm(e)}class Xm{_gatewayInstance;configureLogging=dh;create=Qm;async start(e){if(e?.logging){const t=e.logging.appender;this.configureLogging({level:e.logging.level||"error",appender:e=>{if(t){const n={time:e.time,output:e.message,level:e.level,line:-1,message:e.message,namespace:e.name,stacktrace:""};t(n)}}})}const t={clients:{inactive_seconds:0,buffer_size:"number"==typeof e?.clients?.buffer_size?e.clients.buffer_size:1e3},default_context_lifetime:"retained"};this._gatewayInstance=this.create(t),await this._gatewayInstance.start()}async connectClient(e){return await this._gatewayInstance.connect(((t,n)=>e.postMessage(n)))}async connectExtClient(e,t){const n=await this._gatewayInstance.connect(((t,n)=>e.postMessage({glue42ExtInc:n})));e.onMessage.addListener((r=>{const i=r?.glue42ExtOut?.glue42core;if(i&&i.type===Is.name)return n.disconnect(),e.disconnect(),void(t&&t(i.data.clientId,!0));if(!r.glue42ExtOut||i);else{const e=r.glue42ExtOut;n.send(e)}}))}async setupInternalClient(e){let t;e.onmessage=async n=>{const r=n.data?.glue42core;if(r&&r.type===_s.name)t=await this.handleInternalGatewayConnectionRequest(e);else if(t&&!e.closed)return r&&r.type===ks.name?(e.closed=!0,void t?.disconnect()):void t?.send(n.data)}}async handleInternalGatewayConnectionRequest(e){e.closed=!1;try{const t=await this._gatewayInstance.connect(((t,n)=>e.postMessage(n)));return e.postMessage({glue42core:{type:_s.name,success:!0}}),t}catch(t){const n="string"==typeof t?t:JSON.stringify(t.message);return void e.postMessage({glue42core:{type:_s.name,error:n}})}}}var Ym=new class{_logger;setLogger(e){this._logger=e}get(e){if(this._logger)return this._logger.subLogger(e)}};let Zm=(e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&n[e]];return t};var ey,ty,ny=Object.prototype.toString,ry=function(e){var t=ny.call(e),n="[object Arguments]"===t;return n||(n="[object Array]"!==t&&null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Function]"===ny.call(e.callee)),n};var iy=Array.prototype.slice,sy=ry,oy=Object.keys,ay=oy?function(e){return oy(e)}:function(){if(ty)return ey;var e;if(ty=1,!Object.keys){var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=ry,i=Object.prototype.propertyIsEnumerable,s=!i.call({toString:null},"toString"),o=i.call((function(){}),"prototype"),a=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],c=function(e){var t=e.constructor;return t&&t.prototype===e},l={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},u=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!l["$"+e]&&t.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{c(window[e])}catch(e){return!0}}catch(e){return!0}return!1}();e=function(e){var i=null!==e&&"object"==typeof e,l="[object Function]"===n.call(e),h=r(e),d=i&&"[object String]"===n.call(e),p=[];if(!i&&!l&&!h)throw new TypeError("Object.keys called on a non-object");var g=o&&l;if(d&&e.length>0&&!t.call(e,0))for(var f=0;f0)for(var m=0;m1&&"boolean"!=typeof t)throw new qy('"allowMissing" argument must be a boolean');if(null===lw(/^%?[^%]*%?$/,e))throw new My("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=function(e){var t=cw(e,0,1),n=cw(e,-1);if("%"===t&&"%"!==n)throw new My("invalid intrinsic syntax, expected closing `%`");if("%"===n&&"%"!==t)throw new My("invalid intrinsic syntax, expected opening `%`");var r=[];return aw(e,uw,(function(e,t,n,i){r[r.length]=n?aw(i,hw,"$1"):t||e})),r}(e),r=n.length>0?n[0]:"",i=dw("%"+r+"%",t),s=i.name,o=i.value,a=!1,c=i.alias;c&&(r=c[0],ow(n,sw([0,1],c)));for(var l=1,u=!0;l=n.length){var g=Hy(o,h);o=(u=!!g)&&"get"in g&&!("originalValue"in g.get)?g.get:o[h]}else u=iw(o,h),o=o[h];u&&!a&&(Xy[s]=o)}}return o};function gw(){if(ew)return Zy;ew=1;var e=pw("%Object.defineProperty%",!0)||!1;if(e)try{e({},"a",{value:1})}catch(t){e=!1}return Zy=e}var fw=pw("%Object.getOwnPropertyDescriptor%",!0);if(fw)try{fw([],"length")}catch(zs){fw=null}var mw=fw,yw=gw(),ww=my,vw=yy,bw=mw,Sw=function(e,t,n){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new vw("`obj` must be an object or a function`");if("string"!=typeof t&&"symbol"!=typeof t)throw new vw("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new vw("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new vw("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new vw("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new vw("`loose`, if provided, must be a boolean");var r=arguments.length>3?arguments[3]:null,i=arguments.length>4?arguments[4]:null,s=arguments.length>5?arguments[5]:null,o=arguments.length>6&&arguments[6],a=!!bw&&bw(e,t);if(yw)yw(e,t,{configurable:null===s&&a?a.configurable:!s,enumerable:null===r&&a?a.enumerable:!r,value:n,writable:null===i&&a?a.writable:!i});else{if(!o&&(r||i||s))throw new ww("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");e[t]=n}},Cw=gw(),xw=function(){return!!Cw};xw.hasArrayLengthDefineBug=function(){if(!Cw)return null;try{return 1!==Cw([],"length",{value:1}).length}catch(e){return!0}};var Iw=xw,Ew=hy,Aw="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),kw=Object.prototype.toString,_w=Array.prototype.concat,Pw=Sw,Tw=Iw(),Fw=function(e,t,n,r){if(t in e)if(!0===r){if(e[t]===n)return}else if(!function(e){return"function"==typeof e&&"[object Function]"===kw.call(e)}(r)||!r())return;Tw?Pw(e,t,n,!0):Pw(e,t,n)},Dw=function(e,t){var n=arguments.length>2?arguments[2]:{},r=Ew(t);Aw&&(r=_w.call(r,Object.getOwnPropertySymbols(t)));for(var i=0;i4294967295||Bw(t)!==t)throw new qw("`length` must be a positive 32-bit integer");var n=arguments.length>2&&!!arguments[2],r=!0,i=!0;if("length"in e&&Mw){var s=Mw(e,"length");s&&!s.configurable&&(r=!1),s&&!s.writable&&(i=!1)}return(r||i||!n)&&($w?jw(e,"length",t,!0,!0):jw(e,"length",t)),e};!function(e){var t=Ty,n=pw,r=Lw,i=yy,s=n("%Function.prototype.apply%"),o=n("%Function.prototype.call%"),a=n("%Reflect.apply%",!0)||t.call(o,s),c=gw(),l=n("%Math.max%");e.exports=function(e){if("function"!=typeof e)throw new i("a function is required");var n=a(t,o,arguments);return r(n,1+l(0,e.length-(arguments.length-1)),!0)};var u=function(){return a(t,s,arguments)};c?c(e.exports,"apply",{value:u}):e.exports.apply=u}(Rw);var Ww=Rw.exports,Hw=pw,Uw=Ww,Gw=Uw(Hw("String.prototype.indexOf")),Vw=function(e,t){var n=Hw(e,!!t);return"function"==typeof n&&Gw(e,".prototype.")>-1?Uw(n):n},Jw=hy,Kw=vy()(),zw=Vw,Qw=Object,Xw=zw("Array.prototype.push"),Yw=zw("Object.prototype.propertyIsEnumerable"),Zw=Kw?Object.getOwnPropertySymbols:null,ev=function(e,t){if(null==e)throw new TypeError("target must be an object");var n=Qw(e);if(1===arguments.length)return n;for(var r=1;r2&&!!arguments[2]&&!wv||(yv?mv(e,"name",t,!0,!0):mv(e,"name",t)),e},Sv=yy,Cv=Object,xv=bv((function(){if(null==this||this!==Cv(this))throw new Sv("RegExp.prototype.flags getter called on non-object");var e="";return this.hasIndices&&(e+="d"),this.global&&(e+="g"),this.ignoreCase&&(e+="i"),this.multiline&&(e+="m"),this.dotAll&&(e+="s"),this.unicode&&(e+="u"),this.unicodeSets&&(e+="v"),this.sticky&&(e+="y"),e}),"get flags",!0),Iv=xv,Ev=Ow.supportsDescriptors,Av=Object.getOwnPropertyDescriptor,kv=function(){if(Ev&&"gim"===/a/gim.flags){var e=Av(RegExp.prototype,"flags");if(e&&"function"==typeof e.get&&"boolean"==typeof RegExp.prototype.dotAll&&"boolean"==typeof RegExp.prototype.hasIndices){var t="",n={};if(Object.defineProperty(n,"hasIndices",{get:function(){t+="d"}}),Object.defineProperty(n,"sticky",{get:function(){t+="y"}}),"dy"===t)return e.get}}return Iv},_v=Ow.supportsDescriptors,Pv=kv,Tv=Object.getOwnPropertyDescriptor,Fv=Object.defineProperty,Dv=TypeError,Ov=Object.getPrototypeOf,Rv=/a/,Nv=Ow,jv=xv,$v=kv,Mv=function(){if(!_v||!Ov)throw new Dv("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");var e=Pv(),t=Ov(Rv),n=Tv(t,"flags");return n&&n.get===e||Fv(t,"flags",{configurable:!0,enumerable:!1,get:e}),e},qv=Ww($v());Nv(qv,{getPolyfill:$v,implementation:jv,shim:Mv});var Bv=qv,Lv={exports:{}},Wv=vy(),Hv=function(){return Wv()&&!!Symbol.toStringTag},Uv=Hv(),Gv=Vw("Object.prototype.toString"),Vv=function(e){return!(Uv&&e&&"object"==typeof e&&Symbol.toStringTag in e)&&"[object Arguments]"===Gv(e)},Jv=function(e){return!!Vv(e)||null!==e&&"object"==typeof e&&"number"==typeof e.length&&e.length>=0&&"[object Array]"!==Gv(e)&&"[object Function]"===Gv(e.callee)},Kv=function(){return Vv(arguments)}();Vv.isLegacyArguments=Jv;var zv=Kv?Vv:Jv,Qv=Vs(Object.freeze({__proto__:null,default:{}})),Xv="function"==typeof Map&&Map.prototype,Yv=Object.getOwnPropertyDescriptor&&Xv?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,Zv=Xv&&Yv&&"function"==typeof Yv.get?Yv.get:null,eb=Xv&&Map.prototype.forEach,tb="function"==typeof Set&&Set.prototype,nb=Object.getOwnPropertyDescriptor&&tb?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,rb=tb&&nb&&"function"==typeof nb.get?nb.get:null,ib=tb&&Set.prototype.forEach,sb="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,ob="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,ab="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,cb=Boolean.prototype.valueOf,lb=Object.prototype.toString,ub=Function.prototype.toString,hb=String.prototype.match,db=String.prototype.slice,pb=String.prototype.replace,gb=String.prototype.toUpperCase,fb=String.prototype.toLowerCase,mb=RegExp.prototype.test,yb=Array.prototype.concat,wb=Array.prototype.join,vb=Array.prototype.slice,bb=Math.floor,Sb="function"==typeof BigInt?BigInt.prototype.valueOf:null,Cb=Object.getOwnPropertySymbols,xb="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Ib="function"==typeof Symbol&&"object"==typeof Symbol.iterator,Eb="function"==typeof Symbol&&Symbol.toStringTag&&(typeof Symbol.toStringTag===Ib||"symbol")?Symbol.toStringTag:null,Ab=Object.prototype.propertyIsEnumerable,kb=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null);function _b(e,t){if(e===1/0||e===-1/0||e!=e||e&&e>-1e3&&e<1e3||mb.call(/e/,t))return t;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof e){var r=e<0?-bb(-e):bb(e);if(r!==e){var i=String(r),s=db.call(t,i.length+1);return pb.call(i,n,"$&_")+"."+pb.call(pb.call(s,/([0-9]{3})/g,"$&_"),/_$/,"")}}return pb.call(t,n,"$&_")}var Pb=Qv,Tb=Pb.custom,Fb=jb(Tb)?Tb:null;function Db(e,t,n){var r="double"===(n.quoteStyle||t)?'"':"'";return r+e+r}function Ob(e){return pb.call(String(e),/"/g,""")}function Rb(e){return!("[object Array]"!==qb(e)||Eb&&"object"==typeof e&&Eb in e)}function Nb(e){return!("[object RegExp]"!==qb(e)||Eb&&"object"==typeof e&&Eb in e)}function jb(e){if(Ib)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!xb)return!1;try{return xb.call(e),!0}catch(e){}return!1}var $b=Object.prototype.hasOwnProperty||function(e){return e in this};function Mb(e,t){return $b.call(e,t)}function qb(e){return lb.call(e)}function Bb(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;nt.maxStringLength){var n=e.length-t.maxStringLength,r="... "+n+" more character"+(n>1?"s":"");return Lb(db.call(e,0,t.maxStringLength),t)+r}return Db(pb.call(pb.call(e,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,Wb),"single",t)}function Wb(e){var t=e.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return n?"\\"+n:"\\x"+(t<16?"0":"")+gb.call(t.toString(16))}function Hb(e){return"Object("+e+")"}function Ub(e){return e+" { ? }"}function Gb(e,t,n,r){return e+" ("+t+") {"+(r?Vb(n,r):wb.call(n,", "))+"}"}function Vb(e,t){if(0===e.length)return"";var n="\n"+t.prev+t.base;return n+wb.call(e,","+n)+"\n"+t.prev}function Jb(e,t){var n=Rb(e),r=[];if(n){r.length=e.length;for(var i=0;i0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(Mb(s,"numericSeparator")&&"boolean"!=typeof s.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var a=s.numericSeparator;if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return Lb(t,s);if("number"==typeof t){if(0===t)return 1/0/t>0?"0":"-0";var c=String(t);return a?_b(t,c):c}if("bigint"==typeof t){var l=String(t)+"n";return a?_b(t,l):l}var u=void 0===s.depth?5:s.depth;if(void 0===r&&(r=0),r>=u&&u>0&&"object"==typeof t)return Rb(t)?"[Array]":"[Object]";var h=function(e,t){var n;if("\t"===e.indent)n="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;n=wb.call(Array(e.indent+1)," ")}return{base:n,prev:wb.call(Array(t+1),n)}}(s,r);if(void 0===i)i=[];else if(Bb(i,t)>=0)return"[Circular]";function d(t,n,o){if(n&&(i=vb.call(i)).push(n),o){var a={depth:s.depth};return Mb(s,"quoteStyle")&&(a.quoteStyle=s.quoteStyle),e(t,a,r+1,i)}return e(t,s,r+1,i)}if("function"==typeof t&&!Nb(t)){var p=function(e){if(e.name)return e.name;var t=hb.call(ub.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),g=Jb(t,d);return"[Function"+(p?": "+p:" (anonymous)")+"]"+(g.length>0?" { "+wb.call(g,", ")+" }":"")}if(jb(t)){var f=Ib?pb.call(String(t),/^(Symbol\(.*\))_[^)]*$/,"$1"):xb.call(t);return"object"!=typeof t||Ib?f:Hb(f)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(t)){for(var m="<"+fb.call(String(t.nodeName)),y=t.attributes||[],w=0;w"}if(Rb(t)){if(0===t.length)return"[]";var v=Jb(t,d);return h&&!function(e){for(var t=0;t=0)return!1;return!0}(v)?"["+Vb(v,h)+"]":"[ "+wb.call(v,", ")+" ]"}if(function(e){return!("[object Error]"!==qb(e)||Eb&&"object"==typeof e&&Eb in e)}(t)){var b=Jb(t,d);return"cause"in Error.prototype||!("cause"in t)||Ab.call(t,"cause")?0===b.length?"["+String(t)+"]":"{ ["+String(t)+"] "+wb.call(b,", ")+" }":"{ ["+String(t)+"] "+wb.call(yb.call("[cause]: "+d(t.cause),b),", ")+" }"}if("object"==typeof t&&o){if(Fb&&"function"==typeof t[Fb]&&Pb)return Pb(t,{depth:u-r});if("symbol"!==o&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!Zv||!e||"object"!=typeof e)return!1;try{Zv.call(e);try{rb.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var S=[];return eb&&eb.call(t,(function(e,n){S.push(d(n,t,!0)+" => "+d(e,t))})),Gb("Map",Zv.call(t),S,h)}if(function(e){if(!rb||!e||"object"!=typeof e)return!1;try{rb.call(e);try{Zv.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var C=[];return ib&&ib.call(t,(function(e){C.push(d(e,t))})),Gb("Set",rb.call(t),C,h)}if(function(e){if(!sb||!e||"object"!=typeof e)return!1;try{sb.call(e,sb);try{ob.call(e,ob)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return Ub("WeakMap");if(function(e){if(!ob||!e||"object"!=typeof e)return!1;try{ob.call(e,ob);try{sb.call(e,sb)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return Ub("WeakSet");if(function(e){if(!ab||!e||"object"!=typeof e)return!1;try{return ab.call(e),!0}catch(e){}return!1}(t))return Ub("WeakRef");if(function(e){return!("[object Number]"!==qb(e)||Eb&&"object"==typeof e&&Eb in e)}(t))return Hb(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!Sb)return!1;try{return Sb.call(e),!0}catch(e){}return!1}(t))return Hb(d(Sb.call(t)));if(function(e){return!("[object Boolean]"!==qb(e)||Eb&&"object"==typeof e&&Eb in e)}(t))return Hb(cb.call(t));if(function(e){return!("[object String]"!==qb(e)||Eb&&"object"==typeof e&&Eb in e)}(t))return Hb(d(String(t)));if("undefined"!=typeof window&&t===window)return"{ [object Window] }";if(t===Us)return"{ [object globalThis] }";if(!function(e){return!("[object Date]"!==qb(e)||Eb&&"object"==typeof e&&Eb in e)}(t)&&!Nb(t)){var x=Jb(t,d),I=kb?kb(t)===Object.prototype:t instanceof Object||t.constructor===Object,E=t instanceof Object?"":"null prototype",A=!I&&Eb&&Object(t)===t&&Eb in t?db.call(qb(t),8,-1):E?"Object":"",k=(I||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(A||E?"["+wb.call(yb.call([],A||[],E||[]),": ")+"] ":"");return 0===x.length?k+"{}":h?k+"{"+Vb(x,h)+"}":k+"{ "+wb.call(x,", ")+" }"}return String(t)},Xb=yy,Yb=Kb("%WeakMap%",!0),Zb=Kb("%Map%",!0),eS=zb("WeakMap.prototype.get",!0),tS=zb("WeakMap.prototype.set",!0),nS=zb("WeakMap.prototype.has",!0),rS=zb("Map.prototype.get",!0),iS=zb("Map.prototype.set",!0),sS=zb("Map.prototype.has",!0),oS=function(e,t){for(var n,r=e;null!==(n=r.next);r=n)if(n.key===t)return r.next=n.next,n.next=e.next,e.next=n,n},aS=function(){var e,t,n,r={assert:function(e){if(!r.has(e))throw new Xb("Side channel does not contain "+Qb(e))},get:function(r){if(Yb&&r&&("object"==typeof r||"function"==typeof r)){if(e)return eS(e,r)}else if(Zb){if(t)return rS(t,r)}else if(n)return function(e,t){var n=oS(e,t);return n&&n.value}(n,r)},has:function(r){if(Yb&&r&&("object"==typeof r||"function"==typeof r)){if(e)return nS(e,r)}else if(Zb){if(t)return sS(t,r)}else if(n)return function(e,t){return!!oS(e,t)}(n,r);return!1},set:function(r,i){Yb&&r&&("object"==typeof r||"function"==typeof r)?(e||(e=new Yb),tS(e,r,i)):Zb?(t||(t=new Zb),iS(t,r,i)):(n||(n={key:{},next:null}),function(e,t,n){var r=oS(e,t);r?r.value=n:e.next={key:t,next:e.next,value:n}}(n,r,i))}};return r},cS=Oy,lS=aS(),uS=yy,hS={assert:function(e,t){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new uS("`O` is not an object");if("string"!=typeof t)throw new uS("`slot` must be a string");if(lS.assert(e),!hS.has(e,t))throw new uS("`"+t+"` is not present on `O`")},get:function(e,t){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new uS("`O` is not an object");if("string"!=typeof t)throw new uS("`slot` must be a string");var n=lS.get(e);return n&&n["$"+t]},has:function(e,t){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new uS("`O` is not an object");if("string"!=typeof t)throw new uS("`slot` must be a string");var n=lS.get(e);return!!n&&cS(n,"$"+t)},set:function(e,t,n){if(!e||"object"!=typeof e&&"function"!=typeof e)throw new uS("`O` is not an object");if("string"!=typeof t)throw new uS("`slot` must be a string");var r=lS.get(e);r||(r={},lS.set(e,r)),r["$"+t]=n}};Object.freeze&&Object.freeze(hS);var dS,pS=hS,gS=SyntaxError,fS="object"==typeof StopIteration?StopIteration:null,mS={}.toString,yS=Array.isArray||function(e){return"[object Array]"==mS.call(e)},wS=String.prototype.valueOf,vS=Object.prototype.toString,bS=Hv(),SS=function(e){return"string"==typeof e||"object"==typeof e&&(bS?function(e){try{return wS.call(e),!0}catch(e){return!1}}(e):"[object String]"===vS.call(e))},CS="function"==typeof Map&&Map.prototype?Map:null,xS="function"==typeof Set&&Set.prototype?Set:null;CS||(dS=function(e){return!1});var IS=CS?Map.prototype.has:null,ES=xS?Set.prototype.has:null;dS||IS||(dS=function(e){return!1});var AS,kS=dS||function(e){if(!e||"object"!=typeof e)return!1;try{if(IS.call(e),ES)try{ES.call(e)}catch(e){return!0}return e instanceof CS}catch(e){}return!1},_S="function"==typeof Map&&Map.prototype?Map:null,PS="function"==typeof Set&&Set.prototype?Set:null;PS||(AS=function(e){return!1});var TS=_S?Map.prototype.has:null,FS=PS?Set.prototype.has:null;AS||FS||(AS=function(e){return!1});var DS=AS||function(e){if(!e||"object"!=typeof e)return!1;try{if(FS.call(e),TS)try{TS.call(e)}catch(e){return!0}return e instanceof PS}catch(e){}return!1},OS=zv,RS=function(e){if(!fS)throw new gS("this environment lacks StopIteration");pS.set(e,"[[Done]]",!1);var t={next:function(){var e=pS.get(this,"[[Iterator]]"),t=pS.get(e,"[[Done]]");try{return{done:t,value:t?void 0:e.next()}}catch(t){if(pS.set(e,"[[Done]]",!0),t!==fS)throw t;return{done:!0,value:void 0}}}};return pS.set(t,"[[Iterator]]",e),t};if(xy()||vy()()){var NS=Symbol.iterator;Lv.exports=function(e){return null!=e&&void 0!==e[NS]?e[NS]():OS(e)?Array.prototype[NS].call(e):void 0}}else{var jS=yS,$S=SS,MS=pw,qS=MS("%Map%",!0),BS=MS("%Set%",!0),LS=Vw,WS=LS("Array.prototype.push"),HS=LS("String.prototype.charCodeAt"),US=LS("String.prototype.slice"),GS=function(e){var t=0;return{next:function(){var n,r=t>=e.length;return r||(n=e[t],t+=1),{done:r,value:n}}}},VS=function(e,t){if(jS(e)||OS(e))return GS(e);if($S(e)){var n=0;return{next:function(){var t=function(e,t){if(t+1>=e.length)return t+1;var n=HS(e,t);if(n<55296||n>56319)return t+1;var r=HS(e,t+1);return r<56320||r>57343?t+1:t+2}(e,n),r=US(e,n,t);return n=t,{done:t>e.length,value:r}}}}return t&&void 0!==e["_es6-shim iterator_"]?e["_es6-shim iterator_"]():void 0};if(qS||BS){var JS=kS,KS=DS,zS=LS("Map.prototype.forEach",!0),QS=LS("Set.prototype.forEach",!0);if("undefined"==typeof process||!process.versions||!process.versions.node)var XS=LS("Map.prototype.iterator",!0),YS=LS("Set.prototype.iterator",!0);var ZS=LS("Map.prototype.@@iterator",!0)||LS("Map.prototype._es6-shim iterator_",!0),eC=LS("Set.prototype.@@iterator",!0)||LS("Set.prototype._es6-shim iterator_",!0);Lv.exports=function(e){return function(e){if(JS(e)){if(XS)return RS(XS(e));if(ZS)return ZS(e);if(zS){var t=[];return zS(e,(function(e,n){WS(t,[n,e])})),GS(t)}}if(KS(e)){if(YS)return RS(YS(e));if(eC)return eC(e);if(QS){var n=[];return QS(e,(function(e){WS(n,e)})),GS(n)}}}(e)||VS(e)}}else Lv.exports=function(e){if(null!=e)return VS(e,!0)}}var tC=Lv.exports,nC=function(e){return e!=e},rC=function(e,t){return 0===e&&0===t?1/e==1/t:e===t||!(!nC(e)||!nC(t))},iC=rC,sC=function(){return"function"==typeof Object.is?Object.is:iC},oC=sC,aC=Ow,cC=Ow,lC=rC,uC=sC,hC=function(){var e=oC();return aC(Object,{is:e},{is:function(){return Object.is!==e}}),e},dC=Ww(uC(),Object);cC(dC,{getPolyfill:uC,implementation:lC,shim:hC});var pC,gC,fC,mC,yC=dC,wC=Ww,vC=Vw,bC=pw("%ArrayBuffer%",!0),SC=vC("ArrayBuffer.prototype.byteLength",!0),CC=vC("Object.prototype.toString"),xC=!!bC&&!SC&&new bC(0).slice,IC=!!xC&&wC(xC),EC=SC||IC?function(e){if(!e||"object"!=typeof e)return!1;try{return SC?SC(e):IC(e,0),!0}catch(e){return!1}}:bC?function(e){return"[object ArrayBuffer]"===CC(e)}:function(e){return!1},AC=Date.prototype.getDay,kC=Object.prototype.toString,_C=Hv(),PC=Vw,TC=Hv();if(TC){pC=PC("Object.prototype.hasOwnProperty"),gC=PC("RegExp.prototype.exec"),fC={};var FC=function(){throw fC};mC={toString:FC,valueOf:FC},"symbol"==typeof Symbol.toPrimitive&&(mC[Symbol.toPrimitive]=FC)}var DC=PC("Object.prototype.toString"),OC=Object.getOwnPropertyDescriptor,RC=TC?function(e){if(!e||"object"!=typeof e)return!1;var t=OC(e,"lastIndex");if(!(t&&pC(t,"value")))return!1;try{gC(e,mC)}catch(e){return e===fC}}:function(e){return!(!e||"object"!=typeof e&&"function"!=typeof e)&&"[object RegExp]"===DC(e)},NC=Vw("SharedArrayBuffer.prototype.byteLength",!0),jC=NC?function(e){if(!e||"object"!=typeof e)return!1;try{return NC(e),!0}catch(e){return!1}}:function(e){return!1},$C=Number.prototype.toString,MC=Object.prototype.toString,qC=Hv(),BC=Vw,LC=BC("Boolean.prototype.toString"),WC=BC("Object.prototype.toString"),HC=Hv(),UC={exports:{}},GC=Object.prototype.toString;if(xy()){var VC=Symbol.prototype.toString,JC=/^Symbol\(.*\)$/;UC.exports=function(e){if("symbol"==typeof e)return!0;if("[object Symbol]"!==GC.call(e))return!1;try{return function(e){return"symbol"==typeof e.valueOf()&&JC.test(VC.call(e))}(e)}catch(e){return!1}}}else UC.exports=function(e){return!1};var KC=UC.exports,zC={exports:{}},QC="undefined"!=typeof BigInt&&BigInt;if("function"==typeof QC&&"function"==typeof BigInt&&"bigint"==typeof QC(42)&&"bigint"==typeof BigInt(42)){var XC=BigInt.prototype.valueOf;zC.exports=function(e){return null!=e&&"boolean"!=typeof e&&"string"!=typeof e&&"number"!=typeof e&&"symbol"!=typeof e&&"function"!=typeof e&&("bigint"==typeof e||function(e){try{return XC.call(e),!0}catch(e){}return!1}(e))}}else zC.exports=function(e){return!1};var YC,ZC=zC.exports,ex=SS,tx=function(e){return"number"==typeof e||"object"==typeof e&&(qC?function(e){try{return $C.call(e),!0}catch(e){return!1}}(e):"[object Number]"===MC.call(e))},nx=function(e){return"boolean"==typeof e||null!==e&&"object"==typeof e&&(HC&&Symbol.toStringTag in e?function(e){try{return LC(e),!0}catch(e){return!1}}(e):"[object Boolean]"===WC(e))},rx=KC,ix=ZC,sx="function"==typeof WeakMap&&WeakMap.prototype?WeakMap:null,ox="function"==typeof WeakSet&&WeakSet.prototype?WeakSet:null;sx||(YC=function(e){return!1});var ax=sx?sx.prototype.has:null,cx=ox?ox.prototype.has:null;YC||ax||(YC=function(e){return!1});var lx=YC||function(e){if(!e||"object"!=typeof e)return!1;try{if(ax.call(e,ax),cx)try{cx.call(e,cx)}catch(e){return!0}return e instanceof sx}catch(e){}return!1},ux={exports:{}},hx=Vw,dx=pw("%WeakSet%",!0),px=hx("WeakSet.prototype.has",!0);if(px){var gx=hx("WeakMap.prototype.has",!0);ux.exports=function(e){if(!e||"object"!=typeof e)return!1;try{if(px(e,px),gx)try{gx(e,gx)}catch(e){return!0}return e instanceof dx}catch(e){}return!1}}else ux.exports=function(e){return!1};var fx,mx,yx=ux.exports,wx=kS,vx=DS,bx=lx,Sx=yx,Cx=Function.prototype.toString,xx="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof xx&&"function"==typeof Object.defineProperty)try{fx=Object.defineProperty({},"length",{get:function(){throw mx}}),mx={},xx((function(){throw 42}),null,fx)}catch(Qh){Qh!==mx&&(xx=null)}else xx=null;var Ix=/^\s*class\b/,Ex=function(e){try{var t=Cx.call(e);return Ix.test(t)}catch(e){return!1}},Ax=function(e){try{return!Ex(e)&&(Cx.call(e),!0)}catch(e){return!1}},kx=Object.prototype.toString,_x="function"==typeof Symbol&&!!Symbol.toStringTag,Px=!(0 in[,]),Tx=function(){return!1};if("object"==typeof document){var Fx=document.all;kx.call(Fx)===kx.call(document.all)&&(Tx=function(e){if((Px||!e)&&(void 0===e||"object"==typeof e))try{var t=kx.call(e);return("[object HTMLAllCollection]"===t||"[object HTML document.all class]"===t||"[object HTMLCollection]"===t||"[object Object]"===t)&&null==e("")}catch(e){}return!1})}var Dx=xx?function(e){if(Tx(e))return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;try{xx(e,null,fx)}catch(e){if(e!==mx)return!1}return!Ex(e)&&Ax(e)}:function(e){if(Tx(e))return!0;if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if(_x)return Ax(e);if(Ex(e))return!1;var t=kx.call(e);return!("[object Function]"!==t&&"[object GeneratorFunction]"!==t&&!/^\[object HTML/.test(t))&&Ax(e)},Ox=Dx,Rx=Object.prototype.toString,Nx=Object.prototype.hasOwnProperty,jx=function(e,t,n){if(!Ox(t))throw new TypeError("iterator must be a function");var r;arguments.length>=3&&(r=n),"[object Array]"===Rx.call(e)?function(e,t,n){for(var r=0,i=e.length;r-1?t:"Object"===t&&function(e){var t=!1;return qx(Xx,(function(n,r){if(!t)try{n(e),t=Kx(r,1)}catch(e){}})),t}(e)}return Hx?function(e){var t=!1;return qx(Xx,(function(n,r){if(!t)try{"$"+n(e)===r&&(t=Kx(r,1))}catch(e){}})),t}(e):null},yI=function(e){return Zx(e)?Yx?Yx(e):e.byteLength:NaN},wI=tI("SharedArrayBuffer.prototype.byteLength",!0),vI=tI("Date.prototype.getTime"),bI=Object.getPrototypeOf,SI=tI("Object.prototype.toString"),CI=rI("%Set%",!0),xI=tI("Map.prototype.has",!0),II=tI("Map.prototype.get",!0),EI=tI("Map.prototype.size",!0),AI=tI("Set.prototype.add",!0),kI=tI("Set.prototype.delete",!0),_I=tI("Set.prototype.has",!0),PI=tI("Set.prototype.size",!0);function TI(e,t,n,r){for(var i,s=iI(e);(i=s.next())&&!i.done;)if(NI(t,i.value,n,r))return kI(e,i.value),!0;return!1}function FI(e){return void 0===e?null:"object"!=typeof e?"symbol"!=typeof e&&("string"!=typeof e&&"number"!=typeof e||+e==+e):void 0}function DI(e,t,n,r,i,s){var o=FI(n);if(null!=o)return o;var a=II(t,o),c=eI({},i,{strict:!1});return!(void 0===a&&!xI(t,o)||!NI(r,a,c,s))&&(!xI(e,o)&&NI(r,a,c,s))}function OI(e,t,n){var r=FI(n);return null!=r?r:_I(t,r)&&!_I(e,r)}function RI(e,t,n,r,i,s){for(var o,a,c=iI(e);(o=c.next())&&!o.done;)if(NI(n,a=o.value,i,s)&&NI(r,II(t,a),i,s))return kI(e,a),!0;return!1}function NI(e,t,n,r){var i=n||{};if(i.strict?oI(e,t):e===t)return!0;if(gI(e)!==gI(t))return!1;if(!e||!t||"object"!=typeof e&&"object"!=typeof t)return i.strict?oI(e,t):e==t;var s,o=r.has(e),a=r.has(t);if(o&&a){if(r.get(e)===r.get(t))return!0}else s={};return o||r.set(e,s),a||r.set(t,s),function(e,t,n,r){var i,s;if(typeof e!=typeof t)return!1;if(null==e||null==t)return!1;if(SI(e)!==SI(t))return!1;if(aI(e)!==aI(t))return!1;var o=cI(e),a=cI(t);if(o!==a)return!1;var c=e instanceof Error,l=t instanceof Error;if(c!==l)return!1;if((c||l)&&(e.name!==t.name||e.message!==t.message))return!1;var u=hI(e),h=hI(t);if(u!==h)return!1;if((u||h)&&(e.source!==t.source||nI(e)!==nI(t)))return!1;var d=uI(e),p=uI(t);if(d!==p)return!1;if((d||p)&&vI(e)!==vI(t))return!1;if(n.strict&&bI&&bI(e)!==bI(t))return!1;var g=mI(e),f=mI(t);if(g!==f)return!1;if(g||f){if(e.length!==t.length)return!1;for(i=0;i=0;i--)if(C[i]!=x[i])return!1;for(i=C.length-1;i>=0;i--)if(!NI(e[s=C[i]],t[s],n,r))return!1;var I=fI(e),E=fI(t);if(I!==E)return!1;if("Set"===I||"Set"===E)return function(e,t,n,r){if(PI(e)!==PI(t))return!1;var i,s,o,a=iI(e),c=iI(t);for(;(i=a.next())&&!i.done;)if(i.value&&"object"==typeof i.value)o||(o=new CI),AI(o,i.value);else if(!_I(t,i.value)){if(n.strict)return!1;if(!OI(e,t,i.value))return!1;o||(o=new CI),AI(o,i.value)}if(o){for(;(s=c.next())&&!s.done;)if(s.value&&"object"==typeof s.value){if(!TI(o,s.value,n.strict,r))return!1}else if(!n.strict&&!_I(e,s.value)&&!TI(o,s.value,n.strict,r))return!1;return 0===PI(o)}return!0}(e,t,n,r);if("Map"===I)return function(e,t,n,r){if(EI(e)!==EI(t))return!1;var i,s,o,a,c,l,u=iI(e),h=iI(t);for(;(i=u.next())&&!i.done;)if(a=i.value[0],c=i.value[1],a&&"object"==typeof a)o||(o=new CI),AI(o,a);else if(void 0===(l=II(t,a))&&!xI(t,a)||!NI(c,l,n,r)){if(n.strict)return!1;if(!DI(e,t,a,c,n,r))return!1;o||(o=new CI),AI(o,a)}if(o){for(;(s=h.next())&&!s.done;)if(a=s.value[0],l=s.value[1],a&&"object"==typeof a){if(!RI(o,e,a,l,n,r))return!1}else if(!(n.strict||e.has(a)&&NI(II(e,a),l,n,r)||RI(o,e,a,l,eI({},n,{strict:!1}),r)))return!1;return 0===PI(o)}return!0}(e,t,n,r);return!0}(e,t,i,r)}function jI(e){return!(!e||"object"!=typeof e||"number"!=typeof e.length)&&("function"==typeof e.copy&&"function"==typeof e.slice&&(!(e.length>0&&"number"!=typeof e[0])&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))))}var $I=function(e,t,n){return NI(e,t,n,sI())},MI=Gs($I),qI=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var r,i,s;if(Array.isArray(t)){if((r=t.length)!=n.length)return!1;for(i=r;0!=i--;)if(!e(t[i],n[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((r=(s=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(i=r;0!=i--;)if(!Object.prototype.hasOwnProperty.call(n,s[i]))return!1;for(i=r;0!=i--;){var o=s[i];if(!e(t[o],n[o]))return!1}return!0}return t!=t&&n!=n},BI=Gs(qI);const LI=(e,t,n)=>{if("bottom"===n)return{left:t.left,top:t.top+t.height+0,width:t.width,height:e.height};if("top"===n)return{left:t.left,top:t.top-e.height-0,width:t.width,height:e.height};if("right"===n)return{left:t.left+t.width+0,top:t.top,width:e.width,height:t.height};if("left"===n)return{left:t.left-e.width-0,top:t.top,width:e.width,height:t.height};throw new Error("invalid relativeDirection")},WI=(e,t)=>MI(e,t,{strict:!0}),HI=(e,t)=>BI(e,t),UI=e=>new Promise((t=>setTimeout((()=>t()),e))),GI=e=>"string"==typeof e?e:e.message?JSON.stringify(e.message):JSON.stringify(e),VI=(e,t)=>{if(!e.count)return!1;const n=t();return n&&(e.count=--e.count<0?0:e.count),n};class JI{domainsController;glueController;portsBridge;stateController;serviceWorkerController;preferredConnectionController;interceptionController;pluginsController;sessionController;licenseController;localStorageController;idbController;_platformApi;constructor(e,t,n,r,i,s,o,a,c,l,u,h){this.domainsController=e,this.glueController=t,this.portsBridge=n,this.stateController=r,this.serviceWorkerController=i,this.preferredConnectionController=s,this.interceptionController=o,this.pluginsController=a,this.sessionController=c,this.licenseController=l,this.localStorageController=u,this.idbController=h}get logger(){return Ym.get("main.web.platform")}get ctxTrackingGlue(){return this.glueController.contextsTrackingGlue}get systemGlue(){return this.glueController.systemGlue}get platformApi(){return this._platformApi}async start(e){this.verifyLicense(e.licenseKey),await this.idbController.start(e.user),await this.portsBridge.configure(e),this.portsBridge.onClientUnloaded(this.handleClientUnloaded.bind(this)),await this.glueController.start(e),await Promise.all([this.glueController.createPlatformSystemMethod(this.handleClientMessage.bind(this)),this.glueController.createPlatformSystemStream()]),this.stateController.start(),await this.domainsController.startAllDomains(e),this._platformApi=this.buildPlatformApi(),await this.glueController.initClientGlue(e?.browser,e?.browserFactory,e?.workspaces?.isFrame,this._platformApi),await this.serviceWorkerController.connect(e),await this.domainsController.configurePostStartAllDomains(),await this.pluginsController.start({platformConfig:e,plugins:e.plugins?.definitions,api:this.platformApi,handlePluginMessage:this.handlePluginMessage.bind(this)}),e.connection&&await this.preferredConnectionController.start(e.connection),this.serviceWorkerController.notifyReady(),this.portsBridge.start()}getClientGlue(){return this.glueController.clientGlue}handleClientMessage(e,t,n,r){this.processControllerCommand(e,"client",t.instance).then((e=>n(e))).catch((e=>r(e)))}async handlePluginMessage(e,t){return this.processControllerCommand(e,"plugin",t)}async processControllerCommand(e,t,n){try{this.domainsController.validateDomain(e.domain)}catch(e){const r=GI(e);throw this.logger?.trace(`rejecting execution of a command issued by a ${t}: ${n}, because of a domain validation error: ${r}`),new Error(`Cannot execute this platform control, because of domain validation error: ${r}`)}const r=Object.assign({},e,{commandId:Zm(10),callerId:n,callerType:t});this.logger?.trace(`[${r.commandId}] received a command for a valid domain: ${e.domain} from ${t}: ${n}, forwarding to the appropriate controller`);try{const e=await this.executeCommand(r);return this.logger?.trace(`[${r.commandId}] this command was executed successfully, sending the result to the caller.`),e}catch(t){const n="string"==typeof t?t:t.message?JSON.stringify(t.message):JSON.stringify(t);throw this.logger?.trace(`[${r.commandId}] this command's execution was rejected, reason: ${n}`),new Error(`The platform rejected operation ${r.operation} for domain: ${e.domain} with reason: ${n}`)}}handleClientUnloaded(e){this.domainsController.notifyDomainsClientUnloaded(e)}executeCommand(e){const t=this.interceptionController.getOperationInterceptor({domain:e.domain,operation:e.operation});return t&&!e.settings?.skipInterception?(this.logger?.trace(`[${e.commandId}] The operation is being intercepted and executed by: ${t.name}`),t.intercept(e)):this.domainsController.executeControlMessage(e)}buildPlatformApi(){return{version:this.glueController.platformVersion,contextTrackGlue:this.ctxTrackingGlue,systemGlue:this.systemGlue,connectExtClient:(e,t)=>this.connectExtClient(e,t),onSystemReconnect:e=>this.onSystemReconnect(e),system:{shutdown:this.shutDown.bind(this),connection:{switchGW:this.preferredConnectionController.connectPreferred.bind(this.preferredConnectionController),switchToInternal:this.preferredConnectionController.revertToDefault.bind(this.preferredConnectionController)}}}}async connectExtClient(e,t){await this.portsBridge.handleExtConnectionRequest(e,t)}onSystemReconnect(e){return this.preferredConnectionController.onReconnect(e)}async shutDown(){await this.glueController.sendShutDownSignals(),this.stateController.cancel(),this.portsBridge.shutdown(),this.domainsController.shutdown(),this.serviceWorkerController.shutdown(),await this.pluginsController.shutdown(),this.interceptionController.shutdown(),this.preferredConnectionController.shutdown(),this.glueController.shutdown(),this.sessionController.shutdown(),this.localStorageController.stop(),this.idbController.stop(),window.iobrowser={webStarted:!1}}verifyLicense(e){if(!e||"string"!=typeof e||!e.length)throw new Error("The provided license key is not a valid string");if(!this.licenseController.verifyLicense(e).valid)throw this.logExpirationErrors(),new Error("Glue42 Core Plus cannot initialize, because there was no license token provided or it was invalid. Please contact Glue42 Sales team at licensing@glue42.com");const t=this.licenseController.getLicensePayload(e);if("trial"===t.type&&this.licenseController.checkExpired(t.expiration))throw this.logExpirationErrors(),new Error("Glue42 Core Plus cannot initialize, because the provided trial license has expired. Please contact Glue42 Sales team at licensing@glue42.com");this.licenseController.checkExpired(t.expiration)&&this.logExpirationErrors(),this.logger?.info(`This Glue42 Core Plus is running with a ${t.type} license, which expires on: ${new Date(1e3*t.expiration).toString()}`)}logExpirationErrors(){this.logger?.error("***********************************************************************************************************"),this.logger?.error("***********************************************************************************************************"),this.logger?.error("********************** This is Glue42 Core Plus has an expired in invalid license **************************"),this.logger?.error("***********************************************************************************************************"),this.logger?.error("***********************************************************************************************************")}}const KI=["name","title","version","customProperties","icon","caption","type"],zI=["appId","name","type","details","version","title","tooltip","lang","description","categories","icons","screenshots","contactEmail","moreInfo","publisher","customConfig","hostManifests","interop","localizedVersions"];var QI=function(e){return{ok:!0,result:e}},XI=function(e){return{ok:!1,error:e}},YI=function(e,t,n){return!1===t.ok?t:!1===n.ok?n:QI(e(t.result,n.result))},ZI=function(e,t){return!0===t.ok?t:XI(e(t.error))},eE=function(){return eE=Object.assign||function(e){for(var t,n=1,r=arguments.length;ne.length>0),"Expected a non-empty string"),vE=lE().where((e=>e>=0),"Expected a non-negative number"),bE=pE({name:wE,displayName:mE(cE()),contexts:mE(gE(cE())),customConfig:mE(pE())}),SE=yE(dE("web"),dE("native"),dE("citrix"),dE("onlineNative"),dE("other")),CE=pE({url:wE}),xE=pE({src:wE,size:mE(wE),type:mE(wE)}),IE=pE({src:wE,size:mE(wE),type:mE(wE),label:mE(wE)}),EE=pE({contexts:gE(wE),displayName:mE(wE),resultType:mE(wE),customConfig:mE(hE())}),AE=pE({listensFor:mE(fE(EE)),raises:mE(fE(gE(wE)))}),kE=pE({broadcasts:mE(gE(wE)),listensFor:mE(gE(wE))}),_E=pE({name:wE,description:mE(wE),broadcasts:mE(gE(wE)),listensFor:mE(gE(wE))}),PE=pE({intents:mE(AE),userChannels:mE(kE),appChannels:mE(gE(_E))}),TE=pE({url:wE,top:mE(lE()),left:mE(lE()),width:mE(vE),height:mE(vE)}),FE=pE({name:mE(wE),type:mE(wE.where((e=>"window"===e),"Expected a value of window")),title:mE(wE),version:mE(wE),customProperties:mE(hE()),icon:mE(cE()),caption:mE(cE()),details:mE(TE),intents:mE(gE(bE)),hidden:mE(uE())}),DE=yE(pE({ioConnect:mE(yE(FE,hE())),Glue42:mE(yE(FE,hE()))}),hE()),OE=pE({name:wE,appId:wE,title:mE(wE),version:mE(wE),manifest:wE,manifestType:wE,tooltip:mE(wE),description:mE(wE),contactEmail:mE(wE),supportEmail:mE(wE),publisher:mE(wE),images:mE(gE(pE({url:mE(wE)}))),icons:mE(gE(pE({icon:mE(wE)}))),customConfig:hE(),intents:mE(gE(bE))}),RE=pE({appId:mE(wE),name:mE(wE),details:mE(CE),version:mE(wE),title:mE(wE),tooltip:mE(wE),lang:mE(wE),description:mE(wE),categories:mE(gE(wE)),icons:mE(gE(xE)),screenshots:mE(gE(IE)),contactEmail:mE(wE),supportEmail:mE(wE),moreInfo:mE(wE),publisher:mE(wE),customConfig:mE(gE(hE())),hostManifests:mE(DE),interop:mE(PE)}),NE=pE({appId:wE,name:wE,type:SE,details:CE,version:mE(wE),title:mE(wE),tooltip:mE(wE),lang:mE(wE),description:mE(wE),categories:mE(gE(wE)),icons:mE(gE(xE)),screenshots:mE(gE(IE)),contactEmail:mE(wE),supportEmail:mE(wE),moreInfo:mE(wE),publisher:mE(wE),customConfig:mE(gE(hE())),hostManifests:mE(DE),interop:mE(PE),localizedVersions:mE(fE(RE))}),jE=yE(OE,NE),$E=e=>`${e.kind} at ${e.at}: ${JSON.stringify(e.input)}. Reason - ${e.message}`;class ME{fdc3ToDesktopDefinitionType={web:"window",native:"exe",citrix:"citrix",onlineNative:"clickonce",other:"window"};toApi(){return{isFdc3Definition:this.isFdc3Definition.bind(this),parseToBrowserBaseAppData:this.parseToBrowserBaseAppData.bind(this),parseToDesktopAppConfig:this.parseToDesktopAppConfig.bind(this)}}isFdc3Definition(e){const t=jE.run(e);return t.ok?e.appId&&e.details?{isFdc3:!0,version:"2.0"}:e.manifest?{isFdc3:!0,version:"1.2"}:{isFdc3:!1,reason:"The passed definition is not FDC3"}:{isFdc3:!1,reason:$E(t.error)}}parseToBrowserBaseAppData(e){const{isFdc3:t,version:n}=this.isFdc3Definition(e);if(!t)throw new Error("The passed definition is not FDC3");const r=jE.run(e);if(!r.ok)throw new Error(`Invalid FDC3 ${n} definition. Error: ${$E(r.error)}`);const i=this.getUserPropertiesFromDefinition(e,n),s={url:this.getUrl(e,n)},o={name:e.appId,type:"window",createOptions:s,userProperties:{...i,intents:"1.2"===n?i.intents:this.getIntentsFromV2AppDefinition(e),details:s},title:e.title,version:e.version,icon:this.getIconFromDefinition(e,n),caption:e.description,fdc3:"2.0"===n?{...e,definitionVersion:"2.0"}:void 0},a=e.hostManifests?.ioConnect||e.hostManifests?.Glue42;if(!a)return o;const c=FE.run(a);if(!c.ok)throw new Error(`Invalid FDC3 ${n} definition. Error: ${$E(c.error)}`);return Object.keys(c.result).length?this.mergeBaseAppDataWithGlueManifest(o,c.result):o}parseToDesktopAppConfig(e){const{isFdc3:t,version:n}=this.isFdc3Definition(e);if(!t)throw new Error("The passed definition is not FDC3");const r=jE.run(e);if(!r.ok)throw new Error(`Invalid FDC3 ${n} definition. Error: ${$E(r.error)}`);if("1.2"===n){const t=e;return{name:t.appId,type:"window",details:{url:this.getUrl(e,n)},version:t.version,title:t.title,tooltip:t.tooltip,caption:t.description,icon:t.icons?.[0].icon,intents:t.intents,customProperties:{manifestType:t.manifestType,images:t.images,contactEmail:t.contactEmail,supportEmail:t.supportEmail,publisher:t.publisher,icons:t.icons,customConfig:t.customConfig}}}const i=e,s={name:i.appId,type:this.fdc3ToDesktopDefinitionType[i.type],details:i.details,version:i.version,title:i.title,tooltip:i.tooltip,caption:i.description,icon:this.getIconFromDefinition(i,"2.0"),intents:this.getIntentsFromV2AppDefinition(i),fdc3:{...i,definitionVersion:"2.0"}},o=e.hostManifests?.ioConnect||e.hostManifests?.Glue42;if(!o)return s;if("object"!=typeof o||Array.isArray(o))throw new Error(`Invalid '${e.hostManifests.ioConnect?"hostManifests.ioConnect":"hostManifests['Glue42']"}' key`);return this.mergeDesktopConfigWithGlueManifest(s,o)}getUserPropertiesFromDefinition(e,t){return"1.2"===t?Object.fromEntries(Object.entries(e).filter((([e])=>!KI.includes(e)))):Object.fromEntries(Object.entries(e).filter((([e])=>!KI.includes(e)&&!zI.includes(e))))}getUrl(e,t){let n;if("1.2"===t){const t=JSON.parse(e.manifest);n=t.details?.url||t.url}else n=e.details?.url;if(!n||"string"!=typeof n)throw new Error(`Invalid FDC3 ${t} definition. Provide valid 'url' under '${"1.2"===t?"manifest":"details"}' key`);return n}getIntentsFromV2AppDefinition(e){const t=e.interop?.intents?.listensFor;if(!t)return;return Object.entries(t).map((e=>{const[t,n]=e;return{name:t,...n}}))}getIconFromDefinition(e,t){return"1.2"===t?e.icons?.find((e=>e.icon))?.icon||void 0:e.icons?.find((e=>e.src))?.src||void 0}mergeBaseAppDataWithGlueManifest(e,t){let n=e;if(t.details){const r={...e.createOptions,...t.details};n.createOptions=r,n.userProperties.details=r}return Array.isArray(t.intents)&&(n.userProperties.intents=(n.userProperties.intents||[]).concat(t.intents)),n={...n,...t},delete n.details,delete n.intents,n}mergeDesktopConfigWithGlueManifest(e,t){const n=Object.assign({},e,t,{details:{...e.details,...t.details}});return Array.isArray(t.intents)&&(n.intents=(e.intents||[]).concat(t.intents)),n}}const qE={common:{nonEmptyStringDecoder:wE,nonNegativeNumberDecoder:vE},fdc3:{allDefinitionsDecoder:jE,v1DefinitionDecoder:OE,v2DefinitionDecoder:NE}};var BE;!function(e){e.USER_CANCELLED="User Closed Intents Resolver UI without choosing a handler",e.CALLER_NOT_DEFINED="Caller Id is not defined",e.TIMEOUT_HIT="Timeout hit",e.INTENT_NOT_FOUND="Cannot find Intent",e.HANDLER_NOT_FOUND="Cannot find Intent Handler",e.TARGET_INSTANCE_UNAVAILABLE="Cannot start Target Instance",e.INTENT_DELIVERY_FAILED="Target Instance did not add a listener",e.RESOLVER_UNAVAILABLE="Intents Resolver UI unavailable",e.RESOLVER_TIMEOUT="User did not choose a handler",e.INVALID_RESOLVER_RESPONSE="Intents Resolver UI returned invalid response",e.INTENT_HANDLER_REJECTION="Intent Handler function processing the raised intent threw an error or rejected the promise it returned"}(BE||(BE={}));const LE=new class{_fdc3;_decoders=qE;_errors={intents:BE};get fdc3(){return this._fdc3||(this._fdc3=(new ME).toApi()),this._fdc3}get decoders(){return this._decoders}get errors(){return this._errors}},WE=LE.fdc3,HE=LE.decoders,UE=LE.errors;var GE=function(e){return{ok:!0,result:e}},VE=function(e){return{ok:!1,error:e}},JE=function(e,t,n){return!1===t.ok?t:!1===n.ok?n:GE(e(t.result,n.result))},KE=function(e,t){return!0===t.ok?t:VE(e(t.error))},zE=function(){return zE=Object.assign||function(e){for(var t,n=1,r=arguments.length;ne>=0),"Expected a non-negative number"),mA=rA().where((e=>e.length>0),"Expected a non-empty string"),yA=oA(),wA=cA({top:iA(),left:iA(),width:fA,height:fA}),vA=hA(aA("top"),aA("left"),aA("right"),aA("bottom")),bA=hA(aA("trace"),aA("debug"),aA("info"),aA("warn"),aA("error")),SA=oA().where((e=>"string"==typeof e.color&&e.color.length>0),"Expected color to be a non-empty string"),CA=hA(aA("Global"),aA("Activity"),aA("ApplicationDefault"),aA("Swimlane"),aA("Workspace")),xA=hA(aA("application"),aA("activity")),IA=(e,t)=>{const n=typeof e;return"function"===n?oA():pA(`The provided argument as ${t} should be of type function, provided: ${typeof n}`)},EA=cA({operation:mA}),AA=cA({isSupported:sA()}),kA=cA({name:mA,type:CA,context:uA(oA()),metadata:uA(oA())}),_A=cA({context:uA(oA()),bounds:wA,createArgs:cA({name:uA(mA),url:uA(mA),context:uA(oA())}),windowState:uA(mA),restoreState:uA(mA),instanceId:mA,isCollapsed:uA(sA()),isSticky:uA(sA()),restoreSettings:cA({groupId:uA(mA),groupZOrder:uA(iA())})}),PA=cA({type:aA("window"),componentType:uA(xA),application:mA,state:_A}),TA=hA(aA("system"),aA("windows"),aA("appManager"),aA("layouts"),aA("workspaces"),aA("intents"),aA("notifications"),aA("extension"),aA("channels"),aA("search"),aA("themes"),aA("manager"),aA("prefs")),FA=hA(aA("getEnvironment"),aA("getBase"),aA("operationCheck"),aA("workspacesInitCheck")),DA=cA({type:aA("window"),config:cA({appName:mA,windowId:uA(mA),context:uA(oA()),url:uA(mA),title:uA(rA()),showCloseButton:uA(sA()),allowExtract:uA(sA()),allowReorder:uA(sA()),isMaximized:uA(sA())})}),OA=cA({type:aA("group"),config:oA(),children:lA(hA(DA))}),RA=cA({type:aA("column"),config:oA(),children:lA(hA(OA,DA,gA((()=>RA)),gA((()=>NA))))}),NA=cA({type:aA("row"),config:oA(),children:lA(hA(RA,OA,DA,gA((()=>NA))))}),jA=cA({config:oA(),context:oA(),children:lA(hA(NA,RA,OA,DA))}),$A=cA({type:aA("Workspace"),application:uA(rA()),state:jA}),MA=cA({bounds:wA,instanceId:mA,selectedWorkspace:fA,workspaces:lA(jA),windowState:uA(mA),restoreState:uA(mA),context:uA(oA())}),qA=cA({type:aA("workspaceFrame"),application:mA,componentType:uA(xA),state:MA}),BA=cA({name:mA,type:CA,components:lA(hA(PA,$A,qA)),context:uA(oA()),metadata:uA(oA()),version:uA(iA())}),LA=cA({flags:rA()}),WA=cA({url:mA,top:uA(iA()),left:uA(iA()),width:uA(fA),height:uA(fA),workspacesSandbox:uA(LA)}),HA=cA({name:mA,displayName:uA(rA()),contexts:uA(lA(rA())),customConfig:uA(cA()),resultType:uA(mA)}),UA=cA({name:mA,type:mA.where((e=>"window"===e),"Expected a value of window"),title:uA(mA),version:uA(mA),customProperties:uA(oA()),icon:uA(rA()),caption:uA(rA()),details:WA,intents:uA(lA(HA)),hidden:uA(sA()),fdc3:uA(HE.fdc3.v2DefinitionDecoder)});cA({name:mA,title:uA(mA),version:uA(mA),appId:uA(mA),manifest:mA,manifestType:mA,tooltip:uA(mA),description:uA(mA),contactEmail:uA(mA),supportEmail:uA(mA),publisher:uA(mA),images:uA(lA(cA({url:uA(mA)}))),icons:uA(lA(cA({icon:uA(mA)}))),customConfig:oA(),intents:uA(lA(HA))});const GA=cA({url:mA,pollingInterval:uA(fA),requestTimeout:uA(fA),customHeaders:uA(oA())});cA({fetch:oA().andThen((e=>IA(e,"supplier fetch"))),timeout:uA(fA),pollingInterval:uA(fA),save:uA(oA().andThen((e=>IA(e,"supplier save")))),delete:uA(oA().andThen((e=>IA(e,"supplier delete"))))});const VA=cA({name:mA,meta:SA,data:uA(oA())}),JA=cA({name:mA,start:oA(),stop:uA(oA()),version:uA(mA),config:uA(oA()),critical:uA(sA())}),KA=hA(UA,HE.fdc3.v2DefinitionDecoder,HE.fdc3.v1DefinitionDecoder);lA(KA);const zA=cA({local:uA(lA(KA)),remote:uA(GA)}),QA=cA({mode:uA(hA(aA("idb"),aA("session"))),local:uA(lA(BA))}),XA=cA({definitions:lA(VA)}),YA=cA({definitions:lA(JA)}),ZA=cA({logging:uA(cA({level:uA(bA),appender:uA(oA().andThen((e=>IA(e,"gateway log appender"))))})),clients:uA(cA({buffer_size:uA(iA())}))}),ek=oA(),tk=cA({threshold:iA().where((e=>e>1),"Expected a number larger than 1")}),nk=cA({idleMSThreshold:iA().where((e=>e>100),"Expected a number larger than 100")}),rk=cA({maximumActiveWorkspaces:uA(tk),idleWorkspaces:uA(nk)}),ik=cA({delayed:uA(cA({batch:uA(iA()),initialOffsetInterval:uA(iA()),interval:uA(iA())})),defaultStrategy:uA(hA(aA("direct"),aA("delayed"),aA("lazy"))),showDelayedIndicator:uA(sA())}),sk=cA({flags:rA()}),ok=cA({src:mA,hibernation:uA(rk),loadingStrategy:uA(ik),isFrame:uA(sA()),initAsEmpty:uA(sA()),frameCache:uA(sA()),iframeSandbox:uA(sk)}),ak=cA({url:mA,auth:uA(cA({username:uA(mA),password:uA(mA),sessionId:uA(mA),provider:uA(mA),providerContext:uA(oA()),token:uA(mA),gatewayToken:uA(mA),flowName:uA(aA("sspi")),flowCallback:uA(oA().andThen((e=>IA(e,"flowCallback function"))))})),forceIncompleteSwitch:uA(sA()),discoveryIntervalMS:uA(fA)}),ck=cA({preferred:uA(ak),enableManualSwitching:uA(sA()),alwaysPlatform:uA(sA()),allowedClientFallbackOrigin:uA(mA)}),lk=cA({windowResponseTimeoutMs:uA(fA),defaultWindowOpenBounds:uA(wA)}),uk=cA({url:uA(mA),registrationPromise:uA(oA())}),hk=cA({allowed:uA(lA(mA)),blocked:uA(lA(mA))}),dk=cA({enabled:uA(sA()),enableToasts:uA(sA()),sourceFilter:uA(hk),clearNotificationOnClick:uA(sA())}),pk=cA({defaultTheme:uA(hA(aA("os"),aA("light"),aA("dark")))}),gk=cA({username:mA}),fk=cA({basic:uA(cA({username:mA,password:mA})),username:uA(mA),token:uA(cA({bearer:uA(mA)})),includeCredentials:uA(sA())}),mk=cA({url:mA,auth:fk,critical:uA(sA()),headers:uA(oA()),fetchIntervalMS:uA(fA),tokenRefreshIntervalMS:uA(fA),responseTimeoutMS:uA(fA)}),yk=cA({type:uA(hA(aA("local"),aA("manager")))}),wk=cA({store:uA(yk)}),vk=cA({licenseKey:mA,windows:uA(lk),applications:uA(zA),notifications:uA(dk),layouts:uA(QA),channels:uA(XA),plugins:uA(YA),serviceWorker:uA(uk),gateway:uA(ZA),connection:uA(ck),browser:uA(ek),workspaces:uA(ok),environment:uA(oA()),themes:uA(pk),manager:uA(mk),user:uA(gk),browserFactory:uA(oA().andThen((e=>IA(e,"glueFactory")))),applicationPreferences:uA(wk)}),bk=cA({top:uA(iA()),left:uA(iA()),width:uA(fA),height:uA(fA),context:uA(oA()),relativeTo:uA(mA),relativeDirection:uA(vA),windowId:uA(mA),layoutComponentId:uA(mA)}),Sk=cA({callInterceptor:oA().andThen((e=>IA(e,"callInterceptor"))),interceptions:lA(cA({domain:TA,operation:mA}))}),Ck=cA({windowId:mA,hasFocus:sA()}),xk=cA({windowId:mA}),Ik=cA({initialized:sA()});var Ek=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===Ak}(e)}(e)};var Ak="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function kk(e,t){return!1!==t.clone&&t.isMergeableObject(e)?Dk((n=e,Array.isArray(n)?[]:{}),e,t):e;var n}function _k(e,t,n){return e.concat(t).map((function(e){return kk(e,n)}))}function Pk(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return Object.propertyIsEnumerable.call(e,t)})):[]}(e))}function Tk(e,t){try{return t in e}catch(e){return!1}}function Fk(e,t,n){var r={};return n.isMergeableObject(e)&&Pk(e).forEach((function(t){r[t]=kk(e[t],n)})),Pk(t).forEach((function(i){(function(e,t){return Tk(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,i)||(Tk(e,i)&&n.isMergeableObject(t[i])?r[i]=function(e,t){if(!t.customMerge)return Dk;var n=t.customMerge(e);return"function"==typeof n?n:Dk}(i,n)(e[i],t[i],n):r[i]=kk(t[i],n))})),r}function Dk(e,t,n){(n=n||{}).arrayMerge=n.arrayMerge||_k,n.isMergeableObject=n.isMergeableObject||Ek,n.cloneUnlessOtherwiseSpecified=kk;var r=Array.isArray(t);return r===Array.isArray(e)?r?n.arrayMerge(e,t,n):Fk(e,t,n):kk(t,n)}Dk.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,n){return Dk(e,n,t)}),{})};var Ok=Gs(Dk);let Rk=(e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&n[e]];return t};function Nk(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function jk(e){if(e&&e.errorHandling&&"function"!=typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"==typeof e.errorHandling&&e.errorHandling,n={};function r(n,r){var i=n instanceof Error?n:new Error(n);if(t)t(i);else{var s='[ERROR] callback-registry: User callback for key "'+r+'" failed: '+i.stack;if(e)switch(e.errorHandling){case"log":return console.error(s);case"silent":return;case"throw":throw new Error(s)}console.error(s)}}return{add:function(e,t,i){var s=n[e];return s||(s=[],n[e]=s),s.push(t),i&&setTimeout((function(){i.forEach((function(i){var s;if(null===(s=n[e])||void 0===s?void 0:s.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(t){r(t,e)}}))}),0),function(){var r=n[e];r&&(0===(r=r.reduce((function(e,n,r){return n===t&&e.length===r||e.push(n),e}),[])).length?delete n[e]:n[e]=r)}},execute:function(e){for(var t=[],i=1;ie.length>0),"Expected a non-empty string"),h_=r_().where((e=>e>=0),"Expected a non-negative number"),d_=o_({name:u_,displayName:c_(u_)}),p_=o_({id:u_,interopId:u_,name:u_,appName:c_(u_),types:c_(a_(d_))}),g_=o_({maxResults:c_(h_),maxResultsPerType:c_(h_)}),f_=o_({search:u_,providers:c_(a_(p_)),types:c_(a_(d_)),providerLimits:c_(g_)}),m_=o_({name:u_,types:c_(a_(d_))}),y_=l_(s_("cancel"),s_("info"),s_("search")),w_=l_(s_("done"),s_("in-progress"),s_("error")),v_=o_({id:u_}),b_=o_({method:u_,target:c_(l_(o_({instance:u_}),s_("all"))),params:c_(i_())}),S_=o_({name:u_,method:u_,target:c_(l_(o_({instance:u_}),s_("all"))),params:c_(i_())}),C_=o_({type:d_,id:c_(u_),displayName:c_(u_),description:c_(u_),iconURL:c_(u_),metadata:c_(i_()),action:c_(b_),secondaryActions:c_(a_(S_))}),x_=o_({type:n_(),category:c_(n_()),id:c_(n_()),displayName:c_(n_()),description:c_(n_()),iconURL:c_(n_()),action:c_(b_)}),I_=o_({items:a_(l_(C_,x_)),provider:c_(p_),queryId:u_,status:s_("in-progress")}),E_=o_({items:a_(l_(C_,x_)),queryId:u_,status:s_("done")}),A_=o_({items:a_(l_(C_,x_)),provider:c_(p_),queryId:u_,errorMessage:u_,status:s_("error")});class k_{logger;glueController;modelFactory;registry=$k();activeQueryLookup={};queryIdToMasterIdLookup={};pendingDebounce=[];debounceTimer;debounceMS=0;constructor(e,t,n){this.logger=e,this.glueController=t,this.modelFactory=n}setDebounceMS(e){this.logger.info(`[${e.commandId}] Setting the debounceMS to: ${e.milliseconds}`),this.debounceMS=e.milliseconds,this.logger.info(`[${e.commandId}] debounceMS set to: ${e.milliseconds}`)}getDebounceMS(e){return this.logger.info(`[${e.commandId}] Getting the debounceMS`),this.debounceMS}async query(e,t){if(this.debounceMS&&!t)return this.debounceQuery(e);await this.glueController.registerMainClientMethod(this.handleProviderCall.bind(this));const{queryConfig:n,commandId:r}=e;this.logger.info(`[${r}] Initiating a query request`);let i=await this.glueController.getAllProvidersInfo();this.logger.trace(`[${r}] Got all available providers: ${JSON.stringify(i)}`),n.providers&&(this.logger.info(`[${r}] Filtering providers by explicitly allowed providers.`),i=this.filterProvidersByAllowList(i,n.providers)),n.types&&(this.logger.info(`[${r}] Filtering providers by explicitly allowed types.`),i=this.filterProvidersByAllowedTypes(i,n.types)),i.length||this.logger.warn(`[${r}] There are no providers that can handle the query for ${e.queryConfig.search}`),this.logger.info(`[${r}] Sending query request to providers: ${JSON.stringify(i)}`);const s=await this.glueController.sendQueryRequest(n,i);this.logger.info(`[${r}] Received responses from the providers: ${JSON.stringify(s)}`);const o=this.generateMasterQueryId(),a=this.modelFactory.buildClientQueryModel(o,this);return this.logger.info(`[${r}] The query is in progress with master id: ${o}`),this.activeQueryLookup[o]={servers:s,model:a},s.forEach((e=>{this.queryIdToMasterIdLookup[e.queryId]=o})),s.length||setTimeout((()=>{this.registry.execute(`on-query-completed-${o}`),this.cleanUpQuery(o)}),0),a.exposeFacade()}async cancelQuery(e,t){const n=this.activeQueryLookup[e];if(!n)throw new Error(`[${t}] Cannot cancel query: ${e}, because this query does not exist`);const r=n.servers;this.logger.info(`[${t}] Sending cancel query requests`),await Promise.all(r.map((e=>(this.logger.trace(`[${t}] Sending cancel query request to ${e.interopId} with queryId: ${e.queryId}`),this.glueController.sendQueryCancelRequest({id:e.queryId},{instance:e.interopId}))))),this.logger.info(`[${t}] The query was cancelled`)}processClientOnResults(e){return this.registry.add(`on-query-results-${e.masterQueryId}`,e.callback)}processClientOnCompleted(e){return this.registry.add(`on-query-completed-${e.masterQueryId}`,e.callback)}processClientOnError(e){return this.registry.add(`on-query-error-${e.masterQueryId}`,e.callback)}async handleProviderCall(e){const{status:t}=e,n=w_.runWithException(t),r=Rk(10);switch(n){case Mk:return this.handleQueryCompleted({completedConfig:e,commandId:r});case qk:return this.handleQueryResults({resultsBatch:e,commandId:r});case Bk:return this.handleQueryError({error:e,commandId:r});default:throw new Error(`Unrecognized status: ${t}`)}}handleQueryResults(e){const{resultsBatch:t,commandId:n}=e;this.logger.trace(`[${n}] Processing a results batch from provider: ${t.provider?.name} with id: ${t.provider?.id}`);const r=I_.runWithException(t),i=this.queryIdToMasterIdLookup[r.queryId];if(!i)return void this.logger.warn(`[${n}] Received results for an unknown query. Provider ${JSON.stringify(r.provider)}, items: ${JSON.stringify(r.items)}`);this.logger.trace(`[${n}] The results batch is validated, forwarding to the callbacks`);const s=this.checkTransformLegacyResults(r.items),o={provider:r.provider,results:s};this.registry.execute(`on-query-results-${i}`,o)}handleQueryCompleted(e){const{completedConfig:t,commandId:n}=e;this.logger.trace(`[${n}] Processing a query completed message from query id: ${t.queryId}`);const r=E_.runWithException(t),i=this.queryIdToMasterIdLookup[r.queryId];if(!i)return void this.logger.warn(`[${n}] Received completed message for an unknown query. Provider query id: ${JSON.stringify(r.queryId)}`);if(r.items.length){const e={results:this.checkTransformLegacyResults(r.items)};this.registry.execute(`on-query-results-${i}`,e)}delete this.queryIdToMasterIdLookup[r.queryId];const s=this.activeQueryLookup[i];s.servers=s.servers.filter((e=>e.queryId!==r.queryId)),s.servers.length?this.logger.trace(`[${n}] Waiting for more providers to complete`):(this.logger.trace(`[${n}] All providers are done, marking this query as completed`),this.registry.execute(`on-query-completed-${i}`),this.cleanUpQuery(i))}handleQueryError(e){const{error:t,commandId:n}=e;this.logger.trace(`[${n}] Processing an error message from query: ${t.queryId}`);const r=A_.runWithException(t),i=this.queryIdToMasterIdLookup[r.queryId];if(!i)return void this.logger.warn(`[${n}] Received error message for an unknown query. Provider query id: ${JSON.stringify(r.queryId)} and message: ${JSON.stringify(r.errorMessage)}`);const s={error:r.errorMessage,provider:r.provider};this.registry.execute(`on-query-error-${i}`,s)}filterProvidersByAllowList(e,t){const n=t.reduce(((e,t)=>(e[t.id]=!0,e)),{});return e.filter((e=>e.info.providers.some((e=>n[e.id]))))}filterProvidersByAllowedTypes(e,t){const n=t.reduce(((e,t)=>(e[t.name]=!0,e)),{});return e.filter((e=>{const t=e.info.supportedTypes;return!!t.some((e=>"*"===e))||(!t||!t.length||t.some((e=>n[e])))}))}generateMasterQueryId(){const e=Rk(10);return this.activeQueryLookup[e]?this.generateMasterQueryId():e}cleanUpQuery(e){this.registry.clearKey(`on-query-results-${e}`),this.registry.clearKey(`on-query-completed-${e}`),this.registry.clearKey(`on-query-error-${e}`),delete this.activeQueryLookup[e]}debounceQuery(e){return new Promise(((t,n)=>{clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout((()=>{const t=[...this.pendingDebounce];this.pendingDebounce=[],this.query(e,!0).then((e=>t.forEach((({resolve:t})=>t(e))))).catch((e=>t.forEach((({reject:t})=>t(e)))))}),this.debounceMS),this.pendingDebounce.push({resolve:t,reject:n})}))}checkTransformLegacyResults(e){if(!e.length)return[];const t=e[0];return t&&"object"!=typeof t.type?e.map((e=>({type:{name:e.type,displayName:e.category},id:e.id,displayName:e.displayName,description:e.description,iconURL:e.iconURL,action:e.action}))):e}}const __="T42.Search.Provider",P_="T42.Search.Client";class T_{logger;glueController;clientController;providerController;constructor(e,t,n,r){this.logger=e,this.glueController=t,this.clientController=n,this.providerController=r}setDebounceMS(e){this.logger.info(`[${e.commandId}] Starting setDebounceMS operation with duration ${e.milliseconds}`),this.clientController.setDebounceMS(e),this.logger.info(`[${e.commandId}] Operation setDebounceMS with duration ${e.milliseconds} completed`)}getDebounceMS(e){return this.logger.info(`[${e.commandId}] Starting getDebounceMS operation.`),this.clientController.getDebounceMS(e)}async query(e){if(this.logger.info(`[${e.commandId}] Starting query operation with config ${JSON.stringify(e.queryConfig)}`),Array.isArray(e.queryConfig.providers)&&!e.queryConfig.providers.length)throw new Error("Cannot sent a query with a defined empty array of providers, because this is an impossible query for complete.");if(Array.isArray(e.queryConfig.types)&&!e.queryConfig.types.length)throw new Error("Cannot sent a query with a defined empty array of types, because this is an impossible query for complete.");const t=await this.clientController.query(e);return this.logger.info(`[${e.commandId}] Operation query with config ${JSON.stringify(e.queryConfig)} completed.`),t}async registerProvider(e){this.logger.info(`[${e.commandId}] Starting registerProvider operation with config ${JSON.stringify(e.config)}`);const t=await this.providerController.processRegisterProvider(e);return this.logger.info(`[${e.commandId}] Operation registerProvider with config ${JSON.stringify(e.config)} completed.`),t}async providers(e){this.logger.info(`[${e.commandId}] Starting providers operation.`);const t=(await this.glueController.getAllProvidersInfo()).flatMap((e=>e.info.providers));return this.logger.info(`[${e.commandId}] Operation providers completed.`),t}async types(e){this.logger.info(`[${e.commandId}] Starting types operation.`);const t=(await this.glueController.getAllProvidersInfo()).flatMap((e=>e.info.providers)).filter((e=>!!e.types)).flatMap((e=>e.types)),n=[...new Set(t)];return this.logger.info(`[${e.commandId}] Operation types completed.`),n}}const F_=e=>"string"==typeof e?e:e.message?JSON.stringify(e.message):JSON.stringify(e);class D_{logger;glueController;sequelizer;limitsTracker;modelsFactory;registry=$k();providersModels={};activeQueries={};constructor(e,t,n,r,i){this.logger=e,this.glueController=t,this.sequelizer=n,this.limitsTracker=r,this.modelsFactory=i}async processRegisterProvider(e){const{config:t,commandId:n}=e;this.logger.info(`[${n}] enqueueing the provider registration process with config: ${JSON.stringify(t)}`);const r=await this.sequelizer.enqueue((async()=>{if((await this.glueController.getAllProvidersInfo()).flatMap((e=>e.info.providers)).some((e=>e&&e.name===t.name)))throw new Error(`Cannot register a new provider with name: ${t.name}, because there already is a provider with this name`);await this.glueController.registerMainProviderMethod(this.handleSearchQueryRequest.bind(this));const e={id:Rk(10),name:t.name,interopId:this.glueController.myInteropId,appName:this.glueController.myAppName,types:t.types},n=this.modelsFactory.buildProviderModel(e,this);return this.providersModels[e.id]=n,n.exposeFacade()}));return this.logger.info(`[${n}] the provider with name: ${t.name} has been registered.`),r}processProviderOnQuery(e){return this.registry.add(`on-search-query-${e.id}`,e.callback)}processProviderOnQueryCancel(e){return this.registry.add(`on-cancel-query-${e.id}`,e.callback)}async processProviderUnregister(e){this.logger.info(`[${e.commandId}] enqueueing the provider un-registration with id: ${e.id}`),await this.sequelizer.enqueue((async()=>{this.cleanUpProvider(e.id,e.commandId),Object.keys(this.providersModels).length||await this.glueController.clearMainProviderMethod()})),this.logger.info(`[${e.commandId}] the provider un-registration with id: ${e.id} completed`)}async processProviderQueryDone(e){const{commandId:t,identification:n}=e;this.activeQueries[n.queryId]?.publisher.syncSuspendProvider(n.providerId,t),await this.sequelizer.enqueue((async()=>{this.logger.trace(`[${t}] Processing a query done command with identification: ${JSON.stringify(n)}`);const e=this.activeQueries[n.queryId];e?(await this.cleanUpProviderQuery(n.queryId,n.providerId,t),e.providersAtWork.length?this.logger.trace(`[${t}] Query done command completed, but there are more providers still at work.`):(this.cleanUpQuery(n.queryId,t),this.logger.trace(`[${t}] Query is completed, signalling.`))):this.logger.warn(`[${t}] Cannot mark provider: ${n.providerId} done with query ${n.queryId}, because there is no active query with this id`)}))}processProviderQueryError(e){const{commandId:t,identification:n,error:r}=e;return this.logger.warn(`[${t}] Processing an error sent by provider: ${n.providerId} for query id: ${n.queryId} -> ${r}`),this.activeQueries[n.queryId]?.publisher.markProviderError(e),this.processProviderQueryDone(e)}processProviderQueryResult(e){const{commandId:t,identification:n}=e,r=this.activeQueries[n.queryId];if(!r){const t=`Will not send this result to the client, because there is no active query with id ${n.queryId}. Most likely this query was cancelled.`;throw this.logger.warn(`[${e}] ${t}`),new Error(t)}if(r.publisher.checkProviderSuspended(n.providerId)){const t=`Will not send this result to the client, because there is no info about this provider in the active query with id ${n.queryId}. Most likely this query was marked as done by this provider already.`;throw this.logger.warn(`[${e}] ${t}`),new Error(t)}const i=r.requestedTypes;if(i&&i.every((t=>t.name!==e.result.type.name))){const t=`Will not send this result to the client, because this result has a defined type: ${e.result.type.name} which is not in the explicitly requested list of types by the client.`;throw this.logger.warn(`[${e}] ${t}`),new Error(t)}const s=this.limitsTracker.testResultLimit(e);if(s?.maxLimitHit){const t=`Will not process this result from provider ${e.identification.providerId}, because this provider has reached the max results limit set by the client. This provider cannot send more result, marking it as done.`;throw this.logger.info(t),setTimeout((()=>this.processProviderQueryDone(e)),0),new Error(t)}if(s?.maxLimitPerTypeHit){const t=`Will not process this result from provider ${e.identification.providerId}, because this provider has reached the max results limit per type as set by the client.`;throw this.logger.info(t),new Error(t)}this.logger.trace(`[${t}] An active query for query ${n.queryId} was found and the provider is within limits, queueing the result`),this.limitsTracker.update(e),r.publisher.queueResult(e),this.logger.trace(`[${t}] The query result was queued successfully.`)}async handleSearchQueryRequest(e,t){const{operation:n}=e,r=y_.runWithException(n),i=Rk(10);switch(r){case Lk:return this.handleInfoOperation({commandId:i});case Wk:return this.handleSearchOperation({args:e,commandId:i},t);case Hk:return this.handleCancelOperation({args:e,commandId:i});default:throw new Error(`Unrecognized operation: ${n}`)}}async handleInfoOperation(e){this.logger.info(`[${e.commandId}] handling an info operation`);const t=Object.values(this.providersModels).flatMap((e=>e.myProviderData.types||[])),n=[...new Set(t)];Object.values(this.providersModels).some((e=>!e.myProviderData.types))&&n.push({name:"*"});const r=Object.values(this.providersModels).map((e=>e.myProviderData)),i={supportedTypes:n.map((e=>e.name)),providers:r,apiVersion:"1"};return this.logger.info(`[${e.commandId}] responding to an info operation with: ${JSON.stringify(i)}`),i}async handleSearchOperation(e,t){const n=e.commandId,r=this.generateQueryId();this.logger.info(`[${n}] Processing search operation with queryId: ${r} request details: ${JSON.stringify(e.args)}`);const i=this.checkRequestLegacy(e.args),s=this.prepareRequest(e.args,i,n);return this.logger.info(`[${n}] Search operation with queryId: ${r} is validated. Creating an active query and enqueueing calling the providers.`),this.activeQueries[r]={queryId:r,callerInstanceId:t.instance,providersAtWork:[],requestedTypes:s.types,publisher:this.modelsFactory.buildPublisher(t.instance,r,i),staleTimer:this.setClearStaleQueryTimer(r)},s.providerLimits&&this.limitsTracker.enableTracking(s.providerLimits,r),setTimeout((()=>{this.sequelizer.enqueue((async()=>{try{this.logger.info(`[${n}] Calling the providers.`),this.callProviders(s,r,n)}catch(e){this.logger.error(`[${n}] Error calling the providers: ${F_(e)}`)}}))}),0),this.logger.info(`[${n}] Search operation with queryID: ${r} processed successfully.`),{id:r}}async handleCancelOperation(e){await this.sequelizer.enqueue((async()=>{const t=v_.run(e.args);if(!t.ok){const n=`Cannot process a cancel request, because of validation error: ${JSON.stringify(t.error)}`;throw this.logger.warn(`[${e.commandId}] ${n}`),new Error(n)}const n=t.result,r=this.activeQueries[n.id];r&&(clearTimeout(r.staleTimer),r.publisher.cancel(e.commandId),delete this.activeQueries[n.id],r.providersAtWork.forEach((e=>this.registry.execute(`on-cancel-query-${e.myProviderData.id}`,{id:n.id}))))}))}generateQueryId(){const e=Rk(10);return this.activeQueries[e]?this.generateQueryId():e}translateLegacySearchRequest(e){return{search:e.search,types:e.types?.map((e=>({name:e}))),providerLimits:{maxResults:e.limit,maxResultsPerType:e.categoryLimit}}}checkRequestLegacy(e){return void 0===e.apiVersion}callProviders(e,t,n){let r=e.providers?this.getFilteredProviderModels(e.providers):Object.values(this.providersModels);this.logger.trace(`[${n}] initial providers filtration yielded: ${JSON.stringify(r.map((e=>e.myProviderData.name)).join(", "))}`),r=e.types?this.getFilteredProvidersBySearchTypes(r,e.types):r,this.logger.trace(`[${n}] search type providers filtration yielded: ${JSON.stringify(r.map((e=>e.myProviderData.name)).join(", "))}`),this.activeQueries[t].publisher.configureProviders(r),this.activeQueries[t].providersAtWork.push(...r),r.forEach((r=>this.callProvider(r,e,t,n)))}callProvider(e,t,n,r){const i=this.modelsFactory.buildProviderQueryModel(t,{queryId:n,providerId:e.myProviderData.id},this).exposeFacade();this.logger.info(`[${r}] The query facade for provider: ${e.myProviderData.id} with name ${e.myProviderData.name} is ready, raising the event for query ID: ${n}.`),this.registry.execute(`on-search-query-${e.myProviderData.id}`,i)}getFilteredProviderModels(e){const t=e.reduce(((e,t)=>(this.providersModels[t.id]&&e.push(this.providersModels[t.id]),e)),[]);return t}getFilteredProvidersBySearchTypes(e,t){return e.filter((e=>!e.myProviderData.types||!e.myProviderData.types.length||e.myProviderData.types?.some((e=>t.some((t=>t.name===e.name))))))}setClearStaleQueryTimer(e){return setTimeout((()=>{const t=Rk(10);this.logger.info(`[${t}] Stale query timer is activated for queryId: ${e}`);this.activeQueries[e]?(this.logger.info(`[${t}] force-marking the query as done`),this.cleanUpQuery(e,t),this.logger.info(`[${t}] the stale query was cleared.`)):this.logger.info(`[${t}] No active query was found, this was a false activation.`)}),9e5)}prepareRequest(e,t,n){const r=t?this.translateLegacySearchRequest(e):e,i=f_.run(r);if(!i.ok){const e=`Cannot process a search request, because of validation error: ${JSON.stringify(i.error)}`;throw this.logger.warn(`[${n}] ${e}`),new Error(e)}return i.result}cleanUpQuery(e,t){const n=this.activeQueries[e];clearTimeout(n.staleTimer),n.publisher.cleanPublisher(t),delete this.activeQueries[e],this.limitsTracker.cleanTracking(e)}cleanUpProvider(e,t){this.registry.clearKey(`on-search-query-${e}`),this.registry.clearKey(`on-cancel-query-${e}`),delete this.providersModels[e];Object.values(this.activeQueries).filter((t=>!t.publisher.checkProviderSuspended(e))).forEach((n=>{this.processProviderQueryDone({identification:{queryId:n.queryId,providerId:e},commandId:t})}))}async cleanUpProviderQuery(e,t,n){const r=this.activeQueries[e];r?(r.providersAtWork=r.providersAtWork.filter((e=>e.myProviderData.id!==t)),await r.publisher.markProviderDone(t,n)):this.logger.warn(`[${n}] Cannot clean up a provider query ${e} for provider ${t} because there is no such active query`)}}class O_{main;constructor(e){this.main=e}exposeApi(){const e={version:"2.3.1",setDebounceMS:this.setDebounceMS.bind(this),getDebounceMS:this.getDebounceMS.bind(this),listProviders:this.providers.bind(this),listTypes:this.types.bind(this),query:this.query.bind(this),registerProvider:this.registerProvider.bind(this)};return Object.freeze(e)}setDebounceMS(e){h_.runWithException(e);const t=Rk(10);return this.main.setDebounceMS({milliseconds:e,commandId:t})}getDebounceMS(){const e=Rk(10);return this.main.getDebounceMS({commandId:e})}async providers(){const e=Rk(10);return this.main.providers({commandId:e})}async types(){const e=Rk(10);return this.main.types({commandId:e})}async query(e){const t=f_.runWithException(e),n=Rk(10);return this.main.query({queryConfig:t,commandId:n})}async registerProvider(e){const t=m_.runWithException(e),n=Rk(10);return this.main.registerProvider({config:t,commandId:n})}}let R_=class{minSequenceInterval;queue=[];isExecutingQueue=!1;constructor(e=0){this.minSequenceInterval=e}enqueue(e){return new Promise(((t,n)=>{this.queue.push({action:e,resolve:t,reject:n}),this.executeQueue()}))}async executeQueue(){if(!this.isExecutingQueue){for(this.isExecutingQueue=!0;this.queue.length;){const e=this.queue.shift();if(!e)return void(this.isExecutingQueue=!1);try{const t=await e.action();e.resolve(t)}catch(t){e.reject(t)}await this.intervalBreak()}this.isExecutingQueue=!1}}intervalBreak(){return new Promise((e=>setTimeout(e,this.minSequenceInterval)))}};class N_{limitsLookup={};limitsData={};enableTracking(e,t){this.limitsLookup[t]={},this.limitsData[t]={maxResults:e.maxResults?e.maxResults:Number.MAX_SAFE_INTEGER,maxResultsPerType:e.maxResultsPerType?e.maxResultsPerType:Number.MAX_SAFE_INTEGER}}testResultLimit(e){const t=this.limitsLookup[e.identification.queryId],n=this.limitsData[e.identification.queryId];if(!t||!n)return;let r=t[e.identification.providerId];if(r||(r={total:0},t[e.identification.providerId]=r),r.total+1>n.maxResults)return{maxLimitHit:!0};const i=e.result.type.name;if(!i)return;return(r[i]||0)+1>n.maxResultsPerType?{maxLimitPerTypeHit:!0}:void 0}update(e){const t=this.limitsLookup[e.identification.queryId],n=this.limitsData[e.identification.queryId];if(!t||!n)return;const r=t[e.identification.providerId];r.total+=1;const i=e.result.type.name;i&&(r[i]=r[i]?r[i]+1:1)}cleanTracking(e){delete this.limitsLookup[e],delete this.limitsData[e]}}class j_{controller;logger;masterQueryId;constructor(e,t,n){this.controller=e,this.logger=t,this.masterQueryId=n}exposeFacade(){const e={cancel:this.cancel.bind(this),onResults:this.onResults.bind(this),onCompleted:this.onCompleted.bind(this),onError:this.onError.bind(this)};return Object.freeze(e)}async cancel(){const e=Rk(10);this.logger.info(`[${e}] received a valid query cancel request, forwarding to the controller.`),await this.controller.cancelQuery(this.masterQueryId,e),this.logger.info(`[${e}] the cancel request was completed.`)}onResults(e){if("function"!=typeof e)throw new Error("onQuery requires a callback of type function");const t=Rk(10);this.logger.info(`[${t}] received a valid query onResults request, forwarding to the controller.`);const n=this.controller.processClientOnResults({callback:e,masterQueryId:this.masterQueryId,commandId:t});return this.logger.info(`[${t}] the onResults request was completed.`),n}onCompleted(e){if("function"!=typeof e)throw new Error("onQuery requires a callback of type function");const t=Rk(10);this.logger.info(`[${t}] received a valid query onCompleted request, forwarding to the controller.`);const n=this.controller.processClientOnCompleted({callback:e,masterQueryId:this.masterQueryId,commandId:t});return this.logger.info(`[${t}] the onCompleted request was completed.`),n}onError(e){if("function"!=typeof e)throw new Error("onQuery requires a callback of type function");const t=Rk(10);this.logger.info(`[${t}] received a valid query onError request, forwarding to the controller.`);const n=this.controller.processClientOnError({callback:e,masterQueryId:this.masterQueryId,commandId:t});return this.logger.info(`[${t}] the onError request was completed.`),n}}class $_{myData;controller;logger;constructor(e,t,n){this.myData=e,this.controller=t,this.logger=n}get id(){return this.myData.id}get name(){return this.myData.name}get appName(){return this.myData.appName}get types(){return this.myData.types}get myProviderData(){return Object.assign({},this.myData)}exposeFacade(){const e={interopId:this.myData.interopId,id:this.id,name:this.name,appName:this.appName,types:this.types,onQuery:this.onQuery.bind(this),onQueryCancel:this.onQueryCancel.bind(this),unregister:this.unregister.bind(this)};return Object.freeze(e)}onQuery(e){if("function"!=typeof e)throw new Error("onQuery requires a callback of type function");const t=Rk(10);this.logger.info(`[${t}] received a valid onQuery request, forwarding to the controller.`);const n=this.controller.processProviderOnQuery({callback:e,id:this.id,commandId:t});return this.logger.info(`[${t}] the onQuery request was completed.`),n}onQueryCancel(e){if("function"!=typeof e)throw new Error("onQuery requires a callback of type function");const t=Rk(10);this.logger.info(`[${t}] received a valid onQueryCancel request, forwarding to the controller.`);const n=this.controller.processProviderOnQueryCancel({callback:e,id:this.id,commandId:t});return this.logger.info(`[${t}] the onQueryCancel request was completed.`),n}async unregister(){const e=Rk(10);this.logger.info(`[${e}] received a valid unregister request, forwarding to the controller.`),await this.controller.processProviderUnregister({id:this.id,commandId:e}),this.logger.info(`[${e}] the unregister request was completed.`)}}class M_{myData;controller;logger;identification;constructor(e,t,n,r){this.myData=e,this.controller=t,this.logger=n,this.identification=r}get id(){return this.identification.queryId}get search(){return this.myData.search}get providers(){return this.myData.providers}get types(){return this.myData.types}get providerLimits(){return this.myData.providerLimits}get myQueryData(){return Object.assign({},this.myData)}exposeFacade(){const e={id:this.id,search:this.search,providers:this.providers,types:this.types,providerLimits:this.providerLimits,sendResult:this.sendResult.bind(this),error:this.error.bind(this),done:this.done.bind(this)};return Object.freeze(e)}sendResult(e){C_.runWithException(e);const t=Rk(10);return this.logger.trace(`[${t}] Received a valid result, forwarding to the controller`),this.controller.processProviderQueryResult({identification:this.identification,result:e,commandId:t})}error(e){const t=Rk(10);u_.runWithException(e),this.logger.trace(`[${t}] Received a valid error, forwarding to the controller`),this.controller.processProviderQueryError({identification:this.identification,error:e,commandId:t}).catch((e=>this.logger.warn(`Error processing the error signal for this provider: ${this.id}, error: ${F_(e)}`)))}done(){const e=Rk(10);this.logger.trace(`[${e}] Received a valid done, forwarding to the controller`),this.controller.processProviderQueryDone({identification:this.identification,commandId:e}).catch((e=>this.logger.warn(`Error processing the done signal for this provider: ${this.identification.providerId}, error: ${F_(e)}`)))}}class q_{sequelizer;glueController;logger;clientInstanceId;queryId;isLegacy;queues={};constructor(e,t,n,r,i,s){this.sequelizer=e,this.glueController=t,this.logger=n,this.clientInstanceId=r,this.queryId=i,this.isLegacy=s}checkProviderSuspended(e){return!!this.queues[e]&&!!this.queues[e].suspended}syncSuspendProvider(e,t){const n=this.queues[e];n?n.suspended=!0:this.logger.warn(`[${t}] Cannot suspend provider: ${e}, because there is no provider queue. This happens when the provider queue was already cancelled or completed`)}configureProviders(e){e.forEach((e=>{this.queues[e.myProviderData.id]={providerData:e,pendingResults:[]}}))}queueResult(e){const{commandId:t,identification:n}=e;this.logger.trace(`[${t}] Queuing a new result from provider: ${n.providerId}`);const r=this.queues[n.providerId];if(!r)return void this.logger.warn(`[${t}] Cannot queue this result, because there is no provider queue. This happens when the provider queue was already cancelled or completed`);const i=this.isLegacy?this.translateLegacySearchItem(e.result):e.result;if(r.pendingResults.push(i),clearTimeout(r.flushTimer),10===r.pendingResults.length)return this.logger.trace(`[${t}] Reached the limit in the queue buffer, flushing to the client.`),void this.flushProviderQueue(n.providerId,t);this.logger.trace(`[${t}] The limit in the queue buffer is not reached yet, setting a flush timer.`),r.flushTimer=setTimeout((()=>{this.logger.trace(`[${t}] Reached the time limit in the queue buffer, flushing to the client.`),this.flushProviderQueue(n.providerId,t)}),100)}cancel(e){this.logger.trace(`[${e}] Cancelling queue ${this.queryId}.`),Object.values(this.queues).forEach((e=>clearTimeout(e.flushTimer))),this.queues={},this.logger.trace(`[${e}] Queue ${this.queryId} publisher cancelled.`)}async markProviderDone(e,t){this.logger.trace(`[${t}] Marking provider ${e} as done.`);const n=this.queues[e];n?(clearTimeout(n.flushTimer),await this.flushProviderQueue(e,t),delete this.queues[e],this.logger.trace(`[${t}] Provider ${e} marked as done.`)):this.logger.info(`[${t}] Cannot mark this queue as done, because there is no provider queue. This happens when the provider queue was already cancelled, completed or the provider sent an error`)}markProviderError(e){const t=this.queues[e.identification.providerId];t?this.glueController.sendClientErrorMessage(e.error,this.clientInstanceId,this.queryId,t.providerData.myProviderData).catch((t=>this.logger.warn(`[${e.commandId}] The client errored when handling error message for query: ${this.queryId} -> ${F_(t)}`))):this.logger.warn(`[${e.commandId}] Cannot mark this provider as errored, because there is no provider queue. This happens when the provider queue was already cancelled, completed or the provider sent and error`)}cleanPublisher(e){Object.values(this.queues).forEach((e=>clearTimeout(e.flushTimer))),this.queues={},this.glueController.sendClientQueueCompleted(this.clientInstanceId,this.queryId).catch((t=>this.logger.warn(`[${e}] The client errored when handling search end message for query: ${this.queryId} -> ${F_(t)}`)))}async flushProviderQueue(e,t){await this.sequelizer.enqueue((async()=>{const n=this.queues[e];if(!n)return void this.logger.warn(`[${t}] Cannot flush this queue, because there is no provider queue. This happens when the provider queue was already cancelled, completed or the provider sent and error`);if(!n.pendingResults.length)return void this.logger.info(`[${t}] This provider does not have any pending results to flush.`);const r={results:n.pendingResults,provider:n.providerData.myProviderData};n.pendingResults=[];try{await this.glueController.sendClientResultsBatch(r,this.clientInstanceId,this.queryId)}catch(e){this.logger.warn(`[${t}] The client errored when handling search results for query: ${this.queryId} -> ${F_(e)}`)}}))}translateLegacySearchItem(e){return{type:e.type.name,category:e.type.displayName,id:e.id,displayName:e.displayName,description:e.description,iconURL:e.iconURL,action:e.action}}}class B_{glueController;glue;flushSequelizer;constructor(e,t,n){this.glueController=e,this.glue=t,this.flushSequelizer=n}buildProviderModel(e,t){return new $_(e,t,this.glue.logger.subLogger(`search.provider.model.${e.name}`))}buildProviderQueryModel(e,t,n){return new M_(e,n,this.glue.logger.subLogger(`search.provider.${t.providerId}.query.${t.queryId}`),t)}buildPublisher(e,t,n){return new q_(this.flushSequelizer,this.glueController,this.glue.logger.subLogger(`search.results.publisher.${t}`),e,t,n)}buildClientQueryModel(e,t){return new j_(t,this.glue.logger.subLogger(`search.provider.model.${e}`),e)}}const L_=async(e,t)=>{const n=new class{glue;config;_glueController;_facade;_mainController;_providerController;_clientController;_asyncSequelizer;_flushSequelizer;_limitsTracker;_modelFactory;constructor(e,t){this.glue=e,this.config=t}get glueController(){return this._glueController||(this._glueController=new class{glue;constructor(e){this.glue=e}get myAppName(){return this.glue.interop.instance.applicationName}get myInteropId(){return this.glue.interop.instance.instance}async registerMainProviderMethod(e){this.checkMyMethodExists(__).exists||await this.glue.interop.register(__,e)}async registerMainClientMethod(e){this.checkMyMethodExists(P_).exists||await this.glue.interop.register(P_,e)}async clearMainProviderMethod(){await this.glue.interop.unregister(__)}async sendClientResultsBatch(e,t,n){const r={items:e.results,provider:e.provider,queryId:n,status:qk};await this.glue.interop.invoke(P_,r,{instance:t})}async sendClientQueueCompleted(e,t){const n={items:[],queryId:t,status:Mk};await this.glue.interop.invoke(P_,n,{instance:e})}async sendClientErrorMessage(e,t,n,r){const i={items:[],provider:r,errorMessage:e,queryId:n,status:Bk};await this.glue.interop.invoke(P_,i,{instance:t})}async sendQueryRequest(e,t){if(!t.length)return[];const n=t.map((e=>({instance:e.interopId}))),r={operation:Wk,apiVersion:"1",...e};return((await this.glue.interop.invoke(__,r,n)).all_return_values||[]).map((e=>({interopId:e.executed_by?.instance,queryId:e.returned.id})))}async sendQueryCancelRequest(e,t){const n={operation:Hk,id:e.id};await this.glue.interop.invoke(__,n,t)}async getAllProvidersInfo(){if(this.glue.interop.methods().every((e=>e.name!==__)))return[];const e={operation:Lk},t=await this.glue.interop.invoke(__,e,"all");return(t.all_return_values||[]).map((e=>{const n=void 0===e.returned.apiVersion?{supportedTypes:e.returned.supportedTypes,apiVersion:e.returned.apiVersion,providers:[{interopId:e.executed_by?.instance,id:e.executed_by?.instance,name:e.executed_by?.instance,appName:t.executed_by?.application,types:e.returned.supportedTypes.map((e=>({name:e})))}]}:e.returned;return{interopId:e.executed_by?.instance,info:n}}))}checkMyMethodExists(e){return{exists:this.glue.interop.methodsForInstance({instance:this.glue.interop.instance.instance}).some((t=>t.name===e))}}}(this.glue)),this._glueController}get main(){return this._mainController||(this._mainController=new T_(this.glue.logger.subLogger("search.main.controller"),this.glueController,this.clientController,this.providerController)),this._mainController}get clientController(){return this._clientController||(this._clientController=new k_(this.glue.logger.subLogger("search.client.controller"),this.glueController,this.modelFactory)),this._clientController}get providerController(){return this._providerController||(this._providerController=new D_(this.glue.logger.subLogger("search.provider.controller"),this.glueController,this.sequelizer,this.limitsTracker,this.modelFactory)),this._providerController}get facade(){return this._facade||(this._facade=new O_(this.main)),this._facade}get sequelizer(){return this._asyncSequelizer||(this._asyncSequelizer=new R_(10)),this._asyncSequelizer}get flushSequelizer(){return this._flushSequelizer||(this._flushSequelizer=new R_(10)),this._flushSequelizer}get limitsTracker(){return this._limitsTracker||(this._limitsTracker=new N_),this._limitsTracker}get modelFactory(){return this._modelFactory||(this._modelFactory=new B_(this.glueController,this.glue,this.flushSequelizer)),this._modelFactory}}(e,t);e.search=n.facade.exposeApi()};"undefined"!=typeof window&&(window.IOSearch=L_);class W_{controller;session;localStorage;config;platformConfig;constructor(e,t,n,r){this.controller=e,this.session=t,this.localStorage=n,this.config=r}async ready(){this.session.start(),this.checkSingleton(),this.processConfig(this.config),await this.controller.start(this.platformConfig)}getClientGlue(){return this.controller.getClientGlue()}getPlatformApi(){return this.controller.platformApi}checkSingleton(){const e=window.glue42core||window.iobrowser;if(e&&e.platformStarted)throw new Error("The Glue42 Core Platform has already been started for this application.")}processConfig(e){if(!e)throw new Error("Cannot start the IoConnect Browser Platform without a config object.");const t=vk.runWithException(e);this.addSearch(t),this.validatePlugins(t),this.platformConfig=Ok(Ls,t);const n=Ok(Ws,t.notifications||{}),r=this.session.getSystemSettings()||{systemInstanceId:Zm(),ctxTrackInstanceId:Zm()};this.session.setSystemSettings(r),this.localStorage.start(this.platformConfig.user);const i=this.localStorage.getNotificationsConfig()||n;this.localStorage.setNotificationsConfig(i),this.platformConfig.workspacesFrameCache="boolean"!=typeof t.workspaces?.frameCache||t.workspaces?.frameCache,this.transferPromiseObjects(t);const s={isPlatformFrame:!!t.workspaces?.isFrame,initAsEmptyFrame:!!t.workspaces?.initAsEmpty,workspacesFrameCache:this.platformConfig.workspacesFrameCache,platformStarted:!0,environment:Object.assign({},this.platformConfig.environment,{extension:void 0}),communicationId:r.systemInstanceId,workspaces:{frameCache:this.platformConfig.workspacesFrameCache,isPlatform:!!t.workspaces?.isFrame,initAsEmpty:!!t.workspaces?.initAsEmpty}};window.iobrowser=s}transferPromiseObjects(e){if(void 0!==e.serviceWorker?.registrationPromise&&(this.platformConfig.serviceWorker.registrationPromise=e.serviceWorker.registrationPromise),e.plugins&&e.plugins.definitions.length){e.plugins.definitions.forEach((e=>{const t=this.platformConfig.plugins?.definitions.find((t=>t.name===e.name));t&&(t.config=e.config)}))}}validatePlugins(e){if(!e.plugins?.definitions)return;const t=e.plugins.definitions.reduce(((e,t)=>{const n=typeof t.start,r=typeof t.stop,i=t.name;return("function"!==n||t.stop&&"function"!==r)&&e.push({name:i,startType:n,stopType:r}),e}),[]);if(t.length){const e=t.map((e=>`The start and stop functions for plugin ${e.name} were expected to be of type function, but was provided start: ${e.startType} and stop: ${e.stopType}`)).join("\n");throw new Error(e)}}addSearch(e){e.browser?e.browser.libraries?e.browser.libraries.push(L_):e.browser.libraries||(e.browser.libraries=[L_]):e.browser={libraries:[L_]}}}var H_={STRING:1,NUMBER:2,TIMESTAMP:3,OBJECT:4};function U_(e){return e.type===H_.TIMESTAMP?"timestamp":e.type===H_.NUMBER?"number":e.type===H_.STRING?"string":e.type===H_.OBJECT?"object":"unknown"}function G_(e){return e.constructor===Date?"timestamp":"number"==typeof e?"number":"string"==typeof e?"string":"object"==typeof e?"object":"string"}function V_(e){const t={},n=U_(e);if("object"===n){const n=Object.keys(e.value).reduce(((t,n)=>{const r=G_(e.value[n]);if("object"===r){const r=J_(e.value[n]);t[n]={type:"object",description:"",context:{},composite:r}}else t[n]={type:r,description:"",context:{}};return t}),{});t.composite=n}return t.name=K_(e.path.join("/")+"/"+e.name),t.type=n,t.description=e.description,t.context={},t}function J_(e){return Object.keys(e).reduce(((t,n)=>{const r=G_(e[n]);return t[n]="object"===r?{type:"object",description:"",context:{},composite:J_(e[n])}:{type:r,description:"",context:{}},t}),{})}function K_(e){return void 0!==e&&e.length>0&&"/"!==e[0]?"/"+e:e}function z_(e){return"timestamp"===U_(e)?Date.now():Q_(e.value)}function Q_(e){return"object"!=typeof e?e:Object.keys(e).reduce(((t,n)=>{const r=e[n];return"object"==typeof r&&r.constructor!==Date?t[n]=Q_(r):r.constructor===Date?t[n]=new Date(r).getTime():r.constructor===Boolean?t[n]=r.toString():t[n]=r,t}),{})}function X_(e){return e.reduce(((e,t)=>e.concat(Array.isArray(t)?X_(t):t)),[])}function Y_(e){const t=X_(e.root.getAggregateState()),n=t.sort(((e,t)=>e.state?t.state?t.state-e.state:-1:1))[0];const r=function(e){let t="";return e.forEach(((e,n,r)=>{const i=e.path.join(".");n===r.length-1?t+=i+"."+e.name+": "+e.description:t+=i+"."+e.name+": "+e.description+","})),t.length>100?t.slice(0,100)+"...":t}(t);return{description:r,value:n.state}}var Z_=(e,t,n)=>{if(null===e||"object"!=typeof e)throw new Error("Missing definition");if(null===t||"object"!=typeof t)throw new Error("Missing parent");if(null===n||"object"!=typeof n)throw new Error("Missing transport")};class eP{definition;system;transport;value;type;path=[];name;description;get repo(){return this.system?.repo}get id(){return`${this.system.path}/${name}`}constructor(e,t,n,r,i){this.definition=e,this.system=t,this.transport=n,this.value=r,this.type=i,Z_(e,t,n),this.path=t.path.slice(0),this.path.push(t.name),this.name=e.name,this.description=e.description,n.createMetric(this)}update(e){return this.value=e,this.transport.updateMetric(this)}}class tP extends eP{constructor(e,t,n,r){super(e,t,n,r,H_.NUMBER)}incrementBy(e){this.update(this.value+e)}increment(){this.incrementBy(1)}decrement(){this.incrementBy(-1)}decrementBy(e){this.incrementBy(-1*e)}}class nP extends eP{constructor(e,t,n,r){super(e,t,n,r,H_.OBJECT)}update(e){return this.mergeValues(e),this.transport.updateMetric(this)}mergeValues(e){return Object.keys(this.value).forEach((t=>{void 0!==e[t]&&(this.value[t]=e[t])}))}}class rP extends eP{constructor(e,t,n,r){super(e,t,n,r,H_.STRING)}}class iP extends eP{constructor(e,t,n,r){super(e,t,n,r,H_.TIMESTAMP)}now(){this.update(new Date)}}function sP(e,t,n,r,i){if(!t)throw new Error("Repository is required");if(!n)throw new Error("Transport is required");const s=n,o=e,a=i||"",c=t,l=r,u=function e(t){if(!t||!t.parent)return[];const n=e(t.parent);return n.push(t.name),n}(r);let h={};const d=(g="/",((p=u)&&p.length>0?p.join(g):"")+e);var p,g;const f=t.root,m=[],y=[];function w(e,t,n,r){let i={name:""};i="string"==typeof e?{name:e}:e;const s=y.filter((e=>e.name===i.name));if(s.length>0){const e=s[0];if(e.type!==t)throw new Error(`A metric named ${i.name} is already defined with different type.`);return void 0!==n&&e.update(n).catch((()=>{})),e}const o=r(i);return y.push(o),o}const v={get name(){return o},get description(){return a},get repo(){return c},get parent(){return l},path:u,id:d,root:f,get subSystems(){return m},get metrics(){return y},subSystem:function(e,t){if(!e||0===e.length)throw new Error("name is required");const n=m.filter((t=>t.name===e));if(n.length>0)return n[0];const r=sP(e,c,s,v,t);return m.push(r),r},getState:()=>h,setState:function(e,t){h={state:e,description:t},s.updateSystem(v,h)},stringMetric:function(e,t){return w(e,H_.STRING,t,(e=>new rP(e,v,s,t)))},timestampMetric:function(e,t){return w(e,H_.TIMESTAMP,t,(e=>new iP(e,v,s,t)))},objectMetric:function(e,t){return w(e,H_.OBJECT,t,(e=>new nP(e,v,s,t)))},numberMetric:function(e,t){return w(e,H_.NUMBER,t,(e=>new tP(e,v,s,t)))},getAggregateState:function(){const e=[];return Object.keys(h).length>0&&e.push({name:o,path:u,state:h.state,description:h.description}),m.forEach((t=>{const n=t.getAggregateState();n.length>0&&e.push(...n)})),e}};return s.createSystem(v),v}class oP{root;constructor(e,t){t.init(this),this.root=sP("",this,t),this.addSystemMetrics(this.root,e.clickStream||void 0===e.clickStream)}addSystemMetrics(e,t){if("undefined"!=typeof navigator&&e.stringMetric("UserAgent",navigator.userAgent),t&&"undefined"!=typeof document){const t=e.subSystem("ClickStream"),n=e=>{if(!e.target)return;const n=e.target,r=n?n.getAttribute("class")??"":"";t.objectMetric("LastBrowserEvent",{type:"click",timestamp:new Date,target:{className:r,id:n.id,type:"<"+n.tagName.toLowerCase()+">",href:n.href||""}})};t.objectMetric("Page",{title:document.title,page:window.location.href}),document.addEventListener?document.addEventListener("click",n):document.attachEvent("onclick",n)}e.stringMetric("StartTime",(new Date).toString());const n=e.stringMetric("StartURL",""),r=e.stringMetric("AppName","");if("undefined"!=typeof window){if(void 0!==window.location){const e=window.location.href;n.update(e)}void 0!==window.glue42gd&&r.update(window.glue42gd.appName)}}}class aP{init(e){}createSystem(e){return Promise.resolve()}updateSystem(e,t){return Promise.resolve()}createMetric(e){return Promise.resolve()}updateMetric(e){return Promise.resolve()}}class cP{api;lastCount=0;initialPublishTimeout=1e4;publishInterval=6e4;system;constructor(e,t,n){this.api=e,this.initialPublishTimeout=t??this.initialPublishTimeout,this.publishInterval=n??this.publishInterval,this.scheduleCollection(),this.system=this.api.subSystem("performance","Performance data published by the web application")}scheduleCollection(){setTimeout((()=>{this.collect(),setInterval((()=>{this.collect()}),this.publishInterval)}),this.initialPublishTimeout)}collect(){try{this.collectMemory(),this.collectEntries()}catch{}}collectMemory(){const e=window.performance.memory;this.system.stringMetric("memory",JSON.stringify({totalJSHeapSize:e.totalJSHeapSize,usedJSHeapSize:e.usedJSHeapSize}))}collectEntries(){const e=window.performance.getEntries();if(e.length<=this.lastCount)return;this.lastCount=e.length;const t=e.map((e=>e.toJSON()));this.system.stringMetric("entries",JSON.stringify(t))}}var lP=e=>{let t;t=e.connection&&"object"==typeof e.connection?function(e,t){if(!e||"object"!=typeof e)throw new Error("Connection is required parameter");let n,r;const i=e=>{s(e.root)},s=e=>{o(e),e.metrics.forEach((e=>{a(e)})),e.subSystems.forEach((e=>{s(e)}))},o=async e=>{if(void 0===e.parent)return;await n;const t={type:"define",metrics:[{name:K_(e.path.join("/")+"/"+e.name+"/State"),type:"object",composite:{Description:{type:"string",description:""},Value:{type:"number",description:""}},description:"System state",context:{}}]};r.send(t)},a=async e=>{const t=l(e);await n;const i={type:"define",metrics:[V_(t)]};r.send(i),void 0!==t.value&&c(t)},c=e=>{if(u()){const t=z_(e),n={type:"publish",values:[{name:K_(e.path.join("/")+"/"+e.name),value:t,timestamp:Date.now()}]};return r.sendFireAndForget(n)}return Promise.resolve()},l=e=>{const t={...e};return"object"==typeof e.value&&null!==e.value&&(t.value={...e.value}),t},u=()=>{try{return(t.canUpdateMetric??(()=>!0))()}catch{return!0}};return{init:s=>{let o;n=new Promise((e=>{o=e})),r=e.domain("metrics"),r.onJoined((e=>{!e&&o&&(o(),o=void 0);const t={type:"define",metrics:[{name:"/State",type:"object",composite:{Description:{type:"string",description:""},Value:{type:"number",description:""}},description:"System state",context:{}}]};r.send(t),e&&i(s)})),r.join({system:t.system,service:t.service,instance:t.instance})},createSystem:o,updateSystem:async(t,i)=>{await n;const s={type:"publish",values:[{name:K_(t.path.join("/")+"/"+t.name+"/State"),value:{Description:i.description,Value:i.state},timestamp:Date.now()}]};r.send(s);const o=Y_(t),a={type:"publish",peer_id:e.peerId,values:[{name:"/State",value:{Description:o.description,Value:o.value},timestamp:Date.now()}]};r.send(a)},createMetric:a,updateMetric:async e=>{const t=l(e);await n,c(t)}}}(e.connection,e):new aP;let n=new oP(e,t).root;e.disableAutoAppSystem||(n=n.subSystem("App"));const r=function(e){const t=e.subSystem("reporting"),n={name:"features"};let r;const i=(e,i,s)=>{if(void 0===e||""===e)throw new Error("name is mandatory");if(void 0===i||""===i)throw new Error("action is mandatory");if(void 0===s||""===s)throw new Error("payload is mandatory");r?r.update({name:e,action:i,payload:s}):r=t.objectMetric(n,{name:e,action:i,payload:s})};return e.featureMetric=i,e}(n);return function(e,t){if("undefined"==typeof window)return;const n=window?.glue42gd?.metrics?.pagePerformanceMetrics;n&&(t=n);t?.enabled&&new cP(e,t.initialPublishTimeout,t.publishInterval)}(r,e.pagePerformanceMetrics),r};var uP="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{};function hP(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function dP(e){if(e&&e.errorHandling&&"function"!=typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"==typeof e.errorHandling&&e.errorHandling,n={};function r(n,r){var i=n instanceof Error?n:new Error(n);if(t)t(i);else{var s='[ERROR] callback-registry: User callback for key "'+r+'" failed: '+i.stack;if(e)switch(e.errorHandling){case"log":return console.error(s);case"silent":return;case"throw":throw new Error(s)}console.error(s)}}return{add:function(e,t,i){var s=n[e];return s||(s=[],n[e]=s),s.push(t),i&&setTimeout((function(){i.forEach((function(i){var s;if(null===(s=n[e])||void 0===s?void 0:s.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(t){r(t,e)}}))}),0),function(){var r=n[e];r&&(0===(r=r.reduce((function(e,n,r){return n===t&&e.length===r||e.push(n),e}),[])).length?delete n[e]:n[e]=r)}},execute:function(e){for(var t=[],i=1;i{this.messageHandler(t)})).then((e=>{this.client=e}))}get isObjectBasedTransport(){return!0}sendObject(e){return this.client?(this.client.send(e),Promise.resolve(void 0)):Promise.reject("not connected")}send(e){return Promise.reject("not supported")}onMessage(e){return this.registry.add("onMessage",e)}onConnectedChanged(e){return e(!0),()=>{}}close(){return Promise.resolve()}open(){return Promise.resolve()}name(){return"in-memory"}reconnect(){return Promise.resolve()}messageHandler(e){this.registry.execute("onMessage",e)}}class fP{logger;worker;registry=pP();constructor(e,t){this.logger=t,this.worker=new SharedWorker(e),this.worker.port.onmessage=e=>{this.messageHandler(e.data)}}get isObjectBasedTransport(){return!0}sendObject(e){return this.worker.port.postMessage(e),Promise.resolve()}send(e){return Promise.reject("not supported")}onMessage(e){return this.registry.add("onMessage",e)}onConnectedChanged(e){return e(!0),()=>{}}close(){return Promise.resolve()}open(){return Promise.resolve()}name(){return"shared-worker"}reconnect(){return Promise.resolve()}messageHandler(e){this.registry.execute("onMessage",e)}}class mP{static isNode(){if(void 0!==mP._isNode)return mP._isNode;if("undefined"!=typeof window)return mP._isNode=!1,!1;try{mP._isNode="[object process]"===Object.prototype.toString.call(e.process)}catch(e){mP._isNode=!1}return mP._isNode}static _isNode}class yP{static delay(e){return new Promise((t=>setTimeout(t,e)))}resolve;reject;promise;rejected=!1;resolved=!1;get ended(){return this.rejected||this.resolved}constructor(){this.promise=new Promise(((e,t)=>{this.resolve=t=>{this.resolved=!0,e(t)},this.reject=e=>{this.rejected=!0,t(e)}}))}}const wP={};function vP(e){const t=wP[e];if(t)return t;const n=[];function r(){return(new Date).getTime()}const i=r();let s,o;function a(e,t){const i=t??r();let s=0;n.length>0&&(s=i-n[n.length-1].time),n.push({name:e,time:i,diff:s})}a("start",i);const c={get startTime(){return i},get endTime(){return s},get period(){return o},stop:function(){return s=r(),a("end",s),o=s-i,o},mark:a,marks:n};return wP[e]=c,c}const bP=mP.isNode()?require("ws"):window.WebSocket;class SP{ws;logger;settings;startupTimer=vP("connection");_running=!0;_registry=pP();wsRequests=[];constructor(e,t){if(this.settings=e,this.logger=t,!this.settings.ws)throw new Error("ws is missing")}onMessage(e){return this._registry.add("onMessage",e)}send(e,t){return new Promise(((t,n)=>{this.waitForSocketConnection((()=>{try{this.ws?.send(e),t()}catch(e){n(e)}}),n)}))}open(){return this.logger.info("opening ws..."),this._running=!0,new Promise(((e,t)=>{this.waitForSocketConnection(e,t)}))}close(){return this._running=!1,this.ws&&this.ws.close(),Promise.resolve()}onConnectedChanged(e){return this._registry.add("onConnectedChanged",e)}name(){return this.settings.ws}reconnect(){this.ws?.close();const e=new yP;return this.waitForSocketConnection((()=>{e.resolve()})),e.promise}waitForSocketConnection(e,t){t=t??(()=>{}),this._running?1!==this.ws?.readyState?(this.wsRequests.push({callback:e,failed:t}),this.wsRequests.length>1||this.openSocket()):e():t(`wait for socket on ${this.settings.ws} failed - socket closed by user`)}async openSocket(e,t){if(this.logger.info(`opening ws to ${this.settings.ws}, retryInterval: ${e}, retriesLeft: ${t}...`),this.startupTimer.mark("opening-socket"),void 0===e&&(e=this.settings.reconnectInterval),void 0===t&&(t=this.settings.reconnectAttempts),void 0!==t){if(0===t)return void this.notifyForSocketState(`wait for socket on ${this.settings.ws} failed - no more retries left`);this.logger.debug(`will retry ${t} more times (every ${e} ms)`)}try{await this.initiateSocket(),this.startupTimer.mark("socket-initiated"),this.notifyForSocketState()}catch{setTimeout((()=>{const n=void 0===t?void 0:t-1;this.openSocket(e,n)}),e)}}initiateSocket(){const e=new yP;return this.logger.debug(`initiating ws to ${this.settings.ws}...`),this.ws=new bP(this.settings.ws??""),this.ws.onerror=t=>{let n="";try{n=JSON.stringify(t)}catch(e){const r=new WeakSet,i=(e,t)=>{if("object"==typeof t&&null!==t){if(r.has(t))return;r.add(t)}return t};n=JSON.stringify(t,i)}this.logger.info(`ws error - reason: ${n}`),e.reject("error"),this.notifyStatusChanged(!1,n)},this.ws.onclose=t=>{this.logger.info(`ws closed - code: ${t?.code} reason: ${t?.reason}`),e.reject("closed"),this.notifyStatusChanged(!1)},this.ws.onopen=()=>{this.startupTimer.mark("ws-opened"),this.logger.info(`ws opened ${this.settings.identity?.application}`),e.resolve(),this.notifyStatusChanged(!0)},this.ws.onmessage=e=>{this._registry.execute("onMessage",e.data)},e.promise}notifyForSocketState(e){this.wsRequests.forEach((t=>{e?t.failed&&t.failed(e):t.callback()})),this.wsRequests=[]}notifyStatusChanged(e,t){this._registry.execute("onConnectedChanged",e,t)}}class CP{specs;specsNames=[];messages={};isDone;subs={};subsRefCount={};connection;constructor(e){this.specs={};for(const t of e)this.specs[t.name]=t,this.specsNames.push(t.name)}init(e){this.connection=e;for(const t of this.specsNames)for(const n of this.specs[t].types){let t=this.subsRefCount[n];if(t||(t=0),t+=1,this.subsRefCount[n]=t,t>1)continue;const r=e.on(n,(e=>this.processMessage(n,e)));this.subs[n]=r}}processMessage(e,t){if(!this.isDone&&t)for(const n of this.specsNames)if(-1!==this.specs[n].types.indexOf(e)){const e=this.messages[n]||[];this.messages[n]=e,e.push(t)}}drain(e,t){t&&(this.messages[e]||[]).forEach(t),delete this.messages[e];for(const t of this.specs[e].types)this.subsRefCount[t]-=1,this.subsRefCount[t]<=0&&(this.connection?.off(this.subs[t]),delete this.subs[t],delete this.subsRefCount[t]);delete this.specs[e],this.specs.length||(this.isDone=!0)}}let xP=(e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e));for(;e--;)t+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&n[e]];return t};const IP=(e,t,n)=>new Promise(((r,i)=>{const s=setTimeout((()=>{i(n||`Promise timeout hit: ${t}`)}),t);new Promise(e).then((e=>{clearTimeout(s),r(e)})).catch((e=>{clearTimeout(s),i(e)}))}));class EP{settings;logger;identity;isPreferredActivated;_communicationId;publicWindowId;selfAssignedWindowId;iAmConnected=!1;parentReady=!1;rejected=!1;parentPingResolve;parentPingInterval;connectionResolve;extConnectionResolve;extConnectionReject;connectionReject;port;myClientId;children=[];extContentAvailable=!1;extContentConnecting=!1;extContentConnected=!1;parentWindowId;parentInExtMode=!1;webNamespace="g42_core_web";parent;parentType;parentPingTimeout=5e3;connectionRequestTimeout=7e3;defaultTargetString="*";registry=pP();messages={connectionAccepted:{name:"connectionAccepted",handle:this.handleConnectionAccepted.bind(this)},connectionRejected:{name:"connectionRejected",handle:this.handleConnectionRejected.bind(this)},connectionRequest:{name:"connectionRequest",handle:this.handleConnectionRequest.bind(this)},parentReady:{name:"parentReady",handle:()=>{}},parentPing:{name:"parentPing",handle:this.handleParentPing.bind(this)},platformPing:{name:"platformPing",handle:this.handlePlatformPing.bind(this)},platformReady:{name:"platformReady",handle:this.handlePlatformReady.bind(this)},clientUnload:{name:"clientUnload",handle:this.handleClientUnload.bind(this)},manualUnload:{name:"manualUnload",handle:this.handleManualUnload.bind(this)},extConnectionResponse:{name:"extConnectionResponse",handle:this.handleExtConnectionResponse.bind(this)},extSetupRequest:{name:"extSetupRequest",handle:this.handleExtSetupRequest.bind(this)},gatewayDisconnect:{name:"gatewayDisconnect",handle:this.handleGatewayDisconnect.bind(this)},gatewayInternalConnect:{name:"gatewayInternalConnect",handle:this.handleGatewayInternalConnect.bind(this)}};constructor(e,t,n){this.settings=e,this.logger=t,this.identity=n,this.extContentAvailable=!!window.glue42ext,this.setUpMessageListener(),this.setUpUnload(),this.setupPlatformUnloadListener(),this.parentType=window.name.includes("#wsp")?"workspace":void 0}manualSetReadyState(){this.iAmConnected=!0,this.parentReady=!0}get transportWindowId(){return this.publicWindowId}get communicationId(){return this._communicationId}async sendObject(e){if(this.extContentConnected)return window.postMessage({glue42ExtOut:e},this.defaultTargetString);if(!this.port)throw new Error("Cannot send message, because the port was not opened yet");this.port.postMessage(e)}get isObjectBasedTransport(){return!0}onMessage(e){return this.registry.add("onMessage",e)}send(){return Promise.reject("not supported")}onConnectedChanged(e){return this.registry.add("onConnectedChanged",e)}async open(){this.logger.debug("opening a connection to the web platform gateway."),await this.connect(),this.notifyStatusChanged(!0)}close(){const e={glue42core:{type:this.messages.gatewayDisconnect.name,data:{clientId:this.myClientId,ownWindowId:this.identity?.windowId}}};return this.port?.postMessage(e),this.parentReady=!1,this.notifyStatusChanged(!1,"manual reconnection"),Promise.resolve()}name(){return"web-platform"}async reconnect(){return await this.close(),Promise.resolve()}initiateInternalConnection(){return new Promise(((e,t)=>{this.logger.debug("opening an internal web platform connection"),this.port=this.settings.port,this.iAmConnected?this.logger.warn("cannot open a new connection, because this client is currently connected"):(this.port.onmessage=n=>{if(this.iAmConnected&&!n.data?.glue42core)return void this.registry.execute("onMessage",n.data);const r=n.data?.glue42core;r&&(r.type===this.messages.gatewayInternalConnect.name&&r.success&&(this.publicWindowId=this.settings.windowId,this.identity&&this.publicWindowId&&(this.identity.windowId=this.publicWindowId,this.identity.instance=this.publicWindowId),e()),r.type===this.messages.gatewayInternalConnect.name&&r.error&&t(r.error))},this.port.postMessage({glue42core:{type:this.messages.gatewayInternalConnect.name}}))}))}initiateRemoteConnection(e){return IP(((t,n)=>{this.connectionResolve=t,this.connectionReject=n,this.myClientId=this.myClientId??xP(10);const r=this.getMyWindowId()||xP(10),i={glue42core:{type:this.messages.connectionRequest.name,clientId:this.myClientId,clientType:"child",bridgeInstanceId:r,selfAssignedWindowId:this.selfAssignedWindowId}};if(this.logger.debug("sending connection request"),this.extContentConnecting)return i.glue42core.clientType="child",i.glue42core.bridgeInstanceId=this.myClientId,i.glue42core.parentWindowId=this.parentWindowId,window.postMessage(i,this.defaultTargetString);if(!e)throw new Error("Cannot send a connection request, because no glue target was specified!");e.postMessage(i,this.defaultTargetString)}),this.connectionRequestTimeout,"The connection to the target glue window timed out")}async isParentCheckSuccess(e){try{return await e,{success:!0}}catch(e){return{success:!1}}}setUpMessageListener(){this.settings.port?this.logger.debug("skipping generic message listener, because this is an internal client"):window.addEventListener("message",(e=>{const t=e.data?.glue42core;if(!t||this.rejected)return;const n=this.settings.allowedOrigins||[];if(n.length&&!n.includes(e.origin))return void this.logger.warn(`received a message from an origin which is not in the allowed list: ${e.origin}`);if(!this.checkMessageTypeValid(t.type))return void this.logger.error(`cannot handle the incoming glue42 core message, because the type is invalid: ${t.type}`);const r=t.type;this.logger.debug(`received valid glue42core message of type: ${r}`),this.messages[r].handle(e)}))}setUpUnload(){this.settings.port?this.logger.debug("skipping unload event listener, because this is an internal client"):window.addEventListener("beforeunload",(()=>{if(this.extContentConnected)return;const e={glue42core:{type:this.messages.clientUnload.name,data:{clientId:this.myClientId,ownWindowId:this.identity?.windowId}}};this.parent&&this.parent.postMessage(e,this.defaultTargetString),this.port?.postMessage(e)}))}handlePlatformReady(e){this.logger.debug("the web platform gave the ready signal"),this.parentReady=!0,this.parentPingResolve&&(this.parentPingResolve(),delete this.parentPingResolve),this.parentPingInterval&&(clearInterval(this.parentPingInterval),delete this.parentPingInterval),this.parent=e.source,this.parentType=window.name.includes("#wsp")?"workspace":"window"}handleConnectionAccepted(e){const t=e.data?.glue42core;return this.myClientId===t.clientId?this.handleAcceptanceOfMyRequest(t):this.handleAcceptanceOfGrandChildRequest(t,e)}handleAcceptanceOfMyRequest(e){if(this.logger.debug("handling a connection accepted signal targeted at me."),this.isPreferredActivated=e.isPreferredActivated,this.extContentConnecting)return this.processExtContentConnection(e);if(e.port){if(this.publicWindowId=this.getMyWindowId(),this.identity&&(this.identity.windowId=this.publicWindowId,this.identity.instance=this.identity.instance?this.identity.instance:this.publicWindowId||xP(10)),this.identity&&e.appName&&(this.identity.application=e.appName,this.identity.applicationName=e.appName),this._communicationId=e.communicationId,this.port=e.port,this.port.onmessage=e=>this.registry.execute("onMessage",e.data),this.connectionResolve)return this.logger.debug("my connection is set up, calling the connection resolve."),this.connectionResolve(),void delete this.connectionResolve;this.logger.error("unable to call the connection resolve, because no connection promise was found")}else this.logger.error("cannot set up my connection, because I was not provided with a port")}processExtContentConnection(e){if(this.logger.debug("handling a connection accepted signal targeted at me for extension content connection."),this.extContentConnecting=!1,this.extContentConnected=!0,this.publicWindowId=this.parentWindowId||this.myClientId,this.extContentConnecting&&this.identity&&(this.identity.windowId=this.publicWindowId),this.identity&&e.appName&&(this.identity.application=e.appName,this.identity.applicationName=e.appName),window.addEventListener("message",(e=>{const t=e.data?.glue42ExtInc;if(!t)return;const n=this.settings.allowedOrigins||[];!n.length||n.includes(e.origin)?this.registry.execute("onMessage",t):this.logger.warn(`received a message from an origin which is not in the allowed list: ${e.origin}`)})),this.connectionResolve)return this.logger.debug("my connection is set up, calling the connection resolve."),this.connectionResolve(),void delete this.connectionResolve}handleAcceptanceOfGrandChildRequest(e,t){if(this.extContentConnecting||this.extContentConnected)return void this.logger.debug("cannot process acceptance of a grandchild, because I am connected to a content script");this.logger.debug(`handling a connection accepted signal targeted at a grandchild: ${e.clientId}`);const n=this.children.find((t=>t.grandChildId===e.clientId));n?(n.connected=!0,this.logger.debug(`the grandchild connection for ${e.clientId} is set up, forwarding the success message and the gateway port`),e.parentWindowId=this.publicWindowId,n.source.postMessage(t.data,n.origin,[e.port])):this.logger.error(`cannot handle connection accepted for grandchild: ${e.clientId}, because there is no grandchild with this id`)}handleConnectionRejected(){this.logger.debug("handling a connection rejection. Most likely the reason is that this window was not created by a glue API call"),this.connectionReject&&(this.connectionReject("The platform connection was rejected. Most likely because this window was not created by a glue API call"),delete this.connectionReject)}handleConnectionRequest(e){if(this.extContentConnecting)return void this.logger.debug("This connection request event is targeted at the extension content");const t=e.source,n=e.data.glue42core;return n.clientType&&"grandChild"===n.clientType?n.clientId?this.parent?(this.logger.debug(`handling a connection request for a grandchild: ${n.clientId}`),this.children.push({grandChildId:n.clientId,source:t,connected:!1,origin:e.origin}),this.logger.debug(`grandchild: ${n.clientId} is prepared, forwarding connection request to the platform`),void this.parent.postMessage(e.data,this.defaultTargetString)):this.rejectConnectionRequest(t,e.origin,"Cannot forward the connection request, because no direct connection to the platform was found"):this.rejectConnectionRequest(t,e.origin,"rejecting a connection request, because the source did not provide a valid id"):this.rejectConnectionRequest(t,e.origin,"rejecting a connection request, because the source was not opened by a glue API call")}handleParentPing(e){if(!this.parentReady)return void this.logger.debug("my parent is not ready, I am ignoring the parent ping");if(!this.iAmConnected)return void this.logger.debug("i am not fully connected yet, I am ignoring the parent ping");const t={glue42core:{type:this.messages.parentReady.name}};this.extContentConnected&&(t.glue42core.extMode={windowId:this.myClientId});const n=e.source;this.logger.debug("responding to a parent ping with a ready message"),n.postMessage(t,e.origin)}setupPlatformUnloadListener(){this.onMessage((e=>{"platformUnload"===e.type&&(this.logger.debug("detected a web platform unload"),this.parentReady=!1,this.notifyStatusChanged(!1,"Gateway unloaded"))}))}handleManualUnload(){const e={glue42core:{type:this.messages.clientUnload.name,data:{clientId:this.myClientId,ownWindowId:this.identity?.windowId}}};if(this.extContentConnected)return window.postMessage({glue42ExtOut:e},this.defaultTargetString);this.port?.postMessage(e)}handleClientUnload(e){const t=e.data.glue42core,n=t?.data.clientId;if(!n)return void this.logger.warn("cannot process grand child unload, because the provided id was not valid");this.children.find((e=>e.grandChildId===n))?(this.logger.debug(`handling grandchild unload for id: ${n}`),this.children=this.children.filter((e=>e.grandChildId!==n))):this.logger.warn("cannot process grand child unload, because this client is unaware of this grandchild")}handlePlatformPing(){}notifyStatusChanged(e,t){this.iAmConnected=e,this.registry.execute("onConnectedChanged",e,t)}checkMessageTypeValid(e){return"string"==typeof e&&!!this.messages[e]}rejectConnectionRequest(e,t,n){this.rejected=!0,this.logger.error(n);const r={glue42core:{type:this.messages.connectionRejected.name}};e.postMessage(r,t)}requestConnectionPermissionFromExt(){return this.waitForContentScript().then((()=>IP(((e,t)=>{this.extConnectionResolve=e,this.extConnectionReject=t;this.logger.debug("permission request to the extension content script was sent"),window.postMessage({glue42core:{type:"extSetupRequest"}},this.defaultTargetString)}),this.parentPingTimeout,"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out")))}handleExtConnectionResponse(e){const t=e.data?.glue42core;if(!t.approved)return this.extConnectionReject?this.extConnectionReject("Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection was rejected"):void 0;this.extConnectionResolve&&(this.extConnectionResolve(),delete this.extConnectionResolve),this.extContentConnecting=!0,this.parentType="extension",this.logger.debug("The extension connection was approved, proceeding.")}handleExtSetupRequest(){}handleGatewayDisconnect(){}handleGatewayInternalConnect(){}waitForContentScript(){return!!window.glue42ext?.content?Promise.resolve():IP((e=>{window.addEventListener("Glue42EXTReady",(()=>{e()}))}),this.connectionRequestTimeout,"The content script was available, but was never heard to be ready")}async connect(){if(this.settings.port)return await this.initiateInternalConnection(),void this.logger.debug("internal web platform connection completed");this.logger.debug("opening a client web platform connection"),await this.findParent(),await this.initiateRemoteConnection(this.parent),this.logger.debug("the client is connected")}async findParent(){const e="Cannot initiate glue, because this window was not opened or created by a glue client",t=this.getPossibleParentsInWindow(window),n=this.getPossibleParentsOutsideWindow(window.top?.opener,window.top),r=new Set([...t,...n]);if(!r.size&&!this.extContentAvailable)throw new Error(e);if(!r.size&&this.extContentAvailable)return void await this.requestConnectionPermissionFromExt();if((await this.isParentCheckSuccess(this.confirmParent(Array.from(r)))).success)this.logger.debug("The default parent was found!");else{if(!this.extContentAvailable)throw new Error(e);await this.requestConnectionPermissionFromExt()}}getPossibleParentsInWindow(e){return e&&e!==e.top?[e.parent,...this.getPossibleParentsInWindow(e.parent)]:[]}getPossibleParentsOutsideWindow(e,t){return e&&t&&e!==t?[e,...this.getPossibleParentsInWindow(e),...this.getPossibleParentsOutsideWindow(e.opener,e)]:[]}confirmParent(e){const t=IP((t=>{this.parentPingResolve=t;const n={glue42core:{type:this.messages.platformPing.name}};this.parentPingInterval=setInterval((()=>{e.forEach((e=>{e.postMessage(n,this.defaultTargetString)}))}),1e3)}),this.parentPingTimeout,"Cannot initiate glue, because this window was not opened or created by a glue client");return t.catch((()=>{this.parentPingInterval&&(clearInterval(this.parentPingInterval),delete this.parentPingInterval)})),t}getMyWindowId(){return"workspace"===this.parentType?window.name.substring(0,window.name.indexOf("#wsp")):window===window.top?window.name?.includes("g42")?window.name:(this.selfAssignedWindowId=this.selfAssignedWindowId||`g42-${xP(10)}`,this.selfAssignedWindowId):void 0}}function AP(e,t,n,r,i){null==e&&(e="global"),r=r??["success"],i=i??["error"];let s,o="global"===e,a=!1,c=!1;const l=pP();t.disconnected((function(){c=!1,n.debug("connection is down"),o=!1,a=!0,l.execute("onLeft",{disconnected:!0})})),t.loggedIn((function(){c=!0,a&&(n.debug("connection is now up - trying to reconnect..."),h(s))})),t.on("success",(e=>g(e))),t.on("error",(e=>p(e))),t.on("result",(e=>g(e))),r&&r.forEach((e=>{t.on(e,(e=>g(e)))})),i&&i.forEach((e=>{t.on(e,(e=>p(e)))}));const u={};function h(t){return s=t,new Promise(((r,i)=>{if(o)return void r({});let s;if("global"===e)s=c?Promise.resolve({}):Promise.reject("not connected to gateway");else{n.debug(`joining domain ${e}`);s=y({type:"join",destination:e,domain:"global",options:t})}s.then((()=>{!function(){n.debug("did join "+e),o=!0;const t=a;a=!1,l.execute("onJoined",t)}(),r({})})).catch((t=>{n.debug("error joining "+e+" domain: "+JSON.stringify(t)),i(t)}))}))}function d(e){return o&&e(!1),l.add("onJoined",e)}function p(t){if(e!==t.domain)return;const n=t.request_id;if(!n)return;const r=u[n];r&&r.error(t)}function g(t){if(t.domain!==e)return;const n=t.request_id;if(!n)return;const r=u[n];r&&r.success(t)}function f(){return xP(10)}let m=[];function y(r,i,s){if(r.type&&-1===["hello","join"].indexOf(r.type)&&!o){console.warn(`trying to send a message (${r.domain} ${r.type}) but not connected, will queue`);const e=new yP;if(m.push({msg:r,tag:i,options:s,pw:e}),1===m.length){const e=d((()=>{n.info(`joined - will now send queued messages (${m.length} -> [${m.map((e=>e.msg.type))}])`),m.forEach((e=>{y(e.msg,e.tag,e.options).then((t=>e.pw.resolve(t))).catch((t=>e.pw.reject(t)))})),m=[],e()}))}return e.promise}s=s??{},r.request_id=r.request_id??f(),r.domain=r.domain??e,s.skipPeerId||(r.peer_id=t.peerId);const a=r.request_id;return new Promise(((e,o)=>{u[a]={success:t=>{delete u[a],t._tag=i,e(t)},error:e=>{n.warn(`Gateway error - ${JSON.stringify(e)}`),delete u[a],e._tag=i,o(e)}},t.send(r,s).catch((e=>{u[a].error({err:e})}))}))}return{join:h,leave:function(){return"global"===e?Promise.resolve():(n.debug("stopping session "+e+"..."),a=!1,y({type:"leave",destination:e,domain:"global"}).then((()=>{o=!1,l.execute("onLeft")})).catch((()=>{o=!1,l.execute("onLeft")})))},onJoined:d,onLeft:function(e){return o||e(),l.add("onLeft",e)},send:y,sendFireAndForget:function(n){return n.request_id=n.request_id?n.request_id:f(),n.domain=n.domain??e,n.peer_id=t.peerId,t.send(n)},on:(r,i)=>{t.on(r,(t=>{if(t.domain===e)try{i(t)}catch(e){n.error(`Callback failed: ${e} \n ${e.stack} \n msg was: ${JSON.stringify(t)}`,e)}}))},loggedIn:e=>t.loggedIn(e),connected:e=>t.connected(e),disconnected:e=>t.disconnected(e),get peerId(){return t.peerId},get domain(){return e}}}class kP{settings;logger;protocolVersion=3;peerId;token;info;resolvedIdentity;availableDomains;gatewayToken;replayer;messageHandlers={};ids=1;registry=pP();_connected=!1;isTrace=!1;transport;_defaultTransport;_defaultAuth;_targetTransport;_targetAuth;_swapTransport=!1;_switchInProgress=!1;_transportSubscriptions=[];datePrefix="#T42_DATE#";datePrefixLen=this.datePrefix.length;dateMinLen=this.datePrefixLen+1;datePrefixFirstChar=this.datePrefix[0];_sequelizer=new class{minSequenceInterval;queue=[];isExecutingQueue=!1;constructor(e=0){this.minSequenceInterval=e}enqueue(e){return new Promise(((t,n)=>{this.queue.push({action:e,resolve:t,reject:n}),this.executeQueue()}))}async executeQueue(){if(!this.isExecutingQueue){for(this.isExecutingQueue=!0;this.queue.length;){const e=this.queue.shift();if(!e)return void(this.isExecutingQueue=!1);try{const t=await e.action();e.resolve(t)}catch(t){e.reject(t)}await this.intervalBreak()}this.isExecutingQueue=!1}}intervalBreak(){return new Promise((e=>setTimeout(e,this.minSequenceInterval)))}};_isLoggedIn=!1;shouldTryLogin=!0;pingTimer;sessions=[];globalDomain;initialLogin=!0;initialLoginAttempts=3;loginConfig;constructor(e,t){if(this.settings=e,this.logger=t,(e=e||{}).reconnectAttempts=e.reconnectAttempts??10,e.reconnectInterval=e.reconnectInterval??1e3,e.inproc)this.transport=new gP(e.inproc,t.subLogger("inMemory"));else if(e.sharedWorker)this.transport=new fP(e.sharedWorker,t.subLogger("shared-worker"));else if(e.webPlatform)this.transport=new EP(e.webPlatform,t.subLogger("web-platform"),e.identity);else{if(void 0===e.ws)throw new Error("No connection information specified");this.transport=new SP(e,t.subLogger("ws"))}this.isTrace=t.canPublish("trace"),t.debug(`starting with ${this.transport.name()} transport`);const n=this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)),r=this.transport.onMessage(this.handleTransportMessage.bind(this));this._transportSubscriptions.push(n),this._transportSubscriptions.push(r),this._defaultTransport=this.transport,this.ping()}async switchTransport(e){return this._sequelizer.enqueue((async()=>{if(!e||"object"!=typeof e)throw new Error("Cannot switch transports, because the settings are missing or invalid.");if(void 0===e.type)throw new Error("Cannot switch the transport, because the type is not defined");this.logger.trace(`Starting transport switch with settings: ${JSON.stringify(e)}`);const t="secondary"===e.type?this.getNewSecondaryTransport(e):this._defaultTransport;this._targetTransport=t,this._targetAuth="secondary"===e.type?this.getNewSecondaryAuth(e):this._defaultAuth;const n=this.verifyConnection();this._swapTransport=!0,this._switchInProgress=!0,this.logger.trace("The new transport has been set, closing the current transport"),await this.transport.close();try{await n;const e=this.transport===t;return this.logger.info(`The reconnection after the switch was completed. Was the switch a success: ${e}`),this._switchInProgress=!1,{success:e}}catch(e){return this.logger.info("The reconnection after the switch timed out, reverting back to the default transport."),this.switchTransport({type:"default"}),this._switchInProgress=!1,{success:!1}}}))}onLibReAnnounced(e){return this.registry.add("libReAnnounced",e)}setLibReAnnounced(e){this.registry.execute("libReAnnounced",e)}send(e,t){if(this.transport.sendObject&&this.transport.isObjectBasedTransport){const n=this.createObjectMessage(e);return this.isTrace&&this.logger.trace(`>> ${JSON.stringify(n)}`),this.transport.sendObject(n,t)}{const n=this.createStringMessage(e);return this.isTrace&&this.logger.trace(`>> ${n}`),this.transport.send(n,t)}}on(e,t){e=e.toLowerCase(),void 0===this.messageHandlers[e]&&(this.messageHandlers[e]={});const n=this.ids++;return this.messageHandlers[e][n]=t,{type:e,id:n}}off(e){delete this.messageHandlers[e.type.toLowerCase()][e.id]}get isConnected(){return this._isLoggedIn}connected(e){return this.loggedIn((()=>{const t=this.transport.name();e(t)}))}disconnected(e){return this.registry.add("disconnected",e)}async login(e,t){if(this._defaultAuth||(this._defaultAuth=e),this._swapTransport){this.logger.trace("Detected a transport swap, swapping transports");e=this.transportSwap()??e}this.logger.trace(`Starting login for transport: ${this.transport.name()} and auth ${JSON.stringify(e)}`);try{await this.transport.open(),this.logger.trace(`Transport: ${this.transport.name()} opened, logging in`),vP("connection").mark("transport-opened");const n=await this.loginCore(e,t);return this.logger.trace(`Logged in with identity: ${JSON.stringify(n)}`),vP("connection").mark("protocol-logged-in"),n}catch(e){throw this._switchInProgress&&(this.logger.trace("An error while logging in after a transport swap, preparing a default swap."),this.prepareDefaultSwap()),new Error(e)}}async logout(){await this.logoutCore(),await this.transport.close()}loggedIn(e){return this._isLoggedIn&&e(),this.registry.add("onLoggedIn",e)}domain(e,t,n){let r=this.sessions.find((t=>t.domain===e));return r||(r=AP(e,this,this.logger.subLogger(`domain=${e}`),t,n),this.sessions.push(r)),r}authToken(){return this.globalDomain?this.globalDomain.send({domain:"global",type:"create-token"}).then((e=>e.token)):Promise.reject(new Error("no global domain session"))}reconnect(){return this.transport.reconnect()}setLoggedIn(e){this._isLoggedIn=e,this._isLoggedIn&&this.registry.execute("onLoggedIn")}distributeMessage(e,t){const n=this.messageHandlers[t.toLowerCase()];void 0!==n&&Object.keys(n).forEach((t=>{const r=n[t];if(void 0!==r)try{r(e)}catch(e){try{this.logger.error(`Message handler failed with ${e.stack}`,e)}catch(t){console.log("Message handler failed",e)}}}))}handleConnectionChanged(e){this._connected!==e&&(this._connected=e,e?(this.settings?.replaySpecs?.length&&(this.replayer=new CP(this.settings.replaySpecs),this.replayer.init(this)),this.registry.execute("connected")):(this.handleDisconnected(),this.registry.execute("disconnected")))}handleDisconnected(){this.setLoggedIn(!1);if(this.shouldTryLogin&&this.initialLogin){if(this.initialLoginAttempts<=0)return;this.initialLoginAttempts--}if(this.logger.debug("disconnected - will try new login?"+this.shouldTryLogin),this.shouldTryLogin){if(!this.loginConfig)throw new Error("no login info");this.login(this.loginConfig,!0).catch((()=>{setTimeout(this.handleDisconnected.bind(this),this.settings.reconnectInterval||1e3)}))}}handleTransportMessage(e){let t;t="string"==typeof e?this.processStringMessage(e):this.processObjectMessage(e),this.isTrace&&this.logger.trace(`<< ${JSON.stringify(t)}`),this.distributeMessage(t.msg,t.msgType)}verifyConnection(){return IP((e=>{let t;const n=((e,t)=>{let n=e;return()=>{n--,0===n&&t()}})(2,(()=>{t&&t(),e()}));t=this.onLibReAnnounced((e=>"interop"===e.name||"contexts"===e.name?n():void 0))}),1e4,"Transport switch timed out waiting for all libraries to be re-announced")}getNewSecondaryTransport(e){if(!e.transportConfig?.url)throw new Error("Missing secondary transport URL.");return new SP(Object.assign({},this.settings,{ws:e.transportConfig.url,reconnectAttempts:1}),this.logger.subLogger("ws-secondary"))}getNewSecondaryAuth(e){if(!e.transportConfig?.auth)throw new Error("Missing secondary transport auth information.");return e.transportConfig.auth}transportSwap(){if(this._swapTransport=!1,!this._targetTransport||!this._targetAuth)return void this.logger.warn(`Error while switching transports - either the target transport or auth is not defined: transport defined -> ${!!this._defaultTransport}, auth defined -> ${!!this._targetAuth}. Staying on the current one.`);this._transportSubscriptions.forEach((e=>e())),this._transportSubscriptions=[],this.transport=this._targetTransport;const e=this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)),t=this.transport.onMessage(this.handleTransportMessage.bind(this));return this._transportSubscriptions.push(e),this._transportSubscriptions.push(t),this._targetAuth}prepareDefaultSwap(){this._transportSubscriptions.forEach((e=>e())),this._transportSubscriptions=[],this.transport.close().catch((e=>this.logger.warn(`Error closing the ${this.transport.name()} transport after a failed connection attempt: ${JSON.stringify(e)}`))),this._targetTransport=this._defaultTransport,this._targetAuth=this._defaultAuth,this._swapTransport=!0}processStringMessage(e){const t=JSON.parse(e,((e,t)=>{if("string"!=typeof t)return t;if(t.length{e.leave()}));await Promise.all(e)}getNewGWToken(){if("undefined"!=typeof window){const e=window.glue42gd;if(e)return e.getGWToken()}return Promise.reject(new Error("not running in GD"))}ping(){this.shouldTryLogin&&(this._isLoggedIn&&this.send({type:"ping"}),this.pingTimer=setTimeout((()=>{this.ping()}),3e4))}}const _P=["trace","debug","info","warn","error","off"];class PP{name;parent;static Interop;static InteropMethodName="T42.AppLogger.Log";static Instance;path;subLoggers=[];_consoleLevel;_publishLevel;loggerFullName;includeTimeAndLevel;logFn=console;customLogFn=!1;constructor(e,t,n){this.name=e,this.parent=t,this.name=e,this.path=t?`${t.path}.${e}`:e,this.loggerFullName=`[${this.path}]`,this.includeTimeAndLevel=!n,n&&(this.logFn=n,this.customLogFn=!0)}subLogger(e){const t=this.subLoggers.filter((t=>t.name===e))[0];if(void 0!==t)return t;Object.keys(this).forEach((t=>{if(t===e)throw new Error("This sub logger name is not allowed.")}));const n=new PP(e,this,this.customLogFn?this.logFn:void 0);return this.subLoggers.push(n),n}publishLevel(e){return e&&(this._publishLevel=e),this._publishLevel||this.parent?.publishLevel()}consoleLevel(e){return e&&(this._consoleLevel=e),this._consoleLevel||this.parent?.consoleLevel()}log(e,t,n){this.publishMessage(t||"info",e,n)}trace(e){this.log(e,"trace")}debug(e){this.log(e,"debug")}info(e){this.log(e,"info")}warn(e){this.log(e,"warn")}error(e,t){this.log(e,"error")}canPublish(e,t){return _P.indexOf(e)>=_P.indexOf(t||this.consoleLevel()||"trace")}publishMessage(e,t,n){const r=this.loggerFullName;if("error"===e&&!n){const e=new Error;e.stack&&(t=t+"\n"+e.stack.split("\n").slice(3).join("\n"))}if(this.canPublish(e,this.publishLevel())){const n=PP.Interop;if(n)try{n.methods({name:PP.InteropMethodName}).length>0&&n.invoke(PP.InteropMethodName,{msg:`${t}`,logger:r,level:e})}catch{}}if(this.canPublish(e)){let i="";if(this.includeTimeAndLevel){const t=new Date;i=`[${`${t.getHours()}:${t.getMinutes()}:${t.getSeconds()}:${t.getMilliseconds()}`}] [${e}] `}const s=`${i}${r}: ${t}`;switch(e){case"trace":this.logFn.debug(s);break;case"debug":this.logFn.debug?this.logFn.debug(s):this.logFn.log(s);break;case"info":this.logFn.info(s);break;case"warn":this.logFn.warn(s);break;case"error":this.logFn.error(s,n)}}}}const TP="create-context",FP="created",DP="destroyed",OP="context-created",RP="context-added",NP="subscribe-context",jP="subscribed-context",$P="unsubscribe-context",MP="destroy-context",qP="context-destroyed",BP="update-context",LP="context-updated",WP="joined",HP={get name(){return"context"},get types(){return[TP,FP,DP,OP,RP,NP,jP,$P,MP,qP,BP,LP,WP]}};var UP="6.3.1";class GP{name;contextId;context;isAnnounced;joinedActivity;updateCallbacks={};activityId;sentExplicitSubscription;hasReceivedSnapshot;constructor(e,t,n,r){this.contextId=e,this.name=t,this.isAnnounced=n,this.activityId=r,this.context={}}hasCallbacks(){return Object.keys(this.updateCallbacks).length>0}getState(){return this.isAnnounced&&this.hasCallbacks()?3:this.isAnnounced?2:this.hasCallbacks()?1:0}}var VP={exports:{}};!function(e,t){var n="__lodash_hash_undefined__",r=9007199254740991,i="[object Arguments]",s="[object Boolean]",o="[object Date]",a="[object Function]",c="[object GeneratorFunction]",l="[object Map]",u="[object Number]",h="[object Object]",d="[object Promise]",p="[object RegExp]",g="[object Set]",f="[object String]",m="[object Symbol]",y="[object WeakMap]",w="[object ArrayBuffer]",v="[object DataView]",b="[object Float32Array]",S="[object Float64Array]",C="[object Int8Array]",x="[object Int16Array]",I="[object Int32Array]",E="[object Uint8Array]",A="[object Uint8ClampedArray]",k="[object Uint16Array]",_="[object Uint32Array]",P=/\w*$/,T=/^\[object .+?Constructor\]$/,F=/^(?:0|[1-9]\d*)$/,D={};D[i]=D["[object Array]"]=D[w]=D[v]=D[s]=D[o]=D[b]=D[S]=D[C]=D[x]=D[I]=D[l]=D[u]=D[h]=D[p]=D[g]=D[f]=D[m]=D[E]=D[A]=D[k]=D[_]=!0,D["[object Error]"]=D[a]=D[y]=!1;var O="object"==typeof uP&&uP&&uP.Object===Object&&uP,R="object"==typeof self&&self&&self.Object===Object&&self,N=O||R||Function("return this")(),j=t&&!t.nodeType&&t,$=j&&e&&!e.nodeType&&e,M=$&&$.exports===j;function q(e,t){return e.set(t[0],t[1]),e}function B(e,t){return e.add(t),e}function L(e,t,n,r){var i=-1,s=e?e.length:0;for(r&&s&&(n=e[++i]);++i-1},Ae.prototype.set=function(e,t){var n=this.__data__,r=Fe(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},ke.prototype.clear=function(){this.__data__={hash:new Ee,map:new(pe||Ae),string:new Ee}},ke.prototype.delete=function(e){return je(this,e).delete(e)},ke.prototype.get=function(e){return je(this,e).get(e)},ke.prototype.has=function(e){return je(this,e).has(e)},ke.prototype.set=function(e,t){return je(this,e).set(e,t),this},_e.prototype.clear=function(){this.__data__=new Ae},_e.prototype.delete=function(e){return this.__data__.delete(e)},_e.prototype.get=function(e){return this.__data__.get(e)},_e.prototype.has=function(e){return this.__data__.has(e)},_e.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Ae){var r=n.__data__;if(!pe||r.length<199)return r.push([e,t]),this;n=this.__data__=new ke(r)}return n.set(e,t),this};var Me=le?U(le,Object):function(){return[]},qe=function(e){return ee.call(e)};function Be(e,t){return!!(t=null==t?r:t)&&("number"==typeof e||F.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=r}(e.length)&&!Je(e)}var Ve=ue||function(){return!1};function Je(e){var t=Ke(e)?ee.call(e):"";return t==a||t==c}function Ke(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function ze(e){return Ge(e)?Pe(e):function(e){if(!Le(e))return he(e);var t=[];for(var n in Object(e))Z.call(e,n)&&"constructor"!=n&&t.push(n);return t}(e)}e.exports=function(e){return De(e,!0,!0)}}(VP,VP.exports);var JP=hP(VP.exports);function KP(e,t,n){try{if(n?.canPublish("trace")&&n?.trace(`applying context delta ${JSON.stringify(t)} on context ${JSON.stringify(e)}`),!t)return e;if(t.reset)return e={...t.reset};if(e=zP(e,void 0),t.commands){for(const n of t.commands)"remove"===n.type?eT(e,n.path):"set"===n.type&&YP(e,n.value,n.path);return e}const r=t.added,i=t.updated,s=t.removed;return r&&Object.keys(r).forEach((t=>{e[t]=r[t]})),i&&Object.keys(i).forEach((t=>{QP(t,e,i)})),s&&s.forEach((t=>{delete e[t]})),e}catch(r){return n?.error(`error applying context delta ${JSON.stringify(t)} on context ${JSON.stringify(e)}`,r),e}}function zP(e,t){return JP(e)}const QP=(e,t,n)=>{const r=n[e];if(void 0===r)return t;const i=t[e];return i&&r?"string"==typeof i||"number"==typeof i||"boolean"==typeof i||"string"==typeof r||"number"==typeof r||"boolean"==typeof r||Array.isArray(i)||Array.isArray(r)?(t[e]=r,t):(t[e]=Object.assign({},i,r),t):(t[e]=r,t)};function XP(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;if(e.constructor!==t.constructor)return!1;for(const n in e)if(e.hasOwnProperty(n)){if(!t.hasOwnProperty(n))return!1;if(e[n]!==t[n]){if("object"!=typeof e[n])return!1;if(!XP(e[n],t[n]))return!1}}for(const n in t)if(t.hasOwnProperty(n)&&!e.hasOwnProperty(n))return!1;return!0}function YP(e,t,n){const r=n.split(".");let i;for(i=0;i"object"==typeof t[n]?ZP(e?.[n]||{},t[n]||{}):t[n]===e?.[n]))}function eT(e,t){const n=t.split(".");let r;for(r=0;r"context"===e.uri));this._protocolVersion=e?.version??1}return this._protocolVersion}get setPathSupported(){return this.protocolVersion>=2}constructor(e){this._connection=e.connection,this._logger=e.logger,this._trackAllContexts=e.trackAllContexts,this._reAnnounceKnownContexts=e.reAnnounceKnownContexts,this._gw3Session=this._connection.domain("global",[OP,jP,qP,LP]),this._gw3Session.disconnected(this.resetState.bind(this)),this._gw3Session.onJoined((e=>{if(e)return this._reAnnounceKnownContexts?void this.reInitiateState().then((()=>this._connection.setLibReAnnounced({name:"contexts"}))):this._connection.setLibReAnnounced({name:"contexts"})})),this.subscribeToContextCreatedMessages(),this.subscribeToContextUpdatedMessages(),this.subscribeToContextDestroyedMessages(),this._connection.replayer?.drain(HP.name,(e=>{const t=e.type;t&&(t===OP||t===RP||t===FP?this.handleContextCreatedMessage(e):t===jP||t===LP||t===WP?this.handleContextUpdatedMessage(e):t!==qP&&t!==DP||this.handleContextDestroyedMessage(e))}))}dispose(){for(const e of this._gw3Subscriptions)this._connection.off(e);this._gw3Subscriptions.length=0;for(const e in this._contextNameToData)this._contextNameToId.hasOwnProperty(e)&&delete this._contextNameToData[e]}createContext(e,t){return e in this._creationPromises||(this._creationPromises[e]=this._gw3Session.send({type:TP,domain:"global",name:e,data:t,lifetime:"retained"}).then((n=>{this._contextNameToId[e]=n.context_id,this._contextIdToName[n.context_id]=e;const r=this._contextNameToData[e]||new GP(n.context_id,e,!0,void 0);return r.isAnnounced=!0,r.name=e,r.contextId=n.context_id,r.context=n.data||zP(t),r.hasReceivedSnapshot=!0,this._contextNameToData[e]=r,delete this._creationPromises[e],n.context_id}))),this._creationPromises[e]}all(){return Object.keys(this._contextNameToData).filter((e=>this._contextNameToData[e].isAnnounced))}async update(e,t){t&&(t=zP(t)),e in this._creationPromises&&await this._creationPromises[e];const n=this._contextNameToData[e];if(!n||!n.isAnnounced)return this.createContext(e,t);let r=n.context;n.hasCallbacks()||(r=await this.get(n.name));const i=this.setPathSupported?this.calculateContextDeltaV2(r,t):this.calculateContextDeltaV1(r,t);return Object.keys(i.added).length||Object.keys(i.updated).length||i.removed.length||i.commands?.length?this._gw3Session.send({type:BP,domain:"global",context_id:n.contextId,delta:i},{},{skipPeerId:!1}).then((e=>{this.handleUpdated(n,i,{updaterId:e.peer_id})})):Promise.resolve()}async set(e,t){t&&(t=zP(t)),e in this._creationPromises&&await this._creationPromises[e];const n=this._contextNameToData[e];return n&&n.isAnnounced?this._gw3Session.send({type:BP,domain:"global",context_id:n.contextId,delta:{reset:t}},{},{skipPeerId:!1}).then((e=>{this.handleUpdated(n,{reset:t,added:{},removed:[],updated:{}},{updaterId:e.peer_id})})):this.createContext(e,t)}setPath(e,t,n){return this.setPathSupported?this.setPaths(e,[{path:t,value:n}]):Promise.reject("glue.contexts.setPath operation is not supported, use Glue42 3.10 or later")}async setPaths(e,t){if(!this.setPathSupported)return Promise.reject("glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later");t&&(t=zP(t)),e in this._creationPromises&&await this._creationPromises[e];const n=this._contextNameToData[e];if(!n||!n.isAnnounced){const n={};for(const e of t)YP(n,e.value,e.path);return this.createContext(e,n)}const r=[];for(const e of t)null===e.value?r.push({type:"remove",path:e.path}):r.push({type:"set",path:e.path,value:e.value});return this._gw3Session.send({type:BP,domain:"global",context_id:n.contextId,delta:{commands:r}},{},{skipPeerId:!1}).then((e=>{this.handleUpdated(n,{added:{},removed:[],updated:{},commands:r},{updaterId:e.peer_id})}))}async get(e){e in this._creationPromises&&await this._creationPromises[e];const t=this._contextNameToData[e];if(!t||!t.isAnnounced)return Promise.resolve({});if(t&&(!t.hasCallbacks()||!t.hasReceivedSnapshot))return new Promise((t=>{this.subscribe(e,((e,n,r,i)=>{this.unsubscribe(i),t(e)}))}));const n=t?.context??{};return Promise.resolve(zP(n))}async subscribe(e,t,n){e in this._creationPromises&&await this._creationPromises[e];const r=void 0===n?this._nextCallbackSubscriptionNumber:n;void 0===n&&(this._nextCallbackSubscriptionNumber+=1),this._contextsSubscriptionsCache.every((e=>e.subKey!==this._nextCallbackSubscriptionNumber))&&this._contextsSubscriptionsCache.push({contextName:e,subKey:r,callback:t});let i=this._contextNameToData[e];if(!i||!i.isAnnounced)return i=i||new GP(void 0,e,!1,void 0),this._contextNameToData[e]=i,i.updateCallbacks[r]=t,Promise.resolve(r);const s=i.hasCallbacks();if(i.updateCallbacks[r]=t,s){if(i.hasReceivedSnapshot){const e=zP(i.context);t(e,e,[],r)}return Promise.resolve(r)}if(i.joinedActivity){if(i.hasReceivedSnapshot){const e=zP(i.context);t(e,e,[],r)}return Promise.resolve(r)}if(i.context&&i.sentExplicitSubscription){if(i.hasReceivedSnapshot){const e=zP(i.context);t(e,e,[],r)}return Promise.resolve(r)}return this.sendSubscribe(i).then((()=>r))}unsubscribe(e){this._contextsSubscriptionsCache=this._contextsSubscriptionsCache.filter((t=>t.subKey!==e));for(const t of Object.keys(this._contextNameToData)){const n=this._contextNameToData[t];if(!n)return;const r=n.hasCallbacks();delete n.updateCallbacks[e],n.isAnnounced&&r&&!n.hasCallbacks()&&n.sentExplicitSubscription&&this.sendUnsubscribe(n).catch((()=>{})),n.isAnnounced||n.hasCallbacks()||delete this._contextNameToData[t]}}async destroy(e){e in this._creationPromises&&await this._creationPromises[e];const t=this._contextNameToData[e];return t?this._gw3Session.send({type:MP,domain:"global",context_id:t.contextId}).then((e=>{})):Promise.reject(`context with ${e} does not exist`)}handleUpdated(e,t,n){const r=e.context;e.context=KP(e.context,t,this._logger),e.hasReceivedSnapshot=!0,this._contextNameToData[e.name]!==e||XP(r,e.context)||this.invokeUpdateCallbacks(e,t,n)}subscribeToContextCreatedMessages(){const e=[RP,OP,FP];for(const t of e){const e=this._connection.on(t,this.handleContextCreatedMessage.bind(this));this._gw3Subscriptions.push(e)}}handleContextCreatedMessage(e){const t=e.type;t===FP?(this._contextNameToId[e.activity_id]=e.context_id,this._contextIdToName[e.context_id]=e.activity_id):t===RP&&(this._contextNameToId[e.name]=e.context_id,this._contextIdToName[e.context_id]=e.name);const n=this._contextIdToName[e.context_id];if(!n)throw new Error("Received created event for context with unknown name: "+e.context_id);if(!this._contextNameToId[n])throw new Error("Received created event for context with unknown id: "+e.context_id);let r=this._contextNameToData[n];if(r){if(r.isAnnounced)return;if(!r.hasCallbacks())throw new Error("Assertion failure: contextData.hasCallbacks()");r.isAnnounced=!0,r.contextId=e.context_id,r.activityId=e.activity_id,r.sentExplicitSubscription||this.sendSubscribe(r)}else this._contextNameToData[n]=r=new GP(e.context_id,n,!0,e.activity_id),this._trackAllContexts&&this.subscribe(n,(()=>{})).then((e=>this._systemContextsSubKey=e))}subscribeToContextUpdatedMessages(){const e=[LP,jP,WP];for(const t of e){const e=this._connection.on(t,this.handleContextUpdatedMessage.bind(this));this._gw3Subscriptions.push(e)}}handleContextUpdatedMessage(e){const t=e.type,n=e.context_id;let r=this._contextNameToData[this._contextIdToName[n]];const i=!r||!r.isAnnounced;if(t===WP)r||(r=this._contextNameToData[e.activity_id]||new GP(n,e.activity_id,!0,e.activity_id)),this._contextNameToData[e.activity_id]=r,this._contextIdToName[n]=e.activity_id,this._contextNameToId[e.activity_id]=n,r.contextId=n,r.isAnnounced=!0,r.activityId=e.activity_id,r.joinedActivity=!0;else if(!r||!r.isAnnounced)return void(t===jP?(r=r||new GP(n,e.name,!0,void 0),r.sentExplicitSubscription=!0,this._contextNameToData[e.name]=r,this._contextIdToName[n]=e.name,this._contextNameToId[e.name]=n):this._logger.error(`Received 'update' for unknown context: ${n}`));const s=r.context;if(r.hasReceivedSnapshot=!0,t===jP)r.context=e.data||{};else if(t===WP)r.context=e.context_snapshot||{};else{if(t!==LP)throw new Error("Unrecognized context update message "+t);r.context=KP(r.context,e.delta,this._logger)}!i&&XP(r.context,s)&&t!==jP||this.invokeUpdateCallbacks(r,e.delta,{updaterId:e.updater_id})}invokeUpdateCallbacks(e,t,n){if((t=t||{added:{},updated:{},reset:{},removed:[]}).commands){t.added=t.updated=t.reset={},t.removed=[];for(const e of t.commands)"remove"===e.type?(-1===e.path.indexOf(".")&&t.removed.push(e.path),YP(t.updated,null,e.path)):"set"===e.type&&YP(t.updated,e.value,e.path)}for(const r in e.updateCallbacks)if(e.updateCallbacks.hasOwnProperty(r))try{(0,e.updateCallbacks[r])(zP(e.context),zP(Object.assign({},t.added||{},t.updated||{},t.reset||{})),t.removed,parseInt(r,10),n)}catch(e){this._logger.debug("callback error: "+JSON.stringify(e))}}subscribeToContextDestroyedMessages(){const e=[qP,DP];for(const t of e){const e=this._connection.on(t,this.handleContextDestroyedMessage.bind(this));this._gw3Subscriptions.push(e)}}handleContextDestroyedMessage(e){let t,n;if(e.type===DP){if(n=e.activity_id,t=this._contextNameToId[n],!t)return void this._logger.error(`Received 'destroyed' for unknown activity: ${e.activity_id}`)}else if(t=e.context_id,n=this._contextIdToName[t],!n)return void this._logger.error(`Received 'destroyed' for unknown context: ${e.context_id}`);delete this._contextIdToName[t],delete this._contextNameToId[n];const r=this._contextNameToData[n];delete this._contextNameToData[n],r&&r.isAnnounced||this._logger.error(`Received 'destroyed' for unknown context: ${t}`)}sendSubscribe(e){return e.sentExplicitSubscription=!0,this._gw3Session.send({type:NP,domain:"global",context_id:e.contextId}).then((e=>{}))}sendUnsubscribe(e){return e.sentExplicitSubscription=!1,this._gw3Session.send({type:$P,domain:"global",context_id:e.contextId}).then((e=>{}))}calculateContextDeltaV1(e,t){const n={added:{},updated:{},removed:[],reset:void 0};if(e)for(const r of Object.keys(e))-1===Object.keys(t).indexOf(r)||null===t[r]||XP(e[r],t[r])||(n.updated[r]=t[r]);for(const r of Object.keys(t))e&&-1!==Object.keys(e).indexOf(r)?null===t[r]&&n.removed.push(r):null!==t[r]&&(n.added[r]=t[r]);return n}calculateContextDeltaV2(e,t){const n={added:{},updated:{},removed:[],reset:void 0,commands:[]};for(const r of Object.keys(t))if(null!==t[r]){XP(e?e[r]:null,t[r])||n.commands?.push({type:"set",path:r,value:t[r]})}else n.commands?.push({type:"remove",path:r});return n}resetState(){for(const e of this._gw3Subscriptions)this._connection.off(e);this._systemContextsSubKey&&(this.unsubscribe(this._systemContextsSubKey),delete this._systemContextsSubKey),this._gw3Subscriptions=[],this._contextNameToId={},this._contextIdToName={},delete this._protocolVersion,this._contextsTempCache=Object.keys(this._contextNameToData).reduce(((e,t)=>(e[t]=this._contextNameToData[t].context,e)),{}),this._contextNameToData={}}async reInitiateState(){this.subscribeToContextCreatedMessages(),this.subscribeToContextUpdatedMessages(),this.subscribeToContextDestroyedMessages(),this._connection.replayer?.drain(HP.name,(e=>{const t=e.type;t&&(t===OP||t===RP||t===FP?this.handleContextCreatedMessage(e):t===jP||t===LP||t===WP?this.handleContextUpdatedMessage(e):t!==qP&&t!==DP||this.handleContextDestroyedMessage(e))})),await Promise.all(this._contextsSubscriptionsCache.map((e=>this.subscribe(e.contextName,e.callback,e.subKey)))),await this.flushQueue();for(const e in this._contextsTempCache){if("object"!=typeof this._contextsTempCache[e]||0===Object.keys(this._contextsTempCache[e]).length)continue;const t=this._contextsTempCache[e];this._logger.info(`Re-announcing known context: ${e}`),await this.flushQueue(),await this.update(e,t)}this._contextsTempCache={},this._logger.info("Contexts are re-announced")}flushQueue(){return new Promise((e=>setTimeout((()=>e()),0)))}}class nT{initTime;initStartTime;initEndTime;_bridge;constructor(e){this._bridge=new tT(e)}all(){return this._bridge.all()}update(e,t){return this.checkName(e),this.checkData(t),this._bridge.update(e,t)}set(e,t){return this.checkName(e),this.checkData(t),this._bridge.set(e,t)}setPath(e,t,n){this.checkName(e),this.checkPath(t);return""===t?(this.checkData(n),this.set(e,n)):this._bridge.setPath(e,t,n)}setPaths(e,t){if(this.checkName(e),!Array.isArray(t))throw new Error("Please provide the paths as an array of PathValues!");for(const{path:e,value:n}of t){this.checkPath(e);""===e&&this.checkData(n)}return this._bridge.setPaths(e,t)}subscribe(e,t){if(this.checkName(e),"function"!=typeof t)throw new Error("Please provide the callback as a function!");return this._bridge.subscribe(e,((e,n,r,i,s)=>t(e,n,r,(()=>this._bridge.unsubscribe(i)),s))).then((e=>()=>{this._bridge.unsubscribe(e)}))}get(e){return this.checkName(e),this._bridge.get(e)}ready(){return Promise.resolve(this)}destroy(e){return this.checkName(e),this._bridge.destroy(e)}get setPathSupported(){return this._bridge.setPathSupported}checkName(e){if("string"!=typeof e||""===e)throw new Error("Please provide the name as a non-empty string!")}checkPath(e){if("string"!=typeof e)throw new Error("Please provide the path as a dot delimited string!")}checkData(e){if("object"!=typeof e)throw new Error("Please provide the data as an object!")}}function rT(e,t,n){return"function"!=typeof t&&"function"!=typeof n?e:("function"!=typeof t?t=()=>{}:"function"!=typeof n&&(n=()=>{}),e.then(t,n))}function iT(e=0,t,n){let r;const i=()=>{r&&clearTimeout(r)};return t.then((()=>{i()})).catch((()=>{i()})),new Promise(((t,i)=>{r=setTimeout((()=>i(n)),e)}))}var sT;!function(e){e[e.Success=0]="Success",e[e.Error=1]="Error"}(sT||(sT={}));class oT{protocol;repo;instance;configuration;constructor(e,t,n,r){this.protocol=e,this.repo=t,this.instance=n,this.configuration=r}subscribe(e,t,n,r,i){const s=(e,n,r,s)=>{t.methodResponseTimeout=t.methodResponseTimeout??t.waitTimeoutMs,this.protocol.client.subscribe(n,t,e,r,s,i)},o=new Promise(((n,r)=>{const i=e=>{n(e)},o=e=>{r(e)};if(!e)return void r("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");let a;if(a="string"==typeof e?{name:e}:e,!a.name)return void r("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");void 0===t&&(t={});let c=t.target;if(void 0===c&&(c="best"),"string"==typeof c&&"all"!==c&&"best"!==c)return void r(new Error(`"${c}" is not a valid target. Valid targets are "all", "best", or an instance.`));void 0===t.methodResponseTimeout&&(t.methodResponseTimeout=t.method_response_timeout,void 0===t.methodResponseTimeout&&(t.methodResponseTimeout=this.configuration.methodResponseTimeout)),void 0===t.waitTimeoutMs&&(t.waitTimeoutMs=t.wait_for_method_timeout,void 0===t.waitTimeoutMs&&(t.waitTimeoutMs=this.configuration.waitTimeoutMs));let l=0,u=this.getServerMethodsByFilterAndTarget(a,c);if(u.length>0)s(u,u[0].methods[0],i,o);else{const n=()=>{if(c&&t.waitTimeoutMs)if(l+=500,u=this.getServerMethodsByFilterAndTarget(a,c),u.length>0){const e=u[0].methods[0];s(u,e,i,o)}else if(l>=t.waitTimeoutMs){s(u,"string"==typeof e?{name:e}:e,i,o)}else setTimeout(n,500)};setTimeout(n,500)}}));return rT(o,n,r)}servers(e){const t=void 0===e?void 0:{...e};return this.getServers(t).map((e=>e.server.instance))}methods(e){return e="string"==typeof e?{name:e}:{...e},this.getMethods(e)}methodsForInstance(e){return this.getMethodsForInstance(e)}methodAdded(e){return this.repo.onMethodAdded(e)}methodRemoved(e){return this.repo.onMethodRemoved(e)}serverAdded(e){return this.repo.onServerAdded(e)}serverRemoved(e){return this.repo.onServerRemoved(((t,n)=>{e(t,n)}))}serverMethodAdded(e){return this.repo.onServerMethodAdded(((t,n)=>{e({server:t,method:n})}))}serverMethodRemoved(e){return this.repo.onServerMethodRemoved(((t,n)=>{e({server:t,method:n})}))}async invoke(e,t,n,r,i,s){return rT((async()=>{let i;if(i="string"==typeof e?{name:e}:{...e},!i.name)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");if(t||(t={}),n||(n="best"),"string"==typeof n&&"all"!==n&&"best"!==n&&"skipMine"!==n)return Promise.reject(new Error(`"${n}" is not a valid target. Valid targets are "all" and "best".`));if(r||(r={}),void 0===r.methodResponseTimeoutMs&&(r.methodResponseTimeoutMs=r.method_response_timeout,void 0===r.methodResponseTimeoutMs&&(r.methodResponseTimeoutMs=this.configuration.methodResponseTimeout)),void 0===r.waitTimeoutMs&&(r.waitTimeoutMs=r.wait_for_method_timeout,void 0===r.waitTimeoutMs&&(r.waitTimeoutMs=this.configuration.waitTimeoutMs)),void 0!==r.waitTimeoutMs&&"number"!=typeof r.waitTimeoutMs)return Promise.reject(new Error(`"${r.waitTimeoutMs}" is not a valid number for "waitTimeoutMs" `));if("object"!=typeof t)return Promise.reject(new Error(`The method arguments must be an object. method: ${i.name}`));let s=this.getServerMethodsByFilterAndTarget(i,n);if(0===s.length)try{s=await this.tryToAwaitForMethods(i,n,r)}catch(r){const s={method:{...i,getServers:()=>[],supportsStreaming:!1,objectTypes:i.objectTypes??[],flags:i.flags?.metadata??{}},called_with:t,message:`Can not find a method matching ${JSON.stringify(e)} with server filter ${JSON.stringify(n)}`,executed_by:void 0,returned:void 0,status:void 0};return Promise.reject(s)}const o=r.methodResponseTimeoutMs,a=r,c=s.map((e=>{const n=xP(10),r=e.methods[0],i=e.server,s=this.protocol.client.invoke(n,r,t,i,a);return Promise.race([s,iT(o,s,{invocationId:n,message:`Invocation timeout (${o} ms) reached for method name: ${r?.name}, target instance: ${JSON.stringify(i.instance)}, options: ${JSON.stringify(a)}`,status:sT.Error})])})),l=await Promise.all(c),u=this.getInvocationResultObj(l,i,t);return l.every((e=>e.status===sT.Error))?Promise.reject(u):u})(),i,s)}getInvocationResultObj(e,t,n){const r=e.filter((e=>e.status===sT.Success)).reduce(((e,r)=>e=[...e,{executed_by:r.instance,returned:r.result,called_with:n,method:t,message:r.message,status:r.status}]),[]),i=e.filter((e=>e.status===sT.Error)).reduce(((e,r)=>e=[...e,{executed_by:r.instance,called_with:n,name:t.name,message:r.message}]),[]),s=e[0];return{method:t,called_with:n,returned:s.result,executed_by:s.instance,all_return_values:r,all_errors:i,message:s.message,status:s.status}}tryToAwaitForMethods(e,t,n){return new Promise(((r,i)=>{if(0===n.waitTimeoutMs)return void i();let s=0;const o=setInterval((()=>{s+=500;const a=this.getServerMethodsByFilterAndTarget(e,t);if(a.length>0)clearInterval(o),r(a);else if(s>=(n.waitTimeoutMs||1e4))return clearInterval(o),void i()}),500)}))}filterByTarget(e,t){if("string"!=typeof e){let n;n=Array.isArray(e)?e:[e];return n.reduce(((e,n)=>{const r=t.filter((e=>this.instanceMatch(n,e.server.instance)));return e.concat(r)}),[])}if("all"===e)return[...t];if("best"===e){const e=t.find((e=>e.server.instance.isLocal));if(e)return[e];if(void 0!==t[0])return[t[0]]}else if("skipMine"===e)return t.filter((({server:e})=>e.instance.peerId!==this.instance.peerId));return[]}instanceMatch(e,t){return this.containsProps(e,t)}methodMatch(e,t){return this.containsProps(e,t)}containsProps(e,t){return Object.keys(e).filter((t=>void 0!==e[t]&&null!==e[t]&&"function"!=typeof e[t]&&"object_types"!==t&&"display_name"!==t&&"id"!==t&&"gatewayId"!==t&&"identifier"!==t&&"_"!==t[0])).every((n=>{let r;const i=e[n],s=t[n];switch(n){case"objectTypes":r=(i||[]).every((e=>(s||[]).includes(e)));break;case"flags":r=ZP(s||{},i||{});break;default:r=String(i).toLowerCase()===String(s).toLowerCase()}return r}))}getMethods(e){if(void 0===e)return this.repo.getMethods();return this.repo.getMethods().filter((t=>this.methodMatch(e,t)))}getMethodsForInstance(e){const t=this.repo.getServers().filter((t=>this.instanceMatch(e,t.instance)));if(0===t.length)return[];let n={};return 1===t.length?n=t[0].methods:t.forEach((e=>{Object.keys(e.methods).forEach((t=>{const r=e.methods[t];n[r.identifier]=r}))})),Object.keys(n).map((e=>n[e]))}getServers(e){const t=this.repo.getServers();return void 0===e?t.map((e=>({server:e,methods:[]}))):t.reduce(((t,n)=>{const r=Object.values(n.methods).filter((t=>this.methodMatch(e,t)));return r.length>0&&t.push({server:n,methods:r}),t}),[])}getServerMethodsByFilterAndTarget(e,t){const n=this.getServers(e);return this.filterByTarget(t,n)}}class aT{protocol;repoMethod;subscription;constructor(e,t,n){this.protocol=e,this.repoMethod=t,this.subscription=n}get stream(){if(!this.repoMethod.stream)throw new Error("no stream");return this.repoMethod.stream}get arguments(){return this.subscription.arguments||{}}get branchKey(){return this.subscription.branchKey}get instance(){if(!this.subscription.instance)throw new Error("no instance");return this.subscription.instance}close(){this.protocol.server.closeSingleSubscription(this.repoMethod,this.subscription)}push(e){this.protocol.server.pushDataToSingle(this.repoMethod,this.subscription,e)}}class cT{key;protocol;repoMethod;constructor(e,t,n){this.key=e,this.protocol=t,this.repoMethod=n}subscriptions(){return this.protocol.server.getSubscriptionList(this.repoMethod,this.key).map((e=>new aT(this.protocol,this.repoMethod,e)))}close(){this.protocol.server.closeAllSubscriptions(this.repoMethod,this.key)}push(e){this.protocol.server.pushData(this.repoMethod,e,[this.key])}}class lT{_protocol;_repoMethod;_server;name;constructor(e,t,n){this._protocol=e,this._repoMethod=t,this._server=n,this.name=this._repoMethod.definition.name}branches(e){const t=this._protocol.server.getBranchList(this._repoMethod);return e?t.indexOf(e)>-1?new cT(e,this._protocol,this._repoMethod):void 0:t.map((e=>new cT(e,this._protocol,this._repoMethod)))}branch(e){return this.branches(e)}subscriptions(){return this._protocol.server.getSubscriptionList(this._repoMethod).map((e=>new aT(this._protocol,this._repoMethod,e)))}get definition(){const e=this._repoMethod.definition;return{accepts:e.accepts,description:e.description,displayName:e.displayName,name:e.name,objectTypes:e.objectTypes,returns:e.returns,supportsStreaming:e.supportsStreaming,flags:e.flags?.metadata}}close(){this._protocol.server.closeAllSubscriptions(this._repoMethod),this._server.unregister(this._repoMethod.definition,!0)}push(e,t){if("string"!=typeof t&&!Array.isArray(t)&&void 0!==t)throw new Error("invalid branches should be string or string array");if("object"!=typeof e)throw new Error("Invalid arguments. Data must be an object.");this._protocol.server.pushData(this._repoMethod,e,t)}updateRepoMethod(e){this._repoMethod=e}}class uT{protocol;serverRepository;streaming;invocations=0;currentlyUnregistering={};constructor(e,t){this.protocol=e,this.serverRepository=t,this.streaming=new class{protocol;server;constructor(e,t){this.protocol=e,this.server=t,e.server.onSubRequest(((e,t)=>this.handleSubRequest(e,t))),e.server.onSubAdded(((e,t)=>this.handleSubAdded(e,t))),e.server.onSubRemoved(((e,t)=>this.handleSubRemoved(e,t)))}handleSubRequest(e,t){if(!t||!t.streamCallbacks||"function"!=typeof t.streamCallbacks.subscriptionRequestHandler)return;const n=new class{protocol;repoMethod;requestContext;arguments;instance;constructor(e,t,n){this.protocol=e,this.repoMethod=t,this.requestContext=n,this.arguments=n.arguments,this.instance=n.instance}accept(){this.protocol.server.acceptRequestOnBranch(this.requestContext,this.repoMethod,"")}acceptOnBranch(e){this.protocol.server.acceptRequestOnBranch(this.requestContext,this.repoMethod,e)}reject(e){this.protocol.server.rejectRequest(this.requestContext,this.repoMethod,e)}}(this.protocol,t,e);t.streamCallbacks.subscriptionRequestHandler(n)}handleSubAdded(e,t){if(!t||!t.streamCallbacks||"function"!=typeof t.streamCallbacks.subscriptionAddedHandler)return;const n=new aT(this.protocol,t,e);t.streamCallbacks.subscriptionAddedHandler(n)}handleSubRemoved(e,t){if(!t||!t.streamCallbacks||"function"!=typeof t.streamCallbacks.subscriptionRemovedHandler)return;const n=new aT(this.protocol,t,e);t.streamCallbacks.subscriptionRemovedHandler(n)}}(e,this),this.protocol.server.onInvoked(this.onMethodInvoked.bind(this))}createStream(e,t,n,r,i){const s=new Promise(((n,r)=>{if(!e)return void r("The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream.");let s;if(s="string"==typeof e?{name:""+e}:{...e},!s.name)return r(`The “name” property is required for the “streamDefinition” object and must be unique. Stream definition: ${JSON.stringify(s)}`);if(this.serverRepository.getList().some((e=>e.definition.name===s.name)))return r(`A stream with the name "${s.name}" already exists! Please, provide a unique name for the stream.`);s.supportsStreaming=!0,t||(t={}),"function"!=typeof t.subscriptionRequestHandler&&(t.subscriptionRequestHandler=e=>{e.accept()});const o=this.serverRepository.add({definition:s,streamCallbacks:t,protocolState:{}});this.protocol.server.createStream(o).then((()=>{let e;i?(e=i,i.updateRepoMethod(o)):e=new lT(this.protocol,o,this),o.stream=e,n(e)})).catch((e=>{o.repoId&&this.serverRepository.remove(o.repoId),r(e)}))}));return rT(s,n,r)}register(e,t){if(!e)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");if("function"!=typeof t)return Promise.reject(`The second parameter must be a callback function. Method: ${"string"==typeof e?e:e.name}`);const n=async(e,n)=>{try{const r=t(e.args,e.instance);if(r&&"function"==typeof r.then){n(void 0,await r)}else n(void 0,r)}catch(e){n(e??"",e??"")}};return n.userCallback=t,this.registerCore(e,n)}registerAsync(e,t){if(!e)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.");if("function"!=typeof t)return Promise.reject(`The second parameter must be a callback function. Method: ${"string"==typeof e?e:e.name}`);const n=async(e,n)=>{try{let r=!1;const i=e=>{r||n(void 0,e),r=!0},s=e=>{r||(e||(e=""),n(e,e)),r=!0},o=t(e.args,e.instance,i,s);o&&"function"==typeof o.then&&o.then(i).catch(s)}catch(e){n(e,void 0)}};return n.userCallbackAsync=t,this.registerCore(e,n)}async unregister(e,t=!1){if(void 0===e)return Promise.reject("Please, provide either a unique string for a name or an object containing a “name” property.");if("function"==typeof e)return void await this.unregisterWithPredicate(e,t);let n;if(n="string"==typeof e?{name:e}:e,void 0===n.name)return Promise.reject("Method name is required. Cannot find a method if the method name is undefined!");const r=this.serverRepository.getList().find((e=>e.definition.name===n.name&&(e.definition.supportsStreaming||!1)===t));if(!r)return Promise.reject(`Method with a name "${n.name}" does not exist or is not registered by your application!`);await this.removeMethodsOrStreams([r])}async unregisterWithPredicate(e,t){const n=this.serverRepository.getList().filter((t=>e(t.definition))).filter((e=>(e.definition.supportsStreaming||!1)===t));if(!n||0===n.length)return Promise.reject(`Could not find a ${t?"stream":"method"} matching the specified condition!`);await this.removeMethodsOrStreams(n)}removeMethodsOrStreams(e){const t=[];return e.forEach((e=>{const n=this.protocol.server.unregister(e).then((()=>{e.repoId&&this.serverRepository.remove(e.repoId)}));t.push(n),this.addAsCurrentlyUnregistering(e.definition.name,n)})),Promise.all(t)}async addAsCurrentlyUnregistering(e,t){const n=new Promise((e=>setTimeout(e,5e3)));this.currentlyUnregistering[e]=Promise.race([t,n]).then((()=>{delete this.currentlyUnregistering[e]}))}async registerCore(e,t){let n;if(n="string"==typeof e?{name:""+e}:{...e},!n.name)return Promise.reject(`Please, provide a (unique) string value for the “name” property in the “methodDefinition” object: ${JSON.stringify(e)}`);const r=this.currentlyUnregistering[n.name];void 0!==r&&await r;if(this.serverRepository.getList().some((e=>e.definition.name===n.name)))return Promise.reject(`A method with the name "${n.name}" already exists! Please, provide a unique name for the method.`);if(n.supportsStreaming)return Promise.reject(`When you create methods with “glue.interop.register()” or “glue.interop.registerAsync()” the property “supportsStreaming” cannot be “true”. If you want “${n.name}” to be a stream, please use the “glue.interop.createStream()” method.`);const i=this.serverRepository.add({definition:n,theFunction:t,protocolState:{}});return this.protocol.server.register(i).catch((e=>{throw i?.repoId&&this.serverRepository.remove(i.repoId),e}))}onMethodInvoked(e,t,n){e&&e.theFunction&&e.theFunction(n,((n,r)=>{if(null!=n)if(n.message&&"string"==typeof n.message)n=n.message;else if("string"!=typeof n)try{n=JSON.stringify(n)}catch(e){n=`un-stringifyable error in onMethodInvoked! Top level prop names: ${Object.keys(n)}`}r?("object"!=typeof r||Array.isArray(r))&&(r={_value:r}):r={},this.protocol.server.methodInvocationResult(e,t,n,r)}))}}class hT{wrapped={};constructor(e,t,n){this.wrapped.getMethods=function(){return e.methodsForInstance(this)},this.wrapped.getStreams=function(){return e.methodsForInstance(this).filter((e=>e.supportsStreaming))},t&&this.refreshWrappedObject(t),n&&(n.loggedIn((()=>{this.refresh(n)})),this.refresh(n))}unwrap(){return this.wrapped}refresh(e){if(!e)return;const t=e?.resolvedIdentity,n=Object.assign({},t??{},{peerId:e?.peerId});this.refreshWrappedObject(n)}refreshWrappedObject(e){Object.keys(e).forEach((t=>{this.wrapped[t]=e[t]})),this.wrapped.user=e.user,this.wrapped.instance=e.instance,this.wrapped.application=e.application??xP(10),this.wrapped.applicationName=e.applicationName,this.wrapped.pid=e.pid??e.process??Math.floor(1e10*Math.random()),this.wrapped.machine=e.machine,this.wrapped.environment=e.environment,this.wrapped.region=e.region,this.wrapped.windowId=e.windowId,this.wrapped.isLocal=e.isLocal??!0,this.wrapped.api=e.api,this.wrapped.service=e.service,this.wrapped.peerId=e.peerId}}const dT=e=>({...e,flags:e.flags.metadata||{}});class pT{logger;API;servers={};myServer;methodsCount={};callbacks=pP();constructor(e,t){this.logger=e,this.API=t;const n=this.API.instance.peerId;this.myServer={id:n,methods:{},instance:this.API.instance,wrapper:this.API.unwrappedInstance},this.servers[n]=this.myServer}addServer(e,t){this.logger.debug(`adding server ${t}`);const n=this.servers[t];if(n)return n.id;const r=new hT(this.API,e),i={id:t,methods:{},instance:r.unwrap(),wrapper:r};return this.servers[t]=i,this.callbacks.execute("onServerAdded",i.instance),t}removeServerById(e,t){const n=this.servers[e];n?(this.logger.debug(`removing server ${e}`),Object.keys(n.methods).forEach((t=>{this.removeServerMethod(e,t)})),delete this.servers[e],this.callbacks.execute("onServerRemoved",n.instance,t)):this.logger.warn(`not aware of server ${e}, my state ${JSON.stringify(Object.keys(this.servers))}`)}addServerMethod(e,t){const n=this.servers[e];if(!n)throw new Error("server does not exists");if(n.methods[t.id])return;const r=this.createMethodIdentifier(t),i=this,s={identifier:r,gatewayId:t.id,name:t.name,displayName:t.display_name,description:t.description,version:t.version,objectTypes:t.object_types||[],accepts:t.input_signature,returns:t.result_signature,supportsStreaming:void 0!==t.flags&&t.flags.streaming,flags:t.flags??{},getServers:()=>i.getServersByMethod(r)};s.object_types=s.objectTypes,s.display_name=s.displayName,s.version=s.version,n.methods[t.id]=s;const o=dT(s);return this.methodsCount[r]||(this.methodsCount[r]=0,this.callbacks.execute("onMethodAdded",o)),this.methodsCount[r]=this.methodsCount[r]+1,this.callbacks.execute("onServerMethodAdded",n.instance,o),s}removeServerMethod(e,t){const n=this.servers[e];if(!n)throw new Error("server does not exists");const r=n.methods[t];delete n.methods[t];const i=dT(r);this.methodsCount[r.identifier]=this.methodsCount[r.identifier]-1,0===this.methodsCount[r.identifier]&&this.callbacks.execute("onMethodRemoved",i),this.callbacks.execute("onServerMethodRemoved",n.instance,i)}getMethods(){return this.extractMethodsFromServers(Object.values(this.servers)).map(dT)}getServers(){return Object.values(this.servers).map(this.hideServerMethodSystemFlags)}onServerAdded(e){const t=this.callbacks.add("onServerAdded",e),n=this.getServers().map((e=>e.instance));return this.returnUnsubWithDelayedReplay(t,n,e)}onMethodAdded(e){const t=this.callbacks.add("onMethodAdded",e),n=this.getMethods();return this.returnUnsubWithDelayedReplay(t,n,e)}onServerMethodAdded(e){const t=this.callbacks.add("onServerMethodAdded",e);let n=!1;const r=this.getServers();return setTimeout((()=>{r.forEach((t=>{const r=t.methods;Object.keys(r).forEach((i=>{n||e(t.instance,r[i])}))}))}),0),()=>{n=!0,t()}}onMethodRemoved(e){return this.callbacks.add("onMethodRemoved",e)}onServerRemoved(e){return this.callbacks.add("onServerRemoved",e)}onServerMethodRemoved(e){return this.callbacks.add("onServerMethodRemoved",e)}getServerById(e){return this.hideServerMethodSystemFlags(this.servers[e])}reset(){Object.keys(this.servers).forEach((e=>{this.removeServerById(e,"reset")})),this.servers={[this.myServer.id]:this.myServer},this.methodsCount={}}createMethodIdentifier(e){const t=e.input_signature??"",n=e.result_signature??"";return(e.name+t+n).toLowerCase()}getServersByMethod(e){const t=[];return Object.values(this.servers).forEach((n=>{Object.values(n.methods).forEach((r=>{r.identifier===e&&t.push(n.instance)}))})),t}returnUnsubWithDelayedReplay(e,t,n){let r=!1;return setTimeout((()=>{t.forEach((e=>{r||n(e)}))}),0),()=>{r=!0,e()}}hideServerMethodSystemFlags(e){const t={};return Object.entries(e.methods).forEach((([e,n])=>{t[e]=dT(n)})),{...e,methods:t}}extractMethodsFromServers(e){return Object.values(e).reduce(((e,t)=>[...e,...Object.values(t.methods)]),[])}}class gT{nextId=0;methods=[];add(e){return e.repoId=String(this.nextId),this.nextId+=1,this.methods.push(e),e}remove(e){if("string"!=typeof e)return new TypeError("Expecting a string");this.methods=this.methods.filter((t=>t.repoId!==e))}getById(e){if("string"==typeof e)return this.methods.find((t=>t.repoId===e))}getList(){return this.methods.map((e=>e))}length(){return this.methods.length}reset(){this.methods=[]}}const fT="onSubscriptionRequest",mT="onSubscriptionAdded",yT="onSubscriptionRemoved";class wT{session;repository;serverRepository;ERR_URI_SUBSCRIPTION_FAILED="com.tick42.agm.errors.subscription.failure";callbacks=pP();nextStreamId=0;constructor(e,t,n){this.session=e,this.repository=t,this.serverRepository=n,e.on("add-interest",(e=>{this.handleAddInterest(e)})),e.on("remove-interest",(e=>{this.handleRemoveInterest(e)}))}acceptRequestOnBranch(e,t,n){if("string"!=typeof n&&(n=""),"object"!=typeof t.protocolState.subscriptionsMap)throw new TypeError("The streaming method is missing its subscriptions.");if(!Array.isArray(t.protocolState.branchKeyToStreamIdMap))throw new TypeError("The streaming method is missing its branches.");const r=this.getStreamId(t,n),i=e.msg.subscription_id,s={id:i,arguments:e.arguments,instance:e.instance,branchKey:n,streamId:r,subscribeMsg:e.msg};t.protocolState.subscriptionsMap[i]=s,this.session.sendFireAndForget({type:"accepted",subscription_id:i,stream_id:r}),this.callbacks.execute(mT,s,t)}rejectRequest(e,t,n){"string"!=typeof n&&(n=""),this.sendSubscriptionFailed("Subscription rejected by user. "+n,e.msg.subscription_id)}pushData(e,t,n){if("object"!=typeof e||!Array.isArray(e.protocolState.branchKeyToStreamIdMap))return;if("object"!=typeof t)throw new Error("Invalid arguments. Data must be an object.");"string"==typeof n?n=[n]:(!Array.isArray(n)||n.length<=0)&&(n=[]);const r=e.protocolState.branchKeyToStreamIdMap.filter((e=>!n||0===n.length||n.indexOf(e.key)>=0)).map((e=>e.streamId));r.forEach((e=>{const n={type:"publish",stream_id:e,data:t};this.session.sendFireAndForget(n)}))}pushDataToSingle(e,t,n){if("object"!=typeof n)throw new Error("Invalid arguments. Data must be an object.");const r={type:"post",subscription_id:t.id,data:n};this.session.sendFireAndForget(r)}closeSingleSubscription(e,t){e.protocolState.subscriptionsMap&&delete e.protocolState.subscriptionsMap[t.id];const n={type:"drop-subscription",subscription_id:t.id,reason:"Server dropping a single subscription"};this.session.sendFireAndForget(n),t.instance,this.callbacks.execute(yT,t,e)}closeMultipleSubscriptions(e,t){if("object"!=typeof e||"object"!=typeof e.protocolState.subscriptionsMap)return;if(!e.protocolState.subscriptionsMap)return;const n=e.protocolState.subscriptionsMap;let r=Object.keys(n).map((e=>n[e]));"string"==typeof t&&(r=r.filter((e=>e.branchKey===t))),r.forEach((e=>{delete n[e.id];const t={type:"drop-subscription",subscription_id:e.id,reason:"Server dropping all subscriptions on stream_id: "+e.streamId};this.session.sendFireAndForget(t)}))}getSubscriptionList(e,t){if("object"!=typeof e)return[];let n=[];if(!e.protocolState.subscriptionsMap)return[];const r=e.protocolState.subscriptionsMap,i=Object.keys(r).map((e=>r[e]));return n="string"!=typeof t?i:i.filter((e=>e.branchKey===t)),n}getBranchList(e){if("object"!=typeof e)return[];if(!e.protocolState.subscriptionsMap)return[];const t=e.protocolState.subscriptionsMap,n=Object.keys(t).map((e=>t[e])),r=[];return n.forEach((e=>{let t="";"object"==typeof e&&"string"==typeof e.branchKey&&(t=e.branchKey),-1===r.indexOf(t)&&r.push(t)})),r}onSubAdded(e){this.onSubscriptionLifetimeEvent(mT,e)}onSubRequest(e){this.onSubscriptionLifetimeEvent(fT,e)}onSubRemoved(e){this.onSubscriptionLifetimeEvent(yT,e)}handleRemoveInterest(e){const t=this.serverRepository.getById(e.method_id);if("string"!=typeof e.subscription_id||"object"!=typeof t)return;if(!t.protocolState.subscriptionsMap)return;if("object"!=typeof t.protocolState.subscriptionsMap[e.subscription_id])return;const n=t.protocolState.subscriptionsMap[e.subscription_id];delete t.protocolState.subscriptionsMap[e.subscription_id],this.callbacks.execute(yT,n,t)}onSubscriptionLifetimeEvent(e,t){this.callbacks.add(e,t)}getNextStreamId(){return this.nextStreamId+++""}handleAddInterest(e){const t=this.repository.getServerById(e.caller_id).instance,n={msg:e,arguments:e.arguments_kv||{},instance:t},r=this.serverRepository.getById(e.method_id);if(void 0!==r)r.protocolState.subscriptionsMap&&r.protocolState.subscriptionsMap[e.subscription_id]?this.sendSubscriptionFailed("A subscription with id "+e.subscription_id+" already exists.",e.subscription_id):this.callbacks.execute(fT,n,r);else{const t="No method with id "+e.method_id+" on this server.";this.sendSubscriptionFailed(t,e.subscription_id)}}sendSubscriptionFailed(e,t){const n={type:"error",reason_uri:this.ERR_URI_SUBSCRIPTION_FAILED,reason:e,request_id:t};this.session.sendFireAndForget(n)}getStreamId(e,t){if("string"!=typeof t&&(t=""),!e.protocolState.branchKeyToStreamIdMap)throw new Error(`streaming ${e.definition.name} method without protocol state`);const n=e.protocolState.branchKeyToStreamIdMap.filter((e=>e.key===t))[0];let r=n?n.streamId:void 0;return"string"==typeof r&&""!==r||(r=this.getNextStreamId(),e.protocolState.branchKeyToStreamIdMap.push({key:t,streamId:r})),r}}class vT{session;clientRepository;serverRepository;logger;callbacks=pP();streaming;constructor(e,t,n,r){this.session=e,this.clientRepository=t,this.serverRepository=n,this.logger=r,this.streaming=new wT(e,t,n),this.session.on("invoke",(e=>this.handleInvokeMessage(e)))}createStream(e){return e.protocolState.subscriptionsMap={},e.protocolState.branchKeyToStreamIdMap=[],this.register(e,!0)}register(e,t){const n=e.definition,r=Object.assign({},{metadata:n.flags??{}},{streaming:t||!1}),i={type:"register",methods:[{id:e.repoId,name:n.name,display_name:n.displayName,description:n.description,version:n.version,flags:r,object_types:n.objectTypes||n.object_types,input_signature:n.accepts,result_signature:n.returns,restrictions:void 0}]};return this.session.send(i,{methodId:e.repoId}).then((()=>{this.logger.debug("registered method "+e.definition.name+" with id "+e.repoId)})).catch((t=>{throw this.logger.warn(`failed to register method ${e.definition.name} with id ${e.repoId} - ${JSON.stringify(t)}`),t}))}onInvoked(e){this.callbacks.add("onInvoked",e)}methodInvocationResult(e,t,n,r){let i;i=n||""===n?{type:"error",request_id:t,reason_uri:"agm.errors.client_error",reason:n,context:r,peer_id:void 0}:{type:"yield",invocation_id:t,peer_id:this.session.peerId,result:r,request_id:void 0},this.session.sendFireAndForget(i)}async unregister(e){const t={type:"unregister",methods:[e.repoId]};await this.session.send(t)}getBranchList(e){return this.streaming.getBranchList(e)}getSubscriptionList(e,t){return this.streaming.getSubscriptionList(e,t)}closeAllSubscriptions(e,t){this.streaming.closeMultipleSubscriptions(e,t)}pushData(e,t,n){this.streaming.pushData(e,t,n)}pushDataToSingle(e,t,n){this.streaming.pushDataToSingle(e,t,n)}closeSingleSubscription(e,t){this.streaming.closeSingleSubscription(e,t)}acceptRequestOnBranch(e,t,n){this.streaming.acceptRequestOnBranch(e,t,n)}rejectRequest(e,t,n){this.streaming.rejectRequest(e,t,n)}onSubRequest(e){this.streaming.onSubRequest(e)}onSubAdded(e){this.streaming.onSubAdded(e)}onSubRemoved(e){this.streaming.onSubRemoved(e)}handleInvokeMessage(e){const t=e.invocation_id,n=e.caller_id,r=e.method_id,i=e.arguments_kv,s=this.serverRepository.getList().filter((e=>e.repoId===r))[0];if(void 0===s)return;const o={args:i,instance:this.clientRepository.getServerById(n).instance};this.callbacks.execute("onInvoked",s,t,o)}}class bT{repository;subscriptionData;get requestArguments(){return this.subscriptionData.params.arguments||{}}get servers(){return this.subscriptionData.trackedServers.filter((e=>e.subscriptionId)).map((e=>this.repository.getServerById(e.serverId).instance))}get serverInstance(){return this.servers[0]}get stream(){return this.subscriptionData.method}constructor(e,t){this.repository=e,this.subscriptionData=t}onData(e){if("function"!=typeof e)throw new TypeError("The data callback must be a function.");this.subscriptionData.handlers.onData.push(e),1===this.subscriptionData.handlers.onData.length&&this.subscriptionData.queued.data.length>0&&this.subscriptionData.queued.data.forEach((t=>{e(t)}))}onClosed(e){if("function"!=typeof e)throw new TypeError("The callback must be a function.");this.subscriptionData.handlers.onClosed.push(e)}onFailed(e){}onConnected(e){if("function"!=typeof e)throw new TypeError("The callback must be a function.");this.subscriptionData.handlers.onConnected.push(e)}close(){this.subscriptionData.close()}setNewSubscription(e){this.subscriptionData=e}}class ST{config;cache=[];timeoutIds=[];constructor(e){this.config=e}add(e){const t=xP(10);this.cache.push({id:t,element:e});const n=setTimeout((()=>{const e=this.cache.findIndex((e=>e.id===t));e<0||this.cache.splice(e,1)}),this.config.ELEMENT_TTL_MS);this.timeoutIds.push(n)}flush(){const e=this.cache.map((e=>e.element));return this.timeoutIds.forEach((e=>clearInterval(e))),this.cache=[],this.timeoutIds=[],e}}const CT="awaitingAccept",xT="subscribed",IT="Subscription failed.",ET="ClientInitiated";class AT{session;repository;logger;subscriptionsList={};timedCache=new ST({ELEMENT_TTL_MS:1e4});subscriptionIdToLocalKeyMap={};nextSubLocalKey=0;constructor(e,t,n){this.session=e,this.repository=t,this.logger=n,e.on("subscribed",this.handleSubscribed),e.on("event",this.handleEventData),e.on("subscription-cancelled",this.handleSubscriptionCancelled)}subscribe(e,t,n,r,i,s){if(0===n.length)return void i({method:e,called_with:t.arguments,message:IT+" No available servers matched the target params."});const o=this.getNextSubscriptionLocalKey(),a=this.registerSubscription(o,e,t,r,i,t.methodResponseTimeout||1e4,s);"object"==typeof a?n.forEach((n=>{const r=n.server.id,i=n.methods.find((t=>t.name===e.name));if(!i)return void this.logger.error(`can not find method ${e.name} for target ${n.server.id}`);a.trackedServers.push({serverId:r,subscriptionId:void 0});const s={type:"subscribe",server_id:r,method_id:i.gatewayId,arguments_kv:t.arguments};this.session.send(s,{serverId:r,subLocalKey:o}).then((e=>this.handleSubscribed(e))).catch((e=>this.handleErrorSubscribing(e)))})):i({method:e,called_with:t.arguments,message:IT+" Unable to register the user callbacks."})}drainSubscriptions(){const e=Object.values(this.subscriptionsList);return this.subscriptionsList={},this.subscriptionIdToLocalKeyMap={},e}drainSubscriptionsCache(){return this.timedCache.flush()}getNextSubscriptionLocalKey(){const e=this.nextSubLocalKey;return this.nextSubLocalKey+=1,e}registerSubscription(e,t,n,r,i,s,o){const a={localKey:e,status:CT,method:t,params:n,success:r,error:i,trackedServers:[],handlers:{onData:o?.handlers.onData||[],onClosed:o?.handlers.onClosed||[],onConnected:o?.handlers.onConnected||[]},queued:{data:[],closers:[]},timeoutId:void 0,close:()=>this.closeSubscription(e),subscription:o?.subscription};return o||(n.onData&&a.handlers.onData.push(n.onData),n.onClosed&&a.handlers.onClosed.push(n.onClosed),n.onConnected&&a.handlers.onConnected.push(n.onConnected)),this.subscriptionsList[e]=a,a.timeoutId=setTimeout((()=>{if(void 0===this.subscriptionsList[e])return;const r=this.subscriptionsList[e];r.status===CT?(i({method:t,called_with:n.arguments,message:IT+" Subscription attempt timed out after "+s+" ms."}),delete this.subscriptionsList[e]):r.status===xT&&r.trackedServers.length>0&&(r.trackedServers=r.trackedServers.filter((e=>void 0!==e.subscriptionId)),delete r.timeoutId,r.trackedServers.length<=0&&(this.callOnClosedHandlers(r),delete this.subscriptionsList[e]))}),s),a}handleErrorSubscribing=e=>{const t=e._tag,n=t.subLocalKey,r=this.subscriptionsList[n];if("object"==typeof r&&(r.trackedServers=r.trackedServers.filter((e=>e.serverId!==t.serverId)),r.trackedServers.length<=0)){if(clearTimeout(r.timeoutId),r.status===CT){const t="string"==typeof e.reason&&""!==e.reason?' Publisher said "'+e.reason+'".':" No reason given.",n="object"==typeof r.params.arguments?JSON.stringify(r.params.arguments):"{}";r.error({message:"Subscription rejected."+t+" Called with:"+n,called_with:r.params.arguments,method:r.method})}else r.status===xT&&this.callOnClosedHandlers(r);delete this.subscriptionsList[n]}};handleSubscribed=e=>{const t=e._tag.subLocalKey,n=this.subscriptionsList[t];if("object"!=typeof n)return;const r=e._tag.serverId,i=n.trackedServers.filter((e=>e.serverId===r))[0];if("object"!=typeof i)return;i.subscriptionId=e.subscription_id,this.subscriptionIdToLocalKeyMap[e.subscription_id]=t;const s=n.status===CT;if(n.status=xT,s){let e=!1,t=n.subscription;t?(t.setNewSubscription(n),n.success(t),e=!0):(t=new bT(this.repository,n),n.subscription=t,n.success(t));for(const r of n.handlers.onConnected)try{r(t.serverInstance,e)}catch(e){}}};handleEventData=e=>{const t=this.subscriptionIdToLocalKeyMap[e.subscription_id];if(void 0===t)return;const n=this.subscriptionsList[t];if("object"!=typeof n)return;const r=n.trackedServers.filter((t=>t.subscriptionId===e.subscription_id));if(1!==r.length)return;const i=e.oob,s=r[0].serverId,o=()=>({data:e.data,server:this.repository.getServerById(s).instance,requestArguments:n.params.arguments,message:void 0,private:i}),a=n.handlers.onData,c=n.queued.data;a.length>0?a.forEach((e=>{"function"==typeof e&&e(o())})):c.push(o())};handleSubscriptionCancelled=e=>{const t=this.subscriptionIdToLocalKeyMap[e.subscription_id];if(void 0===t)return;const n=this.subscriptionsList[t];if("object"!=typeof n)return;const r=n.trackedServers.length-1;n.trackedServers=n.trackedServers.filter((t=>t.subscriptionId!==e.subscription_id||(n.queued.closers.push(t.serverId),!1))),n.trackedServers.length===r&&(n.trackedServers.length<=0&&(this.timedCache.add(n),clearTimeout(n.timeoutId),this.callOnClosedHandlers(n),delete this.subscriptionsList[t]),delete this.subscriptionIdToLocalKeyMap[e.subscription_id])};callOnClosedHandlers(e,t){const n=e.queued.closers.length,r=n>0?e.queued.closers[n-1]:null;let i;void 0!==r&&"string"==typeof r&&(i=this.repository.getServerById(r).instance),e.handlers.onClosed.forEach((n=>{"function"==typeof n&&n({message:t||"ServerInitiated",requestArguments:e.params.arguments||{},server:i,stream:e.method})}))}closeSubscription(e){const t=this.subscriptionsList[e];"object"==typeof t&&(t.trackedServers.forEach((e=>{void 0!==e.subscriptionId&&(t.queued.closers.push(e.serverId),this.session.sendFireAndForget({type:"unsubscribe",subscription_id:e.subscriptionId,reason_uri:"",reason:ET}),delete this.subscriptionIdToLocalKeyMap[e.subscriptionId])})),t.trackedServers=[],this.callOnClosedHandlers(t,ET),delete this.subscriptionsList[e])}}class kT{session;repository;logger;streaming;constructor(e,t,n){this.session=e,this.repository=t,this.logger=n,e.on("peer-added",(e=>this.handlePeerAdded(e))),e.on("peer-removed",(e=>this.handlePeerRemoved(e))),e.on("methods-added",(e=>this.handleMethodsAddedMessage(e))),e.on("methods-removed",(e=>this.handleMethodsRemovedMessage(e))),this.streaming=new AT(e,t,n)}subscribe(e,t,n,r,i,s){this.streaming.subscribe(e,t,n,r,i,s)}invoke(e,t,n,r){const i=r.id,s={type:"call",server_id:i,method_id:t.gatewayId,arguments_kv:n};return this.session.send(s,{invocationId:e,serverId:i}).then((e=>this.handleResultMessage(e))).catch((e=>this.handleInvocationError(e)))}drainSubscriptions(){return this.streaming.drainSubscriptions()}drainSubscriptionsCache(){return this.streaming.drainSubscriptionsCache()}handlePeerAdded(e){const t=e.new_peer_id,n=e.identity,r=!e.meta||e.meta.local,i=Number(n.process),s={machine:n.machine,pid:isNaN(i)?n.process:i,instance:n.instance,application:n.application,applicationName:n.applicationName,environment:n.environment,region:n.region,user:n.user,windowId:n.windowId,peerId:t,api:n.api,isLocal:r};this.repository.addServer(s,t)}handlePeerRemoved(e){const t=e.removed_id,n=e.reason;this.repository.removeServerById(t,n)}handleMethodsAddedMessage(e){const t=e.server_id;e.methods.forEach((e=>{this.repository.addServerMethod(t,e)}))}handleMethodsRemovedMessage(e){const t=e.server_id,n=e.methods,r=this.repository.getServerById(t);Object.keys(r.methods).forEach((e=>{const i=r.methods[e];n.indexOf(i.gatewayId)>-1&&this.repository.removeServerMethod(t,e)}))}handleResultMessage(e){const t=e._tag.invocationId,n=e.result,r=e._tag.serverId;return{invocationId:t,result:n,instance:this.repository.getServerById(r).instance,status:sT.Success,message:""}}handleInvocationError(e){if(this.logger.debug(`handle invocation error ${JSON.stringify(e)}`),"_tag"in e){const t=e._tag.invocationId,n=e._tag.serverId,r=this.repository.getServerById(n),i=e.reason;return{invocationId:t,result:e.context,instance:r.instance,status:sT.Error,message:i}}return{invocationId:"",message:e.message,status:sT.Error,error:e}}}function _T(e,t,n,r,i,s){const o=i.logger.subLogger("gw3-protocol");let a;const c=new Promise((e=>{a=e})),l=t.domain("agm",["subscribed"]),u=new vT(l,n,r,o.subLogger("server")),h=new kT(l,n,o.subLogger("client"));return l.onJoined((i=>{n.addServer(e,t.peerId),i?async function(){o.info("reconnected - will replay registered methods and subscriptions"),h.drainSubscriptionsCache().forEach((e=>{const t=e.method,n=Object.assign({},e.params);o.info(`trying to soft-re-subscribe to method ${t.name}, with params: ${JSON.stringify(n)}`),s.client.subscribe(t,n,void 0,void 0,e).then((()=>o.info(`soft-subscribing to method ${t.name} DONE`))).catch((e=>o.warn(`subscribing to method ${t.name} failed: ${JSON.stringify(e)}}`)))}));const e=[],t=h.drainSubscriptions();for(const n of t){const t=n.method,r=Object.assign({},n.params);o.info(`trying to re-subscribe to method ${t.name}, with params: ${JSON.stringify(r)}`),e.push(s.client.subscribe(t,r,void 0,void 0,n).then((()=>o.info(`subscribing to method ${t.name} DONE`))))}const n=r.getList();r.reset();for(const t of n){const n=t.definition;t.stream?e.push(s.server.createStream(n,t.streamCallbacks,void 0,void 0,t.stream).then((()=>o.info(`subscribing to method ${n.name} DONE`))).catch((()=>o.warn(`subscribing to method ${n.name} FAILED`)))):t?.theFunction?.userCallback?e.push(s.register(n,t.theFunction.userCallback).then((()=>o.info(`registering method ${n.name} DONE`))).catch((()=>o.warn(`registering method ${n.name} FAILED`)))):t?.theFunction?.userCallbackAsync&&e.push(s.registerAsync(n,t.theFunction.userCallbackAsync).then((()=>o.info(`registering method ${n.name} DONE`))).catch((()=>o.warn(`registering method ${n.name} FAILED`))))}await Promise.all(e),o.info("Interop is re-announced")}().then((()=>t.setLibReAnnounced({name:"interop"}))).catch((e=>o.warn(`Error while re-announcing interop: ${JSON.stringify(e)}`))):a&&(a({client:h,server:u}),a=void 0)})),l.onLeft((()=>{n.reset()})),l.join(),c}class PT{instance;readyPromise;client;server;unwrappedInstance;protocol;clientRepository;serverRepository;constructor(e){if(void 0===e)throw new Error("configuration is required");if(void 0===e.connection)throw new Error("configuration.connections is required");const t=e.connection;let n;if("number"!=typeof e.methodResponseTimeout&&(e.methodResponseTimeout=3e4),"number"!=typeof e.waitTimeoutMs&&(e.waitTimeoutMs=3e4),this.unwrappedInstance=new hT(this,void 0,t),this.instance=this.unwrappedInstance.unwrap(),this.clientRepository=new pT(e.logger.subLogger("cRep"),this),this.serverRepository=new gT,3!==t.protocolVersion)throw new Error(`protocol ${t.protocolVersion} not supported`);n=_T(this.instance,t,this.clientRepository,this.serverRepository,e,this),this.readyPromise=n.then((t=>(this.protocol=t,this.client=new oT(this.protocol,this.clientRepository,this.instance,e),this.server=new uT(this.protocol,this.serverRepository),this)))}ready(){return this.readyPromise}serverRemoved(e){return this.client.serverRemoved(e)}serverAdded(e){return this.client.serverAdded(e)}serverMethodRemoved(e){return this.client.serverMethodRemoved(e)}serverMethodAdded(e){return this.client.serverMethodAdded(e)}methodRemoved(e){return this.client.methodRemoved(e)}methodAdded(e){return this.client.methodAdded(e)}methodsForInstance(e){return this.client.methodsForInstance(e)}methods(e){return this.client.methods(e)}servers(e){return this.client.servers(e)}subscribe(e,t,n,r){return this.client.subscribe(e,t,n,r)}createStream(e,t,n,r){return this.server.createStream(e,t,n,r)}unregister(e){return this.server.unregister(e)}registerAsync(e,t){return this.server.registerAsync(e,t)}register(e,t){return this.server.register(e,t)}invoke(e,t,n,r,i,s){return this.client.invoke(e,t,n,r,i,s)}waitForMethod(e){const t=new yP,n=this.client.methodAdded((r=>{r.name===e&&(n(),t.resolve(r))}));return t.promise}}const TT=["subscribed","success"];class FT{connection;logger;peerId;session;subscriptions;readyPromise;constructor(e,t){this.connection=e,this.logger=t,this.peerId=e.peerId,this.subscriptions=[],this.session=e.domain("bus",TT),this.readyPromise=this.session.join(),this.readyPromise.then((()=>{this.watchOnEvent()}))}ready(){return this.readyPromise}publish=(e,t,n)=>{const{routingKey:r,target:i}=n||{},s=this.removeEmptyValues({type:"publish",topic:e,data:t,peer_id:this.peerId,routing_key:r,target_identity:i});this.session.send(s)};subscribe=(e,t,n)=>new Promise(((r,i)=>{const{routingKey:s,target:o}=n||{},a=this.removeEmptyValues({type:"subscribe",topic:e,peer_id:this.peerId,routing_key:s,source:o});this.session.send(a).then((n=>{const{subscription_id:i}=n;this.subscriptions.push({subscription_id:i,topic:e,callback:t,source:o}),r({unsubscribe:()=>(this.session.send({type:"unsubscribe",subscription_id:i,peer_id:this.peerId}),this.subscriptions=this.subscriptions.filter((e=>e.subscription_id!==i)),Promise.resolve())})})).catch((e=>i(e)))}));watchOnEvent=()=>{this.session.on("event",(e=>{const{data:t,subscription_id:n}=e,r=e["publisher-identity"],i=this.subscriptions.find((e=>e.subscription_id===n));i&&(i.source?this.keysMatch(i.source,r)&&i.callback(t,i.topic,r):i.callback(t,i.topic,r))}))};removeEmptyValues(e){const t={};return Object.keys(e).forEach((n=>{void 0!==e[n]&&null!==e[n]&&(t[n]=e[n])})),t}keysMatch(e,t){const n=Object.keys(e);let r=!0;return n.forEach((n=>{e[n]!==t[n]&&(r=!1)})),r}}const DT=(e,t)=>{const n="object"==typeof window?window.iodesktop??window.glue42gd:void 0,r="object"==typeof window?window.gdPreloadPromise??Promise.resolve():Promise.resolve(),i=vP("glue"),s=function(e,t,n){let r;if(mP.isNode()){const e=process.env._GD_STARTING_CONTEXT_;if(e)try{r=JSON.parse(e)}catch{}}function i(){if(e.application)return e.application;if(n)return n.applicationName;if("undefined"!=typeof window&&void 0!==window.glue42electron)return window.glue42electron.application;const t=xP(10);return mP.isNode()?r?r.applicationConfig.name:"NodeJS"+t:"undefined"!=typeof window&&"undefined"!=typeof document?document.title+` (${t})`:t}const s=function(){const s=e.gateway,o=s?.protocolVersion??3,a=s?.reconnectInterval,c=s?.reconnectAttempts;let l=s?.ws;const u=s?.sharedWorker,h=s?.inproc,d=s?.webPlatform??void 0;let p,g,f,m,y;n&&(l=n.gwURL),mP.isNode()&&r&&r.gwURL&&(l=r.gwURL),l||u||h||(l="ws://localhost:8385");const w=i();let v=w;void 0!==n?(g=n.windowId,f=n.pid,n.env&&(m=n.env.env,y=n.env.region),v=n.application??"glue-app",p=n.appInstanceId):mP.isNode()?(f=process.pid,r&&(m=r.env,y=r.region,p=r.instanceId)):void 0!==window?.glue42electron&&(g=window?.glue42electron.instanceId,f=window?.glue42electron.pid,m=window?.glue42electron.env,y=window?.glue42electron.region,v=window?.glue42electron.application??"glue-app",p=window?.glue42electron.instanceId);const b=e.gateway?.replaySpecs??[];b.push(HP);let S={application:v,applicationName:w,windowId:g,instance:p,process:f,region:y,environment:m,api:t.version||UP};return e.identity&&(S=Object.assign(S,e.identity)),{identity:S,reconnectInterval:a,ws:l,sharedWorker:u,webPlatform:d,inproc:h,protocolVersion:o,reconnectAttempts:c,replaySpecs:b}}();let o=i();if("undefined"!=typeof window){const e=window,t=e.htmlContainer?`${e.htmlContainer.containerName}.${e.htmlContainer.application}`:e?.glue42gd?.application;t&&(o=t)}return{bus:e.bus??!1,application:o,auth:"string"==typeof e.auth?{token:e.auth}:e.auth?e.auth:mP.isNode()&&r&&r.gwToken?{gatewayToken:r.gwToken}:e.gateway?.webPlatform||e.gateway?.inproc||e.gateway?.sharedWorker?{username:"glue42",password:"glue42"}:void 0,logger:function(){let t=e.logger;const r="warn";let i;return t||(t=r),n&&(i=n.consoleLogLevel),"string"==typeof t?{console:i??t,publish:r}:{console:i??t.console??r,publish:t.publish??r}}(),connection:s,metrics:e.metrics??!0,contexts:void 0===e.contexts||"boolean"==typeof e.contexts&&e.contexts?{reAnnounceKnownContexts:!0}:"object"==typeof e.contexts&&Object.assign({},{reAnnounceKnownContexts:!0},e.contexts),version:t.version||UP,libs:t.libs??[],customLogger:e.customLogger}}(e=e||{},t=t||{},n);let o,a,c,l,u,h,d;const p={};function g(e,t,n){d=c.canPublish("trace"),d&&c.trace(`registering ${e} module`);const r=()=>{t.initTime=n.stop(),t.initEndTime=n.endTime,t.marks=n.marks,d&&c.trace(`${e} is ready - ${n.endTime-n.startTime}`)};t.initStartTime=n.startTime,t.ready?t.ready().then((()=>{r()})):r(),Array.isArray(e)||(e=[e]),e.forEach((e=>{p[e]=t,DT[e]=t}))}function f(){const e=vP("metrics"),t=s.metrics,r=n?.getMetricsPublishingEnabled,i=s.connection.identity,a=r||(()=>!0),u=("boolean"!=typeof t&&t.disableAutoAppSystem)??!1;return l=lP({connection:t?o:void 0,logger:c.subLogger("metrics"),canUpdateMetric:a,system:"Glue42",service:i?.service??n?.applicationName??s.application,instance:i?.instance??i?.windowId??xP(10),disableAutoAppSystem:u,pagePerformanceMetrics:"boolean"!=typeof t?t?.pagePerformanceMetrics:void 0}),g("metrics",l,e),Promise.resolve()}function m(){const e=vP("interop"),t={connection:o,logger:c.subLogger("interop")};return a=new PT(t),PP.Interop=a,g(["interop","agm"],a,e),Promise.resolve()}function y(){const e=s.activities&&3===o.protocolVersion;if(s.contexts||e){const e=vP("contexts");return u=new nT({connection:o,logger:c.subLogger("contexts"),trackAllContexts:"object"==typeof s.contexts&&s.contexts.trackAllContexts,reAnnounceKnownContexts:"object"==typeof s.contexts&&s.contexts.reAnnounceKnownContexts}),g("contexts",u,e),u}{const e=o.replayer;e&&e.drain(HP.name)}}async function w(){if(!s.bus)return Promise.resolve();const e=vP("bus");return h=new FT(o,c.subLogger("bus")),g("bus",h,e),Promise.resolve()}function v(e){try{return e.forEach((e=>{!function(e,t){const n=vP(e),r=t(p);r&&g(e,r,n)}(e.name,e.create)})),Promise.resolve()}catch(e){return Promise.reject(e)}}return r.then((function(){const e=vP("logger");return c=new PP(`${s.connection.identity?.application}`,void 0,s.customLogger),c.consoleLevel(s.logger.console),c.publishLevel(s.logger.publish),c.canPublish("debug")&&c.debug("initializing glue..."),g("logger",c,e),Promise.resolve(void 0)})).then((function(){const e=vP("connection");o=new kP(s.connection,c.subLogger("connection"));let t=Promise.resolve(s.auth);return s.connection&&!s.auth&&(n?t=n.getGWToken().then((e=>({gatewayToken:e}))):"undefined"!=typeof window&&window?.glue42electron?"string"==typeof window.glue42electron.gwToken&&(t=Promise.resolve({gatewayToken:window.glue42electron.gwToken})):t=Promise.reject("You need to provide auth information")),t.then((t=>{let n;if(e.mark("auth-promise-resolved"),"[object Object]"!==Object.prototype.toString.call(t))throw new Error("Invalid auth object - "+JSON.stringify(t));return n=t,o.login(n)})).then((()=>(g("connection",o,e),s))).catch((e=>{throw o&&o.logout(),e}))})).then((()=>Promise.all([f(),m(),y(),w()]))).then((()=>a.readyPromise)).then((()=>async function(){const t="T42.ACS.RegisterInstance";if(mP.isNode()&&void 0===process.env._GD_STARTING_CONTEXT_&&void 0!==e?.application&&a.methods({name:t}).length>0)try{await a.invoke(t,{appName:e?.application,pid:process.pid})}catch(e){const t=e;c.error(`Cannot register as an instance: ${JSON.stringify(t.message)}`)}}())).then((()=>v(s.libs||[]))).then((function(){const e=Object.keys(p).map((e=>{const t=p[e];return t.ready?t.ready():Promise.resolve()}));return Promise.all(e)})).then((function(){const r={coreVersion:UP,version:s.version};i.stop();const d={feedback:e=>{a&&a.invoke("T42.ACS.Feedback",e,"best")},info:r,logger:c,interop:a,agm:a,connection:o,metrics:l,contexts:u,bus:h,version:s.version,userConfig:e,done:()=>(c?.info("done called by user..."),o.logout())};if(d.performance={get glueVer(){return s.version},get glueConfig(){return JSON.stringify(e)},get browser(){return window.performance.timing.toJSON()},get memory(){return window.performance.memory},get initTimes(){const e=wP;return Object.keys(e).map((t=>{const n=e[t];return{name:t,duration:n.endTime-n.startTime,marks:n.marks,startTime:n.startTime,endTime:n.endTime}}))}},Object.keys(p).forEach((e=>{const t=p[e];d[e]=t})),d.config={},Object.keys(s).forEach((e=>{d.config[e]=s[e]})),t&&t.extOptions&&Object.keys(t.extOptions).forEach((e=>{d.config[e]=t?.extOptions[e]})),t?.enrichGlue&&t.enrichGlue(d),n&&n.updatePerfData&&n.updatePerfData(d.performance),d.agm){const e=(e,t,n)=>function(){return d.logger.warn(`glue.js - 'glue.agm.${t}' method is deprecated, use 'glue.interop.${n}' instead.`),e.apply(d.agm,arguments)},t=d.agm;t.method_added=e(d.agm.methodAdded,"method_added","methodAdded"),t.method_removed=e(d.agm.methodRemoved,"method_removed","methodRemoved"),t.server_added=e(d.agm.serverAdded,"server_added","serverAdded"),t.server_method_aded=e(d.agm.serverMethodAdded,"server_method_aded","serverMethodAdded"),t.server_method_removed=e(d.agm.serverMethodRemoved,"server_method_removed","serverMethodRemoved")}return d})).catch((e=>Promise.reject({err:e,libs:p})))};"undefined"!=typeof window&&(window.IOConnectCore=DT),DT.version=UP,DT.default=DT;const OT=(e,t,n)=>new Promise(((r,i)=>{let s=!0;const o=setTimeout((()=>{if(!s)return;s=!1;i(n||`Promise timeout hit: ${t}`)}),t);e().then((e=>{s&&(s=!1,clearTimeout(o),r(e))})).catch((e=>{s&&(s=!1,clearTimeout(o),i(e))}))})),RT=(e,t,n)=>new Promise(((r,i)=>{const s=setTimeout((()=>{i(n||`Promise timeout hit: ${t}`)}),t);new Promise(e).then((e=>{clearTimeout(s),r(e)})).catch((e=>{clearTimeout(s),i(e)}))}));var NT="3.3.1";class jT{portsBridge;sessionStorage;_config;_systemGlue;_contextsTrackingGlue;_clientGlue;_systemStream;_workspacesStream;_platformClientWindowId;_systemSettings;constructor(e,t){this.portsBridge=e,this.sessionStorage=t}get logger(){return Ym.get("glue.controller")}get workspaces(){if(!this._clientGlue.workspaces)throw new Error("Cannot access the Workspaces API");return this._clientGlue.workspaces}get isWorkspacesEnabled(){return!!this._clientGlue.workspaces}get me(){return this._clientGlue.interop.instance}get platformVersion(){return NT}get clientGlue(){return this._clientGlue}get contextsTrackingGlue(){return this._contextsTrackingGlue}get systemGlue(){return this._systemGlue}get platformWindowId(){return this._platformClientWindowId.slice()}async start(e){this._config=e;const t=this.sessionStorage.getSystemSettings();if(!t)throw new Error("Cannot initiate the glue controller, because the system settings are not defined");this._systemSettings=t,this._systemGlue=await this.initSystemGlue(e.browser),Ym.setLogger(this._systemGlue.logger),this._contextsTrackingGlue=await this.setUpCtxTracking(e)}async initClientGlue(e,t,n,r){const i=await this.portsBridge.createInternalClient();this.registerClientWindow(n);const s={application:"Platform",gateway:{webPlatform:{port:i,windowId:this.platformWindowId}}},o=Object.assign({},e,s);return this._clientGlue=t?await t(o):await ms(o),this._clientGlue.webPlatform=r,this._clientGlue}async createPlatformSystemMethod(e){await this.createMethodAsync("T42.Web.Platform.Control",e)}async createPlatformSystemStream(){this._systemStream=await this.createStream("T42.Web.Platform.Stream")}async createSystemStream(e){return this.createStream(e)}async createWorkspacesStream(){this._workspacesStream=await this.createStream("T42.Web.Platform.WSP.Stream")}async createWorkspacesEventsReceiver(e){await this._systemGlue.interop.register("T42.Workspaces.Events",(t=>e(t)))}pushSystemMessage(e,t,n){if(!this._systemStream)throw new Error(`Cannot push data to domain: ${e}, because the system stream is not created`);this._systemStream.push({domain:e,operation:t,data:n})}pushWorkspacesMessage(e){if(!this._workspacesStream)throw new Error("Cannot push data to domain: workspaces, because the workspaces stream is not created");this._workspacesStream.push({data:e})}async callFrame(e,t,n){const r={operation:e.name,operationArguments:t},i=`Internal Platform->Frame Communication Error. Attempted calling workspace frame: ${n} for operation ${e.name} `;if(e.dataDecoder){const t=e.dataDecoder.run(r.operationArguments);if(!t.ok)throw new Error(`${i} OutBound validation failed: ${JSON.stringify(t.error)}`)}const s=Ms,o=await this.transmitMessage(s,r,i,{windowId:n},{methodResponseTimeoutMs:3e4,waitTimeoutMs:3e4});if(e.resultDecoder){const t=e.resultDecoder.run(o);if(!t.ok)throw new Error(`${i} Result validation failed: ${JSON.stringify(t.error)}`)}return o}isValidWindowId(e){return!(!e||!this.clientGlue.windows.findById(e))}async sendShutDownSignals(){const e=this.clientGlue.windows.list().filter((e=>e.id!==this.platformWindowId));await Promise.all(e.map((e=>e.close())));const t={domain:"system",operation:"platformShutdown"},n=`Internal Platform-> ${t.domain} Domain Communication Error. Attempted sending shutdown signal to all clients.`,r=this.clientGlue.interop.servers().filter((t=>e.every((e=>e.id!==t.windowId)))).map((e=>({instance:e.instance})));try{await this.transmitMessage($s,t,n,r,{methodResponseTimeoutMs:3e4,waitTimeoutMs:3e4})}catch(e){console.warn("Failed to send shutdown signal to all clients",e)}}shutdown(){this.systemGlue.connection.logout(),this.contextsTrackingGlue?.connection.logout(),this.clientGlue.connection.logout()}async callWindow(e,t,n,r){const i=t.name,s={domain:e,operation:i,data:n},o=`Internal Platform-> ${e} Domain Communication Error. Attempted calling client window: ${JSON.stringify(r)} for operation ${i}. `;if(t.dataDecoder){const e=t.dataDecoder.run(s.data);if(!e.ok)throw new Error(`${o} OutBound validation failed: ${JSON.stringify(e.error)}`)}const a=await this.transmitMessage($s,s,o,r,{methodResponseTimeoutMs:3e4,waitTimeoutMs:3e4});if(t.resultDecoder){const e=t.resultDecoder.run(a);if(!e.ok)throw new Error(`${o} Result validation failed when calling window: ${JSON.stringify(r)} for operation ${i}: ${JSON.stringify(e.error)}`)}return a}setStartContext(e,t,n){return RT(((r,i)=>{let s;const o=((e,t)=>{let n=e;return()=>{n--,0===n&&t()}})(2,(()=>{r(),s()})),a=`___${n}___${e}`;(this._clientGlue.contexts.all().some((e=>e===a))?this.waitContextDestroy(a):Promise.resolve()).then((()=>this._clientGlue.contexts.subscribe(a,o))).then((e=>(s=e,this._systemGlue.contexts.set(a,t)))).then(o).catch(i)}),1e4,`Timed out waiting to set the ${n} context for: ${e}`)}waitContextDestroy(e){return new Promise(((t,n)=>{let r=0;const i=setInterval((()=>{const s=this._clientGlue.contexts.all().some((t=>t===e));if(++r,!s)return clearInterval(i),void t();50===r&&(clearInterval(i),n(`Timed out waiting for context: ${e} to disappear`))}),100)}))}async clearContext(e,t){const n=`___${t}___${e}`;this._systemGlue.contexts.all().some((e=>e===n))&&await this._systemGlue.contexts.destroy(n)}async preserveAllWorkspaceWindowsContext(e){const t=this.sessionStorage.pickWorkspaceClients((t=>t.workspaceId===e));for(const e of t){const t=await this._systemGlue.contexts.get(`___window___${e.windowId}`);t&&("object"!=typeof t||Object.keys(t).length)&&await this._systemGlue.contexts.set(`___window-hibernation___${e.windowId}`,t)}}async pullHibernatedContext(e){const t=`___window-hibernation___${e}`;if(!this._systemGlue.contexts.all().some((e=>e===t)))return;const n=await this._systemGlue.contexts.get(t);return await this._systemGlue.contexts.destroy(t),n}getServers(){return this._clientGlue.interop.servers()}subscribeForServerAdded(e){return this._clientGlue.interop.serverAdded(e)}subscribeForMethodAdded(e){return this._clientGlue.interop.methodAdded(e)}invokeMethod(e,t,n,r,i,s){return this._clientGlue.interop.invoke(e,t,n,r,i,s)}setContext(e,t){return this._systemGlue.contexts.set(e,t)}destroyContext(e){return this._systemGlue.contexts.destroy(e)}switchTransport(e,t){if("contextsTrack"===t)return this._contextsTrackingGlue?this._contextsTrackingGlue.connection.switchTransport(e):Promise.resolve({success:!0});return("system"===t?this._systemGlue:this._clientGlue).connection.switchTransport(e)}onDisconnected(e){return this._systemGlue.connection.disconnected(e)}getSystemGlueTransportName(){return this._systemGlue.connection.transport.name()}async importLayout(e){await this._clientGlue.layouts.import([e],"merge")}async getLayout(e){return await this._clientGlue.layouts.get(e,"Global")}async openWindow(e){this._clientGlue.windows.list().find((t=>t.name===e.name))&&(e.name=`${e.name}-${Zm(7)}`);const t={context:e.context,top:e.bounds?.top,left:e.bounds?.left,width:e.bounds?.width,height:e.bounds?.height,layoutComponentId:e.layoutComponentId};await this._clientGlue.windows.open(e.name,e.url,t)}async startApp(e){const t={waitForAGMReady:!1,top:e.bounds?.top,left:e.bounds?.left,width:e.bounds?.width,height:e.bounds?.height,layoutComponentId:e.layoutComponentId};await this._clientGlue.appManager.application(e.name).start(e.context,t)}async getOrCreateWorkspaceFrame({bounds:e,layoutComponentId:t,frameId:n}){return n?await this.workspaces.getFrame((e=>e.id===n)):await this.workspaces.createEmptyFrame({frameConfig:{bounds:e||void 0},layoutComponentId:t||void 0})}getAppNameByInstanceId(e){return this._clientGlue.interop.servers().find((t=>t.instance===e))?.application}getAllWindowNames(){return this._clientGlue.windows.list().map((e=>e.name))}getAllOpenedIds(){return this._clientGlue.windows.list().map((e=>e.id))}getAllOtherNonPlatformWindows(e){return this._clientGlue.windows.list().filter((t=>"Platform"!==t.name&&t.id!==e))}async getAllOpenedFrameIds(){return(await this.workspaces.getAllFrames()).map((e=>e.id))}getAllApplicationNames(){return this._clientGlue.appManager.applications().map((e=>e.name))}getAllApplications(){return this._clientGlue.appManager.applications()}getAllLayoutsSummaries(){return this._clientGlue.layouts.getAll("Global")}getAllWorkspacesSummaries(){return this._clientGlue.layouts.getAll("Workspace")}async getWorkspaceWindowById(e){return this._clientGlue.workspaces?.getWindow((t=>t.id===e))}getWindowById(e){return this._clientGlue.windows.list().find((t=>t.id===e))}async getAllWorkspacesFrames(){return await this.workspaces.getAllFrames()}async getWorkspacesByFrameId(e){return await this.workspaces.getAllWorkspaces((t=>t.frameId===e))}registerProvider(e){if(!this._clientGlue.search)throw new Error("Cannot start the search provider for Glue42 Core Plus, because the Search API is missing");return this._clientGlue.search.registerProvider(e)}async processServerApplicationsData(e){if(!e||!e.data)return;const t=e.data,n=await this._clientGlue.appManager.inMemory.import(t,"merge");n.errors&&n.errors.length&&n.errors.forEach((e=>{this.logger?.warn(`App: ${e.app} was not imported, because of error: ${e.error}`)}))}async initSystemGlue(e){const t=await this.portsBridge.createInternalClient(),n=e?.systemLogger?.level??"warn";return await DT({application:"Platform-System",gateway:{webPlatform:{port:t}},logger:n,identity:{instance:this._systemSettings.systemInstanceId}})}async setUpCtxTracking(e){if(this._config.connection.preferred)return await this.initContextsTrackingGlue({reAnnounceKnownContexts:!0,trackAllContexts:!0},e)}async initContextsTrackingGlue(e,t){const n=await this.portsBridge.createInternalClient();return await DT({application:"Platform-Contexts-Track",gateway:{webPlatform:{port:n}},logger:t?.browser?.systemLogger?.level??"warn",contexts:e,identity:{instance:this._systemSettings.ctxTrackInstanceId}})}registerClientWindow(e){const t=window.name?window.name:`g42-${Zm(10)}`;if(e){const e=this.sessionStorage.getPlatformFrame();if(this._platformClientWindowId=e?e.windowId:t,!e){const e={windowId:this.platformWindowId,active:!0,isPlatform:!0};this.sessionStorage.saveFrameData(e)}return void(window.name=this.platformWindowId)}const n=this.sessionStorage.getWindowDataByName("Platform");this._platformClientWindowId=n?n.windowId:t,n||this.sessionStorage.saveWindowData({name:"Platform",windowId:this.platformWindowId}),window.name=this.platformWindowId}async createMethodAsync(e,t){await this._systemGlue.interop.registerAsync(e,t)}async createStream(e){return this._systemGlue.interop.createStream(e)}async transmitMessage(e,t,n,r,i){let s;try{if(s=await this._systemGlue.interop.invoke(e,t,r,i),!s)throw new Error(`${n} Received unsupported result from the client - empty result`);if(!Array.isArray(s.all_return_values)||0===s.all_return_values.length)throw new Error(`${n} Received unsupported result from the client - empty values collection`)}catch(e){if(e&&e.all_errors&&e.all_errors.length){const t=e.all_errors[0].message;throw new Error(`${n} -> Inner message: ${t}`)}throw new Error(`${n} -> Inner message: ${e.message}`)}return s.all_return_values[0].returned}}function $T(e){if(e&&e.errorHandling&&"function"!=typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"==typeof e.errorHandling&&e.errorHandling,n={};function r(n,r){var i=n instanceof Error?n:new Error(n);if(t)t(i);else{var s='[ERROR] callback-registry: User callback for key "'+r+'" failed: '+i.stack;if(e)switch(e.errorHandling){case"log":return console.error(s);case"silent":return;case"throw":throw new Error(s)}console.error(s)}}return{add:function(e,t,i){var s=n[e];return s||(s=[],n[e]=s),s.push(t),i&&setTimeout((function(){i.forEach((function(i){var s;if(null===(s=n[e])||void 0===s?void 0:s.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(t){r(t,e)}}))}),0),function(){var r=n[e];r&&(0===(r=r.reduce((function(e,n,r){return n===t&&e.length===r||e.push(n),e}),[])).length?delete n[e]:n[e]=r)}},execute:function(e){for(var t=[],i=1;i{this.startupResolve=e}));const t=this.sessionStorage.getSystemSettings();if(!t)throw new Error("Cannot initiate the platform port bridge, because the system settings are not defined");this._communicationId=t.systemInstanceId,await this.gateway.start(e?.gateway),this.setupListeners()}start(){this.startupResolve()}async createInternalClient(){const e=this.ioc.createMessageChannel();return await this.gateway.setupInternalClient(e.port1),e.port2}onClientUnloaded(e){return this.registry.add("client-unloaded",e)}async handleExtConnectionRequest(e,t){const n=e.glue42core;if(!!!n.parentWindowId){const e=n.clientId,t={windowId:e,name:e};await this.ioc.windowsController.processNewWindow(t)}await this.gateway.connectExtClient(t,this.removeClient.bind(this));const r=this.sessionStorage.getWindowDataByName("Platform")?.windowId,i={glue42core:{type:Ss.name,parentWindowId:r,appName:"ext-no-app",clientId:n.clientId,clientType:"child"}};this.allPorts[n.clientId]=t,t.postMessage(i)}setActivePreferredTransportConfig(e){"secondary"!==e.type?delete this.activePreferredTransportConfig:this.activePreferredTransportConfig=e}setPreferredActivated(){this.isPreferredActivated=!0}async switchAllClientsTransport(e){const t=Object.keys(this.allPorts).map((t=>this.sendClientPortRequest({type:Ps.name,timeout:Hs,clientId:t,args:{switchSettings:e}})));await Promise.all(t)}async checkClientsPreferredLogic(){const e=Object.keys(this.allPorts).map((e=>this.sendClientPortRequest({type:Os.name,timeout:5e3,clientId:e})));try{return await Promise.all(e),{success:!0}}catch(e){return{success:!1}}}async checkClientsPreferredConnection(e){const t=Object.keys(this.allPorts).map((t=>this.sendClientPortRequest({type:Rs.name,args:{url:e},timeout:Hs,clientId:t})));try{return await Promise.all(t),{success:!0}}catch(e){return{success:!1}}}removeGwClient(e){const t=this.allClients.find((t=>t.bridgeInstanceId===e));t&&(this.allClients=this.allClients.filter((t=>t.bridgeInstanceId!==e)),t.client.disconnect(),this.allPorts[t.clientId]&&delete this.allPorts[t.clientId])}unloader(){this.unLoadStarted=!0;for(const e in this.allPorts)this.allPorts[e].postMessage({type:"platformUnload"})}genericMessageHandler(e){const t=e.data?.glue42core;if(t&&!this.unLoadStarted)if(t.type!==Is.name)t.type!==bs.name?t.type!==Cs.name?t.type!==Es.name||this.startUpPromise.then((()=>this.handleParentPing(e.source,e.origin))):this.startUpPromise.then((()=>this.handlePlatformPing(e.source,e.origin))):this.startUpPromise.then((()=>this.handleRemoteConnectionRequest(e.source,e.origin,t.clientId,t.clientType,t.bridgeInstanceId,t.selfAssignedWindowId)));else{const n={windowId:t.data.ownWindowId,win:e.source};this.registry.execute("client-unloaded",n)}}async handleRemoteConnectionRequest(e,t,n,r,i,s){const o=this.ioc.createMessageChannel(),a=await this.gateway.connectClient(o.port1);this.setupGwClientPort({client:a,clientId:n,clientPort:o.port1}),this.allClients.push({client:a,bridgeInstanceId:i,clientId:n});const c=this.sessionStorage.getBridgeInstanceData(i),l=c?.appName,u=this.sessionStorage.getWindowDataByName("Platform")?.windowId,h={glue42core:{type:Ss.name,port:o.port2,communicationId:this._communicationId,isPreferredActivated:this.isPreferredActivated,parentWindowId:u,appName:l,clientId:n,clientType:r}};s&&await this.ioc.windowsController.registerSelfAssignedWindow({windowId:s,name:s},s),e.postMessage(h,t,[o.port2])}handleParentPing(e,t){const n={glue42core:{type:As.name}};e.postMessage(n,t)}handlePlatformPing(e,t){const n={glue42core:{type:xs.name}};e.postMessage(n,t)}removeClient(e,t,n){if(!e)return;if(this.allPorts[e]&&!n&&delete this.allPorts[e],!t)return;const r={windowId:e};this.registry.execute("client-unloaded",r)}setupGwClientPort(e){this.allPorts[e.clientId]&&this.allPorts[e.clientId].onmessage&&(this.allPorts[e.clientId].onmessage=null),this.allPorts[e.clientId]=e.clientPort,e.clientPort.onmessage=t=>{const n=t.data?.glue42core;if(n&&(n.type===Is.name||n.type===ks.name))return this.removeClient(n.data.clientId,!1,n.type===ks.name),void(this.allClients.some((e=>e.clientId===n.data.clientId))&&(this.allClients=this.allClients.filter((e=>e.clientId!==n.data.clientId)),e.client.disconnect()));if(n&&n.type===Ts.name){n.args.success?this.transactionsController.completeTransaction(n.transactionId):this.transactionsController.failTransaction(n.transactionId,`The client: ${e.clientId} could not connect using the provided transport config.`)}else if(n&&n.type===Fs.name){const t=n.transactionId;e.clientPort.postMessage({type:Ds.name,args:{transportState:this.getCurrentTransportState()},transactionId:t})}else{if(n&&n.type===Ns.name)return this.transactionsController.completeTransaction(n.transactionId);if(n&&n.type===js.name){const t=n.args;return t.error?this.transactionsController.failTransaction(n.transactionId,t.error):t.live?this.transactionsController.completeTransaction(n.transactionId):this.transactionsController.failTransaction(n.transactionId,`Client ${e.clientId} could not connect to the preferred WS.`)}this.allClients.every((t=>t.client!==e.client))?this.logger?.trace(`Ignoring a protocol message, because the destination client has been disconnected: ${JSON.stringify(t.data)}`):e.client.send(t.data)}}}getCurrentTransportState(){const e=this.ioc.glueController.getSystemGlueTransportName();return{transportName:e,type:e===Bs?"default":"secondary",transportConfig:e===Bs?void 0:this.activePreferredTransportConfig?.transportConfig}}sendClientPortRequest(e){const t=this.allPorts[e.clientId];if(!t)throw new Error(`Cannot sent port request: ${e.type} to ${e.clientId}, because there is no such client`);const n=this.transactionsController.createTransaction(e.type,e.timeout||Hs),r=e.type,i=e.args;return t.postMessage({type:r,args:i,transactionId:n.id}),n.lock}setupListeners(){this._genericMessageHandler=this.genericMessageHandler.bind(this),window.addEventListener("message",this._genericMessageHandler),this._unloaderHandler=this.unloader.bind(this),window.addEventListener("unload",this._unloaderHandler)}}const BT=hA(aA("openWindow"),aA("windowHello"),aA("getUrl"),aA("getTitle"),aA("setTitle"),aA("moveResize"),aA("focus"),aA("close"),aA("getBounds"),aA("getFrameBounds"),aA("registerWorkspaceWindow"),aA("unregisterWorkspaceWindow"),aA("operationCheck"),aA("focusChange"),aA("getChannel")),LT=cA({name:mA,url:mA,options:uA(bk)});cA({windowId:mA,name:mA});const WT=cA({windowId:mA}),HT=cA({windowId:mA,bounds:wA}),UT=cA({bounds:wA}),GT=cA({windowId:mA,url:mA}),VT=cA({windowId:mA,top:uA(iA()),left:uA(iA()),width:uA(fA),height:uA(fA),relative:uA(sA())}),JT=cA({windowId:mA,title:rA()}),KT=cA({channel:uA(mA)}),zT=hA(aA("isWindowInWorkspace"),aA("createWorkspace"),aA("createFrame"),aA("initFrame"),aA("getAllFramesSummaries"),aA("getFrameSummary"),aA("getAllWorkspacesSummaries"),aA("getWorkspaceSnapshot"),aA("getAllLayoutsSummaries"),aA("openWorkspace"),aA("deleteLayout"),aA("saveLayout"),aA("importLayout"),aA("exportAllLayouts"),aA("restoreItem"),aA("maximizeItem"),aA("focusItem"),aA("closeItem"),aA("resizeItem"),aA("moveFrame"),aA("getFrameSnapshot"),aA("forceLoadWindow"),aA("ejectWindow"),aA("setItemTitle"),aA("moveWindowTo"),aA("addWindow"),aA("addContainer"),aA("bundleWorkspace"),aA("bundleItem"),aA("changeFrameState"),aA("getFrameState"),aA("getFrameBounds"),aA("frameHello"),aA("hibernateWorkspace"),aA("resumeWorkspace"),aA("getWorkspacesConfig"),aA("lockWorkspace"),aA("lockContainer"),aA("lockWindow"),aA("pinWorkspace"),aA("unpinWorkspace"),aA("getWorkspaceIcon"),aA("setWorkspaceIcon"),aA("checkStarted"),aA("getPlatformFrameId"),aA("getWorkspaceWindowsOnLayoutSaveContext"),aA("getWorkspacesLayouts"),aA("setMaximizationBoundary"),aA("operationCheck"),aA("getWorkspaceWindowFrameBounds"),aA("focusChange"),aA("bringBackToWorkspace")),QT=cA({windowId:uA(mA)}),XT=cA({name:mA,windowId:mA,frameId:mA,workspaceId:uA(mA),appName:uA(mA),context:uA(oA()),title:uA(mA)}),YT=cA({inWorkspace:sA()}),ZT=hA(aA("workspace"),aA("row"),aA("column"),aA("group")),eF=hA(aA("row"),aA("column"),aA("group")),tF=hA(aA("maximized"),aA("minimized"),aA("normal"));cA({saveLayout:uA(sA())});const nF=cA({name:mA}),rF=cA({type:uA(aA("window")),appName:uA(mA),windowId:uA(mA),context:uA(oA())}),iF=cA({type:aA("window"),appName:uA(mA),windowId:uA(mA),context:uA(oA())}),sF=cA({type:uA(eF),children:uA(gA((()=>lA(hA(rF,sF))))),config:uA(oA())}),oF=cA({minWidth:uA(iA()),maxWidth:uA(iA()),minHeight:uA(iA()),maxHeight:uA(iA()),allowExtract:uA(sA()),allowReorder:uA(sA()),allowDrop:uA(sA()),allowDropHeader:uA(sA()),allowDropLeft:uA(sA()),allowDropTop:uA(sA()),allowDropRight:uA(sA()),allowDropBottom:uA(sA()),showMaximizeButton:uA(sA()),showEjectButton:uA(sA()),showAddWindowButton:uA(sA())}),aF=cA({minHeight:uA(iA()),maxHeight:uA(iA()),allowDrop:uA(sA()),allowSplitters:uA(sA()),isPinned:uA(sA()),maximizationBoundary:uA(sA())}),cF=cA({minWidth:uA(iA()),maxWidth:uA(iA()),allowDrop:uA(sA()),allowSplitters:uA(sA()),isPinned:uA(sA()),maximizationBoundary:uA(sA())}),lF=cA({type:aA("column"),children:uA(gA((()=>lA(hA(iF,dF))))),config:uA(cF)}),uF=cA({type:aA("row"),children:uA(gA((()=>lA(hA(iF,dF))))),config:uA(aF)}),hF=cA({type:aA("group"),children:uA(gA((()=>lA(hA(iF,dF))))),config:uA(oF)}),dF=hA(hF,lF,uF);hA(rA().where((e=>"maximized"===e.toLowerCase()),"Expected a case insensitive variation of 'maximized'"),rA().where((e=>"normal"===e.toLowerCase()),"Expected a case insensitive variation of 'normal'"));const pF=cA({bounds:uA(cA({left:uA(iA()),top:uA(iA()),width:uA(fA),height:uA(fA)})),frameId:uA(mA)}),gF=hA(aA("direct"),aA("delayed"),aA("lazy")),fF=cA({app:uA(mA),context:uA(oA()),loadStrategy:uA(gF),title:uA(mA),reuseWorkspaceId:uA(mA),frameId:uA(mA),lockdown:uA(sA()),activateFrame:uA(sA()),newFrame:uA(hA(pF,sA())),noTabHeader:uA(sA()),inMemoryLayout:uA(sA()),isPinned:uA(sA()),icon:uA(mA),isSelected:uA(sA()),positionIndex:uA(fA)}),mF=cA({name:mA,restoreOptions:uA(fF)}),yF=cA({children:uA(lA(hA(rF,sF))),context:uA(oA()),config:uA(cA({title:uA(mA),position:uA(fA),isFocused:uA(sA()),loadStrategy:uA(gF),noTabHeader:uA(sA()),allowDrop:uA(sA()),allowDropLeft:uA(sA()),allowDropTop:uA(sA()),allowDropRight:uA(sA()),allowDropBottom:uA(sA()),allowExtract:uA(sA()),allowWindowReorder:uA(sA()),allowSystemHibernation:uA(sA()),showSaveButton:uA(sA()),allowWorkspaceTabReorder:uA(sA()),allowWorkspaceTabExtract:uA(sA()),showCloseButton:uA(sA()),allowSplitters:uA(sA()),positionIndex:uA(fA)})),frame:uA(cA({reuseFrameId:uA(mA),newFrame:uA(hA(sA(),pF))}))});cA({type:ZT,definition:uA(hA(yF,sF))});const wF=dA(yF,cA({saveConfig:uA(cA({saveLayout:uA(sA())}))})),vF=cA({itemId:mA}),bF=cA({id:mA,isFocused:uA(sA()),isInitialized:uA(sA()),initializationContext:uA(cA({context:uA(oA())}))});cA({id:mA,frameId:mA,positionIndex:iA(),title:mA,focused:sA(),layoutName:uA(mA),isSelected:uA(sA())}),cA({type:eF,id:mA,frameId:mA,workspaceId:mA,positionIndex:iA()});cA({type:hA(aA("frame"),aA("workspace"),aA("container"),aA("window")),branch:mA}),hA(aA("opened"),aA("closing"),aA("closed"),aA("focus"),aA("added"),aA("loaded"),aA("removed"),aA("childrenUpdate"),aA("containerChange"),aA("maximized"),aA("restored"),aA("minimized"),aA("normal"),aA("selected"),aA("lock-configuration-changed"),aA("hibernated"),aA("resumed"));const SF=cA({frameId:mA,title:mA,positionIndex:fA,name:mA,layoutName:uA(mA),isHibernated:sA(),isSelected:sA(),lastActive:iA(),allowDrop:uA(sA()),allowExtract:uA(sA()),allowWindowReorder:uA(sA()),allowSystemHibernation:uA(sA()),allowSplitters:uA(sA()),showCloseButton:uA(sA()),showSaveButton:uA(sA()),allowWorkspaceTabReorder:uA(sA()),allowDropLeft:uA(sA()),allowDropTop:uA(sA()),allowDropRight:uA(sA()),allowDropBottom:uA(sA()),showAddWindowButtons:uA(sA()),showEjectButtons:uA(sA()),showWindowCloseButtons:uA(sA()),minWidth:uA(iA()),maxWidth:uA(iA()),minHeight:uA(iA()),maxHeight:uA(iA()),widthInPx:uA(iA()),heightInPx:uA(iA())}),CF=cA({frameId:mA,workspaceId:mA,positionIndex:iA()}),xF=oA(),IF=dA(CF,cA({windowId:uA(mA),isMaximized:uA(sA()),isFocused:sA(),isSelected:uA(sA()),title:uA(rA()),appName:uA(mA),context:uA(oA())})),EF=cA({id:uA(mA),config:hA(xF,IF),children:uA(gA((()=>lA(EF)))),type:hA(aA("window"),aA("row"),aA("column"),aA("group"))}),AF=cA({id:mA,config:SF,children:lA(EF),frameSummary:bF,context:uA(oA())}),kF=cA({id:mA,config:hA(xF,IF),children:uA(gA((()=>lA(kF)))),type:hA(aA("window"),aA("row"),aA("column"),aA("group"))}),_F=cA({type:aA("group"),config:oA(),children:lA(hA(DA))}),PF=cA({type:aA("column"),config:oA(),children:lA(hA(_F,DA,gA((()=>PF)),gA((()=>TF))))}),TF=cA({type:aA("row"),config:oA(),children:lA(hA(PF,_F,DA,gA((()=>TF))))}),FF=cA({name:mA,type:aA("Workspace"),metadata:uA(oA()),components:lA(cA({type:aA("Workspace"),application:uA(mA),state:cA({config:oA(),context:oA(),children:lA(hA(TF,PF,_F,DA))})}))}),DF=cA({layout:FF,mode:hA(aA("replace"),aA("merge"))}),OF=cA({layouts:lA(FF)}),RF=bF,NF=cA({summaries:lA(RF)}),jF=cA({id:mA,config:SF}),$F=cA({summaries:lA(jF)}),MF=cA({id:mA,config:oA(),workspaces:lA(AF)}),qF=cA({name:mA}),BF=cA({summaries:lA(qF)}),LF=cA({windowId:mA}),WF=oA(),HF=cA({state:tF}),UF=cA({top:iA(),left:iA(),width:fA,height:fA}),GF=cA({bounds:UF}),VF=cA({width:uA(fA),height:uA(fA),relative:uA(sA())}),JF=cA({top:uA(iA()),left:uA(iA()),relative:uA(sA())}),KF=cA({itemId:mA}),zF=cA({itemId:mA,excludeIds:uA(sA())}),QF=cA({frameId:mA,requestedState:tF}),XF=cA({itemId:mA,title:mA}),YF=cA({itemId:mA,containerId:mA}),ZF=dA(KF,VF),eD=dA(KF,JF);cA({id:mA,type:eF});const tD=cA({definition:rF,parentId:mA,parentType:ZT}),nD=cA({definition:dF,parentId:mA,parentType:ZT}),rD=cA({itemId:mA,windowId:uA(mA)});cA({live:sA()});const iD=cA({type:hA(aA("row"),aA("column")),workspaceId:mA}),sD=cA({type:hA(aA("row"),aA("column")),itemId:mA}),oD=cA({workspaceId:mA}),aD=cA({itemId:mA,config:xF});cA({frameSummary:bF,frameBounds:uA(UF)}),cA({workspaceSummary:jF,frameSummary:bF,frameBounds:uA(UF)}),cA({containerSummary:aD}),cA({windowSummary:cA({itemId:mA,parentId:mA,config:IF})});const cD=cA({name:mA,workspaceId:mA,saveContext:uA(sA())}),lD=cA({workspaceId:mA,config:uA(cA({allowDrop:uA(sA()),allowDropLeft:uA(sA()),allowDropTop:uA(sA()),allowDropRight:uA(sA()),allowDropBottom:uA(sA()),allowExtract:uA(sA()),allowWindowReorder:uA(sA()),allowSystemHibernation:uA(sA()),allowSplitters:uA(sA()),showCloseButton:uA(sA()),showSaveButton:uA(sA()),allowWorkspaceTabReorder:uA(sA()),showWindowCloseButtons:uA(sA()),showEjectButtons:uA(sA()),showAddWindowButtons:uA(sA())}))}),uD=cA({windowPlacementId:mA,config:uA(cA({allowExtract:uA(sA()),allowReorder:uA(sA()),showCloseButton:uA(sA())}))}),hD=cA({itemId:mA,type:aA("row"),config:uA(cA({allowDrop:uA(sA()),allowSplitters:uA(sA())}))}),dD=cA({itemId:mA,type:aA("column"),config:uA(cA({allowDrop:uA(sA()),allowSplitters:uA(sA())}))}),pD=cA({itemId:mA,type:aA("group"),config:uA(cA({allowExtract:uA(sA()),allowReorder:uA(sA()),allowDrop:uA(sA()),allowDropHeader:uA(sA()),allowDropLeft:uA(sA()),allowDropTop:uA(sA()),allowDropRight:uA(sA()),allowDropBottom:uA(sA()),showMaximizeButton:uA(sA()),showEjectButton:uA(sA()),showAddWindowButton:uA(sA())}))}),gD=hA(dD,pD,hD),fD=cA({workspaceId:mA,icon:uA(mA)}),mD=cA({workspaceId:mA,icon:uA(mA)}),yD=cA({icon:uA(mA)});cA({applicationName:uA(rA()),frameConfig:uA(pF),context:uA(cA()),layoutComponentId:uA(mA)});const wD=cA({name:mA,restoreOptions:uA(fF)});cA({frameId:mA,workspaces:lA(hA(yF,wD))});const vD=cA({layoutType:hA(aA("Global"),aA("Workspace")),layoutName:mA,windowIds:lA(mA),context:uA(oA()),instances:uA(lA(mA)),ignoreInstances:uA(lA(mA))}),bD=cA({itemId:mA,enabled:sA()}),SD=cA({windowId:mA,windowContext:uA(oA())}),CD=cA({windowsOnSaveData:lA(SD)}),xD=cA({frameId:mA,layoutName:mA,layoutType:hA(aA("Global"),aA("Workspace")),context:uA(oA())}),ID=cA({workspaces:lA(AF)});class ED{glueController;sessionController;stateController;ioc;started=!1;clientResponseTimeoutMs;defaultBounds;explicitClosingWindowIds={};operations={openWindow:{name:"openWindow",execute:this.openWindow.bind(this),dataDecoder:LT},windowHello:{name:"windowHello",execute:this.handleWindowHello.bind(this)},getBounds:{name:"getBounds",dataDecoder:WT,resultDecoder:HT,execute:this.handleGetBounds.bind(this)},getFrameBounds:{name:"getFrameBounds",dataDecoder:WT,resultDecoder:UT,execute:this.handleGetBounds.bind(this)},getUrl:{name:"getUrl",dataDecoder:WT,resultDecoder:GT,execute:this.handleGetUrl.bind(this)},moveResize:{name:"moveResize",dataDecoder:VT,execute:this.handleMoveResize.bind(this)},focus:{name:"focus",dataDecoder:WT,execute:this.handleFocus.bind(this)},close:{name:"close",dataDecoder:WT,execute:this.handleClose.bind(this)},getTitle:{name:"getTitle",dataDecoder:WT,resultDecoder:JT,execute:this.handleGetTitle.bind(this)},setTitle:{name:"setTitle",dataDecoder:JT,execute:this.handleSetTitle.bind(this)},registerWorkspaceWindow:{name:"registerWorkspaceWindow",dataDecoder:XT,execute:this.registerWorkspaceWindow.bind(this)},unregisterWorkspaceWindow:{name:"unregisterWorkspaceWindow",dataDecoder:WT,execute:this.handleWorkspaceClientRemoval.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:EA,resultDecoder:AA,execute:this.handleOperationCheck.bind(this)},focusChange:{name:"focusChange",dataDecoder:Ck,execute:this.handleFocusEvent.bind(this)},getChannel:{name:"getChannel",dataDecoder:WT,resultDecoder:KT,execute:this.handleGetChannel.bind(this)}};constructor(e,t,n,r){this.glueController=e,this.sessionController=t,this.stateController=n,this.ioc=r}get logger(){return Ym.get("windows.controller")}get moveResizeOperation(){return this.operations.moveResize}get getFrameBoundsOperation(){return this.operations.getFrameBounds}get setTitleOperation(){return this.operations.setTitle}get getBoundsOperation(){return this.operations.getBounds}handlePlatformShutdown(){this.started=!1}async start(e){this.clientResponseTimeoutMs=e.windows.windowResponseTimeoutMs,this.defaultBounds=e.windows.defaultWindowOpenBounds,this.started=!0,this.stateController.onWindowDisappeared((e=>this.cleanUpWindow(e).catch((t=>this.logger?.warn(`error while cleaning up window ${e}: ${t?.message}`)))))}async handleControl(e){if(!this.started)throw new Error("Cannot handle this windows control message, because the controller has not been started");const t=e.data,n=e.commandId,r=BT.run(e.operation);if(!r.ok)throw new Error(`This window request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(r.error)}`);const i=r.result,s=this.operations[i].dataDecoder?.run(t);if(s&&!s.ok)throw new Error(`Windows request for ${i} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(s.error)}`);this.logger?.debug(`[${n}] ${i} command is valid with data: ${JSON.stringify(t)}`);const o=await this.operations[i].execute(t,n),a=this.operations[i].resultDecoder?.run(o);if(a&&!a.ok)throw new Error(`Windows request for ${i} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(a.error)}`);return this.logger?.trace(`[${n}] ${i} command was executed successfully`),o}async getWindowTitle(e,t){return(await this.handleGetTitle({windowId:e},t)).title}async getWindowBounds(e,t){return(await this.handleGetBounds({windowId:e},t)).bounds}async processNewWindow(e,t,n){this.logger?.trace(`processing a new window with id: ${e.windowId} and name: ${e.name}`),this.sessionController.saveWindowData(e),n&&this.stateController.add(n,e.windowId),t&&(this.logger?.trace(`setting the context for window ${e.windowId}`),await this.glueController.setStartContext(e.windowId,t,"window")),this.emitStreamData("windowAdded",e)}async handleWorkspaceClientRemoval(e){await this.cleanUpWindow(e.windowId),this.ioc.portsBridge.removeGwClient(e.windowId)}handleClientUnloaded(e,t){if(this.logger?.trace(`handling unloading of ${e}`),e&&!this.explicitClosingWindowIds[e]){if(!t||t.closed)return this.logger?.trace(`${e} detected as closed, processing window cleanup`),void this.cleanUpWindow(e).catch((t=>this.logger?.warn(`error while cleaning up window ${e}: ${t.message}`)));this.logger?.trace(`${e} detected as not closed, adding to state controller`),this.stateController.add(t,e)}}setExplicitClosingWindowId(e){this.explicitClosingWindowIds[e]=!0}async cleanUpWindow(e){this.stateController.remove(e);if(this.sessionController.fullWindowClean(e)){try{await this.glueController.clearContext(e,"window")}catch(t){this.logger?.warn(`error while clearing the context of window ${e}: ${t?.message}`)}this.emitStreamData("windowRemoved",{windowId:e}),delete this.explicitClosingWindowIds[e],await this.waitEventFlush()}}async registerSelfAssignedWindow(e,t){this.logger?.trace(`[${t}] handling workspace window registration with id: ${e.windowId} and name: ${e.name}`),this.sessionController.saveWindowData({windowId:e.windowId,name:e.name,selfAssigned:!0}),this.sessionController.saveNonGlue({windowId:e.windowId}),this.emitStreamData("windowAdded",{windowId:e.windowId,name:e.name}),this.logger?.trace(`[${t}] workspace window registered successfully with id ${e.windowId} and name ${e.name}`)}async registerWorkspaceWindow(e,t){this.logger?.trace(`[${t}] handling workspace window registration with id: ${e.windowId} and name: ${e.name}`),this.sessionController.saveWindowData({windowId:e.windowId,name:e.name}),this.sessionController.saveWorkspaceClient({windowId:e.windowId,frameId:e.frameId,initialTitle:e.title,workspaceId:e.workspaceId}),this.sessionController.saveNonGlue({windowId:e.windowId});const n=await this.glueController.pullHibernatedContext(e.windowId),r=e.context||n;r&&await this.glueController.setStartContext(e.windowId,r,"window"),this.emitStreamData("windowAdded",{windowId:e.windowId,name:e.name}),this.logger?.trace(`[${t}] workspace window registered successfully with id ${e.windowId} and name ${e.name}`)}async handleFocusEvent(e,t){this.logger?.trace(`[${t}] handling focus event from window id: ${e.windowId} and hasFocus: ${e.hasFocus}`),this.emitStreamData("focusChange",e),this.logger?.trace(`[${t}] focus event from window id: ${e.windowId} and hasFocus: ${e.hasFocus} handled`)}async handleOperationCheck(e){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}emitStreamData(e,t){this.logger?.trace(`sending notification of event: ${e} with data: ${JSON.stringify(t)}`),this.glueController.pushSystemMessage("windows",e,t)}async openWindow(e,t){if(this.sessionController.getWindowDataByName(e.name))throw new Error(`Cannot open a window with name: ${e.name}, because a window with that name already exists.`);this.logger?.trace(`[${t}] handling open command with a valid name: ${e.name}, url: ${e.url} and options: ${JSON.stringify(e.options)}`);const n=await this.getStartingBounds(e,t),r=e.options?.windowId??`g42-${Zm(10)}`,i={name:e.name,windowId:r,initialBounds:n,initialUrl:e.url,initialContext:e.options?.context,layoutComponentId:e.options?.layoutComponentId},s=`left=${n.left},top=${n.top},width=${n.width},height=${n.height}`;this.logger?.trace(`[${t}] calling native window open with bounds: ${s}`);const o=window.open(e.url,i.windowId,s);if(!o)throw new Error(`Cannot open window with url: ${e.url} and name: ${e.name}. The most likely reason is that the user has not approved popups or has a blocker.`);return await this.processNewWindow(i,e.options?.context,o),this.logger?.trace(`[${t}] the new window is opened, saved in session, state and announced, responding to the caller`),i}async handleWindowHello(e,t){if(this.logger?.trace(`[${t}] handling a hello message from a real windowId: ${e.windowId}`),e.windowId){this.stateController.remove(e.windowId),this.sessionController.removeNonGlue({windowId:e.windowId});const n=this.sessionController.getWorkspaceClientById(e.windowId);if(n&&n.initialTitle){const r=e.windowId,i=n.initialTitle;OT((()=>this.glueController.callWindow("windows",this.operations.setTitle,{windowId:r,title:i},{windowId:r})),this.clientResponseTimeoutMs).catch((e=>this.logger?.trace(`[${t}] error while setting the workspace window title: ${e.message}`)))}}const n=!(!e.windowId||!this.sessionController.getFrameData(e.windowId)),r=this.sessionController.getAllWindowsData().map((e=>({windowId:e.windowId,name:e.name})));return this.logger?.trace(`[${t}] a full list of all current windows has been compiled, sending it to the caller`),{windows:r,isWorkspaceFrame:n}}handleGetUrl(e,t){if(!this.sessionController.getWindowDataById(e.windowId))throw new Error(`Cannot get the url of window: ${e.windowId}, because it does not exist for the platform`);this.logger?.trace(`[${t}] handling a get url request for window ${e.windowId}`);const n=`Cannot get the url of window: ${e.windowId}, because it is either a non-glue window or it hasn't initiated it's glue yet`;return OT((()=>this.glueController.callWindow("windows",this.operations.getUrl,e,{windowId:e.windowId})),this.clientResponseTimeoutMs,n)}handleGetTitle(e,t){if(!this.sessionController.getWindowDataById(e.windowId))throw new Error(`Cannot get the title of window: ${e.windowId}, because it does not exist for the platform`);this.logger?.trace(`[${t}] handling a get title request for window ${e.windowId}`);const n=`Cannot get the title of window: ${e.windowId}, because it is either a non-glue window or it hasn't initiated it's glue yet`;return OT((()=>this.glueController.callWindow("windows",this.operations.getTitle,e,{windowId:e.windowId})),this.clientResponseTimeoutMs,n)}async handleSetTitle(e,t){if(!this.sessionController.getWindowDataById(e.windowId))throw new Error(`Cannot set the title of window: ${e.windowId}, because it does not exist for the platform`);this.sessionController.getWorkspaceClientById(e.windowId)&&await this.ioc.workspacesController.setItemTitle({itemId:e.windowId,title:e.title},t),this.logger?.trace(`[${t}] handling a set title request for window ${e.windowId} and title: ${e.title}`);const n=`Cannot set the title of window: ${e.windowId}, because it is either a non-glue window or it hasn't initiated it's glue yet`;await OT((()=>this.glueController.callWindow("windows",this.operations.setTitle,e,{windowId:e.windowId})),this.clientResponseTimeoutMs,n)}async handleMoveResize(e,t){if(this.sessionController.getWorkspaceClientById(e.windowId))throw new Error(`Cannot move resize window id ${e.windowId}, because it is in a workspace. Consider using the workspaces API to get more control`);const n=this.sessionController.getWindowDataById(e.windowId);if(!n)throw new Error(`Cannot move resize window: ${e.windowId}, because it does not exist for the platform`);if("Platform"===n.name)throw new Error("Move-resizing the main application is not allowed");this.logger?.trace(`[${t}] handling a move resize request for window ${e.windowId} and data: ${JSON.stringify(e)}`);const r=`Cannot move resize window: ${e.windowId}, because it is either a non-glue window or it hasn't initiated it's glue yet`;await OT((()=>this.glueController.callWindow("windows",this.operations.moveResize,e,{windowId:e.windowId})),this.clientResponseTimeoutMs,r),await this.pause(500)}handleGetBounds(e,t){if(this.sessionController.getWorkspaceClientById(e.windowId))throw new Error(`Cannot get bounds of window id ${e.windowId}, because it is in a workspace. Consider using the workspaces API to get more info`);if(!this.sessionController.getWindowDataById(e.windowId))throw new Error(`Cannot get the bounds of window: ${e.windowId}, because it does not exist for the platform`);this.logger?.trace(`[${t}] handling a get bounds request for window ${e.windowId}`);const n=`Cannot get the bounds of window: ${e.windowId}, because it is either a non-glue window or it hasn't initiated it's glue yet`;return OT((()=>this.glueController.callWindow("windows",this.operations.getBounds,e,{windowId:e.windowId})),this.clientResponseTimeoutMs,n)}async handleFocus(e,t){if(this.sessionController.getWorkspaceClientById(e.windowId))throw new Error(`Cannot focus window id ${e.windowId}, because it is in a workspace. Consider using the workspaces API to get more control`);const n=this.sessionController.getWindowDataById(e.windowId);if(!n)throw new Error(`Cannot focus window: ${e.windowId}, because it is not known by the platform`);this.logger?.trace(`[${t}] handling a focus request for window ${e.windowId}`),window.open(void 0,n.windowId)}async handleClose(e,t){if(this.sessionController.getWorkspaceClientById(e.windowId))return this.logger?.trace(`[${t}] this window is detected as a workspace window, closing via the workspaces controller`),void await this.ioc.workspacesController.closeItem({itemId:e.windowId},t);if(this.sessionController.getInstanceData(e.windowId))return this.logger?.trace(`[${t}] this window is detected as an application instance, closing via the appManager controller`),void await this.ioc.applicationsController.handleInstanceStop({id:e.windowId},t);const n=this.sessionController.getWindowDataById(e.windowId);if(!n)throw new Error(`Cannot close window: ${e.windowId}, because it is not known by the platform`);if("Platform"===n.name)throw new Error("Closing the main application is not allowed");if(n.selfAssigned)throw new Error("Closing self-assigned windows (windows not opened by the Glue API) is not allowed");this.logger?.trace(`[${t}] handling a close request for window ${e.windowId}`),window.open(void 0,n.windowId)?.close(),await this.cleanUpWindow(n.windowId),this.logger?.trace(`[${t}] window ${e.windowId} has been closed, removed from session, state and announced`)}async getStartingBounds(e,t){const n={top:e.options?.top??this.defaultBounds.top,left:e.options?.left??this.defaultBounds.left,height:e.options?.height??this.defaultBounds.height,width:e.options?.width??this.defaultBounds.width};if(!e.options?.relativeTo)return n;const r=e.options.relativeTo,i=this.sessionController.getWindowDataById(r);if(!i)return n;try{const r=(await this.handleGetBounds({windowId:i.windowId},t)).bounds,s=e.options.relativeDirection??"right";return LI(n,r,s)}catch(e){return n}}pause(e){return new Promise((t=>setTimeout(t,e)))}handleGetChannel(e,t){if(!this.sessionController.getWindowDataById(e.windowId))throw new Error(`Cannot get the channel of window: ${e.windowId}, because it does not exist for the platform`);this.logger?.trace(`[${t}] handling a get channel request for window ${e.windowId}`);const n=`Cannot get the channel of window: ${e.windowId}, because it is either a non-glue window or it hasn't initiated it's glue yet`;return OT((()=>this.glueController.callWindow("windows",this.operations.getChannel,e,{windowId:e.windowId})),this.clientResponseTimeoutMs,n)}waitEventFlush(){return new Promise((e=>setTimeout(e,10)))}}class AD{sessionStorage;windowsNamespace="g42_core_windows";instancesNamespace="g42_core_instances";bridgeInstancesNamespace="g42_core_bridge";nonGlueNamespace="g42_core_nonglue";workspaceWindowsNamespace="g42_core_workspace_clients";workspaceFramesNamespace="g42_core_workspace_frames";workspaceHibernationNamespace="g42_core_workspace_hibernation";globalLayoutsNamespace="g42_core_layouts_global";workspaceLayoutsNamespace="g42_core_layouts_workspace";appDefsNamespace="g42_core_app_definitions";appDefsInmemoryNamespace="g42_core_app_definitions_inmemory";notificationsNamespace="g42_core_notifications";systemNamespace="g42_system";workspaceFrameCache="g42_workspace_frame_cache";allNamespaces=[this.bridgeInstancesNamespace,this.windowsNamespace,this.instancesNamespace,this.nonGlueNamespace,this.workspaceWindowsNamespace,this.workspaceFramesNamespace,this.globalLayoutsNamespace,this.workspaceLayoutsNamespace,this.appDefsNamespace,this.workspaceHibernationNamespace,this.appDefsInmemoryNamespace,this.notificationsNamespace,this.workspaceFrameCache];get logger(){return Ym.get("session.storage")}start(){this.sessionStorage=window.sessionStorage,this.allNamespaces.forEach((e=>{this.sessionStorage.getItem(e)||this.sessionStorage.setItem(e,JSON.stringify([]))}))}shutdown(){this.allNamespaces.forEach((e=>{this.sessionStorage.setItem(e,JSON.stringify([]))})),this.sessionStorage.removeItem(this.systemNamespace)}getSystemSettings(){const e=this.sessionStorage.getItem(this.systemNamespace);if(e)return JSON.parse(e)}setSystemSettings(e){this.sessionStorage.setItem(this.systemNamespace,JSON.stringify(e))}getTimeout(e){const t=JSON.parse(this.sessionStorage.getItem(this.workspaceHibernationNamespace));return t.find((t=>t.workspaceId===e))?.timeout}removeTimeout(e){const t=JSON.parse(this.sessionStorage.getItem(this.workspaceHibernationNamespace));t.find((t=>t.workspaceId===e))&&this.sessionStorage.setItem(this.workspaceHibernationNamespace,JSON.stringify(t.filter((t=>t.workspaceId!==e))))}saveTimeout(e,t){const n=JSON.parse(this.sessionStorage.getItem(this.workspaceHibernationNamespace));n.some((t=>t.workspaceId===e))||(n.push({workspaceId:e,timeout:t}),this.sessionStorage.setItem(this.workspaceHibernationNamespace,JSON.stringify(n)))}exportClearTimeouts(){const e=JSON.parse(this.sessionStorage.getItem(this.workspaceHibernationNamespace));return this.sessionStorage.setItem(this.workspaceHibernationNamespace,JSON.stringify([])),e}getAllApps(e){const t="remote"===e?this.appDefsNamespace:this.appDefsInmemoryNamespace;return JSON.parse(this.sessionStorage.getItem(t))}overwriteApps(e,t){const n="remote"===t?this.appDefsNamespace:this.appDefsInmemoryNamespace;this.sessionStorage.setItem(n,JSON.stringify(e))}removeApp(e,t){const n="remote"===t?this.appDefsNamespace:this.appDefsInmemoryNamespace,r=this.getAllApps(t),i=r.find((t=>t.name===e));return i&&this.sessionStorage.setItem(n,JSON.stringify(r.filter((t=>t.name!==e)))),i}getLayoutSnapshot(e){const t="Global"===e?this.globalLayoutsNamespace:this.workspaceLayoutsNamespace;return{layouts:JSON.parse(this.sessionStorage.getItem(t))}}saveLayoutSnapshot(e,t){const n="Global"===t?this.globalLayoutsNamespace:this.workspaceLayoutsNamespace;this.sessionStorage.setItem(n,JSON.stringify(e.layouts))}saveFrameData(e){const t=JSON.parse(this.sessionStorage.getItem(this.workspaceFramesNamespace));t.some((t=>t.windowId===e.windowId))||(t.push(e),this.sessionStorage.setItem(this.workspaceFramesNamespace,JSON.stringify(t)))}getPlatformFrame(){return this.getAllFrames().find((e=>e.isPlatform))}getAllFrames(){return JSON.parse(this.sessionStorage.getItem(this.workspaceFramesNamespace))}getFrameData(e){return JSON.parse(this.sessionStorage.getItem(this.workspaceFramesNamespace)).find((t=>t.windowId===e))}setFrameActive(e){const t=JSON.parse(this.sessionStorage.getItem(this.workspaceFramesNamespace)),n=t.find((t=>t.windowId===e));n&&!n.active&&(n.active=!0,this.sessionStorage.setItem(this.workspaceFramesNamespace,JSON.stringify(t)))}removeFrameData(e){return!!e&&this.doRemove(e,this.workspaceFramesNamespace)}saveWorkspaceClient(e){const t=JSON.parse(this.sessionStorage.getItem(this.workspaceWindowsNamespace));t.some((t=>t.windowId===e.windowId))||(t.push(e),this.sessionStorage.setItem(this.workspaceWindowsNamespace,JSON.stringify(t)))}getWorkspaceClientById(e){return JSON.parse(this.sessionStorage.getItem(this.workspaceWindowsNamespace)).find((t=>t.windowId===e))}pickWorkspaceClients(e){return JSON.parse(this.sessionStorage.getItem(this.workspaceWindowsNamespace)).filter(e)}removeWorkspaceClient(e){return!!e&&this.doRemove(e,this.workspaceWindowsNamespace)}getAllNonGlue(){return JSON.parse(this.sessionStorage.getItem(this.nonGlueNamespace))}saveNonGlue(e){const t=JSON.parse(this.sessionStorage.getItem(this.nonGlueNamespace));return t.some((t=>t.windowId===e.windowId))?(this.logger?.trace(`did not save this data: ${JSON.stringify(e)}, because an entry with this id already exists`),!1):(this.logger?.trace(`saving non glue window with id: ${e.windowId}`),t.push(e),this.sessionStorage.setItem(this.nonGlueNamespace,JSON.stringify(t)),!0)}removeNonGlue(e){return!(!e||!e.windowId)&&(this.logger?.trace(`removing non glue window with id: ${e.windowId}`),this.doRemove(e.windowId,this.nonGlueNamespace))}saveBridgeInstanceData(e){const t=JSON.parse(this.sessionStorage.getItem(this.bridgeInstancesNamespace));t.some((t=>t.windowId===e.windowId))?this.logger?.trace(`did not save this data: ${JSON.stringify(e)}, because an entry with this id already exists`):(this.logger?.trace(`saving new instance with id: ${e.windowId} and app name: ${e.appName}`),t.push(e),this.sessionStorage.setItem(this.bridgeInstancesNamespace,JSON.stringify(t)))}getBridgeInstanceData(e){return JSON.parse(this.sessionStorage.getItem(this.bridgeInstancesNamespace)).find((t=>t.windowId===e))}removeBridgeInstanceData(e){const t=JSON.parse(this.sessionStorage.getItem(this.bridgeInstancesNamespace));this.sessionStorage.setItem(this.bridgeInstancesNamespace,JSON.stringify(t.filter((t=>t.windowId!==e))))}saveInstanceData(e){const t=JSON.parse(this.sessionStorage.getItem(this.instancesNamespace));t.some((t=>t.id===e.id))?this.logger?.trace(`did not save this data: ${JSON.stringify(e)}, because an entry with this id already exists`):(this.logger?.trace(`saving new instance with id: ${e.id} and app name: ${e.applicationName}`),t.push(e),this.sessionStorage.setItem(this.instancesNamespace,JSON.stringify(t)))}removeInstance(e){this.logger?.trace(`removing instance with id: ${e}`);const t=this.getAllInstancesData();this.sessionStorage.setItem(this.instancesNamespace,JSON.stringify(t.filter((t=>t.id!==e)))),this.removeBridgeInstanceData(e)}getInstanceData(e){return this.getAllInstancesData().find((t=>t.id===e))}getAllInstancesData(){return JSON.parse(this.sessionStorage.getItem(this.instancesNamespace))}removeNotification(e){const t=JSON.parse(this.sessionStorage.getItem(this.notificationsNamespace));t.find((t=>t.id===e))&&this.sessionStorage.setItem(this.notificationsNamespace,JSON.stringify(t.filter((t=>t.id!==e))))}saveNewNotification(e){const t=JSON.parse(this.sessionStorage.getItem(this.notificationsNamespace));if(t.some((t=>t.id===e.id)))throw new Error(`Notification with id ${e.id} already exists`);this.logger?.trace(`saving notification with id: ${e.id}`),t.push(e),this.sessionStorage.setItem(this.notificationsNamespace,JSON.stringify(t))}updateNotification(e){const t=this.getAllNotifications(),n=t.findIndex((t=>t.id===e.id));if(-1===n)throw new Error(`Notification with id ${e.id} does not exist`);this.logger?.trace(`updating notification with id: ${e.id}`),t[n]=e,this.sessionStorage.setItem(this.notificationsNamespace,JSON.stringify(t))}getNotification(e){return this.getAllNotifications().find((t=>t.id===e))}getAllNotifications(){return JSON.parse(this.sessionStorage.getItem(this.notificationsNamespace))}saveWindowData(e){const t=JSON.parse(this.sessionStorage.getItem(this.windowsNamespace));t.some((t=>t.name===e.name))?this.logger?.trace(`did not save this data: ${JSON.stringify(e)}, because an entry with this name already exists`):(this.logger?.trace(`saving window with id: ${e.windowId} and name: ${e.name}`),t.push(e),this.sessionStorage.setItem(this.windowsNamespace,JSON.stringify(t)))}getAllWindowsData(){return JSON.parse(this.sessionStorage.getItem(this.windowsNamespace))}getWindowDataById(e){return this.getAllWindowsData().find((t=>t.windowId===e))}getWindowDataByName(e){return this.getAllWindowsData().find((t=>t.name===e))}removeWindowData(e){return!!e&&(this.logger?.trace(`removing window with id: ${e}`),this.doRemove(e,this.windowsNamespace))}fullWindowClean(e){const t=this.removeWindowData(e),n=this.removeNonGlue({windowId:e}),r=this.removeWorkspaceClient(e);return t||n||r}doRemove(e,t){const n=JSON.parse(this.sessionStorage.getItem(t)).reduce(((t,n)=>(n.windowId===e?t.removed=!0:t.newData.push(n),t)),{removed:!1,newData:[]});return this.sessionStorage.setItem(t,JSON.stringify(n.newData)),n.removed}}class kD{sessionStorage;registry=MT();checkIntervalMs=500;childrenToCheck=[];checkerCancelled=!1;currentTimeout;constructor(e){this.sessionStorage=e}get logger(){return Ym.get("state.controller")}start(){this.checkerCancelled=!1;this.sessionStorage.getAllNonGlue().forEach((e=>{this.logger?.trace(`detected non glue window with id ${e.windowId} from previous session, attempting reference refresh`);const t=window.open(void 0,e.windowId);t&&this.childrenToCheck.push({window:t,windowId:e.windowId})})),this.checkWindows()}add(e,t){this.logger?.trace(`adding window id: ${t} to non glue state checking`);this.sessionStorage.saveNonGlue({windowId:t})&&this.childrenToCheck.push({window:e,windowId:t})}remove(e){this.logger?.trace(`removing window id: ${e} from non glue state checking`),this.sessionStorage.removeNonGlue({windowId:e}),this.childrenToCheck=this.childrenToCheck.filter((t=>t.windowId!==e))}cancel(){this.currentTimeout&&clearTimeout(this.currentTimeout),this.checkerCancelled=!0,this.registry.clear()}onWindowDisappeared(e){return this.registry.add("window-disappear",e)}checkWindows(){this.checkerCancelled||(this.childrenToCheck.forEach((e=>{if(!e.window||e.window.closed)return this.logger?.trace(`non glue window ${e.windowId} has disappeared, removing from collections and announcing.`),this.remove(e.windowId),void this.registry.execute("window-disappear",e.windowId)})),this.currentTimeout=setTimeout(this.checkWindows.bind(this),this.checkIntervalMs))}}const _D=hA(aA("appHello"),aA("applicationStart"),aA("instanceStop"),aA("registerWorkspaceApp"),aA("unregisterWorkspaceApp"),aA("export"),aA("import"),aA("remove"),aA("clear"),aA("registerRemoteApps"),aA("operationCheck")),PD=cA({id:mA}),TD=cA({id:mA,applicationName:mA}),FD=cA({name:mA,type:mA.where((e=>"window"===e),"Expected a value of window"),createOptions:WA,instances:lA(TD),userProperties:uA(oA()),title:uA(mA),version:uA(mA),icon:uA(mA),caption:uA(mA)});cA({name:mA,type:mA.where((e=>"window"===e),"Expected a value of window"),createOptions:WA,userProperties:uA(oA()),title:uA(mA),version:uA(mA),icon:uA(mA),caption:uA(mA)});const DD=cA({apps:lA(FD),initialChannelId:uA(mA)}),OD=cA({windowId:uA(mA)}),RD=cA({name:mA,id:uA(mA),context:uA(oA()),top:uA(iA()),left:uA(iA()),width:uA(fA),height:uA(fA),relativeTo:uA(mA),relativeDirection:uA(hA(aA("top"),aA("left"),aA("right"),aA("bottom"))),waitForAGMReady:uA(sA()),forceChromeTab:uA(sA()),layoutComponentId:uA(mA),channelId:uA(mA)}),ND=cA({definitions:lA(KA),mode:hA(aA("replace"),aA("merge"))}),jD=cA({name:mA}),$D=cA({definitions:lA(UA)}),MD=cA({definitions:lA(KA)});class qD{glueController;sessionStorage;stateController;appDirectory;ioc;config;applicationStartTimeoutMs=15e3;started=!1;defaultBounds;explicitClosingInstanceIds={};locks={};operations={appHello:{name:"appHello",dataDecoder:OD,resultDecoder:DD,execute:this.handleAppHello.bind(this)},applicationStart:{name:"applicationStart",dataDecoder:RD,resultDecoder:TD,execute:this.handleApplicationStart.bind(this)},instanceStop:{name:"instanceStop",dataDecoder:PD,execute:this.handleInstanceStop.bind(this)},registerWorkspaceApp:{name:"registerWorkspaceApp",dataDecoder:XT,execute:this.registerWorkspaceApp.bind(this)},unregisterWorkspaceApp:{name:"unregisterWorkspaceApp",dataDecoder:WT,execute:this.unregisterWorkspaceApp.bind(this)},import:{name:"import",dataDecoder:ND,execute:this.handleImport.bind(this)},remove:{name:"remove",dataDecoder:jD,execute:this.handleRemove.bind(this)},export:{name:"export",resultDecoder:$D,execute:this.handleExport.bind(this)},clear:{name:"clear",execute:this.handleClear.bind(this)},registerRemoteApps:{name:"registerRemoteApps",dataDecoder:MD,execute:this.handleRegisterRemoteApps.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:EA,resultDecoder:AA,execute:this.handleOperationCheck.bind(this)}};constructor(e,t,n,r,i){this.glueController=e,this.sessionStorage=t,this.stateController=n,this.appDirectory=r,this.ioc=i}get logger(){return Ym.get("applications.controller")}handlePlatformShutdown(){this.locks={},this.started=!1,this.appDirectory.stop()}async start(e){this.defaultBounds=e.windows.defaultWindowOpenBounds,this.logger?.trace("initializing applications"),this.config=e.applications,await this.appDirectory.start({config:e.applications,appsStateChange:e=>this.emitStreamData("appDirectoryStateChange",e),sequelizer:this.ioc.createSequelizer()}),this.started=!0,this.stateController.onWindowDisappeared((e=>this.processInstanceClosed(e).catch((e=>this.logger?.warn(`error while processing instance closed: ${e?.message}`))))),this.logger?.trace("initialization is completed")}async handleControl(e){if(!this.started)throw new Error("Cannot handle this windows control message, because the controller has not been started");const t=e.data,n=e.commandId,r=_D.run(e.operation);if(!r.ok)throw new Error(`This appManager request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(r.error)}`);const i=r.result,s=this.operations[i].dataDecoder?.run(t);if(s&&!s.ok)throw new Error(`AppManager request for ${i} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(s.error)}`);this.logger?.debug(`[${n}] ${i} command is valid with data: ${JSON.stringify(t)}`);const o=await this.operations[i].execute(t,n),a=this.operations[i].resultDecoder?.run(o);if(a&&!a.ok)throw new Error(`AppManager request for ${i} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(a.error)}`);return this.logger?.trace(`[${n}] ${i} command was executed successfully`),o}handleClientUnloaded(e,t){if(this.logger?.trace(`handling unloading of ${e}`),e&&!this.explicitClosingInstanceIds[e])return!t||t.closed?(this.logger?.trace(`${e} detected as closed, processing instance closed`),void this.processInstanceClosed(e).catch((e=>this.logger?.warn(`error while processing instance closed: ${e.message}`)))):void this.logger?.trace(`${e} detected as not closed, skipping instance closed procedure`)}async unregisterWorkspaceApp(e){this.ioc.windowsController.setExplicitClosingWindowId(e.windowId),this.explicitClosingInstanceIds[e.windowId]=!0,await this.processInstanceClosed(e.windowId),await this.ioc.windowsController.cleanUpWindow(e.windowId),this.ioc.portsBridge.removeGwClient(e.windowId)}async handleApplicationStart(e,t){this.logger?.trace(`[${t}] handling application start command for application: ${e.name}`);const n=(await this.appDirectory.getAll()).find((t=>t.name===e.name));if(!n)throw new Error(`Cannot start an instance of application: ${e.name}, because it is not found.`);const r={id:e.id??`g42-${Zm(10)}`,applicationName:e.name},i=await this.getStartingBounds(n.createOptions,e,t),s=e.forceChromeTab?void 0:`left=${i.left},top=${i.top},width=${i.width},height=${i.height}`;this.logger?.trace(`[${t}] open arguments are valid, opening to bounds: ${s}`);const o=window.open(n.createOptions.url,r.id,s);if(!o)throw new Error(`Cannot an instance with url: ${n.createOptions.url} for application: ${e.name}. The most likely reason is that the user has not approved popups or has a blocker.`);this.sessionStorage.saveBridgeInstanceData({windowId:r.id,appName:r.applicationName});const a={data:r,context:e.context};if(await this.processNewInstance(a),this.logger?.trace(`[${t}] the new window has been opened successfully with id: ${r.id}, checking for AGM ready and notifying windows`),e.waitForAGMReady&&(this.logger?.trace(`[${t}] wait for AGM is set, configuring the lock`),this.setLock(r.id)),await this.notifyWindows(n.createOptions.url,r,i,e.context,o,e.layoutComponentId,e.channelId),this.locks[r.id])try{await OT((()=>this.locks[r.id]?.keyOne),this.applicationStartTimeoutMs)}catch(t){throw delete this.locks[r.id],new Error(`Application start for ${e.name} timed out waiting for client to initialize Glue`)}return this.logger?.trace(`[${t}] the windows controller has been successfully notified`),this.logger?.trace(`[${t}] the new instance with id ${r.id} has been saved, announced and context set, lifting key two and responding to caller`),this.locks[r.id]?.openKeyTwo(),r}async processInstanceClosed(e){if(!e)return;const t=this.sessionStorage.getInstanceData(e);if(t){delete this.locks[t.id],this.sessionStorage.removeInstance(t.id);try{await this.glueController.clearContext(e,"instance")}catch(t){this.logger?.warn(`error while clearing the context of instance ${e}: ${t?.message}`)}this.emitStreamData("instanceStopped",t),await this.waitEventFlush(),delete this.explicitClosingInstanceIds[t.id]}}async notifyWindows(e,t,n,r,i,s,o){const a={windowId:t.id,name:`${t.applicationName}_${t.id}`,initialUrl:e,initialContext:r,initialBounds:n,layoutComponentId:s,initialChannelId:o};await this.ioc.windowsController.processNewWindow(a,r,i)}async handleOperationCheck(e){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}async handleAppHello(e,t){this.logger?.trace(`[${t}] handling hello message for id: ${e.windowId}`),e.windowId&&this.locks[e.windowId]&&(this.logger?.trace(`[${t}] found an app lock, unlocking key one and waiting for the second one`),this.locks[e.windowId].openKeyOne(),await this.locks[e.windowId].keyTwo,delete this.locks[e.windowId],this.logger?.trace(`[${t}] the lock is lifted, proceeding`));const n=this.sessionStorage.getAllInstancesData(),r=(await this.appDirectory.getAll()).map((e=>{const t=n.filter((t=>t.applicationName===e.name));return Object.assign({},e,{instances:t})}));if(e.windowId){this.logger?.trace(`[${t}] there is a valid windowId, removing ${e.windowId} from the state controller`),this.stateController.remove(e.windowId);const n=r.find((t=>t.instances.some((t=>t.id===e.windowId))));if(n&&n.title){const r=e.windowId,i=n.title;OT((()=>this.glueController.callWindow("windows",this.ioc.windowsController.setTitleOperation,{windowId:r,title:i},{windowId:r})),2e4).catch((e=>this.logger?.trace(`[${t}] error while setting the application instance title: ${e.message}`)))}}const i=e.windowId?this.sessionStorage.getWindowDataById(e.windowId):void 0,s={apps:r,initialChannelId:i?.initialChannelId};return this.logger?.trace(`[${t}] compiled a list of all active applications and instances and returning it to the caller`),s}async handleInstanceStop(e,t){this.logger?.trace(`[${t}] handling stop command for instance: ${e.id}`);if(this.sessionStorage.getWorkspaceClientById(e.id))return this.logger?.trace(`[${t}] this instance is detected as a workspace window, closing via the workspaces controller`),void await this.ioc.workspacesController.closeItem({itemId:e.id},t);if(!this.sessionStorage.getInstanceData(e.id))throw new Error(`Cannot close instance: ${e.id}, because it is not known by the platform`);const n=this.sessionStorage.getWindowDataById(e.id);if(!n)throw new Error(`Cannot close instance: ${e.id}, because it's window is not known by the platform`);this.ioc.windowsController.setExplicitClosingWindowId(e.id),this.explicitClosingInstanceIds[e.id]=!0,window.open(void 0,n.windowId)?.close(),await this.processInstanceClosed(e.id),await this.ioc.windowsController.cleanUpWindow(e.id),this.logger?.trace(`[${t}] instance ${e.id} has been closed, removed from store, announced stopped and notified windows, responding to caller`)}async handleRegisterRemoteApps(e,t){if(this.logger?.trace(`[${t}] handling remote bypass command`),this.config.remote)throw new Error(`[${t}] cannot accept remote apps from the protocol, because there is an active remote configuration.`);await this.appDirectory.processAppDefinitions(e.definitions,{mode:"replace",type:"remote"}),this.logger?.trace(`[${t}] remote bypass command completed`)}async handleImport(e,t){this.logger?.trace(`[${t}] handling import command`),await this.appDirectory.processAppDefinitions(e.definitions,{type:"inmemory",mode:e.mode}),this.logger?.trace(`[${t}] import command completed`)}async handleRemove(e,t){this.logger?.trace(`[${t}] handling remove command for ${e.name}`);const n=await this.appDirectory.removeInMemory(e.name);n&&(this.logger?.trace(`definition ${n.name} removed successfully`),this.emitStreamData("appDirectoryStateChange",{appsRemoved:[n],appsAdded:[],appsChanged:[]}))}async handleExport(e,t){this.logger?.trace(`[${t}] handling export command`);const n=await this.appDirectory.exportInMemory();return this.logger?.trace(`[${t}] export command successful`),{definitions:n}}async handleClear(e,t){this.logger?.trace(`[${t}] handling clear command`),await this.appDirectory.processAppDefinitions([],{type:"inmemory",mode:"replace"}),this.logger?.trace(`[${t}] all in-memory apps are cleared`)}setLock(e){const t={},n=new Promise((e=>{t.openKeyOne=e})),r=new Promise((e=>{t.openKeyTwo=e}));t.keyOne=n,t.keyTwo=r,this.locks[e]=t}async registerWorkspaceApp(e,t){if(!e.appName)throw new Error(`Cannot register application with config: ${JSON.stringify(e)}, because no app name was found`);const n=await this.appDirectory.getAll();if("no-app-window"===e.appName)return await this.ioc.windowsController.registerWorkspaceWindow(e,t);if(!n.some((t=>t.name===e.appName)))throw new Error(`Cannot register application with config: ${JSON.stringify(e)}, because no app with this name name was found`);this.sessionStorage.saveBridgeInstanceData({windowId:e.windowId,appName:e.appName}),this.logger?.trace(`[${t}] processing valid workspace application registration with id ${e.windowId}, app name ${e.appName} and frame ${e.frameId}`),e.context&&await this.glueController.setStartContext(e.windowId,e.context,"instance");const r={id:e.windowId,applicationName:e.appName};this.sessionStorage.saveInstanceData(r),this.emitStreamData("instanceStarted",r),this.logger?.trace(`[${t}] instance registration is completed and announced, calling windows registration`),await this.ioc.windowsController.registerWorkspaceWindow(e,t)}async processNewInstance(e){e.context&&await this.glueController.setStartContext(e.data.id,e.context,"instance"),this.sessionStorage.saveInstanceData(e.data),this.emitStreamData("instanceStarted",e.data)}emitStreamData(e,t){this.logger?.trace(`sending notification of event: ${e} with data: ${JSON.stringify(t)}`),this.glueController.pushSystemMessage("appManager",e,t)}async getStartingBounds(e,t,n){const r={top:t.top||e.top||this.defaultBounds.top,left:t.left||e.left||this.defaultBounds.left,width:t.width||e.width||this.defaultBounds.width,height:t.height||e.height||this.defaultBounds.height};if(!t.relativeTo)return r;try{const e=await this.ioc.windowsController.getWindowBounds(t.relativeTo,n),i=t.relativeDirection??"right";return LI(r,e,i)}catch(e){return r}}waitEventFlush(){return new Promise((e=>setTimeout(e,10)))}}const BD=hA(aA("get"),aA("getAll"),aA("export"),aA("import"),aA("remove"),aA("save"),aA("restore"),aA("rename"),aA("getGlobalPermissionState"),aA("checkGlobalActivated"),aA("requestGlobalPermission"),aA("operationCheck"),aA("getDefaultGlobal"),aA("setDefaultGlobal"),aA("clearDefaultGlobal"),aA("updateMetadata")),LD=cA({name:mA,context:uA(oA()),metadata:uA(oA()),instances:uA(lA(mA)),ignoreInstances:uA(lA(mA))}),WD=cA({name:mA,context:uA(oA()),closeRunningInstance:uA(sA()),closeMe:uA(sA()),timeout:uA(fA)}),HD=cA({name:mA,type:CA}),UD=cA({type:CA}),GD=cA({layout:LD}),VD=cA({layout:BA,newName:mA}),JD=cA({status:mA}),KD=cA({layout:BA}),zD=cA({layout:WD}),QD=cA({layouts:lA(BA)}),XD=hA(aA("replace"),aA("merge")),YD=cA({layouts:lA(BA),mode:XD,skipManagerRequest:uA(sA())}),ZD=cA({summaries:lA(kA)});cA({layout:BA});const eO=cA({layout:uA(BA)}),tO=cA({name:mA});cA({layoutType:hA(aA("Global"),aA("Workspace")),layoutName:mA,context:uA(oA()),instances:uA(lA(mA)),ignoreInstances:uA(lA(mA))}),cA({windowContext:uA(oA())});const nO=cA({bounds:wA,windowContext:uA(oA()),url:mA,name:mA,application:mA,windowId:mA,initialContext:uA(oA())});cA({windowContext:uA(oA()),windowId:mA,frameId:mA}),cA({windows:lA(nO)});const rO=cA({state:hA(aA("prompt"),aA("denied"),aA("granted"))}),iO=cA({isAvailable:sA()}),sO="no-app-window",oO=async e=>{try{return await navigator.permissions.query({name:"window-management"})}catch(t){e?.warn(GI(t));return await navigator.permissions.query({name:"window-placement"})}};class aO{glueController;idbController;sessionStore;localStore;globalBuilder;globalRestorer;getManager;started=!1;config;manager;operations={get:{name:"get",dataDecoder:HD,resultDecoder:eO,execute:this.handleGetLayout.bind(this)},getAll:{name:"getAll",dataDecoder:UD,resultDecoder:ZD,execute:this.handleGetAll.bind(this)},export:{name:"export",dataDecoder:UD,resultDecoder:QD,execute:this.handleExport.bind(this)},import:{name:"import",dataDecoder:YD,execute:this.handleImport.bind(this)},remove:{name:"remove",dataDecoder:HD,execute:this.handleRemove.bind(this)},rename:{name:"rename",dataDecoder:VD,resultDecoder:JD,execute:this.handleRename.bind(this)},save:{name:"save",dataDecoder:GD,execute:this.handleSave.bind(this)},restore:{name:"restore",dataDecoder:zD,execute:this.handleRestore.bind(this)},getGlobalPermissionState:{name:"getGlobalPermissionState",resultDecoder:rO,execute:this.handleGetGlobalPermissionState.bind(this)},requestGlobalPermission:{name:"requestGlobalPermission",resultDecoder:iO,execute:this.handleRequestGlobalPermission.bind(this)},checkGlobalActivated:{name:"checkGlobalActivated",resultDecoder:iO,execute:this.handleCheckGlobalActivated.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:EA,resultDecoder:AA,execute:this.handleOperationCheck.bind(this)},getDefaultGlobal:{name:"getDefaultGlobal",resultDecoder:eO,execute:this.handleGetDefaultGlobal.bind(this)},setDefaultGlobal:{name:"setDefaultGlobal",dataDecoder:tO,execute:this.handleSetDefaultGlobal.bind(this)},clearDefaultGlobal:{name:"clearDefaultGlobal",execute:this.handleClearDefaultGlobal.bind(this)},updateMetadata:{name:"updateMetadata",dataDecoder:KD,execute:this.handleUpdateMetadata.bind(this)}};constructor(e,t,n,r,i,s,o){this.glueController=e,this.idbController=t,this.sessionStore=n,this.localStore=r,this.globalBuilder=i,this.globalRestorer=s,this.getManager=o}get logger(){return Ym.get("layouts.controller")}handlePlatformShutdown(){this.started=!1,"idb"===this.config.mode&&(this.idbController.clearLayouts("Global").catch((e=>this.logger?.warn(GI(e)))),this.idbController.clearLayouts("Workspace").catch((e=>this.logger?.warn(GI(e)))))}async start(e){if(this.config=e.layouts,this.logger?.trace(`initializing with mode: ${this.config.mode}`),this.config.local&&this.config.local.length){const e=this.config.local.filter((e=>"Global"===e.type)),t=this.config.local.filter((e=>"Workspace"===e.type));await Promise.all([this.mergeImport(e,"Global",!0),this.mergeImport(t,"Workspace",!0)])}this.manager=this.getManager(),this.started=!0,this.logger?.trace("initialization is completed")}async handleControl(e){if(!this.started)throw new Error("Cannot handle this windows control message, because the controller has not been started");const t=e.data,n=e.commandId,r=BD.run(e.operation);if(!r.ok)throw new Error(`This layouts request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(r.error)}`);const i=r.result,s=this.operations[i].dataDecoder?.run(t);if(s&&!s.ok)throw new Error(`Layouts request for ${i} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(s.error)}`);this.logger?.debug(`[${n}] ${i} command is valid with data: ${JSON.stringify(t)}`);const o=await this.operations[i].execute(t,n,e.callerId,e.callerType),a=this.operations[i].resultDecoder?.run(o);if(a&&!a.ok)throw new Error(`Layouts request for ${i} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(a.error)}`);return this.logger?.trace(`[${n}] ${i} command was executed successfully`),o}async handleSave(e,t){this.logger?.trace(`[${t}] handling save layout with config: ${JSON.stringify(e)}`),await this.checkRequestPermission("save"),this.logger?.trace(`[${t}] the required permissions are granted, proceeding.`);const n=await this.globalBuilder.saveGlobalLayout(e,t);return this.logger?.trace(`[${t}] layout ${e.layout.name} was saved successfully`),{layout:n}}async handleRestore(e,t,n,r){this.logger?.trace(`[${t}] handling restore layout with config: ${JSON.stringify(e)}`),await this.checkRequestPermission("restore",e.layout.timeout),await this.globalRestorer.restoreGlobalLayout(e,t,n,r),this.logger?.trace(`[${t}] layout ${e.layout.name} was restored successfully`)}async handleGetAll(e,t){this.logger?.trace(`[${t}] handling get all layout summaries request for type: ${e.type}`);const n=(await this.getAll(e.type)).map((e=>({name:e.name,type:e.type,context:e.context,metadata:e.metadata})));return this.logger?.trace(`[${t}] all summaries have been compiled, responding to caller`),{summaries:n}}async handleExport(e,t){this.logger?.trace(`[${t}] handling get all layout full request for type: ${e.type}`);const n=await this.getAll(e.type);return this.logger?.trace(`[${t}] full layouts collection have been compiled, responding to caller`),{layouts:n}}async handleImport(e,t){this.logger?.trace(`[${t}] handling mass import request for layout names: ${e.layouts.map((e=>e.name)).join(", ")}`);const n="merge"===e.mode?this.mergeImport.bind(this):this.replaceImport.bind(this);this.logger?.trace(`[${t}] importing the layouts in ${e.mode} mode`);const r=e.layouts.filter((e=>"Workspace"===e.type)),i=e.layouts.filter((e=>"Global"===e.type));await Promise.all([n(i,"Global",e.skipManagerRequest),n(r,"Workspace",e.skipManagerRequest)]),this.logger?.trace(`[${t}] mass import completed, responding to caller`)}async handleRemove(e,t){this.logger?.trace(`[${t}] handling remove request for ${JSON.stringify(e)}`);const n=await this.get(e.type,e.name);n&&(await this.delete(e.name,e.type),await this.emitData({operation:"layoutRemoved",layout:n}));const r=n?"has been removed":"has not been removed, because it does not exist";this.logger?.trace(`[${t}] ${e.name} of type ${e.type} ${r}`)}async handleRename(e,t){this.logger?.trace(`[${t}] handling rename request for ${JSON.stringify(e)}`);const n=e.layout.name;if(e.newName===n)return this.logger?.trace(`[${t}] The provided new layout name ${e.newName} is the same as the current one.`),{status:"Success"};const r=await this.get(e.layout.type,n);if(!r){const r=`layout with name "${n}" and type: "${e.layout.type}" cannot be found`;return this.logger?.trace(`[${t}] ${r}`),{status:r}}let i;try{i=await this.rename(r,e.newName)}catch(e){const r=GI(e);return this.logger?.trace(`[${t}] Layout named ${n} has not been renamed. Reason: ${r}.`),{status:r}}return await this.emitData({operation:"layoutRenamed",layout:i,oldName:n}),this.logger?.trace(`[${t}] Layout named ${n} has been renamed to ${e.newName}.`),{status:"Success"}}async handleUpdateMetadata(e,t){this.logger?.trace(`[${t}] handling update metadata request for ${JSON.stringify(e)}`);const n=await this.get(e.layout.type,e.layout.name);if(!n)throw new Error(`Layout with name "${e.layout.name}" and type: "${e.layout.type}" cannot be found`);const r={...n,metadata:e.layout.metadata};await this.mergeImport([r],r.type),this.logger?.trace(`[${t}] metadata for layout named "${e.layout.name}" has been updated`)}async handleGetLayout(e,t){this.logger?.trace(`[${t}] handling get layout request for name: ${e.name} and type: ${e.type}`);const n=(await this.getAll(e.type)).find((t=>t.name===e.name));return this.logger?.trace(`[${t}] request completed, responding to the caller`),{layout:n}}async handleOperationCheck(e){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}async handleGetGlobalPermissionState(e,t){this.logger?.trace(`[${t}] handling Get Global Permission State request`);const{state:n}=await oO(this.logger);return this.logger?.trace(`[${t}] request completed with state: ${n}, responding to the caller`),{state:n}}async handleRequestGlobalPermission(e,t){this.logger?.trace(`[${t}] handling Request Global Permission command`);const{state:n}=await oO(this.logger);if("granted"===n)return{isAvailable:!0};if("denied"===n)return{isAvailable:!1};try{return await window.getScreenDetails(),this.logger?.trace(`[${t}] request completed, responding to the caller`),{isAvailable:!0}}catch(e){return this.logger?.trace(`[${t}] request completed, responding to the caller`),{isAvailable:!1}}}async handleCheckGlobalActivated(e,t){return this.logger?.trace(`[${t}] handling Check Global Activated request`),this.logger?.trace(`[${t}] request completed, responding to the caller`),{isAvailable:!0}}createGetDefaultGlobalLogMessage(e,t){return t?`[${e}] request completed, responding to the caller with layout with name ${t}`:`[${e}] request completed, no default global layout found, responding to the caller`}async handleGetDefaultGlobal(e,t){this.logger?.trace(`[${t}] handling Get Default Global request`);const n=this.localStore.getDefaultGlobalLayoutName(),r=await this.getAll("Global");if(!this.manager.isStarted)return this.logger?.trace(this.createGetDefaultGlobalLogMessage(t,n)),{layout:r.find((e=>e.name===n))};try{const e=(await this.manager.getDefaultGlobal(t))?.name;return e&&e!==n&&this.localStore.saveDefaultGlobalLayout(e),this.logger?.trace(this.createGetDefaultGlobalLogMessage(t,e)),{layout:r.find((t=>t.name===e))}}catch(e){if(this.manager.isCritical)throw new Error(e);return this.logger?.trace(`[${t}] ${e}`),this.logger?.trace(this.createGetDefaultGlobalLogMessage(t,n)),{layout:r.find((e=>e.name===n))}}}async handleSetDefaultGlobal(e,t){this.logger?.trace(`[${t}] handling Set Default Global request for name: ${e.name}`);const n=(await this.getAll("Global")).find((t=>t.name===e.name)),r=`[${t}] request completed for global layout with name ${e.name}, responding to the caller`;if(!n)throw new Error(`Layout ${e.name} does not exist`);if(this.localStore.saveDefaultGlobalLayout(e.name),this.manager.isStarted){try{await this.manager.getLayoutId(e.name)?await this.manager.setDefaultGlobal(e.name,t):await this.manager.saveLayout(n,{default:!0})}catch(e){if(this.manager.isCritical)throw new Error(e);this.logger?.trace(`[${t}] ${e}`)}this.logger?.trace(r)}else this.logger?.trace(r)}async handleClearDefaultGlobal(e,t){this.logger?.trace(`[${t}] handling Clear Default Global request`),this.localStore.clearDefaultGlobalLayout();const n=`[${t}] request completed, responding to the caller`;if(this.manager.isStarted){try{await this.manager.clearDefaultGlobal(t)}catch(e){if(this.manager.isCritical)throw new Error(e);this.logger?.trace(`[${t}] ${e}`)}this.logger?.trace(n)}else this.logger?.trace(n)}async emitData(e,t){if(this.logger?.trace(`sending notification of event: ${e.operation} with data: ${JSON.stringify(e)}`),this.glueController.pushSystemMessage("layouts",e.operation,e.layout),!t&&this.manager.isStarted)try{await this.manager.handleLayoutEvent(e)}catch(e){this.logger?.warn(GI(e))}}async mergeImport(e,t,n){const r=await this.getAll(t),i=[];for(const t of e){const e=r.findIndex((e=>e.name===t.name));e>-1&&!WI(t,r[e])?(this.logger?.trace(`change detected at layout ${t.name}`),i.push({operation:"layoutChanged",layout:t}),r[e]=t):e<0&&(this.logger?.trace(`new layout: ${t.name} detected, adding and announcing`),i.push({operation:"layoutAdded",layout:t}),r.push(t))}await this.cleanSave(r,t),await this.announceEvents(i,n)}async replaceImport(e,t,n){const r=await this.getAll(t),i=[];for(const t of e){const e=r.findIndex((e=>e.name===t.name));e<0?(this.logger?.trace(`new layout: ${t.name} detected, adding and announcing`),i.push({operation:"layoutAdded",layout:t})):(WI(t,r[e])||(this.logger?.trace(`change detected at layout ${t.name}`),i.push({operation:"layoutChanged",layout:t})),r.splice(e,1))}r.forEach((e=>{this.logger?.trace(`layout ${e.name} missing, removing and announcing`),i.push({operation:"layoutRemoved",layout:e})})),await this.cleanSave(e,t),await this.announceEvents(i,n)}async announceEvents(e,t){let n=0;for(const r of e)++n,n%10==0&&await this.waitEventFlush(),await this.emitData({operation:r.operation,layout:r.layout},t)}async getAll(e){let t;return t="idb"===this.config.mode?await this.idbController.getAllLayouts(e):this.sessionStore.getLayoutSnapshot(e).layouts,t}async get(e,t){return(await this.getAll(e)).find((n=>n.name===t&&n.type===e))}async cleanSave(e,t){if("idb"!==this.config.mode)this.sessionStore.saveLayoutSnapshot({layouts:e},t);else{await this.idbController.clearLayouts(t);for(const t of e)await this.idbController.storeLayout(t)}}async delete(e,t){if("idb"===this.config.mode)return void await this.idbController.deleteLayout(e,t);const n=this.sessionStore.getLayoutSnapshot(t).layouts,r=n.findIndex((t=>t.name===e));r>-1&&n.splice(r,1),this.sessionStore.saveLayoutSnapshot({layouts:n},t)}async rename(e,t){const n={...e,name:t};if("idb"===this.config.mode)return this.idbController.renameLayout(n,e.name);const r=this.sessionStore.getLayoutSnapshot(e.type).layouts,i=r.findIndex((({name:t})=>t===e.name)),s=-1===i?r.length:i;return r.splice(s,1,n),this.sessionStore.saveLayoutSnapshot({layouts:r},e.type),n}waitEventFlush(){return new Promise((e=>setTimeout(e,10)))}async checkRequestPermission(e,t=25e3){if(window.gtf)return;const{state:n}=await oO(this.logger);switch(n){case"granted":return;case"prompt":try{return void await OT((()=>window.getScreenDetails()),t,"Timeout waiting for user permission for Multi-Screen Window Placement")}catch(t){throw new Error(`Cannot complete operation ${e} for Global Layouts, because the user has not granted the Multi-Screen Window Placement permission`)}case"denied":throw new Error(`Cannot complete operation ${e} for Global Layouts, because the user has denied the Multi-Screen Window Placement permission`)}}}const cO=(e,t)=>t.some((t=>e instanceof t));let lO,uO;const hO=new WeakMap,dO=new WeakMap,pO=new WeakMap,gO=new WeakMap,fO=new WeakMap;let mO={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return dO.get(e);if("objectStoreNames"===t)return e.objectStoreNames||pO.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return vO(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function yO(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(uO||(uO=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(bO(this),t),vO(hO.get(this))}:function(...t){return vO(e.apply(bO(this),t))}:function(t,...n){const r=e.call(bO(this),t,...n);return pO.set(r,t.sort?t.sort():[t]),vO(r)}}function wO(e){return"function"==typeof e?yO(e):(e instanceof IDBTransaction&&function(e){if(dO.has(e))return;const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("complete",i),e.removeEventListener("error",s),e.removeEventListener("abort",s)},i=()=>{t(),r()},s=()=>{n(e.error||new DOMException("AbortError","AbortError")),r()};e.addEventListener("complete",i),e.addEventListener("error",s),e.addEventListener("abort",s)}));dO.set(e,t)}(e),cO(e,lO||(lO=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,mO):e)}function vO(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("success",i),e.removeEventListener("error",s)},i=()=>{t(vO(e.result)),r()},s=()=>{n(e.error),r()};e.addEventListener("success",i),e.addEventListener("error",s)}));return t.then((t=>{t instanceof IDBCursor&&hO.set(t,e)})).catch((()=>{})),fO.set(t,e),t}(e);if(gO.has(e))return gO.get(e);const t=wO(e);return t!==e&&(gO.set(e,t),fO.set(t,e)),t}const bO=e=>fO.get(e);const SO=["get","getKey","getAll","getAllKeys","count"],CO=["put","add","delete","clear"],xO=new Map;function IO(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(xO.get(t))return xO.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=CO.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!i&&!SO.includes(n))return;const s=async function(e,...t){const s=this.transaction(e,i?"readwrite":"readonly");let o=s.store;return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),i&&s.done]))[0]};return xO.set(t,s),s}mO=(e=>({...e,get:(t,n,r)=>IO(t,n)||e.get(t,n,r),has:(t,n)=>!!IO(t,n)||e.has(t,n)}))(mO);class EO{_database;defaultDBName="glue42core";dbName=this.defaultDBName;dbVersion=3;globalLayoutsObjectStoreName="globalLayouts";prefsObjectStoreName="prefs";serviceWorkerObjectStoreName="serviceWorker";workspaceLayoutsObjectStoreName="workspaceLayouts";constructor(){if(!("indexedDB"in window))throw new Error("Cannot initialize the local storage, because IndexedDB is not supported")}get database(){if(!this._database)throw new Error("There is no open database");return this._database}async start(e){e?.username&&(this.dbName=e.username);const t=await function(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const o=indexedDB.open(e,t),a=vO(o);return r&&o.addEventListener("upgradeneeded",(e=>{r(vO(o.result),e.oldVersion,e.newVersion,vO(o.transaction),e)})),n&&o.addEventListener("blocked",(e=>n(e.oldVersion,e.newVersion,e))),a.then((e=>{s&&e.addEventListener("close",(()=>s())),i&&e.addEventListener("versionchange",(e=>i(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),a}(this.dbName,this.dbVersion,{upgrade:this.setUpDB.bind(this)});this._database=t}stop(){this.database.close(),delete this._database,this.dbName=this.defaultDBName}getAllLayouts(e){const t=this.getLayoutsObjectStoreName(e);return this.database.getAll(t)}deleteLayout(e,t){const n=this.getLayoutsObjectStoreName(t);return this.database.delete(n,e)}clearLayouts(e){const t=this.getLayoutsObjectStoreName(e);return this.database.clear(t)}getLayout(e,t){const n=this.getLayoutsObjectStoreName(t);return this.database.get(n,e)}storeLayout(e){BA.runWithException(e);const t=this.getLayoutsObjectStoreName(e.type);return this.database.put(t,e,e.name)}async renameLayout(e,t){BA.runWithException(e);const n=this.getLayoutsObjectStoreName(e.type),r=this.database.transaction(n,"readwrite");return await Promise.all([r.store.delete(t),r.store.put(e,e.name),r.done]),e}getLayoutsObjectStoreName(e){switch(e){case"Workspace":return this.workspaceLayoutsObjectStoreName;case"Global":return this.globalLayoutsObjectStoreName;default:throw new Error(`The provided layout type is not recognized: ${e}`)}}clearServiceWorker(){return this.database.clear(this.serviceWorkerObjectStoreName)}storeServiceWorker(e){return this.database.put(this.serviceWorkerObjectStoreName,e,"workerData")}async clearAllPrefs(e){const t=(await this.getAllPrefs()).map((({app:t})=>({app:t,data:{},lastUpdate:e}))),n=this.database.transaction(this.prefsObjectStoreName,"readwrite");return await Promise.all([...t.map((e=>n.store.put(e,e.app))),n.done]),t}getAllPrefs(){return this.database.getAll(this.prefsObjectStoreName)}getPrefs(e){return this.database.get(this.prefsObjectStoreName,e)}deletePrefs(e){return this.database.delete(this.prefsObjectStoreName,e)}async replaceAllPrefs(e){const t=this.database.transaction(this.prefsObjectStoreName,"readwrite");return await t.store.clear(),await Promise.all([...e.map((e=>t.store.put(e,e.app))),t.done]),e}async setPrefs(e){return await this.database.put(this.prefsObjectStoreName,e,e.app),e}async updatePrefs(e){const t=await this.database.get(this.prefsObjectStoreName,e.app),n=t?{app:e.app,data:{...t.data,...e.data},lastUpdate:e.lastUpdate}:e;return this.setPrefs(n)}setUpDB(e){e.objectStoreNames.contains(this.workspaceLayoutsObjectStoreName)||e.createObjectStore(this.workspaceLayoutsObjectStoreName),e.objectStoreNames.contains(this.globalLayoutsObjectStoreName)||e.createObjectStore(this.globalLayoutsObjectStoreName),e.objectStoreNames.contains(this.serviceWorkerObjectStoreName)||e.createObjectStore(this.serviceWorkerObjectStoreName),e.objectStoreNames.contains(this.prefsObjectStoreName)||e.createObjectStore(this.prefsObjectStoreName)}}const AO={defaultStrategy:"direct",delayed:{batch:1,initialOffsetInterval:1e3,interval:5e3},showDelayedIndicator:!1};class kO{framesController;glueController;stateController;hibernationWatcher;ioc;_started=!1;settings;operations={frameHello:{name:"frameHello",dataDecoder:QT,execute:this.handleFrameHello.bind(this)},isWindowInWorkspace:{name:"isWindowInWorkspace",dataDecoder:KF,resultDecoder:YT,execute:this.isWindowInWorkspace.bind(this)},createWorkspace:{name:"createWorkspace",dataDecoder:wF,resultDecoder:AF,execute:this.createWorkspace.bind(this)},createFrame:{name:"createFrame",resultDecoder:RF,execute:this.createFrame.bind(this)},initFrame:{name:"initFrame",resultDecoder:WF,execute:this.initFrame.bind(this)},getAllFramesSummaries:{name:"getAllFramesSummaries",resultDecoder:NF,execute:this.getAllFramesSummaries.bind(this)},getFrameSummary:{name:"getFrameSummary",dataDecoder:vF,resultDecoder:bF,execute:this.getFrameSummary.bind(this)},getAllWorkspacesSummaries:{name:"getAllWorkspacesSummaries",resultDecoder:$F,execute:this.getAllWorkspacesSummaries.bind(this)},getWorkspaceSnapshot:{name:"getWorkspaceSnapshot",dataDecoder:KF,resultDecoder:AF,execute:this.getWorkspaceSnapshot.bind(this)},getAllLayoutsSummaries:{name:"getAllLayoutsSummaries",resultDecoder:BF,execute:this.getAllLayoutsSummaries.bind(this)},openWorkspace:{name:"openWorkspace",dataDecoder:mF,resultDecoder:AF,execute:this.openWorkspace.bind(this)},deleteLayout:{name:"deleteLayout",dataDecoder:nF,resultDecoder:WF,execute:this.deleteLayout.bind(this)},saveLayout:{name:"saveLayout",dataDecoder:cD,resultDecoder:FF,execute:this.saveLayout.bind(this)},importLayout:{name:"importLayout",dataDecoder:DF,resultDecoder:WF,execute:this.importLayout.bind(this)},exportAllLayouts:{name:"exportAllLayouts",resultDecoder:OF,execute:this.exportAllLayouts.bind(this)},restoreItem:{name:"restoreItem",dataDecoder:KF,resultDecoder:WF,execute:this.restoreItem.bind(this)},maximizeItem:{name:"maximizeItem",dataDecoder:KF,resultDecoder:WF,execute:this.maximizeItem.bind(this)},focusItem:{name:"focusItem",dataDecoder:KF,resultDecoder:WF,execute:this.focusItem.bind(this)},closeItem:{name:"closeItem",dataDecoder:KF,resultDecoder:WF,execute:this.closeItem.bind(this)},resizeItem:{name:"resizeItem",dataDecoder:ZF,resultDecoder:WF,execute:this.resizeItem.bind(this)},changeFrameState:{name:"changeFrameState",dataDecoder:QF,resultDecoder:WF,execute:this.changeFrameState.bind(this)},getFrameState:{name:"getFrameState",dataDecoder:KF,resultDecoder:HF,execute:this.getFrameState.bind(this)},getFrameBounds:{name:"getFrameBounds",dataDecoder:KF,resultDecoder:GF,execute:this.getFrameBounds.bind(this)},moveFrame:{name:"moveFrame",dataDecoder:eD,resultDecoder:WF,execute:this.moveFrame.bind(this)},getFrameSnapshot:{name:"getFrameSnapshot",dataDecoder:zF,resultDecoder:MF,execute:this.getFrameSnapshot.bind(this)},forceLoadWindow:{name:"forceLoadWindow",dataDecoder:KF,resultDecoder:LF,execute:this.forceLoadWindow.bind(this)},ejectWindow:{name:"ejectWindow",dataDecoder:KF,resultDecoder:LF,execute:this.ejectWindow.bind(this)},setItemTitle:{name:"setItemTitle",dataDecoder:XF,resultDecoder:WF,execute:this.setItemTitle.bind(this)},moveWindowTo:{name:"moveWindowTo",dataDecoder:YF,resultDecoder:WF,execute:this.moveWindowTo.bind(this)},addWindow:{name:"addWindow",dataDecoder:tD,resultDecoder:rD,execute:this.addWindow.bind(this)},addContainer:{name:"addContainer",dataDecoder:nD,resultDecoder:rD,execute:this.addContainer.bind(this)},bundleWorkspace:{name:"bundleWorkspace",dataDecoder:iD,resultDecoder:WF,execute:this.bundleWorkspace.bind(this)},bundleItem:{name:"bundleItem",dataDecoder:sD,resultDecoder:WF,execute:this.bundleItem.bind(this)},hibernateWorkspace:{name:"hibernateWorkspace",dataDecoder:oD,resultDecoder:WF,execute:this.hibernateWorkspace.bind(this)},resumeWorkspace:{name:"resumeWorkspace",dataDecoder:oD,resultDecoder:WF,execute:this.resumeWorkspace.bind(this)},getWorkspacesConfig:{name:"getWorkspacesConfig",resultDecoder:ok,execute:this.getWorkspacesConfiguration.bind(this)},lockWorkspace:{name:"lockWorkspace",dataDecoder:lD,resultDecoder:WF,execute:this.lockWorkspace.bind(this)},lockWindow:{name:"lockWindow",dataDecoder:uD,resultDecoder:WF,execute:this.lockWindow.bind(this)},lockContainer:{name:"lockContainer",dataDecoder:gD,resultDecoder:WF,execute:this.lockContainer.bind(this)},pinWorkspace:{name:"pinWorkspace",dataDecoder:fD,resultDecoder:WF,execute:this.pinWorkspace.bind(this)},unpinWorkspace:{name:"unpinWorkspace",dataDecoder:oD,resultDecoder:WF,execute:this.unpinWorkspace.bind(this)},getWorkspaceIcon:{name:"getWorkspaceIcon",dataDecoder:oD,resultDecoder:yD,execute:this.getWorkspaceIcon.bind(this)},setWorkspaceIcon:{name:"setWorkspaceIcon",dataDecoder:mD,resultDecoder:WF,execute:this.setWorkspaceIcon.bind(this)},checkStarted:{name:"checkStarted",execute:this.handleCheckStarted.bind(this)},getPlatformFrameId:{name:"getPlatformFrameId",execute:this.handleGetPlatformFrameId.bind(this)},getWorkspacesLayouts:{name:"getWorkspacesLayouts",dataDecoder:xD,resultDecoder:ID,execute:this.handleGetWorkspacesLayouts.bind(this)},getWorkspaceWindowsOnLayoutSaveContext:{name:"getWorkspaceWindowsOnLayoutSaveContext",dataDecoder:vD,resultDecoder:CD,execute:this.handleGetWorkspaceWindowsOnLayoutSaveContext.bind(this)},setMaximizationBoundary:{name:"setMaximizationBoundary",dataDecoder:bD,resultDecoder:WF,execute:this.handleSetMaximizationBoundary.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:EA,resultDecoder:AA,execute:this.handleOperationCheck.bind(this)},getWorkspaceWindowFrameBounds:{name:"getWorkspaceWindowFrameBounds",resultDecoder:GF,dataDecoder:KF,execute:this.getWorkspaceWindowFrameBounds.bind(this)},focusChange:{name:"focusChange",dataDecoder:Ck,execute:this.handleFocusEvent.bind(this)},bringBackToWorkspace:{name:"bringBackToWorkspace",dataDecoder:xk,execute:this.handleBringBackToWorkspace.bind(this)}};constructor(e,t,n,r,i){this.framesController=e,this.glueController=t,this.stateController=n,this.hibernationWatcher=r,this.ioc=i}get started(){return this._started}set started(e){this._started=e}handlePlatformShutdown(){this.started=!1,this.hibernationWatcher.stop(),this.framesController.stop()}async start(e){e.workspaces?(this.settings=this.applyDefaults(e.workspaces),this.settings.hibernation&&this.hibernationWatcher.start(this,this.settings.hibernation),await Promise.all([this.glueController.createWorkspacesStream(),this.glueController.createWorkspacesEventsReceiver(this.bridgeWorkspaceEvent.bind(this))]),await this.framesController.start(e.workspaces,e.windows.defaultWindowOpenBounds,this.operations.getFrameSummary),this.stateController.onWindowDisappeared((e=>this.framesController.handleFrameDisappeared(e))),this.started=!0):this.started=!1}get logger(){return Ym.get("workspaces.controller")}async handleControl(e){if(!this.started)throw new Error("Cannot handle this workspaces control message, because the controller has not been started");const t=e.data,n=e.commandId,r=zT.run(e.operation);if(!r.ok)throw new Error(`This workspace request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(r.error)}`);const i=r.result,s=this.operations[i].dataDecoder?.run(t);if(s&&!s.ok)throw new Error(`Workspace request for ${i} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(s.error)}`);this.logger?.debug(`[${n}] ${i} command is valid with data: ${JSON.stringify(t)}`);const o=await this.operations[i].execute(t,n),a=this.operations[i].resultDecoder?.run(o);if(a&&!a.ok)throw new Error(`Workspace request for ${i} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(a.error)}`);return this.logger?.trace(`[${n}] ${i} command was executed successfully`),o}handleClientUnloaded(e,t){this.logger?.trace(`handling unloading of ${e}`),t&&!t.closed||(this.logger?.trace(`${e} detected as closed, checking if frame and processing close`),this.framesController.handleFrameDisappeared(e))}bridgeWorkspaceEvent(e){this.glueController.pushWorkspacesMessage(e),"closed"===e.action&&"workspace"===e.type&&this.glueController.clearContext(e.payload.workspaceSummary.id,"workspace"),this.settings.hibernation&&this.hibernationWatcher.notifyEvent(e)}async closeItem(e,t){this.logger?.trace(`[${t}] handling closeItem request with config ${JSON.stringify(e)}`);const n=this.framesController.getAll().find((t=>t.windowId===e.itemId));if(n)return this.logger?.trace(`[${t}] this is targeted at a frame, closing the frame`),window.open(void 0,n.windowId)?.close(),void this.logger?.trace(`[${t}] the frame window is closed`);const r=await this.framesController.getFrameInstance(e);this.logger?.trace(`[${t}] targeting frame ${r.windowId}`),await this.glueController.callFrame(this.operations.closeItem,e,r.windowId),this.logger?.trace(`[${t}] frame ${r.windowId} gave a success signal, responding to caller`)}async setItemTitle(e,t){this.logger?.trace(`[${t}] handling setItemTitle request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance(e);this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.setItemTitle,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async hibernateWorkspace(e,t){this.logger?.trace(`[${t}] handling hibernateWorkspace request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.workspaceId});this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.preserveAllWorkspaceWindowsContext(e.workspaceId),await this.glueController.callFrame(this.operations.hibernateWorkspace,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async getWorkspacesConfiguration(e,t){return this.logger?.trace(`[${t}] handling getWorkspacesConfiguration request`),this.settings}async getWorkspaceWindowFrameBounds(e,t){this.logger?.trace(`[${t}] handling getWorkspaceWindowFrameBounds request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.itemId}),r=await this.glueController.callWindow("windows",this.ioc.windowsController.getFrameBoundsOperation,{windowId:n.windowId},{windowId:n.windowId});return this.logger?.trace(`[${t}] getWorkspaceWindowFrameBounds completed`),{bounds:r.bounds}}async getAllFramesSummaries(e,t){if(this.logger?.trace(`[${t}] handling getAllFramesSummaries request`),!this.started)return{summaries:[]};const n=await this.framesController.getAll();this.logger?.trace(`[${t}] sending getFrameSummary to all known frames: ${n.join(", ")}`);const r=(await Promise.all(n.map((e=>this.glueController.callFrame(this.operations.getFrameSummary,{itemId:e.windowId},e.windowId))))).filter((e=>"none"!==e.id));return this.logger?.trace(`[${t}] all frames responded, returning to caller`),{summaries:r}}async handleOperationCheck(e){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}async handleFrameHello(e,t){this.logger?.trace(`[${t}] handling handleFrameHello command with config: ${JSON.stringify(e)}`),e.windowId&&this.framesController.processNewHello(e.windowId)}async isWindowInWorkspace(e,t){this.logger?.trace(`[${t}] handling isWindowInWorkspace command with config: ${JSON.stringify(e)}`);const n=this.framesController.getAll();this.logger?.trace(`[${t}] sending isWindowInWorkspace to all known frames: ${JSON.stringify(n.join(", "))}`);const r=(await Promise.all(n.map((t=>this.glueController.callFrame(this.operations.isWindowInWorkspace,e,t.windowId))))).some((e=>e.inWorkspace));return this.logger?.trace(`[${t}] all frames responded, returning ${r} to the caller`),{inWorkspace:r}}async createWorkspace(e,t){this.logger?.trace(`[${t}] handling createWorkspace command`);const n={frameId:e.frame?.reuseFrameId,newFrame:e.frame?.newFrame,itemId:e.config?.reuseWorkspaceId},r=await this.framesController.getFrameInstance(n);this.logger?.trace(`[${t}] calling frame: ${r.windowId}, based on selection config: ${JSON.stringify(n)}`);const i=await this.glueController.callFrame(this.operations.createWorkspace,e,r.windowId);return this.logger?.trace(`[${t}] frame ${r.windowId} responded with a valid snapshot, returning to caller`),i}async createFrame(e,t){this.logger?.trace(`[${t}] handling createFrame command`);const n=await this.framesController.openFrame(e.frameConfig,e.layoutComponentId);this.logger?.trace(`[${t}] calling frame: ${n.windowId}}`);const r=await this.glueController.callFrame(this.operations.createFrame,e,n.windowId);return this.logger?.trace(`[${t}] frame ${n.windowId} responded returning to caller`),r}async initFrame(e,t){this.logger?.trace(`[${t}] handling initFrame command`);const n={frameId:e.frameId},r=await this.framesController.getFrameInstance(n);this.logger?.trace(`[${t}] calling frame: ${r.windowId}, based on selection config: ${JSON.stringify(n)}`),await this.glueController.callFrame(this.operations.initFrame,e,r.windowId),this.logger?.trace(`[${t}] frame ${r.windowId} responded returning to caller`)}async getFrameSummary(e,t){this.logger?.trace(`[${t}] handling getFrameSummary request for config: ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance(e);this.logger?.trace(`[${t}] forwarding getFrameSummary to frame ${n.windowId}`);const r=await this.glueController.callFrame(this.operations.getFrameSummary,e,n.windowId);return this.logger?.trace(`[${t}] frame ${n.windowId} responded with a valid summary, returning to caller`),r}async getAllWorkspacesSummaries(e,t){this.logger?.trace(`[${t}] handling getAllWorkspacesSummaries request`);const n=this.framesController.getAll();this.logger?.trace(`[${t}] sending getAllWorkspacesSummaries to all known frames: ${n.join(", ")}`);const r=(await Promise.all(n.map((e=>this.glueController.callFrame(this.operations.getAllWorkspacesSummaries,{},e.windowId))))).reduce(((e,t)=>(e.push(...t.summaries),e)),[]);return this.logger?.trace(`[${t}] all frames responded, results were aggregated, returning to caller`),{summaries:r}}async getWorkspaceSnapshot(e,t){this.logger?.trace(`[${t}] handling getWorkspaceSnapshot for config: ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance(e);this.logger?.trace(`[${t}] targeting frame ${n.windowId}`);const r=await this.glueController.callFrame(this.operations.getWorkspaceSnapshot,e,n.windowId);return this.logger?.trace(`[${t}] frame ${n.windowId} responded with a valid snapshot, retuning to caller`),r}async handleCheckStarted(e,t){return this.logger?.trace(`[${t}] handling handleCheckStarted request`),this.logger?.trace(`[${t}] the controller has been started, responding to caller`),{started:!0}}async handleGetPlatformFrameId(e,t){this.logger?.trace(`[${t}] handling GetPlatformFrameId request`);const n=this.framesController.getPlatformFrameSessionData();return this.logger?.trace(`[${t}] GetPlatformFrameId completed, responding to caller`),{id:n?.windowId}}async getFrameSessionData(e,t){this.logger?.trace(`[${t}] handling getFrameSessionData request`);const n=this.framesController.getFrameConfig(e.frameId);return this.logger?.trace(`[${t}] getFrameSessionData completed, responding to caller`),n}async handleGetWorkspacesLayouts(e,t){this.logger?.trace(`[${t}] handling handleGetWorkspacesLayouts request for frame: ${e.frameId} for layout: ${e.layoutName} of type: ${e.layoutType}`);const n=await this.glueController.callFrame(this.operations.getWorkspacesLayouts,e,e.frameId);return this.logger?.trace(`[${t}] handleGetWorkspacesLayouts request completed for frame: ${e.frameId} for layout: ${e.layoutName} of type: ${e.layoutType}`),n}async getFrameBounds(e,t){this.logger?.trace(`[${t}] handling getFrameBounds request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({frameId:e.itemId}),r=await this.glueController.callWindow("windows",this.ioc.windowsController.getFrameBoundsOperation,{windowId:n.windowId},{windowId:n.windowId});return this.logger?.trace(`[${t}] getFrameBounds completed`),{bounds:r.bounds}}async getAllLayoutsSummaries(e,t){this.logger?.trace(`[${t}] handling getAllLayoutsSummaries command`);const n=(await this.ioc.layoutsController.handleGetAll({type:"Workspace"},t)).summaries.map((e=>({name:e.name})));return this.logger?.trace(`[${t}] all layouts retrieved and mapped, returning to caller`),{summaries:n}}async openWorkspace(e,t){this.logger?.trace(`[${t}] handling openWorkspace command for name: ${e.name}`);const n={frameId:e.restoreOptions?.frameId,newFrame:e.restoreOptions?.newFrame,itemId:e.restoreOptions?.reuseWorkspaceId},r=await this.framesController.getFrameInstance(n);return await this.glueController.callFrame(this.operations.openWorkspace,e,r.windowId)}async deleteLayout(e,t){this.logger?.trace(`[${t}] handling deleteLayout request for name: ${e.name}`),await this.ioc.layoutsController.handleRemove({name:e.name,type:"Workspace"},t),this.logger?.trace(`[${t}] layouts reported this layout as deleted, responding to caller`)}async saveLayout(e,t){this.logger?.trace(`[${t}] handling saveLayout request for workspace ${e.workspaceId} and name ${e.name}`);const n=await this.framesController.getFrameInstance({itemId:e.workspaceId});this.logger?.trace(`[${t}] forwarding request to frame ${n.windowId}`);const r=await this.glueController.callFrame(this.operations.saveLayout,e,n.windowId);return this.logger?.trace(`[${t}] frame ${n.windowId} responded with a valid layout, returning to caller`),r}async importLayout(e,t){this.logger?.trace(`[${t}] handling importLayout command for layout ${e.layout.name}`),await this.ioc.layoutsController.handleImport({layouts:[e.layout],mode:e.mode},t),this.logger?.trace(`[${t}] the layouts controller successfully imported the layout, responding to caller`)}async exportAllLayouts(e,t){this.logger?.trace(`[${t}] handling exportAllLayouts request`);return await this.ioc.layoutsController.handleExport({type:"Workspace"},t)}async restoreItem(e,t){this.logger?.trace(`[${t}] handling restoreItem request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance(e);this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.restoreItem,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async maximizeItem(e,t){this.logger?.trace(`[${t}] handling maximizeItem request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance(e);this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.maximizeItem,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async focusItem(e,t){this.logger?.trace(`[${t}] handling focusItem request with config ${JSON.stringify(e)}`);const n=this.framesController.getAll().find((t=>t.windowId===e.itemId));if(n)return this.logger?.trace(`[${t}] this is targeted at a frame, focusing the frame`),void window.open(void 0,n.windowId);const r=await this.framesController.getFrameInstance(e);this.logger?.trace(`[${t}] targeting frame ${r.windowId}`),await this.glueController.callFrame(this.operations.focusItem,e,r.windowId),this.logger?.trace(`[${t}] frame ${r.windowId} gave a success signal, responding to caller`)}async resizeItem(e,t){this.logger?.trace(`[${t}] handling resizeItem request with config ${JSON.stringify(e)}`);const n=this.framesController.getAll().find((t=>t.windowId===e.itemId));if(n){this.logger?.trace(`[${t}] detected targeted item is frame, building window resize config`);const r={windowId:e.itemId,width:e.width,height:e.height,relative:e.relative};return await this.glueController.callWindow("windows",this.ioc.windowsController.moveResizeOperation,r,{windowId:n.windowId}),void this.logger?.trace(`[${t}] window resize responded with success, returning to caller`)}const r=await this.framesController.getFrameInstance(e);this.logger?.trace(`[${t}] targeted item is not a frame, it is located in frame ${r.windowId}`),await this.glueController.callFrame(this.operations.resizeItem,e,r.windowId),this.logger?.trace(`[${t}] frame ${r.windowId} gave a success signal, responding to caller`)}async getFrameSnapshot(e,t){this.logger?.trace(`[${t}] handling getFrameSnapshot request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance(e);this.logger?.trace(`[${t}] targeting frame ${n.windowId}`);const r=await this.glueController.callFrame(this.operations.getFrameSnapshot,e,n.windowId);return this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`),r}async forceLoadWindow(e,t){this.logger?.trace(`[${t}] handling forceLoadWindow request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance(e);this.logger?.trace(`[${t}] targeting frame ${n.windowId}`);const r=await this.glueController.callFrame(this.operations.forceLoadWindow,e,n.windowId);return this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`),r}async ejectWindow(e,t){this.logger?.trace(`[${t}] handling ejectWindow request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance(e);this.logger?.trace(`[${t}] targeting frame ${n.windowId}`);const r=await this.glueController.callFrame(this.operations.ejectWindow,e,n.windowId);return this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`),r}async moveWindowTo(e,t){this.logger?.trace(`[${t}] handling moveWindowTo request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance(e);this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.moveWindowTo,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async addWindow(e,t){this.logger?.trace(`[${t}] handling addWindow request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.parentId});this.logger?.trace(`[${t}] targeting frame ${n.windowId}`);const r=await this.glueController.callFrame(this.operations.addWindow,e,n.windowId);return this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal: ${JSON.stringify(r)}, responding to caller`),r}async addContainer(e,t){this.logger?.trace(`[${t}] handling addContainer request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.parentId});this.logger?.trace(`[${t}] targeting frame ${n.windowId}`);const r=await this.glueController.callFrame(this.operations.addContainer,e,n.windowId);return this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal: ${JSON.stringify(r)}, responding to caller`),r}async bundleWorkspace(e,t){this.logger?.trace(`[${t}] handling bundleWorkspace request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.workspaceId});this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.bundleWorkspace,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async bundleItem(e,t){this.logger?.trace(`[${t}] handling bundleItem request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.itemId});this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.bundleItem,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async resumeWorkspace(e,t){this.logger?.trace(`[${t}] handling resumeWorkspace request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.workspaceId});this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.resumeWorkspace,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async lockWorkspace(e,t){this.logger?.trace(`[${t}] handling lockWorkspace request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.workspaceId});this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.lockWorkspace,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async lockContainer(e,t){this.logger?.trace(`[${t}] handling lockContainer request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.itemId});this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.lockContainer,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async lockWindow(e,t){this.logger?.trace(`[${t}] handling lockWindow request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.windowPlacementId});this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.lockWindow,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async pinWorkspace(e,t){this.logger?.trace(`[${t}] handling pinWorkspace request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.workspaceId});this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.pinWorkspace,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async unpinWorkspace(e,t){this.logger?.trace(`[${t}] handling unpinWorkspace request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.workspaceId});this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.unpinWorkspace,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async getWorkspaceIcon(e,t){this.logger?.trace(`[${t}] handling getWorkspaceIcon request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.workspaceId});this.logger?.trace(`[${t}] targeting frame ${n.windowId}`);const r=await this.glueController.callFrame(this.operations.getWorkspaceIcon,e,n.windowId);return this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`),r}async setWorkspaceIcon(e,t){this.logger?.trace(`[${t}] handling setWorkspaceIcon request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({itemId:e.workspaceId});this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.setWorkspaceIcon,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async handleGetWorkspaceWindowsOnLayoutSaveContext(e,t){this.logger?.trace(`[${t}] handling GetWorkspaceWindowsOnLayoutSaveContext request with config: ${JSON.stringify(e)}`);const n=await Promise.all(e.windowIds.map((async t=>({windowId:t,windowContext:await this.getWorkspaceWindowOnLayoutSaveData(t,e)}))));return this.logger?.trace(`[${t}] operation GetWorkspaceWindowsOnLayoutSaveContext completed responding`),{windowsOnSaveData:n}}async handleSetMaximizationBoundary(e,t){this.logger?.trace(`[${t}] handling setMaximizationBoundary request with config ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance(e);this.logger?.trace(`[${t}] targeting frame ${n.windowId}`),await this.glueController.callFrame(this.operations.setMaximizationBoundary,e,n.windowId),this.logger?.trace(`[${t}] frame ${n.windowId} gave a success signal, responding to caller`)}async changeFrameState(e,t){throw new Error("Frame states are not supported in Glue42 Core")}async getFrameState(e,t){throw new Error("Frame states are not supported in Glue42 Core")}async handleFocusEvent(e,t){this.logger?.trace(`[${t}] handling focus event from frame id: ${e.windowId} and hasFocus: ${e.hasFocus}`);try{await this.framesController.getFrameInstance({frameId:e.windowId})}catch(n){return void this.logger?.trace(`[${t}] ignoring focus event for unrecognized frame with id: ${e.windowId}`)}const n={type:"frame",action:"focus",payload:{frameSummary:{id:e.windowId,isFocused:e.hasFocus}}};this.bridgeWorkspaceEvent(n),this.logger?.trace(`[${t}] focus event from frame id: ${e.windowId} and hasFocus: ${e.hasFocus} handled`)}async moveFrame(e,t){this.logger?.trace(`[${t}] handling moveFrame command with config: ${JSON.stringify(e)}`);const n=await this.framesController.getFrameInstance({frameId:e.itemId}),r={windowId:e.itemId,top:e.top,left:e.left,relative:e.relative};await this.glueController.callWindow("windows",this.ioc.windowsController.moveResizeOperation,r,{windowId:n.windowId}),this.logger?.trace(`[${t}] frame with id ${n.windowId} was successfully moved, responding to caller`)}applyDefaults(e){const t=e?.hibernation||{},n=Ok(AO,e?.loadingStrategy||{});return{...e,loadingStrategy:n,hibernation:t}}async getWorkspaceWindowOnLayoutSaveData(e,t){if(this.ioc.sessionController.getAllNonGlue().some((t=>t.windowId===e)))return{};if(!this.ioc.sessionController.getWorkspaceClientById(e))throw new Error(`Cannot ask window: ${e} for on layout save request, because it is not a known workspace window`);const n=`Cannot fetch the on layout save context from: ${e}, because of timeout`,r=await OT((async()=>{try{return await this.glueController.callWindow("layouts",{name:"clientSaveRequest",execute:async()=>{}},t,{windowId:e})}catch(e){return{}}}),15e3,n);return r?.windowContext??{}}async handleBringBackToWorkspace({windowId:e},t){this.logger?.trace(`[${t}] - received 'bringBackToWorkspace' signal for windowId ${e}`);if(!this.glueController.getWindowById(e))throw new Error(`Cannot bring back window with id ${e} to workspace because it is not known by the platform`);const n=await this.glueController.clientGlue.contexts.get(`___window___${e}`);if(!n||!Object.keys(n).length||!n.___io___?.ejectedWindow)throw new Error(`Cannot bring back window with id ${e} to workspace because it was never a part from one`);const{___io___:{ejectedWindow:r}}=n,i=await this.framesController.getFrameInstance({itemId:r.frameId}),s={definition:{type:"group",children:[{windowId:e,type:"window"}]},parentType:"workspace",parentId:r.workspaceId},o=await this.glueController.callFrame(this.operations.addContainer,s,i.windowId);this.logger?.trace(`[${t}] - frame ${i.windowId} gave a success signal: ${JSON.stringify(o)}`)}}const _O=hA(aA("findIntent"),aA("getIntents"),aA("raiseIntent"),aA("raise"),aA("operationCheck"),aA("filterHandlers"),aA("getIntentsByHandler")),PO=cA({applicationName:mA,applicationTitle:uA(rA()),applicationDescription:uA(rA()),applicationIcon:uA(rA()),type:hA(aA("app"),aA("instance")),displayName:uA(rA()),contextTypes:uA(lA(mA)),instanceId:uA(rA()),instanceTitle:uA(rA()),resultType:uA(mA)}),TO=cA({name:mA,handlers:lA(PO)}),FO=hA(aA("startNew"),aA("reuse"),cA({app:uA(mA),instance:uA(mA)})),DO=cA({type:uA(mA),data:uA(cA())}),OO=cA({intents:lA(TO)}),RO=cA({filter:uA(cA({name:uA(mA),contextType:uA(mA),resultType:uA(mA)}))});cA({applicationName:mA,applicationIcon:uA(rA()),instanceId:uA(rA())});const NO=cA({intent:mA,target:uA(FO),context:uA(DO),options:uA(bk),handlers:uA(lA(PO)),timeout:uA(fA),waitUserResponseIndefinitely:uA(sA())}),jO=cA({enabled:uA(sA()),appName:rA(),waitResponseTimeout:iA()}),$O=cA({intentRequest:NO,resolverConfig:jO}),MO=cA({request:NO,handler:PO,result:oA()}),qO=cA({intent:mA,handler:PO}),BO=cA({handler:PO}),LO=cA({title:uA(mA),openResolver:uA(sA()),timeout:uA(fA),intent:uA(mA),contextTypes:uA(lA(mA)),resultType:uA(mA),applicationNames:uA(lA(mA))}),WO=cA({handlers:lA(PO)}),HO=cA({filterHandlersRequest:LO,resolverConfig:jO}),UO=cA({intent:mA,contextTypes:uA(lA(mA)),description:uA(mA),displayName:uA(mA),icon:uA(mA),resultType:uA(mA)}),GO=cA({intents:lA(UO)}),VO=UE.intents;class JO{glueController;resolverHelper;appDirectory;ioc;operations={getIntents:{name:"getIntents",resultDecoder:OO,execute:this.getWrappedIntents.bind(this)},findIntent:{name:"findIntent",dataDecoder:RO,resultDecoder:OO,execute:this.findIntent.bind(this)},raiseIntent:{name:"raiseIntent",dataDecoder:NO,resultDecoder:MO,execute:this.handleRaiseIntent.bind(this)},raise:{name:"raise",dataDecoder:$O,resultDecoder:MO,execute:this.raise.bind(this)},filterHandlers:{name:"filterHandlers",dataDecoder:HO,resultDecoder:WO,execute:this.filterHandlers.bind(this)},getIntentsByHandler:{name:"getIntentsByHandler",dataDecoder:PO,resultDecoder:GO,execute:this.getIntentsByHandler.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:EA,resultDecoder:AA,execute:this.handleOperationCheck.bind(this)}};started=!1;constructor(e,t,n,r){this.glueController=e,this.resolverHelper=t,this.appDirectory=n,this.ioc=r}get logger(){return Ym.get("intents.controller")}handlePlatformShutdown(){this.started=!1}async start(){this.started=!0}async handleControl(e){if(!this.started)throw new Error("Cannot handle this intents control message, because the controller has not been started");const t=e.data,n=e.commandId,r=e.callerId,i=_O.run(e.operation);if(!i.ok)throw new Error(`This intents request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(i.error)}`);const s=i.result,o=this.operations[s].dataDecoder?.run(t);if(o&&!o.ok)throw new Error(`Intents request for ${s} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(o.error)}`);this.logger?.debug(`[${n}] ${s} command is valid with data: ${JSON.stringify(t)}`);const a=await this.operations[s].execute(t,n,r),c=this.operations[s].resultDecoder?.run(a);if(c&&!c.ok)throw new Error(`Intents request for ${s} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(c.error)}`);return this.logger?.trace(`[${n}] ${s} command was executed successfully`),a}async handleOperationCheck(e){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}extractAppIntents(e){const t={},n=e.filter((e=>e.intents.length>0));for(const e of n)for(const n of e.intents){t[n.name]||(t[n.name]=[]);const r={applicationName:e.name,applicationTitle:e.title,applicationDescription:e.caption,displayName:n.displayName,contextTypes:n.contexts,applicationIcon:e.icon,type:"app",resultType:n.resultType};t[n.name].push(r)}return t}async getInstanceIntents(e,t){const n={};for(const r of this.glueController.getServers()){const i=(r.getMethods?.()||[]).filter((e=>e.name.startsWith(qs)));await Promise.all(i.map((async i=>{const s=i.name.replace(qs,"");n[s]||(n[s]=[]);const o=i.flags.intent,a=e.find((e=>e.name===r.application));let c,l;a&&a.intents&&(c=a.intents.find((e=>e.name===s))),this.glueController.isValidWindowId(r.windowId)&&(l=await this.ioc.windowsController.getWindowTitle(r.windowId,t));const u={instanceId:r.windowId||r.instance,applicationName:r.application||"",applicationIcon:o.icon||a?.icon,applicationTitle:a?.title||"",applicationDescription:o.description||a?.caption,displayName:o.displayName||c?.displayName,contextTypes:o.contextTypes||c?.contexts,instanceTitle:l,type:"instance",resultType:c?.resultType||o.resultType};n[s].push(u)})))}return n}mergeIntentStores(e,t){const n={};for(const r of new Set([...Object.keys(e),...Object.keys(t)]))n[r]=[...e[r]||[],...t[r]||[]];return n}wrapIntents(e){return{intents:e}}async getIntents(e){const t=(await this.appDirectory.getAll()).map((e=>({name:e.name,title:e.title||"",icon:e.icon,caption:e.caption,intents:e.userProperties.intents||[]}))),n=this.extractAppIntents(t);this.logger?.trace(`[${e}] got app intents`);const r=await this.getInstanceIntents(t,e);this.logger?.trace(`[${e}] got instance intents`);const i=this.mergeIntentStores(n,r);return Object.keys(i).map((e=>({name:e,handlers:i[e]})))}async getWrappedIntents(e){this.logger?.trace(`[${e}] handling getIntents command`);const t=await this.getIntents(e);return this.logger?.trace(`[${e}] getIntents command completed`),this.wrapIntents(t)}async findIntent(e,t){this.logger?.trace(`[${t}] handling findIntent command`);const n=e.filter;let r=await this.getIntents(t);if(!n)return this.wrapIntents(r);if("string"==typeof n)return this.wrapIntents(r.filter((e=>e.name===n)));if(n.contextType){const e=n.contextType.toLowerCase();r=r.filter((t=>t.handlers.some((t=>t.contextTypes?.some((t=>t.toLowerCase()===e))))))}if(n.name&&(r=r.filter((e=>e.name===n.name))),n.resultType){const e=n.resultType.toLowerCase();r=r.filter((t=>t.handlers.some((t=>t.resultType?.toLowerCase()===e))))}return this.logger?.trace(`[${t}] findIntent command completed`),this.wrapIntents(r)}async getIntent(e,t){return(await this.getIntents(t)).find((t=>t.name===e))}async startApp(e,t){return(await this.ioc.applicationsController.handleApplicationStart(e,t)).id}handleRaiseIntent(e,t,n){return this.raiseIntent(e,t,n)}async raiseIntent(e,t,n,r){this.logger?.trace(`[${t}] handling raiseIntent command with intentRequest: ${JSON.stringify(e)}`);const i=e.intent,s=await this.getIntent(i,t);if(!s)throw new Error(`Intent ${i} not found!`);this.logger?.trace(`Raised intent definition: ${JSON.stringify(s)}`);const o=e.handlers?this.findHandlerByFilter(e.handlers,{type:"app"}):this.findHandlerByFilter(s.handlers,{type:"app"}),a=e.handlers?this.findHandlerByFilter(e.handlers,{type:"instance"}):this.findHandlerByFilter(s.handlers,{type:"instance"});let c;if(e.target&&"reuse"!==e.target||(c=a||o),"startNew"===e.target&&(c=o),"object"==typeof e.target&&e.target.app&&(c=this.findHandlerByFilter(s.handlers,{app:e.target.app})),"object"==typeof e.target&&e.target.instance&&(c=this.findHandlerByFilter(s.handlers,{instance:e.target.instance,app:e.target.app})),!c)throw new Error(`Can not raise intent for request ${JSON.stringify(e)} - can not find intent handler!`);return await this.raiseIntentToTargetHandler({request:e,handler:c,commandId:t,callerId:n,timeout:r})}findHandlerByFilter(e,t){return t.type?e.find((e=>e.type===t.type)):t.instance?e.find((e=>t.app?e.applicationName===t.app&&e.instanceId===t.instance:e.instanceId===t.instance)):t.app?e.find((e=>e.applicationName===t.app)):void 0}async raiseIntentToTargetHandler({handler:e,request:t,callerId:n,commandId:r,timeout:i}){this.logger?.trace(`Raising intent to target handler:${JSON.stringify(e)}`);const s=e.instanceId?Promise.resolve(e.instanceId):this.startApp({name:e.applicationName,...t.options,context:t.context},r).catch((e=>{const t=e instanceof Error||"string"==typeof e?e:JSON.stringify(e);throw new Error(`${VO.TARGET_INSTANCE_UNAVAILABLE}. Reason: ${t}`)})),o=await s,a=`${qs}${t.intent}`;this.logger?.trace(`Searching for interop server offering method ${a}`);const c={methodResponseTimeoutMs:i?i+1e3:6e4,waitTimeoutMs:i?i+1e3:6e4},l=this.glueController.invokeMethod(a,{...t.context,_initialCallerId:n},{instance:o},c).catch((e=>{throw new Error(`${VO.INTENT_HANDLER_REJECTION}. Reason: ${e instanceof Error?e:JSON.stringify(e)}`)})),u=await l;return this.logger?.trace(`[${r}] raiseIntent command completed. Returning result: ${JSON.stringify(u)}`),{request:t,handler:{...e,instanceId:o,type:"instance"},result:u.returned}}async raise(e,t,n){if(this.logger?.trace(`[${t}] Receive raise command with config: ${JSON.stringify(e)}`),!n)throw new Error(`${VO.CALLER_NOT_DEFINED} for 'raise' command with request ${JSON.stringify(e)}`);const r=e.intentRequest.timeout||9e4,i={instanceId:void 0},s=this.coreRaiseIntent.bind(this,{request:e,resolverInstance:i,timeout:r,commandId:t,callerId:n});if(e.intentRequest.waitUserResponseIndefinitely)return s();const o=OT(s,r,`${VO.TIMEOUT_HIT} - waited ${r}ms for 'raise' to resolve`);return o.catch((()=>this.handleRaiseOnError(i.instanceId))),o}async coreRaiseIntent({request:e,resolverInstance:t,timeout:n,commandId:r,callerId:i}){const{resolverConfig:s,intentRequest:o}=e,a=(await this.findIntent({filter:{name:o.intent}},r)).intents.find((e=>e.name===o.intent));if(!a)throw new Error(`${VO.INTENT_NOT_FOUND} with name ${o.intent}`);this.logger?.trace(`[${r}] Intent to be handled: ${JSON.stringify(a)}`);const{open:c,reason:l}=this.checkIfResolverShouldBeOpenedForRaise(a,o,s);if(!c)return this.logger?.trace(`[${r}] Intent Resolver UI won't be used. Reason: ${l}`),o.waitUserResponseIndefinitely?OT((()=>this.raiseIntent(o,r,i,n)),n,`${VO.TIMEOUT_HIT} - waited ${n}ms for 'raise' to resolve`):this.raiseIntent(o,r,i,n);this.logger?.trace(`[${r}] Starting Intent Resolver app for intent request: ${e}`);const u=await this.resolverHelper.startResolverApp({request:e.intentRequest,resolverConfig:e.resolverConfig,callerId:i,commandId:r,resolverInstance:t,method:"raise"});if(this.logger?.trace(`Raising intent to target handler: ${JSON.stringify(u)} ${e.intentRequest.waitUserResponseIndefinitely?`with timeout of ${e.intentRequest.timeout||9e4}`:""}`),o.waitUserResponseIndefinitely)return OT((()=>this.raiseIntentToTargetHandler({request:o,handler:u,commandId:r,timeout:n,callerId:i})),n,`${VO.TIMEOUT_HIT} - waited ${n}ms for 'raise' to resolve`);const h=await this.raiseIntentToTargetHandler({request:e.intentRequest,handler:u,commandId:r,callerId:i,timeout:n});return this.logger?.trace(`Result from raise() method for intent ${JSON.stringify(e.intentRequest.intent)}: ${JSON.stringify(h)}`),h}handleRaiseOnError(e){e&&this.resolverHelper.stopResolverInstance(e)}checkIfIntentHasMoreThanOneHandler(e,t){return t.target?"reuse"===t.target?t.handlers?t.handlers.filter((e=>"instance"===e.type&&e.instanceId)).length>1||t.handlers.filter((e=>"app"===e.type)).length>1:e.handlers.filter((e=>"instance"===e.type&&e.instanceId)).length>1||e.handlers.filter((e=>"app"===e.type)).length>1:"startNew"===t.target?t.handlers?t.handlers.filter((e=>"app"===e.type)).length>1:e.handlers.filter((e=>"app"===e.type)).length>1:(t.target,!1):t.handlers?t.handlers.length>1:e.handlers.length>1}checkIfResolverShouldBeOpenedForRaise(e,t,n){const r=this.checkIfResolverShouldBeOpenByResolverConfig(n);if(!r.open)return r;return this.checkIfIntentHasMoreThanOneHandler(e,t)?{open:!0}:{open:!1,reason:"Raised intent has only one handler"}}checkIfResolverShouldBeOpenedForFilterHandlers(e,t,n){return 1===e.length?{open:!1,reason:`There's only one valid intent handler for filter ${JSON.stringify(t)}`}:this.checkIfResolverShouldBeOpenByResolverConfig(n)}checkIfResolverShouldBeOpenByResolverConfig(e){if(!e.enabled)return{open:!1,reason:"Intent Resolver is disabled. Raising intent to first found handler"};return this.glueController.clientGlue.appManager.application(e.appName)?{open:!0}:{open:!1,reason:`Application with name ${e.appName} not found`}}async filterHandlers(e,t,n){if(this.logger?.trace(`[${t}] Receive 'filterHandlers' command with request: ${JSON.stringify(e)}`),!n)throw new Error("Cannot preform 'filterHandlers' - callerId is not defined");const{filterHandlersRequest:r,resolverConfig:i}=e,s=this.filterHandlersBy(await this.getIntents(t),r);if(!s?.length)return{handlers:[]};const{open:o,reason:a}=this.checkIfResolverShouldBeOpenedForFilterHandlers(s,r,i);if(!o)return this.logger?.trace(`[${t}] Intent Resolver UI won't be used. Reason: ${a}`),{handlers:s};const c={instanceId:void 0},l=r.timeout||9e4;return{handlers:[await OT((()=>this.resolverHelper.startResolverApp({request:r,resolverConfig:i,commandId:t,callerId:n,resolverInstance:c,method:"filterHandlers"})),l,`Timeout of ${l}ms hit for 'filterHandlers' request with filter: ${JSON.stringify(e.filterHandlersRequest)}`)]}}filterHandlersBy(e,t){const n=e.filter((e=>{if(!t.intent||t.intent===e.name){if(t.resultType){const n=e.handlers.filter((e=>e.resultType&&e.resultType===t.resultType));if(!n.length)return;e.handlers=n}if(t.contextTypes){const n=e.handlers.filter((e=>t.contextTypes?.every((t=>e.contextTypes?.includes(t)))));if(!n.length)return;e.handlers=n}if(t.applicationNames){const n=e.handlers.filter((e=>t.applicationNames?.includes(e.applicationName)));if(!n.length)return;e.handlers=n}return e}})),r=n.map((e=>e.handlers)).flat(1);return r.filter(((e,t)=>t===r.findIndex((t=>e.instanceId?e.instanceId===t.instanceId:!t.instanceId&&t.applicationName===e.applicationName))))}async getIntentsByHandler(e,t){this.logger?.log(`[${t}] - Receive 'getIntents' command with request: ${JSON.stringify(e)}`);const n=PO.runWithException(e),r=await this.getIntents(t);var i;i=n,Object.keys(i).forEach((e=>{null!==i[e]&&void 0!==i[e]||delete i[e]})),this.logger?.info(`[${t}] - extracting valid intents for the passed handler`);const s=this.extractIntentsWithInfoByHandler(r,n);return this.logger?.info(`[${t}] - returning intents for handler ${JSON.stringify(e)}`),{intents:s}}extractIntentsWithInfoByHandler(e,t){return e.reduce(((e,n)=>(n.handlers.forEach((r=>{if(!Object.keys(t).every((e=>"contextTypes"===e?t.contextTypes?.every((e=>r.contextTypes?.includes(e))):r[e]===t[e])))return;const i={intent:n.name,contextTypes:r.contextTypes,description:r.applicationDescription,displayName:r.displayName,icon:r.applicationIcon,resultType:r.resultType};e.push(i)})),e)),[])}}const KO=hA(aA("addChannel"),aA("removeChannel"),aA("operationCheck"),aA("getMyChannel"),aA("getWindowIdsOnChannel"),aA("getWindowIdsWithChannels"),aA("joinChannel"),aA("restrict"),aA("getRestrictions"),aA("restrictAll")),zO=cA({name:mA,meta:cA({color:mA}),data:uA(oA())}),QO=cA({name:mA}),XO=cA({channel:uA(mA)}),YO=cA({channel:mA}),ZO=cA({windowIds:lA(mA)}),eR=cA({windowIdsWithChannels:lA(cA({application:mA,channel:uA(mA),windowId:mA}))}),tR=cA({application:uA(mA),channels:uA(lA(mA)),windowIds:uA(lA(mA))}),nR=cA({filter:uA(tR)}),rR=cA({channel:mA,windowId:mA}),iR=cA({name:mA,read:sA(),write:sA(),windowId:mA}),sR=cA({config:iR}),oR=cA({windowId:mA}),aR=cA({read:sA(),write:sA(),windowId:mA}),cR=cA({restrictions:aR}),lR=cA({name:mA,read:sA(),write:sA(),windowId:uA(mA)}),uR=cA({channels:lA(lR)});class hR{glueController;operations={addChannel:{name:"addChannel",execute:this.addChannel.bind(this),dataDecoder:zO},removeChannel:{name:"removeChannel",execute:this.removeChannel.bind(this),dataDecoder:QO},getMyChannel:{name:"getMyChannel",execute:async()=>{},resultDecoder:XO},getWindowIdsOnChannel:{name:"getWindowIdsOnChannel",execute:this.handleGetWindowIdsOnChannel.bind(this),dataDecoder:YO,resultDecoder:ZO},getWindowIdsWithChannels:{name:"getWindowIdsWithChannels",execute:this.handleGetWindowIdsWithChannels.bind(this),dataDecoder:nR,resultDecoder:eR},operationCheck:{name:"operationCheck",dataDecoder:EA,resultDecoder:AA,execute:this.handleOperationCheck.bind(this)},joinChannel:{name:"joinChannel",dataDecoder:rR,execute:this.handleJoinChannel.bind(this)},restrict:{name:"restrict",dataDecoder:sR,execute:this.restrict.bind(this)},getRestrictions:{name:"getRestrictions",dataDecoder:oR,execute:this.getRestrictions.bind(this),resultDecoder:uR},restrictAll:{name:"restrictAll",dataDecoder:cR,execute:this.restrictAll.bind(this)}};constructor(e){this.glueController=e}get logger(){return Ym.get("channels.controller")}async start(e){const t=e.channels.definitions;this.logger?.trace("initializing channels"),await this.setupChannels(t),this.logger?.trace("initialization is completed")}async handleControl(e){const t=e.data,n=e.commandId,r=e.callerId,i=KO.run(e.operation);if(!i.ok)throw new Error(`This channels request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(i.error)}`);const s=i.result,o=this.operations[s].dataDecoder?.run(t);if(o&&!o.ok)throw new Error(`Channels request for ${s} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(o.error)}`);this.logger?.debug(`[${n}] ${s} command is valid with data: ${JSON.stringify(t)}`);const a=await this.operations[s].execute(t,n,r),c=this.operations[s].resultDecoder?.run(a);if(c&&!c.ok)throw new Error(`Channels request for ${s} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(c.error)}`);return this.logger?.trace(`[${n}] ${s} command was executed successfully`),a}async handleOperationCheck(e){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}async setupChannels(e){await Promise.all(e.map((e=>this.addChannel(e))))}async addChannel(e,t){this.trace(`[${t}] handling addChannel command with a valid name: ${e.name}, color: ${e.meta.color} and data: ${JSON.stringify(e.data)}`,t);const n={name:e.name,meta:e.meta,data:e.data||{}},r=this.createContextName(n.name);this.trace(`[${t}] setting a new channel context with name: ${r}`,t),await this.glueController.setContext(r,n),this.trace(`[${t}] channel context with name: ${r} created successfully`,t)}async removeChannel({name:e},t){this.trace(`[${t}] handling removeChannel command with a valid name: ${e}`,t);const n=this.createContextName(e);await this.glueController.destroyContext(n),this.trace(`[${t}] channel context with name: ${n} destroyed successfully`,t)}getWindowChannel(e){return this.glueController.callWindow("channels",this.operations.getMyChannel,{},{windowId:e})}async handleGetWindowIdsOnChannel({channel:e},t){this.trace(`[${t}] handling getWindowIdsOnChannel command with channel: ${e}`,t);const n=this.glueController.getServers().reduce(((e,{windowId:t})=>t?[...e,t]:e),[]);this.trace(`[${t}] compiled a list of the IDs of all the windows that will be called: [${n.join(", ")}]`,t);const r=await Promise.all(n.map((async e=>{const{channel:t}=await this.getWindowChannel(e);return{channel:t,windowId:e}}))),i=r.filter((t=>t.channel===e)).map((({windowId:e})=>e));return this.trace(`[${t}] compiled a list of all windowIds that are on the "${e}" channel and returning it to the caller: [${i.join(", ")}]`),{windowIds:i}}async handleGetWindowIdsWithChannels({filter:e},t){this.trace(`[${t}] handling getWindowIdsWithChannels command with filter: ${JSON.stringify(e)}`,t);const n=this.glueController.getServers(),r=this.glueController.getAllApplicationNames(),i=n.filter((({windowId:e})=>e));this.trace(`[${t}] compiled a list of the IDs of all the windows that will be called: [${i.map((({windowId:e})=>e)).join(", ")}]`,t);const s=await Promise.all(i.map((async({applicationName:e,windowId:t})=>{const{channel:n}=await this.getWindowChannel(t);return{application:e&&r.includes(e)?e:"no-app-window",...n?{channel:n}:{},windowId:t}})));let o=s;return e?(e.application&&(this.trace(`[${t}] filtering windows by application: ${e.application}`,t),o=o.filter((({application:t})=>t===e.application))),e.channels&&(this.trace(`[${t}] filtering windows by channels: [${e.channels.join(", ")}]`,t),o=o.filter((({channel:t})=>t&&e.channels?.includes(t)))),e.windowIds&&(this.trace(`[${t}] filtering windows by windowIds: [${e.windowIds.join(", ")}]`,t),o=o.filter((({windowId:t})=>e.windowIds?.includes(t)))),this.trace(`[${t}] compiled a list of all windowIds with channels and returning it to the caller: ${JSON.stringify(o)}`),{windowIdsWithChannels:o}):(this.trace(`[${t}] compiled a list of all windowIds with channels and returning it to the caller: ${JSON.stringify(o)}`),{windowIdsWithChannels:o})}async handleJoinChannel({channel:e,windowId:t},n){if(this.trace(`[${n}] handling joinChannel command with channel: ${e} and windowId: ${t}`,n),!this.glueController.isValidWindowId(t))throw new Error(`Failed to join "${e}" channel on window with ID "${t}", because the provided windowId is invalid`);await this.glueController.callWindow("channels",this.operations.joinChannel,{channel:e,windowId:t},{windowId:t}),this.trace(`[${n}] successfully joined "${e}" channel on window with ID "${t}"`,n)}createContextName(e){return`___channel___${e}`}trace(e,t){t&&this.logger?.trace(e)}async restrict({config:e},t,n){this.trace(`[${t}] received restrict command with config ${JSON.stringify(e)} from callerId: ${n}`);if(!this.glueController.getWindowById(e.windowId))throw new Error(`There's no window with id ${e.windowId}`);await this.glueController.callWindow("channels",{name:"restrict",dataDecoder:sR,execute:async()=>{}},{config:e},{instance:e.windowId})}async getRestrictions({windowId:e},t,n){this.trace(`[${t}] received getRestrictions command for window with id ${e} from callerId: ${n}`);if(!this.glueController.getWindowById(e))throw new Error(`There's no window with id ${e}`);return this.glueController.callWindow("channels",{name:"getRestrictions",dataDecoder:oR,execute:async()=>{}},{windowId:e},{instance:e})}async restrictAll({restrictions:e},t,n){this.trace(`[${t}] received restrictAll command with config ${JSON.stringify(e)} from callerId: ${n}`);if(!this.glueController.getWindowById(e.windowId))throw new Error(`There's no window with id ${e.windowId}`);return this.glueController.callWindow("channels",{name:"restrictAll",dataDecoder:cR,execute:async()=>{}},{restrictions:e},{instance:e.windowId})}}class dR{sessionController;glueController;ioc;config;defaultBounds;frameSummaryOperation;locks={};defaultFrameHelloTimeoutMs=15e3;myFrameId;_handleUnload;constructor(e,t,n){this.sessionController=e,this.glueController=t,this.ioc=n}stop(){this._handleUnload&&window.removeEventListener("unload",this._handleUnload)}async start(e,t,n){this.config=e,this.defaultBounds=t,this.frameSummaryOperation=n,e.isFrame&&(this.myFrameId=this.sessionController.getAllFrames().find((e=>e.isPlatform))?.windowId,this._handleUnload=this.handleUnload.bind(this),window.addEventListener("unload",this._handleUnload))}async openFrame(e,t){const n="object"==typeof e?e.bounds??{}:{},r=n.top??this.defaultBounds.top,i=n.left??this.defaultBounds.left,s=n.width??this.defaultBounds.width,o=n.height??this.defaultBounds.height,a="object"==typeof e&&e?.frameId?e.frameId:`g42-${Zm(10)}`;if(this.sessionController.getAllFrames().some((e=>e.windowId===a)))throw new Error(`Cannot open a frame with id: ${a}, because a frame with this id already exists`);const c={windowId:a,active:!1,isPlatform:!1,layoutComponentId:t},l=`left=${i},top=${r},width=${s},height=${o}`,u=`${(await this.getWorkspacesUrls()).workspacesUrl.current}?emptyFrame=true`;if(!window.open(u,c.windowId,l))throw new Error("Cannot open a new workspace frame, because the user has not allowed popups or uses a blocker");this.sessionController.saveFrameData(c);try{return await this.waitHello(c.windowId),{windowId:c.windowId}}catch(e){throw delete this.locks[c.windowId],new Error("Cannot open a new frame, because the workspace frame app did not send a hello in time")}}async closeFrame(e){if(!this.sessionController.getFrameData(e))throw new Error(`Cannot close a frame with id: ${e}, because it is not known by the platform`);this.handleFrameDisappeared(e),window.open(void 0,e)?.close()}processNewHello(e){this.sessionController.getFrameData(e)&&(this.sessionController.setFrameActive(e),this.locks[e]?.lift())}handleFrameDisappeared(e){this.sessionController.getFrameData(e)&&(this.sessionController.removeFrameData(e),this.clearAllWorkspaceWindows(e))}getAll(){return this.sessionController.getAllFrames().filter((e=>e.active)).map((e=>({windowId:e.windowId})))}async getFrameInstance(e){if(e){if(["frameId","itemId","newFrame"].reduce(((t,n)=>(e[n]&&t.push(n),t)),[]).length>1)throw new Error(`Cannot retrieve the frame, because of over-specification: the provided selection object must have either 1 or none of the possible properties: ${JSON.stringify(e)}`)}const t=this.getAll();if(e?.frameId){const n=t.find((t=>t.windowId===e.frameId));if(!n)throw new Error(`Cannot retrieve a frame with Id: ${e.frameId}, because it is not known by the platform`);return n}return e?.itemId?this.getFrameByItemId(e.itemId,t):e?.newFrame?this.openFrame(e.newFrame):t.length?this.getLastOpenedFrame():this.openFrame()}getPlatformFrameSessionData(){return this.sessionController.getAllFrames().find((e=>e.isPlatform))}getFrameConfig(e){return this.sessionController.getAllFrames().find((t=>t.windowId===e))}clearAllWorkspaceWindows(e){const t=this.sessionController.pickWorkspaceClients((t=>t.frameId===e));t.forEach((e=>{this.ioc.applicationsController.unregisterWorkspaceApp({windowId:e.windowId})}))}async waitHello(e){return RT((t=>{this.locks[e]={lift:t}}),this.defaultFrameHelloTimeoutMs,"Frame hello timed out")}getLastOpenedFrame(){const e=this.sessionController.getAllFrames().filter((e=>e.active));return e[e.length-1]}async getFrameByItemId(e,t){if(!t.length)throw new Error(`Cannot get frame by item id for: ${e}, because not frames were found`);for(const n of t){if("none"!==(await this.glueController.callFrame(this.frameSummaryOperation,{itemId:e},n.windowId)).id)return n}throw new Error(`Cannot find frame for item: ${e}`)}getWorkspacesUrls(){return new URL(window.location.href).protocol.includes("extension")?new Promise((e=>{chrome.storage.local.get("workspacesUrl",(t=>{e(t)}))})):Promise.resolve({workspacesUrl:{current:this.config.src,default:this.config.src}})}handleUnload(){this.myFrameId&&this.clearAllWorkspaceWindows(this.myFrameId)}}class pR{session;sequelizer;workspacesController;settings;running;constructor(e,t){this.session=e,this.sequelizer=t}get logger(){return Ym.get("workspaces.hibernation")}stop(){this.running=!1}start(e,t){this.logger?.trace(`starting the hibernation watcher with following settings: ${JSON.stringify(this.settings)}`),this.running=!0,this.workspacesController=e,this.settings=t;const n=this.session.exportClearTimeouts();this.settings?.idleWorkspaces?.idleMSThreshold&&n.forEach((e=>this.buildTimer(e.workspaceId))),this.logger?.trace("The hibernation watcher has started successfully")}notifyEvent(e){"window"===e.type&&this.handleWorkspaceWindowEvent(e),"workspace"===e.type&&this.handleWorkspaceEvent(e)}handleWorkspaceWindowEvent(e){("opened"===e.action||"added"===e.action)&&(this.sequelizer.enqueue((()=>this.checkMaximumAmountCore())),this.addTimersForWorkspacesInFrame(e.payload.windowSummary.config.frameId))}handleWorkspaceEvent(e){const t="selected"===e.action,n="lock-configuration-changed"===e.action,r=e.payload;if(!("selected"===e.action||"opened"===e.action||"lock-configuration-changed"===e.action))return;this.sequelizer.enqueue((()=>this.checkMaximumAmountCore()));const i=r.workspaceSummary.config.allowSystemHibernation;if(!(t||n&&i))return;const s=this.session.getTimeout(r.workspaceSummary.id);s&&(clearTimeout(s),this.session.removeTimeout(r.workspaceSummary.id)),this.addTimersForWorkspacesInFrame(r.frameSummary.id)}compare(e,t){return e.config.lastActive>t.config.lastActive?1:e.config.lastActivethis.workspacesController.getWorkspaceSnapshot({itemId:e.id},t))),r=(await Promise.all(n)).filter((e=>!this.isWorkspaceHibernated(e.config)&&!this.isWorkspaceEmpty(e))),i=r.filter((e=>this.isSystemHibernationAllowed(e)));if(r.length<=e)return;this.logger?.trace(`Found ${i.length} eligible for hibernation workspaces`);const s=i.sort(this.compare).slice(0,r.length-e).map((e=>this.tryHibernateWorkspace(e.id)));await Promise.all(s)}async tryHibernateWorkspace(e){try{const t=await this.workspacesController.getWorkspaceSnapshot({itemId:e},Zm(10));if(!this.canBeHibernated(t))return;this.logger?.trace(`trying to hibernate workspace ${e}`),await this.workspacesController.hibernateWorkspace({workspaceId:e},Zm(10)),this.logger?.trace(`workspace ${e} was hibernated successfully`)}catch(e){this.logger?.trace(e)}}canBeHibernated(e){const t=this.isWorkspaceHibernated(e.config),n=this.isWorkspaceSelected(e.config),r=this.isWorkspaceEmpty(e),i=this.isSystemHibernationAllowed(e);return!t&&!n&&!r&&i}isWorkspaceHibernated(e){return e.isHibernated}isWorkspaceSelected(e){return e.isSelected}isWorkspaceEmpty(e){return!e.children.length}isSystemHibernationAllowed(e){const{allowSystemHibernation:t}=e.config;return"boolean"!=typeof t||t}async getWorkspacesInFrame(e){const t=(await this.workspacesController.getAllWorkspacesSummaries({},Zm(10))).summaries.reduce(((t,n)=>(n.config.frameId===e&&t.push(this.workspacesController.getWorkspaceSnapshot({itemId:n.id},Zm(10))),t)),[]);return await Promise.all(t)}async addTimersForWorkspacesInFrame(e){if(!this.settings?.idleWorkspaces?.idleMSThreshold)return;(await this.getWorkspacesInFrame(e)).forEach((e=>{this.canBeHibernated(e)&&!this.session.getTimeout(e.id)&&(this.buildTimer(e.id),this.logger?.trace(`Starting workspace idle timer ( ${this.settings?.idleWorkspaces?.idleMSThreshold}ms ) for workspace ${e.id}`))}))}buildTimer(e){const t=window.setTimeout((()=>{this.running&&(this.logger?.trace(`Timer triggered will try to hibernated ${e}`),this.tryHibernateWorkspace(e),this.session.removeTimeout(e))}),this.settings?.idleWorkspaces?.idleMSThreshold);this.session.saveTimeout(e,t)}}class gR{session;workspacesController;environment;base={};started=!1;platformOperations=["cleanupClientsOnWorkspaceFrameUnregister"];operations={getEnvironment:{name:"getEnvironment",resultDecoder:yA,execute:this.handleGetEnvironment.bind(this)},getBase:{name:"getBase",resultDecoder:yA,execute:this.handleGetBase.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:EA,resultDecoder:AA,execute:this.handleOperationCheck.bind(this)},workspacesInitCheck:{name:"workspacesInitCheck",resultDecoder:Ik,execute:this.handleWorkspacesInitCheck.bind(this)}};constructor(e,t){this.session=e,this.workspacesController=t}get logger(){return Ym.get("applications.controller")}async start(e){this.environment=e.environment,this.base={workspaces:{frameCache:e.workspacesFrameCache},workspacesFrameCache:e.workspacesFrameCache,communicationId:this.session.getSystemSettings()?.systemInstanceId,platformVersion:NT},this.started=!0}async handleControl(e){if(!this.started)throw new Error("Cannot handle this system control message, because the controller has not been started");const t=e.data,n=e.commandId,r=FA.run(e.operation);if(!r.ok)throw new Error(`This system request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(r.error)}`);const i=r.result,s=this.operations[i].dataDecoder?.run(t);if(s&&!s.ok)throw new Error(`System request for ${i} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(s.error)}`);this.logger?.debug(`[${n}] ${i} command is valid with data: ${JSON.stringify(t)}`);const o=await this.operations[i].execute(t,n),a=this.operations[i].resultDecoder?.run(o);if(a&&!a.ok)throw new Error(`System request for ${i} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(a.error)}`);return this.logger?.trace(`[${n}] ${i} command was executed successfully`),o}async handleOperationCheck(e){const t=Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase())),n=this.platformOperations.some((t=>t.toLowerCase()===e.operation.toLowerCase()));return{isSupported:t||n}}async handleGetEnvironment(){return this.environment}async handleGetBase(){return this.base}async handleWorkspacesInitCheck(){return{initialized:this.workspacesController.started}}}class fR{sessionStorage;remoteWatcher;maxAllowedApplicationsInStore=1e4;baseEventFlushDurationMs=10;appsStateChange;sequelizer;constructor(e,t){this.sessionStorage=e,this.remoteWatcher=t}stop(){this.remoteWatcher.stop()}async start(e){this.logger?.trace("Starting the application directory"),this.appsStateChange=e.appsStateChange,this.sequelizer=e.sequelizer,e.config.local&&e.config.local.length&&(this.logger?.trace("Detected local applications, parsing..."),await this.processAppDefinitions(e.config.local,{type:"inmemory",mode:"merge"})),e.config.remote&&(this.logger?.trace("Detected remote app store configuration, starting the watcher..."),this.remoteWatcher.start(e.config.remote,(e=>this.processAppDefinitions(e,{type:"remote",mode:"replace"}))))}processAppDefinitions(e,t){return this.sequelizer.enqueue((async()=>{const n=e.map((e=>this.parseDefinition(e))),r=this.sessionStorage.getAllApps(t.type),i=this[t.mode](r,n);if(i.readyApps.length>this.maxAllowedApplicationsInStore)throw new Error("Cannot save the app definitions, because the total number exceeds 10000, which is the limit.");this.sessionStorage.overwriteApps(i.readyApps,t.type),await this.announceApps(i)}))}getAll(){return this.sequelizer.enqueue((async()=>{const e=this.sessionStorage.getAllApps("inmemory"),t=this.sessionStorage.getAllApps("remote");return e.concat(t)}))}exportInMemory(){return this.sequelizer.enqueue((async()=>this.sessionStorage.getAllApps("inmemory").map(this.reverseParseDefinition)))}removeInMemory(e){return this.sequelizer.enqueue((async()=>this.sessionStorage.removeApp(e,"inmemory")))}merge(e,t){const n={readyApps:[],addedApps:[],changedApps:[],removedApps:[]},r=e.reduce(((e,t)=>(e[t.name]=t,e)),{});return t.forEach((e=>r[e.name]&&!HI(e,r[e.name])?(r[e.name]=e,void n.changedApps.push(e)):r[e.name]?void 0:(r[e.name]=e,void n.addedApps.push(e)))),n.readyApps=Object.values(r),n}replace(e,t){const n={readyApps:[],addedApps:[],changedApps:[],removedApps:[]},r=e.reduce(((e,t)=>(e[t.name]=t,e)),{});return t.forEach((e=>{r[e.name]||n.addedApps.push(e),r[e.name]&&!HI(e,r[e.name])&&n.changedApps.push(e),r[e.name]&&(r[e.name].isChecked=!0)})),n.removedApps=e.filter((e=>!e.isChecked)),n.readyApps=t,n}reverseParseDefinition(e){const t=e.userProperties.details,{details:n,...r}=e.userProperties,i={name:e.name,type:e.type||"window",title:e.title,version:e.version,icon:e.icon,caption:e.caption,details:t,customProperties:r};return e.fdc3&&(i.fdc3=e.fdc3),i}parseDefinition(e){const t=["name","title","version","customProperties","icon","caption","type"],n=Object.fromEntries(Object.entries(e).filter((([e])=>!t.includes(e)))),{isFdc3:r}=WE.isFdc3Definition(e);let i;if(r)i=WE.parseToBrowserBaseAppData(e);else{const t=e.details;i={createOptions:t,type:e.type||"window",name:e.name,title:e.title,version:e.version,icon:e.icon,caption:e.caption,userProperties:{...n,...e.customProperties}},i.userProperties.details||(i.userProperties.details=t)}return Object.keys(i).forEach((e=>void 0===i[e]&&delete i[e])),i}get logger(){return Ym.get("applications.remote.directory")}async announceApps(e){const t={appsAdded:e.addedApps,appsChanged:e.changedApps,appsRemoved:e.removedApps};this.logger?.trace(`announcing a change in the app directory state: ${JSON.stringify(t)}`),this.appsStateChange(t),await this.waitEventFlush()}waitEventFlush(){return new Promise((e=>setTimeout(e,this.baseEventFlushDurationMs)))}}const mR={"Content-Type":"application/json",Accept:"application/json"};class yR{url;request;handleApps;requestTimeout;pollingInterval;running;start(e,t){this.url=e.url,this.handleApps=t,this.requestTimeout=e.requestTimeout||3e3,this.pollingInterval=e.pollingInterval,this.setRequest(e.customHeaders),this.logger?.trace(`Remote watcher configured with timeout: ${this.requestTimeout} and interval: ${this.pollingInterval}`),this.running=!0,this.poll()}stop(){this.running=!1}async poll(){if(this.running)try{const e=await((e,t=3e3)=>new Promise(((n,r)=>{let i=!1;const s=setTimeout((()=>{i=!0,r(new Error(`Fetch request for: ${JSON.stringify(e)} timed out at: ${t} milliseconds`))}),t);fetch(e).then((e=>{i||(clearTimeout(s),n(e))})).catch((e=>{i||(clearTimeout(s),r(e))}))})))(this.request,this.requestTimeout);if(!this.running)return;const t=await e.json();if(!t||!Array.isArray(t.applications))throw new Error("The remote response was either empty or did not contain an applications collection");this.logger?.trace("There is a valid response from the app store, processing definitions...");const n=t.applications.reduce(((e,t)=>{const n=KA.run(t);return n.ok?e.push(t):this.logger?.warn(`Removing applications definition with name: ${t.name} from the remote response, because of validation error: ${JSON.stringify(n.error)}`),e}),[]);await this.handleApps(n)}catch(e){const t="string"==typeof e?e:JSON.stringify(e.message);this.logger?.warn(t)}finally{this.pollingInterval&&(await this.waitInterval(),this.poll())}}setRequest(e={}){const t=new Headers;for(const e in mR)t.append(e,mR[e]);for(const n in e)this.logger?.trace("Custom headers detected and set"),t.append(n,e[n]);this.request=new Request(this.url,{method:"GET",headers:t,mode:"cors",cache:"default"})}waitInterval(){return new Promise((e=>setTimeout(e,this.pollingInterval)))}get logger(){return Ym.get("applications.remote.directory")}}class wR{idbController;registry=MT();_serviceWorkerRegistration;channel;_broadcastMessageHandler;constructor(e){this.idbController=e}get logger(){return Ym.get("service.worker.web.platform")}get serviceWorkerRegistration(){if(!this._serviceWorkerRegistration)throw new Error("Accessing missing service worker registration object. This is caused because the application is trying to raise a persistent notification, which requires a service worker. Please provide a service worker config when initializing GlueWebPlatform.");return this._serviceWorkerRegistration}shutdown(){this.channel?.removeEventListener("message",this._broadcastMessageHandler),this.registry.clear()}async connect(e){if(e.serviceWorker){if(this.logger?.info("Detected service worker definition, connecting..."),!e.serviceWorker.url&&void 0===e.serviceWorker.registrationPromise)throw new Error("The service worker config is defined, but it is missing a url or a registration promise, please provide one or the other");if(e.serviceWorker.url&&void 0!==e.serviceWorker.registrationPromise)throw new Error("The service worker is over-specified, there is both defined url and a registration promise, please provide one or the other");await this.prepareSwDb(),this._serviceWorkerRegistration=e.serviceWorker.url?await this.registerWorker(e.serviceWorker.url):await this.waitRegistration(e.serviceWorker.registrationPromise),this._serviceWorkerRegistration&&this.setUpBroadcastChannelConnection(),this.logger?.info("Service worker connection completed.")}}async showNotification(e,t){const n=Object.assign({},e,{title:void 0,clickInterop:void 0,actions:void 0});n.actions=e.actions?.map((e=>({action:e.action,title:e.title,icon:e.icon})));const r={focusPlatformOnDefaultClick:e.focusPlatformOnDefaultClick,clickInterop:e.clickInterop,actions:e.actions,id:t};n.data?n.data.glueData=r:n.data={glueData:r},await this.serviceWorkerRegistration.showNotification(e.title,n)}notifyReady(){this._serviceWorkerRegistration&&this.channel.postMessage({platformStarted:!0})}onNotificationClick(e){return this.registry.add("notification-click",e)}onNotificationClose(e){return this.registry.add("notification-close",e)}setUpBroadcastChannelConnection(){this.channel=new BroadcastChannel("glue42-core-worker"),this._broadcastMessageHandler=this.broadcastMessageHandler.bind(this),this.channel.addEventListener("message",this._broadcastMessageHandler)}broadcastMessageHandler(e){const t=e.data,n=t?.messageType;if(n)if("ping"!==n)if("notificationClick"!==n)if("notificationClose"!==n)"notificationError"!==n||this.logger?.error(`Service worker error when raising notification: ${t.error}`);else{const e=t.action,n=t.glueData;this.registry.execute("notification-close",{action:e,glueData:n})}else{const e=t.action,n=t.glueData;this.registry.execute("notification-click",{action:e,glueData:n})}else this.channel.postMessage({pong:!0})}async registerWorker(e){if("serviceWorker"in navigator)try{return await navigator.serviceWorker.register(e)}catch(e){const t="string"==typeof e?e:JSON.stringify(e.message);this.logger?.warn(t)}else this.logger?.warn(`A defined service worker has not been registered at ${e} because this browser does not support it.`)}async waitRegistration(e){if("function"!=typeof e.then||"function"!=typeof e.catch)throw new Error("The provided service worker registration promise is not a promise");const t=await e;if("function"!=typeof t.showNotification)throw new Error("The provided registration promise is a promise, but it resolved with an object which does not appear to be a ServiceWorkerRegistration");return t}async prepareSwDb(){await this.idbController.clearServiceWorker(),await this.idbController.storeServiceWorker({platformUrl:window.location.href})}}const vR=hA(aA("raiseNotification"),aA("requestPermission"),aA("getPermission"),aA("operationCheck"),aA("list"),aA("clear"),aA("click"),aA("clearAll"),aA("configure"),aA("getConfiguration"),aA("setState"),aA("clearOld")),bR=cA({method:mA,arguments:uA(oA()),target:uA(hA(aA("all"),aA("best")))}),SR=cA({action:rA(),title:mA,icon:uA(rA()),interop:uA(bR)}),CR=hA(aA("Active"),aA("Acknowledged"),aA("Seen"),aA("Closed"),aA("Stale"),aA("Snoozed"),aA("Processing")),xR=cA({title:mA,clickInterop:uA(bR),actions:uA(lA(SR)),focusPlatformOnDefaultClick:uA(sA()),badge:uA(rA()),body:uA(rA()),data:uA(oA()),dir:uA(hA(aA("auto"),aA("ltr"),aA("rtl"))),icon:uA(rA()),image:uA(rA()),lang:uA(rA()),renotify:uA(sA()),requireInteraction:uA(sA()),silent:uA(sA()),tag:uA(rA()),timestamp:uA(fA),vibrate:uA(lA(iA())),severity:uA(hA(aA("Low"),aA("None"),aA("Medium"),aA("High"),aA("Critical"))),showToast:uA(sA()),showInPanel:uA(sA()),state:uA(CR)}),IR=cA({title:mA,clickInterop:uA(bR),actions:uA(lA(SR)),focusPlatformOnDefaultClick:uA(sA()),badge:uA(rA()),body:uA(rA()),data:uA(oA()),dir:uA(hA(aA("auto"),aA("ltr"),aA("rtl"))),icon:uA(rA()),image:uA(rA()),lang:uA(rA()),renotify:uA(sA()),requireInteraction:uA(sA()),silent:uA(sA()),tag:uA(rA()),timestamp:fA,vibrate:uA(lA(iA())),severity:uA(hA(aA("Low"),aA("None"),aA("Medium"),aA("High"),aA("Critical"))),showToast:sA(),showInPanel:sA(),state:uA(CR)}),ER=cA({settings:xR,id:mA}),AR=cA({settings:IR}),kR=cA({permissionGranted:sA()}),_R=cA({permission:hA(aA("default"),aA("granted"),aA("denied"))}),PR=cA({id:mA}),TR=cA({id:mA,action:uA(mA)}),FR=cA({id:mA,title:mA,clickInterop:uA(bR),actions:uA(lA(SR)),focusPlatformOnDefaultClick:uA(sA()),badge:uA(rA()),body:uA(rA()),data:uA(oA()),dir:uA(hA(aA("auto"),aA("ltr"),aA("rtl"))),icon:uA(rA()),image:uA(rA()),lang:uA(rA()),renotify:uA(sA()),requireInteraction:uA(sA()),silent:uA(sA()),tag:uA(rA()),timestamp:uA(fA),vibrate:uA(lA(iA())),severity:uA(hA(aA("Low"),aA("None"),aA("Medium"),aA("High"),aA("Critical"))),showToast:uA(sA()),showInPanel:uA(sA()),state:uA(CR)}),DR=cA({notifications:lA(FR)}),OR=cA({enable:uA(sA()),enableToasts:uA(sA()),sourceFilter:uA(hk)}),RR=cA({configuration:OR}),NR=cA({id:mA,state:CR});class jR{glueController;serviceWorkerController;session;localStorage;started=!1;isInExtension=!1;clearNotificationOnClick;extNotificationConfig;systemUnsubFuncs=[];_chromeClickedHandler;_chromeButtonClickedHandler;_chromeClosedHandler;operations={raiseNotification:{name:"raiseNotification",execute:this.handleRaiseNotification.bind(this),dataDecoder:ER,resultDecoder:AR},requestPermission:{name:"requestPermission",resultDecoder:kR,execute:this.handleRequestPermission.bind(this)},getPermission:{name:"getPermission",resultDecoder:_R,execute:this.handleGetPermission.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:EA,resultDecoder:AA,execute:this.handleOperationCheck.bind(this)},list:{name:"list",resultDecoder:DR,execute:this.handleList.bind(this)},click:{name:"click",dataDecoder:TR,execute:this.handleClick.bind(this)},clear:{name:"clear",dataDecoder:PR,execute:this.handleClear.bind(this)},clearAll:{name:"clearAll",execute:this.handleClearAll.bind(this)},configure:{name:"configure",dataDecoder:RR,execute:this.handleConfigure.bind(this)},getConfiguration:{name:"getConfiguration",resultDecoder:RR,execute:this.handleGetConfiguration.bind(this)},setState:{name:"setState",dataDecoder:NR,execute:this.handleSetState.bind(this)},clearOld:{name:"clearOld",execute:this.handleClearOld.bind(this)}};constructor(e,t,n,r){this.glueController=e,this.serviceWorkerController=t,this.session=n,this.localStorage=r}get logger(){return Ym.get("notifications.controller")}get config(){const e=this.localStorage.getNotificationsConfig();if(!e)throw new Error("The notifications configuration has not been set.");return e}get currentActiveCount(){return this.session.getAllNotifications().reduce(((e,t)=>"Active"===t.state?e+1:e),0)}handlePlatformShutdown(){this.started=!1;new URL(window.location.href).protocol.includes("extension")&&this.removeExtensionNotificationsListeners(),this.systemUnsubFuncs.forEach((e=>e())),this.systemUnsubFuncs=[]}async start(){this.clearNotificationOnClick=this.config.clearNotificationOnClick;new URL(window.location.href).protocol.includes("extension")&&await this.setupExtensionNotifications(),this.listenForServiceWorkerNotificationEvents(),this.started=!0}async handleOperationCheck(e){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}async handleControl(e){if(!this.started)throw new Error("Cannot handle this notifications control message, because the controller has not been started");const t=e.data,n=e.commandId,r=e.callerId,i=vR.run(e.operation);if(!i.ok)throw new Error(`This notifications request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(i.error)}`);const s=i.result,o=this.operations[s].dataDecoder?.run(t);if(o&&!o.ok)throw new Error(`Notifications request for ${s} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(o.error)}`);this.logger?.debug(`[${n}] ${s} command is valid with data: ${JSON.stringify(t)}`);const a=await this.operations[s].execute(t,n,r),c=this.operations[s].resultDecoder?.run(a);if(c&&!c.ok)throw new Error(`Notifications request for ${s} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(c.error)}`);return this.logger?.trace(`[${n}] ${s} command was executed successfully`),a}async handleConfigure({configuration:e},t,n=""){this.logger?.trace(`[${t}] handling a notification configure message with data: ${JSON.stringify(e)}`),this.validateServiceAccess(n,!0),this.localStorage.updateNotificationsConfig(e),this.glueController.pushSystemMessage("notifications","configurationChanged",{configuration:this.config}),this.logger?.trace(`[${t}] handling a notification configure message completed`)}async handleGetConfiguration(e,t,n=""){this.logger?.trace(`[${t}] handling a get notification configure message`),this.validateServiceAccess(n,!0);const r={...this.config};return this.logger?.trace(`[${t}] handling a get notification configure message completed`),{configuration:r}}async handleList(e,t){this.logger?.trace(`[${t}] handling a list notification message`);const n=this.session.getAllNotifications();return this.logger?.trace(`[${t}] list notification message completed`),{notifications:n}}async handleSetState({id:e,state:t},n){this.logger?.trace(`[${n}] handling a set state notification message with data: ${JSON.stringify({id:e,state:t})}`);const r=this.session.getNotification(e);if(!r)throw new Error(`Cannot set state of a notification: ${e}, because it doesn't exist`);const i=this.currentActiveCount;r.state=t,this.session.updateNotification(r),this.glueController.pushSystemMessage("notifications","stateChange",{id:e,state:t}),this.syncActiveCount(i)}async handleClick(e,t){this.logger?.trace(`[${t}] handling a click notification message with data: ${JSON.stringify(e)}`);const n=this.session.getNotification(e.id);if(!n)throw new Error(`Cannot click a notification: ${e.id}, because it doesn't exist`);if(e.action&&n.actions?.every((t=>t.action!==e.action)))throw new Error(`Cannot click action ${e.action} of ${e.id}, because that notification does not have that action`);this.handleNotificationClick({notification:n,action:e.action}),this.logger?.trace(`[${t}] handling a click notification message completed`)}async handleClear(e,t){this.logger?.trace(`[${t}] handling a clear notification message with data: ${JSON.stringify(e)}`);const n=this.currentActiveCount;this.removeNotification(e.id),this.syncActiveCount(n),this.logger?.trace(`[${t}] handling a clear notification message completed`)}async handleClearAll(e,t){this.logger?.trace(`[${t}] handling a clearAll notifications message`);const n=this.session.getAllNotifications(),r=n.reduce(((e,t)=>"Active"===t.state?e+1:e),0);n.forEach((e=>this.removeNotification(e.id))),this.syncActiveCount(r),this.logger?.trace(`[${t}] handling a clearAll notification message completed`)}async handleClearOld(e,t){this.logger?.trace(`[${t}] handling a clearOld notifications message`);const n=this.session.getAllNotifications(),r=n.reduce(((e,t)=>"Active"===t.state?e+1:e),0);n.filter((e=>"Active"!==e.state)).forEach((e=>this.removeNotification(e.id))),this.syncActiveCount(r),this.logger?.trace(`[${t}] handling a clearOld notification message completed`)}async handleRaiseNotification({settings:e,id:t},n,r=""){if(this.logger?.trace(`[${n}] handling a raise notification message with a title: ${e.title}`),!this.config.enable)throw new Error("Cannot raise a notification, because the notifications service is disabled");this.validateServiceAccess(r);const i=this.currentActiveCount;(e=>{e.showToast="boolean"!=typeof e.showToast||e.showToast,e.showInPanel="boolean"!=typeof e.showInPanel||e.showInPanel,e.timestamp=void 0===e.timestamp?Date.now():e.timestamp,e.state=void 0===e.state?"Active":e.state})(e),this.processNewNotification(e,t);const s=this.config.enableToasts?!!e.showToast:this.config.enableToasts;await this.showToast({settings:e,id:t},s,n);const o={definition:Object.assign({},e,{title:void 0,clickInterop:void 0,actions:void 0}),id:t};return setTimeout((()=>this.glueController.pushSystemMessage("notifications","notificationShow",o)),0),this.logger?.trace(`[${n}] notification with a title: ${e.title} was successfully raised`),this.syncActiveCount(i),{settings:e}}async showToast({settings:e,id:t},n,r){if(!n)return;if(this.isInExtension)return void await this.raiseExtensionToast(e,t,r);e.actions&&e.actions.length?await this.raiseActionsToast(e,t,r):this.raiseSimpleToast(e,t,r)}async handleGetPermission(e,t){this.logger?.trace(`[${t}] handling a get permission message`);const n=Notification.permission;return this.logger?.trace(`[${t}] permission for raising notifications is: ${n}`),{permission:n}}async handleRequestPermission(e,t){this.logger?.trace(`[${t}] handling a request permission message`);let n=Notification.permission;"granted"!==n&&(n=await Notification.requestPermission());const r="granted"===n;return this.logger?.trace(`[${t}] permission for raising notifications is: ${n}`),{permissionGranted:r}}validateServiceAccess(e,t){const n=this.glueController.getAppNameByInstanceId(e)||"";if(t&&e===this.glueController.me.instance)return;if(this.config.sourceFilter.blocked.includes(n))throw new Error(`Cannot complete the notifications operation, because the caller app: ${n} is blocked from the notifications service`);const r=this.config.sourceFilter.allowed.includes("*"),i=this.config.sourceFilter.allowed.includes(n);if(!r&&!i)throw new Error(`Cannot complete the notifications operation, because the caller app: ${n} is not present in the allowed list of the notifications service`)}async raiseSimpleToast(e,t,n){this.logger?.trace(`[${n}] notification with a title: ${e.title} was found to be non-persistent and therefore will be raised with the native notifications API`);const r=Object.assign({},e,{title:void 0,clickInterop:void 0}),i=new Notification(e.title,r);i.onclick=()=>{e.focusPlatformOnDefaultClick&&window.focus();const n=this.session.getNotification(t);n&&this.handleNotificationClick({action:"",notification:n})},i.onclose=()=>{const e=this.currentActiveCount;this.removeNotification(t),this.syncActiveCount(e)}}async raiseActionsToast(e,t,n){this.logger?.trace(`[${n}] notification with a title: ${e.title} was found to be persistent and therefore the service worker will be instructed to raise it.`),await this.serviceWorkerController.showNotification(e,t)}raiseExtensionToast(e,t,n){return new Promise(((r,i)=>{if(this.logger?.trace(`[${n}] notification with a title: ${e.title} will be raised with the native extension notifications API, because the platform is running in extension mode`),!this.extNotificationConfig)return i("Cannot raise a notification, because the environment settings for the extension mode are missing.");const s=e.actions?e.actions.map((e=>({title:e.title,iconUrl:e.icon}))):void 0,o={type:"basic",iconUrl:e.icon||this.extNotificationConfig.defaultIcon,title:e.title,message:e.body||this.extNotificationConfig.defaultMessage,silent:e.silent,requireInteraction:e.requireInteraction,imageUrl:e.image,buttons:s};chrome.notifications.create(t,o,(()=>r()))}))}async setupExtensionNotifications(){this.isInExtension=!0,this.extNotificationConfig=(await this.getExtNotificationsConfig()).notifications,this.listenForExtensionNotificationsEvents()}listenForExtensionNotificationsEvents(){this._chromeClickedHandler=this.chromeClickedHandler.bind(this),chrome.notifications.onClicked.addListener(this._chromeClickedHandler),this._chromeButtonClickedHandler=this.chromeButtonClickedHandler.bind(this),chrome.notifications.onButtonClicked.addListener(this._chromeButtonClickedHandler),this._chromeClosedHandler=this.chromeClosedHandler.bind(this),chrome.notifications.onClosed.addListener(this._chromeClosedHandler)}removeExtensionNotificationsListeners(){chrome.notifications.onClicked.removeListener(this._chromeClickedHandler),chrome.notifications.onButtonClicked.removeListener(this._chromeButtonClickedHandler),chrome.notifications.onClosed.removeListener(this._chromeClosedHandler)}chromeClickedHandler(e){const t=this.session.getNotification(e);t&&this.handleNotificationClick({notification:t})}chromeButtonClickedHandler(e,t){const n=this.session.getNotification(e);if(!n)return;if(!n.actions)return;const r=n.actions[t].action;this.handleNotificationClick({action:r,notification:n})}chromeClosedHandler(e){const t=this.currentActiveCount;this.removeNotification(e),this.syncActiveCount(t)}listenForServiceWorkerNotificationEvents(){const e=this.serviceWorkerController.onNotificationClick((e=>{const t=this.session.getNotification(e.glueData.id);t&&this.handleNotificationClick({action:e.action,notification:t})})),t=this.serviceWorkerController.onNotificationClose((e=>{const t=this.currentActiveCount;this.removeNotification(e.glueData.id),this.syncActiveCount(t)}));this.systemUnsubFuncs.push(e),this.systemUnsubFuncs.push(t)}getExtNotificationsConfig(){return new Promise((e=>{chrome.storage.local.get("notifications",(t=>{e(t)}))}))}handleNotificationClick(e){!e.action&&e.notification.clickInterop&&this.callDefinedInterop(e.notification.clickInterop);const t=e.action?e.notification.actions?.find((t=>t.action===e.action)):null;t&&t.interop&&this.callDefinedInterop(t.interop),e.notification.data?.glueData&&delete e.notification.data.glueData;const n={definition:e.notification,action:e.action,id:e.notification.id};if(this.clearNotificationOnClick){const t=this.currentActiveCount;this.removeNotification(e.notification.id),this.syncActiveCount(t)}this.glueController.pushSystemMessage("notifications","notificationClick",n)}callDefinedInterop(e){const t=e.method,n=e.arguments,r=e.target;this.glueController.invokeMethod(t,n,r).catch((e=>{const t="string"==typeof e?e:JSON.stringify(e.message);this.logger?.warn(`The interop invocation defined in the clickInterop was rejected, reason: ${t}`)}))}processNewNotification(e,t){const n={id:t,...e};this.session.saveNewNotification(n),this.glueController.pushSystemMessage("notifications","notificationRaised",{notification:n})}removeNotification(e){this.session.removeNotification(e),this.glueController.pushSystemMessage("notifications","notificationClosed",{id:e})}syncActiveCount(e){const t=this.currentActiveCount;e!==t&&this.glueController.pushSystemMessage("notifications","activeCountChange",{count:t})}}const $R=hA(aA("clientHello"),aA("operationCheck")),MR=cA({widget:cA({inject:sA()})}),qR=cA({windowId:uA(mA)});class BR{session;started=!1;operations={clientHello:{name:"appHello",resultDecoder:MR,dataDecoder:qR,execute:this.handleClientHello.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:EA,resultDecoder:AA,execute:this.handleOperationCheck.bind(this)}};constructor(e){this.session=e}get logger(){return Ym.get("extension.controller")}handlePlatformShutdown(){this.started=!1}async start(){this.started=!0,this.logger?.trace("initialization is completed")}async handleControl(e){if(!this.started)throw new Error("Cannot handle this extension control message, because the controller has not been started");const t=e.data,n=e.commandId,r=$R.run(e.operation);if(!r.ok)throw new Error(`This extension request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(r.error)}`);const i=r.result,s=this.operations[i].dataDecoder?.run(t);if(s&&!s.ok)throw new Error(`Extension request for ${i} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(s.error)}`);this.logger?.debug(`[${n}] ${i} command is valid with data: ${JSON.stringify(t)}`);const o=await this.operations[i].execute(t,n),a=this.operations[i].resultDecoder?.run(o);if(a&&!a.ok)throw new Error(`Extension request for ${i} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(a.error)}`);return this.logger?.trace(`[${n}] ${i} command was executed successfully`),o}async handleClientHello(e,t){this.logger?.trace(`[${t}] handling client hello command`);const n=(await this.getWidgetConfig()).widget,r={widget:{inject:!(!!e.windowId&&!!this.session.getFrameData(e.windowId))&&(!!n&&n.enable)}};return this.logger?.trace(`[${t}] responding to client hello command with: ${JSON.stringify(r)}`),r}async handleOperationCheck(e){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}getWidgetConfig(){return new URL(window.location.href).protocol.includes("extension")?new Promise((e=>{chrome.storage.local.get("widget",(t=>{e(t)}))})):Promise.resolve({widget:{enable:!1}})}}class LR{minSequenceInterval;queue=[];isExecutingQueue=!1;constructor(e=0){this.minSequenceInterval=e}enqueue(e){return new Promise(((t,n)=>{this.queue.push({action:e,resolve:t,reject:n}),this.executeQueue()}))}async executeQueue(){if(!this.isExecutingQueue){for(this.isExecutingQueue=!0;this.queue.length;){const e=this.queue.shift();if(!e)return void(this.isExecutingQueue=!1);try{const t=await e.action();e.resolve(t)}catch(t){e.reject(t)}await this.intervalBreak()}this.isExecutingQueue=!1}}intervalBreak(){return new Promise((e=>setTimeout(e,this.minSequenceInterval)))}}class WR{glueController;portsBridge;sequelizer;registry=MT();unsub;discoveryInterval;shouldForceTransfer;preferredUrl;preferredAuth;stopped=!1;constructor(e,t,n){this.glueController=e,this.portsBridge=t,this.sequelizer=n}get logger(){return Ym.get("preferred.connection.controller")}shutdown(){this.stopped=!0,this.registry.clear()}async start(e){this.logger?.trace(`Starting the preferred connection with config: ${JSON.stringify(e)}`),this.stopped=!1,this.portsBridge.setPreferredActivated(),e.preferred&&(this.preferredUrl=e.preferred.url,this.preferredAuth=Object.assign({},{provider:"core"},e.preferred.auth),this.shouldForceTransfer="boolean"==typeof e.preferred.forceIncompleteSwitch&&e.preferred.forceIncompleteSwitch,this.discoveryInterval="number"==typeof e.preferred.discoveryIntervalMS?e.preferred.discoveryIntervalMS:15e3,this.logger?.trace("Starting the initial preferred connection check"),await this.connectPreferred(),this.logger?.trace("The preferred connection controller initiated."))}onReconnect(e){return this.registry.add("system-reconnect",e)}async connectPreferred(e,t,n){if(this.stopped&&!e)return;const r=await this.checkPreFlight(t);if(!r.ready&&e)throw new Error("The provided preferred connection is not ready.");if(!r.ready)return this.logger?.trace("The preflight is not ready, restarting the preferred tracking."),void UI(this.discoveryInterval).then((()=>this.connectPreferred(e,t,n)));const i={type:"secondary",transportConfig:Object.assign({url:t||this.preferredUrl},{auth:n||this.preferredAuth})};if(this.logger?.trace("Switching the system glue."),this.stopped)return;if(!(await this.glueController.switchTransport(i,"system")).success)return this.logger?.trace("The switch attempt was not successful, revered to default."),void UI(this.discoveryInterval).then((()=>this.connectPreferred(e,t,n)));this.portsBridge.setActivePreferredTransportConfig(i),this.logger?.trace("The switch to the preferred connection was successful, transferring all children.");try{await this.changeClientsConnection(i)}catch(r){return this.logger?.warn(`Some platform clients could not connect to the preferred connection, reverting all to the default connection. Reason: ${JSON.stringify(r)}`),void this.fullDefaultRevert().then((()=>UI(this.discoveryInterval).then((()=>this.connectPreferred(e,t,n))))).catch((()=>UI(this.discoveryInterval).then((()=>this.connectPreferred(e,t,n)))))}this.logger?.trace("The platform is now fully connected to the preferred connection, hooking up disconnection logic."),this.registry.execute("system-reconnect");const s=this.glueController.onDisconnected((()=>this.handleDisconnected(s,e)));this.unsub=s}async revertToDefault(){this.unsub&&(this.unsub(),delete this.unsub),await this.fullDefaultRevert()}async fullDefaultRevert(){await this.glueController.switchTransport({type:"default"},"system"),this.portsBridge.setActivePreferredTransportConfig({type:"default"}),await this.changeClientsConnection({type:"default"})}handleDisconnected(e,t){this.logger?.trace("The platform has been disconnected from the preferred transport, reverting all to the default one."),e(),this.fullDefaultRevert().then((()=>{this.registry.execute("system-reconnect"),this.logger?.trace("The platform reversion to default completed, restarting the preferred tracking."),t||UI(this.discoveryInterval).then((()=>this.connectPreferred()))})).catch((()=>UI(this.discoveryInterval).then((()=>this.connectPreferred()))))}changeClientsConnection(e){return this.sequelizer.enqueue((async()=>{try{await Promise.all([this.glueController.switchTransport(e,"client"),this.portsBridge.switchAllClientsTransport(e)])}catch(e){if(this.logger?.trace(`Some clients could not connect to the preferred transport with error: ${JSON.stringify(e)}`),!this.shouldForceTransfer)throw this.logger?.trace("The platform is not forcing a transfer in cases of errors, re-throwing."),new Error(e);this.logger?.trace("The platform is forcing a transfer regardless of the errors.")}await this.glueController.switchTransport(e,"contextsTrack")}))}checkPreferredConnection(e){return new Promise((t=>{const n=new WebSocket(e);n.onerror=()=>t({live:!1}),n.onopen=()=>{n.close(),t({live:!0})}}))}async checkPreFlight(e){this.logger?.trace("Starting the preflight check");if(!(await this.checkPreferredConnection(e||this.preferredUrl)).live)return this.logger?.trace("The preferred connection is not live."),{ready:!1};this.logger?.trace(`Found a live preferred connection at: ${e||this.preferredUrl}, testing the availability of transport switching logic in all current clients`);const t=await this.portsBridge.checkClientsPreferredLogic();if(this.logger?.trace(`The logic check returned: ${JSON.stringify(t)}`),!t.success&&!this.shouldForceTransfer)return this.logger?.trace("The preflight check is marked as not ready"),{ready:!1};this.logger?.trace("Checking the possibility of all clients to connect to the preferred connection");const n=await this.portsBridge.checkClientsPreferredConnection(e||this.preferredUrl);return this.logger?.trace(`The connection check returned: ${JSON.stringify(n)}`),n.success||this.shouldForceTransfer?(this.logger?.trace("The preflight check is marked as ready"),{ready:!0}):(this.logger?.trace("The preflight check is marked as not ready"),{ready:!1})}}class HR{transactionLocks={};get logger(){return Ym.get("transactions.controller")}completeTransaction(e,t){if("string"!=typeof e)throw new Error(`Cannot complete the transaction, because the provided id is not a string: ${JSON.stringify(e)}`);const n=this.transactionLocks[e];n?n.lift(t):this.logger?.warn(`Cannot mark a transaction as complete, because there is not lock with id ${e}`)}failTransaction(e,t){const n=this.transactionLocks[e];n?n.fail(t):this.logger?.warn(`Cannot mark a transaction as failed, because there is not lock with id ${e}`)}createTransaction(e,t){const n={},r=Zm(10),i=new Promise(((i,s)=>{let o=!0;n.lift=e=>{o=!1,delete this.transactionLocks[r],i(e)},n.fail=e=>{o=!1,delete this.transactionLocks[r],s(e)},setTimeout((()=>{o&&(o=!1,this.logger?.warn(`Transaction for operation: ${e} timed out.`),delete this.transactionLocks[r],s(`Transaction for operation: ${e} timed out.`))}),t)}));return n.lock=i,n.id=r,this.transactionLocks[r]=n,n}}class UR{interceptions=[];shutdown(){this.interceptions=[]}async registerInterceptor(e,t){Sk.runWithException(e),mA.runWithException(t);const n=e.interceptions.reduce(((e,t)=>(this.interceptions.some((e=>e.domain===t.domain&&e.operation===t.operation))&&e.push({domain:t.domain,operation:t.operation}),e)),[]);if(n.length){const e=n.map((e=>`${e.domain} - ${e.operation}`)).join(", ");throw new Error(`Interception registration is rejected, because the following collisions where found: ${e}`)}e.interceptions.forEach((n=>{this.interceptions.push({domain:n.domain,operation:n.operation,callInterceptor:e.callInterceptor,registrantName:t})}))}getOperationInterceptor(e){const t=this.interceptions.find((t=>t.domain===e.domain&&t.operation===e.operation));if(t)return{name:t.registrantName,intercept:t.callInterceptor}}}class GR{interceptionController;glueController;handlePluginMessage;platformApi;allPlugins;registeredPlugins=[];constructor(e,t){this.interceptionController=e,this.glueController=t}get logger(){return Ym.get("plugins.controller")}async shutdown(){this.allPlugins.forEach((e=>{if(e.stop)try{e.stop()}catch(t){this.logger?.warn(`Plugin: ${e.name} threw while onPlatformShutdown -> ${GI(t)}`)}})),this.allPlugins=[],this.registeredPlugins=[]}async start(e){if(!e.plugins)return;if(this.allPlugins=e.plugins,this.handlePluginMessage=e.handlePluginMessage,this.platformApi=e.api,!e.plugins||!e.plugins.length)return;const t=[];for(const n of e.plugins){const e=this.startPlugin(n);n.critical&&t.push(e)}await Promise.all(t)}async startPlugin(e){try{const t=this.buildPlatformControls(e.name,this.platformApi);await e.start(this.glueController.clientGlue,e.config,t),this.registerPlugin(e.name,e.version??"N/A")}catch(t){const n="string"==typeof t?t:JSON.stringify(t.message),r=`Plugin: ${e.name} threw while initiating: ${n}`;if(e.critical)throw new Error(r);this.logger?.warn(r)}}buildPlatformControls(e,t){return{control:t=>this.handlePluginMessage(t,e),logger:Ym.get(e),platformApi:t,interception:{register:t=>this.interceptionController.registerInterceptor(t,e)},system:{sendControl:t=>this.handlePluginMessage(t,e)}}}registerPlugin(e,t){if("string"!=typeof e||!e.length)return;this.registeredPlugins.some((t=>t.name===e))||this.registeredPlugins.push({name:e,version:t})}}class VR{systemController;windowsController;applicationsController;layoutsController;workspacesController;intentsController;channelsController;notificationsController;extensionController;searchController;themesController;managerController;prefsController;defaultDomainNames=["system","windows","appManager","layouts","workspaces","intents","channels","notifications","extension","search","themes","prefs"];domains;constructor(e,t,n,r,i,s,o,a,c,l,u,h,d){this.systemController=e,this.windowsController=t,this.applicationsController=n,this.layoutsController=r,this.workspacesController=i,this.intentsController=s,this.channelsController=o,this.notificationsController=a,this.extensionController=c,this.searchController=l,this.themesController=u,this.managerController=h,this.prefsController=d,this.setDomains()}setDomains(){this.domains={system:{name:"system",libController:this.systemController},windows:{name:"windows",libController:this.windowsController},appManager:{name:"appManager",libController:this.applicationsController},layouts:{name:"layouts",libController:this.layoutsController},workspaces:{name:"workspaces",libController:this.workspacesController},intents:{name:"intents",libController:this.intentsController},channels:{name:"channels",libController:this.channelsController},notifications:{name:"notifications",libController:this.notificationsController},extension:{name:"extension",libController:this.extensionController},search:{name:"search",libController:this.searchController},themes:{name:"themes",libController:this.themesController},manager:{name:"manager",libController:this.managerController},prefs:{name:"prefs",libController:this.prefsController}}}get logger(){return Ym.get("domains.controller")}shutdown(){Object.values(this.domains).forEach((e=>e.libController.handlePlatformShutdown?e.libController.handlePlatformShutdown():null)),this.domains={system:{name:"system",libController:this.systemController},windows:{name:"windows",libController:this.windowsController},appManager:{name:"appManager",libController:this.applicationsController},layouts:{name:"layouts",libController:this.layoutsController},workspaces:{name:"workspaces",libController:this.workspacesController},intents:{name:"intents",libController:this.intentsController},channels:{name:"channels",libController:this.channelsController},notifications:{name:"notifications",libController:this.notificationsController},extension:{name:"extension",libController:this.extensionController},search:{name:"search",libController:this.searchController},themes:{name:"themes",libController:this.themesController},prefs:{name:"prefs",libController:this.prefsController}}}validateDomain(e){const t=this.domains[e];if(!t)throw new Error(`Accessing a missing domain: ${e}.`);const n=t.domainNameDecoder?t.domainNameDecoder:TA;n?.runWithException(e)}async startAllDomains(e){this.logger?.trace("Starting all domains lib controllers"),await Promise.all(Object.values(this.domains).map((t=>t.libController.start(e)))),this.logger?.trace("All domains have been initialized")}async configurePostStartAllDomains(){this.logger?.trace("Starting all domains lib controllers"),await Promise.all(Object.values(this.domains).filter((e=>!!e.libController.configurePostStart)).map((e=>e.libController.configurePostStart&&e.libController.configurePostStart()))),this.logger?.trace("All domains have been initialized")}notifyDomainsClientUnloaded(e){this.logger?.trace(`detected unloading of client: ${e.windowId}, notifying all controllers`),Object.values(this.domains).forEach((t=>{try{t.libController.handleClientUnloaded?.(e.windowId,e.win)}catch(n){const r="string"==typeof n?n:JSON.stringify(n.message),i=t.name;this.logger?.error(`${i} controller threw when handling unloaded client ${e.windowId} with error message: ${r}`)}}))}executeControlMessage(e){const t=this.domains[e.domain];if(!t)throw new Error(`Cannot process message for domain: ${e.domain} and operation ${e.operation}, because no domain can service it.`);return t.libController.handleControl(e)}registerDynamicDomain(e){if(Object.values(this.domains).map((e=>e.name)).some((t=>t===e.name)))throw new Error(`Cannot register a domain with name: ${e.name}, because it is already registered`);if(!(e.libController&&e.libController.start&&e.libController.handleControl&&e.libController.handleClientUnloaded))throw new Error(`Cannot register a domain with name: ${e.name}, because it does not have a valid libController`);if(!e.domainNameDecoder)throw new Error(`Cannot register a domain with name: ${e.name}, because it does not have a domain decoder`);this.domains[e.name]=e}unregisterDynamicDomain(e){if(this.defaultDomainNames.some((t=>t===e)))throw new Error(`Cannot unregister a domain: ${e}, because it is a reserved default domain`);delete this.domains[e]}}class JR{glueController;workspacesController;windowsController;intentsResolverResponsePromises={};constructor(e,t,n){this.glueController=e,this.workspacesController=t,this.windowsController=n}get logger(){return Ym.get("intents.resolver.controller")}async startResolverApp({request:e,resolverConfig:t,commandId:n,callerId:r,resolverInstance:i,method:s}){this.logger?.trace(`[${n}] Intents Resolver UI with app name ${t.appName} will be used for request: ${JSON.stringify(e)}`);const o=await this.registerResponseMethod(s);this.logger?.trace(`[${n}] Registered interop method ${o}`);const a=this.buildStartContext(s,e,o),c=await this.buildStartOptions(r,n);this.logger?.trace(`[${n}] Starting Intents Resolver UI with context: ${JSON.stringify(a)} and options: ${c}`);const l=this.glueController.clientGlue.appManager.application(t.appName).start(a,c).catch((e=>{throw new Error(`${VO.RESOLVER_UNAVAILABLE}. Reason: ${e instanceof Error||"string"==typeof e?e:JSON.stringify(e)}`)})),u=await l;i.instanceId=u.id,this.logger?.trace(`[${n}] Intents Resolver instance with id ${u.id} opened`),this.subscribeOnInstanceStopped(u,s);const h="raise"===s?`for intent request ${JSON.stringify(e)}`:`for '${s}' method with filter ${JSON.stringify(e)}`,d=`${VO.RESOLVER_TIMEOUT} - waited ${t.waitResponseTimeout}ms for the user the choose a handler ${h}`;this.createResponsePromise({intent:"raise"===s?e.intent:void 0,instanceId:u.id,responseMethodName:o,timeout:t.waitResponseTimeout,errorMsg:d});return await this.handleInstanceResponse(u.id,s,n)}stopResolverInstance(e){const t=this.glueController.clientGlue.appManager.instances().find((t=>t.id===e));t&&t.stop().catch((e=>this.logger?.warn(e)))}async handleInstanceResponse(e,t,n){try{const r=await this.intentsResolverResponsePromises[e].promise,i="raise"===t?`for intent ${r.intent} `:"";return this.logger?.trace(`[${n}] Intent handler chosen ${i}: ${JSON.stringify(r.handler)}. Stopping resolver instance with id ${e}`),this.stopResolverInstance(e),this.logger?.trace(`[${n}] Instance with id ${e} successfully stopped`),r.handler}catch(t){throw this.stopResolverInstance(e),new Error(t)}}async registerResponseMethod(e){const t="T42.Intents.Resolver.Control."+Zm(10);return await this.glueController.clientGlue.interop.register(t,((t,n)=>this.responseHandler(t,n,e))),t}createResponsePromise({instanceId:e,intent:t,responseMethodName:n,timeout:r,errorMsg:i}){let s=()=>{},o=()=>{};const a=RT(((e,t)=>{s=e,o=t}),r,i);this.intentsResolverResponsePromises[e]={intent:t,resolve:s,reject:o,promise:a,methodName:n}}buildStartContext(e,t,n){const r={callerId:this.glueController.clientGlue.interop.instance.instance,methodName:n};return"raise"===e?{...r,intent:t}:{...r,handlerFilter:t}}async buildStartOptions(e,t){const n=await this.getTargetBounds(e,t);if(!n)throw new Error(`[${t}] Cannot find window with id: ${e} - the client which sent the "raise" command is no longer opened`);return{top:(n.height-440)/2+n.top,left:(n.width-400)/2+n.left,width:400,height:440}}async getTargetBounds(e,t){const n=await this.tryGetWindowBasedBounds(e,t)||await this.tryGetWorkspaceBasedBounds(e,t);if(n)return this.logger?.trace(`[${t}] Opening Intents Resolver UI with bounds: ${JSON.stringify(n)}`),n;const r={top:window.screen.availTop||0,left:window.screen.availLeft||0,width:window.screen.width,height:window.screen.height};return this.logger?.trace(`[${t}] Opening Intents Resolver UI relative to my screen bounds: ${JSON.stringify(r)}`),r}async tryGetWindowBasedBounds(e,t){const n=this.glueController.clientGlue.windows.findById(e),r=this.getServerInstanceByWindowId(e);if(!n&&!r)throw new Error(`Client with id "${e}" does not exist`);if(!n&&r)return this.getWindowBoundsByServerInstance(r,e,t);if(!n)throw new Error(`Client with id "${e}" does not exist`);try{const r=await n.getBounds();return this.logger?.trace(`[${t}] Opening the resolver UI with bounds: ${JSON.stringify(r)}, relative to a window with id: ${e}`),r}catch(n){return void this.logger?.trace(`[${t}] Failure to get bounds of a window with id ${e}. Error: ${JSON.stringify(n)}`)}}getServerInstanceByWindowId(e){return this.glueController.clientGlue.interop.servers().find((t=>t.instance===e))}async getWindowBoundsByServerInstance(e,t,n){try{const{bounds:n}=await this.glueController.callWindow("windows",this.windowsController.getBoundsOperation,{windowId:t},{instance:e.instance});return n}catch(t){this.logger?.trace(`[${n}] Failure to get bounds of a window with instance ${e.instance}. Error: ${JSON.stringify(t)}`)}}async tryGetWorkspaceBasedBounds(e,t){try{const{bounds:n}=await this.workspacesController.getWorkspaceWindowFrameBounds({itemId:e},t);return this.logger?.trace(`[${t}] Opening the resolver UI relative to my workspace frame window bounds: ${JSON.stringify(n)}`),n}catch(e){this.logger?.trace(`[${t}] Failure to get my workspace frame window bounds. Error: ${JSON.stringify(e)}`)}}responseHandler(e,t,n){const r=("raise"===n?qO:BO).run(e),i=t.instance;if(!i)throw new Error("Cannot find instance id for the response of the intent resolver");if(r.ok)return this.logger?.trace(`Intent Resolver instance with id ${i} send a valid response: ${JSON.stringify(r.result)}`),this.intentsResolverResponsePromises[i].resolve(e);this.logger?.trace(`Intent Resolver instance with id ${i} sent an invalid response. Error: ${JSON.stringify(r.error)}`),this.intentsResolverResponsePromises[i].reject(r.error.message),this.stopResolverInstance(i)}subscribeOnInstanceStopped(e,t){const{application:n}=e,r=n.onInstanceStopped((n=>{if(n.id!==e.id)return;const i=this.intentsResolverResponsePromises[n.id];if(!i)return r();const s="raise"===t?`raised intent ${i.intent}`:`'${t}' method`,o=`${VO.USER_CANCELLED} for ${s}`;i.reject(o),this.cleanUpIntentResolverPromise(n.id),r()}))}async cleanUpIntentResolverPromise(e){const t=this.intentsResolverResponsePromises[e];if(!t)return;this.glueController.clientGlue.interop.unregister(t.methodName).catch((e=>this.logger?.warn(e))),delete this.intentsResolverResponsePromises[e]}}class KR{_key=[52,50,52,50,52,50];verifyLicense(e){if(!e||"string"!=typeof e)return{valid:!1};return{valid:rh.jws.JWS.verifyJWT(e,this.key,{alg:["HS256"]})}}getLicensePayload(e){if(!e)throw new Error("No license key was provided");const t=rh.jws.JWS.readSafeJSONString(nh(e.split(".")[1]));if(!t||"string"!=typeof t.type||"number"!=typeof t.expiration)throw new Error("The license key payload is invalid");return t.type=t.type.toLowerCase(),t}checkExpired(e){if(!e||"number"!=typeof e)return!1;return e<=Math.floor((new Date).getTime()/1e3)}get key(){return String.fromCharCode(...this._key)}}class zR{glueController;sessionStore;windowsController;workspacesController;constructor(e,t,n,r){this.glueController=e,this.sessionStore=t,this.windowsController=n,this.workspacesController=r}get logger(){return Ym.get("layouts.builder")}async saveGlobalLayout(e,t){const n=await this.getRawWindowsLayoutData({layoutType:"Global",layoutName:e.layout.name,context:e.layout.context,instances:e.layout.instances,ignoreInstances:e.layout.ignoreInstances},t);this.logger?.trace(`[${t}] received valid data for the eligible windows`);const r=await this.glueController.getLayout(e.layout.name),i=r?await this.updateLayout(r,e.layout,n.windows,t):await this.buildNewLayout(e.layout,n.windows,t);return this.logger?.trace(`[${t}] the layout object was constructed, importing.`),await this.glueController.importLayout(i),this.logger?.trace(`[${t}] the import for layout: ${i.name} was completed, responding.`),i}async updateLayout(e,t,n,r){this.logger?.trace(`[${r}] updating an existing layout with name ${t.name}`),e.context=t.context??{},e.metadata=t.metadata??{};const i=n.filter((e=>!!e.layoutComponentId)).map((e=>e.layoutComponentId)),s=this.getLayoutIdOccurrenceMap(i),o=n.map((t=>this.generateWindowComponent(e,t,s,r)));this.logger?.trace(`[${r}] the window components are completed, we have ${o.length} windows for the layout`);const a={layoutName:t.name,layoutType:"Global",context:t.context},c=e.components.filter((e=>"workspaceFrame"===e.type)),l=await this.compileWorkspacesFrameComponents(c,a,r);return this.logger?.trace(`[${r}] the workspaces frame components are completed, we have ${l.length} frames for the layout`),e.components=[],e.components.push(...o),e.components.push(...l),e}async buildNewLayout(e,t,n){this.logger?.trace(`[${n}] build a brand new layout with name ${e.name}`);const r={name:e.name,type:"Global",context:e.context??{},metadata:e.metadata??{},components:[],version:2},i=t.map((e=>this.buildNewWindowComponent(e,n)));this.logger?.trace(`[${n}] the window components are completed, we have ${i.length} windows for the layout`);const s={layoutName:e.name,layoutType:"Global",context:e.context},o=await this.compileWorkspacesFrameComponents([],s,n);return this.logger?.trace(`[${n}] the workspaces frame components are completed, we have ${o.length} frames for the layout`),r.components.push(...i),r.components.push(...o),r}async getRawWindowsLayoutData(e,t){this.logger?.trace(`[${t}] handling send save requests for layout: ${e.layoutName} to instances: ${e.instances?.join(", ")}`);const n={windows:[...await Promise.all(this.getEligibleGlueWindows(e.instances,e.ignoreInstances).map((n=>this.buildRawGlueWindowData(n,e,t)))),...await Promise.all(this.getEligibleNonGlueWindows(e.instances,e.ignoreInstances).map((e=>this.buildRawNonGlueWindowData(e))))]};return this.logger?.trace(`[${t}] request completed, responding to the caller`),n}async buildRawGlueWindowData(e,t,n){const r=`Cannot fetch the layout save data from: ${e.name} with id: ${e.windowId}`;if(!e.initialUrl)throw new Error(`Missing URL for client: ${e.name}`);const i=await OT((async()=>{try{return await this.glueController.callWindow("layouts",{name:"clientSaveRequest",execute:async()=>{}},t,{windowId:e.windowId})}catch(e){return{}}}),15e3,r),s=this.sessionStore.getAllInstancesData().find((t=>t.id===e.windowId));return{bounds:await this.windowsController.getWindowBounds(e.windowId,n),windowContext:i.windowContext??{},url:e.initialUrl,name:e.name,application:s?s.applicationName:sO,initialContext:e.initialContext,windowId:e.windowId,layoutComponentId:e.layoutComponentId}}async buildRawNonGlueWindowData(e){if(!e.initialUrl)throw new Error(`Missing URL for client: ${e.name}`);const t=this.sessionStore.getAllInstancesData().find((t=>t.id===e.windowId));return{bounds:e.initialBounds??Ls.windows.defaultWindowOpenBounds,windowContext:{},url:e.initialUrl,name:e.name,application:t?t.applicationName:sO,initialContext:e.initialContext,windowId:e.windowId,layoutComponentId:e.layoutComponentId}}getEligibleNonGlueWindows(e,t){const n=this.getAllEligibleWindows(e,t),r=this.sessionStore.getAllNonGlue(),i=this.sessionStore.pickWorkspaceClients((()=>!0));return n.filter((e=>r.some((t=>t.windowId===e.windowId))&&i.every((t=>t.windowId!==e.windowId))))}getEligibleGlueWindows(e,t){const n=this.getAllEligibleWindows(e,t),r=this.sessionStore.getAllNonGlue(),i=this.sessionStore.pickWorkspaceClients((()=>!0));return n.filter((e=>i.every((t=>t.windowId!==e.windowId))&&r.every((t=>t.windowId!==e.windowId))))}getAllEligibleWindows(e,t){let n=this.sessionStore.getAllWindowsData().filter((e=>"Platform"!==e.name));if(e&&e.length){const t=this.glueController.getServers().filter((t=>e.some((e=>t.instance===e))));n=n.filter((e=>t.some((t=>t.windowId===e.windowId))))}if(t&&t.length){const e=this.glueController.getServers().filter((e=>t.some((t=>e.instance===t))));n=n.filter((t=>e.every((e=>e.windowId!==t.windowId))))}return n}updateExistingWindowComponent(e,t,n){return this.logger?.trace(`[${n}] performing a soft update on am existing component ${e.application} with id ${e.state.instanceId}`),e.state.context=t.windowContext?t.windowContext:e.state.context,e.state.bounds=t.bounds,e.state.createArgs.context=t.initialContext?t.initialContext:e.state.createArgs?.context,e.state.instanceId=e.state.instanceId?e.state.instanceId:t.windowId,e}buildNewWindowComponent(e,t){return this.logger?.trace(`[${t}] building a brand new component ${e.application} with id ${e.windowId}`),{type:"window",componentType:"application",application:e.application,state:{context:e.windowContext??{},bounds:e.bounds,createArgs:{name:e.name,url:e.url,context:e.initialContext??{}},windowState:"Normal",restoreState:"Normal",restoreSettings:{groupId:"glue_42_core",groupZOrder:0},instanceId:e.windowId,isSticky:!0,isCollapsed:!1}}}async compileWorkspacesFrameComponents(e,t,n){this.logger?.trace(`[${n}] requesting information about all running workspaces frames`);const r=await this.getAllFramesSnapshotsWithBounds(t,n);this.logger?.trace(`[${n}] got information on ${r.length} frames, composing the frame components`);const i=r.filter((e=>!!e.config?.layoutComponentId)).map((e=>e.config.layoutComponentId)),s=this.getLayoutIdOccurrenceMap(i);return r.map((t=>this.generateFrameComponent(t,e,s,n)))}getLayoutIdOccurrenceMap(e){const t={};return e.forEach((e=>{t[e]?t[e]=1+t[e]:t[e]=1})),t}softUpdateFrameComponent(e,t,n,r){return this.logger?.trace(`[${r}] performing a soft update on am existing frame component ${e.state.instanceId}`),e.state.bounds=t.bounds,e.state.selectedWorkspace=-1===n?0:n,e.state.workspaces=t.snapshot.workspaces,e.state.context=Object.assign({},e.state.context,{isPlatform:t.config.isPlatform}),e}createNewFrameComponent(e,t,n){return this.logger?.trace(`[${n}] building a new frame component ${e.snapshot.id}`),{type:"workspaceFrame",application:"workspaces-demo",componentType:"application",state:{context:{isPlatform:e.config.isPlatform},bounds:e.bounds,instanceId:e.snapshot.id,selectedWorkspace:-1===t?0:t,workspaces:e.snapshot.workspaces,restoreState:"Normal",windowState:"Normal"}}}generateWindowComponent(e,t,n,r){const i=e.components.find((e=>"window"===e.type&&e.state.instanceId===t.layoutComponentId)),s=t.layoutComponentId?n[t.layoutComponentId]:0;return i&&s<2?this.updateExistingWindowComponent(i,t,r):this.buildNewWindowComponent(t,r)}generateFrameComponent(e,t,n,r){const i=e.snapshot.workspaces.findIndex((e=>e?.config?.isSelected)),s=t.find((t=>t.state.instanceId===e.config.layoutComponentId)),o=e.config.layoutComponentId?n[e.config.layoutComponentId]:0;return s&&o<2?this.softUpdateFrameComponent(s,e,i,r):this.createNewFrameComponent(e,i,r)}async getAllFramesSnapshotsWithBounds(e,t){const n=(await this.workspacesController.getAllFramesSummaries(void 0,t)).summaries||[];return await Promise.all(n.map((async n=>{const r=await this.workspacesController.handleGetWorkspacesLayouts({frameId:n.id,...e},t),i=await this.workspacesController.getFrameSessionData({frameId:n.id},t);return{bounds:(await this.workspacesController.getFrameBounds({itemId:n.id},t)).bounds,snapshot:{id:n.id,workspaces:r.workspaces,config:{}},config:{isPlatform:i?.isPlatform,layoutComponentId:i?.layoutComponentId}}})))}}class QR{glueController;validator;resetter;workspacesController;constructor(e,t,n,r){this.glueController=e,this.validator=t,this.resetter=n,this.workspacesController=r}get logger(){return Ym.get("layouts.restorer")}async restoreGlobalLayout(e,t,n,r){const i=await this.glueController.getLayout(e.layout.name);if(!i)throw new Error(`Cannot restore layout: ${e.layout.name}, because it was not found in this platform`);if("Global"!==i.type)throw new Error(`Cannot restore layout: ${e.layout.name}, because it is not a Global Layout`);if(!n||!r)throw new Error(`Cannot restore layout: ${e.layout.name}, because the callerId or callerType are missing`);await this.validator.doInitialValidation(i,t),this.logger?.trace(`[${t}] the initial validation of the compliancy of the layout was completed`),await this.closeInstances(r,n,t,e.layout.closeMe,e.layout.closeRunningInstances),this.logger?.trace(`[${t}] closed all necessary running instances`),await this.restore(i,e,t),this.logger?.trace(`[${t}] the layout ${i.name} was restored`)}async closeInstances(e,t,n,r,i){(void 0===i||i)&&await this.resetter.closeAllExceptCaller(t,n);(r||void 0===r&&void 0===i||void 0===r&&i)&&await this.resetter.closeCaller(e,t,n)}async restore(e,t,n){this.logger?.trace(`[${n}] starting the restore process of ${e.name}`);const r=await this.canPlatformFrameAcceptComponent(n)?this.pickComponentForPlatformFrame(e.components.filter((e=>"workspaceFrame"===e.type))):null,i=Promise.all(e.components.map((i=>{if("window"===i.type)return this.restoreWindowComponent(i,n,e.context,t.layout.context);if("workspaceFrame"===i.type){const s=r===i;return this.restoreWorkspaceFrameComponent(i,n,e.context,t.layout.context,s)}})));await i}async restoreWindowComponent(e,t,n,r){this.logger?.trace(`[${t}] restoring window component ${e.application} with id ${e.state.instanceId} and bounds: ${JSON.stringify(e.state.bounds)}`);const i=Object.assign({},n,e.state.context,e.state.createArgs.context,r),s=e.state.bounds,o=await this.checkTargetBoundsPossible(s);o.isPossible||this.logger?.warn(`Restoring ${e.application} not possible with the saved bounds, falling back to default bounds`);const a=o.isPossible?s:void 0;this.logger?.trace(`[${t}] calling the respective glue open/start method`);const c=e.application===sO?this.glueController.openWindow({name:e.state.createArgs.name,url:e.state.createArgs.url,layoutComponentId:e.state.instanceId,context:i,bounds:a}):this.glueController.startApp({name:e.application,layoutComponentId:e.state.instanceId,context:i,bounds:a});this.logger?.trace(`[${t}] the component was started`),await c}async restoreWorkspaceFrameComponent(e,t,n,r,i){this.logger?.trace(`[${t}] restoring workspace frame component $with id ${e.state.instanceId} and bounds: ${JSON.stringify(e.state.bounds)}`);const s=i?(await this.getPlatformFrame(t))?.id:void 0,o=await this.createFrameWithWorkspaceComponents(e,s);this.logger?.trace(`[${t}] the frame was restored, selecting the correct workspace`);const a=await o.workspaces();await(a[e.state.selectedWorkspace]?.focus()),this.logger?.trace(`[${t}] the correct workspace was selected, restoring the workspaces context`);const c=Object.assign({},n,r);await Promise.all(a.map((e=>e.updateContext(c)))),this.logger?.trace(`[${t}] the frame component ${e.state.instanceId} is restored`)}async canPlatformFrameAcceptComponent(e){const t=await this.getPlatformFrame(e);if(!t)return!1;const n=await t.workspaces();return 1===n.length&&0===n[0].getAllWindows().length}pickComponentForPlatformFrame(e){if(0===e.length)return;return e.find((e=>e.state.context?.isPlatform))||e[0]}async checkTargetBoundsPossible(e){if(window.gtf)return{isPossible:!0};return(await window.getScreenDetails()).screens.find((t=>{const n=e.left>=t.left&&e.left<=t.left+t.width,r=e.top>=t.top&&e.top<=t.top+t.height;return n&&r}))?{isPossible:!0}:{isPossible:!1}}async getPlatformFrame(e){if(!this.glueController.isWorkspacesEnabled)return;if(!await this.workspacesController.handleCheckStarted(void 0,e))return;const t=(await this.workspacesController.handleGetPlatformFrameId({},e)).id;return t?this.glueController.getOrCreateWorkspaceFrame({frameId:t}):void 0}async createFrameWithWorkspaceComponents(e,t){const n=await this.glueController.getOrCreateWorkspaceFrame({frameId:t,bounds:e.state.bounds,layoutComponentId:e.state.instanceId});return await this.glueController.invokeMethod(Ms,{operation:"initFrameFromSnapshot",operationArguments:{workspaces:e.state.workspaces,keepWorkspaces:[]}},{windowId:n.id}),n}}class XR{glueController;workspacesController;constructor(e,t){this.glueController=e,this.workspacesController=t}async doInitialValidation(e,t){this.validateRequiredApplicationsExistence(e),await this.validateWorkspaceConfigurationInPlatform(e,t),this.validateNoAppNameAndUrl(e)}async doFinalValidation(e){this.validateWindowNamesCollision(e),this.validateInstanceIdCollision(e),await this.validateWorkspaceFramesIdCollisions(e)}validateWindowNamesCollision(e){const t=e.components.filter((e=>"window"===e.type&&e.application===sO&&!!e.state.createArgs.name)).map((e=>e.state.createArgs.name)),n=this.glueController.getAllWindowNames(),r=t.filter((e=>n.some((t=>e===t))));if(r.length)throw new Error(`Cannot restore layout: ${e.name}, because there are window names collisions: ${r.join(", ")}`)}validateInstanceIdCollision(e){const t=e.components.filter((e=>"window"===e.type&&!!e.state.instanceId)).map((e=>e.state.instanceId)),n=this.glueController.getAllOpenedIds(),r=t.filter((e=>n.some((t=>e===t))));if(r.length)throw new Error(`Cannot restore layout: ${e.name}, because there are instances ids collisions: ${r.join(", ")}`)}async validateWorkspaceFramesIdCollisions(e){if(e.components.every((e=>"workspaceFrame"!==e.type)))return;const t=await this.glueController.getAllOpenedFrameIds(),n=e.components.filter((e=>"workspaceFrame"===e.type)).map((e=>e.state.instanceId)).filter((e=>t.some((t=>e===t))));if(n.length)throw new Error(`Cannot restore layout: ${e.name}, because there are frame ids collisions: ${n.join(", ")}`)}validateNoAppNameAndUrl(e){const t=e.components.filter((e=>"window"===e.type&&e.application===sO)).filter((e=>!("window"!==e.type||e.state.createArgs.name&&e.state.createArgs.url)));if(!t.length)return;const n=t.map((e=>JSON.stringify(e.state.createArgs))).join(", ");throw new Error(`Cannot restore layout: ${e.name}, because it has window components, which are not defined applications and are missing name or url, provided insufficient createArgs are: ${n}`)}validateRequiredApplicationsExistence(e){const t=this.glueController.getAllApplicationNames(),n=e.components.filter((e=>"window"===e.type&&e.application!==sO)).map((e=>e.application));if(n.push(...this.getRequiredAppNamesFromWorkspaceFrameComponents(e)),!n.length)return;const r=n.filter((e=>t.every((t=>t!==e))));if(r.length)throw new Error(`Cannot restore layout: ${e.name}, because some required applications are not registered with this platform: ${r.join(", ")}`)}async validateWorkspaceConfigurationInPlatform(e,t){if(e.components.every((e=>"Workspace"!==e.type||"workspaceFrame"!==e.type)))return;const n=(await this.workspacesController.handleCheckStarted({},t))?.started;if(!n)throw new Error(`Cannot restore layout: ${e.name}, because this platform does not have a valid Workspaces configuration`)}getRequiredAppNamesFromWorkspaceFrameComponents(e){const t=[];for(const n of e.components)if("workspaceFrame"===n.type){const e=n.state.workspaces.reduce(((e,t)=>(e.push(...this.getAllAppNamesFromChildren(t.children)),e)),[]);t.push(...e)}return t}getAllAppNamesFromChildren(e){const t=e.filter((e=>"window"===e.type&&!!e.config.appName&&e.config.appName!==sO)).map((e=>e.config.appName));for(const n of e)"window"!==n.type&&t.push(...this.getAllAppNamesFromChildren(n.children));return t}}class YR{glueController;workspacesController;constructor(e,t){this.glueController=e,this.workspacesController=t}get logger(){return Ym.get("layouts.resetter")}async closeAllExceptCaller(e,t){const n=this.glueController.getAllOtherNonPlatformWindows(e);await Promise.all(n.map((async e=>{if(this.glueController.isWorkspacesEnabled){if(await this.glueController.getWorkspaceWindowById(e.id))return}return e.close()}))),this.glueController.isWorkspacesEnabled&&await this.closeNecessaryWorkspacesFrames(e,t)}async closeCaller(e,t,n){if("plugin"===e)return;if(await this.glueController.getWorkspaceWindowById(t))return void await this.cleanupWorkspaceCaller(t,n);const r=this.glueController.getWindowById(t);r&&"Platform"!==r.name?await r.close():this.logger?.warn("The close caller was missing, is an iframe or is a platform")}async closeNecessaryWorkspacesFrames(e,t){const n=(await this.workspacesController.handleGetPlatformFrameId({},t)).id;let r=await this.glueController.getAllWorkspacesFrames();n&&(r=r.filter((e=>e.id!==n)),await this.cleanUpFrameExceptCaller(n,e));const i=await this.glueController.getWorkspaceWindowById(e);i&&(r=r.filter((e=>e.id!==i.frameId)),await this.cleanUpFrameExceptCaller(i.frameId,e)),await Promise.all(r.map((e=>e.close())))}async cleanUpFrameExceptCaller(e,t){const n=await this.glueController.getWorkspacesByFrameId(e),r=n.filter((e=>!e.getWindow((e=>e.id===t)))),i=n.find((e=>e.getWindow((e=>e.id===t))));await Promise.all(r.map((e=>e.close())));const s=i?i.getAllWindows((e=>e.id!==t)):[];await Promise.all(s.map((e=>e.close())))}async cleanupWorkspaceCaller(e,t){const n=(await this.workspacesController.handleGetPlatformFrameId({},t)).id,r=await this.glueController.getWorkspaceWindowById(e);r&&(r.frameId!==n?await r.frame.close():await r.workspace.close())}}const ZR=hA(aA("operationCheck"));class eN{glueController;appsRepo;layoutsRepo;workspacesRepo;started=!1;repos=[];providerName="Glue42 Core Plus Platform";provider;activeQueries={};unsubFuncs=[];operations={operationCheck:{name:"operationCheck",dataDecoder:EA,resultDecoder:AA,execute:this.handleOperationCheck.bind(this)}};constructor(e,t,n,r){this.glueController=e,this.appsRepo=t,this.layoutsRepo=n,this.workspacesRepo=r}get logger(){return Ym.get("notifications.controller")}handlePlatformShutdown(){this.started=!1,this.unsubFuncs.forEach((e=>e())),this.unsubFuncs=[],this.repos=[],this.activeQueries={},this.provider?.unregister()}async configurePostStart(){if(this.repos.push(this.appsRepo),this.repos.push(this.layoutsRepo),!this.glueController.isWorkspacesEnabled)return;this.repos.push(this.workspacesRepo);const e=this.repos.map((e=>({name:e.type,displayName:e.displayType}))),t={name:this.providerName,types:e};if(this.logger?.trace(`Registering the plus platform as a provider with name: ${t.name} and types: ${JSON.stringify(t.types?.join(", "))}.`),this.provider=await this.glueController.registerProvider(t),!this.provider)throw new Error("The platform was not registered successfully as a provider.");this.logger?.trace("The platform plus was registered successfully as a provider.");const n=this.provider.onQuery((e=>{this.processQuery(e).then((()=>this.markQueryDone(e))).catch((t=>this.markQueryError(e,t)))})),r=this.provider.onQueryCancel(this.processQueryCancel.bind(this));this.unsubFuncs.push(n),this.unsubFuncs.push(r),this.started=!0,this.logger?.info("The module started successfully.")}async start(){this.logger?.info("Starting the Global Search provider.")}async handleControl(e){if(!this.started)throw new Error("Cannot handle this search control message, because the controller has not been started");const t=e.data,n=e.commandId,r=ZR.run(e.operation);if(!r.ok)throw new Error(`This search request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(r.error)}`);const i=r.result,s=this.operations[i].dataDecoder?.run(t);if(s&&!s.ok)throw new Error(`Search request for ${i} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(s.error)}`);this.logger?.debug(`[${n}] ${i} command is valid with data: ${JSON.stringify(t)}`);const o=await this.operations[i].execute(t,n),a=this.operations[i].resultDecoder?.run(o);if(a&&!a.ok)throw new Error(`Search request for ${i} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(a.error)}`);return this.logger?.trace(`[${n}] ${i} command was executed successfully`),o}async handleOperationCheck(e){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}async processQuery(e){this.logger?.info(`Processing a new query for: ${e.search}`),this.activeQueries[e.id]={allowedResultsCount:e.providerLimits?.maxResults||Number.MAX_SAFE_INTEGER};const t=e.types?this.repos.filter((t=>e.types?.some((e=>e.name===t.type)))):this.repos;await Promise.all(t.map((t=>this.callRepo(t,e))))}async callRepo(e,t){const n=await this.getRepoResults(e,t);this.activeQueries[t.id]&&n&&this.sendResults(n,t)}async getRepoResults(e,t){try{return await e.getResults(t)}catch(e){return void this.markQueryError(t,e)}}sendResults(e,t){try{e.forEach((e=>{this.activeQueries[t.id]&&(this.activeQueries[t.id].allowedResultsCount?(--this.activeQueries[t.id].allowedResultsCount,t.sendResult(e)):this.markQueryDone(t))}))}catch(e){this.logger?.warn(`Failed sending results for query: ${t.search} with an error: ${GI(e)}`)}}markQueryDone(e){this.activeQueries[e.id]&&(this.logger?.info(`The query for: ${e.search} is completed`),delete this.activeQueries[e.id],e.done())}markQueryError(e,t){this.activeQueries[e.id]&&(this.logger?.warn(`The query for: ${e.search} ended with an error: ${GI(t)}`),delete this.activeQueries[e.id],e.error(GI(t)))}processQueryCancel(e){delete this.activeQueries[e.id]}}class tN{glueController;type="application";displayType="Applications";constructor(e){this.glueController=e}getResults(e){const t=new Set,n={count:Math.min(e.providerLimits?.maxResultsPerType||Number.MAX_SAFE_INTEGER,e.providerLimits?.maxResults||Number.MAX_SAFE_INTEGER)},r=this.glueController.getAllApplications();if(r.filter((t=>VI(n,(()=>!!t.title?.toLowerCase().includes(e.search.toLowerCase()))))).forEach((e=>t.add(e))),!n.count)return Promise.resolve(this.transformApps(t));if(r.filter((t=>VI(n,(()=>!!t.caption?.toLowerCase().includes(e.search.toLowerCase()))))).forEach((e=>t.add(e))),!n.count)return Promise.resolve(this.transformApps(t));return r.filter((t=>VI(n,(()=>t.name.toLowerCase().includes(e.search.toLowerCase()))))).forEach((e=>t.add(e))),Promise.resolve(this.transformApps(t))}transformApps(e){const t=[];for(const n of e.values())t.push({type:{name:this.type,displayName:this.displayType},id:n.name,displayName:n.title,description:n.caption,iconURL:n.icon});return t}}class nN{glueController;type="layout";displayType="Layouts";constructor(e){this.glueController=e}async getResults(e){const t=new Set,n={count:Math.min(e.providerLimits?.maxResultsPerType||Number.MAX_SAFE_INTEGER,e.providerLimits?.maxResults||Number.MAX_SAFE_INTEGER)};return(await this.glueController.getAllLayoutsSummaries()).filter((t=>VI(n,(()=>t.name.toLowerCase().includes(e.search.toLowerCase()))))).forEach((e=>t.add(e))),this.transformLayouts(t)}transformLayouts(e){const t=[];for(const n of e.values())t.push({type:{name:this.type,displayName:this.displayType},id:n.name,displayName:n.name});return t}}class rN{glueController;type="workspace";displayType="Workspaces";constructor(e){this.glueController=e}async getResults(e){const t=new Set,n={count:Math.min(e.providerLimits?.maxResultsPerType||Number.MAX_SAFE_INTEGER,e.providerLimits?.maxResults||Number.MAX_SAFE_INTEGER)};return(await this.glueController.getAllWorkspacesSummaries()).filter((t=>VI(n,(()=>t.name.toLowerCase().includes(e.search.toLowerCase()))))).forEach((e=>t.add(e))),this.transformWorkspaces(t)}transformWorkspaces(e){const t=[];for(const n of e.values())t.push({type:{name:this.type,displayName:this.displayType},id:n.name,displayName:n.name});return t}}class iN{localStorage;defaultGlobalLayoutNamespace="g42_core_plus_default_global_layout";themesNamespace="g42_core_plus_themes";notificationsNamespace="g42_core_notifications_config";username="g42_public";constructor(){this.localStorage=window.localStorage}start(e){e?.username&&(this.username=e.username);if(!this.localStorage.getItem(this.username)){const e={[this.defaultGlobalLayoutNamespace]:{},[this.themesNamespace]:[]};this.localStorage.setItem(this.username,JSON.stringify(e))}}stop(){this.username="g42_public"}saveThemeIfMissing(e){const t=this.getData(this.themesNamespace)||[];t.some((t=>t.theme.name===e.theme.name))||(t.push(e),this.saveData(this.themesNamespace,t))}getAllThemes(){return this.getData(this.themesNamespace)||[]}markThemeSelected(e,t){const n=this.getData(this.themesNamespace)||[],r=n.find((t=>t.theme.name===e));if(!r)throw new Error(`Cannot mark theme: ${e} as selected, because it doesn't exist`);n.forEach((e=>{e.selected=!1,e.isUserSelected=!1})),r.selected=!0,r.isUserSelected=!!t,this.saveData(this.themesNamespace,n)}getDefaultGlobalLayoutName(){const e=this.getData(this.defaultGlobalLayoutNamespace);return e?.name}saveDefaultGlobalLayout(e){this.saveData(this.defaultGlobalLayoutNamespace,{name:e})}clearDefaultGlobalLayout(){this.saveData(this.defaultGlobalLayoutNamespace,{})}getNotificationsConfig(){return this.getData(this.notificationsNamespace)}setNotificationsConfig(e){this.saveData(this.notificationsNamespace,e)}updateNotificationsConfig(e){const t=this.getNotificationsConfig();if(!t)throw new Error("Cannot update notifications config, because it doesn't exist");this.setNotificationsConfig(Ok(t,e,{arrayMerge:(e,t)=>t}))}getData(e){const t=this.localStorage.getItem(this.username);if(!t)throw new Error(`Cannot get data for namespace: ${e}, because the user data is missing`);return JSON.parse(t)[e]}saveData(e,t){const n=this.localStorage.getItem(this.username);if(!n)throw new Error(`Cannot set data for namespace: ${e}, because the user data is missing`);const r=JSON.parse(n);r[e]=t,this.localStorage.setItem(this.username,JSON.stringify(r))}}const sN=hA(aA("getCurrent"),aA("list"),aA("select"),aA("operationCheck")),oN=cA({displayName:mA,name:mA}),aN=cA({theme:oN}),cN=cA({themes:lA(oN)}),lN=cA({name:mA}),uN={name:"light",displayName:"Day"},hN={name:"dark",displayName:"Night"};class dN{glueController;localStore;started=!1;themesStream;operations={getCurrent:{name:"getCurrent",resultDecoder:aN,execute:this.handleGetCurrent.bind(this)},list:{name:"list",resultDecoder:cN,execute:this.handleList.bind(this)},select:{name:"select",dataDecoder:lN,execute:this.handleSelect.bind(this)},operationCheck:{name:"operationCheck",dataDecoder:EA,resultDecoder:AA,execute:this.handleOperationCheck.bind(this)}};constructor(e,t){this.glueController=e,this.localStore=t}get logger(){return Ym.get("themes.controller")}async start(e){this.started=!0,this.localStore.saveThemeIfMissing({theme:uN,selected:!1,isUserSelected:!1}),this.localStore.saveThemeIfMissing({theme:hN,selected:!1,isUserSelected:!1}),this.themesStream=await this.glueController.createSystemStream("T42.Core.Plus.Themes.Stream");if(this.localStore.getAllThemes().some((e=>e.isUserSelected)))return;const t="os"===e.themes?.defaultTheme?this.getOsTheme():"light"===e.themes?.defaultTheme?"light":"dark";this.localStore.markThemeSelected(t,!1);const n=this.localStore.getAllThemes().find((e=>e.selected))?.theme;this.themesStream.push({theme:n})}handlePlatformShutdown(){this.started=!1,this.themesStream.close()}async handleControl(e){if(!this.started)throw new Error("Cannot handle this themes control message, because the controller has not been started");const t=e.data,n=e.commandId,r=sN.run(e.operation);if(!r.ok)throw new Error(`This themes request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(r.error)}`);const i=r.result,s=this.operations[i].dataDecoder?.run(t);if(s&&!s.ok)throw new Error(`Themes request for ${i} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(s.error)}`);this.logger?.debug(`[${n}] ${i} command is valid with data: ${JSON.stringify(t)}`);const o=await this.operations[i].execute(t,n),a=this.operations[i].resultDecoder?.run(o);if(a&&!a.ok)throw new Error(`Themes request for ${i} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(a.error)}`);return this.logger?.trace(`[${n}] ${i} command was executed successfully`),o}handleClientUnloaded(){}async handleGetCurrent(e,t){this.logger?.trace(`[${t}] handling a getCurrent message`);const n=this.localStore.getAllThemes().find((e=>e.selected));if(!n)throw new Error("No selected theme found!");return{theme:n.theme}}async handleList(e,t){this.logger?.trace(`[${t}] handling a list message`);return{themes:this.localStore.getAllThemes().map((e=>e.theme))}}async handleSelect(e,t){this.logger?.trace(`[${t}] handling a select message`),this.localStore.markThemeSelected(e.name,!0);const n=this.localStore.getAllThemes().find((e=>e.selected))?.theme;if(!n)throw new Error("No selected theme found!");this.themesStream.push({theme:n})}async handleOperationCheck(e){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}getOsTheme(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}}const pN=hA(aA("operationCheck"));class gN{identity;session;buildClient;started=!1;name="Glue42 Server Client";config;unloadCallback;client;operations={operationCheck:{name:"operationCheck",dataDecoder:EA,resultDecoder:AA,execute:this.handleOperationCheck.bind(this)}};constructor(e,t,n){this.identity=e,this.session=t,this.buildClient=n,this.unloadCallback=this.handleUnload.bind(this),window.addEventListener("beforeunload",this.unloadCallback)}get logger(){return Ym.get("manager.controller")}async callManager(e,t){return OT(e,this.config?.responseTimeoutMS??1e4,t)}get isStarted(){return this.started}get isCritical(){return this.config?.critical??!0}handlePlatformShutdown(){this.started=!1,window.removeEventListener("beforeunload",this.unloadCallback),this.handleUnload()}async configurePostStart(){if(!this.config)return;const e=this.config.auth.username??this.config.auth.basic?.username;if(!e)throw new Error("Cannot connect to the Glue42 Server, because no username was provided. Please provide a username in auth.username or auth.basic.username");const t={baseUrl:this.config.url,auth:this.config.auth,headers:this.config.headers};this.client=this.buildClient(t),this.logger?.trace("The client API is ready.");const n=await this.identity.getMachineInfo(e),r=this.identity.getGlueInfo();this.logger?.trace(`Opening a session for machine: ${JSON.stringify(n)} and glue: ${JSON.stringify(r)}`),await this.session.openSession(this.client,n,r,this.config),this.started=!0,this.logger?.info(`Module ${this.name} started`)}async start(e){e.manager&&(this.config=e.manager,this.logger?.info("Starting the Manager controller."))}async handleControl(e){if(!this.started)throw new Error("Cannot handle this manager control message, because the controller has not been started");const t=e.data,n=e.commandId,r=pN.run(e.operation);if(!r.ok)throw new Error(`This manager request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(r.error)}`);const i=r.result,s=this.operations[i].dataDecoder?.run(t);if(s&&!s.ok)throw new Error(`Manager request for ${i} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(s.error)}`);this.logger?.debug(`[${n}] ${i} command is valid with data: ${JSON.stringify(t)}`);const o=await this.operations[i].execute(t,n),a=this.operations[i].resultDecoder?.run(o);if(a&&!a.ok)throw new Error(`Manager request for ${i} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(a.error)}`);return this.logger?.trace(`[${n}] ${i} command was executed successfully`),o}async getDefaultGlobal(e){this.logger?.trace(`[${e}] handling Get Default Global request`);const t=`Cannot get default global layout from Manager because of timeout (${this.config?.responseTimeoutMS} ms)`,n=await this.callManager((async()=>{const t=await this.client.getDefaultLayout();return this.logger?.trace(`[${e}] request completed, default global layout with name ${n?.name} retrieved from Manager`),t}),t);return n}async setDefaultGlobal(e,t){this.logger?.trace(`[${t}] handling Set Default Global request for name: ${e}`);const n=`Cannot set default global layout in Manager because of timeout (${this.config?.responseTimeoutMS} ms)`,r=await this.getLayoutId(e);r?await this.callManager((async()=>{await this.client.setDefaultLayout(r),this.logger?.trace(`[${t}] request completed, global layout with name ${e} set as default`)}),n):this.logger?.trace(`[${t}] layout with name ${e} could not be set as default because it does not exist in Manager`)}async clearDefaultGlobal(e){this.logger?.trace(`[${e}] handling Clear Default Global request`);const t=`Cannot clear default global layout in Manager because of timeout (${this.config?.responseTimeoutMS} ms)`;await this.callManager((async()=>{await this.client.setDefaultLayout(),this.logger?.trace(`[${e}] request completed, default global layout cleared`)}),t)}async saveLayout(e,t){const n={type:e.type,name:e.name,definition:JSON.stringify(e),default:t?.default??!1},r=`Cannot save layout with name ${e.name} to Manager because of timeout (${this.config?.responseTimeoutMS} ms)`;await this.callManager((async()=>{await this.client.saveLayout(n)}),r),this.logger?.trace(`Layout with name ${e.name} saved to manager`)}async getPrefs(e,t){this.logger?.trace(`[${t}] handling Get Prefs request`);const n=`Cannot get prefs for app ${e} from Manager because of timeout (${this.config?.responseTimeoutMS} ms)`;return await this.callManager((async()=>{const n=(await this.client.getAllPrefs()).find((t=>t.app===e));return this.logger?.trace(`[${t}] request completed, prefs for app ${e} retrieved from Manager`),n?this.transformPrefs(n):void 0}),n)}async getAllPrefs(e){this.logger?.trace(`[${e}] handling Get All Prefs request`);const t=`Cannot get all prefs from Manager because of timeout (${this.config?.responseTimeoutMS} ms)`;return await this.callManager((async()=>{const t=await this.client.getAllPrefs();return this.logger?.trace(`[${e}] request completed, all prefs retrieved from Manager`),t.map(this.transformPrefs)}),t)}async setPrefs(e,t){this.logger?.trace(`[${t}] handling Set Prefs request`);const n=`Cannot set prefs for app ${e.app} in Manager because of timeout (${this.config?.responseTimeoutMS} ms)`;await this.callManager((async()=>{await this.client.setPrefs({app:e.app,data:e.data,merge:!1}),this.logger?.trace(`[${t}] request completed, prefs for app ${e.app} set in Manager`)}),n)}async clearAllPrefs(e,t){this.logger?.trace(`[${t}] handling Clear All Prefs request`),await Promise.all(e.map((e=>this.setPrefs({app:e,data:{}},t)))),this.logger?.trace(`[${t}] request completed, all prefs cleared`)}async handleLayoutEvent(e){"layoutRemoved"!==e.operation?"layoutRenamed"!==e.operation?await this.handleLayoutAdded(e.layout):await this.handleLayoutRenamed(e.oldName,e.layout.name):await this.handleLayoutRemoved(e.layout.name)}async getLayoutId(e){const t=`Cannot get layout id from Manager because of timeout (${this.config?.responseTimeoutMS} ms)`;return this.callManager((async()=>(await this.client.getLayouts()).find((t=>t.name===e))?.id),t)}async handleOperationCheck(e){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}async handleLayoutRemoved(e){const t=await this.getLayoutId(e);t?(await this.client.deleteUserLayout(t).catch((e=>this.logger?.warn(GI(e)))),this.logger?.trace(`Deleted layout ${e}`)):this.logger?.trace(`Layout with name ${e} could not be removed because it does not exist in Manager.`)}async handleLayoutAdded(e){try{await this.saveLayout(e)}catch(e){this.logger?.warn(GI(e))}}async handleLayoutRenamed(e,t){const n=await this.getLayoutId(e);if(!n)return void this.logger?.trace(`Layout with name ${e} could not be renamed because it does not exist in Manager.`);const r=`Cannot rename layout in Manager because of timeout (${this.config?.responseTimeoutMS} ms)`;await this.callManager((async()=>{await this.client.renameLayout(n,t),this.logger?.trace(`Request completed, layout named ${e} has been renamed to ${t}.`)}),r).catch((e=>this.logger?.warn(GI(e))))}handleUnload(){this.client&&this.client.unload()}transformPrefs({app:e,data:t,lastUpdate:n}){return{app:e,data:t,lastUpdate:n}}}class fN{uaParser;glueController;pluginsController;workspacesFrameUrl;constructor(e,t,n,r){this.uaParser=e,this.glueController=t,this.pluginsController=n,this.workspacesFrameUrl=r}get logger(){return Ym.get("manager.identity")}async getMachineInfo(e){const t=this.uaParser.getResult();return{user:e,name:"",os:{name:t.os.name||"",version:t.os.version||"",arch:t.cpu.architecture||""},browser:{name:t.browser.name,version:t.browser.version,engine:t.engine.name},mobileDevice:"mobile"===t.device?.type?{vendor:t.device.vendor,model:t.device.model}:void 0,displays:await this.getDisplays()}}getGlueInfo(){return{version:"",build:"",region:"",env:"",core:{web:{version:this.glueController.clientGlue.version},platform:{version:this.glueController.platformVersion,plugins:this.pluginsController.registeredPlugins},plus:{version:NT}},workspaces:this.glueController.isWorkspacesEnabled?{version:this.glueController.clientGlue.workspaces?.version,frameUrl:this.workspacesFrameUrl}:void 0}}async getDisplays(){const{state:e}=await oO(this.logger);if("granted"!==e)return[];return(await window.getScreenDetails()).screens.map((e=>({bounds:{x:e.left,y:e.top,width:e.width,height:e.height},workingArea:{x:e.availLeft,y:e.availTop,width:e.availWidth,height:e.availHeight},dpi:e.devicePixelRatio,isPrimary:e.isPrimary})))}}class mN{glueController;layoutsController;token;client;lastApps;lastLayouts;sessionInitiated=!1;serverConfig;constructor(e,t){this.glueController=e,this.layoutsController=t}get logger(){return Ym.get("manager.session")}async openSession(e,t,n,r){if(this.sessionInitiated)throw new Error("A server session has already been initiated");this.serverConfig=r,this.client=e,this.sessionInitiated=!0;const i=await this.client.openSession(t,n);this.logger?.trace("The client session has been opened successfully"),this.token=i.token,await this.updateApplications(i.data?.applications),await this.updateLayouts(i.data?.layouts),this.refreshData().catch((e=>{this.logger?.warn(`Error while fetching server snapshot: ${JSON.stringify(e)}`)})),this.refreshToken().catch((e=>{this.logger?.warn(`Error while refreshing the server token: ${JSON.stringify(e)}`)}))}async closeSession(){this.sessionInitiated=!1,await this.client.closeSession()}async refreshData(){if(this.sessionInitiated){await this.waitInterval(this.serverConfig?.fetchIntervalMS||6e4);try{this.logger?.trace("Sending a fresh snapshot request");const e=await this.client.refreshData({applications:{include:!0,latestDataInfo:this.lastApps?.info},layouts:{include:!0,latestDataInfo:this.lastLayouts?.info},commands:{include:!1}});this.logger?.trace("Got a snapshot response, processing the applications and layouts"),await this.updateApplications(e.applications),await this.updateLayouts(e.layouts)}catch(e){const t="string"==typeof e?e:JSON.stringify(e.message);this.logger?.warn(`An error occurred while refreshing the server snapshot: ${t}`)}finally{this.refreshData()}}}async refreshToken(){if(this.sessionInitiated){await this.waitInterval(this.serverConfig?.tokenRefreshIntervalMS||36e5);try{this.logger?.trace("Sending a fresh token refresh request");const e=await this.client.refreshToken();this.token=e,this.logger?.trace("Server token refreshed successfully")}catch(e){const t="string"==typeof e?e:JSON.stringify(e.message);this.logger?.warn(`An error occurred while refreshing the server token: ${t}`)}finally{this.refreshToken()}}}waitInterval(e){return new Promise((t=>setTimeout(t,e)))}async updateApplications(e){e&&e.hasChanges&&(this.lastApps=e,await this.glueController.processServerApplicationsData(e))}async updateLayouts(e){e&&e.hasChanges&&(this.lastLayouts=e,await this.processServerLayoutsData(e))}async processServerLayoutsData(e){if(!e||!e.data)return;const t=e.data.map((e=>"string"==typeof e.definition?JSON.parse(e.definition):e.definition));try{const e=this.sanitizeLayouts(t),n=t.filter((t=>e.valid.some((e=>e.name===t.name))));await this.layoutsController.handleImport({layouts:n,mode:"merge",skipManagerRequest:!0},"ManagerOperation")}catch(e){const t=GI(e);this.logger?.warn(`An error importing layouts: ${t}`)}}sanitizeLayouts(e){return e.reduce(((e,t)=>{const n=BA.run(t);return n.ok?e.valid.push(t):this.logger?.warn(`A layout with name: ${t.name} was not imported, because of error: ${JSON.stringify(n.error)}`),e}),{valid:[]})}}const yN=hA(aA("operationCheck"),aA("clear"),aA("clearAll"),aA("get"),aA("getAll"),aA("set"),aA("update"),aA("prefsHello")),wN=cA({app:mA,data:cA(),lastUpdate:uA(mA)}),vN=cA({app:mA}),bN=cA({prefs:wN}),SN=cA({all:lA(wN)}),CN=cA({app:mA,data:cA()}),xN=cA({platform:cA({app:mA})});class IN{glueController;idbController;managerController;operations={operationCheck:{name:"operationCheck",dataDecoder:EA,resultDecoder:AA,execute:this.handleOperationCheck.bind(this)},clear:{name:"clear",execute:this.clear.bind(this),dataDecoder:vN},clearAll:{name:"clearAll",execute:this.clearAll.bind(this)},get:{name:"get",execute:this.get.bind(this),dataDecoder:vN,resultDecoder:bN},getAll:{name:"getAll",execute:this.getAll.bind(this),resultDecoder:SN},set:{name:"set",execute:this.set.bind(this),dataDecoder:CN},update:{name:"update",execute:this.update.bind(this),dataDecoder:CN},prefsHello:{name:"prefsHello",execute:this.prefsHello.bind(this),resultDecoder:xN}};started=!1;platformAppName=`Platform-${window.location.origin}`;config;constructor(e,t,n){this.glueController=e,this.idbController=t,this.managerController=n}get logger(){return Ym.get("prefs.controller")}get shouldUseManager(){return this.managerController.isStarted&&"local"!==this.config?.store?.type}handlePlatformShutdown(){this.started=!1}async start(e){this.logger?.trace("initializing prefs"),this.started=!0,this.config=e.applicationPreferences,"manager"!==this.config?.store?.type||e.manager||this.logger?.warn("Prefs store type is set to 'manager', but ioManager is not started"),this.logger?.trace("initialization is completed")}async handleControl(e){if(!this.started)throw new Error("Cannot handle this prefs control message, because the controller has not been started");const t=e.data,n=e.commandId,r=yN.run(e.operation);if(!r.ok)throw new Error(`This prefs request cannot be completed, because the operation name did not pass validation: ${JSON.stringify(r.error)}`);const i=r.result,s=this.operations[i].dataDecoder?.run(t);if(s&&!s.ok)throw new Error(`Prefs request for ${i} rejected, because the provided arguments did not pass the validation: ${JSON.stringify(s.error)}`);this.logger?.debug(`[${n}] ${i} command is valid with data: ${JSON.stringify(t)}`);const o=await this.operations[i].execute(t,n),a=this.operations[i].resultDecoder?.run(o);if(a&&!a.ok)throw new Error(`Prefs request for ${i} could not be completed, because the operation result did not pass the validation: ${JSON.stringify(a.error)}`);return this.logger?.trace(`[${n}] ${i} command was executed successfully`),o}async handleOperationCheck(e){return{isSupported:Object.keys(this.operations).some((t=>t.toLowerCase()===e.operation.toLowerCase()))}}async clear({app:e},t){this.trace(`[${t}] handling clear command with app: ${e}`,t);const n=this.validateApp(e),r=await this.idbController.setPrefs({app:n,data:{},lastUpdate:this.getLastUpdateTimestamp()});await this.callManagerIfApplicable((()=>this.managerController.setPrefs(r,t))),this.emitStreamData("prefsChanged",{prefs:r})}async clearAll(e,t){this.trace(`[${t}] handling clearAll command`,t);const n=await this.idbController.clearAllPrefs(this.getLastUpdateTimestamp());await this.callManagerIfApplicable((()=>this.managerController.clearAllPrefs(n.map((({app:e})=>e)),t))),n.forEach((e=>this.emitStreamData("prefsChanged",{prefs:e})))}async get({app:e},t){this.trace(`[${t}] handling get command with app: ${e}`,t);const n={app:e,data:{}};if(!this.shouldUseManager){return{prefs:await this.idbController.getPrefs(e)||n}}let r;try{r=await this.managerController.getPrefs(e,t)}catch(t){this.logger?.warn(GI(t));return{prefs:await this.idbController.getPrefs(e)||n}}return r?(await this.idbController.setPrefs(r),{prefs:r}):(await this.idbController.deletePrefs(e),{prefs:n})}async getAll(e,t){if(this.trace(`[${t}] handling getAll command`,t),!this.shouldUseManager){return{all:await this.idbController.getAllPrefs()}}let n;try{n=await this.managerController.getAllPrefs(t)}catch(e){this.logger?.warn(GI(e));return{all:await this.idbController.getAllPrefs()}}return await this.idbController.replaceAllPrefs(n),{all:n}}async set({app:e,data:t},n){this.trace(`[${n}] handling set command with app: ${e} and data: ${JSON.stringify(t)}`,n);const r=this.validateApp(e),i=await this.idbController.setPrefs({app:r,data:t,lastUpdate:this.getLastUpdateTimestamp()});await this.callManagerIfApplicable((()=>this.managerController.setPrefs(i,n))),this.emitStreamData("prefsChanged",{prefs:i})}async update({app:e,data:t},n){this.trace(`[${n}] handling update command with app: ${e} and data: ${JSON.stringify(t)}`,n);const r=this.validateApp(e),i=await this.idbController.updatePrefs({app:r,data:t,lastUpdate:this.getLastUpdateTimestamp()});await this.callManagerIfApplicable((()=>this.managerController.setPrefs(i,n))),this.emitStreamData("prefsChanged",{prefs:i})}async prefsHello(){return{platform:{app:this.platformAppName}}}getLastUpdateTimestamp(){return(new Date).toISOString()}async callManagerIfApplicable(e){if(this.shouldUseManager)try{await e()}catch(e){this.logger?.warn(GI(e))}}validateApp(e){const t=this.glueController.getAllApplicationNames();if(!(e===this.platformAppName||t.includes(e)))throw new Error(`The provided app name "${e}" is not valid.`);return e}trace(e,t){t&&this.logger?.trace(e)}emitStreamData(e,t){this.logger?.trace(`sending notification of event: ${e} with data: ${JSON.stringify(t)}`),this.glueController.pushSystemMessage("prefs",e,t)}}class EN{config;_gatewayInstance;_platformInstance;_mainController;_glueController;_portsBridge;_windowsController;_applicationsController;_appDirectory;_remoteWatcher;_layoutsController;_workspacesController;_hibernationWatcher;_intentsController;_intentsResolverController;_channelsController;_notificationsController;_extensionController;_sessionController;_localStorageController;_stateChecker;_framesController;_systemController;_idbController;_serviceWorkerController;_preferredConnectionController;_transactionsController;_interceptionController;_pluginsController;_domainsController;_licenseController;_layoutsBuilder;_layoutsRestorer;_layoutsValidator;_layoutsResetter;_searchController;_appsSearchRepo;_layoutsSearchRepo;_workspacesSearchRepo;_themesController;_managerController;_managerIdentity;_managerSession;_prefsController;constructor(e){this.config=e}get gateway(){return this._gatewayInstance||(this._gatewayInstance=new Xm),this._gatewayInstance}get platform(){return this._platformInstance||(this._platformInstance=new W_(this.controller,this.sessionController,this.localStorageController,this.config)),this._platformInstance}get domainsController(){return this._domainsController||(this._domainsController=new VR(this.systemController,this.windowsController,this.applicationsController,this.layoutsController,this.workspacesController,this.intentsController,this.channelsController,this.notificationsController,this.extensionController,this.searchController,this.themesController,this.managerController,this.prefsController)),this._domainsController}get controller(){return this._mainController||(this._mainController=new JI(this.domainsController,this.glueController,this.portsBridge,this.stateController,this.serviceWorkerController,this.preferredConnectionController,this.interceptionController,this.pluginsController,this.sessionController,this.licenseController,this.localStorageController,this.idbController)),this._mainController}get glueController(){return this._glueController||(this._glueController=new jT(this.portsBridge,this.sessionController)),this._glueController}get systemController(){return this._systemController||(this._systemController=new gR(this.sessionController,this.workspacesController)),this._systemController}get searchController(){return this._searchController||(this._searchController=new eN(this.glueController,this.appsSearchRepo,this.layoutsSearchRepo,this.workspacesSearchRepo)),this._searchController}get themesController(){return this._themesController||(this._themesController=new dN(this.glueController,this.localStorageController)),this._themesController}get sessionController(){return this._sessionController||(this._sessionController=new AD),this._sessionController}get localStorageController(){return this._localStorageController||(this._localStorageController=new iN),this._localStorageController}get stateController(){return this._stateChecker||(this._stateChecker=new kD(this.sessionController)),this._stateChecker}get windowsController(){return this._windowsController||(this._windowsController=new ED(this.glueController,this.sessionController,this.stateController,this)),this._windowsController}get applicationsController(){return this._applicationsController||(this._applicationsController=new qD(this.glueController,this.sessionController,this.stateController,this.appDirectory,this)),this._applicationsController}get appDirectory(){return this._appDirectory||(this._appDirectory=new fR(this.sessionController,this.remoteWatcher)),this._appDirectory}get remoteWatcher(){return this._remoteWatcher||(this._remoteWatcher=new yR),this._remoteWatcher}get licenseController(){return this._licenseController||(this._licenseController=new KR),this._licenseController}get layoutsController(){return this._layoutsController||(this._layoutsController=new aO(this.glueController,this.idbController,this.sessionController,this.localStorageController,this.layoutsBuilder,this.layoutsRestorer,this.getManager.bind(this))),this._layoutsController}get workspacesController(){return this._workspacesController||(this._workspacesController=new kO(this.framesController,this.glueController,this.stateController,this.hibernationWatcher,this)),this._workspacesController}get hibernationWatcher(){return this._hibernationWatcher||(this._hibernationWatcher=new pR(this.sessionController,this.createSequelizer())),this._hibernationWatcher}get intentsController(){return this._intentsController||(this._intentsController=new JO(this.glueController,this.intentsResolverHelper,this.appDirectory,this)),this._intentsController}get intentsResolverHelper(){return this._intentsResolverController||(this._intentsResolverController=new JR(this.glueController,this.workspacesController,this.windowsController)),this._intentsResolverController}get channelsController(){return this._channelsController||(this._channelsController=new hR(this.glueController)),this._channelsController}get extensionController(){return this._extensionController||(this._extensionController=new BR(this.sessionController)),this._extensionController}get layoutsBuilder(){return this._layoutsBuilder||(this._layoutsBuilder=new zR(this.glueController,this.sessionController,this.windowsController,this.workspacesController)),this._layoutsBuilder}get layoutsRestorer(){return this._layoutsRestorer||(this._layoutsRestorer=new QR(this.glueController,this.layoutsValidator,this.layoutsResetter,this.workspacesController)),this._layoutsRestorer}get layoutsValidator(){return this._layoutsValidator||(this._layoutsValidator=new XR(this.glueController,this.workspacesController)),this._layoutsValidator}get layoutsResetter(){return this._layoutsResetter||(this._layoutsResetter=new YR(this.glueController,this.workspacesController)),this._layoutsResetter}get notificationsController(){return this._notificationsController||(this._notificationsController=new jR(this.glueController,this.serviceWorkerController,this.sessionController,this.localStorageController)),this._notificationsController}get framesController(){return this._framesController||(this._framesController=new dR(this.sessionController,this.glueController,this)),this._framesController}get idbController(){return this._idbController||(this._idbController=new EO),this._idbController}get portsBridge(){return this._portsBridge||(this._portsBridge=new qT(this.gateway,this.sessionController,this)),this._portsBridge}get serviceWorkerController(){return this._serviceWorkerController||(this._serviceWorkerController=new wR(this.idbController)),this._serviceWorkerController}get transactionsController(){return this._transactionsController||(this._transactionsController=new HR),this._transactionsController}get interceptionController(){return this._interceptionController||(this._interceptionController=new UR),this._interceptionController}get pluginsController(){return this._pluginsController||(this._pluginsController=new GR(this.interceptionController,this.glueController)),this._pluginsController}get appsSearchRepo(){return this._appsSearchRepo||(this._appsSearchRepo=new tN(this.glueController)),this._appsSearchRepo}get managerController(){return this._managerController||(this._managerController=new gN(this.managerIdentity,this.managerSession,this.buildClient.bind(this))),this._managerController}get managerIdentity(){return this._managerIdentity||(this._managerIdentity=new fN(new _c.UAParser,this.glueController,this.pluginsController,this.config?.workspaces?.src)),this._managerIdentity}get managerSession(){return this._managerSession||(this._managerSession=new mN(this.glueController,this.layoutsController)),this._managerSession}get layoutsSearchRepo(){return this._layoutsSearchRepo||(this._layoutsSearchRepo=new nN(this.glueController)),this._layoutsSearchRepo}get workspacesSearchRepo(){return this._workspacesSearchRepo||(this._workspacesSearchRepo=new rN(this.glueController)),this._workspacesSearchRepo}get preferredConnectionController(){return this._preferredConnectionController||(this._preferredConnectionController=new WR(this.glueController,this.portsBridge,this.createSequelizer())),this._preferredConnectionController}get prefsController(){return this._prefsController||(this._prefsController=new IN(this.glueController,this.idbController,this.managerController)),this._prefsController}createMessageChannel(){return new MessageChannel}createSequelizer(e){return new LR(e)}buildClient(e){return new Js.ClientAPI(e)}getManager(){return this.managerController}}const AN=async e=>{if(window.glue42gd||window.iodesktop)return(async e=>{const t=e?.browserFactory?await(e?.browserFactory(e?.browser)):await ms(e?.browser);return e?.applications?.local?.length&&await t.appManager.inMemory.import(e.applications.local,"merge"),e?.layouts?.local?.length&&await t.layouts.import(e.layouts.local,"merge"),{io:t}})(e);const t=!e.connection?.alwaysPlatform&&await(e=>{if(!window.opener)return Promise.resolve(!1);if(window.name.includes("g42-"))return Promise.resolve(!0);const t=e?.allowedClientFallbackOrigin||"*";return new Promise((e=>{const n=t=>{const r=t.data?.glue42core;r&&r.type===xs.name&&(window.removeEventListener("message",n),e(!0))};window.addEventListener("message",n);const r={glue42core:{type:Cs.name}};window.opener.postMessage(r,t),setTimeout((()=>e(!1)),1e3)}))})(e?.connection),n=-1!==window.name.indexOf("#wsp");if(e?.clientOnly||t||n){return{io:e?.browserFactory?await(e?.browserFactory(e?.browser)):await ms(e?.browser)}}const r=new EN(e);await r.platform.ready();return{io:r.platform.getClientGlue(),platform:r?.platform.getPlatformApi()}};"undefined"!=typeof window&&(window.IOBrowserPlatform=AN);const kN=window.glue42gd||window.glue42core,_N=window.iodesktop||window.iobrowser;kN||_N||(window.iobrowser={webStarted:!1});export{AN as default}; //# sourceMappingURL=browser.platform.es.js.map diff --git a/browser-platform-vanilla-js/public/libs/browser.platform.es.js.map b/browser-platform-vanilla-js/public/libs/browser.platform.es.js.map index 4527b29..1306783 100644 --- a/browser-platform-vanilla-js/public/libs/browser.platform.es.js.map +++ b/browser-platform-vanilla-js/public/libs/browser.platform.es.js.map @@ -1 +1 @@ -{"version":3,"file":"browser.platform.es.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../browser/dist/browser.es.js","../src/common/constants.ts","../src/common/defaultConfig.ts","../src/fallbacks/browser.ts","../src/fallbacks/dekstop.ts","../node_modules/callback-registry/lib/index.js","../node_modules/jwt-decode/build/jwt-decode.esm.js","../node_modules/form-data/lib/browser.js","../node_modules/axios/dist/browser/axios.cjs","../node_modules/@glue42/server-api/dist/client-api/base.js","../node_modules/@glue42/server-api/dist/client-api/sub/systemConfig.js","../node_modules/@glue42/server-api/dist/client-api/promise.js","../node_modules/@glue42/server-api/dist/client-api/client.js","../node_modules/@glue42/server-api/dist/client.js","../node_modules/ua-parser-js/src/ua-parser.js","../node_modules/@glue42/gateway-web/web/gateway-web.js","../src/connection/gateway.ts","../src/shared/logger.ts","../node_modules/shortid/lib/random/random-from-seed.js","../node_modules/shortid/lib/alphabet.js","../node_modules/shortid/lib/random/random-byte-browser.js","../node_modules/shortid/node_modules/nanoid/format.browser.js","../node_modules/shortid/lib/generate.js","../node_modules/shortid/lib/build.js","../node_modules/shortid/lib/is-valid.js","../node_modules/shortid/lib/index.js","../node_modules/shortid/index.js","../node_modules/object-keys/isArguments.js","../node_modules/object-keys/implementation.js","../node_modules/object-keys/index.js","../node_modules/has-symbols/shams.js","../node_modules/has-symbols/index.js","../node_modules/has-proto/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/has/src/index.js","../node_modules/get-intrinsic/index.js","../node_modules/has-property-descriptors/index.js","../node_modules/define-properties/index.js","../node_modules/call-bind/index.js","../node_modules/call-bind/callBound.js","../node_modules/object.assign/implementation.js","../node_modules/object.assign/polyfill.js","../node_modules/object.assign/shim.js","../node_modules/object.assign/index.js","../node_modules/functions-have-names/index.js","../node_modules/regexp.prototype.flags/implementation.js","../node_modules/regexp.prototype.flags/polyfill.js","../node_modules/regexp.prototype.flags/shim.js","../node_modules/regexp.prototype.flags/index.js","../node_modules/has-tostringtag/shams.js","../node_modules/is-arguments/index.js","../node_modules/object-inspect/index.js","../node_modules/side-channel/index.js","../node_modules/internal-slot/index.js","../node_modules/stop-iteration-iterator/index.js","../node_modules/isarray/index.js","../node_modules/is-string/index.js","../node_modules/is-map/index.js","../node_modules/is-set/index.js","../node_modules/es-get-iterator/index.js","../node_modules/object-is/implementation.js","../node_modules/object-is/polyfill.js","../node_modules/object-is/shim.js","../node_modules/object-is/index.js","../node_modules/is-callable/index.js","../node_modules/for-each/index.js","../node_modules/available-typed-arrays/index.js","../node_modules/gopd/index.js","../node_modules/which-typed-array/index.js","../node_modules/is-typed-array/index.js","../node_modules/is-array-buffer/index.js","../node_modules/is-date-object/index.js","../node_modules/is-regex/index.js","../node_modules/is-shared-array-buffer/index.js","../node_modules/is-number-object/index.js","../node_modules/is-boolean-object/index.js","../node_modules/is-symbol/index.js","../node_modules/has-bigints/index.js","../node_modules/is-bigint/index.js","../node_modules/which-boxed-primitive/index.js","../node_modules/is-weakmap/index.js","../node_modules/is-weakset/index.js","../node_modules/which-collection/index.js","../node_modules/array-buffer-byte-length/index.js","../node_modules/deep-equal/index.js","../node_modules/fast-deep-equal/index.js","../src/shared/utils.ts","../src/controllers/main.ts","../../utils/dist/utils.es.js","../node_modules/decoder-validate/dist/index.es5.js","../src/shared/decoders.ts","../node_modules/deepmerge/dist/cjs.js","../../search-api/dist/search-api.es.js","../node_modules/nanoid/index.browser.js","../src/platform.ts","../../core/dist/core.es.js","../src/shared/promisePlus.ts","../src/controllers/glue.ts","../src/connection/portsBridge.ts","../src/libs/windows/decoders.ts","../src/libs/workspaces/decoders.ts","../src/libs/windows/controller.ts","../src/storage/session.ts","../src/controllers/state.ts","../src/libs/applications/decoders.ts","../src/libs/applications/controller.ts","../src/libs/layouts/decoders.ts","../src/libs/layouts/constants.ts","../src/libs/layouts/controller.ts","../node_modules/idb/build/wrap-idb-value.js","../node_modules/idb/build/index.js","../src/storage/idb.ts","../src/libs/workspaces/defaultConfig.ts","../src/libs/workspaces/controller.ts","../src/libs/intents/decoders.ts","../src/libs/intents/constants.ts","../src/libs/intents/controller.ts","../src/libs/channels/decoders.ts","../src/libs/channels/controller.ts","../src/libs/workspaces/frames.ts","../src/libs/workspaces/hibernationWatcher.ts","../src/controllers/system.ts","../src/libs/applications/appStore/directory.ts","../src/shared/fetchTimeout.ts","../src/libs/applications/defaults.ts","../src/libs/applications/appStore/remoteWatcher.ts","../src/controllers/serviceWorker.ts","../src/libs/notifications/utils.ts","../src/libs/notifications/decoders.ts","../src/libs/notifications/controller.ts","../src/libs/extension/decoders.ts","../src/libs/extension/controller.ts","../src/shared/sequelizer.ts","../src/connection/preferred.ts","../src/controllers/transactions.ts","../src/controllers/interception.ts","../src/controllers/plugins.ts","../src/controllers/domains.ts","../src/libs/intents/resolverHelper.ts","../node_modules/jsrsasign/lib/jsrsasign.js","../src/controllers/license.ts","../src/libs/layouts/global/builder.ts","../src/libs/layouts/global/restorer.ts","../src/libs/layouts/global/validator.ts","../src/libs/layouts/global/resetter.ts","../src/libs/search/decoders.ts","../src/libs/search/controller.ts","../src/libs/search/repositories/applications.ts","../src/libs/search/repositories/layouts.ts","../src/libs/search/repositories/workspaces.ts","../src/storage/local.ts","../src/libs/themes/decoders.ts","../src/libs/themes/constants.ts","../src/libs/themes/controller.ts","../src/libs/manager/decoders.ts","../src/libs/manager/constants.ts","../src/libs/manager/controller.ts","../src/libs/manager/identity.ts","../src/libs/manager/defaults.ts","../src/libs/manager/session.ts","../src/libs/prefs/decoders.ts","../src/libs/prefs/controller.ts","../src/shared/ioc.ts","../src/factory.ts","../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest$2(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter$1(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nconst defaultConfig = {\r\n logger: \"info\",\r\n gateway: { webPlatform: {} },\r\n libraries: [],\r\n exposeAPI: true\r\n};\r\nconst parseConfig = (config) => {\r\n var _a, _b, _c;\r\n const isPlatformInternal = !!((_b = (_a = config === null || config === void 0 ? void 0 : config.gateway) === null || _a === void 0 ? void 0 : _a.webPlatform) === null || _b === void 0 ? void 0 : _b.port);\r\n const combined = Object.assign({}, defaultConfig, config, { isPlatformInternal });\r\n if (combined.systemLogger) {\r\n combined.logger = (_c = combined.systemLogger.level) !== null && _c !== void 0 ? _c : \"info\";\r\n }\r\n return combined;\r\n};\n\nconst checkSingleton = () => {\r\n const ioConnectBrowserNamespace = window.glue42core || window.iobrowser;\r\n if (ioConnectBrowserNamespace && ioConnectBrowserNamespace.webStarted) {\r\n throw new Error(\"IoConnect Browser has already been started for this application.\");\r\n }\r\n if (!ioConnectBrowserNamespace) {\r\n window.iobrowser = { webStarted: true };\r\n return;\r\n }\r\n ioConnectBrowserNamespace.webStarted = true;\r\n};\n\nconst enterprise = (config) => {\r\n var _a, _b, _c;\r\n const enterpriseConfig = {\r\n windows: true,\r\n layouts: \"full\",\r\n appManager: \"full\",\r\n channels: true,\r\n libraries: (_a = config === null || config === void 0 ? void 0 : config.libraries) !== null && _a !== void 0 ? _a : [],\r\n logger: (_c = (_b = config === null || config === void 0 ? void 0 : config.systemLogger) === null || _b === void 0 ? void 0 : _b.level) !== null && _c !== void 0 ? _c : \"warn\"\r\n };\r\n const injectedFactory = window.IODesktop || window.Glue;\r\n return injectedFactory(enterpriseConfig);\r\n};\n\n/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok$1 = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err$1 = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise$1 = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault$1 = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException$1 = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map$1 = function (f, r) {\r\n return r.ok === true ? ok$1(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2$1 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok$1(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError$1 = function (f, r) {\r\n return r.ok === true ? r : err$1(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen$1 = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign$2 = function() {\r\n __assign$2 = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign$2.apply(this, arguments);\r\n};\r\n\r\nfunction __rest$1(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual$1(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual$1(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual$1(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray$1 = function (json) { return Array.isArray(json); };\r\nvar isJsonObject$1 = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray$1(json);\r\n};\r\nvar typeString$1 = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot$1 = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString$1(got);\r\n};\r\nvar printPath$1 = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt$1 = function (newAt, _a) {\r\n var at = _a.at, rest = __rest$1(_a, [\"at\"]);\r\n return (__assign$2({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder$1 = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError$1(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise$1(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException$1(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map$1(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen$1(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok$1(json)\r\n : err$1({ message: expectedGot$1('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok$1(json)\r\n : err$1({ message: expectedGot$1('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok$1(json)\r\n : err$1({ message: expectedGot$1('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual$1(json, value)\r\n ? ok$1(value)\r\n : err$1({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject$1(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err$1({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err$1(prependAt$1(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok$1(obj);\r\n }\r\n else if (isJsonObject$1(json)) {\r\n return ok$1(json);\r\n }\r\n else {\r\n return err$1({ message: expectedGot$1('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray$1(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError$1(function (err$$1) { return prependAt$1(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2$1(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok$1([]));\r\n }\r\n else if (isJsonArray$1(json)) {\r\n return ok$1(json);\r\n }\r\n else {\r\n return err$1({ message: expectedGot$1('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray$1(json)) {\r\n if (json.length !== decoders.length) {\r\n return err$1({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err$1(prependAt$1(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok$1(result);\r\n }\r\n else {\r\n return err$1({ message: expectedGot$1(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2$1(Object.assign, acc, decoder.decode(json)); }, ok$1({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok$1(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok$1(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject$1(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err$1(prependAt$1(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok$1(obj);\r\n }\r\n else {\r\n return err$1({ message: expectedGot$1('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok$1(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err$1({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok$1(withDefault$1(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err$1({\r\n at: printPath$1(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject$1(jsonAtPath)) {\r\n return err$1({\r\n at: printPath$1(paths.slice(0, i + 1)),\r\n message: expectedGot$1('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray$1(jsonAtPath)) {\r\n return err$1({\r\n at: printPath$1(paths.slice(0, i + 1)),\r\n message: expectedGot$1('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError$1(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath$1(paths), message: 'path does not exist' }\r\n : prependAt$1(printPath$1(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok$1(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err$1({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string$1 = Decoder$1.string;\r\n/** See `Decoder.number` */\r\nvar number$1 = Decoder$1.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean$1 = Decoder$1.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson$1 = Decoder$1.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nDecoder$1.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant$1 = Decoder$1.constant;\r\n/** See `Decoder.object` */\r\nvar object$1 = Decoder$1.object;\r\n/** See `Decoder.array` */\r\nvar array$1 = Decoder$1.array;\r\n/** See `Decoder.tuple` */\r\nDecoder$1.tuple;\r\n/** See `Decoder.dict` */\r\nDecoder$1.dict;\r\n/** See `Decoder.optional` */\r\nvar optional$1 = Decoder$1.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf$1 = Decoder$1.oneOf;\r\n/** See `Decoder.union` */\r\nDecoder$1.union;\r\n/** See `Decoder.intersection` */\r\nDecoder$1.intersection;\r\n/** See `Decoder.withDefault` */\r\nDecoder$1.withDefault;\r\n/** See `Decoder.valueAt` */\r\nDecoder$1.valueAt;\r\n/** See `Decoder.succeed` */\r\nDecoder$1.succeed;\r\n/** See `Decoder.fail` */\r\nDecoder$1.fail;\r\n/** See `Decoder.lazy` */\r\nvar lazy = Decoder$1.lazy;\n\nconst connectBrowserAppProps = [\"name\", \"title\", \"version\", \"customProperties\", \"icon\", \"caption\", \"type\"];\nconst fdc3v2AppProps = [\"appId\", \"name\", \"type\", \"details\", \"version\", \"title\", \"tooltip\", \"lang\", \"description\", \"categories\", \"icons\", \"screenshots\", \"contactEmail\", \"moreInfo\", \"publisher\", \"customConfig\", \"hostManifests\", \"interop\", \"localizedVersions\"];\n\n/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign$1 = function() {\r\n __assign$1 = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign$1.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign$1({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nDecoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nDecoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nDecoder.union;\r\n/** See `Decoder.intersection` */\r\nDecoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nDecoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nDecoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nDecoder.succeed;\r\n/** See `Decoder.fail` */\r\nDecoder.fail;\r\n/** See `Decoder.lazy` */\r\nDecoder.lazy;\n\nconst nonEmptyStringDecoder$1 = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nconst nonNegativeNumberDecoder$1 = number().where((num) => num >= 0, \"Expected a non-negative number\");\n\nconst intentDefinitionDecoder$1 = object({\n name: nonEmptyStringDecoder$1,\n displayName: optional(string()),\n contexts: optional(array(string())),\n customConfig: optional(object())\n});\nconst v2TypeDecoder = oneOf(constant(\"web\"), constant(\"native\"), constant(\"citrix\"), constant(\"onlineNative\"), constant(\"other\"));\nconst v2DetailsDecoder = object({\n url: nonEmptyStringDecoder$1\n});\nconst v2IconDecoder = object({\n src: nonEmptyStringDecoder$1,\n size: optional(nonEmptyStringDecoder$1),\n type: optional(nonEmptyStringDecoder$1)\n});\nconst v2ScreenshotDecoder = object({\n src: nonEmptyStringDecoder$1,\n size: optional(nonEmptyStringDecoder$1),\n type: optional(nonEmptyStringDecoder$1),\n label: optional(nonEmptyStringDecoder$1)\n});\nconst v2ListensForIntentDecoder = object({\n contexts: array(nonEmptyStringDecoder$1),\n displayName: optional(nonEmptyStringDecoder$1),\n resultType: optional(nonEmptyStringDecoder$1),\n customConfig: optional(anyJson())\n});\nconst v2IntentsDecoder = object({\n listensFor: optional(dict(v2ListensForIntentDecoder)),\n raises: optional(dict(array(nonEmptyStringDecoder$1)))\n});\nconst v2UserChannelDecoder = object({\n broadcasts: optional(array(nonEmptyStringDecoder$1)),\n listensFor: optional(array(nonEmptyStringDecoder$1))\n});\nconst v2AppChannelDecoder = object({\n name: nonEmptyStringDecoder$1,\n description: optional(nonEmptyStringDecoder$1),\n broadcasts: optional(array(nonEmptyStringDecoder$1)),\n listensFor: optional(array(nonEmptyStringDecoder$1))\n});\nconst v2InteropDecoder = object({\n intents: optional(v2IntentsDecoder),\n userChannels: optional(v2UserChannelDecoder),\n appChannels: optional(array(v2AppChannelDecoder))\n});\nconst glue42ApplicationDetailsDecoder = object({\n url: nonEmptyStringDecoder$1,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder$1),\n height: optional(nonNegativeNumberDecoder$1)\n});\nconst glue42HostManifestsBrowserDecoder = object({\n name: optional(nonEmptyStringDecoder$1),\n type: optional(nonEmptyStringDecoder$1.where((s) => s === \"window\", \"Expected a value of window\")),\n title: optional(nonEmptyStringDecoder$1),\n version: optional(nonEmptyStringDecoder$1),\n customProperties: optional(anyJson()),\n icon: optional(string()),\n caption: optional(string()),\n details: optional(glue42ApplicationDetailsDecoder),\n intents: optional(array(intentDefinitionDecoder$1)),\n hidden: optional(boolean())\n});\nconst hostManifestsBrowserDecoder = oneOf(object({\n \"Glue42\": oneOf(glue42HostManifestsBrowserDecoder, anyJson())\n}), anyJson());\nconst v1DefinitionDecoder = object({\n name: nonEmptyStringDecoder$1,\n appId: nonEmptyStringDecoder$1,\n title: optional(nonEmptyStringDecoder$1),\n version: optional(nonEmptyStringDecoder$1),\n manifest: nonEmptyStringDecoder$1,\n manifestType: nonEmptyStringDecoder$1,\n tooltip: optional(nonEmptyStringDecoder$1),\n description: optional(nonEmptyStringDecoder$1),\n contactEmail: optional(nonEmptyStringDecoder$1),\n supportEmail: optional(nonEmptyStringDecoder$1),\n publisher: optional(nonEmptyStringDecoder$1),\n images: optional(array(object({ url: optional(nonEmptyStringDecoder$1) }))),\n icons: optional(array(object({ icon: optional(nonEmptyStringDecoder$1) }))),\n customConfig: anyJson(),\n intents: optional(array(intentDefinitionDecoder$1))\n});\nconst v2LocalizedDefinitionDecoder = object({\n appId: optional(nonEmptyStringDecoder$1),\n name: optional(nonEmptyStringDecoder$1),\n details: optional(v2DetailsDecoder),\n version: optional(nonEmptyStringDecoder$1),\n title: optional(nonEmptyStringDecoder$1),\n tooltip: optional(nonEmptyStringDecoder$1),\n lang: optional(nonEmptyStringDecoder$1),\n description: optional(nonEmptyStringDecoder$1),\n categories: optional(array(nonEmptyStringDecoder$1)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder$1),\n supportEmail: optional(nonEmptyStringDecoder$1),\n moreInfo: optional(nonEmptyStringDecoder$1),\n publisher: optional(nonEmptyStringDecoder$1),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder)\n});\nconst v2DefinitionDecoder = object({\n appId: nonEmptyStringDecoder$1,\n name: nonEmptyStringDecoder$1,\n type: v2TypeDecoder,\n details: v2DetailsDecoder,\n version: optional(nonEmptyStringDecoder$1),\n title: optional(nonEmptyStringDecoder$1),\n tooltip: optional(nonEmptyStringDecoder$1),\n lang: optional(nonEmptyStringDecoder$1),\n description: optional(nonEmptyStringDecoder$1),\n categories: optional(array(nonEmptyStringDecoder$1)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder$1),\n supportEmail: optional(nonEmptyStringDecoder$1),\n moreInfo: optional(nonEmptyStringDecoder$1),\n publisher: optional(nonEmptyStringDecoder$1),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder),\n localizedVersions: optional(dict(v2LocalizedDefinitionDecoder))\n});\nconst allDefinitionsDecoder = oneOf(v1DefinitionDecoder, v2DefinitionDecoder);\n\nconst parseDecoderErrorToStringMessage = (error) => {\n return `${error.kind} at ${error.at}: ${JSON.stringify(error.input)}. Reason - ${error.message}`;\n};\n\nclass FDC3Service {\n constructor() {\n this.fdc3ToDesktopDefinitionType = {\n web: \"window\",\n native: \"exe\",\n citrix: \"citrix\",\n onlineNative: \"clickonce\",\n other: \"window\"\n };\n }\n toApi() {\n return {\n isFdc3Definition: this.isFdc3Definition.bind(this),\n parseToBrowserBaseAppData: this.parseToBrowserBaseAppData.bind(this),\n parseToDesktopAppConfig: this.parseToDesktopAppConfig.bind(this)\n };\n }\n isFdc3Definition(definition) {\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n return { isFdc3: false, reason: parseDecoderErrorToStringMessage(decodeRes.error) };\n }\n if (definition.appId && definition.details) {\n return { isFdc3: true, version: \"2.0\" };\n }\n if (definition.manifest) {\n return { isFdc3: true, version: \"1.2\" };\n }\n return { isFdc3: false, reason: \"The passed definition is not FDC3\" };\n }\n parseToBrowserBaseAppData(definition) {\n var _a;\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n const userProperties = this.getUserPropertiesFromDefinition(definition, version);\n const createOptions = { url: this.getUrl(definition, version) };\n let baseApplicationData = {\n name: definition.appId,\n type: \"window\",\n createOptions,\n userProperties: Object.assign(Object.assign({}, userProperties), { intents: version === \"1.2\"\n ? userProperties.intents\n : this.getIntentsFromV2AppDefinition(definition), details: createOptions }),\n title: definition.title,\n version: definition.version,\n icon: this.getIconFromDefinition(definition, version),\n caption: definition.description,\n fdc3: version === \"2.0\" ? Object.assign(Object.assign({}, definition), { definitionVersion: \"2.0\" }) : undefined,\n };\n if ((_a = definition.hostManifests) === null || _a === void 0 ? void 0 : _a[\"Glue42\"]) {\n const decodeRes = glue42HostManifestsBrowserDecoder.run(definition.hostManifests[\"Glue42\"]);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (!Object.keys(decodeRes.result).length) {\n throw new Error(\"Invalid 'hostManifests['Glue42]' key\");\n }\n baseApplicationData = this.mergeBaseAppDataWithGlueManifest(baseApplicationData, decodeRes.result);\n }\n return baseApplicationData;\n }\n parseToDesktopAppConfig(definition) {\n var _a, _b, _c;\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (version === \"1.2\") {\n const fdc3v1Definition = definition;\n return {\n name: fdc3v1Definition.appId,\n type: \"window\",\n details: {\n url: this.getUrl(definition, version)\n },\n version: fdc3v1Definition.version,\n title: fdc3v1Definition.title,\n tooltip: fdc3v1Definition.tooltip,\n caption: fdc3v1Definition.description,\n icon: (_a = fdc3v1Definition.icons) === null || _a === void 0 ? void 0 : _a[0].icon,\n intents: fdc3v1Definition.intents,\n customProperties: {\n manifestType: fdc3v1Definition.manifestType,\n images: fdc3v1Definition.images,\n contactEmail: fdc3v1Definition.contactEmail,\n supportEmail: fdc3v1Definition.supportEmail,\n publisher: fdc3v1Definition.publisher,\n icons: fdc3v1Definition.icons,\n customConfig: fdc3v1Definition.customConfig\n }\n };\n }\n const fdc3v2Definition = definition;\n let desktopDefinition = {\n name: fdc3v2Definition.appId,\n type: this.fdc3ToDesktopDefinitionType[fdc3v2Definition.type],\n details: fdc3v2Definition.details,\n version: fdc3v2Definition.version,\n title: fdc3v2Definition.title,\n tooltip: fdc3v2Definition.tooltip,\n caption: fdc3v2Definition.description,\n icon: this.getIconFromDefinition(fdc3v2Definition, \"2.0\"),\n intents: this.getIntentsFromV2AppDefinition(fdc3v2Definition),\n fdc3: Object.assign(Object.assign({}, fdc3v2Definition), { definitionVersion: \"2.0\" })\n };\n if ((_b = fdc3v2Definition.hostManifests) === null || _b === void 0 ? void 0 : _b[\"Glue42\"]) {\n if (typeof fdc3v2Definition.hostManifests[\"Glue42\"] !== \"object\" || Array.isArray(fdc3v2Definition.hostManifests[\"Glue42\"])) {\n throw new Error(\"Invalid 'hostManifests['Glue42]' key\");\n }\n desktopDefinition = this.mergeDesktopConfigWithGlueManifest(desktopDefinition, (_c = fdc3v2Definition.hostManifests) === null || _c === void 0 ? void 0 : _c[\"Glue42\"]);\n }\n return desktopDefinition;\n }\n getUserPropertiesFromDefinition(definition, version) {\n if (version === \"1.2\") {\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key)));\n }\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key) && !fdc3v2AppProps.includes(key)));\n }\n getUrl(definition, version) {\n var _a, _b;\n let url;\n if (version === \"1.2\") {\n const parsedManifest = JSON.parse(definition.manifest);\n url = ((_a = parsedManifest.details) === null || _a === void 0 ? void 0 : _a.url) || parsedManifest.url;\n }\n else {\n url = (_b = definition.details) === null || _b === void 0 ? void 0 : _b.url;\n }\n if (!url || typeof url !== \"string\") {\n throw new Error(`Invalid FDC3 ${version} definition. Provide valid 'url' under '${version === \"1.2\" ? \"manifest\" : \"details\"}' key`);\n }\n return url;\n }\n getIntentsFromV2AppDefinition(definition) {\n var _a, _b;\n const fdc3Intents = (_b = (_a = definition.interop) === null || _a === void 0 ? void 0 : _a.intents) === null || _b === void 0 ? void 0 : _b.listensFor;\n if (!fdc3Intents) {\n return;\n }\n const intents = Object.entries(fdc3Intents).map((fdc3Intent) => {\n const [intentName, intentData] = fdc3Intent;\n return Object.assign({ name: intentName }, intentData);\n });\n return intents;\n }\n getIconFromDefinition(definition, version) {\n var _a, _b, _c, _d;\n if (version === \"1.2\") {\n return ((_b = (_a = definition.icons) === null || _a === void 0 ? void 0 : _a.find((iconDef) => iconDef.icon)) === null || _b === void 0 ? void 0 : _b.icon) || undefined;\n }\n return ((_d = (_c = definition.icons) === null || _c === void 0 ? void 0 : _c.find((iconDef) => iconDef.src)) === null || _d === void 0 ? void 0 : _d.src) || undefined;\n }\n mergeBaseAppDataWithGlueManifest(baseAppData, hostManifestDefinition) {\n let baseApplicationDefinition = baseAppData;\n if (hostManifestDefinition.details) {\n const details = Object.assign(Object.assign({}, baseAppData.createOptions), hostManifestDefinition.details);\n baseApplicationDefinition.createOptions = details;\n baseApplicationDefinition.userProperties.details = details;\n }\n if (Array.isArray(hostManifestDefinition.intents)) {\n baseApplicationDefinition.userProperties.intents = (baseApplicationDefinition.userProperties.intents || []).concat(hostManifestDefinition.intents);\n }\n baseApplicationDefinition = Object.assign(Object.assign({}, baseApplicationDefinition), hostManifestDefinition);\n delete baseApplicationDefinition.details;\n delete baseApplicationDefinition.intents;\n return baseApplicationDefinition;\n }\n mergeDesktopConfigWithGlueManifest(config, desktopDefinition) {\n const appConfig = Object.assign({}, config, desktopDefinition, { details: Object.assign(Object.assign({}, config.details), desktopDefinition.details) });\n if (Array.isArray(desktopDefinition.intents)) {\n appConfig.intents = (config.intents || []).concat(desktopDefinition.intents);\n }\n return appConfig;\n }\n}\n\nconst decoders$1 = {\n common: {\n nonEmptyStringDecoder: nonEmptyStringDecoder$1,\n nonNegativeNumberDecoder: nonNegativeNumberDecoder$1\n },\n fdc3: {\n allDefinitionsDecoder,\n v1DefinitionDecoder,\n v2DefinitionDecoder\n }\n};\n\nvar INTENTS_ERRORS;\n(function (INTENTS_ERRORS) {\n INTENTS_ERRORS[\"USER_CANCELLED\"] = \"User Closed Intents Resolver UI without choosing a handler\";\n INTENTS_ERRORS[\"CALLER_NOT_DEFINED\"] = \"Caller Id is not defined\";\n INTENTS_ERRORS[\"TIMEOUT_HIT\"] = \"Timeout hit\";\n INTENTS_ERRORS[\"INTENT_NOT_FOUND\"] = \"Cannot find Intent\";\n INTENTS_ERRORS[\"HANDLER_NOT_FOUND\"] = \"Cannot find Intent Handler\";\n INTENTS_ERRORS[\"TARGET_INSTANCE_UNAVAILABLE\"] = \"Cannot start Target Instance\";\n INTENTS_ERRORS[\"INTENT_DELIVERY_FAILED\"] = \"Target Instance did not add a listener\";\n INTENTS_ERRORS[\"RESOLVER_UNAVAILABLE\"] = \"Intents Resolver UI unavailable\";\n INTENTS_ERRORS[\"RESOLVER_TIMEOUT\"] = \"User did not choose a handler\";\n INTENTS_ERRORS[\"INVALID_RESOLVER_RESPONSE\"] = \"Intents Resolver UI returned invalid response\";\n INTENTS_ERRORS[\"INTENT_HANDLER_REJECTION\"] = \"Intent Handler function processing the raised intent threw an error or rejected the promise it returned\";\n})(INTENTS_ERRORS || (INTENTS_ERRORS = {}));\n\nlet IoC$1 = class IoC {\n constructor() {\n this._decoders = decoders$1;\n this._errors = {\n intents: INTENTS_ERRORS\n };\n }\n get fdc3() {\n if (!this._fdc3) {\n this._fdc3 = new FDC3Service().toApi();\n }\n return this._fdc3;\n }\n get decoders() {\n return this._decoders;\n }\n get errors() {\n return this._errors;\n }\n};\n\nconst ioc = new IoC$1();\nioc.fdc3;\nconst decoders = ioc.decoders;\nioc.errors;\n\nconst nonEmptyStringDecoder = string$1().where((s) => s.length > 0, \"Expected a non-empty string\");\r\nconst nonNegativeNumberDecoder = number$1().where((num) => num >= 0, \"Expected a non-negative number\");\r\nconst optionalNonEmptyStringDecoder = optional$1(nonEmptyStringDecoder);\r\nconst libDomainDecoder = oneOf$1(constant$1(\"system\"), constant$1(\"windows\"), constant$1(\"appManager\"), constant$1(\"layouts\"), constant$1(\"intents\"), constant$1(\"notifications\"), constant$1(\"channels\"), constant$1(\"extension\"), constant$1(\"themes\"), constant$1(\"prefs\"));\r\nconst windowOperationTypesDecoder = oneOf$1(constant$1(\"openWindow\"), constant$1(\"windowHello\"), constant$1(\"windowAdded\"), constant$1(\"windowRemoved\"), constant$1(\"getBounds\"), constant$1(\"getFrameBounds\"), constant$1(\"getUrl\"), constant$1(\"moveResize\"), constant$1(\"focus\"), constant$1(\"close\"), constant$1(\"getTitle\"), constant$1(\"setTitle\"), constant$1(\"focusChange\"), constant$1(\"getChannel\"));\r\nconst appManagerOperationTypesDecoder = oneOf$1(constant$1(\"appHello\"), constant$1(\"appDirectoryStateChange\"), constant$1(\"instanceStarted\"), constant$1(\"instanceStopped\"), constant$1(\"applicationStart\"), constant$1(\"instanceStop\"), constant$1(\"clear\"));\r\nconst layoutsOperationTypesDecoder = oneOf$1(constant$1(\"layoutAdded\"), constant$1(\"layoutChanged\"), constant$1(\"layoutRemoved\"), constant$1(\"get\"), constant$1(\"getAll\"), constant$1(\"export\"), constant$1(\"import\"), constant$1(\"remove\"), constant$1(\"clientSaveRequest\"), constant$1(\"getGlobalPermissionState\"), constant$1(\"checkGlobalActivated\"), constant$1(\"requestGlobalPermission\"), constant$1(\"getDefaultGlobal\"), constant$1(\"setDefaultGlobal\"), constant$1(\"clearDefaultGlobal\"));\r\nconst notificationsOperationTypesDecoder = oneOf$1(constant$1(\"raiseNotification\"), constant$1(\"requestPermission\"), constant$1(\"notificationShow\"), constant$1(\"notificationClick\"), constant$1(\"getPermission\"), constant$1(\"list\"), constant$1(\"notificationRaised\"), constant$1(\"notificationClosed\"), constant$1(\"click\"), constant$1(\"clear\"), constant$1(\"clearAll\"), constant$1(\"configure\"), constant$1(\"getConfiguration\"), constant$1(\"configurationChanged\"), constant$1(\"setState\"), constant$1(\"clearOld\"), constant$1(\"activeCountChange\"), constant$1(\"stateChange\"));\r\nconst systemOperationTypesDecoder = oneOf$1(constant$1(\"getEnvironment\"), constant$1(\"getBase\"), constant$1(\"platformShutdown\"));\r\nconst windowRelativeDirectionDecoder = oneOf$1(constant$1(\"top\"), constant$1(\"left\"), constant$1(\"right\"), constant$1(\"bottom\"));\r\nconst windowBoundsDecoder = object$1({\r\n top: number$1(),\r\n left: number$1(),\r\n width: nonNegativeNumberDecoder,\r\n height: nonNegativeNumberDecoder\r\n});\r\nconst windowOpenSettingsDecoder = optional$1(object$1({\r\n top: optional$1(number$1()),\r\n left: optional$1(number$1()),\r\n width: optional$1(nonNegativeNumberDecoder),\r\n height: optional$1(nonNegativeNumberDecoder),\r\n context: optional$1(anyJson$1()),\r\n relativeTo: optional$1(nonEmptyStringDecoder),\r\n relativeDirection: optional$1(windowRelativeDirectionDecoder),\r\n windowId: optional$1(nonEmptyStringDecoder),\r\n layoutComponentId: optional$1(nonEmptyStringDecoder)\r\n}));\r\nconst openWindowConfigDecoder = object$1({\r\n name: nonEmptyStringDecoder,\r\n url: nonEmptyStringDecoder,\r\n options: windowOpenSettingsDecoder\r\n});\r\nconst windowHelloDecoder = object$1({\r\n windowId: optional$1(nonEmptyStringDecoder)\r\n});\r\nconst coreWindowDataDecoder = object$1({\r\n windowId: nonEmptyStringDecoder,\r\n name: nonEmptyStringDecoder\r\n});\r\nconst simpleWindowDecoder = object$1({\r\n windowId: nonEmptyStringDecoder\r\n});\r\nconst helloSuccessDecoder = object$1({\r\n windows: array$1(coreWindowDataDecoder),\r\n isWorkspaceFrame: boolean$1()\r\n});\r\nconst windowTitleConfigDecoder = object$1({\r\n windowId: nonEmptyStringDecoder,\r\n title: string$1()\r\n});\r\nconst focusEventDataDecoder = object$1({\r\n windowId: nonEmptyStringDecoder,\r\n hasFocus: boolean$1()\r\n});\r\nconst windowMoveResizeConfigDecoder = object$1({\r\n windowId: nonEmptyStringDecoder,\r\n top: optional$1(number$1()),\r\n left: optional$1(number$1()),\r\n width: optional$1(nonNegativeNumberDecoder),\r\n height: optional$1(nonNegativeNumberDecoder),\r\n relative: optional$1(boolean$1())\r\n});\r\nconst windowBoundsResultDecoder = object$1({\r\n windowId: nonEmptyStringDecoder,\r\n bounds: object$1({\r\n top: number$1(),\r\n left: number$1(),\r\n width: nonNegativeNumberDecoder,\r\n height: nonNegativeNumberDecoder\r\n })\r\n});\r\nconst frameWindowBoundsResultDecoder = object$1({\r\n bounds: object$1({\r\n top: number$1(),\r\n left: number$1(),\r\n width: nonNegativeNumberDecoder,\r\n height: nonNegativeNumberDecoder\r\n })\r\n});\r\nconst windowUrlResultDecoder = object$1({\r\n windowId: nonEmptyStringDecoder,\r\n url: nonEmptyStringDecoder\r\n});\r\nconst anyDecoder = anyJson$1();\r\nconst boundsDecoder = object$1({\r\n top: optional$1(number$1()),\r\n left: optional$1(number$1()),\r\n width: optional$1(nonNegativeNumberDecoder),\r\n height: optional$1(nonNegativeNumberDecoder)\r\n});\r\nconst instanceDataDecoder = object$1({\r\n id: nonEmptyStringDecoder,\r\n applicationName: nonEmptyStringDecoder\r\n});\r\nconst applicationDetailsDecoder = object$1({\r\n url: nonEmptyStringDecoder,\r\n top: optional$1(number$1()),\r\n left: optional$1(number$1()),\r\n width: optional$1(nonNegativeNumberDecoder),\r\n height: optional$1(nonNegativeNumberDecoder)\r\n});\r\nconst intentDefinitionDecoder = object$1({\r\n name: nonEmptyStringDecoder,\r\n displayName: optional$1(string$1()),\r\n contexts: optional$1(array$1(string$1())),\r\n customConfig: optional$1(object$1())\r\n});\r\nobject$1({\r\n name: nonEmptyStringDecoder,\r\n title: optional$1(nonEmptyStringDecoder),\r\n version: optional$1(nonEmptyStringDecoder),\r\n appId: optional$1(nonEmptyStringDecoder),\r\n manifest: nonEmptyStringDecoder,\r\n manifestType: nonEmptyStringDecoder,\r\n tooltip: optional$1(nonEmptyStringDecoder),\r\n description: optional$1(nonEmptyStringDecoder),\r\n contactEmail: optional$1(nonEmptyStringDecoder),\r\n supportEmail: optional$1(nonEmptyStringDecoder),\r\n publisher: optional$1(nonEmptyStringDecoder),\r\n images: optional$1(array$1(object$1({ url: optional$1(nonEmptyStringDecoder) }))),\r\n icons: optional$1(array$1(object$1({ icon: optional$1(nonEmptyStringDecoder) }))),\r\n customConfig: anyJson$1(),\r\n intents: optional$1(array$1(intentDefinitionDecoder))\r\n});\r\nconst applicationDefinitionDecoder = object$1({\r\n name: nonEmptyStringDecoder,\r\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\r\n title: optional$1(nonEmptyStringDecoder),\r\n version: optional$1(nonEmptyStringDecoder),\r\n customProperties: optional$1(anyJson$1()),\r\n icon: optional$1(string$1()),\r\n caption: optional$1(string$1()),\r\n details: applicationDetailsDecoder,\r\n intents: optional$1(array$1(intentDefinitionDecoder)),\r\n hidden: optional$1(boolean$1()),\r\n fdc3: optional$1(decoders.fdc3.v2DefinitionDecoder)\r\n});\r\nconst allApplicationDefinitionsDecoder = oneOf$1(applicationDefinitionDecoder, decoders.fdc3.v2DefinitionDecoder, decoders.fdc3.v1DefinitionDecoder);\r\nobject$1({\r\n definitions: array$1(allApplicationDefinitionsDecoder),\r\n mode: oneOf$1(constant$1(\"replace\"), constant$1(\"merge\"))\r\n});\r\nconst appRemoveConfigDecoder = object$1({\r\n name: nonEmptyStringDecoder\r\n});\r\nconst appsExportOperationDecoder = object$1({\r\n definitions: array$1(applicationDefinitionDecoder)\r\n});\r\nconst applicationDataDecoder = object$1({\r\n name: nonEmptyStringDecoder,\r\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\r\n instances: array$1(instanceDataDecoder),\r\n userProperties: optional$1(anyJson$1()),\r\n title: optional$1(nonEmptyStringDecoder),\r\n version: optional$1(nonEmptyStringDecoder),\r\n icon: optional$1(nonEmptyStringDecoder),\r\n caption: optional$1(nonEmptyStringDecoder)\r\n});\r\nconst baseApplicationDataDecoder = object$1({\r\n name: nonEmptyStringDecoder,\r\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\r\n userProperties: anyJson$1(),\r\n title: optional$1(nonEmptyStringDecoder),\r\n version: optional$1(nonEmptyStringDecoder),\r\n icon: optional$1(nonEmptyStringDecoder),\r\n caption: optional$1(nonEmptyStringDecoder)\r\n});\r\nconst appDirectoryStateChangeDecoder = object$1({\r\n appsAdded: array$1(baseApplicationDataDecoder),\r\n appsChanged: array$1(baseApplicationDataDecoder),\r\n appsRemoved: array$1(baseApplicationDataDecoder)\r\n});\r\nconst appHelloSuccessDecoder = object$1({\r\n apps: array$1(applicationDataDecoder),\r\n initialChannelId: optional$1(nonEmptyStringDecoder)\r\n});\r\nconst basicInstanceDataDecoder = object$1({\r\n id: nonEmptyStringDecoder\r\n});\r\nconst applicationStartConfigDecoder = object$1({\r\n name: nonEmptyStringDecoder,\r\n waitForAGMReady: boolean$1(),\r\n id: optional$1(nonEmptyStringDecoder),\r\n context: optional$1(anyJson$1()),\r\n top: optional$1(number$1()),\r\n left: optional$1(number$1()),\r\n width: optional$1(nonNegativeNumberDecoder),\r\n height: optional$1(nonNegativeNumberDecoder),\r\n relativeTo: optional$1(nonEmptyStringDecoder),\r\n relativeDirection: optional$1(windowRelativeDirectionDecoder),\r\n forceChromeTab: optional$1(boolean$1()),\r\n layoutComponentId: optional$1(nonEmptyStringDecoder),\r\n channelId: optional$1(nonEmptyStringDecoder)\r\n});\r\nconst layoutTypeDecoder = oneOf$1(constant$1(\"Global\"), constant$1(\"Activity\"), constant$1(\"ApplicationDefault\"), constant$1(\"Swimlane\"), constant$1(\"Workspace\"));\r\nconst componentTypeDecoder = oneOf$1(constant$1(\"application\"), constant$1(\"activity\"));\r\nconst windowComponentStateDecoder = object$1({\r\n context: optional$1(anyJson$1()),\r\n bounds: windowBoundsDecoder,\r\n createArgs: object$1({\r\n name: optional$1(nonEmptyStringDecoder),\r\n url: optional$1(nonEmptyStringDecoder),\r\n context: optional$1(anyJson$1())\r\n }),\r\n windowState: optional$1(nonEmptyStringDecoder),\r\n restoreState: optional$1(nonEmptyStringDecoder),\r\n instanceId: nonEmptyStringDecoder,\r\n isCollapsed: optional$1(boolean$1()),\r\n isSticky: optional$1(boolean$1()),\r\n restoreSettings: object$1({\r\n groupId: optional$1(nonEmptyStringDecoder),\r\n groupZOrder: optional$1(number$1())\r\n })\r\n});\r\nconst windowLayoutComponentDecoder = object$1({\r\n type: constant$1(\"window\"),\r\n componentType: optional$1(componentTypeDecoder),\r\n application: nonEmptyStringDecoder,\r\n state: windowComponentStateDecoder\r\n});\r\nconst windowLayoutItemDecoder = object$1({\r\n type: constant$1(\"window\"),\r\n config: object$1({\r\n appName: nonEmptyStringDecoder,\r\n url: optional$1(nonEmptyStringDecoder),\r\n title: optional$1(string$1()),\r\n allowExtract: optional$1(boolean$1()),\r\n allowReorder: optional$1(boolean$1()),\r\n showCloseButton: optional$1(boolean$1()),\r\n isMaximized: optional$1(boolean$1())\r\n })\r\n});\r\nconst groupLayoutItemDecoder = object$1({\r\n type: constant$1(\"group\"),\r\n config: anyJson$1(),\r\n children: array$1(oneOf$1(windowLayoutItemDecoder))\r\n});\r\nconst columnLayoutItemDecoder = object$1({\r\n type: constant$1(\"column\"),\r\n config: anyJson$1(),\r\n children: array$1(oneOf$1(groupLayoutItemDecoder, windowLayoutItemDecoder, lazy(() => columnLayoutItemDecoder), lazy(() => rowLayoutItemDecoder)))\r\n});\r\nconst rowLayoutItemDecoder = object$1({\r\n type: constant$1(\"row\"),\r\n config: anyJson$1(),\r\n children: array$1(oneOf$1(columnLayoutItemDecoder, groupLayoutItemDecoder, windowLayoutItemDecoder, lazy(() => rowLayoutItemDecoder)))\r\n});\r\nconst workspaceLayoutComponentStateDecoder = object$1({\r\n config: anyJson$1(),\r\n context: anyJson$1(),\r\n children: array$1(oneOf$1(rowLayoutItemDecoder, columnLayoutItemDecoder, groupLayoutItemDecoder, windowLayoutItemDecoder))\r\n});\r\nconst workspaceLayoutComponentDecoder = object$1({\r\n type: constant$1(\"Workspace\"),\r\n application: optional$1(nonEmptyStringDecoder),\r\n state: workspaceLayoutComponentStateDecoder\r\n});\r\nconst workspaceFrameComponentStateDecoder = object$1({\r\n bounds: windowBoundsDecoder,\r\n instanceId: nonEmptyStringDecoder,\r\n selectedWorkspace: nonNegativeNumberDecoder,\r\n workspaces: array$1(workspaceLayoutComponentStateDecoder),\r\n windowState: optional$1(nonEmptyStringDecoder),\r\n restoreState: optional$1(nonEmptyStringDecoder),\r\n context: optional$1(anyJson$1())\r\n});\r\nconst workspaceFrameComponentDecoder = object$1({\r\n type: constant$1(\"workspaceFrame\"),\r\n application: nonEmptyStringDecoder,\r\n componentType: optional$1(componentTypeDecoder),\r\n state: workspaceFrameComponentStateDecoder\r\n});\r\nconst glueLayoutDecoder = object$1({\r\n name: nonEmptyStringDecoder,\r\n type: layoutTypeDecoder,\r\n components: array$1(oneOf$1(windowLayoutComponentDecoder, workspaceLayoutComponentDecoder, workspaceFrameComponentDecoder)),\r\n context: optional$1(anyJson$1()),\r\n metadata: optional$1(anyJson$1()),\r\n version: optional$1(number$1())\r\n});\r\nconst newLayoutOptionsDecoder = object$1({\r\n name: nonEmptyStringDecoder,\r\n context: optional$1(anyJson$1()),\r\n metadata: optional$1(anyJson$1()),\r\n instances: optional$1(array$1(nonEmptyStringDecoder)),\r\n ignoreInstances: optional$1(array$1(nonEmptyStringDecoder))\r\n});\r\nconst restoreOptionsDecoder = object$1({\r\n name: nonEmptyStringDecoder,\r\n context: optional$1(anyJson$1()),\r\n closeRunningInstance: optional$1(boolean$1()),\r\n closeMe: optional$1(boolean$1()),\r\n timeout: optional$1(nonNegativeNumberDecoder)\r\n});\r\nconst layoutSummaryDecoder = object$1({\r\n name: nonEmptyStringDecoder,\r\n type: layoutTypeDecoder,\r\n context: optional$1(anyJson$1()),\r\n metadata: optional$1(anyJson$1())\r\n});\r\nconst simpleLayoutConfigDecoder = object$1({\r\n name: nonEmptyStringDecoder,\r\n type: layoutTypeDecoder\r\n});\r\nconst saveLayoutConfigDecoder = object$1({\r\n layout: newLayoutOptionsDecoder\r\n});\r\nconst restoreLayoutConfigDecoder = object$1({\r\n layout: restoreOptionsDecoder\r\n});\r\nconst getAllLayoutsConfigDecoder = object$1({\r\n type: layoutTypeDecoder\r\n});\r\nconst allLayoutsFullConfigDecoder = object$1({\r\n layouts: array$1(glueLayoutDecoder)\r\n});\r\nconst importModeDecoder = oneOf$1(constant$1(\"replace\"), constant$1(\"merge\"));\r\nconst layoutsImportConfigDecoder = object$1({\r\n layouts: array$1(glueLayoutDecoder),\r\n mode: importModeDecoder,\r\n isManagerOperation: optional$1(boolean$1())\r\n});\r\nconst allLayoutsSummariesResultDecoder = object$1({\r\n summaries: array$1(layoutSummaryDecoder)\r\n});\r\nconst simpleLayoutResultDecoder = object$1({\r\n layout: glueLayoutDecoder\r\n});\r\nconst optionalSimpleLayoutResult = object$1({\r\n layout: optional$1(glueLayoutDecoder)\r\n});\r\nconst setDefaultGlobalConfigDecoder = object$1({\r\n name: nonEmptyStringDecoder\r\n});\r\nconst intentsOperationTypesDecoder = oneOf$1(constant$1(\"findIntent\"), constant$1(\"getIntents\"), constant$1(\"raiseIntent\"), constant$1(\"raise\"), constant$1(\"filterHandlers\"));\r\nconst intentHandlerDecoder = object$1({\r\n applicationName: nonEmptyStringDecoder,\r\n applicationTitle: optional$1(string$1()),\r\n applicationDescription: optional$1(string$1()),\r\n applicationIcon: optional$1(string$1()),\r\n type: oneOf$1(constant$1(\"app\"), constant$1(\"instance\")),\r\n displayName: optional$1(string$1()),\r\n contextTypes: optional$1(array$1(nonEmptyStringDecoder)),\r\n instanceId: optional$1(string$1()),\r\n instanceTitle: optional$1(string$1()),\r\n resultType: optional$1(string$1())\r\n});\r\nobject$1({\r\n applicationName: string$1(),\r\n applicationIcon: optional$1(string$1()),\r\n instanceId: optional$1(string$1()),\r\n});\r\nconst intentResolverResponseDecoder = object$1({\r\n intent: nonEmptyStringDecoder,\r\n handler: intentHandlerDecoder\r\n});\r\nconst intentDecoder = object$1({\r\n name: nonEmptyStringDecoder,\r\n handlers: array$1(intentHandlerDecoder)\r\n});\r\nconst intentTargetDecoder = oneOf$1(constant$1(\"startNew\"), constant$1(\"reuse\"), object$1({\r\n app: optional$1(nonEmptyStringDecoder),\r\n instance: optional$1(nonEmptyStringDecoder)\r\n}));\r\nconst intentContextDecoder = object$1({\r\n type: optional$1(nonEmptyStringDecoder),\r\n data: optional$1(anyJson$1())\r\n});\r\nconst intentsDecoder = array$1(intentDecoder);\r\nconst wrappedIntentsDecoder = object$1({\r\n intents: intentsDecoder\r\n});\r\nconst intentFilterDecoder = object$1({\r\n name: optional$1(nonEmptyStringDecoder),\r\n contextType: optional$1(nonEmptyStringDecoder),\r\n resultType: optional$1(nonEmptyStringDecoder)\r\n});\r\nconst findFilterDecoder = oneOf$1(nonEmptyStringDecoder, intentFilterDecoder);\r\nconst wrappedIntentFilterDecoder = object$1({\r\n filter: optional$1(intentFilterDecoder)\r\n});\r\nconst intentRequestDecoder = object$1({\r\n intent: nonEmptyStringDecoder,\r\n target: optional$1(intentTargetDecoder),\r\n context: optional$1(intentContextDecoder),\r\n options: optional$1(windowOpenSettingsDecoder),\r\n handlers: optional$1(array$1(intentHandlerDecoder)),\r\n timeout: optional$1(nonNegativeNumberDecoder),\r\n waitUserResponseIndefinitely: optional$1(boolean$1())\r\n});\r\nconst raiseRequestDecoder = oneOf$1(nonEmptyStringDecoder, intentRequestDecoder);\r\nconst resolverConfigDecoder = object$1({\r\n enabled: boolean$1(),\r\n appName: nonEmptyStringDecoder,\r\n waitResponseTimeout: number$1()\r\n});\r\nconst raiseIntentRequestDecoder = object$1({\r\n intentRequest: intentRequestDecoder,\r\n resolverConfig: resolverConfigDecoder\r\n});\r\nconst intentResultDecoder = object$1({\r\n request: intentRequestDecoder,\r\n handler: intentHandlerDecoder,\r\n result: anyJson$1()\r\n});\r\nconst handlersFilterDecoder = object$1({\r\n title: optional$1(nonEmptyStringDecoder),\r\n openResolver: optional$1(boolean$1()),\r\n timeout: optional$1(nonNegativeNumberDecoder),\r\n intent: optional$1(nonEmptyStringDecoder),\r\n contextTypes: optional$1(array$1(nonEmptyStringDecoder)),\r\n resultType: optional$1(nonEmptyStringDecoder),\r\n applicationNames: optional$1(array$1(nonEmptyStringDecoder))\r\n});\r\nconst filterHandlersResultDecoder = object$1({\r\n handlers: array$1(intentHandlerDecoder)\r\n});\r\nconst filterHandlersWithResolverConfigDecoder = object$1({\r\n filterHandlersRequest: handlersFilterDecoder,\r\n resolverConfig: resolverConfigDecoder\r\n});\r\nconst AddIntentListenerRequestDecoder = object$1({\r\n intent: nonEmptyStringDecoder,\r\n contextTypes: optional$1(array$1(nonEmptyStringDecoder)),\r\n displayName: optional$1(string$1()),\r\n icon: optional$1(string$1()),\r\n description: optional$1(string$1()),\r\n resultType: optional$1(string$1())\r\n});\r\nconst AddIntentListenerDecoder = oneOf$1(nonEmptyStringDecoder, AddIntentListenerRequestDecoder);\r\nconst intentInfoDecoder = object$1({\r\n intent: nonEmptyStringDecoder,\r\n contextTypes: optional$1(array$1(nonEmptyStringDecoder)),\r\n description: optional$1(nonEmptyStringDecoder),\r\n displayName: optional$1(nonEmptyStringDecoder),\r\n icon: optional$1(nonEmptyStringDecoder),\r\n resultType: optional$1(nonEmptyStringDecoder)\r\n});\r\nconst getIntentsResultDecoder = object$1({\r\n intents: array$1(intentInfoDecoder)\r\n});\r\nconst channelNameDecoder = (channelNames) => {\r\n return nonEmptyStringDecoder.where(s => channelNames.includes(s), \"Expected a valid channel name\");\r\n};\r\nconst interopActionSettingsDecoder = object$1({\r\n method: nonEmptyStringDecoder,\r\n arguments: optional$1(anyJson$1()),\r\n target: optional$1(oneOf$1(constant$1(\"all\"), constant$1(\"best\")))\r\n});\r\nconst glue42NotificationActionDecoder = object$1({\r\n action: string$1(),\r\n title: nonEmptyStringDecoder,\r\n icon: optional$1(string$1()),\r\n interop: optional$1(interopActionSettingsDecoder)\r\n});\r\nconst notificationStateDecoder = oneOf$1(constant$1(\"Active\"), constant$1(\"Acknowledged\"), constant$1(\"Seen\"), constant$1(\"Closed\"), constant$1(\"Stale\"), constant$1(\"Snoozed\"), constant$1(\"Processing\"));\r\nconst activeNotificationsCountChangeDecoder = object$1({\r\n count: number$1()\r\n});\r\nconst notificationDefinitionDecoder = object$1({\r\n badge: optional$1(string$1()),\r\n body: optional$1(string$1()),\r\n data: optional$1(anyJson$1()),\r\n dir: optional$1(oneOf$1(constant$1(\"auto\"), constant$1(\"ltr\"), constant$1(\"rtl\"))),\r\n icon: optional$1(string$1()),\r\n image: optional$1(string$1()),\r\n lang: optional$1(string$1()),\r\n renotify: optional$1(boolean$1()),\r\n requireInteraction: optional$1(boolean$1()),\r\n silent: optional$1(boolean$1()),\r\n tag: optional$1(string$1()),\r\n timestamp: optional$1(nonNegativeNumberDecoder),\r\n vibrate: optional$1(array$1(number$1()))\r\n});\r\nconst glue42NotificationOptionsDecoder = object$1({\r\n title: nonEmptyStringDecoder,\r\n clickInterop: optional$1(interopActionSettingsDecoder),\r\n actions: optional$1(array$1(glue42NotificationActionDecoder)),\r\n focusPlatformOnDefaultClick: optional$1(boolean$1()),\r\n badge: optional$1(string$1()),\r\n body: optional$1(string$1()),\r\n data: optional$1(anyJson$1()),\r\n dir: optional$1(oneOf$1(constant$1(\"auto\"), constant$1(\"ltr\"), constant$1(\"rtl\"))),\r\n icon: optional$1(string$1()),\r\n image: optional$1(string$1()),\r\n lang: optional$1(string$1()),\r\n renotify: optional$1(boolean$1()),\r\n requireInteraction: optional$1(boolean$1()),\r\n silent: optional$1(boolean$1()),\r\n tag: optional$1(string$1()),\r\n timestamp: optional$1(nonNegativeNumberDecoder),\r\n vibrate: optional$1(array$1(number$1())),\r\n severity: optional$1(oneOf$1(constant$1(\"Low\"), constant$1(\"None\"), constant$1(\"Medium\"), constant$1(\"High\"), constant$1(\"Critical\"))),\r\n showToast: optional$1(boolean$1()),\r\n showInPanel: optional$1(boolean$1()),\r\n state: optional$1(notificationStateDecoder)\r\n});\r\nconst notificationSetStateRequestDecoder = object$1({\r\n id: nonEmptyStringDecoder,\r\n state: notificationStateDecoder\r\n});\r\nconst channelContextDecoder = object$1({\r\n name: nonEmptyStringDecoder,\r\n meta: object$1({\r\n color: nonEmptyStringDecoder\r\n }),\r\n data: optional$1(object$1()),\r\n});\r\nconst raiseNotificationDecoder = object$1({\r\n settings: glue42NotificationOptionsDecoder,\r\n id: nonEmptyStringDecoder\r\n});\r\nconst raiseNotificationResultDecoder = object$1({\r\n settings: glue42NotificationOptionsDecoder\r\n});\r\nconst permissionRequestResultDecoder = object$1({\r\n permissionGranted: boolean$1()\r\n});\r\nconst permissionQueryResultDecoder = object$1({\r\n permission: oneOf$1(constant$1(\"default\"), constant$1(\"granted\"), constant$1(\"denied\"))\r\n});\r\nconst notificationEventPayloadDecoder = object$1({\r\n definition: notificationDefinitionDecoder,\r\n action: optional$1(string$1()),\r\n id: optional$1(nonEmptyStringDecoder)\r\n});\r\nconst notificationFilterDecoder = object$1({\r\n allowed: optional$1(array$1(nonEmptyStringDecoder)),\r\n blocked: optional$1(array$1(nonEmptyStringDecoder))\r\n});\r\nconst notificationsConfigurationDecoder = object$1({\r\n enable: optional$1(boolean$1()),\r\n enableToasts: optional$1(boolean$1()),\r\n sourceFilter: optional$1(notificationFilterDecoder),\r\n});\r\nconst notificationsConfigurationProtocolDecoder = object$1({\r\n configuration: notificationsConfigurationDecoder\r\n});\r\nconst strictNotificationsConfigurationProtocolDecoder = object$1({\r\n configuration: object$1({\r\n enable: boolean$1(),\r\n enableToasts: boolean$1(),\r\n sourceFilter: object$1({\r\n allowed: array$1(nonEmptyStringDecoder),\r\n blocked: array$1(nonEmptyStringDecoder)\r\n })\r\n })\r\n});\r\nconst platformSaveRequestConfigDecoder = object$1({\r\n layoutType: oneOf$1(constant$1(\"Global\"), constant$1(\"Workspace\")),\r\n layoutName: nonEmptyStringDecoder,\r\n context: optional$1(anyJson$1())\r\n});\r\nconst saveRequestClientResponseDecoder = object$1({\r\n windowContext: optional$1(anyJson$1()),\r\n});\r\nconst permissionStateResultDecoder = object$1({\r\n state: oneOf$1(constant$1(\"prompt\"), constant$1(\"denied\"), constant$1(\"granted\"))\r\n});\r\nconst simpleAvailabilityResultDecoder = object$1({\r\n isAvailable: boolean$1()\r\n});\r\nconst simpleItemIdDecoder = object$1({\r\n itemId: nonEmptyStringDecoder\r\n});\r\nconst operationCheckResultDecoder = object$1({\r\n isSupported: boolean$1()\r\n});\r\nconst operationCheckConfigDecoder = object$1({\r\n operation: nonEmptyStringDecoder\r\n});\r\nconst workspaceFrameBoundsResultDecoder = object$1({\r\n bounds: windowBoundsDecoder\r\n});\r\nconst themeDecoder = object$1({\r\n displayName: nonEmptyStringDecoder,\r\n name: nonEmptyStringDecoder\r\n});\r\nconst simpleThemeResponseDecoder = object$1({\r\n theme: themeDecoder\r\n});\r\nconst allThemesResponseDecoder = object$1({\r\n themes: array$1(themeDecoder)\r\n});\r\nconst selectThemeConfigDecoder = object$1({\r\n name: nonEmptyStringDecoder\r\n});\r\nconst notificationsDataDecoder = object$1({\r\n id: nonEmptyStringDecoder,\r\n title: nonEmptyStringDecoder,\r\n clickInterop: optional$1(interopActionSettingsDecoder),\r\n actions: optional$1(array$1(glue42NotificationActionDecoder)),\r\n focusPlatformOnDefaultClick: optional$1(boolean$1()),\r\n badge: optional$1(string$1()),\r\n body: optional$1(string$1()),\r\n data: optional$1(anyJson$1()),\r\n dir: optional$1(oneOf$1(constant$1(\"auto\"), constant$1(\"ltr\"), constant$1(\"rtl\"))),\r\n icon: optional$1(string$1()),\r\n image: optional$1(string$1()),\r\n lang: optional$1(string$1()),\r\n renotify: optional$1(boolean$1()),\r\n requireInteraction: optional$1(boolean$1()),\r\n silent: optional$1(boolean$1()),\r\n tag: optional$1(string$1()),\r\n timestamp: optional$1(nonNegativeNumberDecoder),\r\n vibrate: optional$1(array$1(number$1())),\r\n severity: optional$1(oneOf$1(constant$1(\"Low\"), constant$1(\"None\"), constant$1(\"Medium\"), constant$1(\"High\"), constant$1(\"Critical\"))),\r\n showToast: optional$1(boolean$1()),\r\n showInPanel: optional$1(boolean$1()),\r\n state: optional$1(notificationStateDecoder)\r\n});\r\nconst simpleNotificationDataDecoder = object$1({\r\n notification: notificationsDataDecoder\r\n});\r\nconst allNotificationsDataDecoder = object$1({\r\n notifications: array$1(notificationsDataDecoder)\r\n});\r\nconst simpleNotificationSelectDecoder = object$1({\r\n id: nonEmptyStringDecoder\r\n});\r\nconst getWindowIdsOnChannelDataDecoder = object$1({\r\n channel: nonEmptyStringDecoder\r\n});\r\nconst getWindowIdsOnChannelResultDecoder = object$1({\r\n windowIds: array$1(nonEmptyStringDecoder)\r\n});\r\nconst channelsOperationTypesDecoder = oneOf$1(constant$1(\"addChannel\"), constant$1(\"getMyChannel\"), constant$1(\"getWindowIdsOnChannel\"), constant$1(\"getWindowIdsWithChannels\"), constant$1(\"joinChannel\"));\r\nconst getMyChanelResultDecoder = object$1({\r\n channel: optional$1(nonEmptyStringDecoder)\r\n});\r\nconst windowWithChannelFilterDecoder = object$1({\r\n application: optional$1(nonEmptyStringDecoder),\r\n channels: optional$1(array$1(nonEmptyStringDecoder)),\r\n windowIds: optional$1(array$1(nonEmptyStringDecoder))\r\n});\r\nconst wrappedWindowWithChannelFilterDecoder = object$1({\r\n filter: optional$1(windowWithChannelFilterDecoder)\r\n});\r\nconst getWindowIdsWithChannelsResultDecoder = object$1({\r\n windowIdsWithChannels: array$1(object$1({\r\n application: nonEmptyStringDecoder,\r\n channel: optional$1(nonEmptyStringDecoder),\r\n windowId: nonEmptyStringDecoder\r\n }))\r\n});\r\nconst startApplicationContextDecoder = optional$1(anyJson$1());\r\nconst startApplicationOptionsDecoder = optional$1(object$1({\r\n top: optional$1(number$1()),\r\n left: optional$1(number$1()),\r\n width: optional$1(nonNegativeNumberDecoder),\r\n height: optional$1(nonNegativeNumberDecoder),\r\n relativeTo: optional$1(nonEmptyStringDecoder),\r\n relativeDirection: optional$1(windowRelativeDirectionDecoder),\r\n waitForAGMReady: optional$1(boolean$1()),\r\n channelId: optional$1(nonEmptyStringDecoder),\r\n reuseId: optional$1(nonEmptyStringDecoder),\r\n}));\r\nconst joinChannelDataDecoder = object$1({\r\n channel: nonEmptyStringDecoder,\r\n windowId: nonEmptyStringDecoder\r\n});\r\nconst windowChannelResultDecoder = object$1({\r\n channel: optional$1(nonEmptyStringDecoder),\r\n});\r\nconst prefsOperationTypesDecoder = oneOf$1(constant$1(\"clear\"), constant$1(\"clearAll\"), constant$1(\"get\"), constant$1(\"getAll\"), constant$1(\"set\"), constant$1(\"update\"), constant$1(\"prefsChanged\"), constant$1(\"prefsHello\"));\r\nconst appPreferencesDecoder = object$1({\r\n app: nonEmptyStringDecoder,\r\n data: object$1(),\r\n lastUpdate: optional$1(nonEmptyStringDecoder),\r\n});\r\nconst basePrefsConfigDecoder = object$1({\r\n app: nonEmptyStringDecoder,\r\n});\r\nconst getPrefsResultDecoder = object$1({\r\n prefs: appPreferencesDecoder,\r\n});\r\nconst getAllPrefsResultDecoder = object$1({\r\n all: array$1(appPreferencesDecoder),\r\n});\r\nconst changePrefsDataDecoder = object$1({\r\n app: nonEmptyStringDecoder,\r\n data: object$1(),\r\n});\r\nconst prefsHelloSuccessDecoder = object$1({\r\n platform: object$1({\r\n app: nonEmptyStringDecoder,\r\n }),\r\n});\n\nconst operations$9 = {\r\n openWindow: { name: \"openWindow\", dataDecoder: openWindowConfigDecoder, resultDecoder: coreWindowDataDecoder },\r\n windowHello: { name: \"windowHello\", dataDecoder: windowHelloDecoder, resultDecoder: helloSuccessDecoder },\r\n windowAdded: { name: \"windowAdded\", dataDecoder: coreWindowDataDecoder },\r\n windowRemoved: { name: \"windowRemoved\", dataDecoder: simpleWindowDecoder },\r\n getBounds: { name: \"getBounds\", dataDecoder: simpleWindowDecoder, resultDecoder: windowBoundsResultDecoder },\r\n getFrameBounds: { name: \"getFrameBounds\", dataDecoder: simpleWindowDecoder, resultDecoder: frameWindowBoundsResultDecoder },\r\n getUrl: { name: \"getUrl\", dataDecoder: simpleWindowDecoder, resultDecoder: windowUrlResultDecoder },\r\n moveResize: { name: \"moveResize\", dataDecoder: windowMoveResizeConfigDecoder },\r\n focus: { name: \"focus\", dataDecoder: simpleWindowDecoder },\r\n close: { name: \"close\", dataDecoder: simpleWindowDecoder },\r\n getTitle: { name: \"getTitle\", dataDecoder: simpleWindowDecoder, resultDecoder: windowTitleConfigDecoder },\r\n setTitle: { name: \"setTitle\", dataDecoder: windowTitleConfigDecoder },\r\n focusChange: { name: \"focusChange\", dataDecoder: focusEventDataDecoder },\r\n getChannel: { name: \"getChannel\", dataDecoder: simpleWindowDecoder, resultDecoder: windowChannelResultDecoder },\r\n};\n\nfunction getDefaultExportFromCjs$1 (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createRegistry$1(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\ncreateRegistry$1.default = createRegistry$1;\nvar lib$3 = createRegistry$1;\n\nclass WebWindowModel {\r\n constructor(_id, _name, _bridge) {\r\n this._id = _id;\r\n this._name = _name;\r\n this._bridge = _bridge;\r\n this.registry = lib$3();\r\n this.myCtxKey = `___window___${this.id}`;\r\n }\r\n get id() {\r\n return this._id.slice();\r\n }\r\n get name() {\r\n return this._name.slice();\r\n }\r\n clean() {\r\n if (this.ctxUnsubscribe) {\r\n this.ctxUnsubscribe();\r\n }\r\n }\r\n processSelfFocusEvent(hasFocus) {\r\n this.me.isFocused = hasFocus;\r\n this.registry.execute(\"focus-change\", this.me);\r\n }\r\n toApi() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.ctxUnsubscribe = yield this._bridge.contextLib.subscribe(this.myCtxKey, (data) => this.registry.execute(\"context-updated\", data));\r\n this.me = {\r\n id: this.id,\r\n name: this.name,\r\n isFocused: false,\r\n getURL: this.getURL.bind(this),\r\n moveResize: this.moveResize.bind(this),\r\n resizeTo: this.resizeTo.bind(this),\r\n moveTo: this.moveTo.bind(this),\r\n focus: this.focus.bind(this),\r\n close: this.close.bind(this),\r\n getTitle: this.getTitle.bind(this),\r\n setTitle: this.setTitle.bind(this),\r\n getBounds: this.getBounds.bind(this),\r\n getContext: this.getContext.bind(this),\r\n updateContext: this.updateContext.bind(this),\r\n setContext: this.setContext.bind(this),\r\n onContextUpdated: this.onContextUpdated.bind(this),\r\n onFocusChanged: this.onFocusChanged.bind(this),\r\n getChannel: this.getChannel.bind(this),\r\n };\r\n return this.me;\r\n });\r\n }\r\n getURL() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const result = yield this._bridge.send(\"windows\", operations$9.getUrl, { windowId: this.id });\r\n return result.url;\r\n });\r\n }\r\n onFocusChanged(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to context changes, because the provided callback is not a function!\");\r\n }\r\n return this.registry.add(\"focus-change\", callback);\r\n }\r\n moveResize(dimension) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const targetBounds = boundsDecoder.runWithException(dimension);\r\n const commandArgs = Object.assign({}, targetBounds, { windowId: this.id, relative: false });\r\n yield this._bridge.send(\"windows\", operations$9.moveResize, commandArgs);\r\n return this.me;\r\n });\r\n }\r\n resizeTo(width, height) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (typeof width === \"undefined\" && typeof height === \"undefined\") {\r\n return this.me;\r\n }\r\n if (typeof width !== \"undefined\") {\r\n nonNegativeNumberDecoder.runWithException(width);\r\n }\r\n if (typeof height !== \"undefined\") {\r\n nonNegativeNumberDecoder.runWithException(height);\r\n }\r\n const commandArgs = Object.assign({}, { width, height }, { windowId: this.id, relative: true });\r\n yield this._bridge.send(\"windows\", operations$9.moveResize, commandArgs);\r\n return this.me;\r\n });\r\n }\r\n moveTo(top, left) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (typeof top === \"undefined\" && typeof left === \"undefined\") {\r\n return this.me;\r\n }\r\n if (typeof top !== \"undefined\") {\r\n number$1().runWithException(top);\r\n }\r\n if (typeof left !== \"undefined\") {\r\n number$1().runWithException(left);\r\n }\r\n const commandArgs = Object.assign({}, { top, left }, { windowId: this.id, relative: true });\r\n yield this._bridge.send(\"windows\", operations$9.moveResize, commandArgs);\r\n return this.me;\r\n });\r\n }\r\n focus() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (this.name === \"Platform\") {\r\n window.open(undefined, this.id);\r\n }\r\n else {\r\n yield this._bridge.send(\"windows\", operations$9.focus, { windowId: this.id });\r\n }\r\n return this.me;\r\n });\r\n }\r\n close() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n yield this._bridge.send(\"windows\", operations$9.close, { windowId: this.id });\r\n return this.me;\r\n });\r\n }\r\n getTitle() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const result = yield this._bridge.send(\"windows\", operations$9.getTitle, { windowId: this.id });\r\n return result.title;\r\n });\r\n }\r\n setTitle(title) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const ttl = nonEmptyStringDecoder.runWithException(title);\r\n yield this._bridge.send(\"windows\", operations$9.setTitle, { windowId: this.id, title: ttl });\r\n return this.me;\r\n });\r\n }\r\n getBounds() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const result = yield this._bridge.send(\"windows\", operations$9.getBounds, { windowId: this.id });\r\n return result.bounds;\r\n });\r\n }\r\n getContext() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const ctx = yield this._bridge.contextLib.get(this.myCtxKey);\r\n return ctx;\r\n });\r\n }\r\n updateContext(context) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const ctx = anyDecoder.runWithException(context);\r\n yield this._bridge.contextLib.update(this.myCtxKey, ctx);\r\n return this.me;\r\n });\r\n }\r\n setContext(context) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const ctx = anyDecoder.runWithException(context);\r\n yield this._bridge.contextLib.set(this.myCtxKey, ctx);\r\n return this.me;\r\n });\r\n }\r\n onContextUpdated(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to context changes, because the provided callback is not a function!\");\r\n }\r\n const wrappedCallback = (data) => {\r\n callback(data, this.me);\r\n };\r\n return this.registry.add(\"context-updated\", wrappedCallback);\r\n }\r\n getChannel() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const result = yield this._bridge.send(\"windows\", operations$9.getChannel, { windowId: this.id }, undefined, { includeOperationCheck: true });\r\n return result.channel;\r\n });\r\n }\r\n}\n\nconst systemOperations = {\r\n operationCheck: { name: \"operationCheck\", dataDecoder: operationCheckConfigDecoder, resultDecoder: operationCheckResultDecoder },\r\n getWorkspaceWindowFrameBounds: { name: \"getWorkspaceWindowFrameBounds\", resultDecoder: workspaceFrameBoundsResultDecoder, dataDecoder: simpleItemIdDecoder }\r\n};\n\nconst PromiseWrap = (promise, timeoutMilliseconds, timeoutMessage) => {\r\n return new Promise((resolve, reject) => {\r\n let promiseActive = true;\r\n const timeout = setTimeout(() => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n promise()\r\n .then((result) => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch((error) => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n};\r\nconst PromisePlus$1 = (executor, timeoutMilliseconds, timeoutMessage) => {\r\n return new Promise((resolve, reject) => {\r\n const timeout = setTimeout(() => {\r\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n const providedPromise = new Promise(executor);\r\n providedPromise\r\n .then((result) => {\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch((error) => {\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n};\n\nclass WindowsController {\r\n constructor() {\r\n this.registry = lib$3();\r\n this.allWindowProjections = [];\r\n }\r\n start(coreGlue, ioc) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.logger = coreGlue.logger.subLogger(\"windows.controller.web\");\r\n this.logger.trace(\"starting the web windows controller\");\r\n this.publicWindowId = ioc.publicWindowId;\r\n this.addWindowOperationExecutors();\r\n this.ioc = ioc;\r\n this.bridge = ioc.bridge;\r\n this.instanceId = coreGlue.interop.instance.instance;\r\n this.channelsController = ioc.channelsController;\r\n this.logger.trace(`set the public window id: ${this.publicWindowId}, set the bridge operations and ioc, registering with the platform now`);\r\n this.platformRegistration = this.registerWithPlatform();\r\n yield this.platformRegistration;\r\n yield this.initializeFocusTracking();\r\n this.logger.trace(\"registration with the platform successful, attaching the windows property to glue and returning\");\r\n const api = this.toApi();\r\n coreGlue.windows = api;\r\n });\r\n }\r\n handlePlatformShutdown() {\r\n this.registry.clear();\r\n this.allWindowProjections = [];\r\n if (!this.focusEventHandler) {\r\n return;\r\n }\r\n document.removeEventListener(\"visibilityChange\", this.focusEventHandler);\r\n window.removeEventListener(\"focus\", this.focusEventHandler);\r\n window.removeEventListener(\"blur\", this.focusEventHandler);\r\n }\r\n handleBridgeMessage(args) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n yield this.platformRegistration;\r\n const operationName = windowOperationTypesDecoder.runWithException(args.operation);\r\n const operation = operations$9[operationName];\r\n if (!operation.execute) {\r\n return;\r\n }\r\n let operationData = args.data;\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n return yield operation.execute(operationData);\r\n });\r\n }\r\n open(name, url, options) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n nonEmptyStringDecoder.runWithException(name);\r\n nonEmptyStringDecoder.runWithException(url);\r\n const settings = windowOpenSettingsDecoder.runWithException(options);\r\n const windowSuccess = yield this.bridge.send(\"windows\", operations$9.openWindow, { name, url, options: settings });\r\n return this.waitForWindowAdded(windowSuccess.windowId);\r\n });\r\n }\r\n list() {\r\n return this.allWindowProjections.map((projection) => projection.api);\r\n }\r\n findById(id) {\r\n var _a;\r\n nonEmptyStringDecoder.runWithException(id);\r\n return (_a = this.allWindowProjections.find((projection) => projection.id === id)) === null || _a === void 0 ? void 0 : _a.api;\r\n }\r\n toApi() {\r\n return {\r\n open: this.open.bind(this),\r\n my: this.my.bind(this),\r\n list: this.list.bind(this),\r\n findById: this.findById.bind(this),\r\n onWindowAdded: this.onWindowAdded.bind(this),\r\n onWindowRemoved: this.onWindowRemoved.bind(this),\r\n onWindowGotFocus: this.onWindowGotFocus.bind(this),\r\n onWindowLostFocus: this.onWindowLostFocus.bind(this)\r\n };\r\n }\r\n addWindowOperationExecutors() {\r\n operations$9.focusChange.execute = this.handleFocusChangeEvent.bind(this);\r\n operations$9.windowAdded.execute = this.handleWindowAdded.bind(this);\r\n operations$9.windowRemoved.execute = this.handleWindowRemoved.bind(this);\r\n operations$9.getBounds.execute = this.handleGetBounds.bind(this);\r\n operations$9.getFrameBounds.execute = this.handleGetBounds.bind(this);\r\n operations$9.getTitle.execute = this.handleGetTitle.bind(this);\r\n operations$9.getUrl.execute = this.handleGetUrl.bind(this);\r\n operations$9.moveResize.execute = this.handleMoveResize.bind(this);\r\n operations$9.setTitle.execute = this.handleSetTitle.bind(this);\r\n operations$9.getChannel.execute = this.handleGetChannel.bind(this);\r\n }\r\n my() {\r\n return Object.assign({}, this.me);\r\n }\r\n onWindowAdded(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to window added, because the provided callback is not a function!\");\r\n }\r\n return this.registry.add(\"window-added\", callback);\r\n }\r\n onWindowRemoved(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to window removed, because the provided callback is not a function!\");\r\n }\r\n return this.registry.add(\"window-removed\", callback);\r\n }\r\n onWindowGotFocus(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to onWindowGotFocus, because the provided callback is not a function!\");\r\n }\r\n return this.registry.add(\"window-got-focus\", callback);\r\n }\r\n onWindowLostFocus(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to onWindowLostFocus, because the provided callback is not a function!\");\r\n }\r\n return this.registry.add(\"window-lost-focus\", callback);\r\n }\r\n sayHello() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const helloSuccess = yield this.bridge.send(\"windows\", operations$9.windowHello, { windowId: this.publicWindowId });\r\n return helloSuccess;\r\n });\r\n }\r\n registerWithPlatform() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const { windows, isWorkspaceFrame } = yield this.sayHello();\r\n this.isWorkspaceFrame = isWorkspaceFrame;\r\n this.logger.trace(\"the platform responded to the hello message\");\r\n if (!this.isWorkspaceFrame && this.publicWindowId) {\r\n this.logger.trace(\"i am not treated as a workspace frame, setting my window\");\r\n const myWindow = windows.find((w) => w.windowId === this.publicWindowId);\r\n if (!myWindow) {\r\n throw new Error(\"Cannot initialize the window library, because I received no information about me from the platform\");\r\n }\r\n const myProjection = yield this.ioc.buildWebWindow(this.publicWindowId, myWindow.name);\r\n this.me = myProjection.api;\r\n this.allWindowProjections.push(myProjection);\r\n }\r\n const currentWindows = yield Promise.all(windows\r\n .filter((w) => w.windowId !== this.publicWindowId)\r\n .map((w) => this.ioc.buildWebWindow(w.windowId, w.name)));\r\n this.logger.trace(\"all windows projections are completed, building the list collection\");\r\n this.allWindowProjections.push(...currentWindows);\r\n });\r\n }\r\n handleFocusChangeEvent(focusData) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const foundProjection = this.allWindowProjections.find((projection) => projection.id === focusData.windowId);\r\n if (!foundProjection) {\r\n return;\r\n }\r\n foundProjection.model.processSelfFocusEvent(focusData.hasFocus);\r\n const keyToExecute = focusData.hasFocus ? \"window-got-focus\" : \"window-lost-focus\";\r\n this.registry.execute(keyToExecute, foundProjection.api);\r\n });\r\n }\r\n handleWindowAdded(data) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (this.allWindowProjections.some((projection) => projection.id === data.windowId)) {\r\n return;\r\n }\r\n const webWindowProjection = yield this.ioc.buildWebWindow(data.windowId, data.name);\r\n this.allWindowProjections.push(webWindowProjection);\r\n this.registry.execute(\"window-added\", webWindowProjection.api);\r\n });\r\n }\r\n handleWindowRemoved(data) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const removed = this.allWindowProjections.find((w) => w.id === data.windowId);\r\n if (!removed) {\r\n return;\r\n }\r\n this.allWindowProjections = this.allWindowProjections.filter((w) => w.id !== data.windowId);\r\n removed.model.clean();\r\n this.registry.execute(\"window-removed\", removed.api);\r\n });\r\n }\r\n handleGetBounds() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (!this.me && !this.isWorkspaceFrame) {\r\n throw new Error(\"This window cannot report it's bounds, because it is not a Glue Window, most likely because it is an iframe\");\r\n }\r\n return {\r\n windowId: this.isWorkspaceFrame ? \"noop\" : this.me.id,\r\n bounds: {\r\n top: window.screenTop,\r\n left: window.screenLeft,\r\n width: window.innerWidth,\r\n height: window.innerHeight\r\n }\r\n };\r\n });\r\n }\r\n handleGetTitle() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (!this.me) {\r\n throw new Error(\"This window cannot report it's title, because it is not a Glue Window, most likely because it is an iframe\");\r\n }\r\n return {\r\n windowId: this.me.id,\r\n title: document.title\r\n };\r\n });\r\n }\r\n handleGetUrl() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (!this.me) {\r\n throw new Error(\"This window cannot report it's url, because it is not a Glue Window, most likely because it is an iframe\");\r\n }\r\n return {\r\n windowId: this.me.id,\r\n url: window.location.href\r\n };\r\n });\r\n }\r\n handleMoveResize(config) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const targetTop = typeof config.top === \"number\" ? config.top :\r\n config.relative ? 0 : window.screenTop;\r\n const targetLeft = typeof config.left === \"number\" ? config.left :\r\n config.relative ? 0 : window.screenLeft;\r\n const targetHeight = typeof config.height === \"number\" ? config.height :\r\n config.relative ? 0 : window.innerHeight;\r\n const targetWidth = typeof config.width === \"number\" ? config.width :\r\n config.relative ? 0 : window.innerWidth;\r\n const moveMethod = config.relative ? window.moveBy : window.moveTo;\r\n const resizeMethod = config.relative ? window.resizeBy : window.resizeTo;\r\n moveMethod(targetLeft, targetTop);\r\n resizeMethod(targetWidth, targetHeight);\r\n });\r\n }\r\n handleSetTitle(config) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n document.title = config.title;\r\n });\r\n }\r\n initializeFocusTracking() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (this.isWorkspaceFrame) {\r\n this.logger.trace(\"Ignoring the focus tracking, because this client is a workspace frame\");\r\n return;\r\n }\r\n try {\r\n yield this.bridge.send(\"windows\", systemOperations.operationCheck, { operation: \"focusChange\" });\r\n }\r\n catch (error) {\r\n this.logger.warn(\"The platform of this client is outdated and does not support focus tracking, disabling focus events for this client.\");\r\n return;\r\n }\r\n const hasFocus = document.hasFocus();\r\n yield this.transmitFocusChange(true);\r\n if (!hasFocus) {\r\n yield this.transmitFocusChange(false);\r\n }\r\n this.defineEventListeners();\r\n });\r\n }\r\n processFocusEvent() {\r\n const hasFocus = document.hasFocus();\r\n this.transmitFocusChange(hasFocus);\r\n }\r\n waitForWindowAdded(windowId) {\r\n const foundWindow = this.allWindowProjections.find((projection) => projection.id === windowId);\r\n if (foundWindow) {\r\n return Promise.resolve(foundWindow.api);\r\n }\r\n return PromisePlus$1((resolve) => {\r\n const unsubscribe = this.onWindowAdded((addedWindow) => {\r\n if (addedWindow.id === windowId) {\r\n unsubscribe();\r\n resolve(addedWindow);\r\n }\r\n });\r\n }, 30000, `Timed out waiting for ${windowId} to be announced`);\r\n }\r\n transmitFocusChange(hasFocus) {\r\n var _a;\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const eventData = {\r\n windowId: ((_a = this.me) === null || _a === void 0 ? void 0 : _a.id) || `iframe-${this.instanceId}`,\r\n hasFocus\r\n };\r\n if (this.me) {\r\n this.me.isFocused = hasFocus;\r\n }\r\n yield this.bridge.send(\"windows\", operations$9.focusChange, eventData);\r\n });\r\n }\r\n defineEventListeners() {\r\n this.focusEventHandler = this.processFocusEvent.bind(this);\r\n document.addEventListener(\"visibilityChange\", this.focusEventHandler);\r\n window.addEventListener(\"focus\", this.focusEventHandler);\r\n window.addEventListener(\"blur\", this.focusEventHandler);\r\n }\r\n handleGetChannel() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (!this.me) {\r\n throw new Error(\"This window cannot report it's channel, because it is not a Glue Window, most likely because it is an iframe\");\r\n }\r\n const channel = this.channelsController.my();\r\n return Object.assign({}, (channel ? { channel } : {}));\r\n });\r\n }\r\n}\n\nconst GlueWebPlatformControlName = \"T42.Web.Platform.Control\";\r\nconst GlueWebPlatformStreamName = \"T42.Web.Platform.Stream\";\r\nconst GlueClientControlName = \"T42.Web.Client.Control\";\r\nconst GlueCorePlusThemesStream = \"T42.Core.Plus.Themes.Stream\";\n\nclass GlueBridge {\r\n constructor(coreGlue, communicationId) {\r\n this.coreGlue = coreGlue;\r\n this.communicationId = communicationId;\r\n this.platformMethodTimeoutMs = 10000;\r\n }\r\n get contextLib() {\r\n return this.coreGlue.contexts;\r\n }\r\n get interopInstance() {\r\n return this.coreGlue.interop.instance.instance;\r\n }\r\n stop() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.running = false;\r\n this.sub.close();\r\n yield this.coreGlue.interop.unregister(GlueClientControlName);\r\n });\r\n }\r\n start(controllers) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.running = true;\r\n this.controllers = controllers;\r\n yield Promise.all([\r\n this.checkWaitMethod(GlueWebPlatformControlName),\r\n this.checkWaitMethod(GlueWebPlatformStreamName)\r\n ]);\r\n const systemId = this.communicationId;\r\n const [sub] = yield Promise.all([\r\n this.coreGlue.interop.subscribe(GlueWebPlatformStreamName, systemId ? { target: { instance: this.communicationId } } : undefined),\r\n this.coreGlue.interop.registerAsync(GlueClientControlName, (args, _, success, error) => this.passMessageController(args, success, error))\r\n ]);\r\n this.sub = sub;\r\n this.sub.onData((pkg) => this.passMessageController(pkg.data));\r\n });\r\n }\r\n getInteropInstance(windowId) {\r\n const result = this.coreGlue.interop.servers().find((s) => s.windowId && s.windowId === windowId);\r\n return {\r\n application: result === null || result === void 0 ? void 0 : result.application,\r\n applicationName: result === null || result === void 0 ? void 0 : result.applicationName,\r\n peerId: result === null || result === void 0 ? void 0 : result.peerId,\r\n instance: result === null || result === void 0 ? void 0 : result.instance,\r\n windowId: result === null || result === void 0 ? void 0 : result.windowId\r\n };\r\n }\r\n send(domain, operation, operationData, options, webOptions) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (operation.dataDecoder) {\r\n try {\r\n operation.dataDecoder.runWithException(operationData);\r\n }\r\n catch (error) {\r\n throw new Error(`Unexpected Web->Platform outgoing validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`);\r\n }\r\n }\r\n const operationSupported = (webOptions === null || webOptions === void 0 ? void 0 : webOptions.includeOperationCheck) ?\r\n (yield this.checkOperationSupported(domain, operation)).isSupported :\r\n true;\r\n if (!operationSupported) {\r\n throw new Error(`Cannot complete operation: ${operation.name} for domain: ${domain} because this client is connected to a platform which does not support it`);\r\n }\r\n try {\r\n const operationResult = yield this.transmitMessage(domain, operation, operationData, options);\r\n if (operation.resultDecoder) {\r\n operation.resultDecoder.runWithException(operationResult);\r\n }\r\n return operationResult;\r\n }\r\n catch (error) {\r\n if (error.kind) {\r\n throw new Error(`Unexpected Web<-Platform incoming validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`);\r\n }\r\n throw new Error(error.message);\r\n }\r\n });\r\n }\r\n createNotificationsSteam() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const streamExists = this.coreGlue.interop.methods().some((method) => method.name === GlueCorePlusThemesStream);\r\n if (!streamExists) {\r\n throw new Error(\"Cannot subscribe to theme changes, because the underlying interop stream does not exist. Most likely this is the case when this client is not connected to Core Plus.\");\r\n }\r\n return this.coreGlue.interop.subscribe(GlueCorePlusThemesStream, this.communicationId ? { target: { instance: this.communicationId } } : undefined);\r\n });\r\n }\r\n checkOperationSupported(domain, operation) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n try {\r\n const result = yield this.send(domain, systemOperations.operationCheck, { operation: operation.name });\r\n return result;\r\n }\r\n catch (error) {\r\n return { isSupported: false };\r\n }\r\n });\r\n }\r\n checkWaitMethod(name) {\r\n return PromisePlus$1((resolve) => {\r\n const hasMethod = this.coreGlue.interop.methods().some((method) => {\r\n const nameMatch = method.name === name;\r\n const serverMatch = this.communicationId ?\r\n method.getServers().some((server) => server.instance === this.communicationId) :\r\n true;\r\n return nameMatch && serverMatch;\r\n });\r\n if (hasMethod) {\r\n return resolve();\r\n }\r\n const unSub = this.coreGlue.interop.serverMethodAdded((data) => {\r\n const method = data.method;\r\n const server = data.server;\r\n const serverMatch = this.communicationId ?\r\n server.instance === this.communicationId :\r\n true;\r\n if (method.name === name && serverMatch) {\r\n unSub();\r\n resolve();\r\n }\r\n });\r\n }, this.platformMethodTimeoutMs, `Cannot initiate Glue Web, because a system method's discovery timed out: ${name}`);\r\n }\r\n passMessageController(args, success, error) {\r\n const decodeResult = libDomainDecoder.run(args.domain);\r\n if (!decodeResult.ok) {\r\n if (error) {\r\n error(`Cannot execute this client control, because of domain validation error: ${JSON.stringify(decodeResult.error)}`);\r\n }\r\n return;\r\n }\r\n const domain = decodeResult.result;\r\n this.controllers[domain]\r\n .handleBridgeMessage(args)\r\n .then((resolutionData) => {\r\n if (success) {\r\n success(resolutionData);\r\n }\r\n })\r\n .catch((err) => {\r\n if (error) {\r\n error(err);\r\n }\r\n console.warn(err);\r\n });\r\n }\r\n transmitMessage(domain, operation, data, options) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const messageData = { domain, data, operation: operation.name };\r\n let invocationResult;\r\n const baseErrorMessage = `Internal Platform Communication Error. Attempted operation: ${JSON.stringify(operation.name)} with data: ${JSON.stringify(data)}. `;\r\n const systemId = this.communicationId;\r\n try {\r\n if (!this.running) {\r\n throw new Error(\"Cannot send a control message, because the platform shut down\");\r\n }\r\n invocationResult = yield this.coreGlue.interop.invoke(GlueWebPlatformControlName, messageData, systemId ? { instance: this.communicationId } : undefined, options);\r\n if (!invocationResult) {\r\n throw new Error(\"Received unsupported result from the platform - empty result\");\r\n }\r\n if (!Array.isArray(invocationResult.all_return_values) || invocationResult.all_return_values.length === 0) {\r\n throw new Error(\"Received unsupported result from the platform - empty values collection\");\r\n }\r\n }\r\n catch (error) {\r\n if (error && error.all_errors && error.all_errors.length) {\r\n const invocationErrorMessage = error.all_errors[0].message;\r\n throw new Error(`${baseErrorMessage} -> Inner message: ${invocationErrorMessage}`);\r\n }\r\n throw new Error(`${baseErrorMessage} -> Inner message: ${error.message}`);\r\n }\r\n return invocationResult.all_return_values[0].returned;\r\n });\r\n }\r\n}\n\nconst operations$8 = {\r\n appHello: { name: \"appHello\", dataDecoder: windowHelloDecoder, resultDecoder: appHelloSuccessDecoder },\r\n appDirectoryStateChange: { name: \"appDirectoryStateChange\", dataDecoder: appDirectoryStateChangeDecoder },\r\n instanceStarted: { name: \"instanceStarted\", dataDecoder: instanceDataDecoder },\r\n instanceStopped: { name: \"instanceStopped\", dataDecoder: instanceDataDecoder },\r\n applicationStart: { name: \"applicationStart\", dataDecoder: applicationStartConfigDecoder, resultDecoder: instanceDataDecoder },\r\n instanceStop: { name: \"instanceStop\", dataDecoder: basicInstanceDataDecoder },\r\n import: { name: \"import\" },\r\n remove: { name: \"remove\", dataDecoder: appRemoveConfigDecoder },\r\n export: { name: \"export\", resultDecoder: appsExportOperationDecoder },\r\n clear: { name: \"clear\" }\r\n};\n\nclass AppManagerController {\r\n constructor() {\r\n this.baseApplicationsTimeoutMS = 60000;\r\n this.appImportTimeoutMS = 20;\r\n this.registry = lib$3();\r\n this.applications = [];\r\n this.instances = [];\r\n }\r\n handlePlatformShutdown() {\r\n this.registry.clear();\r\n this.applications = [];\r\n this.instances = [];\r\n delete this.me;\r\n }\r\n start(coreGlue, ioc) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.logger = coreGlue.logger.subLogger(\"appManger.controller.web\");\r\n this.logger.trace(\"starting the web appManager controller\");\r\n this.publicWindowId = ioc.publicWindowId;\r\n this.addOperationsExecutors();\r\n this.ioc = ioc;\r\n this.bridge = ioc.bridge;\r\n this.channelsController = ioc.channelsController;\r\n this.sessionController = ioc.sessionController;\r\n this.platformRegistration = this.registerWithPlatform();\r\n yield this.platformRegistration;\r\n this.logger.trace(\"registration with the platform successful, attaching the appManager property to glue and returning\");\r\n const api = this.toApi();\r\n coreGlue.appManager = api;\r\n });\r\n }\r\n handleBridgeMessage(args) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n yield this.platformRegistration;\r\n const operationName = appManagerOperationTypesDecoder.runWithException(args.operation);\r\n const operation = operations$8[operationName];\r\n if (!operation.execute) {\r\n return;\r\n }\r\n let operationData = args.data;\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n return yield operation.execute(operationData);\r\n });\r\n }\r\n onInstanceStarted(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onInstanceStarted requires a single argument of type function\");\r\n }\r\n return this.registry.add(\"instance-started\", callback, this.instances);\r\n }\r\n onInstanceStopped(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onInstanceStopped requires a single argument of type function\");\r\n }\r\n return this.registry.add(\"instance-stopped\", callback);\r\n }\r\n startApplication(appName, context, options) {\r\n var _a;\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const channels = yield this.channelsController.all();\r\n if ((options === null || options === void 0 ? void 0 : options.channelId) && !channels.includes(options.channelId)) {\r\n throw new Error(`The channel with name \"${options.channelId}\" doesn't exist!`);\r\n }\r\n const startOptions = {\r\n name: appName,\r\n waitForAGMReady: (_a = options === null || options === void 0 ? void 0 : options.waitForAGMReady) !== null && _a !== void 0 ? _a : true,\r\n context,\r\n top: options === null || options === void 0 ? void 0 : options.top,\r\n left: options === null || options === void 0 ? void 0 : options.left,\r\n width: options === null || options === void 0 ? void 0 : options.width,\r\n height: options === null || options === void 0 ? void 0 : options.height,\r\n relativeTo: options === null || options === void 0 ? void 0 : options.relativeTo,\r\n relativeDirection: options === null || options === void 0 ? void 0 : options.relativeDirection,\r\n id: options === null || options === void 0 ? void 0 : options.reuseId,\r\n forceChromeTab: options === null || options === void 0 ? void 0 : options.forceTab,\r\n layoutComponentId: options === null || options === void 0 ? void 0 : options.layoutComponentId,\r\n channelId: options === null || options === void 0 ? void 0 : options.channelId\r\n };\r\n const openResult = yield this.bridge.send(\"appManager\", operations$8.applicationStart, startOptions);\r\n const app = this.applications.find((a) => a.name === openResult.applicationName);\r\n return this.ioc.buildInstance(openResult, app);\r\n });\r\n }\r\n getApplication(name) {\r\n const verifiedName = nonEmptyStringDecoder.runWithException(name);\r\n return this.applications.find((app) => app.name === verifiedName);\r\n }\r\n getInstances() {\r\n return this.instances.slice();\r\n }\r\n toApi() {\r\n const api = {\r\n myInstance: this.me,\r\n inMemory: {\r\n import: this.import.bind(this),\r\n remove: this.remove.bind(this),\r\n export: this.export.bind(this),\r\n clear: this.clear.bind(this)\r\n },\r\n application: this.getApplication.bind(this),\r\n applications: this.getApplications.bind(this),\r\n instances: this.getInstances.bind(this),\r\n onAppAdded: this.onAppAdded.bind(this),\r\n onAppChanged: this.onAppChanged.bind(this),\r\n onAppRemoved: this.onAppRemoved.bind(this),\r\n onInstanceStarted: this.onInstanceStarted.bind(this),\r\n onInstanceStopped: this.onInstanceStopped.bind(this)\r\n };\r\n return api;\r\n }\r\n addOperationsExecutors() {\r\n operations$8.appDirectoryStateChange.execute = this.handleAppDirectoryStateChange.bind(this);\r\n operations$8.instanceStarted.execute = this.handleInstanceStartedMessage.bind(this);\r\n operations$8.instanceStopped.execute = this.handleInstanceStoppedMessage.bind(this);\r\n }\r\n handleAppDirectoryStateChange(data) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n data.appsAdded.forEach(this.handleApplicationAddedMessage.bind(this));\r\n data.appsChanged.forEach(this.handleApplicationChangedMessage.bind(this));\r\n data.appsRemoved.forEach(this.handleApplicationRemovedMessage.bind(this));\r\n });\r\n }\r\n onAppAdded(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onAppAdded requires a single argument of type function\");\r\n }\r\n return this.registry.add(\"application-added\", callback, this.applications);\r\n }\r\n onAppRemoved(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onAppRemoved requires a single argument of type function\");\r\n }\r\n return this.registry.add(\"application-removed\", callback);\r\n }\r\n onAppChanged(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onAppChanged requires a single argument of type function\");\r\n }\r\n return this.registry.add(\"application-changed\", callback);\r\n }\r\n handleApplicationAddedMessage(appData) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (this.applications.some((app) => app.name === appData.name)) {\r\n return;\r\n }\r\n const app = yield this.ioc.buildApplication(appData, []);\r\n const instances = this.instances.filter((instance) => instance.application.name === app.name);\r\n app.instances.push(...instances);\r\n this.applications.push(app);\r\n this.registry.execute(\"application-added\", app);\r\n });\r\n }\r\n handleApplicationRemovedMessage(appData) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const appIndex = this.applications.findIndex((app) => app.name === appData.name);\r\n if (appIndex < 0) {\r\n return;\r\n }\r\n const app = this.applications[appIndex];\r\n this.applications.splice(appIndex, 1);\r\n this.registry.execute(\"application-removed\", app);\r\n });\r\n }\r\n handleApplicationChangedMessage(appData) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const app = this.applications.find((app) => app.name === appData.name);\r\n if (!app) {\r\n return this.handleApplicationAddedMessage(appData);\r\n }\r\n app.title = appData.title;\r\n app.version = appData.version;\r\n app.icon = appData.icon;\r\n app.caption = appData.caption;\r\n app.userProperties = appData.userProperties;\r\n this.registry.execute(\"application-changed\", app);\r\n });\r\n }\r\n handleInstanceStartedMessage(instanceData) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (this.instances.some((instance) => instance.id === instanceData.id)) {\r\n return;\r\n }\r\n const application = this.applications.find((app) => app.name === instanceData.applicationName);\r\n if (!application) {\r\n throw new Error(`Cannot add instance: ${instanceData.id}, because there is no application definition associated with it`);\r\n }\r\n const instance = this.ioc.buildInstance(instanceData, application);\r\n this.instances.push(instance);\r\n application.instances.push(instance);\r\n this.registry.execute(\"instance-started\", instance);\r\n });\r\n }\r\n handleInstanceStoppedMessage(instanceData) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const instance = this.instances.find((i) => i.id === instanceData.id);\r\n if (instance) {\r\n const instIdx = this.instances.findIndex((inst) => inst.id === instanceData.id);\r\n this.instances.splice(instIdx, 1);\r\n }\r\n const application = this.applications.find((app) => app.instances.some((inst) => inst.id === instanceData.id));\r\n if (application) {\r\n const instIdxApps = application.instances.findIndex((inst) => inst.id === instanceData.id);\r\n application.instances.splice(instIdxApps, 1);\r\n }\r\n if (!instance) {\r\n return;\r\n }\r\n this.registry.execute(\"instance-stopped\", instance);\r\n });\r\n }\r\n import(definitions, mode = \"replace\") {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n importModeDecoder.runWithException(mode);\r\n if (!Array.isArray(definitions)) {\r\n throw new Error(\"Import must be called with an array of definitions\");\r\n }\r\n if (definitions.length > 10000) {\r\n throw new Error(\"Cannot import more than 10000 app definitions in Glue42 Core.\");\r\n }\r\n const parseResult = definitions.reduce((soFar, definition) => {\r\n const decodeResult = allApplicationDefinitionsDecoder.run(definition);\r\n if (!decodeResult.ok) {\r\n soFar.invalid.push({ app: definition === null || definition === void 0 ? void 0 : definition.name, error: JSON.stringify(decodeResult.error) });\r\n }\r\n else {\r\n soFar.valid.push(definition);\r\n }\r\n return soFar;\r\n }, { valid: [], invalid: [] });\r\n const responseTimeout = this.baseApplicationsTimeoutMS + this.appImportTimeoutMS * parseResult.valid.length;\r\n yield this.bridge.send(\"appManager\", operations$8.import, { definitions: parseResult.valid, mode }, { methodResponseTimeoutMs: responseTimeout });\r\n return {\r\n imported: parseResult.valid.map((valid) => valid.name),\r\n errors: parseResult.invalid\r\n };\r\n });\r\n }\r\n remove(name) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n nonEmptyStringDecoder.runWithException(name);\r\n yield this.bridge.send(\"appManager\", operations$8.remove, { name }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\r\n });\r\n }\r\n clear() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n yield this.bridge.send(\"appManager\", operations$8.clear, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\r\n });\r\n }\r\n export() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const response = yield this.bridge.send(\"appManager\", operations$8.export, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\r\n return response.definitions;\r\n });\r\n }\r\n getApplications() {\r\n return this.applications.slice();\r\n }\r\n joinInitialChannel(initialChannelId) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n try {\r\n yield this.channelsController.join(initialChannelId);\r\n }\r\n catch (error) {\r\n this.logger.warn(`Application instance ${this.me} was unable to join the ${initialChannelId} channel. Reason: ${JSON.stringify(error)}`);\r\n }\r\n });\r\n }\r\n registerWithPlatform() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const result = yield this.bridge.send(\"appManager\", operations$8.appHello, { windowId: this.publicWindowId }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\r\n this.logger.trace(\"the platform responded to the hello message with a full list of apps\");\r\n this.applications = yield Promise.all(result.apps.map((app) => this.ioc.buildApplication(app, app.instances)));\r\n this.instances = this.applications.reduce((instancesSoFar, app) => {\r\n instancesSoFar.push(...app.instances);\r\n return instancesSoFar;\r\n }, []);\r\n this.me = this.findMyInstance();\r\n this.logger.trace(`all applications were parsed and saved. I am ${this.me ? \"NOT a\" : \"a\"} valid instance`);\r\n const { channels: channelsStorageData } = this.sessionController.getWindowData();\r\n const channel = channelsStorageData ? channelsStorageData.currentName : result.initialChannelId;\r\n if (channel) {\r\n yield this.joinInitialChannel(channel);\r\n }\r\n });\r\n }\r\n findMyInstance() {\r\n for (const app of this.applications) {\r\n const foundInstance = app.instances.find((instance) => instance.id === this.publicWindowId);\r\n if (foundInstance) {\r\n return foundInstance;\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\n\nclass InstanceModel {\r\n constructor(data, bridge, application) {\r\n this.data = data;\r\n this.bridge = bridge;\r\n this.application = application;\r\n this.myCtxKey = `___instance___${this.data.id}`;\r\n }\r\n toApi() {\r\n const agm = this.bridge.getInteropInstance(this.data.id);\r\n const api = {\r\n id: this.data.id,\r\n agm,\r\n application: this.application,\r\n stop: this.stop.bind(this),\r\n getContext: this.getContext.bind(this)\r\n };\r\n this.me = Object.freeze(api);\r\n return this.me;\r\n }\r\n getContext() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n return this.bridge.contextLib.get(this.myCtxKey);\r\n });\r\n }\r\n stop() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n yield this.bridge.send(\"appManager\", operations$8.instanceStop, { id: this.data.id });\r\n });\r\n }\r\n}\n\nclass ApplicationModel {\r\n constructor(data, instances, controller) {\r\n this.data = data;\r\n this.instances = instances;\r\n this.controller = controller;\r\n }\r\n toApi() {\r\n const api = {\r\n name: this.data.name,\r\n title: this.data.title,\r\n version: this.data.version,\r\n icon: this.data.icon,\r\n caption: this.data.caption,\r\n userProperties: this.data.userProperties,\r\n instances: this.instances,\r\n start: this.start.bind(this),\r\n onInstanceStarted: this.onInstanceStarted.bind(this),\r\n onInstanceStopped: this.onInstanceStopped.bind(this)\r\n };\r\n this.me = api;\r\n return this.me;\r\n }\r\n onInstanceStarted(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"OnInstanceStarted requires a single argument of type function\");\r\n }\r\n return this.controller.onInstanceStarted((instance) => {\r\n if (instance.application.name === this.data.name) {\r\n callback(instance);\r\n }\r\n });\r\n }\r\n onInstanceStopped(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"OnInstanceStarted requires a single argument of type function\");\r\n }\r\n return this.controller.onInstanceStopped((instance) => {\r\n if (instance.application.name === this.data.name) {\r\n callback(instance);\r\n }\r\n });\r\n }\r\n start(context, options) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const verifiedContext = startApplicationContextDecoder.runWithException(context);\r\n const verifiedOptions = startApplicationOptionsDecoder.runWithException(options);\r\n return this.controller.startApplication(this.data.name, verifiedContext, verifiedOptions);\r\n });\r\n }\r\n}\n\nconst operations$7 = {\r\n layoutAdded: { name: \"layoutAdded\", dataDecoder: glueLayoutDecoder },\r\n layoutChanged: { name: \"layoutChanged\", dataDecoder: glueLayoutDecoder },\r\n layoutRemoved: { name: \"layoutRemoved\", dataDecoder: glueLayoutDecoder },\r\n get: { name: \"get\", dataDecoder: simpleLayoutConfigDecoder, resultDecoder: optionalSimpleLayoutResult },\r\n getAll: { name: \"getAll\", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsSummariesResultDecoder },\r\n export: { name: \"export\", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsFullConfigDecoder },\r\n import: { name: \"import\", dataDecoder: layoutsImportConfigDecoder },\r\n remove: { name: \"remove\", dataDecoder: simpleLayoutConfigDecoder },\r\n save: { name: \"save\", dataDecoder: saveLayoutConfigDecoder, resultDecoder: simpleLayoutResultDecoder },\r\n restore: { name: \"restore\", dataDecoder: restoreLayoutConfigDecoder },\r\n clientSaveRequest: { name: \"clientSaveRequest\", dataDecoder: platformSaveRequestConfigDecoder, resultDecoder: saveRequestClientResponseDecoder },\r\n getGlobalPermissionState: { name: \"getGlobalPermissionState\", resultDecoder: permissionStateResultDecoder },\r\n requestGlobalPermission: { name: \"requestGlobalPermission\", resultDecoder: simpleAvailabilityResultDecoder },\r\n checkGlobalActivated: { name: \"checkGlobalActivated\", resultDecoder: simpleAvailabilityResultDecoder },\r\n getDefaultGlobal: { name: \"getDefaultGlobal\", resultDecoder: optionalSimpleLayoutResult },\r\n setDefaultGlobal: { name: \"setDefaultGlobal\", dataDecoder: setDefaultGlobalConfigDecoder },\r\n clearDefaultGlobal: { name: \"clearDefaultGlobal\" }\r\n};\n\nclass LayoutsController {\r\n constructor() {\r\n this.defaultLayoutRestoreTimeoutMS = 120000;\r\n this.registry = lib$3();\r\n }\r\n handlePlatformShutdown() {\r\n this.registry.clear();\r\n }\r\n start(coreGlue, ioc) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.logger = coreGlue.logger.subLogger(\"layouts.controller.web\");\r\n this.logger.trace(\"starting the web layouts controller\");\r\n this.bridge = ioc.bridge;\r\n this.windowsController = ioc.windowsController;\r\n this.addOperationsExecutors();\r\n const api = this.toApi();\r\n this.logger.trace(\"no need for platform registration, attaching the layouts property to glue and returning\");\r\n coreGlue.layouts = api;\r\n });\r\n }\r\n handleBridgeMessage(args) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const operationName = layoutsOperationTypesDecoder.runWithException(args.operation);\r\n const operation = operations$7[operationName];\r\n if (!operation.execute) {\r\n return;\r\n }\r\n let operationData = args.data;\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n return yield operation.execute(operationData);\r\n });\r\n }\r\n toApi() {\r\n const api = {\r\n get: this.get.bind(this),\r\n getAll: this.getAll.bind(this),\r\n export: this.export.bind(this),\r\n import: this.import.bind(this),\r\n save: this.save.bind(this),\r\n restore: this.restore.bind(this),\r\n remove: this.remove.bind(this),\r\n onAdded: this.onAdded.bind(this),\r\n onChanged: this.onChanged.bind(this),\r\n onRemoved: this.onRemoved.bind(this),\r\n onSaveRequested: this.subscribeOnSaveRequested.bind(this),\r\n getMultiScreenPermissionState: this.getGlobalPermissionState.bind(this),\r\n requestMultiScreenPermission: this.requestGlobalPermission.bind(this),\r\n getGlobalTypeState: this.checkGlobalActivated.bind(this),\r\n getDefaultGlobal: this.getDefaultGlobal.bind(this),\r\n setDefaultGlobal: this.setDefaultGlobal.bind(this),\r\n clearDefaultGlobal: this.clearDefaultGlobal.bind(this)\r\n };\r\n return Object.freeze(api);\r\n }\r\n addOperationsExecutors() {\r\n operations$7.layoutAdded.execute = this.handleOnAdded.bind(this);\r\n operations$7.layoutChanged.execute = this.handleOnChanged.bind(this);\r\n operations$7.layoutRemoved.execute = this.handleOnRemoved.bind(this);\r\n operations$7.clientSaveRequest.execute = this.handleSaveRequest.bind(this);\r\n }\r\n get(name, type) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n nonEmptyStringDecoder.runWithException(name);\r\n layoutTypeDecoder.runWithException(type);\r\n const result = yield this.bridge.send(\"layouts\", operations$7.get, { name, type });\r\n return result.layout;\r\n });\r\n }\r\n getAll(type) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n layoutTypeDecoder.runWithException(type);\r\n const result = yield this.bridge.send(\"layouts\", operations$7.getAll, { type });\r\n return result.summaries;\r\n });\r\n }\r\n export(type) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n layoutTypeDecoder.runWithException(type);\r\n const result = yield this.bridge.send(\"layouts\", operations$7.export, { type });\r\n return result.layouts;\r\n });\r\n }\r\n import(layouts, mode = \"replace\") {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n importModeDecoder.runWithException(mode);\r\n if (!Array.isArray(layouts)) {\r\n throw new Error(\"Import must be called with an array of layouts\");\r\n }\r\n if (layouts.length > 1000) {\r\n throw new Error(\"Cannot import more than 1000 layouts at once in Glue42 Core.\");\r\n }\r\n const parseResult = layouts.reduce((soFar, layout) => {\r\n const decodeResult = glueLayoutDecoder.run(layout);\r\n if (decodeResult.ok) {\r\n soFar.valid.push(layout);\r\n }\r\n else {\r\n this.logger.warn(`A layout with name: ${layout.name} was not imported, because of error: ${JSON.stringify(decodeResult.error)}`);\r\n }\r\n return soFar;\r\n }, { valid: [] });\r\n const layoutsToImport = layouts.filter((layout) => parseResult.valid.some((validLayout) => validLayout.name === layout.name));\r\n yield this.bridge.send(\"layouts\", operations$7.import, { layouts: layoutsToImport, mode });\r\n });\r\n }\r\n save(layout) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n newLayoutOptionsDecoder.runWithException(layout);\r\n const saveResult = yield this.bridge.send(\"layouts\", operations$7.save, { layout });\r\n return saveResult.layout;\r\n });\r\n }\r\n restore(options) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n restoreOptionsDecoder.runWithException(options);\r\n const invocationTimeout = options.timeout ? options.timeout * 2 : this.defaultLayoutRestoreTimeoutMS;\r\n yield this.bridge.send(\"layouts\", operations$7.restore, { layout: options }, { methodResponseTimeoutMs: invocationTimeout });\r\n });\r\n }\r\n remove(type, name) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n layoutTypeDecoder.runWithException(type);\r\n nonEmptyStringDecoder.runWithException(name);\r\n yield this.bridge.send(\"layouts\", operations$7.remove, { type, name });\r\n });\r\n }\r\n handleSaveRequest(config) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const response = {};\r\n if (this.saveRequestSubscription) {\r\n try {\r\n const onSaveRequestResponse = this.saveRequestSubscription(config);\r\n response.windowContext = onSaveRequestResponse === null || onSaveRequestResponse === void 0 ? void 0 : onSaveRequestResponse.windowContext;\r\n }\r\n catch (error) {\r\n this.logger.warn(`An error was thrown by the onSaveRequested callback, ignoring the callback: ${JSON.stringify(error)}`);\r\n }\r\n }\r\n return response;\r\n });\r\n }\r\n getGlobalPermissionState() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const requestResult = yield this.bridge.send(\"layouts\", operations$7.getGlobalPermissionState, undefined);\r\n return requestResult;\r\n });\r\n }\r\n requestGlobalPermission() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const currentState = (yield this.getGlobalPermissionState()).state;\r\n if (currentState === \"denied\") {\r\n return { permissionGranted: false };\r\n }\r\n if (currentState === \"granted\") {\r\n return { permissionGranted: true };\r\n }\r\n const myWindow = this.windowsController.my();\r\n const globalNamespace = window.glue42core || window.iobrowser;\r\n const amIWorkspaceFrame = globalNamespace.isPlatformFrame;\r\n if (myWindow.name !== \"Platform\" && !amIWorkspaceFrame) {\r\n throw new Error(\"Cannot request permission for multi-window placement from any app other than the Platform.\");\r\n }\r\n const requestResult = yield this.bridge.send(\"layouts\", operations$7.requestGlobalPermission, undefined, { methodResponseTimeoutMs: 180000 });\r\n return { permissionGranted: requestResult.isAvailable };\r\n });\r\n }\r\n checkGlobalActivated() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const requestResult = yield this.bridge.send(\"layouts\", operations$7.checkGlobalActivated, undefined);\r\n return { activated: requestResult.isAvailable };\r\n });\r\n }\r\n getDefaultGlobal() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const requestResult = yield this.bridge.send(\"layouts\", operations$7.getDefaultGlobal, undefined, undefined, { includeOperationCheck: true });\r\n return requestResult.layout;\r\n });\r\n }\r\n setDefaultGlobal(name) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n nonEmptyStringDecoder.runWithException(name);\r\n yield this.bridge.send(\"layouts\", operations$7.setDefaultGlobal, { name }, undefined, { includeOperationCheck: true });\r\n });\r\n }\r\n clearDefaultGlobal() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n yield this.bridge.send(\"layouts\", operations$7.clearDefaultGlobal, undefined, undefined, { includeOperationCheck: true });\r\n });\r\n }\r\n onAdded(callback) {\r\n this.export(\"Global\").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => { });\r\n this.export(\"Workspace\").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => { });\r\n return this.registry.add(operations$7.layoutAdded.name, callback);\r\n }\r\n onChanged(callback) {\r\n return this.registry.add(operations$7.layoutChanged.name, callback);\r\n }\r\n onRemoved(callback) {\r\n return this.registry.add(operations$7.layoutRemoved.name, callback);\r\n }\r\n subscribeOnSaveRequested(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to onSaveRequested, because the provided argument is not a valid callback function.\");\r\n }\r\n if (this.saveRequestSubscription) {\r\n throw new Error(\"Cannot subscribe to onSaveRequested, because this client has already subscribed and only one subscription is supported. Consider unsubscribing from the initial one.\");\r\n }\r\n this.saveRequestSubscription = callback;\r\n return () => {\r\n delete this.saveRequestSubscription;\r\n };\r\n }\r\n handleOnAdded(layout) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.registry.execute(operations$7.layoutAdded.name, layout);\r\n });\r\n }\r\n handleOnChanged(layout) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.registry.execute(operations$7.layoutChanged.name, layout);\r\n });\r\n }\r\n handleOnRemoved(layout) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.registry.execute(operations$7.layoutRemoved.name, layout);\r\n });\r\n }\r\n}\n\nconst operations$6 = {\r\n raiseNotification: { name: \"raiseNotification\", dataDecoder: raiseNotificationDecoder, resultDecoder: raiseNotificationResultDecoder },\r\n requestPermission: { name: \"requestPermission\", resultDecoder: permissionRequestResultDecoder },\r\n notificationShow: { name: \"notificationShow\", dataDecoder: notificationEventPayloadDecoder },\r\n notificationClick: { name: \"notificationClick\", dataDecoder: notificationEventPayloadDecoder },\r\n getPermission: { name: \"getPermission\", resultDecoder: permissionQueryResultDecoder },\r\n list: { name: \"list\", resultDecoder: allNotificationsDataDecoder },\r\n notificationRaised: { name: \"notificationRaised\", dataDecoder: simpleNotificationDataDecoder },\r\n notificationClosed: { name: \"notificationClosed\", dataDecoder: simpleNotificationSelectDecoder },\r\n click: { name: \"click\" },\r\n clear: { name: \"clear\" },\r\n clearAll: { name: \"clearAll\" },\r\n clearOld: { name: \"clearOld\" },\r\n configure: { name: \"configure\", dataDecoder: notificationsConfigurationProtocolDecoder },\r\n getConfiguration: { name: \"getConfiguration\", resultDecoder: strictNotificationsConfigurationProtocolDecoder },\r\n configurationChanged: { name: \"configurationChanged\", resultDecoder: strictNotificationsConfigurationProtocolDecoder },\r\n setState: { name: \"setState\", dataDecoder: notificationSetStateRequestDecoder },\r\n activeCountChange: { name: \"activeCountChange\", resultDecoder: activeNotificationsCountChangeDecoder },\r\n stateChange: { name: \"stateChange\", resultDecoder: notificationSetStateRequestDecoder }\r\n};\n\nvar shortidExports$1 = {};\nvar shortid$3 = {\n get exports(){ return shortidExports$1; },\n set exports(v){ shortidExports$1 = v; },\n};\n\nvar libExports$1 = {};\nvar lib$2 = {\n get exports(){ return libExports$1; },\n set exports(v){ libExports$1 = v; },\n};\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed$1 = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue$1() {\n seed$1 = (seed$1 * 9301 + 49297) % 233280;\n return seed$1/(233280.0);\n}\n\nfunction setSeed$3(_seed_) {\n seed$1 = _seed_;\n}\n\nvar randomFromSeed$3 = {\n nextValue: getNextValue$1,\n seed: setSeed$3\n};\n\nvar randomFromSeed$2 = randomFromSeed$3;\n\nvar ORIGINAL$1 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet$5;\nvar previousSeed$1;\n\nvar shuffled$1;\n\nfunction reset$1() {\n shuffled$1 = false;\n}\n\nfunction setCharacters$1(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet$5 !== ORIGINAL$1) {\n alphabet$5 = ORIGINAL$1;\n reset$1();\n }\n return;\n }\n\n if (_alphabet_ === alphabet$5) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL$1.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL$1.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL$1.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet$5 = _alphabet_;\n reset$1();\n}\n\nfunction characters$1(_alphabet_) {\n setCharacters$1(_alphabet_);\n return alphabet$5;\n}\n\nfunction setSeed$2(seed) {\n randomFromSeed$2.seed(seed);\n if (previousSeed$1 !== seed) {\n reset$1();\n previousSeed$1 = seed;\n }\n}\n\nfunction shuffle$1() {\n if (!alphabet$5) {\n setCharacters$1(ORIGINAL$1);\n }\n\n var sourceArray = alphabet$5.split('');\n var targetArray = [];\n var r = randomFromSeed$2.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed$2.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled$1() {\n if (shuffled$1) {\n return shuffled$1;\n }\n shuffled$1 = shuffle$1();\n return shuffled$1;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup$1(index) {\n var alphabetShuffled = getShuffled$1();\n return alphabetShuffled[index];\n}\n\nfunction get$1 () {\n return alphabet$5 || ORIGINAL$1;\n}\n\nvar alphabet_1$1 = {\n get: get$1,\n characters: characters$1,\n seed: setSeed$2,\n lookup: lookup$1,\n shuffled: getShuffled$1\n};\n\nvar crypto$1 = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte$1;\n\nif (!crypto$1 || !crypto$1.getRandomValues) {\n randomByte$1 = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte$1 = function(size) {\n return crypto$1.getRandomValues(new Uint8Array(size));\n };\n}\n\nvar randomByteBrowser$1 = randomByte$1;\n\n// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nvar format_browser$1 = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1;\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length);\n var id = '';\n\n while (true) {\n var bytes = random(step);\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step;\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || '';\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id\n }\n }\n};\n\nvar alphabet$4 = alphabet_1$1;\nvar random$1 = randomByteBrowser$1;\nvar format$1 = format_browser$1;\n\nfunction generate$3(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format$1(random$1, alphabet$4.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nvar generate_1$1 = generate$3;\n\nvar generate$2 = generate_1$1;\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME$1 = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version$3 = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter$1;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds$1;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build$1(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME$1) * 0.001);\n\n if (seconds === previousSeconds$1) {\n counter$1++;\n } else {\n counter$1 = 0;\n previousSeconds$1 = seconds;\n }\n\n str = str + generate$2(version$3);\n str = str + generate$2(clusterWorkerId);\n if (counter$1 > 0) {\n str = str + generate$2(counter$1);\n }\n str = str + generate$2(seconds);\n return str;\n}\n\nvar build_1$1 = build$1;\n\nvar alphabet$3 = alphabet_1$1;\n\nfunction isShortId$1(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet$3.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nvar isValid$1 = isShortId$1;\n\n(function (module) {\n\n\tvar alphabet = alphabet_1$1;\n\tvar build = build_1$1;\n\tvar isValid = isValid$1;\n\n\t// if you are using cluster or multiple servers use this to make each instance\n\t// has a unique value for worker\n\t// Note: I don't know if this is automatically set when using third\n\t// party cluster solutions such as pm2.\n\tvar clusterWorkerId = 0;\n\n\t/**\n\t * Set the seed.\n\t * Highly recommended if you don't want people to try to figure out your id schema.\n\t * exposed as shortid.seed(int)\n\t * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n\t */\n\tfunction seed(seedValue) {\n\t alphabet.seed(seedValue);\n\t return module.exports;\n\t}\n\n\t/**\n\t * Set the cluster worker or machine id\n\t * exposed as shortid.worker(int)\n\t * @param workerId worker must be positive integer. Number less than 16 is recommended.\n\t * returns shortid module so it can be chained.\n\t */\n\tfunction worker(workerId) {\n\t clusterWorkerId = workerId;\n\t return module.exports;\n\t}\n\n\t/**\n\t *\n\t * sets new characters to use in the alphabet\n\t * returns the shuffled alphabet\n\t */\n\tfunction characters(newCharacters) {\n\t if (newCharacters !== undefined) {\n\t alphabet.characters(newCharacters);\n\t }\n\n\t return alphabet.shuffled();\n\t}\n\n\t/**\n\t * Generate unique id\n\t * Returns string id\n\t */\n\tfunction generate() {\n\t return build(clusterWorkerId);\n\t}\n\n\t// Export all other functions as properties of the generate function\n\tmodule.exports = generate;\n\tmodule.exports.generate = generate;\n\tmodule.exports.seed = seed;\n\tmodule.exports.worker = worker;\n\tmodule.exports.characters = characters;\n\tmodule.exports.isValid = isValid;\n} (lib$2));\n\n(function (module) {\n\tmodule.exports = libExports$1;\n} (shortid$3));\n\nvar shortid$2 = /*@__PURE__*/getDefaultExportFromCjs$1(shortidExports$1);\n\nclass NotificationsController {\r\n constructor() {\r\n this.registry = lib$3();\r\n this.notifications = {};\r\n }\r\n handlePlatformShutdown() {\r\n this.notifications = {};\r\n this.registry.clear();\r\n }\r\n start(coreGlue, ioc) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.logger = coreGlue.logger.subLogger(\"notifications.controller.web\");\r\n this.logger.trace(\"starting the web notifications controller\");\r\n this.bridge = ioc.bridge;\r\n this.coreGlue = coreGlue;\r\n this.notificationsSettings = ioc.config.notifications;\r\n this.buildNotificationFunc = ioc.buildNotification;\r\n const api = this.toApi();\r\n this.addOperationExecutors();\r\n coreGlue.notifications = api;\r\n this.logger.trace(\"notifications are ready\");\r\n });\r\n }\r\n handleBridgeMessage(args) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const operationName = notificationsOperationTypesDecoder.runWithException(args.operation);\r\n const operation = operations$6[operationName];\r\n if (!operation.execute) {\r\n return;\r\n }\r\n let operationData = args.data;\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n return yield operation.execute(operationData);\r\n });\r\n }\r\n toApi() {\r\n const api = {\r\n raise: this.raise.bind(this),\r\n requestPermission: this.requestPermission.bind(this),\r\n getPermission: this.getPermission.bind(this),\r\n list: this.list.bind(this),\r\n onRaised: this.onRaised.bind(this),\r\n onClosed: this.onClosed.bind(this),\r\n click: this.click.bind(this),\r\n clear: this.clear.bind(this),\r\n clearAll: this.clearAll.bind(this),\r\n clearOld: this.clearOld.bind(this),\r\n configure: this.configure.bind(this),\r\n getConfiguration: this.getConfiguration.bind(this),\r\n getFilter: this.getFilter.bind(this),\r\n setFilter: this.setFilter.bind(this),\r\n setState: this.setState.bind(this),\r\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\r\n onActiveCountChanged: this.onActiveCountChanged.bind(this),\r\n onStateChanged: this.onStateChanged.bind(this)\r\n };\r\n return Object.freeze(api);\r\n }\r\n getPermission() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const queryResult = yield this.bridge.send(\"notifications\", operations$6.getPermission, undefined);\r\n return queryResult.permission;\r\n });\r\n }\r\n requestPermission() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const permissionResult = yield this.bridge.send(\"notifications\", operations$6.requestPermission, undefined);\r\n return permissionResult.permissionGranted;\r\n });\r\n }\r\n raise(options) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const settings = glue42NotificationOptionsDecoder.runWithException(options);\r\n settings.showToast = typeof settings.showToast === \"boolean\" ? settings.showToast : true;\r\n settings.showInPanel = typeof settings.showInPanel === \"boolean\" ? settings.showInPanel : true;\r\n const permissionGranted = yield this.requestPermission();\r\n if (!permissionGranted) {\r\n throw new Error(\"Cannot raise the notification, because the user has declined the permission request\");\r\n }\r\n const id = shortidExports$1.generate();\r\n const raiseResult = yield this.bridge.send(\"notifications\", operations$6.raiseNotification, { settings, id });\r\n const notification = this.buildNotificationFunc(raiseResult.settings, id);\r\n this.notifications[id] = notification;\r\n return notification;\r\n });\r\n }\r\n list() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const bridgeResponse = yield this.bridge.send(\"notifications\", operations$6.list, undefined, undefined, { includeOperationCheck: true });\r\n return bridgeResponse.notifications;\r\n });\r\n }\r\n onRaised(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onRaised expects a callback of type function\");\r\n }\r\n return this.registry.add(\"notification-raised\", callback);\r\n }\r\n onClosed(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onRaised expects a callback of type function\");\r\n }\r\n return this.registry.add(\"notification-closed\", callback);\r\n }\r\n click(id, action) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n nonEmptyStringDecoder.runWithException(id);\r\n if (action) {\r\n nonEmptyStringDecoder.runWithException(action);\r\n }\r\n yield this.bridge.send(\"notifications\", operations$6.click, { id, action }, undefined, { includeOperationCheck: true });\r\n });\r\n }\r\n clear(id) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n nonEmptyStringDecoder.runWithException(id);\r\n yield this.bridge.send(\"notifications\", operations$6.clear, { id }, undefined, { includeOperationCheck: true });\r\n });\r\n }\r\n clearAll() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n yield this.bridge.send(\"notifications\", operations$6.clearAll, undefined, undefined, { includeOperationCheck: true });\r\n });\r\n }\r\n clearOld() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n yield this.bridge.send(\"notifications\", operations$6.clearOld, undefined, undefined, { includeOperationCheck: true });\r\n });\r\n }\r\n configure(config) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const verifiedConfig = notificationsConfigurationDecoder.runWithException(config);\r\n yield this.bridge.send(\"notifications\", operations$6.configure, { configuration: verifiedConfig }, undefined, { includeOperationCheck: true });\r\n });\r\n }\r\n getConfiguration() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const response = yield this.bridge.send(\"notifications\", operations$6.getConfiguration, undefined, undefined, { includeOperationCheck: true });\r\n return response.configuration;\r\n });\r\n }\r\n getFilter() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const response = yield this.bridge.send(\"notifications\", operations$6.getConfiguration, undefined, undefined, { includeOperationCheck: true });\r\n return response.configuration.sourceFilter;\r\n });\r\n }\r\n setFilter(filter) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const verifiedFilter = notificationFilterDecoder.runWithException(filter);\r\n yield this.bridge.send(\"notifications\", operations$6.configure, { configuration: { sourceFilter: verifiedFilter } }, undefined, { includeOperationCheck: true });\r\n return verifiedFilter;\r\n });\r\n }\r\n setState(id, state) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n nonEmptyStringDecoder.runWithException(id);\r\n notificationStateDecoder.runWithException(state);\r\n yield this.bridge.send(\"notifications\", operations$6.setState, { id, state }, undefined, { includeOperationCheck: true });\r\n });\r\n }\r\n onConfigurationChanged(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to configuration changed, because the provided callback is not a function!\");\r\n }\r\n return this.registry.add(\"notifications-config-changed\", callback);\r\n }\r\n onActiveCountChanged(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to onActiveCountChanged changed, because the provided callback is not a function!\");\r\n }\r\n return this.registry.add(\"notifications-active-count-changed\", callback);\r\n }\r\n onStateChanged(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to onStateChanged changed, because the provided callback is not a function!\");\r\n }\r\n return this.registry.add(\"notification-state-changed\", callback);\r\n }\r\n addOperationExecutors() {\r\n operations$6.notificationShow.execute = this.handleNotificationShow.bind(this);\r\n operations$6.notificationClick.execute = this.handleNotificationClick.bind(this);\r\n operations$6.notificationRaised.execute = this.handleNotificationRaised.bind(this);\r\n operations$6.notificationClosed.execute = this.handleNotificationClosed.bind(this);\r\n operations$6.configurationChanged.execute = this.handleConfigurationChanged.bind(this);\r\n operations$6.activeCountChange.execute = this.handleActiveCountChanged.bind(this);\r\n operations$6.stateChange.execute = this.handleNotificationStateChanged.bind(this);\r\n }\r\n handleConfigurationChanged(data) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.registry.execute(\"notifications-config-changed\", data.configuration);\r\n });\r\n }\r\n handleActiveCountChanged(data) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.registry.execute(\"notifications-active-count-changed\", data);\r\n });\r\n }\r\n handleNotificationStateChanged(data) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.registry.execute(\"notification-state-changed\", { id: data.id }, data.state);\r\n });\r\n }\r\n handleNotificationShow(data) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (!data.id) {\r\n return;\r\n }\r\n const notification = this.notifications[data.id];\r\n if (notification && notification.onshow) {\r\n notification.onshow();\r\n }\r\n });\r\n }\r\n handleNotificationClick(data) {\r\n var _a, _b, _c, _d, _e;\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (!data.action && ((_a = this.notificationsSettings) === null || _a === void 0 ? void 0 : _a.defaultClick)) {\r\n this.notificationsSettings.defaultClick(this.coreGlue, data.definition);\r\n }\r\n if (data.action && ((_c = (_b = this.notificationsSettings) === null || _b === void 0 ? void 0 : _b.actionClicks) === null || _c === void 0 ? void 0 : _c.some((actionDef) => actionDef.action === data.action))) {\r\n const foundHandler = (_e = (_d = this.notificationsSettings) === null || _d === void 0 ? void 0 : _d.actionClicks) === null || _e === void 0 ? void 0 : _e.find((actionDef) => actionDef.action === data.action);\r\n foundHandler.handler(this.coreGlue, data.definition);\r\n }\r\n if (!data.id) {\r\n return;\r\n }\r\n const notification = this.notifications[data.id];\r\n if (notification && notification.onclick) {\r\n notification.onclick();\r\n delete this.notifications[data.id];\r\n }\r\n });\r\n }\r\n handleNotificationRaised(data) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.registry.execute(\"notification-raised\", data.notification);\r\n });\r\n }\r\n handleNotificationClosed(data) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.registry.execute(\"notification-closed\", data);\r\n });\r\n }\r\n}\n\nconst operations$5 = {\r\n getIntents: { name: \"getIntents\", resultDecoder: wrappedIntentsDecoder },\r\n findIntent: { name: \"findIntent\", dataDecoder: wrappedIntentFilterDecoder, resultDecoder: wrappedIntentsDecoder },\r\n raiseIntent: { name: \"raiseIntent\", dataDecoder: intentRequestDecoder, resultDecoder: intentResultDecoder },\r\n raise: { name: \"raise\", dataDecoder: raiseIntentRequestDecoder, resultDecoder: intentResultDecoder },\r\n filterHandlers: { name: \"filterHandlers\", dataDecoder: filterHandlersWithResolverConfigDecoder, resultDecoder: filterHandlersResultDecoder },\r\n getIntentsByHandler: { name: \"getIntentsByHandler\", dataDecoder: intentHandlerDecoder, resultDecoder: getIntentsResultDecoder }\r\n};\n\nconst GLUE42_FDC3_INTENTS_METHOD_PREFIX = \"Tick42.FDC3.Intents.\";\r\nconst INTENTS_RESOLVER_INTEROP_PREFIX = \"T42.Intents.Resolver.Control.\";\r\nconst INTENTS_RESOLVER_APP_NAME = \"intentsResolver\";\r\nconst DEFAULT_RESOLVER_RESPONSE_TIMEOUT = 60 * 1000;\r\nconst ADDITIONAL_BRIDGE_OPERATION_TIMEOUT = 30 * 1000;\r\nconst INTENTS_RESOLVER_WIDTH = 400;\r\nconst INTENTS_RESOLVER_HEIGHT = 440;\r\nconst MAX_SET_TIMEOUT_DELAY = 2147483647;\r\nconst DEFAULT_PICK_HANDLER_BY_TIMEOUT = 90 * 1000;\n\nclass IntentsController {\r\n constructor() {\r\n this.myIntents = new Set();\r\n this.useIntentsResolverUI = true;\r\n this.unregisterIntentPromises = [];\r\n }\r\n start(coreGlue, ioc) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.logger = coreGlue.logger.subLogger(\"intents.controller.web\");\r\n this.logger.trace(\"starting the web intents controller\");\r\n this.bridge = ioc.bridge;\r\n this.interop = coreGlue.interop;\r\n this.legacyIntentsController = ioc.legacyIntentsHelper;\r\n this.checkIfIntentsResolverIsEnabled(ioc.config);\r\n const api = this.toApi();\r\n this.logger.trace(\"no need for platform registration, attaching the intents property to glue and returning\");\r\n coreGlue.intents = api;\r\n });\r\n }\r\n handlePlatformShutdown() {\r\n this.myIntents = new Set();\r\n this.unregisterIntentPromises = [];\r\n }\r\n handleBridgeMessage(args) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const operationName = intentsOperationTypesDecoder.runWithException(args.operation);\r\n const operation = operations$5[operationName];\r\n if (!operation.execute) {\r\n return;\r\n }\r\n let operationData = args.data;\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n return yield operation.execute(operationData);\r\n });\r\n }\r\n toApi() {\r\n const api = {\r\n raise: this.raise.bind(this),\r\n all: this.all.bind(this),\r\n addIntentListener: this.addIntentListener.bind(this),\r\n register: this.register.bind(this),\r\n find: this.find.bind(this),\r\n filterHandlers: this.filterHandlers.bind(this),\r\n getIntents: this.getIntentsByHandler.bind(this)\r\n };\r\n return api;\r\n }\r\n raise(request) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const validatedIntentRequest = raiseRequestDecoder.runWithException(request);\r\n const intentRequest = typeof validatedIntentRequest === \"string\"\r\n ? { intent: validatedIntentRequest }\r\n : validatedIntentRequest;\r\n yield Promise.all(this.unregisterIntentPromises);\r\n const requestWithResolverInfo = { intentRequest, resolverConfig: this.getResolverConfigByRequest({ intentRequest }) };\r\n const isRaiseOperationSupported = yield this.isRaiseOperationSupported();\r\n if (!isRaiseOperationSupported.supported) {\r\n this.logger.warn(`${isRaiseOperationSupported.reason}. Invoking legacy raise method`);\r\n return this.legacyIntentsController.raise(requestWithResolverInfo, this.find.bind(this));\r\n }\r\n this.logger.trace(`Sending raise request to the platform: ${JSON.stringify(request)} and method response timeout of ${this.intentResolverResponseTimeout}ms`);\r\n const methodResponseTimeoutMs = intentRequest.waitUserResponseIndefinitely\r\n ? MAX_SET_TIMEOUT_DELAY\r\n : (intentRequest.timeout || this.intentResolverResponseTimeout) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT;\r\n const response = yield this.bridge.send(\"intents\", operations$5.raise, requestWithResolverInfo, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs });\r\n return response;\r\n });\r\n }\r\n getResolverConfigByRequest(filter) {\r\n var _a, _b, _c, _d;\r\n if (filter.handlerFilter) {\r\n return {\r\n enabled: typeof ((_a = filter.handlerFilter) === null || _a === void 0 ? void 0 : _a.openResolver) === \"boolean\" ? (_b = filter.handlerFilter) === null || _b === void 0 ? void 0 : _b.openResolver : this.useIntentsResolverUI,\r\n appName: this.intentsResolverAppName,\r\n waitResponseTimeout: ((_c = filter.handlerFilter) === null || _c === void 0 ? void 0 : _c.timeout) || DEFAULT_PICK_HANDLER_BY_TIMEOUT\r\n };\r\n }\r\n const waitResponseTimeout = ((_d = filter.intentRequest) === null || _d === void 0 ? void 0 : _d.waitUserResponseIndefinitely) ? MAX_SET_TIMEOUT_DELAY : this.intentResolverResponseTimeout;\r\n return {\r\n enabled: this.useIntentsResolverUI,\r\n appName: this.intentsResolverAppName,\r\n waitResponseTimeout\r\n };\r\n }\r\n isRaiseOperationSupported() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n try {\r\n const { isSupported } = yield this.bridge.send(\"intents\", systemOperations.operationCheck, { operation: \"raise\" });\r\n return {\r\n supported: isSupported,\r\n reason: isSupported ? \"\" : \"The platform of this client is outdated and does not support \\\"raise\\\" operation\"\r\n };\r\n }\r\n catch (error) {\r\n return {\r\n supported: false,\r\n reason: \"The platform of this client is outdated and does not support \\\"operationCheck\\\" command\"\r\n };\r\n }\r\n });\r\n }\r\n all() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n yield Promise.all(this.unregisterIntentPromises);\r\n const result = yield this.bridge.send(\"intents\", operations$5.getIntents, undefined);\r\n return result.intents;\r\n });\r\n }\r\n addIntentListener(intent, handler) {\r\n AddIntentListenerDecoder.runWithException(intent);\r\n if (typeof handler !== \"function\") {\r\n throw new Error(\"Cannot add intent listener, because the provided handler is not a function!\");\r\n }\r\n let registerPromise;\r\n const intentName = typeof intent === \"string\" ? intent : intent.intent;\r\n const methodName = this.buildInteropMethodName(intentName);\r\n const alreadyRegistered = this.myIntents.has(intentName);\r\n if (alreadyRegistered) {\r\n throw new Error(`Intent listener for intent ${intentName} already registered!`);\r\n }\r\n this.myIntents.add(intentName);\r\n const result = {\r\n unsubscribe: () => {\r\n this.myIntents.delete(intentName);\r\n registerPromise\r\n .then(() => this.interop.unregister(methodName))\r\n .catch((err) => this.logger.trace(`Unregistration of a method with name ${methodName} failed with reason: ${err}`));\r\n }\r\n };\r\n let intentFlag = {};\r\n if (typeof intent === \"object\") {\r\n const rest = __rest$2(intent, [\"intent\"]);\r\n intentFlag = rest;\r\n }\r\n registerPromise = this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args) => {\r\n if (this.myIntents.has(intentName)) {\r\n const rest = __rest$2(args, [\"_initialCallerId\"]);\r\n return handler(rest);\r\n }\r\n });\r\n registerPromise.catch(err => {\r\n this.myIntents.delete(intentName);\r\n this.logger.warn(`Registration of a method with name ${methodName} failed with reason: ${err}`);\r\n });\r\n return result;\r\n }\r\n register(intent, handler) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n AddIntentListenerDecoder.runWithException(intent);\r\n if (typeof handler !== \"function\") {\r\n throw new Error(\"Cannot add intent listener, because the provided handler is not a function!\");\r\n }\r\n yield Promise.all(this.unregisterIntentPromises);\r\n const intentName = typeof intent === \"string\" ? intent : intent.intent;\r\n const methodName = this.buildInteropMethodName(intentName);\r\n const alreadyRegistered = this.myIntents.has(intentName);\r\n if (alreadyRegistered) {\r\n throw new Error(`Intent listener for intent ${intentName} already registered!`);\r\n }\r\n this.myIntents.add(intentName);\r\n let intentFlag = {};\r\n if (typeof intent === \"object\") {\r\n const rest = __rest$2(intent, [\"intent\"]);\r\n intentFlag = rest;\r\n }\r\n try {\r\n yield this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args) => {\r\n if (this.myIntents.has(intentName)) {\r\n const { _initialCallerId } = args, rest = __rest$2(args, [\"_initialCallerId\"]);\r\n const caller = this.interop.servers().find((server) => server.instance === _initialCallerId);\r\n return handler(rest, caller);\r\n }\r\n });\r\n }\r\n catch (err) {\r\n this.myIntents.delete(intentName);\r\n throw new Error(`Registration of a method with name ${methodName} failed with reason: ${JSON.stringify(err)}`);\r\n }\r\n return {\r\n unsubscribe: () => this.unsubscribeIntent(intentName)\r\n };\r\n });\r\n }\r\n find(intentFilter) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n let data = undefined;\r\n if (typeof intentFilter !== \"undefined\") {\r\n const intentFilterObj = findFilterDecoder.runWithException(intentFilter);\r\n if (typeof intentFilterObj === \"string\") {\r\n data = {\r\n filter: {\r\n name: intentFilterObj\r\n }\r\n };\r\n }\r\n else if (typeof intentFilterObj === \"object\") {\r\n data = {\r\n filter: intentFilterObj\r\n };\r\n }\r\n }\r\n yield Promise.all(this.unregisterIntentPromises);\r\n const result = yield this.bridge.send(\"intents\", operations$5.findIntent, data);\r\n return result.intents;\r\n });\r\n }\r\n checkIfIntentsResolverIsEnabled(options) {\r\n var _a, _b, _c, _d, _e;\r\n this.useIntentsResolverUI = typeof ((_a = options.intents) === null || _a === void 0 ? void 0 : _a.enableIntentsResolverUI) === \"boolean\"\r\n ? options.intents.enableIntentsResolverUI\r\n : true;\r\n this.intentsResolverAppName = (_c = (_b = options.intents) === null || _b === void 0 ? void 0 : _b.intentsResolverAppName) !== null && _c !== void 0 ? _c : INTENTS_RESOLVER_APP_NAME;\r\n this.intentResolverResponseTimeout = (_e = (_d = options.intents) === null || _d === void 0 ? void 0 : _d.methodResponseTimeoutMs) !== null && _e !== void 0 ? _e : DEFAULT_RESOLVER_RESPONSE_TIMEOUT;\r\n }\r\n clearUnregistrationPromise(promiseToRemove) {\r\n this.unregisterIntentPromises = this.unregisterIntentPromises.filter(promise => promise !== promiseToRemove);\r\n }\r\n buildInteropMethodName(intentName) {\r\n return `${GLUE42_FDC3_INTENTS_METHOD_PREFIX}${intentName}`;\r\n }\r\n unsubscribeIntent(intentName) {\r\n this.myIntents.delete(intentName);\r\n const methodName = this.buildInteropMethodName(intentName);\r\n const unregisterPromise = this.interop.unregister(methodName);\r\n this.unregisterIntentPromises.push(unregisterPromise);\r\n unregisterPromise\r\n .then(() => {\r\n this.clearUnregistrationPromise(unregisterPromise);\r\n })\r\n .catch((err) => {\r\n this.logger.error(`Unregistration of a method with name ${methodName} failed with reason: ${err}`);\r\n this.clearUnregistrationPromise(unregisterPromise);\r\n });\r\n }\r\n filterHandlers(handlerFilter) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n handlersFilterDecoder.runWithException(handlerFilter);\r\n this.checkIfAtLeastOneFilterIsPresent(handlerFilter);\r\n if (handlerFilter.openResolver && !this.useIntentsResolverUI) {\r\n throw new Error(\"Cannot resolve 'filterHandlers' request using Intents Resolver UI because it's globally disabled\");\r\n }\r\n const methodResponseTimeoutMs = (handlerFilter.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT;\r\n const filterHandlersRequestWithResolverConfig = { filterHandlersRequest: handlerFilter, resolverConfig: this.getResolverConfigByRequest({ handlerFilter }) };\r\n const result = yield this.bridge.send(\"intents\", operations$5.filterHandlers, filterHandlersRequestWithResolverConfig, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }, { includeOperationCheck: true });\r\n return result;\r\n });\r\n }\r\n checkIfAtLeastOneFilterIsPresent(filter) {\r\n const errorMsg = \"Provide at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'\";\r\n if (!Object.keys(filter).length) {\r\n throw new Error(errorMsg);\r\n }\r\n const { intent, resultType, contextTypes, applicationNames } = filter;\r\n const existingValidContextTypes = contextTypes === null || contextTypes === void 0 ? void 0 : contextTypes.length;\r\n const existingValidApplicationNames = applicationNames === null || applicationNames === void 0 ? void 0 : applicationNames.length;\r\n if (!intent && !resultType && !existingValidContextTypes && !existingValidApplicationNames) {\r\n throw new Error(errorMsg);\r\n }\r\n }\r\n getIntentsByHandler(handler) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n intentHandlerDecoder.runWithException(handler);\r\n const result = yield this.bridge.send(\"intents\", operations$5.getIntentsByHandler, handler, undefined, { includeOperationCheck: true });\r\n return result;\r\n });\r\n }\r\n}\n\nconst Glue42CoreMessageTypes = {\r\n platformUnload: { name: \"platformUnload\" },\r\n transportSwitchRequest: { name: \"transportSwitchRequest\" },\r\n transportSwitchResponse: { name: \"transportSwitchResponse\" },\r\n getCurrentTransport: { name: \"getCurrentTransport\" },\r\n getCurrentTransportResponse: { name: \"getCurrentTransportResponse\" },\r\n checkPreferredLogic: { name: \"checkPreferredLogic\" },\r\n checkPreferredConnection: { name: \"checkPreferredConnection\" },\r\n checkPreferredLogicResponse: { name: \"checkPreferredLogicResponse\" },\r\n checkPreferredConnectionResponse: { name: \"checkPreferredConnectionResponse\" }\r\n};\r\nconst webPlatformTransportName = \"web-platform\";\r\nconst latestFDC3Type = \"latest_fdc3_type\";\n\nconst operations$4 = {\r\n addChannel: { name: \"addChannel\", dataDecoder: channelContextDecoder },\r\n getMyChannel: { name: \"getMyChannel\", resultDecoder: getMyChanelResultDecoder },\r\n getWindowIdsOnChannel: { name: \"getWindowIdsOnChannel\", dataDecoder: getWindowIdsOnChannelDataDecoder, resultDecoder: getWindowIdsOnChannelResultDecoder },\r\n getWindowIdsWithChannels: { name: \"getWindowIdsWithChannels\", dataDecoder: wrappedWindowWithChannelFilterDecoder, resultDecoder: getWindowIdsWithChannelsResultDecoder },\r\n joinChannel: { name: \"joinChannel\", dataDecoder: joinChannelDataDecoder },\r\n};\n\nclass ChannelsController {\r\n constructor() {\r\n this.registry = lib$3();\r\n this.GlueWebChannelsPrefix = \"___channel___\";\r\n this.SubsKey = \"subs\";\r\n this.ChangedKey = \"changed\";\r\n this.replaySubscribe = (callback, channelId) => {\r\n this.get(channelId)\r\n .then((channelContext) => {\r\n if (typeof channelContext.data === \"object\" && Object.keys(channelContext.data).length) {\r\n const contextName = this.createContextName(channelContext.name);\r\n return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\r\n callback(context.data, context, extraData === null || extraData === void 0 ? void 0 : extraData.updaterId);\r\n });\r\n }\r\n return undefined;\r\n })\r\n .then((un) => {\r\n if (un && typeof un === \"function\") {\r\n un();\r\n }\r\n })\r\n .catch(err => this.logger.trace(err));\r\n };\r\n }\r\n handlePlatformShutdown() {\r\n this.registry.clear();\r\n }\r\n addOperationsExecutors() {\r\n operations$4.getMyChannel.execute = this.handleGetMyChannel.bind(this);\r\n operations$4.joinChannel.execute = this.handleJoinChannel.bind(this);\r\n }\r\n start(coreGlue, ioc) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.logger = coreGlue.logger.subLogger(\"channels.controller.web\");\r\n this.logger.trace(\"starting the web channels controller\");\r\n this.contexts = coreGlue.contexts;\r\n this.addOperationsExecutors();\r\n this.bridge = ioc.bridge;\r\n this.windowsController = ioc.windowsController;\r\n this.sessionController = ioc.sessionController;\r\n this.logger.trace(\"no need for platform registration, attaching the channels property to glue and returning\");\r\n const api = this.toApi();\r\n coreGlue.channels = api;\r\n });\r\n }\r\n handleBridgeMessage(args) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const operationName = channelsOperationTypesDecoder.runWithException(args.operation);\r\n const operation = operations$4[operationName];\r\n if (!operation.execute) {\r\n return;\r\n }\r\n let operationData = args.data;\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n return yield operation.execute(operationData);\r\n });\r\n }\r\n list() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const channelNames = this.getAllChannelNames();\r\n const channelContexts = yield Promise.all(channelNames.map((channelName) => this.get(channelName)));\r\n return channelContexts;\r\n });\r\n }\r\n my() {\r\n return this.current();\r\n }\r\n handleGetMyChannel() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const channel = this.my();\r\n return channel ? { channel } : {};\r\n });\r\n }\r\n join(name, windowId) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const channelNames = this.getAllChannelNames();\r\n channelNameDecoder(channelNames).runWithException(name);\r\n optionalNonEmptyStringDecoder.runWithException(windowId);\r\n if (!windowId || windowId === this.windowsController.my().id) {\r\n yield this.switchToChannel(name);\r\n }\r\n else {\r\n yield this.bridge.send(\"channels\", operations$4.joinChannel, { channel: name, windowId }, undefined, { includeOperationCheck: true });\r\n }\r\n });\r\n }\r\n handleJoinChannel({ channel, windowId }) {\r\n return this.join(channel, windowId);\r\n }\r\n onChanged(callback) {\r\n return this.changed(callback);\r\n }\r\n leave() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n yield this.switchToChannel();\r\n });\r\n }\r\n toApi() {\r\n const api = {\r\n subscribe: this.subscribe.bind(this),\r\n subscribeFor: this.subscribeFor.bind(this),\r\n publish: this.publish.bind(this),\r\n all: this.all.bind(this),\r\n list: this.list.bind(this),\r\n get: this.get.bind(this),\r\n join: this.join.bind(this),\r\n leave: this.leave.bind(this),\r\n current: this.current.bind(this),\r\n my: this.my.bind(this),\r\n changed: this.changed.bind(this),\r\n onChanged: this.onChanged.bind(this),\r\n add: this.add.bind(this),\r\n getMy: this.getMy.bind(this),\r\n getWindowsOnChannel: this.getWindowsOnChannel.bind(this),\r\n getWindowsWithChannels: this.getWindowsWithChannels.bind(this),\r\n };\r\n return Object.freeze(api);\r\n }\r\n createContextName(channelName) {\r\n return `${this.GlueWebChannelsPrefix}${channelName}`;\r\n }\r\n getAllChannelNames() {\r\n const contextNames = this.contexts.all();\r\n const channelContextNames = contextNames.filter((contextName) => contextName.startsWith(this.GlueWebChannelsPrefix));\r\n const channelNames = channelContextNames.map((channelContextName) => channelContextName.replace(this.GlueWebChannelsPrefix, \"\"));\r\n return channelNames;\r\n }\r\n unsubscribe() {\r\n if (this.unsubscribeFunc) {\r\n this.unsubscribeFunc();\r\n this.unsubscribeFunc = undefined;\r\n }\r\n }\r\n switchToChannel(name) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.unsubscribe();\r\n this.currentChannelName = name;\r\n if (typeof name !== \"undefined\") {\r\n const contextName = this.createContextName(name);\r\n this.unsubscribeFunc = yield this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\r\n this.registry.execute(this.SubsKey, context.data, context, extraData === null || extraData === void 0 ? void 0 : extraData.updaterId);\r\n });\r\n }\r\n this.registry.execute(this.ChangedKey, name);\r\n this.sessionController.setWindowData({ currentName: name }, \"channels\");\r\n });\r\n }\r\n updateData(name, data) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const contextName = this.createContextName(name);\r\n const fdc3Type = this.getFDC3Type(data);\r\n if (this.contexts.setPathSupported) {\r\n const pathValues = Object.keys(data).map((key) => {\r\n return {\r\n path: `data.${key}`,\r\n value: data[key]\r\n };\r\n });\r\n if (fdc3Type) {\r\n pathValues.push({ path: latestFDC3Type, value: fdc3Type });\r\n }\r\n yield this.contexts.setPaths(contextName, pathValues);\r\n }\r\n else {\r\n if (fdc3Type) {\r\n data[latestFDC3Type] = fdc3Type;\r\n }\r\n yield this.contexts.update(contextName, { data });\r\n }\r\n });\r\n }\r\n getFDC3Type(data) {\r\n const fdc3PropsArr = Object.keys(data).filter((key) => key.indexOf(\"fdc3_\") === 0);\r\n if (fdc3PropsArr.length === 0) {\r\n return;\r\n }\r\n if (fdc3PropsArr.length > 1) {\r\n throw new Error(\"FDC3 does not support updating of multiple context keys\");\r\n }\r\n return fdc3PropsArr[0].split(\"_\").slice(1).join(\"_\");\r\n }\r\n subscribe(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to channels, because the provided callback is not a function!\");\r\n }\r\n const currentChannel = this.current();\r\n if (currentChannel) {\r\n this.replaySubscribe(callback, currentChannel);\r\n }\r\n return this.registry.add(this.SubsKey, callback);\r\n }\r\n subscribeFor(name, callback) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const channelNames = this.getAllChannelNames();\r\n channelNameDecoder(channelNames).runWithException(name);\r\n if (typeof callback !== \"function\") {\r\n throw new Error(`Cannot subscribe to channel ${name}, because the provided callback is not a function!`);\r\n }\r\n const contextName = this.createContextName(name);\r\n return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\r\n callback(context.data, context, extraData === null || extraData === void 0 ? void 0 : extraData.updaterId);\r\n });\r\n });\r\n }\r\n publish(data, name) {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Cannot publish to channel, because the provided data is not an object!\");\r\n }\r\n if (typeof name !== \"undefined\") {\r\n const channelNames = this.getAllChannelNames();\r\n channelNameDecoder(channelNames).runWithException(name);\r\n return this.updateData(name, data);\r\n }\r\n if (typeof this.currentChannelName === \"undefined\") {\r\n throw new Error(\"Cannot publish to channel, because not joined to a channel!\");\r\n }\r\n return this.updateData(this.currentChannelName, data);\r\n }\r\n all() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const channelNames = this.getAllChannelNames();\r\n return channelNames;\r\n });\r\n }\r\n get(name) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const channelNames = this.getAllChannelNames();\r\n channelNameDecoder(channelNames).runWithException(name);\r\n const contextName = this.createContextName(name);\r\n const channelContext = yield this.contexts.get(contextName);\r\n if (channelContext.latest_fdc3_type) {\r\n const rest = __rest$2(channelContext, [\"latest_fdc3_type\"]);\r\n return Object.assign({}, rest);\r\n }\r\n return channelContext;\r\n });\r\n }\r\n current() {\r\n return this.currentChannelName;\r\n }\r\n changed(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to channel changed, because the provided callback is not a function!\");\r\n }\r\n return this.registry.add(this.ChangedKey, callback);\r\n }\r\n add(info) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const channelContext = channelContextDecoder.runWithException(info);\r\n const channelWithSuchNameExists = this.getAllChannelNames().includes(channelContext.name);\r\n if (channelWithSuchNameExists) {\r\n throw new Error(\"There's an already existing channel with such name\");\r\n }\r\n yield this.bridge.send(\"channels\", operations$4.addChannel, channelContext);\r\n return channelContext;\r\n });\r\n }\r\n getMy() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (!this.currentChannelName) {\r\n return;\r\n }\r\n return this.get(this.currentChannelName);\r\n });\r\n }\r\n getWindowsOnChannel(channel) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const channelNames = this.getAllChannelNames();\r\n channelNameDecoder(channelNames).runWithException(channel);\r\n const { windowIds } = yield this.bridge.send(\"channels\", operations$4.getWindowIdsOnChannel, { channel }, undefined, { includeOperationCheck: true });\r\n const result = windowIds.reduce((windows, windowId) => {\r\n const window = this.windowsController.findById(windowId);\r\n return window ? [...windows, window] : windows;\r\n }, []);\r\n return result;\r\n });\r\n }\r\n getWindowsWithChannels(filter) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const operationData = filter !== undefined\r\n ? { filter: windowWithChannelFilterDecoder.runWithException(filter) }\r\n : {};\r\n const { windowIdsWithChannels } = yield this.bridge.send(\"channels\", operations$4.getWindowIdsWithChannels, operationData, undefined, { includeOperationCheck: true });\r\n const result = windowIdsWithChannels.reduce((windowsWithChannels, { application, channel, windowId }) => {\r\n const window = this.windowsController.findById(windowId);\r\n return window ? [...windowsWithChannels, { application, channel, window }] : windowsWithChannels;\r\n }, []);\r\n return result;\r\n });\r\n }\r\n}\n\nconst operations$3 = {\r\n getEnvironment: { name: \"getEnvironment\", resultDecoder: anyDecoder },\r\n getBase: { name: \"getBase\", resultDecoder: anyDecoder },\r\n platformShutdown: { name: \"platformShutdown\" }\r\n};\n\nclass SystemController {\r\n start(coreGlue, ioc) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.bridge = ioc.bridge;\r\n this.ioc = ioc;\r\n this.addOperationsExecutors();\r\n yield this.setEnvironment();\r\n });\r\n }\r\n handleBridgeMessage(args) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const operationName = systemOperationTypesDecoder.runWithException(args.operation);\r\n const operation = operations$3[operationName];\r\n if (!operation.execute) {\r\n return;\r\n }\r\n let operationData = args.data;\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n return yield operation.execute(operationData);\r\n });\r\n }\r\n processPlatformShutdown() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n Object.values(this.ioc.controllers).forEach((controller) => controller.handlePlatformShutdown ? controller.handlePlatformShutdown() : null);\r\n this.ioc.preferredConnectionController.stop();\r\n this.ioc.eventsDispatcher.stop();\r\n yield this.bridge.stop();\r\n });\r\n }\r\n setEnvironment() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const environment = yield this.bridge.send(\"system\", operations$3.getEnvironment, undefined);\r\n const base = yield this.bridge.send(\"system\", operations$3.getBase, undefined);\r\n const globalNamespace = window.glue42core || window.iobrowser;\r\n const globalNamespaceName = window.glue42core ? \"glue42core\" : \"iobrowser\";\r\n const globalObj = Object.assign({}, globalNamespace, base, { environment });\r\n window[globalNamespaceName] = Object.freeze(globalObj);\r\n });\r\n }\r\n addOperationsExecutors() {\r\n operations$3.platformShutdown.execute = this.processPlatformShutdown.bind(this);\r\n }\r\n}\n\nclass Notification {\r\n constructor(config, id) {\r\n this.onclick = () => { };\r\n this.onshow = () => { };\r\n this.id = id;\r\n this.badge = config.badge;\r\n this.body = config.body;\r\n this.data = config.data;\r\n this.dir = config.dir;\r\n this.icon = config.icon;\r\n this.image = config.image;\r\n this.lang = config.lang;\r\n this.renotify = config.renotify;\r\n this.requireInteraction = config.requireInteraction;\r\n this.silent = config.silent;\r\n this.tag = config.tag;\r\n this.timestamp = config.timestamp;\r\n this.vibrate = config.vibrate;\r\n this.title = config.title;\r\n this.clickInterop = config.clickInterop;\r\n this.actions = config.actions;\r\n this.focusPlatformOnDefaultClick = config.focusPlatformOnDefaultClick;\r\n this.severity = config.severity;\r\n this.showToast = config.showToast;\r\n this.showInPanel = config.showInPanel;\r\n this.state = config.state;\r\n }\r\n}\n\noneOf$1(constant$1(\"clientHello\"));\r\nconst extensionConfigDecoder = object$1({\r\n widget: object$1({\r\n inject: boolean$1()\r\n })\r\n});\n\nconst operations$2 = {\r\n clientHello: { name: \"clientHello\", resultDecoder: extensionConfigDecoder }\r\n};\n\nclass ExtController {\r\n constructor() {\r\n this.channels = [];\r\n this.unsubFuncs = [];\r\n this.contentCommands = {\r\n widgetVisualizationPermission: { name: \"widgetVisualizationPermission\", handle: this.handleWidgetVisualizationPermission.bind(this) },\r\n changeChannel: { name: \"changeChannel\", handle: this.handleChangeChannel.bind(this) }\r\n };\r\n }\r\n handlePlatformShutdown() {\r\n this.unsubFuncs.forEach((unsub) => unsub());\r\n this.channels = [];\r\n this.unsubFuncs = [];\r\n }\r\n start(coreGlue, ioc) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.logger = coreGlue.logger.subLogger(\"extension.controller.web\");\r\n this.windowId = ioc.publicWindowId;\r\n this.logger.trace(\"starting the extension web controller\");\r\n this.bridge = ioc.bridge;\r\n this.channelsController = ioc.channelsController;\r\n this.eventsDispatcher = ioc.eventsDispatcher;\r\n try {\r\n yield this.registerWithPlatform();\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n this.channels = yield this.channelsController.list();\r\n const unsubDispatcher = this.eventsDispatcher.onContentMessage(this.handleContentMessage.bind(this));\r\n const unsubChannels = this.channelsController.onChanged((channel) => {\r\n this.eventsDispatcher.sendContentMessage({ command: \"channelChange\", newChannel: channel });\r\n });\r\n this.unsubFuncs.push(unsubDispatcher);\r\n this.unsubFuncs.push(unsubChannels);\r\n });\r\n }\r\n handleBridgeMessage(_) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n });\r\n }\r\n handleContentMessage(message) {\r\n if (!message || typeof message.command !== \"string\") {\r\n return;\r\n }\r\n const foundHandler = this.contentCommands[message.command];\r\n if (!foundHandler) {\r\n return;\r\n }\r\n foundHandler.handle(message);\r\n }\r\n registerWithPlatform() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.logger.trace(\"registering with the platform\");\r\n this.config = yield this.bridge.send(\"extension\", operations$2.clientHello, { windowId: this.windowId });\r\n this.logger.trace(\"the platform responded to the hello message with a valid extension config\");\r\n });\r\n }\r\n handleWidgetVisualizationPermission() {\r\n var _a;\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (!((_a = this.config) === null || _a === void 0 ? void 0 : _a.widget.inject)) {\r\n return this.eventsDispatcher.sendContentMessage({ command: \"permissionResponse\", allowed: false });\r\n }\r\n const currentChannel = this.channels.find((channel) => channel.name === this.channelsController.my());\r\n this.eventsDispatcher.sendContentMessage({ command: \"permissionResponse\", allowed: true, channels: this.channels, currentChannel });\r\n });\r\n }\r\n handleChangeChannel(message) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (message.name === \"no-channel\") {\r\n yield this.channelsController.leave();\r\n return;\r\n }\r\n yield this.channelsController.join(message.name);\r\n });\r\n }\r\n}\n\nclass EventsDispatcher {\r\n constructor(config) {\r\n this.config = config;\r\n this.registry = lib$3();\r\n this.glue42EventName = \"Glue42\";\r\n this.events = {\r\n notifyStarted: { name: \"notifyStarted\", handle: this.handleNotifyStarted.bind(this) },\r\n contentInc: { name: \"contentInc\", handle: this.handleContentInc.bind(this) },\r\n requestGlue: { name: \"requestGlue\", handle: this.handleRequestGlue.bind(this) }\r\n };\r\n }\r\n stop() {\r\n window.removeEventListener(this.glue42EventName, this._handleMessage);\r\n }\r\n start(glue) {\r\n this.glue = glue;\r\n this.wireCustomEventListener();\r\n this.announceStarted();\r\n }\r\n sendContentMessage(message) {\r\n this.send(\"contentOut\", \"glue42core\", message);\r\n }\r\n onContentMessage(callback) {\r\n return this.registry.add(\"content-inc\", callback);\r\n }\r\n wireCustomEventListener() {\r\n this._handleMessage = this.handleMessage.bind(this);\r\n window.addEventListener(this.glue42EventName, this._handleMessage);\r\n }\r\n handleMessage(event) {\r\n var _a;\r\n const data = event.detail;\r\n const namespace = (_a = data === null || data === void 0 ? void 0 : data.glue42) !== null && _a !== void 0 ? _a : data === null || data === void 0 ? void 0 : data.glue42core;\r\n if (!namespace) {\r\n return;\r\n }\r\n const glue42Event = namespace.event;\r\n const foundHandler = this.events[glue42Event];\r\n if (!foundHandler) {\r\n return;\r\n }\r\n foundHandler.handle(namespace.message);\r\n }\r\n announceStarted() {\r\n this.send(\"start\", \"glue42\");\r\n }\r\n handleRequestGlue() {\r\n if (!this.config.exposeAPI) {\r\n this.send(\"requestGlueResponse\", \"glue42\", { error: \"Will not give access to the underlying Glue API, because it was explicitly denied upon initialization.\" });\r\n return;\r\n }\r\n this.send(\"requestGlueResponse\", \"glue42\", { glue: this.glue });\r\n }\r\n handleNotifyStarted() {\r\n this.announceStarted();\r\n }\r\n handleContentInc(message) {\r\n this.registry.execute(\"content-inc\", message);\r\n }\r\n send(eventName, namespace, message) {\r\n const payload = {};\r\n payload[namespace] = { event: eventName, message };\r\n const event = new CustomEvent(this.glue42EventName, { detail: payload });\r\n window.dispatchEvent(event);\r\n }\r\n}\n\nclass PreferredConnectionController {\r\n constructor(coreGlue) {\r\n this.coreGlue = coreGlue;\r\n this.transactionTimeout = 15000;\r\n this.transactionLocks = {};\r\n this.reconnectCounter = 0;\r\n this.logger = this.coreGlue.logger.subLogger(\"web.preferred.connection.controller\");\r\n }\r\n stop() {\r\n if (!this.webPlatformMessagesUnsubscribe) {\r\n return;\r\n }\r\n this.webPlatformMessagesUnsubscribe();\r\n }\r\n start(coreConfig) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (coreConfig.isPlatformInternal) {\r\n this.logger.trace(\"This is an internal client to the platform, skipping all client preferred communication logic.\");\r\n return;\r\n }\r\n const isConnectedToPlatform = this.coreGlue.connection.transport.name() === webPlatformTransportName;\r\n if (!isConnectedToPlatform) {\r\n throw new Error(\"Cannot initiate the Glue Web Bridge, because the initial connection was not handled by a Web Platform transport.\");\r\n }\r\n if (!this.coreGlue.connection.transport.isPreferredActivated) {\r\n this.logger.trace(\"The platform of this client was configured without a preferred connection, skipping the rest of the initialization.\");\r\n return;\r\n }\r\n this.webPlatformTransport = this.coreGlue.connection.transport;\r\n this.webPlatformMessagesUnsubscribe = this.webPlatformTransport.onMessage(this.handleWebPlatformMessage.bind(this));\r\n const transportState = yield this.getCurrentPlatformTransportState();\r\n yield this.checkSwitchTransport(transportState);\r\n });\r\n }\r\n handleWebPlatformMessage(msg) {\r\n if (typeof msg === \"string\") {\r\n return;\r\n }\r\n const isConnectedToPlatform = this.coreGlue.connection.transport.name() === webPlatformTransportName;\r\n const type = msg.type;\r\n const args = msg.args;\r\n const transactionId = msg.transactionId;\r\n if (type === Glue42CoreMessageTypes.transportSwitchRequest.name) {\r\n return this.handleTransportSwitchRequest(args, transactionId);\r\n }\r\n if (type === Glue42CoreMessageTypes.platformUnload.name && !isConnectedToPlatform) {\r\n return this.handlePlatformUnload();\r\n }\r\n if (type === Glue42CoreMessageTypes.getCurrentTransportResponse.name) {\r\n return this.handleGetCurrentTransportResponse(args, transactionId);\r\n }\r\n if (type === Glue42CoreMessageTypes.checkPreferredLogic.name) {\r\n return this.handleCheckPreferredLogic(transactionId);\r\n }\r\n if (type === Glue42CoreMessageTypes.checkPreferredConnection.name) {\r\n return this.handleCheckPreferredConnection(args, transactionId);\r\n }\r\n }\r\n reEstablishPlatformPort() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n try {\r\n yield this.webPlatformTransport.connect();\r\n }\r\n catch (error) {\r\n this.logger.trace(`Error when re-establishing port connection to the platform: ${JSON.stringify(error)}`);\r\n --this.reconnectCounter;\r\n if (this.reconnectCounter > 0) {\r\n return this.reEstablishPlatformPort();\r\n }\r\n this.logger.warn(\"This client lost connection to the platform while connected to a preferred GW and was not able to re-connect to the platform.\");\r\n }\r\n this.logger.trace(\"The connection to the platform was re-established, closing the connection to the web gateway.\");\r\n this.reconnectCounter = 0;\r\n this.webPlatformTransport.close();\r\n const transportState = yield this.getCurrentPlatformTransportState();\r\n yield this.checkSwitchTransport(transportState);\r\n });\r\n }\r\n checkSwitchTransport(config) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const myCurrentTransportName = this.coreGlue.connection.transport.name();\r\n if (myCurrentTransportName === config.transportName) {\r\n this.logger.trace(\"A check switch was requested, but the platform transport and my transport are identical, no switch is necessary\");\r\n return;\r\n }\r\n this.logger.trace(`A check switch was requested and a transport switch is necessary, because this client is now on ${myCurrentTransportName}, but it should reconnect to ${JSON.stringify(config)}`);\r\n const result = yield this.coreGlue.connection.switchTransport(config);\r\n this.setConnected();\r\n this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`);\r\n });\r\n }\r\n getCurrentPlatformTransportState() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.logger.trace(\"Requesting the current transport state of the platform.\");\r\n const transaction = this.setTransaction(Glue42CoreMessageTypes.getCurrentTransport.name);\r\n this.sendPlatformMessage(Glue42CoreMessageTypes.getCurrentTransport.name, transaction.id);\r\n const transportState = yield transaction.lock;\r\n this.logger.trace(`The platform responded with transport state: ${JSON.stringify(transportState)}`);\r\n return transportState;\r\n });\r\n }\r\n setTransaction(operation) {\r\n const transaction = {};\r\n const transactionId = shortidExports$1.generate();\r\n const transactionLock = new Promise((resolve, reject) => {\r\n let transactionLive = true;\r\n transaction.lift = (args) => {\r\n transactionLive = false;\r\n delete this.transactionLocks[transactionId];\r\n resolve(args);\r\n };\r\n transaction.fail = (reason) => {\r\n transactionLive = false;\r\n delete this.transactionLocks[transactionId];\r\n reject(reason);\r\n };\r\n setTimeout(() => {\r\n if (!transactionLive) {\r\n return;\r\n }\r\n transactionLive = false;\r\n this.logger.warn(`Transaction for operation: ${operation} timed out.`);\r\n delete this.transactionLocks[transactionId];\r\n reject(`Transaction for operation: ${operation} timed out.`);\r\n }, this.transactionTimeout);\r\n });\r\n transaction.lock = transactionLock;\r\n transaction.id = transactionId;\r\n this.transactionLocks[transactionId] = transaction;\r\n return transaction;\r\n }\r\n sendPlatformMessage(type, transactionId, args) {\r\n this.logger.trace(`Sending a platform message of type: ${type}, id: ${transactionId} and args: ${JSON.stringify(args)}`);\r\n this.webPlatformTransport.sendObject({\r\n glue42core: { type, args, transactionId }\r\n });\r\n }\r\n handleTransportSwitchRequest(args, transactionId) {\r\n this.logger.trace(`Received a transport switch request with id: ${transactionId} and data: ${JSON.stringify(args)}`);\r\n this.coreGlue.connection.switchTransport(args.switchSettings)\r\n .then((result) => {\r\n this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`);\r\n this.setConnected();\r\n this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: result.success });\r\n })\r\n .catch((error) => {\r\n this.logger.error(error);\r\n this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: false });\r\n });\r\n }\r\n handlePlatformUnload() {\r\n this.reconnectCounter = 5;\r\n this.logger.trace(\"The platform was unloaded while I am connected to a preferred connection, re-establishing the port connection.\");\r\n this.reEstablishPlatformPort();\r\n }\r\n handleGetCurrentTransportResponse(args, transactionId) {\r\n this.logger.trace(`Got a current transport response from the platform with id: ${transactionId} and data: ${JSON.stringify(args)}`);\r\n const transportState = args.transportState;\r\n const transaction = this.transactionLocks[transactionId];\r\n transaction === null || transaction === void 0 ? void 0 : transaction.lift(transportState);\r\n }\r\n handleCheckPreferredLogic(transactionId) {\r\n setTimeout(() => this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredLogicResponse.name, transactionId), 0);\r\n }\r\n handleCheckPreferredConnection(args, transactionId) {\r\n const url = args.url;\r\n this.logger.trace(`Testing the possible connection to: ${url}`);\r\n this.checkPreferredConnection(url)\r\n .then((result) => {\r\n this.logger.trace(`The connection to ${url} is possible`);\r\n this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, result);\r\n })\r\n .catch((error) => {\r\n this.logger.trace(`The connection to ${url} is not possible`);\r\n this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, { error });\r\n });\r\n }\r\n checkPreferredConnection(url) {\r\n return new Promise((resolve) => {\r\n const ws = new WebSocket(url);\r\n ws.onerror = () => resolve({ live: false });\r\n ws.onopen = () => {\r\n ws.close();\r\n resolve({ live: true });\r\n };\r\n });\r\n }\r\n setConnected() {\r\n this.webPlatformTransport.manualSetReadyState();\r\n }\r\n}\n\nclass LegacyIntentsHelper {\r\n constructor(logger, bridge, interop, appManagerController, windowsController) {\r\n this.bridge = bridge;\r\n this.interop = interop;\r\n this.appManagerController = appManagerController;\r\n this.windowsController = windowsController;\r\n this.intentsResolverResponsePromises = {};\r\n this.logger = this.configureLogger(logger);\r\n }\r\n raise(requestWithResolverInfo, findIntentFn) {\r\n var _a;\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\r\n const intent = (yield findIntentFn(intentRequest.intent)).find(intent => intent.name === intentRequest.intent);\r\n if (!intent) {\r\n throw new Error(`Intent with name ${intentRequest.intent} not found`);\r\n }\r\n const { open, reason } = this.checkIfResolverShouldBeOpened(intent, intentRequest, resolverConfig);\r\n if (!open) {\r\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.trace(`Intent Resolver UI won't be used. Reason: ${reason}`);\r\n return this.invokeRaiseIntent(intentRequest);\r\n }\r\n const intentResult = yield this.raiseIntentWithResolverApp(requestWithResolverInfo);\r\n return intentResult;\r\n });\r\n }\r\n configureLogger(loggerInst) {\r\n return loggerInst.subLogger(\"intents.legacy.helper.web\");\r\n }\r\n raiseIntentWithResolverApp(requestWithResolverInfo) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\r\n this.logger.trace(`Intents Resolver UI with app name ${resolverConfig.appName} will be used`);\r\n const responseMethodName = yield this.registerResponseMethod();\r\n this.logger.trace(`Registered interop method ${responseMethodName}`);\r\n const resolverInstance = yield this.openIntentResolverApplication(requestWithResolverInfo, responseMethodName);\r\n this.logger.trace(`Intents Resolver Instance with id ${resolverInstance.id} opened`);\r\n const handler = yield this.handleInstanceResponse(resolverInstance.id);\r\n const target = handler.type === \"app\"\r\n ? { app: handler.applicationName }\r\n : { instance: handler.instanceId };\r\n this.logger.trace(`Intent handler chosen by the user: ${JSON.stringify(target)}`);\r\n const intentResult = yield this.invokeRaiseIntent(Object.assign(Object.assign({}, intentRequest), { target }));\r\n return intentResult;\r\n });\r\n }\r\n handleInstanceResponse(instanceId) {\r\n var _a;\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n try {\r\n const { handler, intent } = yield this.intentsResolverResponsePromises[instanceId].promise;\r\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.trace(`Intent handler chosen for intent ${intent}: ${JSON.stringify(handler)}`);\r\n this.stopResolverInstance(instanceId);\r\n return handler;\r\n }\r\n catch (error) {\r\n this.stopResolverInstance(instanceId);\r\n throw new Error(error);\r\n }\r\n });\r\n }\r\n invokeRaiseIntent(requestObj) {\r\n return this.bridge.send(\"intents\", operations$5.raiseIntent, requestObj);\r\n }\r\n registerResponseMethod() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const methodName = INTENTS_RESOLVER_INTEROP_PREFIX + shortid$2();\r\n yield this.interop.register(methodName, this.resolverResponseHandler.bind(this));\r\n return methodName;\r\n });\r\n }\r\n openIntentResolverApplication(requestWithResolverInfo, methodName) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\r\n const startContext = this.buildStartContext(intentRequest, methodName);\r\n const startOptions = yield this.buildStartOptions();\r\n this.logger.trace(`Starting Intents Resolver UI with context: ${JSON.stringify(startContext)} and options: ${startOptions}`);\r\n const instance = yield this.appManagerController.getApplication(resolverConfig.appName).start(startContext, startOptions);\r\n this.logger.trace(`Intents Resolver instance with id ${instance.id} opened`);\r\n this.subscribeOnInstanceStopped(instance);\r\n this.createResponsePromise(intentRequest.intent, instance.id, methodName, resolverConfig.waitResponseTimeout);\r\n return instance;\r\n });\r\n }\r\n cleanUpIntentResolverPromise(instanceId) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const intentPromise = this.intentsResolverResponsePromises[instanceId];\r\n if (!intentPromise) {\r\n return;\r\n }\r\n const unregisterPromise = this.interop.unregister(intentPromise.methodName);\r\n unregisterPromise.catch((error) => this.logger.warn(error));\r\n delete this.intentsResolverResponsePromises[instanceId];\r\n });\r\n }\r\n buildStartContext(requestObj, methodName) {\r\n return {\r\n intent: requestObj,\r\n callerId: this.interop.instance.instance,\r\n methodName\r\n };\r\n }\r\n buildStartOptions() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const bounds = yield this.getTargetBounds();\r\n return {\r\n top: (bounds.height - INTENTS_RESOLVER_HEIGHT) / 2 + bounds.top,\r\n left: (bounds.width - INTENTS_RESOLVER_WIDTH) / 2 + bounds.left,\r\n width: INTENTS_RESOLVER_WIDTH,\r\n height: INTENTS_RESOLVER_HEIGHT\r\n };\r\n });\r\n }\r\n getTargetBounds() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const bounds = (yield this.tryGetWindowBasedBounds()) || (yield this.tryGetWorkspaceBasedBounds());\r\n if (bounds) {\r\n this.logger.trace(`Opening Intents Resolver UI with bounds: ${JSON.stringify(bounds)}`);\r\n return bounds;\r\n }\r\n const defaultBounds = {\r\n top: window.screen.availTop || 0,\r\n left: window.screen.availLeft || 0,\r\n width: window.screen.width,\r\n height: window.screen.height\r\n };\r\n this.logger.trace(`Opening Intents Resolver UI relative to my screen bounds: ${JSON.stringify(defaultBounds)}`);\r\n return defaultBounds;\r\n });\r\n }\r\n tryGetWindowBasedBounds() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n try {\r\n const myWindowBounds = yield this.windowsController.my().getBounds();\r\n this.logger.trace(`Opening the resolver UI relative to my window bounds: ${JSON.stringify(myWindowBounds)}`);\r\n return myWindowBounds;\r\n }\r\n catch (error) {\r\n this.logger.trace(`Failure to get my window bounds: ${JSON.stringify(error)}`);\r\n }\r\n return undefined;\r\n });\r\n }\r\n tryGetWorkspaceBasedBounds() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n try {\r\n yield this.bridge.send(\"workspaces\", systemOperations.operationCheck, { operation: \"getWorkspaceWindowFrameBounds\" });\r\n const bridgeResponse = yield this.bridge.send(\"workspaces\", systemOperations.getWorkspaceWindowFrameBounds, { itemId: this.windowsController.my().id });\r\n const myWorkspaceBounds = bridgeResponse.bounds;\r\n this.logger.trace(`Opening the resolver UI relative to my workspace frame window bounds: ${JSON.stringify(myWorkspaceBounds)}`);\r\n return myWorkspaceBounds;\r\n }\r\n catch (error) {\r\n this.logger.trace(`Failure to get my workspace frame window bounds: ${JSON.stringify(error)}`);\r\n }\r\n return undefined;\r\n });\r\n }\r\n subscribeOnInstanceStopped(instance) {\r\n const { application } = instance;\r\n const unsub = application.onInstanceStopped((inst) => {\r\n if (inst.id !== instance.id) {\r\n return;\r\n }\r\n const intentPromise = this.intentsResolverResponsePromises[inst.id];\r\n if (!intentPromise) {\r\n return unsub();\r\n }\r\n intentPromise.reject(`Cannot resolve raised intent \"${intentPromise.intent}\" - User closed ${application.name} app without choosing an intent handler`);\r\n this.cleanUpIntentResolverPromise(inst.id);\r\n unsub();\r\n });\r\n }\r\n createResponsePromise(intent, instanceId, methodName, timeout) {\r\n let resolve = () => { };\r\n let reject = () => { };\r\n const promise = PromisePlus$1((res, rej) => {\r\n resolve = res;\r\n reject = rej;\r\n }, timeout, `Timeout of ${timeout}ms hit waiting for the user to choose a handler for intent ${intent}`);\r\n this.intentsResolverResponsePromises[instanceId] = { intent, resolve, reject, promise, methodName };\r\n }\r\n resolverResponseHandler(args, callerId) {\r\n const response = intentResolverResponseDecoder.run(args);\r\n const instanceId = callerId.instance;\r\n if (response.ok) {\r\n this.logger.trace(`Intent Resolver instance with id ${instanceId} send a valid response: ${JSON.stringify(response.result)}`);\r\n return this.intentsResolverResponsePromises[instanceId].resolve(response.result);\r\n }\r\n this.logger.trace(`Intent Resolver instance with id ${instanceId} sent an invalid response. Error: ${JSON.stringify(response.error)}`);\r\n this.intentsResolverResponsePromises[instanceId].reject(response.error.message);\r\n this.stopResolverInstance(instanceId);\r\n }\r\n stopResolverInstance(instanceId) {\r\n const searchedInstance = this.appManagerController.getInstances().find((inst) => inst.id === instanceId);\r\n if (!searchedInstance) {\r\n return;\r\n }\r\n searchedInstance.stop().catch(err => this.logger.error(err));\r\n }\r\n checkIfIntentHasMoreThanOneHandler(intent, request) {\r\n if (typeof request.target === \"object\") {\r\n return false;\r\n }\r\n return request.handlers ? request.handlers.length > 1 : intent.handlers.length > 1;\r\n }\r\n checkIfResolverShouldBeOpened(intent, intentRequest, resolverConfig) {\r\n if (!resolverConfig.enabled) {\r\n return { open: false, reason: \"Intent Resolver is disabled. Raising intent to first found handler\" };\r\n }\r\n const intentsResolverApp = this.appManagerController.getApplication(resolverConfig.appName);\r\n if (!intentsResolverApp) {\r\n return { open: false, reason: `Application with name ${resolverConfig.appName} not found` };\r\n }\r\n const hasMoreThanOneHandler = this.checkIfIntentHasMoreThanOneHandler(intent, intentRequest);\r\n if (!hasMoreThanOneHandler) {\r\n return { open: false, reason: \"Raised intent has only one handler\" };\r\n }\r\n return { open: true };\r\n }\r\n}\n\nconst operations$1 = {\r\n getCurrent: { name: \"getCurrent\", resultDecoder: simpleThemeResponseDecoder },\r\n list: { name: \"list\", resultDecoder: allThemesResponseDecoder },\r\n select: { name: \"select\", dataDecoder: selectThemeConfigDecoder }\r\n};\n\nclass ThemesController {\r\n constructor() {\r\n this.registry = lib$3();\r\n this.activeThemeSubs = 0;\r\n }\r\n start(coreGlue, ioc) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.logger = coreGlue.logger.subLogger(\"themes.controller.web\");\r\n this.logger.trace(\"starting the web themes controller\");\r\n this.bridge = ioc.bridge;\r\n const api = this.toApi();\r\n coreGlue.themes = api;\r\n this.logger.trace(\"themes are ready\");\r\n });\r\n }\r\n handlePlatformShutdown() {\r\n var _a;\r\n this.registry.clear();\r\n this.activeThemeSubs = 0;\r\n (_a = this.themesSubscription) === null || _a === void 0 ? void 0 : _a.close();\r\n delete this.themesSubscription;\r\n }\r\n handleBridgeMessage() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n });\r\n }\r\n toApi() {\r\n const api = {\r\n getCurrent: this.getCurrent.bind(this),\r\n list: this.list.bind(this),\r\n select: this.select.bind(this),\r\n onChanged: this.onChanged.bind(this)\r\n };\r\n return Object.freeze(api);\r\n }\r\n getCurrent() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const bridgeResponse = yield this.bridge.send(\"themes\", operations$1.getCurrent, undefined, undefined, { includeOperationCheck: true });\r\n return bridgeResponse.theme;\r\n });\r\n }\r\n list() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const bridgeResponse = yield this.bridge.send(\"themes\", operations$1.list, undefined, undefined, { includeOperationCheck: true });\r\n return bridgeResponse.themes;\r\n });\r\n }\r\n select(name) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n nonEmptyStringDecoder.runWithException(name);\r\n yield this.bridge.send(\"themes\", operations$1.select, { name }, undefined, { includeOperationCheck: true });\r\n });\r\n }\r\n onChanged(callback) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onChanged requires a callback of type function\");\r\n }\r\n const subReady = this.themesSubscription ?\r\n Promise.resolve() :\r\n this.configureThemeSubscription();\r\n yield subReady;\r\n ++this.activeThemeSubs;\r\n const unsubFunc = this.registry.add(\"on-theme-change\", callback);\r\n return () => this.themeUnsub(unsubFunc);\r\n });\r\n }\r\n configureThemeSubscription() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n if (this.themesSubscription) {\r\n return;\r\n }\r\n this.themesSubscription = yield this.bridge.createNotificationsSteam();\r\n this.themesSubscription.onData((data) => {\r\n const eventData = data.data;\r\n const validation = simpleThemeResponseDecoder.run(eventData);\r\n if (!validation.ok) {\r\n this.logger.warn(`Received invalid theme data on the theme event stream: ${JSON.stringify(validation.error)}`);\r\n return;\r\n }\r\n const themeChanged = validation.result;\r\n this.registry.execute(\"on-theme-change\", themeChanged.theme);\r\n });\r\n this.themesSubscription.onClosed(() => {\r\n this.logger.warn(\"The Themes interop stream was closed, no theme changes notifications will be received\");\r\n this.registry.clear();\r\n this.activeThemeSubs = 0;\r\n delete this.themesSubscription;\r\n });\r\n });\r\n }\r\n themeUnsub(registryUnsub) {\r\n var _a;\r\n registryUnsub();\r\n --this.activeThemeSubs;\r\n if (this.activeThemeSubs) {\r\n return;\r\n }\r\n (_a = this.themesSubscription) === null || _a === void 0 ? void 0 : _a.close();\r\n delete this.themesSubscription;\r\n }\r\n}\n\nclass SessionStorageController {\r\n constructor() {\r\n this.sessionStorage = window.sessionStorage;\r\n }\r\n get allNamespaces() {\r\n return [{ namespace: this.windowNamespace, defaultValue: {} }];\r\n }\r\n configure(config) {\r\n this.windowId = config.windowId;\r\n this.allNamespaces.forEach(({ namespace, defaultValue }) => {\r\n const data = this.sessionStorage.getItem(namespace);\r\n if (!data) {\r\n this.sessionStorage.setItem(namespace, JSON.stringify(defaultValue));\r\n }\r\n });\r\n }\r\n get windowNamespace() {\r\n return `io_connect_window_${this.windowId}`;\r\n }\r\n getWindowData() {\r\n return JSON.parse(this.sessionStorage.getItem(this.windowNamespace));\r\n }\r\n setWindowData(data, key) {\r\n const allData = this.getWindowData();\r\n allData[key] = data;\r\n this.sessionStorage.setItem(this.windowNamespace, JSON.stringify(allData));\r\n }\r\n}\n\nconst operations = {\r\n clear: { name: \"clear\", dataDecoder: basePrefsConfigDecoder },\r\n clearAll: { name: \"clearAll\" },\r\n get: { name: \"get\", dataDecoder: basePrefsConfigDecoder, resultDecoder: getPrefsResultDecoder },\r\n getAll: { name: \"getAll\", resultDecoder: getAllPrefsResultDecoder },\r\n set: { name: \"set\", dataDecoder: changePrefsDataDecoder },\r\n update: { name: \"update\", dataDecoder: changePrefsDataDecoder },\r\n prefsChanged: { name: \"prefsChanged\", dataDecoder: getPrefsResultDecoder },\r\n prefsHello: { name: \"prefsHello\", resultDecoder: prefsHelloSuccessDecoder },\r\n};\n\nclass PrefsController {\r\n constructor() {\r\n this.registry = lib$3();\r\n }\r\n handlePlatformShutdown() {\r\n this.registry.clear();\r\n }\r\n start(coreGlue, ioc) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n this.logger = coreGlue.logger.subLogger(\"prefs.controller.web\");\r\n this.logger.trace(\"starting the web prefs controller\");\r\n this.addOperationsExecutors();\r\n this.bridge = ioc.bridge;\r\n this.config = ioc.config;\r\n this.appManagerController = ioc.appManagerController;\r\n try {\r\n const prefsHelloSuccess = yield this.bridge.send(\"prefs\", operations.prefsHello, undefined, undefined, { includeOperationCheck: true });\r\n this.platformAppName = prefsHelloSuccess.platform.app;\r\n }\r\n catch (error) {\r\n this.logger.warn(\"The platform of this client is outdated and does not support Prefs API.\");\r\n return;\r\n }\r\n this.logger.trace(\"no need for platform registration, attaching the prefs property to glue and returning\");\r\n const api = this.toApi();\r\n coreGlue.prefs = api;\r\n });\r\n }\r\n handleBridgeMessage(args) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const operationName = prefsOperationTypesDecoder.runWithException(args.operation);\r\n const operation = operations[operationName];\r\n if (!operation.execute) {\r\n return;\r\n }\r\n let operationData = args.data;\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n return yield operation.execute(operationData);\r\n });\r\n }\r\n addOperationsExecutors() {\r\n operations.prefsChanged.execute = this.handleOnChanged.bind(this);\r\n }\r\n toApi() {\r\n const api = {\r\n clear: this.clear.bind(this),\r\n clearAll: this.clearAll.bind(this),\r\n clearFor: this.clearFor.bind(this),\r\n get: this.get.bind(this),\r\n getAll: this.getAll.bind(this),\r\n set: this.set.bind(this),\r\n setFor: this.setFor.bind(this),\r\n subscribe: this.subscribe.bind(this),\r\n subscribeFor: this.subscribeFor.bind(this),\r\n update: this.update.bind(this),\r\n updateFor: this.updateFor.bind(this),\r\n };\r\n return api;\r\n }\r\n clear() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const app = this.getMyAppName();\r\n yield this.clearFor(app);\r\n });\r\n }\r\n clearAll() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n yield this.bridge.send(\"prefs\", operations.clearAll, undefined, undefined, { includeOperationCheck: true });\r\n });\r\n }\r\n clearFor(app) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\r\n yield this.bridge.send(\"prefs\", operations.clear, { app: verifiedApp }, undefined, { includeOperationCheck: true });\r\n });\r\n }\r\n get(app) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const verifiedApp = app === undefined || app === null ? this.getMyAppName() : nonEmptyStringDecoder.runWithException(app);\r\n const { prefs } = yield this.bridge.send(\"prefs\", operations.get, { app: verifiedApp }, undefined, { includeOperationCheck: true });\r\n return prefs;\r\n });\r\n }\r\n getAll() {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const result = yield this.bridge.send(\"prefs\", operations.getAll, undefined, undefined, { includeOperationCheck: true });\r\n return result;\r\n });\r\n }\r\n set(data, options) {\r\n var _a;\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const verifiedOptions = optional$1(basePrefsConfigDecoder).runWithException(options);\r\n const app = (_a = verifiedOptions === null || verifiedOptions === void 0 ? void 0 : verifiedOptions.app) !== null && _a !== void 0 ? _a : this.getMyAppName();\r\n yield this.setFor(app, data);\r\n });\r\n }\r\n setFor(app, data) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\r\n const verifiedData = object$1().runWithException(data);\r\n yield this.bridge.send(\"prefs\", operations.set, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true });\r\n });\r\n }\r\n subscribe(callback) {\r\n const app = this.getMyAppName();\r\n return this.subscribeFor(app, callback);\r\n }\r\n subscribeFor(app, callback) {\r\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\r\n const applications = this.appManagerController.getApplications();\r\n const isValidApp = verifiedApp === this.platformAppName || applications.some((application) => application.name === verifiedApp);\r\n if (!isValidApp) {\r\n throw new Error(`The provided app name \"${app}\" is not valid.`);\r\n }\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to prefs, because the provided callback is not a function!\");\r\n }\r\n const subscriptionKey = this.getSubscriptionKey(verifiedApp);\r\n this.get(verifiedApp).then(callback);\r\n return this.registry.add(subscriptionKey, callback);\r\n }\r\n update(data, options) {\r\n var _a;\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const verifiedOptions = optional$1(basePrefsConfigDecoder).runWithException(options);\r\n const app = (_a = verifiedOptions === null || verifiedOptions === void 0 ? void 0 : verifiedOptions.app) !== null && _a !== void 0 ? _a : this.getMyAppName();\r\n yield this.updateFor(app, data);\r\n });\r\n }\r\n updateFor(app, data) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\r\n const verifiedData = object$1().runWithException(data);\r\n yield this.bridge.send(\"prefs\", operations.update, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true });\r\n });\r\n }\r\n getMyAppName() {\r\n var _a;\r\n const myAppName = this.config.isPlatformInternal ? this.platformAppName : (_a = this.appManagerController.me) === null || _a === void 0 ? void 0 : _a.application.name;\r\n if (!myAppName) {\r\n throw new Error(\"App Preferences operations can not be executed for windows that do not have app!\");\r\n }\r\n return myAppName;\r\n }\r\n getSubscriptionKey(app) {\r\n return `prefs-changed-${app}`;\r\n }\r\n handleOnChanged({ prefs }) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const subscriptionKey = this.getSubscriptionKey(prefs.app);\r\n this.registry.execute(subscriptionKey, prefs);\r\n });\r\n }\r\n}\n\nclass IoC {\r\n constructor() {\r\n this.controllers = {\r\n windows: this.windowsController,\r\n appManager: this.appManagerController,\r\n layouts: this.layoutsController,\r\n notifications: this.notificationsController,\r\n intents: this.intentsController,\r\n channels: this.channelsController,\r\n system: this.systemController,\r\n extension: this.extensionController,\r\n themes: this.themesController,\r\n prefs: this.prefsController\r\n };\r\n }\r\n get communicationId() {\r\n return this._communicationId;\r\n }\r\n get publicWindowId() {\r\n return this._publicWindowId;\r\n }\r\n get windowsController() {\r\n if (!this._windowsControllerInstance) {\r\n this._windowsControllerInstance = new WindowsController();\r\n }\r\n return this._windowsControllerInstance;\r\n }\r\n get appManagerController() {\r\n if (!this._appManagerControllerInstance) {\r\n this._appManagerControllerInstance = new AppManagerController();\r\n }\r\n return this._appManagerControllerInstance;\r\n }\r\n get layoutsController() {\r\n if (!this._layoutsControllerInstance) {\r\n this._layoutsControllerInstance = new LayoutsController();\r\n }\r\n return this._layoutsControllerInstance;\r\n }\r\n get themesController() {\r\n if (!this._themesControllerInstance) {\r\n this._themesControllerInstance = new ThemesController();\r\n }\r\n return this._themesControllerInstance;\r\n }\r\n get notificationsController() {\r\n if (!this._notificationsControllerInstance) {\r\n this._notificationsControllerInstance = new NotificationsController();\r\n }\r\n return this._notificationsControllerInstance;\r\n }\r\n get intentsController() {\r\n if (!this._intentsControllerInstance) {\r\n this._intentsControllerInstance = new IntentsController();\r\n }\r\n return this._intentsControllerInstance;\r\n }\r\n get legacyIntentsHelper() {\r\n if (!this._legacyIntentsHelperInstance) {\r\n this._legacyIntentsHelperInstance = new LegacyIntentsHelper(this._coreGlue.logger, this.bridge, this._coreGlue.interop, this.appManagerController, this.windowsController);\r\n }\r\n return this._legacyIntentsHelperInstance;\r\n }\r\n get systemController() {\r\n if (!this._systemControllerInstance) {\r\n this._systemControllerInstance = new SystemController();\r\n }\r\n return this._systemControllerInstance;\r\n }\r\n get channelsController() {\r\n if (!this._channelsControllerInstance) {\r\n this._channelsControllerInstance = new ChannelsController();\r\n }\r\n return this._channelsControllerInstance;\r\n }\r\n get prefsController() {\r\n if (!this._prefsControllerInstance) {\r\n this._prefsControllerInstance = new PrefsController();\r\n }\r\n return this._prefsControllerInstance;\r\n }\r\n get extensionController() {\r\n if (!this._extensionController) {\r\n this._extensionController = new ExtController();\r\n }\r\n return this._extensionController;\r\n }\r\n get eventsDispatcher() {\r\n if (!this._eventsDispatcher) {\r\n this._eventsDispatcher = new EventsDispatcher(this.config);\r\n }\r\n return this._eventsDispatcher;\r\n }\r\n get bridge() {\r\n if (!this._bridgeInstance) {\r\n this._bridgeInstance = new GlueBridge(this._coreGlue, this.communicationId);\r\n }\r\n return this._bridgeInstance;\r\n }\r\n get preferredConnectionController() {\r\n if (!this._preferredConnectionController) {\r\n this._preferredConnectionController = new PreferredConnectionController(this._coreGlue);\r\n }\r\n return this._preferredConnectionController;\r\n }\r\n get sessionController() {\r\n if (!this._sessionController) {\r\n this._sessionController = new SessionStorageController();\r\n }\r\n return this._sessionController;\r\n }\r\n get config() {\r\n return this._webConfig;\r\n }\r\n defineGlue(coreGlue) {\r\n this._coreGlue = coreGlue;\r\n this._publicWindowId = coreGlue.connection.transport.publicWindowId;\r\n const globalNamespace = window.glue42core || window.iobrowser;\r\n this._communicationId = coreGlue.connection.transport.communicationId || globalNamespace.communicationId;\r\n }\r\n defineConfig(config) {\r\n this._webConfig = config;\r\n }\r\n buildWebWindow(id, name) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const model = new WebWindowModel(id, name, this.bridge);\r\n const api = yield model.toApi();\r\n return { id, model, api };\r\n });\r\n }\r\n buildNotification(config, id) {\r\n return new Notification(config, id);\r\n }\r\n buildApplication(app, applicationInstances) {\r\n return __awaiter$1(this, void 0, void 0, function* () {\r\n const application = (new ApplicationModel(app, [], this.appManagerController)).toApi();\r\n const instances = applicationInstances.map((instanceData) => this.buildInstance(instanceData, application));\r\n application.instances.push(...instances);\r\n return application;\r\n });\r\n }\r\n buildInstance(instanceData, app) {\r\n return (new InstanceModel(instanceData, this.bridge, app)).toApi();\r\n }\r\n}\n\nvar version$2 = \"3.2.0\";\n\nconst createFactoryFunction = (coreFactoryFunction) => {\r\n return (userConfig) => __awaiter$1(void 0, void 0, void 0, function* () {\r\n if (window.glue42gd || window.iodesktop) {\r\n return enterprise(userConfig);\r\n }\r\n const ioc = new IoC();\r\n const config = parseConfig(userConfig);\r\n checkSingleton();\r\n const glue = yield PromiseWrap(() => coreFactoryFunction(config, { version: version$2 }), 30000, \"Glue Web initialization timed out, because core didn't resolve\");\r\n const logger = glue.logger.subLogger(\"web.main.controller\");\r\n ioc.defineGlue(glue);\r\n ioc.sessionController.configure({ windowId: glue.interop.instance.instance });\r\n yield ioc.preferredConnectionController.start(config);\r\n yield ioc.bridge.start(ioc.controllers);\r\n ioc.defineConfig(config);\r\n logger.trace(\"the bridge has been started, initializing all controllers\");\r\n yield Promise.all(Object.values(ioc.controllers).map((controller) => controller.start(glue, ioc)));\r\n logger.trace(\"all controllers reported started, starting all additional libraries\");\r\n yield Promise.all(config.libraries.map((lib) => lib(glue, config)));\r\n logger.trace(\"all libraries were started\");\r\n ioc.eventsDispatcher.start(glue);\r\n logger.trace(\"start event dispatched, glue is ready, returning it\");\r\n return glue;\r\n });\r\n};\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar MetricTypes = {\r\n STRING: 1,\r\n NUMBER: 2,\r\n TIMESTAMP: 3,\r\n OBJECT: 4\r\n};\n\nfunction getMetricTypeByValue(metric) {\r\n if (metric.type === MetricTypes.TIMESTAMP) {\r\n return \"timestamp\";\r\n }\r\n else if (metric.type === MetricTypes.NUMBER) {\r\n return \"number\";\r\n }\r\n else if (metric.type === MetricTypes.STRING) {\r\n return \"string\";\r\n }\r\n else if (metric.type === MetricTypes.OBJECT) {\r\n return \"object\";\r\n }\r\n return \"unknown\";\r\n}\r\nfunction getTypeByValue(value) {\r\n if (value.constructor === Date) {\r\n return \"timestamp\";\r\n }\r\n else if (typeof value === \"number\") {\r\n return \"number\";\r\n }\r\n else if (typeof value === \"string\") {\r\n return \"string\";\r\n }\r\n else if (typeof value === \"object\") {\r\n return \"object\";\r\n }\r\n else {\r\n return \"string\";\r\n }\r\n}\r\nfunction serializeMetric(metric) {\r\n var serializedMetrics = {};\r\n var type = getMetricTypeByValue(metric);\r\n if (type === \"object\") {\r\n var values = Object.keys(metric.value).reduce(function (memo, key) {\r\n var innerType = getTypeByValue(metric.value[key]);\r\n if (innerType === \"object\") {\r\n var composite = defineNestedComposite(metric.value[key]);\r\n memo[key] = {\r\n type: \"object\",\r\n description: \"\",\r\n context: {},\r\n composite: composite,\r\n };\r\n }\r\n else {\r\n memo[key] = {\r\n type: innerType,\r\n description: \"\",\r\n context: {},\r\n };\r\n }\r\n return memo;\r\n }, {});\r\n serializedMetrics.composite = values;\r\n }\r\n serializedMetrics.name = normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name);\r\n serializedMetrics.type = type;\r\n serializedMetrics.description = metric.description;\r\n serializedMetrics.context = {};\r\n return serializedMetrics;\r\n}\r\nfunction defineNestedComposite(values) {\r\n return Object.keys(values).reduce(function (memo, key) {\r\n var type = getTypeByValue(values[key]);\r\n if (type === \"object\") {\r\n memo[key] = {\r\n type: \"object\",\r\n description: \"\",\r\n context: {},\r\n composite: defineNestedComposite(values[key]),\r\n };\r\n }\r\n else {\r\n memo[key] = {\r\n type: type,\r\n description: \"\",\r\n context: {},\r\n };\r\n }\r\n return memo;\r\n }, {});\r\n}\r\nfunction normalizeMetricName(name) {\r\n if (typeof name !== \"undefined\" && name.length > 0 && name[0] !== \"/\") {\r\n return \"/\" + name;\r\n }\r\n else {\r\n return name;\r\n }\r\n}\r\nfunction getMetricValueByType(metric) {\r\n var type = getMetricTypeByValue(metric);\r\n if (type === \"timestamp\") {\r\n return Date.now();\r\n }\r\n else {\r\n return publishNestedComposite(metric.value);\r\n }\r\n}\r\nfunction publishNestedComposite(values) {\r\n if (typeof values !== \"object\") {\r\n return values;\r\n }\r\n return Object.keys(values).reduce(function (memo, key) {\r\n var value = values[key];\r\n if (typeof value === \"object\" && value.constructor !== Date) {\r\n memo[key] = publishNestedComposite(value);\r\n }\r\n else if (value.constructor === Date) {\r\n memo[key] = new Date(value).getTime();\r\n }\r\n else if (value.constructor === Boolean) {\r\n memo[key] = value.toString();\r\n }\r\n else {\r\n memo[key] = value;\r\n }\r\n return memo;\r\n }, {});\r\n}\r\nfunction flatten(arr) {\r\n return arr.reduce(function (flat, toFlatten) {\r\n return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);\r\n }, []);\r\n}\r\nfunction getHighestState(arr) {\r\n return arr.sort(function (a, b) {\r\n if (!a.state) {\r\n return 1;\r\n }\r\n if (!b.state) {\r\n return -1;\r\n }\r\n return b.state - a.state;\r\n })[0];\r\n}\r\nfunction aggregateDescription(arr) {\r\n var msg = \"\";\r\n arr.forEach(function (m, idx, a) {\r\n var path = m.path.join(\".\");\r\n if (idx === a.length - 1) {\r\n msg += path + \".\" + m.name + \": \" + m.description;\r\n }\r\n else {\r\n msg += path + \".\" + m.name + \": \" + m.description + \",\";\r\n }\r\n });\r\n if (msg.length > 100) {\r\n return msg.slice(0, 100) + \"...\";\r\n }\r\n else {\r\n return msg;\r\n }\r\n}\r\nfunction composeMsgForRootStateMetric(system) {\r\n var aggregatedState = system.root.getAggregateState();\r\n var merged = flatten(aggregatedState);\r\n var highestState = getHighestState(merged);\r\n var aggregateDesc = aggregateDescription(merged);\r\n return {\r\n description: aggregateDesc,\r\n value: highestState.state,\r\n };\r\n}\n\nfunction gw3 (connection, config) {\r\n var _this = this;\r\n if (!connection || typeof connection !== \"object\") {\r\n throw new Error(\"Connection is required parameter\");\r\n }\r\n var joinPromise;\r\n var session;\r\n var init = function (repo) {\r\n var resolveReadyPromise;\r\n joinPromise = new Promise(function (resolve) {\r\n resolveReadyPromise = resolve;\r\n });\r\n session = connection.domain(\"metrics\");\r\n session.onJoined(function (reconnect) {\r\n if (!reconnect && resolveReadyPromise) {\r\n resolveReadyPromise();\r\n resolveReadyPromise = undefined;\r\n }\r\n var rootStateMetric = {\r\n name: \"/State\",\r\n type: \"object\",\r\n composite: {\r\n Description: {\r\n type: \"string\",\r\n description: \"\",\r\n },\r\n Value: {\r\n type: \"number\",\r\n description: \"\",\r\n },\r\n },\r\n description: \"System state\",\r\n context: {},\r\n };\r\n var defineRootMetricsMsg = {\r\n type: \"define\",\r\n metrics: [rootStateMetric],\r\n };\r\n session.send(defineRootMetricsMsg);\r\n if (reconnect) {\r\n replayRepo(repo);\r\n }\r\n });\r\n session.join({\r\n system: config.system,\r\n service: config.service,\r\n instance: config.instance\r\n });\r\n };\r\n var replayRepo = function (repo) {\r\n replaySystem(repo.root);\r\n };\r\n var replaySystem = function (system) {\r\n createSystem(system);\r\n system.metrics.forEach(function (m) {\r\n createMetric(m);\r\n });\r\n system.subSystems.forEach(function (ss) {\r\n replaySystem(ss);\r\n });\r\n };\r\n var createSystem = function (system) { return __awaiter(_this, void 0, void 0, function () {\r\n var metric, createMetricsMsg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (system.parent === undefined) {\r\n return [2];\r\n }\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n metric = {\r\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\r\n type: \"object\",\r\n composite: {\r\n Description: {\r\n type: \"string\",\r\n description: \"\",\r\n },\r\n Value: {\r\n type: \"number\",\r\n description: \"\",\r\n },\r\n },\r\n description: \"System state\",\r\n context: {},\r\n };\r\n createMetricsMsg = {\r\n type: \"define\",\r\n metrics: [metric],\r\n };\r\n session.send(createMetricsMsg);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateSystem = function (system, state) { return __awaiter(_this, void 0, void 0, function () {\r\n var shadowedUpdateMetric, stateObj, rootMetric;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n shadowedUpdateMetric = {\r\n type: \"publish\",\r\n values: [{\r\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\r\n value: {\r\n Description: state.description,\r\n Value: state.state,\r\n },\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n session.send(shadowedUpdateMetric);\r\n stateObj = composeMsgForRootStateMetric(system);\r\n rootMetric = {\r\n type: \"publish\",\r\n peer_id: connection.peerId,\r\n values: [{\r\n name: \"/State\",\r\n value: {\r\n Description: stateObj.description,\r\n Value: stateObj.value,\r\n },\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n session.send(rootMetric);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var createMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () {\r\n var metricClone, m, createMetricsMsg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metricClone = cloneMetric(metric);\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n m = serializeMetric(metricClone);\r\n createMetricsMsg = {\r\n type: \"define\",\r\n metrics: [m],\r\n };\r\n session.send(createMetricsMsg);\r\n if (typeof metricClone.value !== \"undefined\") {\r\n updateMetricCore(metricClone);\r\n }\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () {\r\n var metricClone;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metricClone = cloneMetric(metric);\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n updateMetricCore(metricClone);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateMetricCore = function (metric) {\r\n if (canUpdate()) {\r\n var value = getMetricValueByType(metric);\r\n var publishMetricsMsg = {\r\n type: \"publish\",\r\n values: [{\r\n name: normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name),\r\n value: value,\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n return session.sendFireAndForget(publishMetricsMsg);\r\n }\r\n return Promise.resolve();\r\n };\r\n var cloneMetric = function (metric) {\r\n var metricClone = __assign({}, metric);\r\n if (typeof metric.value === \"object\" && metric.value !== null) {\r\n metricClone.value = __assign({}, metric.value);\r\n }\r\n return metricClone;\r\n };\r\n var canUpdate = function () {\r\n var _a;\r\n try {\r\n var func = (_a = config.canUpdateMetric) !== null && _a !== void 0 ? _a : (function () { return true; });\r\n return func();\r\n }\r\n catch (_b) {\r\n return true;\r\n }\r\n };\r\n return {\r\n init: init,\r\n createSystem: createSystem,\r\n updateSystem: updateSystem,\r\n createMetric: createMetric,\r\n updateMetric: updateMetric,\r\n };\r\n}\n\nvar Helpers = {\r\n validate: function (definition, parent, transport) {\r\n if (definition === null || typeof definition !== \"object\") {\r\n throw new Error(\"Missing definition\");\r\n }\r\n if (parent === null || typeof parent !== \"object\") {\r\n throw new Error(\"Missing parent\");\r\n }\r\n if (transport === null || typeof transport !== \"object\") {\r\n throw new Error(\"Missing transport\");\r\n }\r\n },\r\n};\n\nvar BaseMetric = (function () {\r\n function BaseMetric(definition, system, transport, value, type) {\r\n this.definition = definition;\r\n this.system = system;\r\n this.transport = transport;\r\n this.value = value;\r\n this.type = type;\r\n this.path = [];\r\n Helpers.validate(definition, system, transport);\r\n this.path = system.path.slice(0);\r\n this.path.push(system.name);\r\n this.name = definition.name;\r\n this.description = definition.description;\r\n transport.createMetric(this);\r\n }\r\n Object.defineProperty(BaseMetric.prototype, \"repo\", {\r\n get: function () {\r\n var _a;\r\n return (_a = this.system) === null || _a === void 0 ? void 0 : _a.repo;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseMetric.prototype, \"id\", {\r\n get: function () { return \"\".concat(this.system.path, \"/\").concat(name); },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n BaseMetric.prototype.update = function (newValue) {\r\n this.value = newValue;\r\n return this.transport.updateMetric(this);\r\n };\r\n return BaseMetric;\r\n}());\n\nvar NumberMetric = (function (_super) {\r\n __extends(NumberMetric, _super);\r\n function NumberMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.NUMBER) || this;\r\n }\r\n NumberMetric.prototype.incrementBy = function (num) {\r\n this.update(this.value + num);\r\n };\r\n NumberMetric.prototype.increment = function () {\r\n this.incrementBy(1);\r\n };\r\n NumberMetric.prototype.decrement = function () {\r\n this.incrementBy(-1);\r\n };\r\n NumberMetric.prototype.decrementBy = function (num) {\r\n this.incrementBy(num * -1);\r\n };\r\n return NumberMetric;\r\n}(BaseMetric));\n\nvar ObjectMetric = (function (_super) {\r\n __extends(ObjectMetric, _super);\r\n function ObjectMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.OBJECT) || this;\r\n }\r\n ObjectMetric.prototype.update = function (newValue) {\r\n this.mergeValues(newValue);\r\n return this.transport.updateMetric(this);\r\n };\r\n ObjectMetric.prototype.mergeValues = function (values) {\r\n var _this = this;\r\n return Object.keys(this.value).forEach(function (k) {\r\n if (typeof values[k] !== \"undefined\") {\r\n _this.value[k] = values[k];\r\n }\r\n });\r\n };\r\n return ObjectMetric;\r\n}(BaseMetric));\n\nvar StringMetric = (function (_super) {\r\n __extends(StringMetric, _super);\r\n function StringMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.STRING) || this;\r\n }\r\n return StringMetric;\r\n}(BaseMetric));\n\nvar TimestampMetric = (function (_super) {\r\n __extends(TimestampMetric, _super);\r\n function TimestampMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.TIMESTAMP) || this;\r\n }\r\n TimestampMetric.prototype.now = function () {\r\n this.update(new Date());\r\n };\r\n return TimestampMetric;\r\n}(BaseMetric));\n\nfunction system(name, repo, protocol, parent, description) {\r\n if (!repo) {\r\n throw new Error(\"Repository is required\");\r\n }\r\n if (!protocol) {\r\n throw new Error(\"Transport is required\");\r\n }\r\n var _transport = protocol;\r\n var _name = name;\r\n var _description = description || \"\";\r\n var _repo = repo;\r\n var _parent = parent;\r\n var _path = _buildPath(parent);\r\n var _state = {};\r\n var id = _arrayToString(_path, \"/\") + name;\r\n var root = repo.root;\r\n var _subSystems = [];\r\n var _metrics = [];\r\n function subSystem(nameSystem, descriptionSystem) {\r\n if (!nameSystem || nameSystem.length === 0) {\r\n throw new Error(\"name is required\");\r\n }\r\n var match = _subSystems.filter(function (s) { return s.name === nameSystem; });\r\n if (match.length > 0) {\r\n return match[0];\r\n }\r\n var _system = system(nameSystem, _repo, _transport, me, descriptionSystem);\r\n _subSystems.push(_system);\r\n return _system;\r\n }\r\n function setState(state, stateDescription) {\r\n _state = { state: state, description: stateDescription };\r\n _transport.updateSystem(me, _state);\r\n }\r\n function stringMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.STRING, value, function (metricDef) { return new StringMetric(metricDef, me, _transport, value); });\r\n }\r\n function numberMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.NUMBER, value, function (metricDef) { return new NumberMetric(metricDef, me, _transport, value); });\r\n }\r\n function objectMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.OBJECT, value, function (metricDef) { return new ObjectMetric(metricDef, me, _transport, value); });\r\n }\r\n function timestampMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.TIMESTAMP, value, function (metricDef) { return new TimestampMetric(metricDef, me, _transport, value); });\r\n }\r\n function _getOrCreateMetric(metricObject, expectedType, value, createMetric) {\r\n var metricDef = { name: \"\" };\r\n if (typeof metricObject === \"string\") {\r\n metricDef = { name: metricObject };\r\n }\r\n else {\r\n metricDef = metricObject;\r\n }\r\n var matching = _metrics.filter(function (shadowedMetric) { return shadowedMetric.name === metricDef.name; });\r\n if (matching.length > 0) {\r\n var existing = matching[0];\r\n if (existing.type !== expectedType) {\r\n throw new Error(\"A metric named \".concat(metricDef.name, \" is already defined with different type.\"));\r\n }\r\n if (typeof value !== \"undefined\") {\r\n existing\r\n .update(value)\r\n .catch(function () { });\r\n }\r\n return existing;\r\n }\r\n var metric = createMetric(metricDef);\r\n _metrics.push(metric);\r\n return metric;\r\n }\r\n function _buildPath(shadowedSystem) {\r\n if (!shadowedSystem || !shadowedSystem.parent) {\r\n return [];\r\n }\r\n var path = _buildPath(shadowedSystem.parent);\r\n path.push(shadowedSystem.name);\r\n return path;\r\n }\r\n function _arrayToString(path, separator) {\r\n return ((path && path.length > 0) ? path.join(separator) : \"\");\r\n }\r\n function getAggregateState() {\r\n var aggState = [];\r\n if (Object.keys(_state).length > 0) {\r\n aggState.push({\r\n name: _name,\r\n path: _path,\r\n state: _state.state,\r\n description: _state.description,\r\n });\r\n }\r\n _subSystems.forEach(function (shadowedSubSystem) {\r\n var result = shadowedSubSystem.getAggregateState();\r\n if (result.length > 0) {\r\n aggState.push.apply(aggState, result);\r\n }\r\n });\r\n return aggState;\r\n }\r\n var me = {\r\n get name() {\r\n return _name;\r\n },\r\n get description() {\r\n return _description;\r\n },\r\n get repo() {\r\n return _repo;\r\n },\r\n get parent() {\r\n return _parent;\r\n },\r\n path: _path,\r\n id: id,\r\n root: root,\r\n get subSystems() {\r\n return _subSystems;\r\n },\r\n get metrics() {\r\n return _metrics;\r\n },\r\n subSystem: subSystem,\r\n getState: function () {\r\n return _state;\r\n },\r\n setState: setState,\r\n stringMetric: stringMetric,\r\n timestampMetric: timestampMetric,\r\n objectMetric: objectMetric,\r\n numberMetric: numberMetric,\r\n getAggregateState: getAggregateState,\r\n };\r\n _transport.createSystem(me);\r\n return me;\r\n}\n\nvar Repository = (function () {\r\n function Repository(options, protocol) {\r\n protocol.init(this);\r\n this.root = system(\"\", this, protocol);\r\n this.addSystemMetrics(this.root, options.clickStream || options.clickStream === undefined);\r\n }\r\n Repository.prototype.addSystemMetrics = function (rootSystem, useClickStream) {\r\n if (typeof navigator !== \"undefined\") {\r\n rootSystem.stringMetric(\"UserAgent\", navigator.userAgent);\r\n }\r\n if (useClickStream && typeof document !== \"undefined\") {\r\n var clickStream_1 = rootSystem.subSystem(\"ClickStream\");\r\n var documentClickHandler = function (e) {\r\n var _a;\r\n if (!e.target) {\r\n return;\r\n }\r\n var target = e.target;\r\n var className = target ? (_a = target.getAttribute(\"class\")) !== null && _a !== void 0 ? _a : \"\" : \"\";\r\n clickStream_1.objectMetric(\"LastBrowserEvent\", {\r\n type: \"click\",\r\n timestamp: new Date(),\r\n target: {\r\n className: className,\r\n id: target.id,\r\n type: \"<\" + target.tagName.toLowerCase() + \">\",\r\n href: target.href || \"\",\r\n },\r\n });\r\n };\r\n clickStream_1.objectMetric(\"Page\", {\r\n title: document.title,\r\n page: window.location.href,\r\n });\r\n if (document.addEventListener) {\r\n document.addEventListener(\"click\", documentClickHandler);\r\n }\r\n else {\r\n document.attachEvent(\"onclick\", documentClickHandler);\r\n }\r\n }\r\n rootSystem.stringMetric(\"StartTime\", (new Date()).toString());\r\n var urlMetric = rootSystem.stringMetric(\"StartURL\", \"\");\r\n var appNameMetric = rootSystem.stringMetric(\"AppName\", \"\");\r\n if (typeof window !== \"undefined\") {\r\n if (typeof window.location !== \"undefined\") {\r\n var startUrl = window.location.href;\r\n urlMetric.update(startUrl);\r\n }\r\n if (typeof window.glue42gd !== \"undefined\") {\r\n appNameMetric.update(window.glue42gd.appName);\r\n }\r\n }\r\n };\r\n return Repository;\r\n}());\n\nvar NullProtocol = (function () {\r\n function NullProtocol() {\r\n }\r\n NullProtocol.prototype.init = function (repo) {\r\n };\r\n NullProtocol.prototype.createSystem = function (system) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.updateSystem = function (metric, state) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.createMetric = function (metric) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.updateMetric = function (metric) {\r\n return Promise.resolve();\r\n };\r\n return NullProtocol;\r\n}());\n\nvar PerfTracker = (function () {\r\n function PerfTracker(api, initialPublishTimeout, publishInterval) {\r\n this.api = api;\r\n this.lastCount = 0;\r\n this.initialPublishTimeout = 10 * 1000;\r\n this.publishInterval = 60 * 1000;\r\n this.initialPublishTimeout = initialPublishTimeout !== null && initialPublishTimeout !== void 0 ? initialPublishTimeout : this.initialPublishTimeout;\r\n this.publishInterval = publishInterval !== null && publishInterval !== void 0 ? publishInterval : this.publishInterval;\r\n this.scheduleCollection();\r\n this.system = this.api.subSystem(\"performance\", \"Performance data published by the web application\");\r\n }\r\n PerfTracker.prototype.scheduleCollection = function () {\r\n var _this = this;\r\n setTimeout(function () {\r\n _this.collect();\r\n setInterval(function () {\r\n _this.collect();\r\n }, _this.publishInterval);\r\n }, this.initialPublishTimeout);\r\n };\r\n PerfTracker.prototype.collect = function () {\r\n try {\r\n this.collectMemory();\r\n this.collectEntries();\r\n }\r\n catch (_a) {\r\n }\r\n };\r\n PerfTracker.prototype.collectMemory = function () {\r\n var memory = window.performance.memory;\r\n this.system.stringMetric(\"memory\", JSON.stringify({\r\n totalJSHeapSize: memory.totalJSHeapSize,\r\n usedJSHeapSize: memory.usedJSHeapSize\r\n }));\r\n };\r\n PerfTracker.prototype.collectEntries = function () {\r\n var allEntries = window.performance.getEntries();\r\n if (allEntries.length <= this.lastCount) {\r\n return;\r\n }\r\n this.lastCount = allEntries.length;\r\n var jsonfiedEntries = allEntries.map(function (i) { return i.toJSON(); });\r\n this.system.stringMetric(\"entries\", JSON.stringify(jsonfiedEntries));\r\n };\r\n return PerfTracker;\r\n}());\n\nvar metrics = (function (options) {\r\n var protocol;\r\n if (!options.connection || typeof options.connection !== \"object\") {\r\n protocol = new NullProtocol();\r\n }\r\n else {\r\n protocol = gw3(options.connection, options);\r\n }\r\n var repo = new Repository(options, protocol);\r\n var rootSystem = repo.root;\r\n if (!options.disableAutoAppSystem) {\r\n rootSystem = rootSystem.subSystem(\"App\");\r\n }\r\n var api = addFAVSupport(rootSystem);\r\n initPerf(api, options.pagePerformanceMetrics);\r\n return api;\r\n});\r\nfunction initPerf(api, config) {\r\n var _a, _b;\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n var perfConfig = (_b = (_a = window === null || window === void 0 ? void 0 : window.glue42gd) === null || _a === void 0 ? void 0 : _a.metrics) === null || _b === void 0 ? void 0 : _b.pagePerformanceMetrics;\r\n if (perfConfig) {\r\n config = perfConfig;\r\n }\r\n if (config === null || config === void 0 ? void 0 : config.enabled) {\r\n new PerfTracker(api, config.initialPublishTimeout, config.publishInterval);\r\n }\r\n}\r\nfunction addFAVSupport(system) {\r\n var reportingSystem = system.subSystem(\"reporting\");\r\n var def = {\r\n name: \"features\"\r\n };\r\n var featureMetric;\r\n var featureMetricFunc = function (name, action, payload) {\r\n if (typeof name === \"undefined\" || name === \"\") {\r\n throw new Error(\"name is mandatory\");\r\n }\r\n else if (typeof action === \"undefined\" || action === \"\") {\r\n throw new Error(\"action is mandatory\");\r\n }\r\n else if (typeof payload === \"undefined\" || payload === \"\") {\r\n throw new Error(\"payload is mandatory\");\r\n }\r\n if (!featureMetric) {\r\n featureMetric = reportingSystem.objectMetric(def, { name: name, action: action, payload: payload });\r\n }\r\n else {\r\n featureMetric.update({\r\n name: name,\r\n action: action,\r\n payload: payload\r\n });\r\n }\r\n };\r\n system.featureMetric = featureMetricFunc;\r\n return system;\r\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\ncreateRegistry.default = createRegistry;\nvar lib$1 = createRegistry;\n\nvar InProcTransport = (function () {\r\n function InProcTransport(settings, logger) {\r\n var _this = this;\r\n this.registry = lib$1();\r\n this.gw = settings.facade;\r\n this.gw.connect(function (_client, message) {\r\n _this.messageHandler(message);\r\n }).then(function (client) {\r\n _this.client = client;\r\n });\r\n }\r\n Object.defineProperty(InProcTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n InProcTransport.prototype.sendObject = function (msg) {\r\n if (this.client) {\r\n this.client.send(msg);\r\n return Promise.resolve(undefined);\r\n }\r\n else {\r\n return Promise.reject(\"not connected\");\r\n }\r\n };\r\n InProcTransport.prototype.send = function (_msg) {\r\n return Promise.reject(\"not supported\");\r\n };\r\n InProcTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n InProcTransport.prototype.onConnectedChanged = function (callback) {\r\n callback(true);\r\n return function () { };\r\n };\r\n InProcTransport.prototype.close = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.open = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.name = function () {\r\n return \"in-memory\";\r\n };\r\n InProcTransport.prototype.reconnect = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.messageHandler = function (msg) {\r\n this.registry.execute(\"onMessage\", msg);\r\n };\r\n return InProcTransport;\r\n}());\n\nvar SharedWorkerTransport = (function () {\r\n function SharedWorkerTransport(workerFile, logger) {\r\n var _this = this;\r\n this.logger = logger;\r\n this.registry = lib$1();\r\n this.worker = new SharedWorker(workerFile);\r\n this.worker.port.onmessage = function (e) {\r\n _this.messageHandler(e.data);\r\n };\r\n }\r\n Object.defineProperty(SharedWorkerTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n SharedWorkerTransport.prototype.sendObject = function (msg) {\r\n this.worker.port.postMessage(msg);\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.send = function (_msg) {\r\n return Promise.reject(\"not supported\");\r\n };\r\n SharedWorkerTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n SharedWorkerTransport.prototype.onConnectedChanged = function (callback) {\r\n callback(true);\r\n return function () { };\r\n };\r\n SharedWorkerTransport.prototype.close = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.open = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.name = function () {\r\n return \"shared-worker\";\r\n };\r\n SharedWorkerTransport.prototype.reconnect = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.messageHandler = function (msg) {\r\n this.registry.execute(\"onMessage\", msg);\r\n };\r\n return SharedWorkerTransport;\r\n}());\n\nvar Utils = (function () {\r\n function Utils() {\r\n }\r\n Utils.isNode = function () {\r\n if (typeof Utils._isNode !== \"undefined\") {\r\n return Utils._isNode;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n Utils._isNode = false;\r\n return false;\r\n }\r\n try {\r\n Utils._isNode = Object.prototype.toString.call(global.process) === \"[object process]\";\r\n }\r\n catch (e) {\r\n Utils._isNode = false;\r\n }\r\n return Utils._isNode;\r\n };\r\n return Utils;\r\n}());\n\nvar PromiseWrapper = (function () {\r\n function PromiseWrapper() {\r\n var _this = this;\r\n this.rejected = false;\r\n this.resolved = false;\r\n this.promise = new Promise(function (resolve, reject) {\r\n _this.resolve = function (t) {\r\n _this.resolved = true;\r\n resolve(t);\r\n };\r\n _this.reject = function (err) {\r\n _this.rejected = true;\r\n reject(err);\r\n };\r\n });\r\n }\r\n PromiseWrapper.delay = function (time) {\r\n return new Promise(function (resolve) { return setTimeout(resolve, time); });\r\n };\r\n Object.defineProperty(PromiseWrapper.prototype, \"ended\", {\r\n get: function () {\r\n return this.rejected || this.resolved;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return PromiseWrapper;\r\n}());\n\nvar timers = {};\r\nfunction getAllTimers() {\r\n return timers;\r\n}\r\nfunction timer (timerName) {\r\n var existing = timers[timerName];\r\n if (existing) {\r\n return existing;\r\n }\r\n var marks = [];\r\n function now() {\r\n return new Date().getTime();\r\n }\r\n var startTime = now();\r\n mark(\"start\", startTime);\r\n var endTime;\r\n var period;\r\n function stop() {\r\n endTime = now();\r\n mark(\"end\", endTime);\r\n period = endTime - startTime;\r\n return period;\r\n }\r\n function mark(name, time) {\r\n var currentTime = time !== null && time !== void 0 ? time : now();\r\n var diff = 0;\r\n if (marks.length > 0) {\r\n diff = currentTime - marks[marks.length - 1].time;\r\n }\r\n marks.push({ name: name, time: currentTime, diff: diff });\r\n }\r\n var timerObj = {\r\n get startTime() {\r\n return startTime;\r\n },\r\n get endTime() {\r\n return endTime;\r\n },\r\n get period() {\r\n return period;\r\n },\r\n stop: stop,\r\n mark: mark,\r\n marks: marks\r\n };\r\n timers[timerName] = timerObj;\r\n return timerObj;\r\n}\n\nvar WebSocketConstructor = Utils.isNode() ? require(\"ws\") : window.WebSocket;\r\nvar WS = (function () {\r\n function WS(settings, logger) {\r\n this.startupTimer = timer(\"connection\");\r\n this._running = true;\r\n this._registry = lib$1();\r\n this.wsRequests = [];\r\n this.settings = settings;\r\n this.logger = logger;\r\n if (!this.settings.ws) {\r\n throw new Error(\"ws is missing\");\r\n }\r\n }\r\n WS.prototype.onMessage = function (callback) {\r\n return this._registry.add(\"onMessage\", callback);\r\n };\r\n WS.prototype.send = function (msg, options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.waitForSocketConnection(function () {\r\n var _a;\r\n try {\r\n (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.send(msg);\r\n resolve();\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n }, reject);\r\n });\r\n };\r\n WS.prototype.open = function () {\r\n var _this = this;\r\n this.logger.info(\"opening ws...\");\r\n this._running = true;\r\n return new Promise(function (resolve, reject) {\r\n _this.waitForSocketConnection(resolve, reject);\r\n });\r\n };\r\n WS.prototype.close = function () {\r\n this._running = false;\r\n if (this.ws) {\r\n this.ws.close();\r\n }\r\n return Promise.resolve();\r\n };\r\n WS.prototype.onConnectedChanged = function (callback) {\r\n return this._registry.add(\"onConnectedChanged\", callback);\r\n };\r\n WS.prototype.name = function () {\r\n return this.settings.ws;\r\n };\r\n WS.prototype.reconnect = function () {\r\n var _a;\r\n (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();\r\n var pw = new PromiseWrapper();\r\n this.waitForSocketConnection(function () {\r\n pw.resolve();\r\n });\r\n return pw.promise;\r\n };\r\n WS.prototype.waitForSocketConnection = function (callback, failed) {\r\n var _a;\r\n failed = failed !== null && failed !== void 0 ? failed : (function () { });\r\n if (!this._running) {\r\n failed(\"wait for socket on \".concat(this.settings.ws, \" failed - socket closed by user\"));\r\n return;\r\n }\r\n if (((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === 1) {\r\n callback();\r\n return;\r\n }\r\n this.wsRequests.push({ callback: callback, failed: failed });\r\n if (this.wsRequests.length > 1) {\r\n return;\r\n }\r\n this.openSocket();\r\n };\r\n WS.prototype.openSocket = function (retryInterval, retriesLeft) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.startupTimer.mark(\"opening-socket\");\r\n if (retryInterval === undefined) {\r\n retryInterval = this.settings.reconnectInterval;\r\n }\r\n if (typeof retriesLeft === \"undefined\") {\r\n retriesLeft = this.settings.reconnectAttempts;\r\n }\r\n if (retriesLeft !== undefined) {\r\n if (retriesLeft === 0) {\r\n this.notifyForSocketState(\"wait for socket on \".concat(this.settings.ws, \" failed - no more retries left\"));\r\n return [2];\r\n }\r\n this.logger.debug(\"will retry \".concat(retriesLeft, \" more times (every \").concat(retryInterval, \" ms)\"));\r\n }\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4, this.initiateSocket()];\r\n case 2:\r\n _b.sent();\r\n this.startupTimer.mark(\"socket-initiated\");\r\n this.notifyForSocketState();\r\n return [3, 4];\r\n case 3:\r\n _b.sent();\r\n setTimeout(function () {\r\n var retries = retriesLeft === undefined ? undefined : retriesLeft - 1;\r\n _this.openSocket(retryInterval, retries);\r\n }, retryInterval);\r\n return [3, 4];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n };\r\n WS.prototype.initiateSocket = function () {\r\n var _this = this;\r\n var pw = new PromiseWrapper();\r\n this.logger.debug(\"initiating ws to \".concat(this.settings.ws, \"...\"));\r\n this.ws = new WebSocketConstructor(this.settings.ws || \"\");\r\n this.ws.onerror = function (err) {\r\n var reason = \"\";\r\n try {\r\n reason = JSON.stringify(err);\r\n }\r\n catch (error) {\r\n var seen_1 = new WeakSet();\r\n var replacer = function (key, value) {\r\n if (typeof value === \"object\" && value !== null) {\r\n if (seen_1.has(value)) {\r\n return;\r\n }\r\n seen_1.add(value);\r\n }\r\n return value;\r\n };\r\n reason = JSON.stringify(err, replacer);\r\n }\r\n pw.reject(\"error\");\r\n _this.notifyStatusChanged(false, reason);\r\n };\r\n this.ws.onclose = function (err) {\r\n _this.logger.info(\"ws closed \".concat(err));\r\n pw.reject(\"closed\");\r\n _this.notifyStatusChanged(false);\r\n };\r\n this.ws.onopen = function () {\r\n var _a;\r\n _this.startupTimer.mark(\"ws-opened\");\r\n _this.logger.info(\"ws opened \".concat((_a = _this.settings.identity) === null || _a === void 0 ? void 0 : _a.application));\r\n pw.resolve();\r\n _this.notifyStatusChanged(true);\r\n };\r\n this.ws.onmessage = function (message) {\r\n _this._registry.execute(\"onMessage\", message.data);\r\n };\r\n return pw.promise;\r\n };\r\n WS.prototype.notifyForSocketState = function (error) {\r\n this.wsRequests.forEach(function (wsRequest) {\r\n if (error) {\r\n if (wsRequest.failed) {\r\n wsRequest.failed(error);\r\n }\r\n }\r\n else {\r\n wsRequest.callback();\r\n }\r\n });\r\n this.wsRequests = [];\r\n };\r\n WS.prototype.notifyStatusChanged = function (status, reason) {\r\n this._registry.execute(\"onConnectedChanged\", status, reason);\r\n };\r\n return WS;\r\n}());\n\nvar shortidExports = {};\nvar shortid$1 = {\n get exports(){ return shortidExports; },\n set exports(v){ shortidExports = v; },\n};\n\nvar libExports = {};\nvar lib = {\n get exports(){ return libExports; },\n set exports(v){ libExports = v; },\n};\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed$1(_seed_) {\n seed = _seed_;\n}\n\nvar randomFromSeed$1 = {\n nextValue: getNextValue,\n seed: setSeed$1\n};\n\nvar randomFromSeed = randomFromSeed$1;\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet$2;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet$2 !== ORIGINAL) {\n alphabet$2 = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet$2) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet$2 = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet$2;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet$2) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet$2.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet$2 || ORIGINAL;\n}\n\nvar alphabet_1 = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nvar randomByteBrowser = randomByte;\n\n// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nvar format_browser = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1;\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length);\n var id = '';\n\n while (true) {\n var bytes = random(step);\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step;\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || '';\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id\n }\n }\n};\n\nvar alphabet$1 = alphabet_1;\nvar random = randomByteBrowser;\nvar format = format_browser;\n\nfunction generate$1(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet$1.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nvar generate_1 = generate$1;\n\nvar generate = generate_1;\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version$1 = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version$1);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nvar build_1 = build;\n\nvar alphabet = alphabet_1;\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nvar isValid = isShortId;\n\n(function (module) {\n\n\tvar alphabet = alphabet_1;\n\tvar build = build_1;\n\tvar isValid$1 = isValid;\n\n\t// if you are using cluster or multiple servers use this to make each instance\n\t// has a unique value for worker\n\t// Note: I don't know if this is automatically set when using third\n\t// party cluster solutions such as pm2.\n\tvar clusterWorkerId = 0;\n\n\t/**\n\t * Set the seed.\n\t * Highly recommended if you don't want people to try to figure out your id schema.\n\t * exposed as shortid.seed(int)\n\t * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n\t */\n\tfunction seed(seedValue) {\n\t alphabet.seed(seedValue);\n\t return module.exports;\n\t}\n\n\t/**\n\t * Set the cluster worker or machine id\n\t * exposed as shortid.worker(int)\n\t * @param workerId worker must be positive integer. Number less than 16 is recommended.\n\t * returns shortid module so it can be chained.\n\t */\n\tfunction worker(workerId) {\n\t clusterWorkerId = workerId;\n\t return module.exports;\n\t}\n\n\t/**\n\t *\n\t * sets new characters to use in the alphabet\n\t * returns the shuffled alphabet\n\t */\n\tfunction characters(newCharacters) {\n\t if (newCharacters !== undefined) {\n\t alphabet.characters(newCharacters);\n\t }\n\n\t return alphabet.shuffled();\n\t}\n\n\t/**\n\t * Generate unique id\n\t * Returns string id\n\t */\n\tfunction generate() {\n\t return build(clusterWorkerId);\n\t}\n\n\t// Export all other functions as properties of the generate function\n\tmodule.exports = generate;\n\tmodule.exports.generate = generate;\n\tmodule.exports.seed = seed;\n\tmodule.exports.worker = worker;\n\tmodule.exports.characters = characters;\n\tmodule.exports.isValid = isValid$1;\n} (lib));\n\n(function (module) {\n\tmodule.exports = libExports;\n} (shortid$1));\n\nvar shortid = /*@__PURE__*/getDefaultExportFromCjs(shortidExports);\n\nfunction domainSession (domain, connection, logger, successMessages, errorMessages) {\r\n if (domain == null) {\r\n domain = \"global\";\r\n }\r\n successMessages = successMessages || [\"success\"];\r\n errorMessages = errorMessages || [\"error\"];\r\n var isJoined = false;\r\n var tryReconnecting = false;\r\n var _latestOptions;\r\n var _connectionOn = false;\r\n var callbacks = lib$1();\r\n connection.disconnected(handleConnectionDisconnected);\r\n connection.loggedIn(handleConnectionLoggedIn);\r\n connection.on(\"success\", function (msg) { return handleSuccessMessage(msg); });\r\n connection.on(\"error\", function (msg) { return handleErrorMessage(msg); });\r\n connection.on(\"result\", function (msg) { return handleSuccessMessage(msg); });\r\n if (successMessages) {\r\n successMessages.forEach(function (sm) {\r\n connection.on(sm, function (msg) { return handleSuccessMessage(msg); });\r\n });\r\n }\r\n if (errorMessages) {\r\n errorMessages.forEach(function (sm) {\r\n connection.on(sm, function (msg) { return handleErrorMessage(msg); });\r\n });\r\n }\r\n var requestsMap = {};\r\n function join(options) {\r\n _latestOptions = options;\r\n return new Promise(function (resolve, reject) {\r\n if (isJoined) {\r\n resolve({});\r\n return;\r\n }\r\n var joinPromise;\r\n if (domain === \"global\") {\r\n joinPromise = _connectionOn ? Promise.resolve({}) : Promise.reject(\"not connected to gateway\");\r\n }\r\n else {\r\n logger.debug(\"joining domain \".concat(domain));\r\n var joinMsg = {\r\n type: \"join\",\r\n destination: domain,\r\n domain: \"global\",\r\n options: options,\r\n };\r\n joinPromise = send(joinMsg);\r\n }\r\n joinPromise\r\n .then(function () {\r\n handleJoined();\r\n resolve({});\r\n })\r\n .catch(function (err) {\r\n logger.debug(\"error joining \" + domain + \" domain: \" + JSON.stringify(err));\r\n reject(err);\r\n });\r\n });\r\n }\r\n function leave() {\r\n if (domain === \"global\") {\r\n return Promise.resolve();\r\n }\r\n logger.debug(\"stopping session \" + domain + \"...\");\r\n var leaveMsg = {\r\n type: \"leave\",\r\n destination: domain,\r\n domain: \"global\",\r\n };\r\n tryReconnecting = false;\r\n return send(leaveMsg)\r\n .then(function () {\r\n isJoined = false;\r\n callbacks.execute(\"onLeft\");\r\n })\r\n .catch(function () {\r\n isJoined = false;\r\n callbacks.execute(\"onLeft\");\r\n });\r\n }\r\n function handleJoined() {\r\n logger.debug(\"did join \" + domain);\r\n isJoined = true;\r\n var wasReconnect = tryReconnecting;\r\n tryReconnecting = false;\r\n callbacks.execute(\"onJoined\", wasReconnect);\r\n }\r\n function handleConnectionDisconnected() {\r\n _connectionOn = false;\r\n logger.debug(\"connection is down\");\r\n isJoined = false;\r\n tryReconnecting = true;\r\n callbacks.execute(\"onLeft\", { disconnected: true });\r\n }\r\n function handleConnectionLoggedIn() {\r\n _connectionOn = true;\r\n if (tryReconnecting) {\r\n logger.debug(\"connection is now up - trying to reconnect...\");\r\n join(_latestOptions);\r\n }\r\n }\r\n function onJoined(callback) {\r\n if (isJoined) {\r\n callback(false);\r\n }\r\n return callbacks.add(\"onJoined\", callback);\r\n }\r\n function onLeft(callback) {\r\n if (!isJoined) {\r\n callback();\r\n }\r\n return callbacks.add(\"onLeft\", callback);\r\n }\r\n function handleErrorMessage(msg) {\r\n if (domain !== msg.domain) {\r\n return;\r\n }\r\n var requestId = msg.request_id;\r\n if (!requestId) {\r\n return;\r\n }\r\n var entry = requestsMap[requestId];\r\n if (!entry) {\r\n return;\r\n }\r\n entry.error(msg);\r\n }\r\n function handleSuccessMessage(msg) {\r\n if (msg.domain !== domain) {\r\n return;\r\n }\r\n var requestId = msg.request_id;\r\n if (!requestId) {\r\n return;\r\n }\r\n var entry = requestsMap[requestId];\r\n if (!entry) {\r\n return;\r\n }\r\n entry.success(msg);\r\n }\r\n function getNextRequestId() {\r\n return shortid();\r\n }\r\n function send(msg, tag, options) {\r\n options = options || {};\r\n msg.request_id = msg.request_id || getNextRequestId();\r\n msg.domain = msg.domain || domain;\r\n if (!options.skipPeerId) {\r\n msg.peer_id = connection.peerId;\r\n }\r\n var requestId = msg.request_id;\r\n return new Promise(function (resolve, reject) {\r\n requestsMap[requestId] = {\r\n success: function (successMsg) {\r\n delete requestsMap[requestId];\r\n successMsg._tag = tag;\r\n resolve(successMsg);\r\n },\r\n error: function (errorMsg) {\r\n logger.warn(\"GW error - \".concat(JSON.stringify(errorMsg), \" for request \").concat(JSON.stringify(msg)));\r\n delete requestsMap[requestId];\r\n errorMsg._tag = tag;\r\n reject(errorMsg);\r\n },\r\n };\r\n connection\r\n .send(msg, options)\r\n .catch(function (err) {\r\n requestsMap[requestId].error({ err: err });\r\n });\r\n });\r\n }\r\n function sendFireAndForget(msg) {\r\n msg.request_id = msg.request_id ? msg.request_id : getNextRequestId();\r\n msg.domain = msg.domain || domain;\r\n msg.peer_id = connection.peerId;\r\n return connection.send(msg);\r\n }\r\n return {\r\n join: join,\r\n leave: leave,\r\n onJoined: onJoined,\r\n onLeft: onLeft,\r\n send: send,\r\n sendFireAndForget: sendFireAndForget,\r\n on: function (type, callback) {\r\n connection.on(type, function (msg) {\r\n if (msg.domain !== domain) {\r\n return;\r\n }\r\n try {\r\n callback(msg);\r\n }\r\n catch (e) {\r\n logger.error(\"Callback failed: \".concat(e, \" \\n \").concat(e.stack, \" \\n msg was: \").concat(JSON.stringify(msg)), e);\r\n }\r\n });\r\n },\r\n loggedIn: function (callback) { return connection.loggedIn(callback); },\r\n connected: function (callback) { return connection.connected(callback); },\r\n disconnected: function (callback) { return connection.disconnected(callback); },\r\n get peerId() {\r\n return connection.peerId;\r\n },\r\n get domain() {\r\n return domain;\r\n },\r\n };\r\n}\n\nvar GW3ProtocolImpl = (function () {\r\n function GW3ProtocolImpl(connection, settings, logger) {\r\n var _this = this;\r\n this.connection = connection;\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.protocolVersion = 3;\r\n this.datePrefix = \"#T42_DATE#\";\r\n this.datePrefixLen = this.datePrefix.length;\r\n this.dateMinLen = this.datePrefixLen + 1;\r\n this.datePrefixFirstChar = this.datePrefix[0];\r\n this.registry = lib$1();\r\n this._isLoggedIn = false;\r\n this.shouldTryLogin = true;\r\n this.initialLogin = true;\r\n this.initialLoginAttempts = 3;\r\n this.sessions = [];\r\n connection.disconnected(function () {\r\n _this.handleDisconnected();\r\n });\r\n this.ping();\r\n }\r\n Object.defineProperty(GW3ProtocolImpl.prototype, \"isLoggedIn\", {\r\n get: function () {\r\n return this._isLoggedIn;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GW3ProtocolImpl.prototype.processStringMessage = function (message) {\r\n var _this = this;\r\n var msg = JSON.parse(message, function (key, value) {\r\n if (typeof value !== \"string\") {\r\n return value;\r\n }\r\n if (value.length < _this.dateMinLen) {\r\n return value;\r\n }\r\n if (value[0] !== _this.datePrefixFirstChar) {\r\n return value;\r\n }\r\n if (value.substring(0, _this.datePrefixLen) !== _this.datePrefix) {\r\n return value;\r\n }\r\n try {\r\n var milliseconds = parseInt(value.substring(_this.datePrefixLen, value.length), 10);\r\n if (isNaN(milliseconds)) {\r\n return value;\r\n }\r\n return new Date(milliseconds);\r\n }\r\n catch (ex) {\r\n return value;\r\n }\r\n });\r\n return {\r\n msg: msg,\r\n msgType: msg.type,\r\n };\r\n };\r\n GW3ProtocolImpl.prototype.createStringMessage = function (message) {\r\n var oldToJson = Date.prototype.toJSON;\r\n try {\r\n var datePrefix_1 = this.datePrefix;\r\n Date.prototype.toJSON = function () {\r\n return datePrefix_1 + this.getTime();\r\n };\r\n var result = JSON.stringify(message);\r\n return result;\r\n }\r\n finally {\r\n Date.prototype.toJSON = oldToJson;\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.processObjectMessage = function (message) {\r\n if (!message.type) {\r\n throw new Error(\"Object should have type property\");\r\n }\r\n return {\r\n msg: message,\r\n msgType: message.type,\r\n };\r\n };\r\n GW3ProtocolImpl.prototype.createObjectMessage = function (message) {\r\n return message;\r\n };\r\n GW3ProtocolImpl.prototype.login = function (config, reconnect) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authentication, token, e_1, _a, helloMsg, sendOptions, welcomeMsg, msg, token, _b, err_1;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n this.logger.debug(\"logging in...\");\r\n this.loginConfig = config;\r\n if (!this.loginConfig) {\r\n this.loginConfig = { username: \"\", password: \"\" };\r\n }\r\n this.shouldTryLogin = true;\r\n authentication = {};\r\n this.connection.gatewayToken = config.gatewayToken;\r\n if (!config.gatewayToken) return [3, 5];\r\n if (!reconnect) return [3, 4];\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, 3, , 4]);\r\n return [4, this.getNewGWToken()];\r\n case 2:\r\n token = _c.sent();\r\n config.gatewayToken = token;\r\n return [3, 4];\r\n case 3:\r\n e_1 = _c.sent();\r\n this.logger.warn(\"failed to get GW token when reconnecting \".concat((e_1 === null || e_1 === void 0 ? void 0 : e_1.message) || e_1));\r\n return [3, 4];\r\n case 4:\r\n authentication.method = \"gateway-token\";\r\n authentication.token = config.gatewayToken;\r\n this.connection.gatewayToken = config.gatewayToken;\r\n return [3, 10];\r\n case 5:\r\n if (!(config.flowName === \"sspi\")) return [3, 9];\r\n authentication.provider = \"win\";\r\n authentication.method = \"access-token\";\r\n if (!(config.flowCallback && config.sessionId)) return [3, 7];\r\n _a = authentication;\r\n return [4, config.flowCallback(config.sessionId, null)];\r\n case 6:\r\n _a.token =\r\n (_c.sent())\r\n .data\r\n .toString(\"base64\");\r\n return [3, 8];\r\n case 7: throw new Error(\"Invalid SSPI config\");\r\n case 8: return [3, 10];\r\n case 9:\r\n if (config.token) {\r\n authentication.method = \"access-token\";\r\n authentication.token = config.token;\r\n }\r\n else if (config.username) {\r\n authentication.method = \"secret\";\r\n authentication.login = config.username;\r\n authentication.secret = config.password;\r\n }\r\n else if (config.provider) {\r\n authentication.provider = config.provider;\r\n authentication.providerContext = config.providerContext;\r\n }\r\n else {\r\n throw new Error(\"invalid auth message\" + JSON.stringify(config));\r\n }\r\n _c.label = 10;\r\n case 10:\r\n helloMsg = {\r\n type: \"hello\",\r\n identity: this.settings.identity,\r\n authentication: authentication\r\n };\r\n if (config.sessionId) {\r\n helloMsg.request_id = config.sessionId;\r\n }\r\n this.globalDomain = domainSession(\"global\", this.connection, this.logger.subLogger(\"global-domain\"), [\r\n \"welcome\",\r\n \"token\",\r\n \"authentication-request\"\r\n ]);\r\n sendOptions = { skipPeerId: true };\r\n if (this.initialLogin) {\r\n sendOptions.retryInterval = this.settings.reconnectInterval;\r\n sendOptions.maxRetries = this.settings.reconnectAttempts;\r\n }\r\n _c.label = 11;\r\n case 11:\r\n _c.trys.push([11, 19, 20, 21]);\r\n welcomeMsg = void 0;\r\n _c.label = 12;\r\n case 12:\r\n return [4, this.globalDomain.send(helloMsg, undefined, sendOptions)];\r\n case 13:\r\n msg = _c.sent();\r\n if (!(msg.type === \"authentication-request\")) return [3, 16];\r\n token = Buffer.from(msg.authentication.token, \"base64\");\r\n if (!(config.flowCallback && config.sessionId)) return [3, 15];\r\n _b = helloMsg.authentication;\r\n return [4, config.flowCallback(config.sessionId, token)];\r\n case 14:\r\n _b.token =\r\n (_c.sent())\r\n .data\r\n .toString(\"base64\");\r\n _c.label = 15;\r\n case 15:\r\n helloMsg.request_id = config.sessionId;\r\n return [3, 12];\r\n case 16:\r\n if (msg.type === \"welcome\") {\r\n welcomeMsg = msg;\r\n return [3, 18];\r\n }\r\n else if (msg.type === \"error\") {\r\n throw new Error(\"Authentication failed: \" + msg.reason);\r\n }\r\n else {\r\n throw new Error(\"Unexpected message type during authentication: \" + msg.type);\r\n }\r\n case 17: return [3, 12];\r\n case 18:\r\n this.initialLogin = false;\r\n this.logger.debug(\"login successful with peerId \" + welcomeMsg.peer_id);\r\n this.connection.peerId = welcomeMsg.peer_id;\r\n this.connection.resolvedIdentity = welcomeMsg.resolved_identity;\r\n this.connection.availableDomains = welcomeMsg.available_domains;\r\n if (welcomeMsg.options) {\r\n this.connection.token = welcomeMsg.options.access_token;\r\n this.connection.info = welcomeMsg.options.info;\r\n }\r\n this.setLoggedIn(true);\r\n return [2, welcomeMsg.resolved_identity];\r\n case 19:\r\n err_1 = _c.sent();\r\n this.logger.error(\"error sending hello message - \" + (err_1.message || err_1.msg || err_1.reason || err_1), err_1);\r\n throw err_1;\r\n case 20:\r\n if (config && config.flowCallback && config.sessionId) {\r\n config.flowCallback(config.sessionId, null);\r\n }\r\n return [7];\r\n case 21: return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.logout = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var promises;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.debug(\"logging out...\");\r\n this.shouldTryLogin = false;\r\n if (this.pingTimer) {\r\n clearTimeout(this.pingTimer);\r\n }\r\n promises = this.sessions.map(function (session) {\r\n session.leave();\r\n });\r\n return [4, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.loggedIn = function (callback) {\r\n if (this._isLoggedIn) {\r\n callback();\r\n }\r\n return this.registry.add(\"onLoggedIn\", callback);\r\n };\r\n GW3ProtocolImpl.prototype.domain = function (domainName, domainLogger, successMessages, errorMessages) {\r\n var session = this.sessions.filter(function (s) { return s.domain === domainName; })[0];\r\n if (!session) {\r\n session = domainSession(domainName, this.connection, domainLogger, successMessages, errorMessages);\r\n this.sessions.push(session);\r\n }\r\n return session;\r\n };\r\n GW3ProtocolImpl.prototype.handleDisconnected = function () {\r\n var _this = this;\r\n this.setLoggedIn(false);\r\n var tryToLogin = this.shouldTryLogin;\r\n if (tryToLogin && this.initialLogin) {\r\n if (this.initialLoginAttempts <= 0) {\r\n return;\r\n }\r\n this.initialLoginAttempts--;\r\n }\r\n this.logger.debug(\"disconnected - will try new login?\" + this.shouldTryLogin);\r\n if (this.shouldTryLogin) {\r\n if (!this.loginConfig) {\r\n throw new Error(\"no login info\");\r\n }\r\n this.connection.login(this.loginConfig, true)\r\n .catch(function () {\r\n setTimeout(_this.handleDisconnected.bind(_this), _this.settings.reconnectInterval || 1000);\r\n });\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.setLoggedIn = function (value) {\r\n this._isLoggedIn = value;\r\n if (this._isLoggedIn) {\r\n this.registry.execute(\"onLoggedIn\");\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.ping = function () {\r\n var _this = this;\r\n if (!this.shouldTryLogin) {\r\n return;\r\n }\r\n if (this._isLoggedIn) {\r\n this.connection.send({ type: \"ping\" });\r\n }\r\n this.pingTimer = setTimeout(function () {\r\n _this.ping();\r\n }, 30 * 1000);\r\n };\r\n GW3ProtocolImpl.prototype.authToken = function () {\r\n var createTokenReq = {\r\n type: \"create-token\"\r\n };\r\n if (!this.globalDomain) {\r\n return Promise.reject(new Error(\"no global domain session\"));\r\n }\r\n return this.globalDomain.send(createTokenReq)\r\n .then(function (res) {\r\n return res.token;\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.getNewGWToken = function () {\r\n if (typeof window !== \"undefined\") {\r\n var glue42gd = window.glue42gd;\r\n if (glue42gd) {\r\n return glue42gd.getGWToken();\r\n }\r\n }\r\n return Promise.reject(new Error(\"not running in GD\"));\r\n };\r\n return GW3ProtocolImpl;\r\n}());\n\nvar MessageReplayerImpl = (function () {\r\n function MessageReplayerImpl(specs) {\r\n this.specsNames = [];\r\n this.messages = {};\r\n this.subs = {};\r\n this.subsRefCount = {};\r\n this.specs = {};\r\n for (var _i = 0, specs_1 = specs; _i < specs_1.length; _i++) {\r\n var spec = specs_1[_i];\r\n this.specs[spec.name] = spec;\r\n this.specsNames.push(spec.name);\r\n }\r\n }\r\n MessageReplayerImpl.prototype.init = function (connection) {\r\n var _this = this;\r\n this.connection = connection;\r\n for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) {\r\n var name_1 = _a[_i];\r\n var _loop_1 = function (type) {\r\n var refCount = this_1.subsRefCount[type];\r\n if (!refCount) {\r\n refCount = 0;\r\n }\r\n refCount += 1;\r\n this_1.subsRefCount[type] = refCount;\r\n if (refCount > 1) {\r\n return \"continue\";\r\n }\r\n var sub = connection.on(type, function (msg) { return _this.processMessage(type, msg); });\r\n this_1.subs[type] = sub;\r\n };\r\n var this_1 = this;\r\n for (var _b = 0, _c = this.specs[name_1].types; _b < _c.length; _b++) {\r\n var type = _c[_b];\r\n _loop_1(type);\r\n }\r\n }\r\n };\r\n MessageReplayerImpl.prototype.processMessage = function (type, msg) {\r\n if (this.isDone || !msg) {\r\n return;\r\n }\r\n for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) {\r\n var name_2 = _a[_i];\r\n if (this.specs[name_2].types.indexOf(type) !== -1) {\r\n var messages = this.messages[name_2] || [];\r\n this.messages[name_2] = messages;\r\n messages.push(msg);\r\n }\r\n }\r\n };\r\n MessageReplayerImpl.prototype.drain = function (name, callback) {\r\n var _a;\r\n if (callback) {\r\n (this.messages[name] || []).forEach(callback);\r\n }\r\n delete this.messages[name];\r\n for (var _i = 0, _b = this.specs[name].types; _i < _b.length; _i++) {\r\n var type = _b[_i];\r\n this.subsRefCount[type] -= 1;\r\n if (this.subsRefCount[type] <= 0) {\r\n (_a = this.connection) === null || _a === void 0 ? void 0 : _a.off(this.subs[type]);\r\n delete this.subs[type];\r\n delete this.subsRefCount[type];\r\n }\r\n }\r\n delete this.specs[name];\r\n if (!this.specs.length) {\r\n this.isDone = true;\r\n }\r\n };\r\n return MessageReplayerImpl;\r\n}());\n\nvar PromisePlus = function (executor, timeoutMilliseconds, timeoutMessage) {\r\n return new Promise(function (resolve, reject) {\r\n var timeout = setTimeout(function () {\r\n var message = timeoutMessage || \"Promise timeout hit: \".concat(timeoutMilliseconds);\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n var providedPromise = new Promise(executor);\r\n providedPromise\r\n .then(function (result) {\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch(function (error) {\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n};\n\nvar WebPlatformTransport = (function () {\r\n function WebPlatformTransport(settings, logger, identity) {\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.identity = identity;\r\n this.iAmConnected = false;\r\n this.parentReady = false;\r\n this.rejected = false;\r\n this.children = [];\r\n this.extContentAvailable = false;\r\n this.extContentConnecting = false;\r\n this.extContentConnected = false;\r\n this.parentInExtMode = false;\r\n this.webNamespace = \"g42_core_web\";\r\n this.parentPingTimeout = 5000;\r\n this.connectionRequestTimeout = 7000;\r\n this.defaultTargetString = \"*\";\r\n this.registry = lib$1();\r\n this.messages = {\r\n connectionAccepted: { name: \"connectionAccepted\", handle: this.handleConnectionAccepted.bind(this) },\r\n connectionRejected: { name: \"connectionRejected\", handle: this.handleConnectionRejected.bind(this) },\r\n connectionRequest: { name: \"connectionRequest\", handle: this.handleConnectionRequest.bind(this) },\r\n parentReady: {\r\n name: \"parentReady\", handle: function () {\r\n }\r\n },\r\n parentPing: { name: \"parentPing\", handle: this.handleParentPing.bind(this) },\r\n platformPing: { name: \"platformPing\", handle: this.handlePlatformPing.bind(this) },\r\n platformReady: { name: \"platformReady\", handle: this.handlePlatformReady.bind(this) },\r\n clientUnload: { name: \"clientUnload\", handle: this.handleClientUnload.bind(this) },\r\n manualUnload: { name: \"manualUnload\", handle: this.handleManualUnload.bind(this) },\r\n extConnectionResponse: { name: \"extConnectionResponse\", handle: this.handleExtConnectionResponse.bind(this) },\r\n extSetupRequest: { name: \"extSetupRequest\", handle: this.handleExtSetupRequest.bind(this) },\r\n gatewayDisconnect: { name: \"gatewayDisconnect\", handle: this.handleGatewayDisconnect.bind(this) },\r\n gatewayInternalConnect: { name: \"gatewayInternalConnect\", handle: this.handleGatewayInternalConnect.bind(this) }\r\n };\r\n this.extContentAvailable = !!window.glue42ext;\r\n this.setUpMessageListener();\r\n this.setUpUnload();\r\n this.setupPlatformUnloadListener();\r\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : undefined;\r\n }\r\n WebPlatformTransport.prototype.manualSetReadyState = function () {\r\n this.iAmConnected = true;\r\n this.parentReady = true;\r\n };\r\n Object.defineProperty(WebPlatformTransport.prototype, \"transportWindowId\", {\r\n get: function () {\r\n return this.publicWindowId;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebPlatformTransport.prototype, \"communicationId\", {\r\n get: function () {\r\n return this._communicationId;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WebPlatformTransport.prototype.sendObject = function (msg) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (this.extContentConnected) {\r\n return [2, window.postMessage({ glue42ExtOut: msg }, this.defaultTargetString)];\r\n }\r\n if (!this.port) {\r\n throw new Error(\"Cannot send message, because the port was not opened yet\");\r\n }\r\n this.port.postMessage(msg);\r\n return [2];\r\n });\r\n });\r\n };\r\n Object.defineProperty(WebPlatformTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WebPlatformTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n WebPlatformTransport.prototype.send = function () {\r\n return Promise.reject(\"not supported\");\r\n };\r\n WebPlatformTransport.prototype.onConnectedChanged = function (callback) {\r\n return this.registry.add(\"onConnectedChanged\", callback);\r\n };\r\n WebPlatformTransport.prototype.open = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.debug(\"opening a connection to the web platform gateway.\");\r\n return [4, this.connect()];\r\n case 1:\r\n _a.sent();\r\n this.notifyStatusChanged(true);\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.close = function () {\r\n var _a, _b;\r\n var message = {\r\n glue42core: {\r\n type: this.messages.gatewayDisconnect.name,\r\n data: {\r\n clientId: this.myClientId,\r\n ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n this.parentReady = false;\r\n this.notifyStatusChanged(false, \"manual reconnection\");\r\n return Promise.resolve();\r\n };\r\n WebPlatformTransport.prototype.name = function () {\r\n return \"web-platform\";\r\n };\r\n WebPlatformTransport.prototype.reconnect = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.close()];\r\n case 1:\r\n _a.sent();\r\n return [2, Promise.resolve()];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.initiateInternalConnection = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.logger.debug(\"opening an internal web platform connection\");\r\n _this.port = _this.settings.port;\r\n if (_this.iAmConnected) {\r\n _this.logger.warn(\"cannot open a new connection, because this client is currently connected\");\r\n return;\r\n }\r\n _this.port.onmessage = function (event) {\r\n var _a, _b;\r\n if (_this.iAmConnected && !((_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core)) {\r\n _this.registry.execute(\"onMessage\", event.data);\r\n return;\r\n }\r\n var data = (_b = event.data) === null || _b === void 0 ? void 0 : _b.glue42core;\r\n if (!data) {\r\n return;\r\n }\r\n if (data.type === _this.messages.gatewayInternalConnect.name && data.success) {\r\n _this.publicWindowId = _this.settings.windowId;\r\n if (_this.identity && _this.publicWindowId) {\r\n _this.identity.windowId = _this.publicWindowId;\r\n _this.identity.instance = _this.publicWindowId;\r\n }\r\n resolve();\r\n }\r\n if (data.type === _this.messages.gatewayInternalConnect.name && data.error) {\r\n reject(data.error);\r\n }\r\n };\r\n _this.port.postMessage({\r\n glue42core: {\r\n type: _this.messages.gatewayInternalConnect.name\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.initiateRemoteConnection = function (target) {\r\n var _this = this;\r\n return PromisePlus(function (resolve, reject) {\r\n var _a;\r\n _this.connectionResolve = resolve;\r\n _this.connectionReject = reject;\r\n _this.myClientId = (_a = _this.myClientId) !== null && _a !== void 0 ? _a : shortid();\r\n var bridgeInstanceId = _this.getMyWindowId() || shortid();\r\n var request = {\r\n glue42core: {\r\n type: _this.messages.connectionRequest.name,\r\n clientId: _this.myClientId,\r\n clientType: \"child\",\r\n bridgeInstanceId: bridgeInstanceId,\r\n selfAssignedWindowId: _this.selfAssignedWindowId\r\n }\r\n };\r\n _this.logger.debug(\"sending connection request\");\r\n if (_this.extContentConnecting) {\r\n request.glue42core.clientType = \"child\";\r\n request.glue42core.bridgeInstanceId = _this.myClientId;\r\n request.glue42core.parentWindowId = _this.parentWindowId;\r\n return window.postMessage(request, _this.defaultTargetString);\r\n }\r\n if (!target) {\r\n throw new Error(\"Cannot send a connection request, because no glue target was specified!\");\r\n }\r\n target.postMessage(request, _this.defaultTargetString);\r\n }, this.connectionRequestTimeout, \"The connection to the target glue window timed out\");\r\n };\r\n WebPlatformTransport.prototype.isParentCheckSuccess = function (parentCheck) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, parentCheck];\r\n case 1:\r\n _a.sent();\r\n return [2, { success: true }];\r\n case 2:\r\n _a.sent();\r\n return [2, { success: false }];\r\n case 3: return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.setUpMessageListener = function () {\r\n var _this = this;\r\n if (this.settings.port) {\r\n this.logger.debug(\"skipping generic message listener, because this is an internal client\");\r\n return;\r\n }\r\n window.addEventListener(\"message\", function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (!data || _this.rejected) {\r\n return;\r\n }\r\n var allowedOrigins = _this.settings.allowedOrigins || [];\r\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\r\n _this.logger.warn(\"received a message from an origin which is not in the allowed list: \".concat(event.origin));\r\n return;\r\n }\r\n if (!_this.checkMessageTypeValid(data.type)) {\r\n _this.logger.error(\"cannot handle the incoming glue42 core message, because the type is invalid: \".concat(data.type));\r\n return;\r\n }\r\n var messageType = data.type;\r\n _this.logger.debug(\"received valid glue42core message of type: \".concat(messageType));\r\n _this.messages[messageType].handle(event);\r\n });\r\n };\r\n WebPlatformTransport.prototype.setUpUnload = function () {\r\n var _this = this;\r\n if (this.settings.port) {\r\n this.logger.debug(\"skipping unload event listener, because this is an internal client\");\r\n return;\r\n }\r\n window.addEventListener(\"beforeunload\", function () {\r\n var _a, _b;\r\n if (_this.extContentConnected) {\r\n return;\r\n }\r\n var message = {\r\n glue42core: {\r\n type: _this.messages.clientUnload.name,\r\n data: {\r\n clientId: _this.myClientId,\r\n ownWindowId: (_a = _this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n if (_this.parent) {\r\n _this.parent.postMessage(message, _this.defaultTargetString);\r\n }\r\n (_b = _this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n });\r\n };\r\n WebPlatformTransport.prototype.handlePlatformReady = function (event) {\r\n this.logger.debug(\"the web platform gave the ready signal\");\r\n this.parentReady = true;\r\n if (this.parentPingResolve) {\r\n this.parentPingResolve();\r\n delete this.parentPingResolve;\r\n }\r\n if (this.parentPingInterval) {\r\n clearInterval(this.parentPingInterval);\r\n delete this.parentPingInterval;\r\n }\r\n this.parent = event.source;\r\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : \"window\";\r\n };\r\n WebPlatformTransport.prototype.handleConnectionAccepted = function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (this.myClientId === data.clientId) {\r\n return this.handleAcceptanceOfMyRequest(data);\r\n }\r\n return this.handleAcceptanceOfGrandChildRequest(data, event);\r\n };\r\n WebPlatformTransport.prototype.handleAcceptanceOfMyRequest = function (data) {\r\n var _this = this;\r\n this.logger.debug(\"handling a connection accepted signal targeted at me.\");\r\n this.isPreferredActivated = data.isPreferredActivated;\r\n if (this.extContentConnecting) {\r\n return this.processExtContentConnection(data);\r\n }\r\n if (!data.port) {\r\n this.logger.error(\"cannot set up my connection, because I was not provided with a port\");\r\n return;\r\n }\r\n this.publicWindowId = this.getMyWindowId();\r\n if (this.identity) {\r\n this.identity.windowId = this.publicWindowId;\r\n this.identity.instance = this.identity.instance ? this.identity.instance : this.publicWindowId || shortid();\r\n }\r\n if (this.identity && data.appName) {\r\n this.identity.application = data.appName;\r\n this.identity.applicationName = data.appName;\r\n }\r\n this._communicationId = data.communicationId;\r\n this.port = data.port;\r\n this.port.onmessage = function (e) { return _this.registry.execute(\"onMessage\", e.data); };\r\n if (this.connectionResolve) {\r\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\r\n this.connectionResolve();\r\n delete this.connectionResolve;\r\n return;\r\n }\r\n this.logger.error(\"unable to call the connection resolve, because no connection promise was found\");\r\n };\r\n WebPlatformTransport.prototype.processExtContentConnection = function (data) {\r\n var _this = this;\r\n this.logger.debug(\"handling a connection accepted signal targeted at me for extension content connection.\");\r\n this.extContentConnecting = false;\r\n this.extContentConnected = true;\r\n this.publicWindowId = this.parentWindowId || this.myClientId;\r\n if (this.extContentConnecting && this.identity) {\r\n this.identity.windowId = this.publicWindowId;\r\n }\r\n if (this.identity && data.appName) {\r\n this.identity.application = data.appName;\r\n this.identity.applicationName = data.appName;\r\n }\r\n window.addEventListener(\"message\", function (event) {\r\n var _a;\r\n var extData = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42ExtInc;\r\n if (!extData) {\r\n return;\r\n }\r\n var allowedOrigins = _this.settings.allowedOrigins || [];\r\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\r\n _this.logger.warn(\"received a message from an origin which is not in the allowed list: \".concat(event.origin));\r\n return;\r\n }\r\n _this.registry.execute(\"onMessage\", extData);\r\n });\r\n if (this.connectionResolve) {\r\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\r\n this.connectionResolve();\r\n delete this.connectionResolve;\r\n return;\r\n }\r\n };\r\n WebPlatformTransport.prototype.handleAcceptanceOfGrandChildRequest = function (data, event) {\r\n if (this.extContentConnecting || this.extContentConnected) {\r\n this.logger.debug(\"cannot process acceptance of a grandchild, because I am connected to a content script\");\r\n return;\r\n }\r\n this.logger.debug(\"handling a connection accepted signal targeted at a grandchild: \".concat(data.clientId));\r\n var child = this.children.find(function (c) { return c.grandChildId === data.clientId; });\r\n if (!child) {\r\n this.logger.error(\"cannot handle connection accepted for grandchild: \".concat(data.clientId, \", because there is no grandchild with this id\"));\r\n return;\r\n }\r\n child.connected = true;\r\n this.logger.debug(\"the grandchild connection for \".concat(data.clientId, \" is set up, forwarding the success message and the gateway port\"));\r\n data.parentWindowId = this.publicWindowId;\r\n child.source.postMessage(event.data, child.origin, [data.port]);\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleConnectionRejected = function () {\r\n this.logger.debug(\"handling a connection rejection. Most likely the reason is that this window was not created by a glue API call\");\r\n if (this.connectionReject) {\r\n this.connectionReject(\"The platform connection was rejected. Most likely because this window was not created by a glue API call\");\r\n delete this.connectionReject;\r\n }\r\n };\r\n WebPlatformTransport.prototype.handleConnectionRequest = function (event) {\r\n if (this.extContentConnecting) {\r\n this.logger.debug(\"This connection request event is targeted at the extension content\");\r\n return;\r\n }\r\n var source = event.source;\r\n var data = event.data.glue42core;\r\n if (!data.clientType || data.clientType !== \"grandChild\") {\r\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source was not opened by a glue API call\");\r\n }\r\n if (!data.clientId) {\r\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source did not provide a valid id\");\r\n }\r\n if (!this.parent) {\r\n return this.rejectConnectionRequest(source, event.origin, \"Cannot forward the connection request, because no direct connection to the platform was found\");\r\n }\r\n this.logger.debug(\"handling a connection request for a grandchild: \".concat(data.clientId));\r\n this.children.push({ grandChildId: data.clientId, source: source, connected: false, origin: event.origin });\r\n this.logger.debug(\"grandchild: \".concat(data.clientId, \" is prepared, forwarding connection request to the platform\"));\r\n this.parent.postMessage(event.data, this.defaultTargetString);\r\n };\r\n WebPlatformTransport.prototype.handleParentPing = function (event) {\r\n if (!this.parentReady) {\r\n this.logger.debug(\"my parent is not ready, I am ignoring the parent ping\");\r\n return;\r\n }\r\n if (!this.iAmConnected) {\r\n this.logger.debug(\"i am not fully connected yet, I am ignoring the parent ping\");\r\n return;\r\n }\r\n var message = {\r\n glue42core: {\r\n type: this.messages.parentReady.name\r\n }\r\n };\r\n if (this.extContentConnected) {\r\n message.glue42core.extMode = { windowId: this.myClientId };\r\n }\r\n var source = event.source;\r\n this.logger.debug(\"responding to a parent ping with a ready message\");\r\n source.postMessage(message, event.origin);\r\n };\r\n WebPlatformTransport.prototype.setupPlatformUnloadListener = function () {\r\n var _this = this;\r\n this.onMessage(function (msg) {\r\n if (msg.type === \"platformUnload\") {\r\n _this.logger.debug(\"detected a web platform unload\");\r\n _this.parentReady = false;\r\n _this.notifyStatusChanged(false, \"Gateway unloaded\");\r\n }\r\n });\r\n };\r\n WebPlatformTransport.prototype.handleManualUnload = function () {\r\n var _a, _b;\r\n var message = {\r\n glue42core: {\r\n type: this.messages.clientUnload.name,\r\n data: {\r\n clientId: this.myClientId,\r\n ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n if (this.extContentConnected) {\r\n return window.postMessage({ glue42ExtOut: message }, this.defaultTargetString);\r\n }\r\n (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n };\r\n WebPlatformTransport.prototype.handleClientUnload = function (event) {\r\n var data = event.data.glue42core;\r\n var clientId = data === null || data === void 0 ? void 0 : data.data.clientId;\r\n if (!clientId) {\r\n this.logger.warn(\"cannot process grand child unload, because the provided id was not valid\");\r\n return;\r\n }\r\n var foundChild = this.children.find(function (child) { return child.grandChildId === clientId; });\r\n if (!foundChild) {\r\n this.logger.warn(\"cannot process grand child unload, because this client is unaware of this grandchild\");\r\n return;\r\n }\r\n this.logger.debug(\"handling grandchild unload for id: \".concat(clientId));\r\n this.children = this.children.filter(function (child) { return child.grandChildId !== clientId; });\r\n };\r\n WebPlatformTransport.prototype.handlePlatformPing = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.notifyStatusChanged = function (status, reason) {\r\n this.iAmConnected = status;\r\n this.registry.execute(\"onConnectedChanged\", status, reason);\r\n };\r\n WebPlatformTransport.prototype.checkMessageTypeValid = function (typeToValidate) {\r\n return typeof typeToValidate === \"string\" && !!this.messages[typeToValidate];\r\n };\r\n WebPlatformTransport.prototype.rejectConnectionRequest = function (source, origin, reason) {\r\n this.rejected = true;\r\n this.logger.error(reason);\r\n var rejection = {\r\n glue42core: {\r\n type: this.messages.connectionRejected.name\r\n }\r\n };\r\n source.postMessage(rejection, origin);\r\n };\r\n WebPlatformTransport.prototype.requestConnectionPermissionFromExt = function () {\r\n var _this = this;\r\n return this.waitForContentScript()\r\n .then(function () { return PromisePlus(function (resolve, reject) {\r\n _this.extConnectionResolve = resolve;\r\n _this.extConnectionReject = reject;\r\n var message = {\r\n glue42core: {\r\n type: \"extSetupRequest\"\r\n }\r\n };\r\n _this.logger.debug(\"permission request to the extension content script was sent\");\r\n window.postMessage(message, _this.defaultTargetString);\r\n }, _this.parentPingTimeout, \"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out\"); });\r\n };\r\n WebPlatformTransport.prototype.handleExtConnectionResponse = function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (!data.approved) {\r\n return this.extConnectionReject ? this.extConnectionReject(\"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection was rejected\") : undefined;\r\n }\r\n if (this.extConnectionResolve) {\r\n this.extConnectionResolve();\r\n delete this.extConnectionResolve;\r\n }\r\n this.extContentConnecting = true;\r\n this.parentType = \"extension\";\r\n this.logger.debug(\"The extension connection was approved, proceeding.\");\r\n };\r\n WebPlatformTransport.prototype.handleExtSetupRequest = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleGatewayDisconnect = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleGatewayInternalConnect = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.waitForContentScript = function () {\r\n var _a;\r\n var contentReady = !!((_a = window.glue42ext) === null || _a === void 0 ? void 0 : _a.content);\r\n if (contentReady) {\r\n return Promise.resolve();\r\n }\r\n return PromisePlus(function (resolve) {\r\n window.addEventListener(\"Glue42EXTReady\", function () {\r\n resolve();\r\n });\r\n }, this.connectionRequestTimeout, \"The content script was available, but was never heard to be ready\");\r\n };\r\n WebPlatformTransport.prototype.connect = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.settings.port) return [3, 2];\r\n return [4, this.initiateInternalConnection()];\r\n case 1:\r\n _a.sent();\r\n this.logger.debug(\"internal web platform connection completed\");\r\n return [2];\r\n case 2:\r\n this.logger.debug(\"opening a client web platform connection\");\r\n return [4, this.findParent()];\r\n case 3:\r\n _a.sent();\r\n return [4, this.initiateRemoteConnection(this.parent)];\r\n case 4:\r\n _a.sent();\r\n this.logger.debug(\"the client is connected\");\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.findParent = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var connectionNotPossibleMsg, myInsideParents, myOutsideParents, uniqueParents, defaultParentCheck;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\r\n myInsideParents = this.getPossibleParentsInWindow(window);\r\n myOutsideParents = this.getPossibleParentsOutsideWindow((_a = window.top) === null || _a === void 0 ? void 0 : _a.opener, window.top);\r\n uniqueParents = new Set(__spreadArray(__spreadArray([], myInsideParents, true), myOutsideParents, true));\r\n if (!uniqueParents.size && !this.extContentAvailable) {\r\n throw new Error(connectionNotPossibleMsg);\r\n }\r\n if (!(!uniqueParents.size && this.extContentAvailable)) return [3, 2];\r\n return [4, this.requestConnectionPermissionFromExt()];\r\n case 1:\r\n _b.sent();\r\n return [2];\r\n case 2: return [4, this.isParentCheckSuccess(this.confirmParent(Array.from(uniqueParents)))];\r\n case 3:\r\n defaultParentCheck = _b.sent();\r\n if (defaultParentCheck.success) {\r\n this.logger.debug(\"The default parent was found!\");\r\n return [2];\r\n }\r\n if (!this.extContentAvailable) {\r\n throw new Error(connectionNotPossibleMsg);\r\n }\r\n return [4, this.requestConnectionPermissionFromExt()];\r\n case 4:\r\n _b.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.getPossibleParentsInWindow = function (currentWindow) {\r\n return (!currentWindow || currentWindow === currentWindow.top) ? [] : __spreadArray([currentWindow.parent], this.getPossibleParentsInWindow(currentWindow.parent), true);\r\n };\r\n WebPlatformTransport.prototype.getPossibleParentsOutsideWindow = function (opener, current) {\r\n return (!opener || !current || opener === current) ? [] : __spreadArray(__spreadArray([opener], this.getPossibleParentsInWindow(opener), true), this.getPossibleParentsOutsideWindow(opener.opener, opener), true);\r\n };\r\n WebPlatformTransport.prototype.confirmParent = function (targets) {\r\n var _this = this;\r\n var connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\r\n var parentCheck = PromisePlus(function (resolve) {\r\n _this.parentPingResolve = resolve;\r\n var message = {\r\n glue42core: {\r\n type: _this.messages.platformPing.name\r\n }\r\n };\r\n _this.parentPingInterval = setInterval(function () {\r\n targets.forEach(function (target) {\r\n target.postMessage(message, _this.defaultTargetString);\r\n });\r\n }, 1000);\r\n }, this.parentPingTimeout, connectionNotPossibleMsg);\r\n parentCheck.catch(function () {\r\n if (_this.parentPingInterval) {\r\n clearInterval(_this.parentPingInterval);\r\n delete _this.parentPingInterval;\r\n }\r\n });\r\n return parentCheck;\r\n };\r\n WebPlatformTransport.prototype.getMyWindowId = function () {\r\n var _a;\r\n if (this.parentType === \"workspace\") {\r\n return window.name.substring(0, window.name.indexOf(\"#wsp\"));\r\n }\r\n if (window !== window.top) {\r\n return;\r\n }\r\n if ((_a = window.name) === null || _a === void 0 ? void 0 : _a.includes(\"g42\")) {\r\n return window.name;\r\n }\r\n this.selfAssignedWindowId = this.selfAssignedWindowId || \"g42-\".concat(shortid());\r\n return this.selfAssignedWindowId;\r\n };\r\n return WebPlatformTransport;\r\n}());\n\nvar waitForInvocations = function (invocations, callback) {\r\n var left = invocations;\r\n return function () {\r\n left--;\r\n if (left === 0) {\r\n callback();\r\n }\r\n };\r\n};\n\nvar AsyncSequelizer = (function () {\r\n function AsyncSequelizer(minSequenceInterval) {\r\n if (minSequenceInterval === void 0) { minSequenceInterval = 0; }\r\n this.minSequenceInterval = minSequenceInterval;\r\n this.queue = [];\r\n this.isExecutingQueue = false;\r\n }\r\n AsyncSequelizer.prototype.enqueue = function (action) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.queue.push({ action: action, resolve: resolve, reject: reject });\r\n _this.executeQueue();\r\n });\r\n };\r\n AsyncSequelizer.prototype.executeQueue = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var operation, actionResult, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.isExecutingQueue) {\r\n return [2];\r\n }\r\n this.isExecutingQueue = true;\r\n _a.label = 1;\r\n case 1:\r\n if (!this.queue.length) return [3, 7];\r\n operation = this.queue.shift();\r\n if (!operation) {\r\n this.isExecutingQueue = false;\r\n return [2];\r\n }\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4, operation.action()];\r\n case 3:\r\n actionResult = _a.sent();\r\n operation.resolve(actionResult);\r\n return [3, 5];\r\n case 4:\r\n error_1 = _a.sent();\r\n operation.reject(error_1);\r\n return [3, 5];\r\n case 5: return [4, this.intervalBreak()];\r\n case 6:\r\n _a.sent();\r\n return [3, 1];\r\n case 7:\r\n this.isExecutingQueue = false;\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n AsyncSequelizer.prototype.intervalBreak = function () {\r\n var _this = this;\r\n return new Promise(function (res) { return setTimeout(res, _this.minSequenceInterval); });\r\n };\r\n return AsyncSequelizer;\r\n}());\n\nvar Connection = (function () {\r\n function Connection(settings, logger) {\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.messageHandlers = {};\r\n this.ids = 1;\r\n this.registry = lib$1();\r\n this._connected = false;\r\n this.isTrace = false;\r\n this._swapTransport = false;\r\n this._switchInProgress = false;\r\n this._transportSubscriptions = [];\r\n this._sequelizer = new AsyncSequelizer();\r\n settings = settings || {};\r\n settings.reconnectAttempts = settings.reconnectAttempts || 10;\r\n settings.reconnectInterval = settings.reconnectInterval || 1000;\r\n if (settings.inproc) {\r\n this.transport = new InProcTransport(settings.inproc, logger.subLogger(\"inMemory\"));\r\n }\r\n else if (settings.sharedWorker) {\r\n this.transport = new SharedWorkerTransport(settings.sharedWorker, logger.subLogger(\"shared-worker\"));\r\n }\r\n else if (settings.webPlatform) {\r\n this.transport = new WebPlatformTransport(settings.webPlatform, logger.subLogger(\"web-platform\"), settings.identity);\r\n }\r\n else if (settings.ws !== undefined) {\r\n this.transport = new WS(settings, logger.subLogger(\"ws\"));\r\n }\r\n else {\r\n throw new Error(\"No connection information specified\");\r\n }\r\n this.isTrace = logger.canPublish(\"trace\");\r\n logger.debug(\"starting with \".concat(this.transport.name(), \" transport\"));\r\n this.protocol = new GW3ProtocolImpl(this, settings, logger.subLogger(\"protocol\"));\r\n var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\r\n var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\r\n this._transportSubscriptions.push(unsubConnectionChanged);\r\n this._transportSubscriptions.push(unsubOnMessage);\r\n this._defaultTransport = this.transport;\r\n }\r\n Object.defineProperty(Connection.prototype, \"protocolVersion\", {\r\n get: function () {\r\n var _a;\r\n return (_a = this.protocol) === null || _a === void 0 ? void 0 : _a.protocolVersion;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Connection.prototype.switchTransport = function (settings) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2, this._sequelizer.enqueue(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var switchTargetTransport, verifyPromise, isSwitchSuccess;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!settings || typeof settings !== \"object\") {\r\n throw new Error(\"Cannot switch transports, because the settings are missing or invalid.\");\r\n }\r\n if (typeof settings.type === \"undefined\") {\r\n throw new Error(\"Cannot switch the transport, because the type is not defined\");\r\n }\r\n this.logger.trace(\"Starting transport switch with settings: \".concat(JSON.stringify(settings)));\r\n switchTargetTransport = settings.type === \"secondary\" ? this.getNewSecondaryTransport(settings) : this._defaultTransport;\r\n this._targetTransport = switchTargetTransport;\r\n this._targetAuth = settings.type === \"secondary\" ? this.getNewSecondaryAuth(settings) : this._defaultAuth;\r\n verifyPromise = this.verifyConnection();\r\n this._swapTransport = true;\r\n this._switchInProgress = true;\r\n this.logger.trace(\"The new transport has been set, closing the current transport\");\r\n return [4, this.transport.close()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4, verifyPromise];\r\n case 3:\r\n _a.sent();\r\n isSwitchSuccess = this.transport === switchTargetTransport;\r\n this.logger.info(\"The reconnection after the switch was completed. Was the switch a success: \".concat(isSwitchSuccess));\r\n this._switchInProgress = false;\r\n return [2, { success: isSwitchSuccess }];\r\n case 4:\r\n _a.sent();\r\n this.logger.info(\"The reconnection after the switch timed out, reverting back to the default transport.\");\r\n this.switchTransport({ type: \"default\" });\r\n this._switchInProgress = false;\r\n return [2, { success: false }];\r\n case 5: return [2];\r\n }\r\n });\r\n }); })];\r\n });\r\n });\r\n };\r\n Connection.prototype.onLibReAnnounced = function (callback) {\r\n return this.registry.add(\"libReAnnounced\", callback);\r\n };\r\n Connection.prototype.setLibReAnnounced = function (lib) {\r\n this.registry.execute(\"libReAnnounced\", lib);\r\n };\r\n Connection.prototype.send = function (message, options) {\r\n if (this.transport.sendObject &&\r\n this.transport.isObjectBasedTransport) {\r\n var msg = this.protocol.createObjectMessage(message);\r\n if (this.isTrace) {\r\n this.logger.trace(\">> \".concat(JSON.stringify(msg)));\r\n }\r\n return this.transport.sendObject(msg, options);\r\n }\r\n else {\r\n var strMessage = this.protocol.createStringMessage(message);\r\n if (this.isTrace) {\r\n this.logger.trace(\">> \".concat(strMessage));\r\n }\r\n return this.transport.send(strMessage, options);\r\n }\r\n };\r\n Connection.prototype.on = function (type, messageHandler) {\r\n type = type.toLowerCase();\r\n if (this.messageHandlers[type] === undefined) {\r\n this.messageHandlers[type] = {};\r\n }\r\n var id = this.ids++;\r\n this.messageHandlers[type][id] = messageHandler;\r\n return {\r\n type: type,\r\n id: id,\r\n };\r\n };\r\n Connection.prototype.off = function (info) {\r\n delete this.messageHandlers[info.type.toLowerCase()][info.id];\r\n };\r\n Object.defineProperty(Connection.prototype, \"isConnected\", {\r\n get: function () {\r\n return this.protocol.isLoggedIn;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Connection.prototype.connected = function (callback) {\r\n var _this = this;\r\n return this.protocol.loggedIn(function () {\r\n var currentServer = _this.transport.name();\r\n callback(currentServer);\r\n });\r\n };\r\n Connection.prototype.disconnected = function (callback) {\r\n return this.registry.add(\"disconnected\", callback);\r\n };\r\n Connection.prototype.login = function (authRequest, reconnect) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newAuth, identity, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this._defaultAuth) {\r\n this._defaultAuth = authRequest;\r\n }\r\n if (this._swapTransport) {\r\n this.logger.trace(\"Detected a transport swap, swapping transports\");\r\n newAuth = this.transportSwap();\r\n authRequest = newAuth !== null && newAuth !== void 0 ? newAuth : authRequest;\r\n }\r\n this.logger.trace(\"Starting login for transport: \".concat(this.transport.name(), \" and auth \").concat(JSON.stringify(authRequest)));\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 4, , 5]);\r\n return [4, this.transport.open()];\r\n case 2:\r\n _a.sent();\r\n this.logger.trace(\"Transport: \".concat(this.transport.name(), \" opened, logging in\"));\r\n timer(\"connection\").mark(\"transport-opened\");\r\n return [4, this.protocol.login(authRequest, reconnect)];\r\n case 3:\r\n identity = _a.sent();\r\n this.logger.trace(\"Logged in with identity: \".concat(JSON.stringify(identity)));\r\n timer(\"connection\").mark(\"protocol-logged-in\");\r\n return [2, identity];\r\n case 4:\r\n error_2 = _a.sent();\r\n if (this._switchInProgress) {\r\n this.logger.trace(\"An error while logging in after a transport swap, preparing a default swap.\");\r\n this.prepareDefaultSwap();\r\n }\r\n throw new Error(error_2);\r\n case 5: return [2];\r\n }\r\n });\r\n });\r\n };\r\n Connection.prototype.logout = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.protocol.logout()];\r\n case 1:\r\n _a.sent();\r\n return [4, this.transport.close()];\r\n case 2:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Connection.prototype.loggedIn = function (callback) {\r\n return this.protocol.loggedIn(callback);\r\n };\r\n Connection.prototype.domain = function (domain, successMessages, errorMessages) {\r\n return this.protocol.domain(domain, this.logger.subLogger(\"domain=\".concat(domain)), successMessages, errorMessages);\r\n };\r\n Connection.prototype.authToken = function () {\r\n return this.protocol.authToken();\r\n };\r\n Connection.prototype.reconnect = function () {\r\n return this.transport.reconnect();\r\n };\r\n Connection.prototype.distributeMessage = function (message, type) {\r\n var _this = this;\r\n var handlers = this.messageHandlers[type.toLowerCase()];\r\n if (handlers !== undefined) {\r\n Object.keys(handlers).forEach(function (handlerId) {\r\n var handler = handlers[handlerId];\r\n if (handler !== undefined) {\r\n try {\r\n handler(message);\r\n }\r\n catch (error) {\r\n try {\r\n _this.logger.error(\"Message handler failed with \".concat(error.stack), error);\r\n }\r\n catch (loggerError) {\r\n console.log(\"Message handler failed\", error);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n };\r\n Connection.prototype.handleConnectionChanged = function (connected) {\r\n if (this._connected === connected) {\r\n return;\r\n }\r\n this._connected = connected;\r\n if (connected) {\r\n if (this.settings.replaySpecs && this.settings.replaySpecs.length) {\r\n this.replayer = new MessageReplayerImpl(this.settings.replaySpecs);\r\n this.replayer.init(this);\r\n }\r\n this.registry.execute(\"connected\");\r\n }\r\n else {\r\n this.registry.execute(\"disconnected\");\r\n }\r\n };\r\n Connection.prototype.handleTransportMessage = function (msg) {\r\n var msgObj;\r\n if (typeof msg === \"string\") {\r\n msgObj = this.protocol.processStringMessage(msg);\r\n }\r\n else {\r\n msgObj = this.protocol.processObjectMessage(msg);\r\n }\r\n if (this.isTrace) {\r\n this.logger.trace(\"<< \".concat(JSON.stringify(msgObj)));\r\n }\r\n this.distributeMessage(msgObj.msg, msgObj.msgType);\r\n };\r\n Connection.prototype.verifyConnection = function () {\r\n var _this = this;\r\n return PromisePlus(function (resolve) {\r\n var unsub;\r\n var ready = waitForInvocations(2, function () {\r\n if (unsub) {\r\n unsub();\r\n }\r\n resolve();\r\n });\r\n unsub = _this.onLibReAnnounced(function (lib) {\r\n if (lib.name === \"interop\") {\r\n return ready();\r\n }\r\n if (lib.name === \"contexts\") {\r\n return ready();\r\n }\r\n });\r\n }, 10000, \"Transport switch timed out waiting for all libraries to be re-announced\");\r\n };\r\n Connection.prototype.getNewSecondaryTransport = function (settings) {\r\n var _a;\r\n if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.url)) {\r\n throw new Error(\"Missing secondary transport URL.\");\r\n }\r\n return new WS(Object.assign({}, this.settings, { ws: settings.transportConfig.url, reconnectAttempts: 1 }), this.logger.subLogger(\"ws-secondary\"));\r\n };\r\n Connection.prototype.getNewSecondaryAuth = function (settings) {\r\n var _a;\r\n if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.auth)) {\r\n throw new Error(\"Missing secondary transport auth information.\");\r\n }\r\n return settings.transportConfig.auth;\r\n };\r\n Connection.prototype.transportSwap = function () {\r\n this._swapTransport = false;\r\n if (!this._targetTransport || !this._targetAuth) {\r\n this.logger.warn(\"Error while switching transports - either the target transport or auth is not defined: transport defined -> \".concat(!!this._defaultTransport, \", auth defined -> \").concat(!!this._targetAuth, \". Staying on the current one.\"));\r\n return;\r\n }\r\n this._transportSubscriptions.forEach(function (unsub) { return unsub(); });\r\n this._transportSubscriptions = [];\r\n this.transport = this._targetTransport;\r\n var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\r\n var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\r\n this._transportSubscriptions.push(unsubConnectionChanged);\r\n this._transportSubscriptions.push(unsubOnMessage);\r\n return this._targetAuth;\r\n };\r\n Connection.prototype.prepareDefaultSwap = function () {\r\n var _this = this;\r\n this._transportSubscriptions.forEach(function (unsub) { return unsub(); });\r\n this._transportSubscriptions = [];\r\n this.transport.close().catch(function (error) { return _this.logger.warn(\"Error closing the \".concat(_this.transport.name(), \" transport after a failed connection attempt: \").concat(JSON.stringify(error))); });\r\n this._targetTransport = this._defaultTransport;\r\n this._targetAuth = this._defaultAuth;\r\n this._swapTransport = true;\r\n };\r\n return Connection;\r\n}());\n\nvar order = [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"off\"];\r\nvar Logger = (function () {\r\n function Logger(name, parent, logFn) {\r\n this.name = name;\r\n this.parent = parent;\r\n this.subLoggers = [];\r\n this.logFn = console;\r\n this.customLogFn = false;\r\n this.name = name;\r\n if (parent) {\r\n this.path = \"\".concat(parent.path, \".\").concat(name);\r\n }\r\n else {\r\n this.path = name;\r\n }\r\n this.loggerFullName = \"[\".concat(this.path, \"]\");\r\n this.includeTimeAndLevel = !logFn;\r\n if (logFn) {\r\n this.logFn = logFn;\r\n this.customLogFn = true;\r\n }\r\n }\r\n Logger.prototype.subLogger = function (name) {\r\n var existingSub = this.subLoggers.filter(function (subLogger) {\r\n return subLogger.name === name;\r\n })[0];\r\n if (existingSub !== undefined) {\r\n return existingSub;\r\n }\r\n Object.keys(this).forEach(function (key) {\r\n if (key === name) {\r\n throw new Error(\"This sub logger name is not allowed.\");\r\n }\r\n });\r\n var sub = new Logger(name, this, this.customLogFn ? this.logFn : undefined);\r\n this.subLoggers.push(sub);\r\n return sub;\r\n };\r\n Logger.prototype.publishLevel = function (level) {\r\n var _a;\r\n if (level) {\r\n this._publishLevel = level;\r\n }\r\n return this._publishLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.publishLevel());\r\n };\r\n Logger.prototype.consoleLevel = function (level) {\r\n var _a;\r\n if (level) {\r\n this._consoleLevel = level;\r\n }\r\n return this._consoleLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.consoleLevel());\r\n };\r\n Logger.prototype.log = function (message, level, error) {\r\n this.publishMessage(level || \"info\", message, error);\r\n };\r\n Logger.prototype.trace = function (message) {\r\n this.log(message, \"trace\");\r\n };\r\n Logger.prototype.debug = function (message) {\r\n this.log(message, \"debug\");\r\n };\r\n Logger.prototype.info = function (message) {\r\n this.log(message, \"info\");\r\n };\r\n Logger.prototype.warn = function (message) {\r\n this.log(message, \"warn\");\r\n };\r\n Logger.prototype.error = function (message, err) {\r\n this.log(message, \"error\");\r\n };\r\n Logger.prototype.canPublish = function (level, compareWith) {\r\n var levelIdx = order.indexOf(level);\r\n var restrictionIdx = order.indexOf(compareWith || this.consoleLevel() || \"trace\");\r\n return levelIdx >= restrictionIdx;\r\n };\r\n Logger.prototype.publishMessage = function (level, message, error) {\r\n var loggerName = this.loggerFullName;\r\n if (level === \"error\" && !error) {\r\n var e = new Error();\r\n if (e.stack) {\r\n message =\r\n message +\r\n \"\\n\" +\r\n e.stack\r\n .split(\"\\n\")\r\n .slice(3)\r\n .join(\"\\n\");\r\n }\r\n }\r\n if (this.canPublish(level, this.publishLevel())) {\r\n var interop = Logger.Interop;\r\n if (interop) {\r\n try {\r\n if (interop.methods({ name: Logger.InteropMethodName }).length > 0) {\r\n interop.invoke(Logger.InteropMethodName, {\r\n msg: \"\".concat(message),\r\n logger: loggerName,\r\n level: level\r\n });\r\n }\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n }\r\n if (this.canPublish(level)) {\r\n var prefix = \"\";\r\n if (this.includeTimeAndLevel) {\r\n var date = new Date();\r\n var time = \"\".concat(date.getHours(), \":\").concat(date.getMinutes(), \":\").concat(date.getSeconds(), \":\").concat(date.getMilliseconds());\r\n prefix = \"[\".concat(time, \"] [\").concat(level, \"] \");\r\n }\r\n var toPrint = \"\".concat(prefix).concat(loggerName, \": \").concat(message);\r\n switch (level) {\r\n case \"trace\":\r\n this.logFn.debug(toPrint);\r\n break;\r\n case \"debug\":\r\n if (this.logFn.debug) {\r\n this.logFn.debug(toPrint);\r\n }\r\n else {\r\n this.logFn.log(toPrint);\r\n }\r\n break;\r\n case \"info\":\r\n this.logFn.info(toPrint);\r\n break;\r\n case \"warn\":\r\n this.logFn.warn(toPrint);\r\n break;\r\n case \"error\":\r\n this.logFn.error(toPrint, error);\r\n break;\r\n }\r\n }\r\n };\r\n Logger.InteropMethodName = \"T42.AppLogger.Log\";\r\n return Logger;\r\n}());\n\nvar GW_MESSAGE_CREATE_CONTEXT = \"create-context\";\r\nvar GW_MESSAGE_ACTIVITY_CREATED = \"created\";\r\nvar GW_MESSAGE_ACTIVITY_DESTROYED = \"destroyed\";\r\nvar GW_MESSAGE_CONTEXT_CREATED = \"context-created\";\r\nvar GW_MESSAGE_CONTEXT_ADDED = \"context-added\";\r\nvar GW_MESSAGE_SUBSCRIBE_CONTEXT = \"subscribe-context\";\r\nvar GW_MESSAGE_SUBSCRIBED_CONTEXT = \"subscribed-context\";\r\nvar GW_MESSAGE_UNSUBSCRIBE_CONTEXT = \"unsubscribe-context\";\r\nvar GW_MESSAGE_DESTROY_CONTEXT = \"destroy-context\";\r\nvar GW_MESSAGE_CONTEXT_DESTROYED = \"context-destroyed\";\r\nvar GW_MESSAGE_UPDATE_CONTEXT = \"update-context\";\r\nvar GW_MESSAGE_CONTEXT_UPDATED = \"context-updated\";\r\nvar GW_MESSAGE_JOINED_ACTIVITY = \"joined\";\n\nvar ContextMessageReplaySpec = {\r\n get name() {\r\n return \"context\";\r\n },\r\n get types() {\r\n return [\r\n GW_MESSAGE_CREATE_CONTEXT,\r\n GW_MESSAGE_ACTIVITY_CREATED,\r\n GW_MESSAGE_ACTIVITY_DESTROYED,\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_CONTEXT_ADDED,\r\n GW_MESSAGE_SUBSCRIBE_CONTEXT,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\r\n GW_MESSAGE_DESTROY_CONTEXT,\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_UPDATE_CONTEXT,\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n GW_MESSAGE_JOINED_ACTIVITY\r\n ];\r\n }\r\n};\n\nvar version = \"6.2.0\";\n\nfunction prepareConfig (configuration, ext, glue42gd) {\r\n var _a, _b, _c, _d;\r\n var nodeStartingContext;\r\n if (Utils.isNode()) {\r\n var startingContextString = process.env._GD_STARTING_CONTEXT_;\r\n if (startingContextString) {\r\n try {\r\n nodeStartingContext = JSON.parse(startingContextString);\r\n }\r\n catch (_e) {\r\n }\r\n }\r\n }\r\n function getConnection() {\r\n var _a, _b, _c, _d, _e, _f;\r\n var gwConfig = configuration.gateway;\r\n var protocolVersion = (_a = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.protocolVersion) !== null && _a !== void 0 ? _a : 3;\r\n var reconnectInterval = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectInterval;\r\n var reconnectAttempts = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectAttempts;\r\n var defaultWs = \"ws://localhost:8385\";\r\n var ws = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.ws;\r\n var sharedWorker = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.sharedWorker;\r\n var inproc = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.inproc;\r\n var webPlatform = (_b = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.webPlatform) !== null && _b !== void 0 ? _b : undefined;\r\n if (glue42gd) {\r\n ws = glue42gd.gwURL;\r\n }\r\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwURL) {\r\n ws = nodeStartingContext.gwURL;\r\n }\r\n if (!ws && !sharedWorker && !inproc) {\r\n ws = defaultWs;\r\n }\r\n var instanceId;\r\n var windowId;\r\n var pid;\r\n var environment;\r\n var region;\r\n var appName = getApplication();\r\n var uniqueAppName = appName;\r\n if (typeof glue42gd !== \"undefined\") {\r\n windowId = glue42gd.windowId;\r\n pid = glue42gd.pid;\r\n if (glue42gd.env) {\r\n environment = glue42gd.env.env;\r\n region = glue42gd.env.region;\r\n }\r\n uniqueAppName = (_c = glue42gd.application) !== null && _c !== void 0 ? _c : \"glue-app\";\r\n instanceId = glue42gd.appInstanceId;\r\n }\r\n else if (Utils.isNode()) {\r\n pid = process.pid;\r\n if (nodeStartingContext) {\r\n environment = nodeStartingContext.env;\r\n region = nodeStartingContext.region;\r\n instanceId = nodeStartingContext.instanceId;\r\n }\r\n }\r\n else if (typeof (window === null || window === void 0 ? void 0 : window.glue42electron) !== \"undefined\") {\r\n windowId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId;\r\n pid = window === null || window === void 0 ? void 0 : window.glue42electron.pid;\r\n environment = window === null || window === void 0 ? void 0 : window.glue42electron.env;\r\n region = window === null || window === void 0 ? void 0 : window.glue42electron.region;\r\n uniqueAppName = (_d = window === null || window === void 0 ? void 0 : window.glue42electron.application) !== null && _d !== void 0 ? _d : \"glue-app\";\r\n instanceId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId;\r\n }\r\n else ;\r\n var replaySpecs = (_f = (_e = configuration.gateway) === null || _e === void 0 ? void 0 : _e.replaySpecs) !== null && _f !== void 0 ? _f : [];\r\n replaySpecs.push(ContextMessageReplaySpec);\r\n var identity = {\r\n application: uniqueAppName,\r\n applicationName: appName,\r\n windowId: windowId,\r\n instance: instanceId,\r\n process: pid,\r\n region: region,\r\n environment: environment,\r\n api: ext.version || version\r\n };\r\n if (configuration.identity) {\r\n identity = Object.assign(identity, configuration.identity);\r\n }\r\n return {\r\n identity: identity,\r\n reconnectInterval: reconnectInterval,\r\n ws: ws,\r\n sharedWorker: sharedWorker,\r\n webPlatform: webPlatform,\r\n inproc: inproc,\r\n protocolVersion: protocolVersion,\r\n reconnectAttempts: reconnectAttempts,\r\n replaySpecs: replaySpecs,\r\n };\r\n }\r\n function getContexts() {\r\n if (typeof configuration.contexts === \"undefined\") {\r\n return { reAnnounceKnownContexts: true };\r\n }\r\n if (typeof configuration.contexts === \"boolean\" && configuration.contexts) {\r\n return { reAnnounceKnownContexts: true };\r\n }\r\n if (typeof configuration.contexts === \"object\") {\r\n return Object.assign({}, { reAnnounceKnownContexts: true }, configuration.contexts);\r\n }\r\n return false;\r\n }\r\n function getApplication() {\r\n if (configuration.application) {\r\n return configuration.application;\r\n }\r\n if (glue42gd) {\r\n return glue42gd.applicationName;\r\n }\r\n if (typeof window !== \"undefined\" && typeof window.glue42electron !== \"undefined\") {\r\n return window.glue42electron.application;\r\n }\r\n var uid = shortid();\r\n if (Utils.isNode()) {\r\n if (nodeStartingContext) {\r\n return nodeStartingContext.applicationConfig.name;\r\n }\r\n return \"NodeJS\" + uid;\r\n }\r\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\r\n return document.title + \" (\".concat(uid, \")\");\r\n }\r\n return uid;\r\n }\r\n function getAuth() {\r\n var _a, _b, _c;\r\n if (typeof configuration.auth === \"string\") {\r\n return {\r\n token: configuration.auth\r\n };\r\n }\r\n if (configuration.auth) {\r\n return configuration.auth;\r\n }\r\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwToken) {\r\n return {\r\n gatewayToken: nodeStartingContext.gwToken\r\n };\r\n }\r\n if (((_a = configuration.gateway) === null || _a === void 0 ? void 0 : _a.webPlatform) || ((_b = configuration.gateway) === null || _b === void 0 ? void 0 : _b.inproc) || ((_c = configuration.gateway) === null || _c === void 0 ? void 0 : _c.sharedWorker)) {\r\n return {\r\n username: \"glue42\", password: \"glue42\"\r\n };\r\n }\r\n }\r\n function getLogger() {\r\n var _a, _b;\r\n var config = configuration.logger;\r\n var defaultLevel = \"warn\";\r\n if (!config) {\r\n config = defaultLevel;\r\n }\r\n var gdConsoleLevel;\r\n if (glue42gd) {\r\n gdConsoleLevel = glue42gd.consoleLogLevel;\r\n }\r\n if (typeof config === \"string\") {\r\n return { console: gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config, publish: defaultLevel };\r\n }\r\n return {\r\n console: (_a = gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config.console) !== null && _a !== void 0 ? _a : defaultLevel,\r\n publish: (_b = config.publish) !== null && _b !== void 0 ? _b : defaultLevel\r\n };\r\n }\r\n var connection = getConnection();\r\n var application = getApplication();\r\n if (typeof window !== \"undefined\") {\r\n var windowAsAny = window;\r\n var containerApplication = windowAsAny.htmlContainer ?\r\n \"\".concat(windowAsAny.htmlContainer.containerName, \".\").concat(windowAsAny.htmlContainer.application) :\r\n (_a = windowAsAny === null || windowAsAny === void 0 ? void 0 : windowAsAny.glue42gd) === null || _a === void 0 ? void 0 : _a.application;\r\n if (containerApplication) {\r\n application = containerApplication;\r\n }\r\n }\r\n return {\r\n bus: (_b = configuration.bus) !== null && _b !== void 0 ? _b : false,\r\n application: application,\r\n auth: getAuth(),\r\n logger: getLogger(),\r\n connection: connection,\r\n metrics: (_c = configuration.metrics) !== null && _c !== void 0 ? _c : true,\r\n contexts: getContexts(),\r\n version: ext.version || version,\r\n libs: (_d = ext.libs) !== null && _d !== void 0 ? _d : [],\r\n customLogger: configuration.customLogger\r\n };\r\n}\n\nvar GW3ContextData = (function () {\r\n function GW3ContextData(contextId, name, isAnnounced, activityId) {\r\n this.updateCallbacks = {};\r\n this.contextId = contextId;\r\n this.name = name;\r\n this.isAnnounced = isAnnounced;\r\n this.activityId = activityId;\r\n this.context = {};\r\n }\r\n GW3ContextData.prototype.hasCallbacks = function () {\r\n return Object.keys(this.updateCallbacks).length > 0;\r\n };\r\n GW3ContextData.prototype.getState = function () {\r\n if (this.isAnnounced && this.hasCallbacks()) {\r\n return 3;\r\n }\r\n if (this.isAnnounced) {\r\n return 2;\r\n }\r\n if (this.hasCallbacks()) {\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n return GW3ContextData;\r\n}());\n\nvar lodash_clonedeepExports = {};\nvar lodash_clonedeep = {\n get exports(){ return lodash_clonedeepExports; },\n set exports(v){ lodash_clonedeepExports = v; },\n};\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n(function (module, exports) {\n\t/** Used as the size to enable large array optimizations. */\n\tvar LARGE_ARRAY_SIZE = 200;\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t promiseTag = '[object Promise]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t symbolTag = '[object Symbol]',\n\t weakMapTag = '[object WeakMap]';\n\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t dataViewTag = '[object DataView]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n\t/** Used to match `RegExp` flags from their coerced string values. */\n\tvar reFlags = /\\w*$/;\n\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n\t/** Used to identify `toStringTag` values supported by `_.clone`. */\n\tvar cloneableTags = {};\n\tcloneableTags[argsTag] = cloneableTags[arrayTag] =\n\tcloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n\tcloneableTags[boolTag] = cloneableTags[dateTag] =\n\tcloneableTags[float32Tag] = cloneableTags[float64Tag] =\n\tcloneableTags[int8Tag] = cloneableTags[int16Tag] =\n\tcloneableTags[int32Tag] = cloneableTags[mapTag] =\n\tcloneableTags[numberTag] = cloneableTags[objectTag] =\n\tcloneableTags[regexpTag] = cloneableTags[setTag] =\n\tcloneableTags[stringTag] = cloneableTags[symbolTag] =\n\tcloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n\tcloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n\tcloneableTags[errorTag] = cloneableTags[funcTag] =\n\tcloneableTags[weakMapTag] = false;\n\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n\t/** Detect free variable `self`. */\n\tvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n\t/** Used as a reference to the global object. */\n\tvar root = freeGlobal || freeSelf || Function('return this')();\n\n\t/** Detect free variable `exports`. */\n\tvar freeExports = exports && !exports.nodeType && exports;\n\n\t/** Detect free variable `module`. */\n\tvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n\t/** Detect the popular CommonJS extension `module.exports`. */\n\tvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n\t/**\n\t * Adds the key-value `pair` to `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to modify.\n\t * @param {Array} pair The key-value pair to add.\n\t * @returns {Object} Returns `map`.\n\t */\n\tfunction addMapEntry(map, pair) {\n\t // Don't return `map.set` because it's not chainable in IE 11.\n\t map.set(pair[0], pair[1]);\n\t return map;\n\t}\n\n\t/**\n\t * Adds `value` to `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to modify.\n\t * @param {*} value The value to add.\n\t * @returns {Object} Returns `set`.\n\t */\n\tfunction addSetEntry(set, value) {\n\t // Don't return `set.add` because it's not chainable in IE 11.\n\t set.add(value);\n\t return set;\n\t}\n\n\t/**\n\t * A specialized version of `_.forEach` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayEach(array, iteratee) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t while (++index < length) {\n\t if (iteratee(array[index], index, array) === false) {\n\t break;\n\t }\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Appends the elements of `values` to `array`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {Array} values The values to append.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayPush(array, values) {\n\t var index = -1,\n\t length = values.length,\n\t offset = array.length;\n\n\t while (++index < length) {\n\t array[offset + index] = values[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * A specialized version of `_.reduce` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {boolean} [initAccum] Specify using the first element of `array` as\n\t * the initial value.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\tfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t if (initAccum && length) {\n\t accumulator = array[++index];\n\t }\n\t while (++index < length) {\n\t accumulator = iteratee(accumulator, array[index], index, array);\n\t }\n\t return accumulator;\n\t}\n\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Gets the value at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} [object] The object to query.\n\t * @param {string} key The key of the property to get.\n\t * @returns {*} Returns the property value.\n\t */\n\tfunction getValue(object, key) {\n\t return object == null ? undefined : object[key];\n\t}\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Converts `map` to its key-value pairs.\n\t *\n\t * @private\n\t * @param {Object} map The map to convert.\n\t * @returns {Array} Returns the key-value pairs.\n\t */\n\tfunction mapToArray(map) {\n\t var index = -1,\n\t result = Array(map.size);\n\n\t map.forEach(function(value, key) {\n\t result[++index] = [key, value];\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\n\t/**\n\t * Converts `set` to an array of its values.\n\t *\n\t * @private\n\t * @param {Object} set The set to convert.\n\t * @returns {Array} Returns the values.\n\t */\n\tfunction setToArray(set) {\n\t var index = -1,\n\t result = Array(set.size);\n\n\t set.forEach(function(value) {\n\t result[++index] = value;\n\t });\n\t return result;\n\t}\n\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype,\n\t funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\n\t/** Used to detect overreaching core-js shims. */\n\tvar coreJsData = root['__core-js_shared__'];\n\n\t/** Used to detect methods masquerading as native. */\n\tvar maskSrcKey = (function() {\n\t var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n\t return uid ? ('Symbol(src)_1.' + uid) : '';\n\t}());\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\n\t/** Built-in value references. */\n\tvar Buffer = moduleExports ? root.Buffer : undefined,\n\t Symbol = root.Symbol,\n\t Uint8Array = root.Uint8Array,\n\t getPrototype = overArg(Object.getPrototypeOf, Object),\n\t objectCreate = Object.create,\n\t propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t splice = arrayProto.splice;\n\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetSymbols = Object.getOwnPropertySymbols,\n\t nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n\t nativeKeys = overArg(Object.keys, Object);\n\n\t/* Built-in method references that are verified to be native. */\n\tvar DataView = getNative(root, 'DataView'),\n\t Map = getNative(root, 'Map'),\n\t Promise = getNative(root, 'Promise'),\n\t Set = getNative(root, 'Set'),\n\t WeakMap = getNative(root, 'WeakMap'),\n\t nativeCreate = getNative(Object, 'create');\n\n\t/** Used to detect maps, sets, and weakmaps. */\n\tvar dataViewCtorString = toSource(DataView),\n\t mapCtorString = toSource(Map),\n\t promiseCtorString = toSource(Promise),\n\t setCtorString = toSource(Set),\n\t weakMapCtorString = toSource(WeakMap);\n\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Hash(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the hash.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Hash\n\t */\n\tfunction hashClear() {\n\t this.__data__ = nativeCreate ? nativeCreate(null) : {};\n\t}\n\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Hash\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(key) {\n\t return this.has(key) && delete this.__data__[key];\n\t}\n\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(key) {\n\t var data = this.__data__;\n\t if (nativeCreate) {\n\t var result = data[key];\n\t return result === HASH_UNDEFINED ? undefined : result;\n\t }\n\t return hasOwnProperty.call(data, key) ? data[key] : undefined;\n\t}\n\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Hash\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(key) {\n\t var data = this.__data__;\n\t return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n\t}\n\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the hash instance.\n\t */\n\tfunction hashSet(key, value) {\n\t var data = this.__data__;\n\t data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t return this;\n\t}\n\n\t// Add methods to `Hash`.\n\tHash.prototype.clear = hashClear;\n\tHash.prototype['delete'] = hashDelete;\n\tHash.prototype.get = hashGet;\n\tHash.prototype.has = hashHas;\n\tHash.prototype.set = hashSet;\n\n\t/**\n\t * Creates an list cache object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction ListCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the list cache.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf ListCache\n\t */\n\tfunction listCacheClear() {\n\t this.__data__ = [];\n\t}\n\n\t/**\n\t * Removes `key` and its value from the list cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction listCacheDelete(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t return false;\n\t }\n\t var lastIndex = data.length - 1;\n\t if (index == lastIndex) {\n\t data.pop();\n\t } else {\n\t splice.call(data, index, 1);\n\t }\n\t return true;\n\t}\n\n\t/**\n\t * Gets the list cache value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction listCacheGet(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t return index < 0 ? undefined : data[index][1];\n\t}\n\n\t/**\n\t * Checks if a list cache value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf ListCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction listCacheHas(key) {\n\t return assocIndexOf(this.__data__, key) > -1;\n\t}\n\n\t/**\n\t * Sets the list cache `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the list cache instance.\n\t */\n\tfunction listCacheSet(key, value) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t data.push([key, value]);\n\t } else {\n\t data[index][1] = value;\n\t }\n\t return this;\n\t}\n\n\t// Add methods to `ListCache`.\n\tListCache.prototype.clear = listCacheClear;\n\tListCache.prototype['delete'] = listCacheDelete;\n\tListCache.prototype.get = listCacheGet;\n\tListCache.prototype.has = listCacheHas;\n\tListCache.prototype.set = listCacheSet;\n\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction MapCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapCacheClear() {\n\t this.__data__ = {\n\t 'hash': new Hash,\n\t 'map': new (Map || ListCache),\n\t 'string': new Hash\n\t };\n\t}\n\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapCacheDelete(key) {\n\t return getMapData(this, key)['delete'](key);\n\t}\n\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapCacheGet(key) {\n\t return getMapData(this, key).get(key);\n\t}\n\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapCacheHas(key) {\n\t return getMapData(this, key).has(key);\n\t}\n\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapCacheSet(key, value) {\n\t getMapData(this, key).set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapCacheClear;\n\tMapCache.prototype['delete'] = mapCacheDelete;\n\tMapCache.prototype.get = mapCacheGet;\n\tMapCache.prototype.has = mapCacheHas;\n\tMapCache.prototype.set = mapCacheSet;\n\n\t/**\n\t * Creates a stack cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Stack(entries) {\n\t this.__data__ = new ListCache(entries);\n\t}\n\n\t/**\n\t * Removes all key-value entries from the stack.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Stack\n\t */\n\tfunction stackClear() {\n\t this.__data__ = new ListCache;\n\t}\n\n\t/**\n\t * Removes `key` and its value from the stack.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction stackDelete(key) {\n\t return this.__data__['delete'](key);\n\t}\n\n\t/**\n\t * Gets the stack value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction stackGet(key) {\n\t return this.__data__.get(key);\n\t}\n\n\t/**\n\t * Checks if a stack value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Stack\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction stackHas(key) {\n\t return this.__data__.has(key);\n\t}\n\n\t/**\n\t * Sets the stack `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the stack cache instance.\n\t */\n\tfunction stackSet(key, value) {\n\t var cache = this.__data__;\n\t if (cache instanceof ListCache) {\n\t var pairs = cache.__data__;\n\t if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n\t pairs.push([key, value]);\n\t return this;\n\t }\n\t cache = this.__data__ = new MapCache(pairs);\n\t }\n\t cache.set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `Stack`.\n\tStack.prototype.clear = stackClear;\n\tStack.prototype['delete'] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\n\t/**\n\t * Creates an array of the enumerable property names of the array-like `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @param {boolean} inherited Specify returning inherited property names.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction arrayLikeKeys(value, inherited) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t // Safari 9 makes `arguments.length` enumerable in strict mode.\n\t var result = (isArray(value) || isArguments(value))\n\t ? baseTimes(value.length, String)\n\t : [];\n\n\t var length = result.length,\n\t skipIndexes = !!length;\n\n\t for (var key in value) {\n\t if ((inherited || hasOwnProperty.call(value, key)) &&\n\t !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Assigns `value` to `key` of `object` if the existing value is not equivalent\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {string} key The key of the property to assign.\n\t * @param {*} value The value to assign.\n\t */\n\tfunction assignValue(object, key, value) {\n\t var objValue = object[key];\n\t if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n\t (value === undefined && !(key in object))) {\n\t object[key] = value;\n\t }\n\t}\n\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t var length = array.length;\n\t while (length--) {\n\t if (eq(array[length][0], key)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t}\n\n\t/**\n\t * The base implementation of `_.assign` without support for multiple sources\n\t * or `customizer` functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction baseAssign(object, source) {\n\t return object && copyObject(source, keys(source), object);\n\t}\n\n\t/**\n\t * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n\t * traversed objects.\n\t *\n\t * @private\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @param {boolean} [isFull] Specify a clone including symbols.\n\t * @param {Function} [customizer] The function to customize cloning.\n\t * @param {string} [key] The key of `value`.\n\t * @param {Object} [object] The parent object of `value`.\n\t * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n\t * @returns {*} Returns the cloned value.\n\t */\n\tfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n\t var result;\n\t if (customizer) {\n\t result = object ? customizer(value, key, object, stack) : customizer(value);\n\t }\n\t if (result !== undefined) {\n\t return result;\n\t }\n\t if (!isObject(value)) {\n\t return value;\n\t }\n\t var isArr = isArray(value);\n\t if (isArr) {\n\t result = initCloneArray(value);\n\t if (!isDeep) {\n\t return copyArray(value, result);\n\t }\n\t } else {\n\t var tag = getTag(value),\n\t isFunc = tag == funcTag || tag == genTag;\n\n\t if (isBuffer(value)) {\n\t return cloneBuffer(value, isDeep);\n\t }\n\t if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n\t if (isHostObject(value)) {\n\t return object ? value : {};\n\t }\n\t result = initCloneObject(isFunc ? {} : value);\n\t if (!isDeep) {\n\t return copySymbols(value, baseAssign(result, value));\n\t }\n\t } else {\n\t if (!cloneableTags[tag]) {\n\t return object ? value : {};\n\t }\n\t result = initCloneByTag(value, tag, baseClone, isDeep);\n\t }\n\t }\n\t // Check for circular references and return its corresponding clone.\n\t stack || (stack = new Stack);\n\t var stacked = stack.get(value);\n\t if (stacked) {\n\t return stacked;\n\t }\n\t stack.set(value, result);\n\n\t if (!isArr) {\n\t var props = isFull ? getAllKeys(value) : keys(value);\n\t }\n\t arrayEach(props || value, function(subValue, key) {\n\t if (props) {\n\t key = subValue;\n\t subValue = value[key];\n\t }\n\t // Recursively populate clone (susceptible to call stack limits).\n\t assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * The base implementation of `_.create` without support for assigning\n\t * properties to the created object.\n\t *\n\t * @private\n\t * @param {Object} prototype The object to inherit from.\n\t * @returns {Object} Returns the new object.\n\t */\n\tfunction baseCreate(proto) {\n\t return isObject(proto) ? objectCreate(proto) : {};\n\t}\n\n\t/**\n\t * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n\t * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n\t * symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @param {Function} symbolsFunc The function to get the symbols of `object`.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n\t var result = keysFunc(object);\n\t return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n\t}\n\n\t/**\n\t * The base implementation of `getTag`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction baseGetTag(value) {\n\t return objectToString.call(value);\n\t}\n\n\t/**\n\t * The base implementation of `_.isNative` without bad shim checks.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t * else `false`.\n\t */\n\tfunction baseIsNative(value) {\n\t if (!isObject(value) || isMasked(value)) {\n\t return false;\n\t }\n\t var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t return pattern.test(toSource(value));\n\t}\n\n\t/**\n\t * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t if (!isPrototype(object)) {\n\t return nativeKeys(object);\n\t }\n\t var result = [];\n\t for (var key in Object(object)) {\n\t if (hasOwnProperty.call(object, key) && key != 'constructor') {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `buffer`.\n\t *\n\t * @private\n\t * @param {Buffer} buffer The buffer to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Buffer} Returns the cloned buffer.\n\t */\n\tfunction cloneBuffer(buffer, isDeep) {\n\t if (isDeep) {\n\t return buffer.slice();\n\t }\n\t var result = new buffer.constructor(buffer.length);\n\t buffer.copy(result);\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `arrayBuffer`.\n\t *\n\t * @private\n\t * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n\t * @returns {ArrayBuffer} Returns the cloned array buffer.\n\t */\n\tfunction cloneArrayBuffer(arrayBuffer) {\n\t var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n\t new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `dataView`.\n\t *\n\t * @private\n\t * @param {Object} dataView The data view to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned data view.\n\t */\n\tfunction cloneDataView(dataView, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n\t return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n\t}\n\n\t/**\n\t * Creates a clone of `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned map.\n\t */\n\tfunction cloneMap(map, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n\t return arrayReduce(array, addMapEntry, new map.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of `regexp`.\n\t *\n\t * @private\n\t * @param {Object} regexp The regexp to clone.\n\t * @returns {Object} Returns the cloned regexp.\n\t */\n\tfunction cloneRegExp(regexp) {\n\t var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n\t result.lastIndex = regexp.lastIndex;\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned set.\n\t */\n\tfunction cloneSet(set, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n\t return arrayReduce(array, addSetEntry, new set.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of the `symbol` object.\n\t *\n\t * @private\n\t * @param {Object} symbol The symbol object to clone.\n\t * @returns {Object} Returns the cloned symbol object.\n\t */\n\tfunction cloneSymbol(symbol) {\n\t return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n\t}\n\n\t/**\n\t * Creates a clone of `typedArray`.\n\t *\n\t * @private\n\t * @param {Object} typedArray The typed array to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned typed array.\n\t */\n\tfunction cloneTypedArray(typedArray, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n\t return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n\t}\n\n\t/**\n\t * Copies the values of `source` to `array`.\n\t *\n\t * @private\n\t * @param {Array} source The array to copy values from.\n\t * @param {Array} [array=[]] The array to copy values to.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction copyArray(source, array) {\n\t var index = -1,\n\t length = source.length;\n\n\t array || (array = Array(length));\n\t while (++index < length) {\n\t array[index] = source[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Copies properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy properties from.\n\t * @param {Array} props The property identifiers to copy.\n\t * @param {Object} [object={}] The object to copy properties to.\n\t * @param {Function} [customizer] The function to customize copied values.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copyObject(source, props, object, customizer) {\n\t object || (object = {});\n\n\t var index = -1,\n\t length = props.length;\n\n\t while (++index < length) {\n\t var key = props[index];\n\n\t var newValue = customizer\n\t ? customizer(object[key], source[key], key, object, source)\n\t : undefined;\n\n\t assignValue(object, key, newValue === undefined ? source[key] : newValue);\n\t }\n\t return object;\n\t}\n\n\t/**\n\t * Copies own symbol properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy symbols from.\n\t * @param {Object} [object={}] The object to copy symbols to.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copySymbols(source, object) {\n\t return copyObject(source, getSymbols(source), object);\n\t}\n\n\t/**\n\t * Creates an array of own enumerable property names and symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction getAllKeys(object) {\n\t return baseGetAllKeys(object, keys, getSymbols);\n\t}\n\n\t/**\n\t * Gets the data for `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to query.\n\t * @param {string} key The reference key.\n\t * @returns {*} Returns the map data.\n\t */\n\tfunction getMapData(map, key) {\n\t var data = map.__data__;\n\t return isKeyable(key)\n\t ? data[typeof key == 'string' ? 'string' : 'hash']\n\t : data.map;\n\t}\n\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = getValue(object, key);\n\t return baseIsNative(value) ? value : undefined;\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable symbol properties of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of symbols.\n\t */\n\tvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n\t/**\n\t * Gets the `toStringTag` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tvar getTag = baseGetTag;\n\n\t// Fallback for data views, maps, sets, and weak maps in IE 11,\n\t// for data views in Edge < 14, and promises in Node.js.\n\tif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n\t (Map && getTag(new Map) != mapTag) ||\n\t (Promise && getTag(Promise.resolve()) != promiseTag) ||\n\t (Set && getTag(new Set) != setTag) ||\n\t (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n\t getTag = function(value) {\n\t var result = objectToString.call(value),\n\t Ctor = result == objectTag ? value.constructor : undefined,\n\t ctorString = Ctor ? toSource(Ctor) : undefined;\n\n\t if (ctorString) {\n\t switch (ctorString) {\n\t case dataViewCtorString: return dataViewTag;\n\t case mapCtorString: return mapTag;\n\t case promiseCtorString: return promiseTag;\n\t case setCtorString: return setTag;\n\t case weakMapCtorString: return weakMapTag;\n\t }\n\t }\n\t return result;\n\t };\n\t}\n\n\t/**\n\t * Initializes an array clone.\n\t *\n\t * @private\n\t * @param {Array} array The array to clone.\n\t * @returns {Array} Returns the initialized clone.\n\t */\n\tfunction initCloneArray(array) {\n\t var length = array.length,\n\t result = array.constructor(length);\n\n\t // Add properties assigned by `RegExp#exec`.\n\t if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n\t result.index = array.index;\n\t result.input = array.input;\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Initializes an object clone.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneObject(object) {\n\t return (typeof object.constructor == 'function' && !isPrototype(object))\n\t ? baseCreate(getPrototype(object))\n\t : {};\n\t}\n\n\t/**\n\t * Initializes an object clone based on its `toStringTag`.\n\t *\n\t * **Note:** This function only supports cloning values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @param {string} tag The `toStringTag` of the object to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n\t var Ctor = object.constructor;\n\t switch (tag) {\n\t case arrayBufferTag:\n\t return cloneArrayBuffer(object);\n\n\t case boolTag:\n\t case dateTag:\n\t return new Ctor(+object);\n\n\t case dataViewTag:\n\t return cloneDataView(object, isDeep);\n\n\t case float32Tag: case float64Tag:\n\t case int8Tag: case int16Tag: case int32Tag:\n\t case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n\t return cloneTypedArray(object, isDeep);\n\n\t case mapTag:\n\t return cloneMap(object, isDeep, cloneFunc);\n\n\t case numberTag:\n\t case stringTag:\n\t return new Ctor(object);\n\n\t case regexpTag:\n\t return cloneRegExp(object);\n\n\t case setTag:\n\t return cloneSet(object, isDeep, cloneFunc);\n\n\t case symbolTag:\n\t return cloneSymbol(object);\n\t }\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return !!length &&\n\t (typeof value == 'number' || reIsUint.test(value)) &&\n\t (value > -1 && value % 1 == 0 && value < length);\n\t}\n\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t var type = typeof value;\n\t return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n\t ? (value !== '__proto__')\n\t : (value === null);\n\t}\n\n\t/**\n\t * Checks if `func` has its source masked.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n\t */\n\tfunction isMasked(func) {\n\t return !!maskSrcKey && (maskSrcKey in func);\n\t}\n\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n\t return value === proto;\n\t}\n\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t if (func != null) {\n\t try {\n\t return funcToString.call(func);\n\t } catch (e) {}\n\t try {\n\t return (func + '');\n\t } catch (e) {}\n\t }\n\t return '';\n\t}\n\n\t/**\n\t * This method is like `_.clone` except that it recursively clones `value`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 1.0.0\n\t * @category Lang\n\t * @param {*} value The value to recursively clone.\n\t * @returns {*} Returns the deep cloned value.\n\t * @see _.clone\n\t * @example\n\t *\n\t * var objects = [{ 'a': 1 }, { 'b': 2 }];\n\t *\n\t * var deep = _.cloneDeep(objects);\n\t * console.log(deep[0] === objects[0]);\n\t * // => false\n\t */\n\tfunction cloneDeep(value) {\n\t return baseClone(value, true, true);\n\t}\n\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(value.length) && !isFunction(value);\n\t}\n\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t return isObjectLike(value) && isArrayLike(value);\n\t}\n\n\t/**\n\t * Checks if `value` is a buffer.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.3.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n\t * @example\n\t *\n\t * _.isBuffer(new Buffer(2));\n\t * // => true\n\t *\n\t * _.isBuffer(new Uint8Array(2));\n\t * // => false\n\t */\n\tvar isBuffer = nativeIsBuffer || stubFalse;\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8-9 which returns 'object' for typed array and other constructors.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n\t}\n\n\t/**\n\t * This method returns a new empty array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {Array} Returns the new empty array.\n\t * @example\n\t *\n\t * var arrays = _.times(2, _.stubArray);\n\t *\n\t * console.log(arrays);\n\t * // => [[], []]\n\t *\n\t * console.log(arrays[0] === arrays[1]);\n\t * // => false\n\t */\n\tfunction stubArray() {\n\t return [];\n\t}\n\n\t/**\n\t * This method returns `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {boolean} Returns `false`.\n\t * @example\n\t *\n\t * _.times(2, _.stubFalse);\n\t * // => [false, false]\n\t */\n\tfunction stubFalse() {\n\t return false;\n\t}\n\n\tmodule.exports = cloneDeep;\n} (lodash_clonedeep, lodash_clonedeepExports));\n\nvar cloneDeep = lodash_clonedeepExports;\n\nfunction applyContextDelta(context, delta, logger) {\r\n try {\r\n if (logger === null || logger === void 0 ? void 0 : logger.canPublish(\"trace\")) {\r\n logger === null || logger === void 0 ? void 0 : logger.trace(\"applying context delta \".concat(JSON.stringify(delta), \" on context \").concat(JSON.stringify(context)));\r\n }\r\n if (!delta) {\r\n return context;\r\n }\r\n if (delta.reset) {\r\n context = __assign({}, delta.reset);\r\n return context;\r\n }\r\n context = deepClone(context, undefined);\r\n if (delta.commands) {\r\n for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) {\r\n var command = _a[_i];\r\n if (command.type === \"remove\") {\r\n deletePath(context, command.path);\r\n }\r\n else if (command.type === \"set\") {\r\n setValueToPath(context, command.value, command.path);\r\n }\r\n }\r\n return context;\r\n }\r\n var added_1 = delta.added;\r\n var updated_1 = delta.updated;\r\n var removed = delta.removed;\r\n if (added_1) {\r\n Object.keys(added_1).forEach(function (key) {\r\n context[key] = added_1[key];\r\n });\r\n }\r\n if (updated_1) {\r\n Object.keys(updated_1).forEach(function (key) {\r\n mergeObjectsProperties(key, context, updated_1);\r\n });\r\n }\r\n if (removed) {\r\n removed.forEach(function (key) {\r\n delete context[key];\r\n });\r\n }\r\n return context;\r\n }\r\n catch (e) {\r\n logger === null || logger === void 0 ? void 0 : logger.error(\"error applying context delta \".concat(JSON.stringify(delta), \" on context \").concat(JSON.stringify(context)), e);\r\n return context;\r\n }\r\n}\r\nfunction deepClone(obj, hash) {\r\n return cloneDeep(obj);\r\n}\r\nvar mergeObjectsProperties = function (key, what, withWhat) {\r\n var right = withWhat[key];\r\n if (right === undefined) {\r\n return what;\r\n }\r\n var left = what[key];\r\n if (!left || !right) {\r\n what[key] = right;\r\n return what;\r\n }\r\n if (typeof left === \"string\" ||\r\n typeof left === \"number\" ||\r\n typeof left === \"boolean\" ||\r\n typeof right === \"string\" ||\r\n typeof right === \"number\" ||\r\n typeof right === \"boolean\" ||\r\n Array.isArray(left) ||\r\n Array.isArray(right)) {\r\n what[key] = right;\r\n return what;\r\n }\r\n what[key] = Object.assign({}, left, right);\r\n return what;\r\n};\r\nfunction deepEqual(x, y) {\r\n if (x === y) {\r\n return true;\r\n }\r\n if (!(x instanceof Object) || !(y instanceof Object)) {\r\n return false;\r\n }\r\n if (x.constructor !== y.constructor) {\r\n return false;\r\n }\r\n for (var p in x) {\r\n if (!x.hasOwnProperty(p)) {\r\n continue;\r\n }\r\n if (!y.hasOwnProperty(p)) {\r\n return false;\r\n }\r\n if (x[p] === y[p]) {\r\n continue;\r\n }\r\n if (typeof (x[p]) !== \"object\") {\r\n return false;\r\n }\r\n if (!deepEqual(x[p], y[p])) {\r\n return false;\r\n }\r\n }\r\n for (var p in y) {\r\n if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction setValueToPath(obj, value, path) {\r\n var pathArr = path.split(\".\");\r\n var i;\r\n for (i = 0; i < pathArr.length - 1; i++) {\r\n if (!obj[pathArr[i]]) {\r\n obj[pathArr[i]] = {};\r\n }\r\n if (typeof obj[pathArr[i]] !== \"object\") {\r\n obj[pathArr[i]] = {};\r\n }\r\n obj = obj[pathArr[i]];\r\n }\r\n obj[pathArr[i]] = value;\r\n}\r\nfunction isSubset(superObj, subObj) {\r\n return Object.keys(subObj).every(function (ele) {\r\n if (typeof subObj[ele] === \"object\") {\r\n return isSubset((superObj === null || superObj === void 0 ? void 0 : superObj[ele]) || {}, subObj[ele] || {});\r\n }\r\n return subObj[ele] === (superObj === null || superObj === void 0 ? void 0 : superObj[ele]);\r\n });\r\n}\r\nfunction deletePath(obj, path) {\r\n var pathArr = path.split(\".\");\r\n var i;\r\n for (i = 0; i < pathArr.length - 1; i++) {\r\n if (!obj[pathArr[i]]) {\r\n return;\r\n }\r\n obj = obj[pathArr[i]];\r\n }\r\n delete obj[pathArr[i]];\r\n}\n\nvar GW3Bridge = (function () {\r\n function GW3Bridge(config) {\r\n var _this = this;\r\n var _a;\r\n this._contextNameToData = {};\r\n this._gw3Subscriptions = [];\r\n this._nextCallbackSubscriptionNumber = 0;\r\n this._creationPromises = {};\r\n this._contextNameToId = {};\r\n this._contextIdToName = {};\r\n this._protocolVersion = undefined;\r\n this._contextsTempCache = {};\r\n this._contextsSubscriptionsCache = [];\r\n this._connection = config.connection;\r\n this._logger = config.logger;\r\n this._trackAllContexts = config.trackAllContexts;\r\n this._reAnnounceKnownContexts = config.reAnnounceKnownContexts;\r\n this._gw3Session = this._connection.domain(\"global\", [\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n ]);\r\n this._gw3Session.disconnected(this.resetState.bind(this));\r\n this._gw3Session.onJoined(function (wasReconnect) {\r\n if (!wasReconnect) {\r\n return;\r\n }\r\n if (!_this._reAnnounceKnownContexts) {\r\n return _this._connection.setLibReAnnounced({ name: \"contexts\" });\r\n }\r\n _this.reInitiateState().then(function () { return _this._connection.setLibReAnnounced({ name: \"contexts\" }); });\r\n });\r\n this.subscribeToContextCreatedMessages();\r\n this.subscribeToContextUpdatedMessages();\r\n this.subscribeToContextDestroyedMessages();\r\n (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) {\r\n var type = message.type;\r\n if (!type) {\r\n return;\r\n }\r\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\r\n type === GW_MESSAGE_CONTEXT_ADDED ||\r\n type === GW_MESSAGE_ACTIVITY_CREATED) {\r\n _this.handleContextCreatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\r\n type === GW_MESSAGE_CONTEXT_UPDATED ||\r\n type === GW_MESSAGE_JOINED_ACTIVITY) {\r\n _this.handleContextUpdatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\r\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n _this.handleContextDestroyedMessage(message);\r\n }\r\n });\r\n }\r\n Object.defineProperty(GW3Bridge.prototype, \"protocolVersion\", {\r\n get: function () {\r\n var _a;\r\n if (!this._protocolVersion) {\r\n var contextsDomainInfo = this._connection.availableDomains.find(function (d) { return d.uri === \"context\"; });\r\n this._protocolVersion = (_a = contextsDomainInfo === null || contextsDomainInfo === void 0 ? void 0 : contextsDomainInfo.version) !== null && _a !== void 0 ? _a : 1;\r\n }\r\n return this._protocolVersion;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(GW3Bridge.prototype, \"setPathSupported\", {\r\n get: function () {\r\n return this.protocolVersion >= 2;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GW3Bridge.prototype.dispose = function () {\r\n for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) {\r\n var sub = _a[_i];\r\n this._connection.off(sub);\r\n }\r\n this._gw3Subscriptions.length = 0;\r\n for (var contextName in this._contextNameToData) {\r\n if (this._contextNameToId.hasOwnProperty(contextName)) {\r\n delete this._contextNameToData[contextName];\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.createContext = function (name, data) {\r\n var _this = this;\r\n if (name in this._creationPromises) {\r\n return this._creationPromises[name];\r\n }\r\n this._creationPromises[name] =\r\n this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_CREATE_CONTEXT,\r\n domain: \"global\",\r\n name: name,\r\n data: data,\r\n lifetime: \"retained\",\r\n })\r\n .then(function (createContextMsg) {\r\n _this._contextNameToId[name] = createContextMsg.context_id;\r\n _this._contextIdToName[createContextMsg.context_id] = name;\r\n var contextData = _this._contextNameToData[name] || new GW3ContextData(createContextMsg.context_id, name, true, undefined);\r\n contextData.isAnnounced = true;\r\n contextData.name = name;\r\n contextData.contextId = createContextMsg.context_id;\r\n contextData.context = createContextMsg.data || deepClone(data);\r\n contextData.hasReceivedSnapshot = true;\r\n _this._contextNameToData[name] = contextData;\r\n delete _this._creationPromises[name];\r\n return createContextMsg.context_id;\r\n });\r\n return this._creationPromises[name];\r\n };\r\n GW3Bridge.prototype.all = function () {\r\n var _this = this;\r\n return Object.keys(this._contextNameToData)\r\n .filter(function (name) { return _this._contextNameToData[name].isAnnounced; });\r\n };\r\n GW3Bridge.prototype.update = function (name, delta) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, currentContext, calculatedDelta;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (delta) {\r\n delta = deepClone(delta);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, this.createContext(name, delta)];\r\n }\r\n currentContext = contextData.context;\r\n if (!!contextData.hasCallbacks()) return [3, 4];\r\n return [4, this.get(contextData.name)];\r\n case 3:\r\n currentContext = _b.sent();\r\n _b.label = 4;\r\n case 4:\r\n calculatedDelta = this.setPathSupported ?\r\n this.calculateContextDeltaV2(currentContext, delta) :\r\n this.calculateContextDeltaV1(currentContext, delta);\r\n if (!Object.keys(calculatedDelta.added).length\r\n && !Object.keys(calculatedDelta.updated).length\r\n && !calculatedDelta.removed.length\r\n && !((_a = calculatedDelta.commands) === null || _a === void 0 ? void 0 : _a.length)) {\r\n return [2, Promise.resolve()];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: calculatedDelta,\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, calculatedDelta, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.set = function (name, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (data) {\r\n data = deepClone(data);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, this.createContext(name, data)];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: { reset: data },\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, {\r\n reset: data,\r\n added: {},\r\n removed: [],\r\n updated: {}\r\n }, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.setPath = function (name, path, value) {\r\n if (!this.setPathSupported) {\r\n return Promise.reject(\"glue.contexts.setPath operation is not supported, use Glue42 3.10 or later\");\r\n }\r\n return this.setPaths(name, [{ path: path, value: value }]);\r\n };\r\n GW3Bridge.prototype.setPaths = function (name, pathValues) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, obj, _i, pathValues_1, pathValue, commands, _a, pathValues_2, pathValue;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.setPathSupported) {\r\n return [2, Promise.reject(\"glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later\")];\r\n }\r\n if (pathValues) {\r\n pathValues = deepClone(pathValues);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n obj = {};\r\n for (_i = 0, pathValues_1 = pathValues; _i < pathValues_1.length; _i++) {\r\n pathValue = pathValues_1[_i];\r\n setValueToPath(obj, pathValue.value, pathValue.path);\r\n }\r\n return [2, this.createContext(name, obj)];\r\n }\r\n commands = [];\r\n for (_a = 0, pathValues_2 = pathValues; _a < pathValues_2.length; _a++) {\r\n pathValue = pathValues_2[_a];\r\n if (pathValue.value === null) {\r\n commands.push({ type: \"remove\", path: pathValue.path });\r\n }\r\n else {\r\n commands.push({ type: \"set\", path: pathValue.path, value: pathValue.value });\r\n }\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: { commands: commands }\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, {\r\n added: {},\r\n removed: [],\r\n updated: {},\r\n commands: commands\r\n }, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.get = function (name) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, context;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, Promise.resolve({})];\r\n }\r\n if (contextData && (!contextData.hasCallbacks() || !contextData.hasReceivedSnapshot)) {\r\n return [2, new Promise(function (resolve) {\r\n _this.subscribe(name, function (data, _d, _r, un) {\r\n _this.unsubscribe(un);\r\n resolve(data);\r\n });\r\n })];\r\n }\r\n context = (_a = contextData === null || contextData === void 0 ? void 0 : contextData.context) !== null && _a !== void 0 ? _a : {};\r\n return [2, Promise.resolve(deepClone(context))];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.subscribe = function (name, callback, subscriptionKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var thisCallbackSubscriptionNumber, contextData, hadCallbacks, clone, clone, clone;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n thisCallbackSubscriptionNumber = typeof subscriptionKey === \"undefined\" ? this._nextCallbackSubscriptionNumber : subscriptionKey;\r\n if (typeof subscriptionKey === \"undefined\") {\r\n this._nextCallbackSubscriptionNumber += 1;\r\n }\r\n if (this._contextsSubscriptionsCache.every(function (subscription) { return subscription.subKey !== _this._nextCallbackSubscriptionNumber; })) {\r\n this._contextsSubscriptionsCache.push({ contextName: name, subKey: thisCallbackSubscriptionNumber, callback: callback });\r\n }\r\n contextData = this._contextNameToData[name];\r\n if (!contextData ||\r\n !contextData.isAnnounced) {\r\n contextData = contextData || new GW3ContextData(undefined, name, false, undefined);\r\n this._contextNameToData[name] = contextData;\r\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n hadCallbacks = contextData.hasCallbacks();\r\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\r\n if (!hadCallbacks) {\r\n if (!contextData.joinedActivity) {\r\n if (contextData.context && contextData.sentExplicitSubscription) {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n return [2, this.sendSubscribe(contextData)\r\n .then(function () { return thisCallbackSubscriptionNumber; })];\r\n }\r\n else {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n }\r\n else {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.unsubscribe = function (subscriptionKey) {\r\n this._contextsSubscriptionsCache = this._contextsSubscriptionsCache.filter(function (subscription) { return subscription.subKey !== subscriptionKey; });\r\n for (var _i = 0, _a = Object.keys(this._contextNameToData); _i < _a.length; _i++) {\r\n var name_1 = _a[_i];\r\n var contextData = this._contextNameToData[name_1];\r\n if (!contextData) {\r\n return;\r\n }\r\n var hadCallbacks = contextData.hasCallbacks();\r\n delete contextData.updateCallbacks[subscriptionKey];\r\n if (contextData.isAnnounced &&\r\n hadCallbacks &&\r\n !contextData.hasCallbacks() &&\r\n contextData.sentExplicitSubscription) {\r\n this.sendUnsubscribe(contextData);\r\n }\r\n if (!contextData.isAnnounced &&\r\n !contextData.hasCallbacks()) {\r\n delete this._contextNameToData[name_1];\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.destroy = function (name) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData) {\r\n return [2, Promise.reject(\"context with \".concat(name, \" does not exist\"))];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_DESTROY_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.handleUpdated = function (contextData, delta, extraData) {\r\n var oldContext = contextData.context;\r\n contextData.context = applyContextDelta(contextData.context, delta, this._logger);\r\n contextData.hasReceivedSnapshot = true;\r\n if (this._contextNameToData[contextData.name] === contextData &&\r\n !deepEqual(oldContext, contextData.context)) {\r\n this.invokeUpdateCallbacks(contextData, delta, extraData);\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextCreatedMessages = function () {\r\n var createdMessageTypes = [\r\n GW_MESSAGE_CONTEXT_ADDED,\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_ACTIVITY_CREATED,\r\n ];\r\n for (var _i = 0, createdMessageTypes_1 = createdMessageTypes; _i < createdMessageTypes_1.length; _i++) {\r\n var createdMessageType = createdMessageTypes_1[_i];\r\n var sub = this._connection.on(createdMessageType, this.handleContextCreatedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextCreatedMessage = function (contextCreatedMsg) {\r\n var _this = this;\r\n var createdMessageType = contextCreatedMsg.type;\r\n if (createdMessageType === GW_MESSAGE_ACTIVITY_CREATED) {\r\n this._contextNameToId[contextCreatedMsg.activity_id] = contextCreatedMsg.context_id;\r\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.activity_id;\r\n }\r\n else if (createdMessageType === GW_MESSAGE_CONTEXT_ADDED) {\r\n this._contextNameToId[contextCreatedMsg.name] = contextCreatedMsg.context_id;\r\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.name;\r\n }\r\n else ;\r\n var name = this._contextIdToName[contextCreatedMsg.context_id];\r\n if (!name) {\r\n throw new Error(\"Received created event for context with unknown name: \" + contextCreatedMsg.context_id);\r\n }\r\n if (!this._contextNameToId[name]) {\r\n throw new Error(\"Received created event for context with unknown id: \" + contextCreatedMsg.context_id);\r\n }\r\n var contextData = this._contextNameToData[name];\r\n if (contextData) {\r\n if (contextData.isAnnounced) {\r\n return;\r\n }\r\n else {\r\n if (!contextData.hasCallbacks()) {\r\n throw new Error(\"Assertion failure: contextData.hasCallbacks()\");\r\n }\r\n contextData.isAnnounced = true;\r\n contextData.contextId = contextCreatedMsg.context_id;\r\n contextData.activityId = contextCreatedMsg.activity_id;\r\n if (!contextData.sentExplicitSubscription) {\r\n this.sendSubscribe(contextData);\r\n }\r\n }\r\n }\r\n else {\r\n this._contextNameToData[name] = contextData =\r\n new GW3ContextData(contextCreatedMsg.context_id, name, true, contextCreatedMsg.activity_id);\r\n if (this._trackAllContexts) {\r\n this.subscribe(name, function () { }).then(function (subKey) { return _this._systemContextsSubKey = subKey; });\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextUpdatedMessages = function () {\r\n var updatedMessageTypes = [\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_JOINED_ACTIVITY,\r\n ];\r\n for (var _i = 0, updatedMessageTypes_1 = updatedMessageTypes; _i < updatedMessageTypes_1.length; _i++) {\r\n var updatedMessageType = updatedMessageTypes_1[_i];\r\n var sub = this._connection.on(updatedMessageType, this.handleContextUpdatedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextUpdatedMessage = function (contextUpdatedMsg) {\r\n var updatedMessageType = contextUpdatedMsg.type;\r\n var contextId = contextUpdatedMsg.context_id;\r\n var contextData = this._contextNameToData[this._contextIdToName[contextId]];\r\n var justSeen = !contextData || !contextData.isAnnounced;\r\n if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\r\n if (!contextData) {\r\n contextData =\r\n this._contextNameToData[contextUpdatedMsg.activity_id] ||\r\n new GW3ContextData(contextId, contextUpdatedMsg.activity_id, true, contextUpdatedMsg.activity_id);\r\n }\r\n this._contextNameToData[contextUpdatedMsg.activity_id] = contextData;\r\n this._contextIdToName[contextId] = contextUpdatedMsg.activity_id;\r\n this._contextNameToId[contextUpdatedMsg.activity_id] = contextId;\r\n contextData.contextId = contextId;\r\n contextData.isAnnounced = true;\r\n contextData.activityId = contextUpdatedMsg.activity_id;\r\n contextData.joinedActivity = true;\r\n }\r\n else {\r\n if (!contextData || !contextData.isAnnounced) {\r\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n contextData = contextData || new GW3ContextData(contextId, contextUpdatedMsg.name, true, undefined);\r\n contextData.sentExplicitSubscription = true;\r\n this._contextNameToData[contextUpdatedMsg.name] = contextData;\r\n this._contextIdToName[contextId] = contextUpdatedMsg.name;\r\n this._contextNameToId[contextUpdatedMsg.name] = contextId;\r\n }\r\n else {\r\n this._logger.error(\"Received 'update' for unknown context: \".concat(contextId));\r\n }\r\n return;\r\n }\r\n }\r\n var oldContext = contextData.context;\r\n contextData.hasReceivedSnapshot = true;\r\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n contextData.context = contextUpdatedMsg.data || {};\r\n }\r\n else if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\r\n contextData.context = contextUpdatedMsg.context_snapshot || {};\r\n }\r\n else if (updatedMessageType === GW_MESSAGE_CONTEXT_UPDATED) {\r\n contextData.context = applyContextDelta(contextData.context, contextUpdatedMsg.delta, this._logger);\r\n }\r\n else {\r\n throw new Error(\"Unrecognized context update message \" + updatedMessageType);\r\n }\r\n if (justSeen ||\r\n !deepEqual(contextData.context, oldContext) ||\r\n updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n this.invokeUpdateCallbacks(contextData, contextUpdatedMsg.delta, { updaterId: contextUpdatedMsg.updater_id });\r\n }\r\n };\r\n GW3Bridge.prototype.invokeUpdateCallbacks = function (contextData, delta, extraData) {\r\n delta = delta || { added: {}, updated: {}, reset: {}, removed: [] };\r\n if (delta.commands) {\r\n delta.added = delta.updated = delta.reset = {};\r\n delta.removed = [];\r\n for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) {\r\n var command = _a[_i];\r\n if (command.type === \"remove\") {\r\n if (command.path.indexOf(\".\") === -1) {\r\n delta.removed.push(command.path);\r\n }\r\n setValueToPath(delta.updated, null, command.path);\r\n }\r\n else if (command.type === \"set\") {\r\n setValueToPath(delta.updated, command.value, command.path);\r\n }\r\n }\r\n }\r\n for (var updateCallbackIndex in contextData.updateCallbacks) {\r\n if (contextData.updateCallbacks.hasOwnProperty(updateCallbackIndex)) {\r\n try {\r\n var updateCallback = contextData.updateCallbacks[updateCallbackIndex];\r\n updateCallback(deepClone(contextData.context), deepClone(Object.assign({}, delta.added || {}, delta.updated || {}, delta.reset || {})), delta.removed, parseInt(updateCallbackIndex, 10), extraData);\r\n }\r\n catch (err) {\r\n this._logger.debug(\"callback error: \" + JSON.stringify(err));\r\n }\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextDestroyedMessages = function () {\r\n var destroyedMessageTypes = [\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_ACTIVITY_DESTROYED,\r\n ];\r\n for (var _i = 0, destroyedMessageTypes_1 = destroyedMessageTypes; _i < destroyedMessageTypes_1.length; _i++) {\r\n var destroyedMessageType = destroyedMessageTypes_1[_i];\r\n var sub = this._connection.on(destroyedMessageType, this.handleContextDestroyedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextDestroyedMessage = function (destroyedMsg) {\r\n var destroyedMessageType = destroyedMsg.type;\r\n var contextId;\r\n var name;\r\n if (destroyedMessageType === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n name = destroyedMsg.activity_id;\r\n contextId = this._contextNameToId[name];\r\n if (!contextId) {\r\n this._logger.error(\"Received 'destroyed' for unknown activity: \".concat(destroyedMsg.activity_id));\r\n return;\r\n }\r\n }\r\n else {\r\n contextId = destroyedMsg.context_id;\r\n name = this._contextIdToName[contextId];\r\n if (!name) {\r\n this._logger.error(\"Received 'destroyed' for unknown context: \".concat(destroyedMsg.context_id));\r\n return;\r\n }\r\n }\r\n delete this._contextIdToName[contextId];\r\n delete this._contextNameToId[name];\r\n var contextData = this._contextNameToData[name];\r\n delete this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n this._logger.error(\"Received 'destroyed' for unknown context: \".concat(contextId));\r\n return;\r\n }\r\n };\r\n GW3Bridge.prototype.sendSubscribe = function (contextData) {\r\n contextData.sentExplicitSubscription = true;\r\n return this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_SUBSCRIBE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; });\r\n };\r\n GW3Bridge.prototype.sendUnsubscribe = function (contextData) {\r\n contextData.sentExplicitSubscription = false;\r\n return this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; });\r\n };\r\n GW3Bridge.prototype.calculateContextDeltaV1 = function (from, to) {\r\n var delta = { added: {}, updated: {}, removed: [], reset: undefined };\r\n if (from) {\r\n for (var _i = 0, _a = Object.keys(from); _i < _a.length; _i++) {\r\n var x = _a[_i];\r\n if (Object.keys(to).indexOf(x) !== -1\r\n && to[x] !== null\r\n && !deepEqual(from[x], to[x])) {\r\n delta.updated[x] = to[x];\r\n }\r\n }\r\n }\r\n for (var _b = 0, _c = Object.keys(to); _b < _c.length; _b++) {\r\n var x = _c[_b];\r\n if (!from || (Object.keys(from).indexOf(x) === -1)) {\r\n if (to[x] !== null) {\r\n delta.added[x] = to[x];\r\n }\r\n }\r\n else if (to[x] === null) {\r\n delta.removed.push(x);\r\n }\r\n }\r\n return delta;\r\n };\r\n GW3Bridge.prototype.calculateContextDeltaV2 = function (from, to) {\r\n var _a, _b;\r\n var delta = { added: {}, updated: {}, removed: [], reset: undefined, commands: [] };\r\n for (var _i = 0, _c = Object.keys(to); _i < _c.length; _i++) {\r\n var x = _c[_i];\r\n if (to[x] !== null) {\r\n var fromX = from ? from[x] : null;\r\n if (!deepEqual(fromX, to[x])) {\r\n (_a = delta.commands) === null || _a === void 0 ? void 0 : _a.push({ type: \"set\", path: x, value: to[x] });\r\n }\r\n }\r\n else {\r\n (_b = delta.commands) === null || _b === void 0 ? void 0 : _b.push({ type: \"remove\", path: x });\r\n }\r\n }\r\n return delta;\r\n };\r\n GW3Bridge.prototype.resetState = function () {\r\n var _this = this;\r\n for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) {\r\n var sub = _a[_i];\r\n this._connection.off(sub);\r\n }\r\n if (this._systemContextsSubKey) {\r\n this.unsubscribe(this._systemContextsSubKey);\r\n delete this._systemContextsSubKey;\r\n }\r\n this._gw3Subscriptions = [];\r\n this._contextNameToId = {};\r\n this._contextIdToName = {};\r\n delete this._protocolVersion;\r\n this._contextsTempCache = Object.keys(this._contextNameToData).reduce(function (cacheSoFar, ctxName) {\r\n cacheSoFar[ctxName] = _this._contextNameToData[ctxName].context;\r\n return cacheSoFar;\r\n }, {});\r\n this._contextNameToData = {};\r\n };\r\n GW3Bridge.prototype.reInitiateState = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _b, _c, _e, _i, ctxName, lastKnownData;\r\n var _this = this;\r\n return __generator(this, function (_f) {\r\n switch (_f.label) {\r\n case 0:\r\n this.subscribeToContextCreatedMessages();\r\n this.subscribeToContextUpdatedMessages();\r\n this.subscribeToContextDestroyedMessages();\r\n (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) {\r\n var type = message.type;\r\n if (!type) {\r\n return;\r\n }\r\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\r\n type === GW_MESSAGE_CONTEXT_ADDED ||\r\n type === GW_MESSAGE_ACTIVITY_CREATED) {\r\n _this.handleContextCreatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\r\n type === GW_MESSAGE_CONTEXT_UPDATED ||\r\n type === GW_MESSAGE_JOINED_ACTIVITY) {\r\n _this.handleContextUpdatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\r\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n _this.handleContextDestroyedMessage(message);\r\n }\r\n });\r\n return [4, Promise.all(this._contextsSubscriptionsCache.map(function (subscription) { return _this.subscribe(subscription.contextName, subscription.callback, subscription.subKey); }))];\r\n case 1:\r\n _f.sent();\r\n return [4, this.flushQueue()];\r\n case 2:\r\n _f.sent();\r\n _b = this._contextsTempCache;\r\n _c = [];\r\n for (_e in _b)\r\n _c.push(_e);\r\n _i = 0;\r\n _f.label = 3;\r\n case 3:\r\n if (!(_i < _c.length)) return [3, 7];\r\n _e = _c[_i];\r\n if (!(_e in _b)) return [3, 6];\r\n ctxName = _e;\r\n if (typeof this._contextsTempCache[ctxName] !== \"object\" || Object.keys(this._contextsTempCache[ctxName]).length === 0) {\r\n return [3, 6];\r\n }\r\n lastKnownData = this._contextsTempCache[ctxName];\r\n this._logger.info(\"Re-announcing known context: \".concat(ctxName));\r\n return [4, this.flushQueue()];\r\n case 4:\r\n _f.sent();\r\n return [4, this.update(ctxName, lastKnownData)];\r\n case 5:\r\n _f.sent();\r\n _f.label = 6;\r\n case 6:\r\n _i++;\r\n return [3, 3];\r\n case 7:\r\n this._contextsTempCache = {};\r\n this._logger.info(\"Contexts are re-announced\");\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.flushQueue = function () {\r\n return new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 0); });\r\n };\r\n return GW3Bridge;\r\n}());\n\nvar ContextsModule = (function () {\r\n function ContextsModule(config) {\r\n this._bridge = new GW3Bridge(config);\r\n }\r\n ContextsModule.prototype.all = function () {\r\n return this._bridge.all();\r\n };\r\n ContextsModule.prototype.update = function (name, data) {\r\n this.checkName(name);\r\n this.checkData(data);\r\n return this._bridge.update(name, data);\r\n };\r\n ContextsModule.prototype.set = function (name, data) {\r\n this.checkName(name);\r\n this.checkData(data);\r\n return this._bridge.set(name, data);\r\n };\r\n ContextsModule.prototype.setPath = function (name, path, data) {\r\n this.checkName(name);\r\n this.checkPath(path);\r\n var isTopLevelPath = path === \"\";\r\n if (isTopLevelPath) {\r\n this.checkData(data);\r\n return this.set(name, data);\r\n }\r\n return this._bridge.setPath(name, path, data);\r\n };\r\n ContextsModule.prototype.setPaths = function (name, paths) {\r\n this.checkName(name);\r\n if (!Array.isArray(paths)) {\r\n throw new Error(\"Please provide the paths as an array of PathValues!\");\r\n }\r\n for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) {\r\n var _a = paths_1[_i], path = _a.path, value = _a.value;\r\n this.checkPath(path);\r\n var isTopLevelPath = path === \"\";\r\n if (isTopLevelPath) {\r\n this.checkData(value);\r\n }\r\n }\r\n return this._bridge.setPaths(name, paths);\r\n };\r\n ContextsModule.prototype.subscribe = function (name, callback) {\r\n var _this = this;\r\n this.checkName(name);\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Please provide the callback as a function!\");\r\n }\r\n return this._bridge\r\n .subscribe(name, function (data, delta, removed, key, extraData) { return callback(data, delta, removed, function () { return _this._bridge.unsubscribe(key); }, extraData); })\r\n .then(function (key) {\r\n return function () {\r\n _this._bridge.unsubscribe(key);\r\n };\r\n });\r\n };\r\n ContextsModule.prototype.get = function (name) {\r\n this.checkName(name);\r\n return this._bridge.get(name);\r\n };\r\n ContextsModule.prototype.ready = function () {\r\n return Promise.resolve(this);\r\n };\r\n ContextsModule.prototype.destroy = function (name) {\r\n this.checkName(name);\r\n return this._bridge.destroy(name);\r\n };\r\n Object.defineProperty(ContextsModule.prototype, \"setPathSupported\", {\r\n get: function () {\r\n return this._bridge.setPathSupported;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ContextsModule.prototype.checkName = function (name) {\r\n if (typeof name !== \"string\" || name === \"\") {\r\n throw new Error(\"Please provide the name as a non-empty string!\");\r\n }\r\n };\r\n ContextsModule.prototype.checkPath = function (path) {\r\n if (typeof path !== \"string\") {\r\n throw new Error(\"Please provide the path as a dot delimited string!\");\r\n }\r\n };\r\n ContextsModule.prototype.checkData = function (data) {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Please provide the data as an object!\");\r\n }\r\n };\r\n return ContextsModule;\r\n}());\n\nfunction promisify (promise, successCallback, errorCallback) {\r\n if (typeof successCallback !== \"function\" && typeof errorCallback !== \"function\") {\r\n return promise;\r\n }\r\n if (typeof successCallback !== \"function\") {\r\n successCallback = function () { };\r\n }\r\n else if (typeof errorCallback !== \"function\") {\r\n errorCallback = function () { };\r\n }\r\n return promise.then(successCallback, errorCallback);\r\n}\n\nfunction rejectAfter(ms, promise, error) {\r\n if (ms === void 0) { ms = 0; }\r\n var timeout;\r\n var clearTimeoutIfThere = function () {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n }\r\n };\r\n promise\r\n .then(function () {\r\n clearTimeoutIfThere();\r\n })\r\n .catch(function () {\r\n clearTimeoutIfThere();\r\n });\r\n return new Promise(function (resolve, reject) {\r\n timeout = setTimeout(function () { return reject(error); }, ms);\r\n });\r\n}\n\nvar InvokeStatus;\r\n(function (InvokeStatus) {\r\n InvokeStatus[InvokeStatus[\"Success\"] = 0] = \"Success\";\r\n InvokeStatus[InvokeStatus[\"Error\"] = 1] = \"Error\";\r\n})(InvokeStatus || (InvokeStatus = {}));\r\nvar Client = (function () {\r\n function Client(protocol, repo, instance, configuration) {\r\n this.protocol = protocol;\r\n this.repo = repo;\r\n this.instance = instance;\r\n this.configuration = configuration;\r\n }\r\n Client.prototype.subscribe = function (method, options, successCallback, errorCallback, existingSub) {\r\n var _this = this;\r\n var callProtocolSubscribe = function (targetServers, stream, successProxy, errorProxy) {\r\n var _a;\r\n options.methodResponseTimeout = (_a = options.methodResponseTimeout) !== null && _a !== void 0 ? _a : options.waitTimeoutMs;\r\n _this.protocol.client.subscribe(stream, options, targetServers, successProxy, errorProxy, existingSub);\r\n };\r\n var promise = new Promise(function (resolve, reject) {\r\n var successProxy = function (sub) {\r\n resolve(sub);\r\n };\r\n var errorProxy = function (err) {\r\n reject(err);\r\n };\r\n if (!method) {\r\n reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\");\r\n return;\r\n }\r\n var methodDef;\r\n if (typeof method === \"string\") {\r\n methodDef = { name: method };\r\n }\r\n else {\r\n methodDef = method;\r\n }\r\n if (!methodDef.name) {\r\n reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\");\r\n return;\r\n }\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n var target = options.target;\r\n if (target === undefined) {\r\n target = \"best\";\r\n }\r\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\") {\r\n reject(new Error(\"\\\"\".concat(target, \"\\\" is not a valid target. Valid targets are \\\"all\\\", \\\"best\\\", or an instance.\")));\r\n return;\r\n }\r\n if (options.methodResponseTimeout === undefined) {\r\n options.methodResponseTimeout = options.method_response_timeout;\r\n if (options.methodResponseTimeout === undefined) {\r\n options.methodResponseTimeout = _this.configuration.methodResponseTimeout;\r\n }\r\n }\r\n if (options.waitTimeoutMs === undefined) {\r\n options.waitTimeoutMs = options.wait_for_method_timeout;\r\n if (options.waitTimeoutMs === undefined) {\r\n options.waitTimeoutMs = _this.configuration.waitTimeoutMs;\r\n }\r\n }\r\n var delayStep = 500;\r\n var delayTillNow = 0;\r\n var currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target);\r\n if (currentServers.length > 0) {\r\n callProtocolSubscribe(currentServers, currentServers[0].methods[0], successProxy, errorProxy);\r\n }\r\n else {\r\n var retry_1 = function () {\r\n if (!target || !(options.waitTimeoutMs)) {\r\n return;\r\n }\r\n delayTillNow += delayStep;\r\n currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target);\r\n if (currentServers.length > 0) {\r\n var streamInfo = currentServers[0].methods[0];\r\n callProtocolSubscribe(currentServers, streamInfo, successProxy, errorProxy);\r\n }\r\n else if (delayTillNow >= options.waitTimeoutMs) {\r\n var def = typeof method === \"string\" ? { name: method } : method;\r\n callProtocolSubscribe(currentServers, def, successProxy, errorProxy);\r\n }\r\n else {\r\n setTimeout(retry_1, delayStep);\r\n }\r\n };\r\n setTimeout(retry_1, delayStep);\r\n }\r\n });\r\n return promisify(promise, successCallback, errorCallback);\r\n };\r\n Client.prototype.servers = function (methodFilter) {\r\n var filterCopy = methodFilter === undefined\r\n ? undefined\r\n : __assign({}, methodFilter);\r\n return this.getServers(filterCopy).map(function (serverMethodMap) {\r\n return serverMethodMap.server.instance;\r\n });\r\n };\r\n Client.prototype.methods = function (methodFilter) {\r\n if (typeof methodFilter === \"string\") {\r\n methodFilter = { name: methodFilter };\r\n }\r\n else {\r\n methodFilter = __assign({}, methodFilter);\r\n }\r\n return this.getMethods(methodFilter);\r\n };\r\n Client.prototype.methodsForInstance = function (instance) {\r\n return this.getMethodsForInstance(instance);\r\n };\r\n Client.prototype.methodAdded = function (callback) {\r\n return this.repo.onMethodAdded(callback);\r\n };\r\n Client.prototype.methodRemoved = function (callback) {\r\n return this.repo.onMethodRemoved(callback);\r\n };\r\n Client.prototype.serverAdded = function (callback) {\r\n return this.repo.onServerAdded(callback);\r\n };\r\n Client.prototype.serverRemoved = function (callback) {\r\n return this.repo.onServerRemoved(function (server, reason) {\r\n callback(server, reason);\r\n });\r\n };\r\n Client.prototype.serverMethodAdded = function (callback) {\r\n return this.repo.onServerMethodAdded(function (server, method) {\r\n callback({ server: server, method: method });\r\n });\r\n };\r\n Client.prototype.serverMethodRemoved = function (callback) {\r\n return this.repo.onServerMethodRemoved(function (server, method) {\r\n callback({ server: server, method: method });\r\n });\r\n };\r\n Client.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var getInvokePromise;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n getInvokePromise = function () { return __awaiter(_this, void 0, void 0, function () {\r\n var methodDefinition, serversMethodMap, method, errorObj, timeout, additionalOptionsCopy, invokePromises, invocationMessages, results, allRejected;\r\n var _this = this;\r\n var _a, _b, _c;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n if (typeof methodFilter === \"string\") {\r\n methodDefinition = { name: methodFilter };\r\n }\r\n else {\r\n methodDefinition = __assign({}, methodFilter);\r\n }\r\n if (!methodDefinition.name) {\r\n return [2, Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\")];\r\n }\r\n if (!argumentObj) {\r\n argumentObj = {};\r\n }\r\n if (!target) {\r\n target = \"best\";\r\n }\r\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\" && target !== \"skipMine\") {\r\n return [2, Promise.reject(new Error(\"\\\"\".concat(target, \"\\\" is not a valid target. Valid targets are \\\"all\\\" and \\\"best\\\".\")))];\r\n }\r\n if (!additionalOptions) {\r\n additionalOptions = {};\r\n }\r\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\r\n additionalOptions.methodResponseTimeoutMs = additionalOptions.method_response_timeout;\r\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\r\n additionalOptions.methodResponseTimeoutMs = this.configuration.methodResponseTimeout;\r\n }\r\n }\r\n if (additionalOptions.waitTimeoutMs === undefined) {\r\n additionalOptions.waitTimeoutMs = additionalOptions.wait_for_method_timeout;\r\n if (additionalOptions.waitTimeoutMs === undefined) {\r\n additionalOptions.waitTimeoutMs = this.configuration.waitTimeoutMs;\r\n }\r\n }\r\n if (additionalOptions.waitTimeoutMs !== undefined && typeof additionalOptions.waitTimeoutMs !== \"number\") {\r\n return [2, Promise.reject(new Error(\"\\\"\".concat(additionalOptions.waitTimeoutMs, \"\\\" is not a valid number for \\\"waitTimeoutMs\\\" \")))];\r\n }\r\n if (typeof argumentObj !== \"object\") {\r\n return [2, Promise.reject(new Error(\"The method arguments must be an object. method: \".concat(methodDefinition.name)))];\r\n }\r\n serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target);\r\n if (!(serversMethodMap.length === 0)) return [3, 4];\r\n _d.label = 1;\r\n case 1:\r\n _d.trys.push([1, 3, , 4]);\r\n return [4, this.tryToAwaitForMethods(methodDefinition, target, additionalOptions)];\r\n case 2:\r\n serversMethodMap = _d.sent();\r\n return [3, 4];\r\n case 3:\r\n _d.sent();\r\n method = __assign(__assign({}, methodDefinition), { getServers: function () { return []; }, supportsStreaming: false, objectTypes: (_a = methodDefinition.objectTypes) !== null && _a !== void 0 ? _a : [], flags: (_c = (_b = methodDefinition.flags) === null || _b === void 0 ? void 0 : _b.metadata) !== null && _c !== void 0 ? _c : {} });\r\n errorObj = {\r\n method: method,\r\n called_with: argumentObj,\r\n message: \"Can not find a method matching \".concat(JSON.stringify(methodFilter), \" with server filter \").concat(JSON.stringify(target)),\r\n executed_by: undefined,\r\n returned: undefined,\r\n status: undefined,\r\n };\r\n return [2, Promise.reject(errorObj)];\r\n case 4:\r\n timeout = additionalOptions.methodResponseTimeoutMs;\r\n additionalOptionsCopy = additionalOptions;\r\n invokePromises = serversMethodMap.map(function (serversMethodPair) {\r\n var invId = shortid();\r\n var method = serversMethodPair.methods[0];\r\n var server = serversMethodPair.server;\r\n var invokePromise = _this.protocol.client.invoke(invId, method, argumentObj, server, additionalOptionsCopy);\r\n return Promise.race([\r\n invokePromise,\r\n rejectAfter(timeout, invokePromise, {\r\n invocationId: invId,\r\n message: \"Invocation timeout (\".concat(timeout, \" ms) reached for method name: \").concat(method === null || method === void 0 ? void 0 : method.name, \", target instance: \").concat(JSON.stringify(server.instance), \", options: \").concat(JSON.stringify(additionalOptionsCopy)),\r\n status: InvokeStatus.Error,\r\n })\r\n ]);\r\n });\r\n return [4, Promise.all(invokePromises)];\r\n case 5:\r\n invocationMessages = _d.sent();\r\n results = this.getInvocationResultObj(invocationMessages, methodDefinition, argumentObj);\r\n allRejected = invocationMessages.every(function (result) { return result.status === InvokeStatus.Error; });\r\n if (allRejected) {\r\n return [2, Promise.reject(results)];\r\n }\r\n return [2, results];\r\n }\r\n });\r\n }); };\r\n return [2, promisify(getInvokePromise(), success, error)];\r\n });\r\n });\r\n };\r\n Client.prototype.getInvocationResultObj = function (invocationResults, method, calledWith) {\r\n var all_return_values = invocationResults\r\n .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Success; })\r\n .reduce(function (allValues, currentValue) {\r\n allValues = __spreadArray(__spreadArray([], allValues, true), [\r\n {\r\n executed_by: currentValue.instance,\r\n returned: currentValue.result,\r\n called_with: calledWith,\r\n method: method,\r\n message: currentValue.message,\r\n status: currentValue.status,\r\n }\r\n ], false);\r\n return allValues;\r\n }, []);\r\n var all_errors = invocationResults\r\n .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Error; })\r\n .reduce(function (allErrors, currError) {\r\n allErrors = __spreadArray(__spreadArray([], allErrors, true), [\r\n {\r\n executed_by: currError.instance,\r\n called_with: calledWith,\r\n name: method.name,\r\n message: currError.message,\r\n }\r\n ], false);\r\n return allErrors;\r\n }, []);\r\n var invResult = invocationResults[0];\r\n var result = {\r\n method: method,\r\n called_with: calledWith,\r\n returned: invResult.result,\r\n executed_by: invResult.instance,\r\n all_return_values: all_return_values,\r\n all_errors: all_errors,\r\n message: invResult.message,\r\n status: invResult.status\r\n };\r\n return result;\r\n };\r\n Client.prototype.tryToAwaitForMethods = function (methodDefinition, target, additionalOptions) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n if (additionalOptions.waitTimeoutMs === 0) {\r\n reject();\r\n return;\r\n }\r\n var delayStep = 500;\r\n var delayTillNow = 0;\r\n var retry = function () {\r\n delayTillNow += delayStep;\r\n var serversMethodMap = _this.getServerMethodsByFilterAndTarget(methodDefinition, target);\r\n if (serversMethodMap.length > 0) {\r\n clearInterval(interval);\r\n resolve(serversMethodMap);\r\n }\r\n else if (delayTillNow >= (additionalOptions.waitTimeoutMs || 10000)) {\r\n clearInterval(interval);\r\n reject();\r\n return;\r\n }\r\n };\r\n var interval = setInterval(retry, delayStep);\r\n });\r\n };\r\n Client.prototype.filterByTarget = function (target, serverMethodMap) {\r\n var _this = this;\r\n if (typeof target === \"string\") {\r\n if (target === \"all\") {\r\n return __spreadArray([], serverMethodMap, true);\r\n }\r\n else if (target === \"best\") {\r\n var localMachine = serverMethodMap\r\n .find(function (s) { return s.server.instance.isLocal; });\r\n if (localMachine) {\r\n return [localMachine];\r\n }\r\n if (serverMethodMap[0] !== undefined) {\r\n return [serverMethodMap[0]];\r\n }\r\n }\r\n else if (target === \"skipMine\") {\r\n return serverMethodMap.filter(function (_a) {\r\n var server = _a.server;\r\n return server.instance.peerId !== _this.instance.peerId;\r\n });\r\n }\r\n }\r\n else {\r\n var targetArray = void 0;\r\n if (!Array.isArray(target)) {\r\n targetArray = [target];\r\n }\r\n else {\r\n targetArray = target;\r\n }\r\n var allServersMatching = targetArray.reduce(function (matches, filter) {\r\n var myMatches = serverMethodMap.filter(function (serverMethodPair) {\r\n return _this.instanceMatch(filter, serverMethodPair.server.instance);\r\n });\r\n return matches.concat(myMatches);\r\n }, []);\r\n return allServersMatching;\r\n }\r\n return [];\r\n };\r\n Client.prototype.instanceMatch = function (instanceFilter, instanceDefinition) {\r\n return this.containsProps(instanceFilter, instanceDefinition);\r\n };\r\n Client.prototype.methodMatch = function (methodFilter, methodDefinition) {\r\n return this.containsProps(methodFilter, methodDefinition);\r\n };\r\n Client.prototype.containsProps = function (filter, repoMethod) {\r\n var filterProps = Object.keys(filter)\r\n .filter(function (prop) {\r\n return filter[prop] !== undefined\r\n && filter[prop] !== null\r\n && typeof filter[prop] !== \"function\"\r\n && prop !== \"object_types\"\r\n && prop !== \"display_name\"\r\n && prop !== \"id\"\r\n && prop !== \"gatewayId\"\r\n && prop !== \"identifier\"\r\n && prop[0] !== \"_\";\r\n });\r\n return filterProps.every(function (prop) {\r\n var isMatch;\r\n var filterValue = filter[prop];\r\n var repoMethodValue = repoMethod[prop];\r\n switch (prop) {\r\n case \"objectTypes\":\r\n isMatch = (filterValue || []).every(function (filterValueEl) {\r\n return (repoMethodValue || []).includes(filterValueEl);\r\n });\r\n break;\r\n case \"flags\":\r\n isMatch = isSubset(repoMethodValue || {}, filterValue || {});\r\n break;\r\n default:\r\n isMatch = String(filterValue).toLowerCase() === String(repoMethodValue).toLowerCase();\r\n }\r\n return isMatch;\r\n });\r\n };\r\n Client.prototype.getMethods = function (methodFilter) {\r\n var _this = this;\r\n if (methodFilter === undefined) {\r\n return this.repo.getMethods();\r\n }\r\n var methods = this.repo.getMethods().filter(function (method) {\r\n return _this.methodMatch(methodFilter, method);\r\n });\r\n return methods;\r\n };\r\n Client.prototype.getMethodsForInstance = function (instanceFilter) {\r\n var _this = this;\r\n var allServers = this.repo.getServers();\r\n var matchingServers = allServers.filter(function (server) {\r\n return _this.instanceMatch(instanceFilter, server.instance);\r\n });\r\n if (matchingServers.length === 0) {\r\n return [];\r\n }\r\n var resultMethodsObject = {};\r\n if (matchingServers.length === 1) {\r\n resultMethodsObject = matchingServers[0].methods;\r\n }\r\n else {\r\n matchingServers.forEach(function (server) {\r\n Object.keys(server.methods).forEach(function (methodKey) {\r\n var method = server.methods[methodKey];\r\n resultMethodsObject[method.identifier] = method;\r\n });\r\n });\r\n }\r\n return Object.keys(resultMethodsObject)\r\n .map(function (key) {\r\n return resultMethodsObject[key];\r\n });\r\n };\r\n Client.prototype.getServers = function (methodFilter) {\r\n var _this = this;\r\n var servers = this.repo.getServers();\r\n if (methodFilter === undefined) {\r\n return servers.map(function (server) {\r\n return { server: server, methods: [] };\r\n });\r\n }\r\n return servers.reduce(function (prev, current) {\r\n var methodsForServer = Object.values(current.methods);\r\n var matchingMethods = methodsForServer.filter(function (method) {\r\n return _this.methodMatch(methodFilter, method);\r\n });\r\n if (matchingMethods.length > 0) {\r\n prev.push({ server: current, methods: matchingMethods });\r\n }\r\n return prev;\r\n }, []);\r\n };\r\n Client.prototype.getServerMethodsByFilterAndTarget = function (methodFilter, target) {\r\n var serversMethodMap = this.getServers(methodFilter);\r\n return this.filterByTarget(target, serversMethodMap);\r\n };\r\n return Client;\r\n}());\n\nvar ServerSubscription = (function () {\r\n function ServerSubscription(protocol, repoMethod, subscription) {\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n this.subscription = subscription;\r\n }\r\n Object.defineProperty(ServerSubscription.prototype, \"stream\", {\r\n get: function () {\r\n if (!this.repoMethod.stream) {\r\n throw new Error(\"no stream\");\r\n }\r\n return this.repoMethod.stream;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"arguments\", {\r\n get: function () { return this.subscription.arguments || {}; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"branchKey\", {\r\n get: function () { return this.subscription.branchKey; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"instance\", {\r\n get: function () {\r\n if (!this.subscription.instance) {\r\n throw new Error(\"no instance\");\r\n }\r\n return this.subscription.instance;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ServerSubscription.prototype.close = function () {\r\n this.protocol.server.closeSingleSubscription(this.repoMethod, this.subscription);\r\n };\r\n ServerSubscription.prototype.push = function (data) {\r\n this.protocol.server.pushDataToSingle(this.repoMethod, this.subscription, data);\r\n };\r\n return ServerSubscription;\r\n}());\n\nvar Request = (function () {\r\n function Request(protocol, repoMethod, requestContext) {\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n this.requestContext = requestContext;\r\n this.arguments = requestContext.arguments;\r\n this.instance = requestContext.instance;\r\n }\r\n Request.prototype.accept = function () {\r\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, \"\");\r\n };\r\n Request.prototype.acceptOnBranch = function (branch) {\r\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, branch);\r\n };\r\n Request.prototype.reject = function (reason) {\r\n this.protocol.server.rejectRequest(this.requestContext, this.repoMethod, reason);\r\n };\r\n return Request;\r\n}());\n\nvar ServerStreaming$1 = (function () {\r\n function ServerStreaming(protocol, server) {\r\n var _this = this;\r\n this.protocol = protocol;\r\n this.server = server;\r\n protocol.server.onSubRequest(function (rc, rm) { return _this.handleSubRequest(rc, rm); });\r\n protocol.server.onSubAdded(function (sub, rm) { return _this.handleSubAdded(sub, rm); });\r\n protocol.server.onSubRemoved(function (sub, rm) { return _this.handleSubRemoved(sub, rm); });\r\n }\r\n ServerStreaming.prototype.handleSubRequest = function (requestContext, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionRequestHandler === \"function\")) {\r\n return;\r\n }\r\n var request = new Request(this.protocol, repoMethod, requestContext);\r\n repoMethod.streamCallbacks.subscriptionRequestHandler(request);\r\n };\r\n ServerStreaming.prototype.handleSubAdded = function (subscription, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionAddedHandler === \"function\")) {\r\n return;\r\n }\r\n var sub = new ServerSubscription(this.protocol, repoMethod, subscription);\r\n repoMethod.streamCallbacks.subscriptionAddedHandler(sub);\r\n };\r\n ServerStreaming.prototype.handleSubRemoved = function (subscription, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionRemovedHandler === \"function\")) {\r\n return;\r\n }\r\n var sub = new ServerSubscription(this.protocol, repoMethod, subscription);\r\n repoMethod.streamCallbacks.subscriptionRemovedHandler(sub);\r\n };\r\n return ServerStreaming;\r\n}());\n\nvar ServerBranch = (function () {\r\n function ServerBranch(key, protocol, repoMethod) {\r\n this.key = key;\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n }\r\n ServerBranch.prototype.subscriptions = function () {\r\n var _this = this;\r\n var subList = this.protocol.server.getSubscriptionList(this.repoMethod, this.key);\r\n return subList.map(function (sub) {\r\n return new ServerSubscription(_this.protocol, _this.repoMethod, sub);\r\n });\r\n };\r\n ServerBranch.prototype.close = function () {\r\n this.protocol.server.closeAllSubscriptions(this.repoMethod, this.key);\r\n };\r\n ServerBranch.prototype.push = function (data) {\r\n this.protocol.server.pushData(this.repoMethod, data, [this.key]);\r\n };\r\n return ServerBranch;\r\n}());\n\nvar ServerStream = (function () {\r\n function ServerStream(_protocol, _repoMethod, _server) {\r\n this._protocol = _protocol;\r\n this._repoMethod = _repoMethod;\r\n this._server = _server;\r\n this.name = this._repoMethod.definition.name;\r\n }\r\n ServerStream.prototype.branches = function (key) {\r\n var _this = this;\r\n var bList = this._protocol.server.getBranchList(this._repoMethod);\r\n if (key) {\r\n if (bList.indexOf(key) > -1) {\r\n return new ServerBranch(key, this._protocol, this._repoMethod);\r\n }\r\n return undefined;\r\n }\r\n else {\r\n return bList.map(function (branchKey) {\r\n return new ServerBranch(branchKey, _this._protocol, _this._repoMethod);\r\n });\r\n }\r\n };\r\n ServerStream.prototype.branch = function (key) {\r\n return this.branches(key);\r\n };\r\n ServerStream.prototype.subscriptions = function () {\r\n var _this = this;\r\n var subList = this._protocol.server.getSubscriptionList(this._repoMethod);\r\n return subList.map(function (sub) {\r\n return new ServerSubscription(_this._protocol, _this._repoMethod, sub);\r\n });\r\n };\r\n Object.defineProperty(ServerStream.prototype, \"definition\", {\r\n get: function () {\r\n var _a;\r\n var def2 = this._repoMethod.definition;\r\n return {\r\n accepts: def2.accepts,\r\n description: def2.description,\r\n displayName: def2.displayName,\r\n name: def2.name,\r\n objectTypes: def2.objectTypes,\r\n returns: def2.returns,\r\n supportsStreaming: def2.supportsStreaming,\r\n flags: (_a = def2.flags) === null || _a === void 0 ? void 0 : _a.metadata,\r\n };\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ServerStream.prototype.close = function () {\r\n this._protocol.server.closeAllSubscriptions(this._repoMethod);\r\n this._server.unregister(this._repoMethod.definition, true);\r\n };\r\n ServerStream.prototype.push = function (data, branches) {\r\n if (typeof branches !== \"string\" && !Array.isArray(branches) && branches !== undefined) {\r\n throw new Error(\"invalid branches should be string or string array\");\r\n }\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n this._protocol.server.pushData(this._repoMethod, data, branches);\r\n };\r\n ServerStream.prototype.updateRepoMethod = function (repoMethod) {\r\n this._repoMethod = repoMethod;\r\n };\r\n return ServerStream;\r\n}());\n\nvar Server = (function () {\r\n function Server(protocol, serverRepository) {\r\n this.protocol = protocol;\r\n this.serverRepository = serverRepository;\r\n this.invocations = 0;\r\n this.currentlyUnregistering = {};\r\n this.streaming = new ServerStreaming$1(protocol, this);\r\n this.protocol.server.onInvoked(this.onMethodInvoked.bind(this));\r\n }\r\n Server.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback, existingStream) {\r\n var _this = this;\r\n var promise = new Promise(function (resolve, reject) {\r\n if (!streamDef) {\r\n reject(\"The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream.\");\r\n return;\r\n }\r\n var streamMethodDefinition;\r\n if (typeof streamDef === \"string\") {\r\n streamMethodDefinition = { name: \"\" + streamDef };\r\n }\r\n else {\r\n streamMethodDefinition = __assign({}, streamDef);\r\n }\r\n if (!streamMethodDefinition.name) {\r\n return reject(\"The \\u201Cname\\u201D property is required for the \\u201CstreamDefinition\\u201D object and must be unique. Stream definition: \".concat(JSON.stringify(streamMethodDefinition)));\r\n }\r\n var nameAlreadyExists = _this.serverRepository.getList()\r\n .some(function (serverMethod) { return serverMethod.definition.name === streamMethodDefinition.name; });\r\n if (nameAlreadyExists) {\r\n return reject(\"A stream with the name \\\"\".concat(streamMethodDefinition.name, \"\\\" already exists! Please, provide a unique name for the stream.\"));\r\n }\r\n streamMethodDefinition.supportsStreaming = true;\r\n if (!callbacks) {\r\n callbacks = {};\r\n }\r\n if (typeof callbacks.subscriptionRequestHandler !== \"function\") {\r\n callbacks.subscriptionRequestHandler = function (request) {\r\n request.accept();\r\n };\r\n }\r\n var repoMethod = _this.serverRepository.add({\r\n definition: streamMethodDefinition,\r\n streamCallbacks: callbacks,\r\n protocolState: {},\r\n });\r\n _this.protocol.server.createStream(repoMethod)\r\n .then(function () {\r\n var streamUserObject;\r\n if (existingStream) {\r\n streamUserObject = existingStream;\r\n existingStream.updateRepoMethod(repoMethod);\r\n }\r\n else {\r\n streamUserObject = new ServerStream(_this.protocol, repoMethod, _this);\r\n }\r\n repoMethod.stream = streamUserObject;\r\n resolve(streamUserObject);\r\n })\r\n .catch(function (err) {\r\n if (repoMethod.repoId) {\r\n _this.serverRepository.remove(repoMethod.repoId);\r\n }\r\n reject(err);\r\n });\r\n });\r\n return promisify(promise, successCallback, errorCallback);\r\n };\r\n Server.prototype.register = function (methodDefinition, callback) {\r\n var _this = this;\r\n if (!methodDefinition) {\r\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\r\n }\r\n if (typeof callback !== \"function\") {\r\n return Promise.reject(\"The second parameter must be a callback function. Method: \".concat(typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name));\r\n }\r\n var wrappedCallbackFunction = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () {\r\n var result, resultValue, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 4, , 5]);\r\n result = callback(context.args, context.instance);\r\n if (!(result && typeof result.then === \"function\")) return [3, 2];\r\n return [4, result];\r\n case 1:\r\n resultValue = _a.sent();\r\n resultCallback(undefined, resultValue);\r\n return [3, 3];\r\n case 2:\r\n resultCallback(undefined, result);\r\n _a.label = 3;\r\n case 3: return [3, 5];\r\n case 4:\r\n e_1 = _a.sent();\r\n resultCallback(e_1 !== null && e_1 !== void 0 ? e_1 : \"\", e_1 !== null && e_1 !== void 0 ? e_1 : \"\");\r\n return [3, 5];\r\n case 5: return [2];\r\n }\r\n });\r\n }); };\r\n wrappedCallbackFunction.userCallback = callback;\r\n return this.registerCore(methodDefinition, wrappedCallbackFunction);\r\n };\r\n Server.prototype.registerAsync = function (methodDefinition, callback) {\r\n var _this = this;\r\n if (!methodDefinition) {\r\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\r\n }\r\n if (typeof callback !== \"function\") {\r\n return Promise.reject(\"The second parameter must be a callback function. Method: \".concat(typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name));\r\n }\r\n var wrappedCallback = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () {\r\n var resultCalled_1, success, error, methodResult;\r\n return __generator(this, function (_a) {\r\n try {\r\n resultCalled_1 = false;\r\n success = function (result) {\r\n if (!resultCalled_1) {\r\n resultCallback(undefined, result);\r\n }\r\n resultCalled_1 = true;\r\n };\r\n error = function (e) {\r\n if (!resultCalled_1) {\r\n if (!e) {\r\n e = \"\";\r\n }\r\n resultCallback(e, e);\r\n }\r\n resultCalled_1 = true;\r\n };\r\n methodResult = callback(context.args, context.instance, success, error);\r\n if (methodResult && typeof methodResult.then === \"function\") {\r\n methodResult\r\n .then(success)\r\n .catch(error);\r\n }\r\n }\r\n catch (e) {\r\n resultCallback(e, undefined);\r\n }\r\n return [2];\r\n });\r\n }); };\r\n wrappedCallback.userCallbackAsync = callback;\r\n return this.registerCore(methodDefinition, wrappedCallback);\r\n };\r\n Server.prototype.unregister = function (methodFilter, forStream) {\r\n if (forStream === void 0) { forStream = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodDefinition, methodToBeRemoved;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (methodFilter === undefined) {\r\n return [2, Promise.reject(\"Please, provide either a unique string for a name or an object containing a “name” property.\")];\r\n }\r\n if (!(typeof methodFilter === \"function\")) return [3, 2];\r\n return [4, this.unregisterWithPredicate(methodFilter, forStream)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n case 2:\r\n if (typeof methodFilter === \"string\") {\r\n methodDefinition = { name: methodFilter };\r\n }\r\n else {\r\n methodDefinition = methodFilter;\r\n }\r\n if (methodDefinition.name === undefined) {\r\n return [2, Promise.reject(\"Method name is required. Cannot find a method if the method name is undefined!\")];\r\n }\r\n methodToBeRemoved = this.serverRepository.getList().find(function (serverMethod) {\r\n return serverMethod.definition.name === methodDefinition.name\r\n && (serverMethod.definition.supportsStreaming || false) === forStream;\r\n });\r\n if (!methodToBeRemoved) {\r\n return [2, Promise.reject(\"Method with a name \\\"\".concat(methodDefinition.name, \"\\\" does not exist or is not registered by your application!\"))];\r\n }\r\n return [4, this.removeMethodsOrStreams([methodToBeRemoved])];\r\n case 3:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.unregisterWithPredicate = function (filterPredicate, forStream) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodsOrStreamsToRemove;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n methodsOrStreamsToRemove = this.serverRepository.getList()\r\n .filter(function (sm) { return filterPredicate(sm.definition); })\r\n .filter(function (serverMethod) {\r\n return (serverMethod.definition.supportsStreaming || false) === forStream;\r\n });\r\n if (!methodsOrStreamsToRemove || methodsOrStreamsToRemove.length === 0) {\r\n return [2, Promise.reject(\"Could not find a \".concat(forStream ? \"stream\" : \"method\", \" matching the specified condition!\"))];\r\n }\r\n return [4, this.removeMethodsOrStreams(methodsOrStreamsToRemove)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.removeMethodsOrStreams = function (methodsToRemove) {\r\n var _this = this;\r\n var methodUnregPromises = [];\r\n methodsToRemove.forEach(function (method) {\r\n var promise = _this.protocol.server.unregister(method)\r\n .then(function () {\r\n if (method.repoId) {\r\n _this.serverRepository.remove(method.repoId);\r\n }\r\n });\r\n methodUnregPromises.push(promise);\r\n _this.addAsCurrentlyUnregistering(method.definition.name, promise);\r\n });\r\n return Promise.all(methodUnregPromises);\r\n };\r\n Server.prototype.addAsCurrentlyUnregistering = function (methodName, promise) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var timeout;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n timeout = new Promise(function (resolve) { return setTimeout(resolve, 5000); });\r\n this.currentlyUnregistering[methodName] = Promise.race([promise, timeout]).then(function () {\r\n delete _this.currentlyUnregistering[methodName];\r\n });\r\n return [2];\r\n });\r\n });\r\n };\r\n Server.prototype.registerCore = function (method, theFunction) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodDefinition, unregisterInProgress, nameAlreadyExists, repoMethod;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (typeof method === \"string\") {\r\n methodDefinition = { name: \"\" + method };\r\n }\r\n else {\r\n methodDefinition = __assign({}, method);\r\n }\r\n if (!methodDefinition.name) {\r\n return [2, Promise.reject(\"Please, provide a (unique) string value for the \\u201Cname\\u201D property in the \\u201CmethodDefinition\\u201D object: \".concat(JSON.stringify(method)))];\r\n }\r\n unregisterInProgress = this.currentlyUnregistering[methodDefinition.name];\r\n if (!(typeof unregisterInProgress !== \"undefined\")) return [3, 2];\r\n return [4, unregisterInProgress];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n nameAlreadyExists = this.serverRepository.getList()\r\n .some(function (serverMethod) { return serverMethod.definition.name === methodDefinition.name; });\r\n if (nameAlreadyExists) {\r\n return [2, Promise.reject(\"A method with the name \\\"\".concat(methodDefinition.name, \"\\\" already exists! Please, provide a unique name for the method.\"))];\r\n }\r\n if (methodDefinition.supportsStreaming) {\r\n return [2, Promise.reject(\"When you create methods with \\u201Cglue.interop.register()\\u201D or \\u201Cglue.interop.registerAsync()\\u201D the property \\u201CsupportsStreaming\\u201D cannot be \\u201Ctrue\\u201D. If you want \\u201C\".concat(methodDefinition.name, \"\\u201D to be a stream, please use the \\u201Cglue.interop.createStream()\\u201D method.\"))];\r\n }\r\n repoMethod = this.serverRepository.add({\r\n definition: methodDefinition,\r\n theFunction: theFunction,\r\n protocolState: {},\r\n });\r\n return [2, this.protocol.server.register(repoMethod)\r\n .catch(function (err) {\r\n if (repoMethod === null || repoMethod === void 0 ? void 0 : repoMethod.repoId) {\r\n _this.serverRepository.remove(repoMethod.repoId);\r\n }\r\n throw err;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.onMethodInvoked = function (methodToExecute, invocationId, invocationArgs) {\r\n var _this = this;\r\n if (!methodToExecute || !methodToExecute.theFunction) {\r\n return;\r\n }\r\n methodToExecute.theFunction(invocationArgs, function (err, result) {\r\n if (err !== undefined && err !== null) {\r\n if (err.message && typeof err.message === \"string\") {\r\n err = err.message;\r\n }\r\n else if (typeof err !== \"string\") {\r\n try {\r\n err = JSON.stringify(err);\r\n }\r\n catch (unStrException) {\r\n err = \"un-stringifyable error in onMethodInvoked! Top level prop names: \".concat(Object.keys(err));\r\n }\r\n }\r\n }\r\n if (!result) {\r\n result = {};\r\n }\r\n else if (typeof result !== \"object\" || Array.isArray(result)) {\r\n result = { _value: result };\r\n }\r\n _this.protocol.server.methodInvocationResult(methodToExecute, invocationId, err, result);\r\n });\r\n };\r\n return Server;\r\n}());\n\nvar InstanceWrapper = (function () {\r\n function InstanceWrapper(API, instance, connection) {\r\n var _this = this;\r\n this.wrapped = {};\r\n this.wrapped.getMethods = function () {\r\n return API.methodsForInstance(this);\r\n };\r\n this.wrapped.getStreams = function () {\r\n return API.methodsForInstance(this).filter(function (m) { return m.supportsStreaming; });\r\n };\r\n if (instance) {\r\n this.refreshWrappedObject(instance);\r\n }\r\n if (connection) {\r\n connection.loggedIn(function () {\r\n _this.refresh(connection);\r\n });\r\n this.refresh(connection);\r\n }\r\n }\r\n InstanceWrapper.prototype.unwrap = function () {\r\n return this.wrapped;\r\n };\r\n InstanceWrapper.prototype.refresh = function (connection) {\r\n if (!connection) {\r\n return;\r\n }\r\n var resolvedIdentity = connection === null || connection === void 0 ? void 0 : connection.resolvedIdentity;\r\n var instance = Object.assign({}, resolvedIdentity !== null && resolvedIdentity !== void 0 ? resolvedIdentity : {}, { peerId: connection === null || connection === void 0 ? void 0 : connection.peerId });\r\n this.refreshWrappedObject(instance);\r\n };\r\n InstanceWrapper.prototype.refreshWrappedObject = function (resolvedIdentity) {\r\n var _this = this;\r\n var _a, _b, _c, _d;\r\n Object.keys(resolvedIdentity).forEach(function (key) {\r\n _this.wrapped[key] = resolvedIdentity[key];\r\n });\r\n this.wrapped.user = resolvedIdentity.user;\r\n this.wrapped.instance = resolvedIdentity.instance;\r\n this.wrapped.application = (_a = resolvedIdentity.application) !== null && _a !== void 0 ? _a : shortid();\r\n this.wrapped.applicationName = resolvedIdentity.applicationName;\r\n this.wrapped.pid = (_c = (_b = resolvedIdentity.pid) !== null && _b !== void 0 ? _b : resolvedIdentity.process) !== null && _c !== void 0 ? _c : Math.floor(Math.random() * 10000000000);\r\n this.wrapped.machine = resolvedIdentity.machine;\r\n this.wrapped.environment = resolvedIdentity.environment;\r\n this.wrapped.region = resolvedIdentity.region;\r\n this.wrapped.windowId = resolvedIdentity.windowId;\r\n this.wrapped.isLocal = (_d = resolvedIdentity.isLocal) !== null && _d !== void 0 ? _d : true;\r\n this.wrapped.api = resolvedIdentity.api;\r\n this.wrapped.service = resolvedIdentity.service;\r\n this.wrapped.peerId = resolvedIdentity.peerId;\r\n };\r\n return InstanceWrapper;\r\n}());\n\nvar hideMethodSystemFlags = function (method) {\r\n return __assign(__assign({}, method), { flags: method.flags.metadata || {} });\r\n};\r\nvar ClientRepository = (function () {\r\n function ClientRepository(logger, API) {\r\n this.logger = logger;\r\n this.API = API;\r\n this.servers = {};\r\n this.methodsCount = {};\r\n this.callbacks = lib$1();\r\n var peerId = this.API.instance.peerId;\r\n this.myServer = {\r\n id: peerId,\r\n methods: {},\r\n instance: this.API.instance,\r\n wrapper: this.API.unwrappedInstance,\r\n };\r\n this.servers[peerId] = this.myServer;\r\n }\r\n ClientRepository.prototype.addServer = function (info, serverId) {\r\n this.logger.debug(\"adding server \".concat(serverId));\r\n var current = this.servers[serverId];\r\n if (current) {\r\n return current.id;\r\n }\r\n var wrapper = new InstanceWrapper(this.API, info);\r\n var serverEntry = {\r\n id: serverId,\r\n methods: {},\r\n instance: wrapper.unwrap(),\r\n wrapper: wrapper,\r\n };\r\n this.servers[serverId] = serverEntry;\r\n this.callbacks.execute(\"onServerAdded\", serverEntry.instance);\r\n return serverId;\r\n };\r\n ClientRepository.prototype.removeServerById = function (id, reason) {\r\n var _this = this;\r\n var server = this.servers[id];\r\n if (!server) {\r\n this.logger.warn(\"not aware of server \".concat(id, \", my state \").concat(JSON.stringify(Object.keys(this.servers))));\r\n return;\r\n }\r\n else {\r\n this.logger.debug(\"removing server \".concat(id));\r\n }\r\n Object.keys(server.methods).forEach(function (methodId) {\r\n _this.removeServerMethod(id, methodId);\r\n });\r\n delete this.servers[id];\r\n this.callbacks.execute(\"onServerRemoved\", server.instance, reason);\r\n };\r\n ClientRepository.prototype.addServerMethod = function (serverId, method) {\r\n var _a;\r\n var server = this.servers[serverId];\r\n if (!server) {\r\n throw new Error(\"server does not exists\");\r\n }\r\n if (server.methods[method.id]) {\r\n return;\r\n }\r\n var identifier = this.createMethodIdentifier(method);\r\n var that = this;\r\n var methodDefinition = {\r\n identifier: identifier,\r\n gatewayId: method.id,\r\n name: method.name,\r\n displayName: method.display_name,\r\n description: method.description,\r\n version: method.version,\r\n objectTypes: method.object_types || [],\r\n accepts: method.input_signature,\r\n returns: method.result_signature,\r\n supportsStreaming: typeof method.flags !== \"undefined\" ? method.flags.streaming : false,\r\n flags: (_a = method.flags) !== null && _a !== void 0 ? _a : {},\r\n getServers: function () {\r\n return that.getServersByMethod(identifier);\r\n }\r\n };\r\n methodDefinition.object_types = methodDefinition.objectTypes;\r\n methodDefinition.display_name = methodDefinition.displayName;\r\n methodDefinition.version = methodDefinition.version;\r\n server.methods[method.id] = methodDefinition;\r\n var clientMethodDefinition = hideMethodSystemFlags(methodDefinition);\r\n if (!this.methodsCount[identifier]) {\r\n this.methodsCount[identifier] = 0;\r\n this.callbacks.execute(\"onMethodAdded\", clientMethodDefinition);\r\n }\r\n this.methodsCount[identifier] = this.methodsCount[identifier] + 1;\r\n this.callbacks.execute(\"onServerMethodAdded\", server.instance, clientMethodDefinition);\r\n return methodDefinition;\r\n };\r\n ClientRepository.prototype.removeServerMethod = function (serverId, methodId) {\r\n var server = this.servers[serverId];\r\n if (!server) {\r\n throw new Error(\"server does not exists\");\r\n }\r\n var method = server.methods[methodId];\r\n delete server.methods[methodId];\r\n var clientMethodDefinition = hideMethodSystemFlags(method);\r\n this.methodsCount[method.identifier] = this.methodsCount[method.identifier] - 1;\r\n if (this.methodsCount[method.identifier] === 0) {\r\n this.callbacks.execute(\"onMethodRemoved\", clientMethodDefinition);\r\n }\r\n this.callbacks.execute(\"onServerMethodRemoved\", server.instance, clientMethodDefinition);\r\n };\r\n ClientRepository.prototype.getMethods = function () {\r\n return this.extractMethodsFromServers(Object.values(this.servers)).map(hideMethodSystemFlags);\r\n };\r\n ClientRepository.prototype.getServers = function () {\r\n return Object.values(this.servers).map(this.hideServerMethodSystemFlags);\r\n };\r\n ClientRepository.prototype.onServerAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerAdded\", callback);\r\n var serversWithMethodsToReplay = this.getServers().map(function (s) { return s.instance; });\r\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, serversWithMethodsToReplay, callback);\r\n };\r\n ClientRepository.prototype.onMethodAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onMethodAdded\", callback);\r\n var methodsToReplay = this.getMethods();\r\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, methodsToReplay, callback);\r\n };\r\n ClientRepository.prototype.onServerMethodAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerMethodAdded\", callback);\r\n var unsubCalled = false;\r\n var servers = this.getServers();\r\n setTimeout(function () {\r\n servers.forEach(function (server) {\r\n var methods = server.methods;\r\n Object.keys(methods).forEach(function (methodId) {\r\n if (!unsubCalled) {\r\n callback(server.instance, methods[methodId]);\r\n }\r\n });\r\n });\r\n }, 0);\r\n return function () {\r\n unsubCalled = true;\r\n unsubscribeFunc();\r\n };\r\n };\r\n ClientRepository.prototype.onMethodRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onMethodRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.onServerRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.onServerMethodRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerMethodRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.getServerById = function (id) {\r\n return this.hideServerMethodSystemFlags(this.servers[id]);\r\n };\r\n ClientRepository.prototype.reset = function () {\r\n var _a;\r\n var _this = this;\r\n Object.keys(this.servers).forEach(function (key) {\r\n _this.removeServerById(key, \"reset\");\r\n });\r\n this.servers = (_a = {},\r\n _a[this.myServer.id] = this.myServer,\r\n _a);\r\n this.methodsCount = {};\r\n };\r\n ClientRepository.prototype.createMethodIdentifier = function (methodInfo) {\r\n var _a, _b;\r\n var accepts = (_a = methodInfo.input_signature) !== null && _a !== void 0 ? _a : \"\";\r\n var returns = (_b = methodInfo.result_signature) !== null && _b !== void 0 ? _b : \"\";\r\n return (methodInfo.name + accepts + returns).toLowerCase();\r\n };\r\n ClientRepository.prototype.getServersByMethod = function (identifier) {\r\n var allServers = [];\r\n Object.values(this.servers).forEach(function (server) {\r\n Object.values(server.methods).forEach(function (method) {\r\n if (method.identifier === identifier) {\r\n allServers.push(server.instance);\r\n }\r\n });\r\n });\r\n return allServers;\r\n };\r\n ClientRepository.prototype.returnUnsubWithDelayedReplay = function (unsubscribeFunc, collectionToReplay, callback) {\r\n var unsubCalled = false;\r\n setTimeout(function () {\r\n collectionToReplay.forEach(function (item) {\r\n if (!unsubCalled) {\r\n callback(item);\r\n }\r\n });\r\n }, 0);\r\n return function () {\r\n unsubCalled = true;\r\n unsubscribeFunc();\r\n };\r\n };\r\n ClientRepository.prototype.hideServerMethodSystemFlags = function (server) {\r\n var clientMethods = {};\r\n Object.entries(server.methods).forEach(function (_a) {\r\n var name = _a[0], method = _a[1];\r\n clientMethods[name] = hideMethodSystemFlags(method);\r\n });\r\n return __assign(__assign({}, server), { methods: clientMethods });\r\n };\r\n ClientRepository.prototype.extractMethodsFromServers = function (servers) {\r\n var methods = Object.values(servers).reduce(function (clientMethods, server) {\r\n return __spreadArray(__spreadArray([], clientMethods, true), Object.values(server.methods), true);\r\n }, []);\r\n return methods;\r\n };\r\n return ClientRepository;\r\n}());\n\nvar ServerRepository = (function () {\r\n function ServerRepository() {\r\n this.nextId = 0;\r\n this.methods = [];\r\n }\r\n ServerRepository.prototype.add = function (method) {\r\n method.repoId = String(this.nextId);\r\n this.nextId += 1;\r\n this.methods.push(method);\r\n return method;\r\n };\r\n ServerRepository.prototype.remove = function (repoId) {\r\n if (typeof repoId !== \"string\") {\r\n return new TypeError(\"Expecting a string\");\r\n }\r\n this.methods = this.methods.filter(function (m) {\r\n return m.repoId !== repoId;\r\n });\r\n };\r\n ServerRepository.prototype.getById = function (id) {\r\n if (typeof id !== \"string\") {\r\n return undefined;\r\n }\r\n return this.methods.find(function (m) {\r\n return m.repoId === id;\r\n });\r\n };\r\n ServerRepository.prototype.getList = function () {\r\n return this.methods.map(function (m) { return m; });\r\n };\r\n ServerRepository.prototype.length = function () {\r\n return this.methods.length;\r\n };\r\n ServerRepository.prototype.reset = function () {\r\n this.methods = [];\r\n };\r\n return ServerRepository;\r\n}());\n\nvar SUBSCRIPTION_REQUEST = \"onSubscriptionRequest\";\r\nvar SUBSCRIPTION_ADDED = \"onSubscriptionAdded\";\r\nvar SUBSCRIPTION_REMOVED = \"onSubscriptionRemoved\";\r\nvar ServerStreaming = (function () {\r\n function ServerStreaming(session, repository, serverRepository) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.serverRepository = serverRepository;\r\n this.ERR_URI_SUBSCRIPTION_FAILED = \"com.tick42.agm.errors.subscription.failure\";\r\n this.callbacks = lib$1();\r\n this.nextStreamId = 0;\r\n session.on(\"add-interest\", function (msg) {\r\n _this.handleAddInterest(msg);\r\n });\r\n session.on(\"remove-interest\", function (msg) {\r\n _this.handleRemoveInterest(msg);\r\n });\r\n }\r\n ServerStreaming.prototype.acceptRequestOnBranch = function (requestContext, streamingMethod, branch) {\r\n if (typeof branch !== \"string\") {\r\n branch = \"\";\r\n }\r\n if (typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\r\n throw new TypeError(\"The streaming method is missing its subscriptions.\");\r\n }\r\n if (!Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\r\n throw new TypeError(\"The streaming method is missing its branches.\");\r\n }\r\n var streamId = this.getStreamId(streamingMethod, branch);\r\n var key = requestContext.msg.subscription_id;\r\n var subscription = {\r\n id: key,\r\n arguments: requestContext.arguments,\r\n instance: requestContext.instance,\r\n branchKey: branch,\r\n streamId: streamId,\r\n subscribeMsg: requestContext.msg,\r\n };\r\n streamingMethod.protocolState.subscriptionsMap[key] = subscription;\r\n this.session.sendFireAndForget({\r\n type: \"accepted\",\r\n subscription_id: key,\r\n stream_id: streamId,\r\n });\r\n this.callbacks.execute(SUBSCRIPTION_ADDED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.rejectRequest = function (requestContext, streamingMethod, reason) {\r\n if (typeof reason !== \"string\") {\r\n reason = \"\";\r\n }\r\n this.sendSubscriptionFailed(\"Subscription rejected by user. \" + reason, requestContext.msg.subscription_id);\r\n };\r\n ServerStreaming.prototype.pushData = function (streamingMethod, data, branches) {\r\n var _this = this;\r\n if (typeof streamingMethod !== \"object\" || !Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\r\n return;\r\n }\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n if (typeof branches === \"string\") {\r\n branches = [branches];\r\n }\r\n else if (!Array.isArray(branches) || branches.length <= 0) {\r\n branches = [];\r\n }\r\n var streamIdList = streamingMethod.protocolState.branchKeyToStreamIdMap\r\n .filter(function (br) {\r\n if (!branches || branches.length === 0) {\r\n return true;\r\n }\r\n return branches.indexOf(br.key) >= 0;\r\n }).map(function (br) {\r\n return br.streamId;\r\n });\r\n streamIdList.forEach(function (streamId) {\r\n var publishMessage = {\r\n type: \"publish\",\r\n stream_id: streamId,\r\n data: data,\r\n };\r\n _this.session.sendFireAndForget(publishMessage);\r\n });\r\n };\r\n ServerStreaming.prototype.pushDataToSingle = function (method, subscription, data) {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n var postMessage = {\r\n type: \"post\",\r\n subscription_id: subscription.id,\r\n data: data,\r\n };\r\n this.session.sendFireAndForget(postMessage);\r\n };\r\n ServerStreaming.prototype.closeSingleSubscription = function (streamingMethod, subscription) {\r\n if (streamingMethod.protocolState.subscriptionsMap) {\r\n delete streamingMethod.protocolState.subscriptionsMap[subscription.id];\r\n }\r\n var dropSubscriptionMessage = {\r\n type: \"drop-subscription\",\r\n subscription_id: subscription.id,\r\n reason: \"Server dropping a single subscription\",\r\n };\r\n this.session.sendFireAndForget(dropSubscriptionMessage);\r\n subscription.instance;\r\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.closeMultipleSubscriptions = function (streamingMethod, branchKey) {\r\n var _this = this;\r\n if (typeof streamingMethod !== \"object\" || typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\r\n return;\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return;\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var subscriptionsToClose = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n if (typeof branchKey === \"string\") {\r\n subscriptionsToClose = subscriptionsToClose.filter(function (sub) {\r\n return sub.branchKey === branchKey;\r\n });\r\n }\r\n subscriptionsToClose.forEach(function (subscription) {\r\n delete subscriptionsMap[subscription.id];\r\n var drop = {\r\n type: \"drop-subscription\",\r\n subscription_id: subscription.id,\r\n reason: \"Server dropping all subscriptions on stream_id: \" + subscription.streamId,\r\n };\r\n _this.session.sendFireAndForget(drop);\r\n });\r\n };\r\n ServerStreaming.prototype.getSubscriptionList = function (streamingMethod, branchKey) {\r\n if (typeof streamingMethod !== \"object\") {\r\n return [];\r\n }\r\n var subscriptions = [];\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return [];\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var allSubscriptions = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n if (typeof branchKey !== \"string\") {\r\n subscriptions = allSubscriptions;\r\n }\r\n else {\r\n subscriptions = allSubscriptions.filter(function (sub) {\r\n return sub.branchKey === branchKey;\r\n });\r\n }\r\n return subscriptions;\r\n };\r\n ServerStreaming.prototype.getBranchList = function (streamingMethod) {\r\n if (typeof streamingMethod !== \"object\") {\r\n return [];\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return [];\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var allSubscriptions = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n var result = [];\r\n allSubscriptions.forEach(function (sub) {\r\n var branch = \"\";\r\n if (typeof sub === \"object\" && typeof sub.branchKey === \"string\") {\r\n branch = sub.branchKey;\r\n }\r\n if (result.indexOf(branch) === -1) {\r\n result.push(branch);\r\n }\r\n });\r\n return result;\r\n };\r\n ServerStreaming.prototype.onSubAdded = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_ADDED, callback);\r\n };\r\n ServerStreaming.prototype.onSubRequest = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REQUEST, callback);\r\n };\r\n ServerStreaming.prototype.onSubRemoved = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REMOVED, callback);\r\n };\r\n ServerStreaming.prototype.handleRemoveInterest = function (msg) {\r\n var streamingMethod = this.serverRepository.getById(msg.method_id);\r\n if (typeof msg.subscription_id !== \"string\" ||\r\n typeof streamingMethod !== \"object\") {\r\n return;\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return;\r\n }\r\n if (typeof streamingMethod.protocolState.subscriptionsMap[msg.subscription_id] !== \"object\") {\r\n return;\r\n }\r\n var subscription = streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\r\n delete streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\r\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.onSubscriptionLifetimeEvent = function (eventName, handlerFunc) {\r\n this.callbacks.add(eventName, handlerFunc);\r\n };\r\n ServerStreaming.prototype.getNextStreamId = function () {\r\n return this.nextStreamId++ + \"\";\r\n };\r\n ServerStreaming.prototype.handleAddInterest = function (msg) {\r\n var caller = this.repository.getServerById(msg.caller_id);\r\n var instance = caller.instance;\r\n var requestContext = {\r\n msg: msg,\r\n arguments: msg.arguments_kv || {},\r\n instance: instance,\r\n };\r\n var streamingMethod = this.serverRepository.getById(msg.method_id);\r\n if (streamingMethod === undefined) {\r\n var errorMsg = \"No method with id \" + msg.method_id + \" on this server.\";\r\n this.sendSubscriptionFailed(errorMsg, msg.subscription_id);\r\n return;\r\n }\r\n if (streamingMethod.protocolState.subscriptionsMap &&\r\n streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]) {\r\n this.sendSubscriptionFailed(\"A subscription with id \" + msg.subscription_id + \" already exists.\", msg.subscription_id);\r\n return;\r\n }\r\n this.callbacks.execute(SUBSCRIPTION_REQUEST, requestContext, streamingMethod);\r\n };\r\n ServerStreaming.prototype.sendSubscriptionFailed = function (reason, subscriptionId) {\r\n var errorMessage = {\r\n type: \"error\",\r\n reason_uri: this.ERR_URI_SUBSCRIPTION_FAILED,\r\n reason: reason,\r\n request_id: subscriptionId,\r\n };\r\n this.session.sendFireAndForget(errorMessage);\r\n };\r\n ServerStreaming.prototype.getStreamId = function (streamingMethod, branchKey) {\r\n if (typeof branchKey !== \"string\") {\r\n branchKey = \"\";\r\n }\r\n if (!streamingMethod.protocolState.branchKeyToStreamIdMap) {\r\n throw new Error(\"streaming \".concat(streamingMethod.definition.name, \" method without protocol state\"));\r\n }\r\n var needleBranch = streamingMethod.protocolState.branchKeyToStreamIdMap.filter(function (branch) {\r\n return branch.key === branchKey;\r\n })[0];\r\n var streamId = (needleBranch ? needleBranch.streamId : undefined);\r\n if (typeof streamId !== \"string\" || streamId === \"\") {\r\n streamId = this.getNextStreamId();\r\n streamingMethod.protocolState.branchKeyToStreamIdMap.push({ key: branchKey, streamId: streamId });\r\n }\r\n return streamId;\r\n };\r\n return ServerStreaming;\r\n}());\n\nvar ServerProtocol = (function () {\r\n function ServerProtocol(session, clientRepository, serverRepository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.clientRepository = clientRepository;\r\n this.serverRepository = serverRepository;\r\n this.logger = logger;\r\n this.callbacks = lib$1();\r\n this.streaming = new ServerStreaming(session, clientRepository, serverRepository);\r\n this.session.on(\"invoke\", function (msg) { return _this.handleInvokeMessage(msg); });\r\n }\r\n ServerProtocol.prototype.createStream = function (repoMethod) {\r\n repoMethod.protocolState.subscriptionsMap = {};\r\n repoMethod.protocolState.branchKeyToStreamIdMap = [];\r\n return this.register(repoMethod, true);\r\n };\r\n ServerProtocol.prototype.register = function (repoMethod, isStreaming) {\r\n var _this = this;\r\n var _a;\r\n var methodDef = repoMethod.definition;\r\n var flags = Object.assign({}, { metadata: (_a = methodDef.flags) !== null && _a !== void 0 ? _a : {} }, { streaming: isStreaming || false });\r\n var registerMsg = {\r\n type: \"register\",\r\n methods: [{\r\n id: repoMethod.repoId,\r\n name: methodDef.name,\r\n display_name: methodDef.displayName,\r\n description: methodDef.description,\r\n version: methodDef.version,\r\n flags: flags,\r\n object_types: methodDef.objectTypes || methodDef.object_types,\r\n input_signature: methodDef.accepts,\r\n result_signature: methodDef.returns,\r\n restrictions: undefined,\r\n }],\r\n };\r\n return this.session.send(registerMsg, { methodId: repoMethod.repoId })\r\n .then(function () {\r\n _this.logger.debug(\"registered method \" + repoMethod.definition.name + \" with id \" + repoMethod.repoId);\r\n })\r\n .catch(function (msg) {\r\n _this.logger.warn(\"failed to register method \".concat(repoMethod.definition.name, \" with id \").concat(repoMethod.repoId, \" - \").concat(JSON.stringify(msg)));\r\n throw msg;\r\n });\r\n };\r\n ServerProtocol.prototype.onInvoked = function (callback) {\r\n this.callbacks.add(\"onInvoked\", callback);\r\n };\r\n ServerProtocol.prototype.methodInvocationResult = function (method, invocationId, err, result) {\r\n var msg;\r\n if (err || err === \"\") {\r\n msg = {\r\n type: \"error\",\r\n request_id: invocationId,\r\n reason_uri: \"agm.errors.client_error\",\r\n reason: err,\r\n context: result,\r\n peer_id: undefined,\r\n };\r\n }\r\n else {\r\n msg = {\r\n type: \"yield\",\r\n invocation_id: invocationId,\r\n peer_id: this.session.peerId,\r\n result: result,\r\n request_id: undefined,\r\n };\r\n }\r\n this.session.sendFireAndForget(msg);\r\n };\r\n ServerProtocol.prototype.unregister = function (method) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var msg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n msg = {\r\n type: \"unregister\",\r\n methods: [method.repoId],\r\n };\r\n return [4, this.session.send(msg)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n ServerProtocol.prototype.getBranchList = function (method) {\r\n return this.streaming.getBranchList(method);\r\n };\r\n ServerProtocol.prototype.getSubscriptionList = function (method, branchKey) {\r\n return this.streaming.getSubscriptionList(method, branchKey);\r\n };\r\n ServerProtocol.prototype.closeAllSubscriptions = function (method, branchKey) {\r\n this.streaming.closeMultipleSubscriptions(method, branchKey);\r\n };\r\n ServerProtocol.prototype.pushData = function (method, data, branches) {\r\n this.streaming.pushData(method, data, branches);\r\n };\r\n ServerProtocol.prototype.pushDataToSingle = function (method, subscription, data) {\r\n this.streaming.pushDataToSingle(method, subscription, data);\r\n };\r\n ServerProtocol.prototype.closeSingleSubscription = function (method, subscription) {\r\n this.streaming.closeSingleSubscription(method, subscription);\r\n };\r\n ServerProtocol.prototype.acceptRequestOnBranch = function (requestContext, method, branch) {\r\n this.streaming.acceptRequestOnBranch(requestContext, method, branch);\r\n };\r\n ServerProtocol.prototype.rejectRequest = function (requestContext, method, reason) {\r\n this.streaming.rejectRequest(requestContext, method, reason);\r\n };\r\n ServerProtocol.prototype.onSubRequest = function (callback) {\r\n this.streaming.onSubRequest(callback);\r\n };\r\n ServerProtocol.prototype.onSubAdded = function (callback) {\r\n this.streaming.onSubAdded(callback);\r\n };\r\n ServerProtocol.prototype.onSubRemoved = function (callback) {\r\n this.streaming.onSubRemoved(callback);\r\n };\r\n ServerProtocol.prototype.handleInvokeMessage = function (msg) {\r\n var invocationId = msg.invocation_id;\r\n var callerId = msg.caller_id;\r\n var methodId = msg.method_id;\r\n var args = msg.arguments_kv;\r\n var methodList = this.serverRepository.getList();\r\n var method = methodList.filter(function (m) {\r\n return m.repoId === methodId;\r\n })[0];\r\n if (method === undefined) {\r\n return;\r\n }\r\n var client = this.clientRepository.getServerById(callerId).instance;\r\n var invocationArgs = { args: args, instance: client };\r\n this.callbacks.execute(\"onInvoked\", method, invocationId, invocationArgs);\r\n };\r\n return ServerProtocol;\r\n}());\n\nvar UserSubscription = (function () {\r\n function UserSubscription(repository, subscriptionData) {\r\n this.repository = repository;\r\n this.subscriptionData = subscriptionData;\r\n }\r\n Object.defineProperty(UserSubscription.prototype, \"requestArguments\", {\r\n get: function () {\r\n return this.subscriptionData.params.arguments || {};\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"servers\", {\r\n get: function () {\r\n var _this = this;\r\n return this.subscriptionData.trackedServers\r\n .filter(function (pair) { return pair.subscriptionId; })\r\n .map(function (pair) { return _this.repository.getServerById(pair.serverId).instance; });\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"serverInstance\", {\r\n get: function () {\r\n return this.servers[0];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"stream\", {\r\n get: function () {\r\n return this.subscriptionData.method;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n UserSubscription.prototype.onData = function (dataCallback) {\r\n if (typeof dataCallback !== \"function\") {\r\n throw new TypeError(\"The data callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onData.push(dataCallback);\r\n if (this.subscriptionData.handlers.onData.length === 1 && this.subscriptionData.queued.data.length > 0) {\r\n this.subscriptionData.queued.data.forEach(function (dataItem) {\r\n dataCallback(dataItem);\r\n });\r\n }\r\n };\r\n UserSubscription.prototype.onClosed = function (closedCallback) {\r\n if (typeof closedCallback !== \"function\") {\r\n throw new TypeError(\"The callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onClosed.push(closedCallback);\r\n };\r\n UserSubscription.prototype.onFailed = function (callback) {\r\n };\r\n UserSubscription.prototype.onConnected = function (callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new TypeError(\"The callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onConnected.push(callback);\r\n };\r\n UserSubscription.prototype.close = function () {\r\n this.subscriptionData.close();\r\n };\r\n UserSubscription.prototype.setNewSubscription = function (newSub) {\r\n this.subscriptionData = newSub;\r\n };\r\n return UserSubscription;\r\n}());\n\nvar TimedCache = (function () {\r\n function TimedCache(config) {\r\n this.config = config;\r\n this.cache = [];\r\n this.timeoutIds = [];\r\n }\r\n TimedCache.prototype.add = function (element) {\r\n var _this = this;\r\n var id = shortid();\r\n this.cache.push({ id: id, element: element });\r\n var timeoutId = setTimeout(function () {\r\n var elementIdx = _this.cache.findIndex(function (entry) { return entry.id === id; });\r\n if (elementIdx < 0) {\r\n return;\r\n }\r\n _this.cache.splice(elementIdx, 1);\r\n }, this.config.ELEMENT_TTL_MS);\r\n this.timeoutIds.push(timeoutId);\r\n };\r\n TimedCache.prototype.flush = function () {\r\n var elements = this.cache.map(function (entry) { return entry.element; });\r\n this.timeoutIds.forEach(function (id) { return clearInterval(id); });\r\n this.cache = [];\r\n this.timeoutIds = [];\r\n return elements;\r\n };\r\n return TimedCache;\r\n}());\n\nvar STATUS_AWAITING_ACCEPT = \"awaitingAccept\";\r\nvar STATUS_SUBSCRIBED = \"subscribed\";\r\nvar ERR_MSG_SUB_FAILED = \"Subscription failed.\";\r\nvar ERR_MSG_SUB_REJECTED = \"Subscription rejected.\";\r\nvar ON_CLOSE_MSG_SERVER_INIT = \"ServerInitiated\";\r\nvar ON_CLOSE_MSG_CLIENT_INIT = \"ClientInitiated\";\r\nvar ClientStreaming = (function () {\r\n function ClientStreaming(session, repository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.logger = logger;\r\n this.subscriptionsList = {};\r\n this.timedCache = new TimedCache({ ELEMENT_TTL_MS: 10000 });\r\n this.subscriptionIdToLocalKeyMap = {};\r\n this.nextSubLocalKey = 0;\r\n this.handleErrorSubscribing = function (errorResponse) {\r\n var tag = errorResponse._tag;\r\n var subLocalKey = tag.subLocalKey;\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (typeof pendingSub !== \"object\") {\r\n return;\r\n }\r\n pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) {\r\n return server.serverId !== tag.serverId;\r\n });\r\n if (pendingSub.trackedServers.length <= 0) {\r\n clearTimeout(pendingSub.timeoutId);\r\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\r\n var reason = (typeof errorResponse.reason === \"string\" && errorResponse.reason !== \"\") ?\r\n ' Publisher said \"' + errorResponse.reason + '\".' :\r\n \" No reason given.\";\r\n var callArgs = typeof pendingSub.params.arguments === \"object\" ?\r\n JSON.stringify(pendingSub.params.arguments) :\r\n \"{}\";\r\n pendingSub.error({\r\n message: ERR_MSG_SUB_REJECTED + reason + \" Called with:\" + callArgs,\r\n called_with: pendingSub.params.arguments,\r\n method: pendingSub.method,\r\n });\r\n }\r\n else if (pendingSub.status === STATUS_SUBSCRIBED) {\r\n _this.callOnClosedHandlers(pendingSub);\r\n }\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n };\r\n this.handleSubscribed = function (msg) {\r\n var subLocalKey = msg._tag.subLocalKey;\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (typeof pendingSub !== \"object\") {\r\n return;\r\n }\r\n var serverId = msg._tag.serverId;\r\n var acceptingServer = pendingSub.trackedServers\r\n .filter(function (server) {\r\n return server.serverId === serverId;\r\n })[0];\r\n if (typeof acceptingServer !== \"object\") {\r\n return;\r\n }\r\n acceptingServer.subscriptionId = msg.subscription_id;\r\n _this.subscriptionIdToLocalKeyMap[msg.subscription_id] = subLocalKey;\r\n var isFirstResponse = (pendingSub.status === STATUS_AWAITING_ACCEPT);\r\n pendingSub.status = STATUS_SUBSCRIBED;\r\n if (isFirstResponse) {\r\n var reconnect = false;\r\n var sub = pendingSub.subscription;\r\n if (sub) {\r\n sub.setNewSubscription(pendingSub);\r\n pendingSub.success(sub);\r\n reconnect = true;\r\n }\r\n else {\r\n sub = new UserSubscription(_this.repository, pendingSub);\r\n pendingSub.subscription = sub;\r\n pendingSub.success(sub);\r\n }\r\n for (var _i = 0, _a = pendingSub.handlers.onConnected; _i < _a.length; _i++) {\r\n var handler = _a[_i];\r\n try {\r\n handler(sub.serverInstance, reconnect);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n }\r\n };\r\n this.handleEventData = function (msg) {\r\n var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n if (typeof subLocalKey === \"undefined\") {\r\n return;\r\n }\r\n var subscription = _this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n var trackedServersFound = subscription.trackedServers.filter(function (server) {\r\n return server.subscriptionId === msg.subscription_id;\r\n });\r\n if (trackedServersFound.length !== 1) {\r\n return;\r\n }\r\n var isPrivateData = msg.oob;\r\n var sendingServerId = trackedServersFound[0].serverId;\r\n var receivedStreamData = function () {\r\n return {\r\n data: msg.data,\r\n server: _this.repository.getServerById(sendingServerId).instance,\r\n requestArguments: subscription.params.arguments,\r\n message: undefined,\r\n private: isPrivateData,\r\n };\r\n };\r\n var onDataHandlers = subscription.handlers.onData;\r\n var queuedData = subscription.queued.data;\r\n if (onDataHandlers.length > 0) {\r\n onDataHandlers.forEach(function (callback) {\r\n if (typeof callback === \"function\") {\r\n callback(receivedStreamData());\r\n }\r\n });\r\n }\r\n else {\r\n queuedData.push(receivedStreamData());\r\n }\r\n };\r\n this.handleSubscriptionCancelled = function (msg) {\r\n var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n if (typeof subLocalKey === \"undefined\") {\r\n return;\r\n }\r\n var subscription = _this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n var expectedNewLength = subscription.trackedServers.length - 1;\r\n subscription.trackedServers = subscription.trackedServers.filter(function (server) {\r\n if (server.subscriptionId === msg.subscription_id) {\r\n subscription.queued.closers.push(server.serverId);\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n if (subscription.trackedServers.length !== expectedNewLength) {\r\n return;\r\n }\r\n if (subscription.trackedServers.length <= 0) {\r\n _this.timedCache.add(subscription);\r\n clearTimeout(subscription.timeoutId);\r\n _this.callOnClosedHandlers(subscription);\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n delete _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n };\r\n session.on(\"subscribed\", this.handleSubscribed);\r\n session.on(\"event\", this.handleEventData);\r\n session.on(\"subscription-cancelled\", this.handleSubscriptionCancelled);\r\n }\r\n ClientStreaming.prototype.subscribe = function (streamingMethod, params, targetServers, success, error, existingSub) {\r\n var _this = this;\r\n if (targetServers.length === 0) {\r\n error({\r\n method: streamingMethod,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" No available servers matched the target params.\",\r\n });\r\n return;\r\n }\r\n var subLocalKey = this.getNextSubscriptionLocalKey();\r\n var pendingSub = this.registerSubscription(subLocalKey, streamingMethod, params, success, error, params.methodResponseTimeout || 10000, existingSub);\r\n if (typeof pendingSub !== \"object\") {\r\n error({\r\n method: streamingMethod,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" Unable to register the user callbacks.\",\r\n });\r\n return;\r\n }\r\n targetServers.forEach(function (target) {\r\n var serverId = target.server.id;\r\n var method = target.methods.find(function (m) { return m.name === streamingMethod.name; });\r\n if (!method) {\r\n _this.logger.error(\"can not find method \".concat(streamingMethod.name, \" for target \").concat(target.server.id));\r\n return;\r\n }\r\n pendingSub.trackedServers.push({\r\n serverId: serverId,\r\n subscriptionId: undefined,\r\n });\r\n var msg = {\r\n type: \"subscribe\",\r\n server_id: serverId,\r\n method_id: method.gatewayId,\r\n arguments_kv: params.arguments,\r\n };\r\n _this.session.send(msg, { serverId: serverId, subLocalKey: subLocalKey })\r\n .then(function (m) { return _this.handleSubscribed(m); })\r\n .catch(function (err) { return _this.handleErrorSubscribing(err); });\r\n });\r\n };\r\n ClientStreaming.prototype.drainSubscriptions = function () {\r\n var existing = Object.values(this.subscriptionsList);\r\n this.subscriptionsList = {};\r\n this.subscriptionIdToLocalKeyMap = {};\r\n return existing;\r\n };\r\n ClientStreaming.prototype.drainSubscriptionsCache = function () {\r\n return this.timedCache.flush();\r\n };\r\n ClientStreaming.prototype.getNextSubscriptionLocalKey = function () {\r\n var current = this.nextSubLocalKey;\r\n this.nextSubLocalKey += 1;\r\n return current;\r\n };\r\n ClientStreaming.prototype.registerSubscription = function (subLocalKey, method, params, success, error, timeout, existingSub) {\r\n var _this = this;\r\n var subsInfo = {\r\n localKey: subLocalKey,\r\n status: STATUS_AWAITING_ACCEPT,\r\n method: method,\r\n params: params,\r\n success: success,\r\n error: error,\r\n trackedServers: [],\r\n handlers: {\r\n onData: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onData) || [],\r\n onClosed: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onClosed) || [],\r\n onConnected: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onConnected) || [],\r\n },\r\n queued: {\r\n data: [],\r\n closers: [],\r\n },\r\n timeoutId: undefined,\r\n close: function () { return _this.closeSubscription(subLocalKey); },\r\n subscription: existingSub === null || existingSub === void 0 ? void 0 : existingSub.subscription\r\n };\r\n if (!existingSub) {\r\n if (params.onData) {\r\n subsInfo.handlers.onData.push(params.onData);\r\n }\r\n if (params.onClosed) {\r\n subsInfo.handlers.onClosed.push(params.onClosed);\r\n }\r\n if (params.onConnected) {\r\n subsInfo.handlers.onConnected.push(params.onConnected);\r\n }\r\n }\r\n this.subscriptionsList[subLocalKey] = subsInfo;\r\n subsInfo.timeoutId = setTimeout(function () {\r\n if (_this.subscriptionsList[subLocalKey] === undefined) {\r\n return;\r\n }\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\r\n error({\r\n method: method,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" Subscription attempt timed out after \" + timeout + \" ms.\",\r\n });\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n else if (pendingSub.status === STATUS_SUBSCRIBED && pendingSub.trackedServers.length > 0) {\r\n pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) {\r\n return (typeof server.subscriptionId !== \"undefined\");\r\n });\r\n delete pendingSub.timeoutId;\r\n if (pendingSub.trackedServers.length <= 0) {\r\n _this.callOnClosedHandlers(pendingSub);\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n }\r\n }, timeout);\r\n return subsInfo;\r\n };\r\n ClientStreaming.prototype.callOnClosedHandlers = function (subscription, reason) {\r\n var closersCount = subscription.queued.closers.length;\r\n var closingServerId = (closersCount > 0) ? subscription.queued.closers[closersCount - 1] : null;\r\n var closingServer;\r\n if (closingServerId !== undefined && typeof closingServerId === \"string\") {\r\n closingServer = this.repository.getServerById(closingServerId).instance;\r\n }\r\n subscription.handlers.onClosed.forEach(function (callback) {\r\n if (typeof callback !== \"function\") {\r\n return;\r\n }\r\n callback({\r\n message: reason || ON_CLOSE_MSG_SERVER_INIT,\r\n requestArguments: subscription.params.arguments || {},\r\n server: closingServer,\r\n stream: subscription.method,\r\n });\r\n });\r\n };\r\n ClientStreaming.prototype.closeSubscription = function (subLocalKey) {\r\n var _this = this;\r\n var subscription = this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n subscription.trackedServers.forEach(function (server) {\r\n if (typeof server.subscriptionId === \"undefined\") {\r\n return;\r\n }\r\n subscription.queued.closers.push(server.serverId);\r\n _this.session.sendFireAndForget({\r\n type: \"unsubscribe\",\r\n subscription_id: server.subscriptionId,\r\n reason_uri: \"\",\r\n reason: ON_CLOSE_MSG_CLIENT_INIT,\r\n });\r\n delete _this.subscriptionIdToLocalKeyMap[server.subscriptionId];\r\n });\r\n subscription.trackedServers = [];\r\n this.callOnClosedHandlers(subscription, ON_CLOSE_MSG_CLIENT_INIT);\r\n delete this.subscriptionsList[subLocalKey];\r\n };\r\n return ClientStreaming;\r\n}());\n\nvar ClientProtocol = (function () {\r\n function ClientProtocol(session, repository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.logger = logger;\r\n session.on(\"peer-added\", function (msg) { return _this.handlePeerAdded(msg); });\r\n session.on(\"peer-removed\", function (msg) { return _this.handlePeerRemoved(msg); });\r\n session.on(\"methods-added\", function (msg) { return _this.handleMethodsAddedMessage(msg); });\r\n session.on(\"methods-removed\", function (msg) { return _this.handleMethodsRemovedMessage(msg); });\r\n this.streaming = new ClientStreaming(session, repository, logger);\r\n }\r\n ClientProtocol.prototype.subscribe = function (stream, options, targetServers, success, error, existingSub) {\r\n this.streaming.subscribe(stream, options, targetServers, success, error, existingSub);\r\n };\r\n ClientProtocol.prototype.invoke = function (id, method, args, target) {\r\n var _this = this;\r\n var serverId = target.id;\r\n var methodId = method.gatewayId;\r\n var msg = {\r\n type: \"call\",\r\n server_id: serverId,\r\n method_id: methodId,\r\n arguments_kv: args,\r\n };\r\n return this.session.send(msg, { invocationId: id, serverId: serverId })\r\n .then(function (m) { return _this.handleResultMessage(m); })\r\n .catch(function (err) { return _this.handleInvocationError(err); });\r\n };\r\n ClientProtocol.prototype.drainSubscriptions = function () {\r\n return this.streaming.drainSubscriptions();\r\n };\r\n ClientProtocol.prototype.drainSubscriptionsCache = function () {\r\n return this.streaming.drainSubscriptionsCache();\r\n };\r\n ClientProtocol.prototype.handlePeerAdded = function (msg) {\r\n var newPeerId = msg.new_peer_id;\r\n var remoteId = msg.identity;\r\n var isLocal = msg.meta ? msg.meta.local : true;\r\n var pid = Number(remoteId.process);\r\n var serverInfo = {\r\n machine: remoteId.machine,\r\n pid: isNaN(pid) ? remoteId.process : pid,\r\n instance: remoteId.instance,\r\n application: remoteId.application,\r\n applicationName: remoteId.applicationName,\r\n environment: remoteId.environment,\r\n region: remoteId.region,\r\n user: remoteId.user,\r\n windowId: remoteId.windowId,\r\n peerId: newPeerId,\r\n api: remoteId.api,\r\n isLocal: isLocal\r\n };\r\n this.repository.addServer(serverInfo, newPeerId);\r\n };\r\n ClientProtocol.prototype.handlePeerRemoved = function (msg) {\r\n var removedPeerId = msg.removed_id;\r\n var reason = msg.reason;\r\n this.repository.removeServerById(removedPeerId, reason);\r\n };\r\n ClientProtocol.prototype.handleMethodsAddedMessage = function (msg) {\r\n var _this = this;\r\n var serverId = msg.server_id;\r\n var methods = msg.methods;\r\n methods.forEach(function (method) {\r\n _this.repository.addServerMethod(serverId, method);\r\n });\r\n };\r\n ClientProtocol.prototype.handleMethodsRemovedMessage = function (msg) {\r\n var _this = this;\r\n var serverId = msg.server_id;\r\n var methodIdList = msg.methods;\r\n var server = this.repository.getServerById(serverId);\r\n var serverMethodKeys = Object.keys(server.methods);\r\n serverMethodKeys.forEach(function (methodKey) {\r\n var method = server.methods[methodKey];\r\n if (methodIdList.indexOf(method.gatewayId) > -1) {\r\n _this.repository.removeServerMethod(serverId, methodKey);\r\n }\r\n });\r\n };\r\n ClientProtocol.prototype.handleResultMessage = function (msg) {\r\n var invocationId = msg._tag.invocationId;\r\n var result = msg.result;\r\n var serverId = msg._tag.serverId;\r\n var server = this.repository.getServerById(serverId);\r\n return {\r\n invocationId: invocationId,\r\n result: result,\r\n instance: server.instance,\r\n status: InvokeStatus.Success,\r\n message: \"\"\r\n };\r\n };\r\n ClientProtocol.prototype.handleInvocationError = function (msg) {\r\n this.logger.debug(\"handle invocation error \".concat(JSON.stringify(msg)));\r\n if (\"_tag\" in msg) {\r\n var invocationId = msg._tag.invocationId;\r\n var serverId = msg._tag.serverId;\r\n var server = this.repository.getServerById(serverId);\r\n var message = msg.reason;\r\n var context_1 = msg.context;\r\n return {\r\n invocationId: invocationId,\r\n result: context_1,\r\n instance: server.instance,\r\n status: InvokeStatus.Error,\r\n message: message\r\n };\r\n }\r\n else {\r\n return {\r\n invocationId: \"\",\r\n message: msg.message,\r\n status: InvokeStatus.Error,\r\n error: msg\r\n };\r\n }\r\n };\r\n return ClientProtocol;\r\n}());\n\nfunction gW3ProtocolFactory (instance, connection, clientRepository, serverRepository, libConfig, interop) {\r\n var logger = libConfig.logger.subLogger(\"gw3-protocol\");\r\n var resolveReadyPromise;\r\n var readyPromise = new Promise(function (resolve) {\r\n resolveReadyPromise = resolve;\r\n });\r\n var session = connection.domain(\"agm\", [\"subscribed\"]);\r\n var server = new ServerProtocol(session, clientRepository, serverRepository, logger.subLogger(\"server\"));\r\n var client = new ClientProtocol(session, clientRepository, logger.subLogger(\"client\"));\r\n function handleReconnect() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reconnectionPromises, existingSubscriptions, _loop_1, _i, existingSubscriptions_1, sub, registeredMethods, _loop_2, _a, registeredMethods_1, method;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n logger.info(\"reconnected - will replay registered methods and subscriptions\");\r\n client.drainSubscriptionsCache().forEach(function (sub) {\r\n var methodInfo = sub.method;\r\n var params = Object.assign({}, sub.params);\r\n logger.info(\"trying to soft-re-subscribe to method \".concat(methodInfo.name, \", with params: \").concat(JSON.stringify(params)));\r\n interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info(\"soft-subscribing to method \".concat(methodInfo.name, \" DONE\")); }).catch(function (error) { return logger.warn(\"subscribing to method \".concat(methodInfo.name, \" failed: \").concat(JSON.stringify(error), \"}\")); });\r\n });\r\n reconnectionPromises = [];\r\n existingSubscriptions = client.drainSubscriptions();\r\n _loop_1 = function (sub) {\r\n var methodInfo = sub.method;\r\n var params = Object.assign({}, sub.params);\r\n logger.info(\"trying to re-subscribe to method \".concat(methodInfo.name, \", with params: \").concat(JSON.stringify(params)));\r\n reconnectionPromises.push(interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info(\"subscribing to method \".concat(methodInfo.name, \" DONE\")); }));\r\n };\r\n for (_i = 0, existingSubscriptions_1 = existingSubscriptions; _i < existingSubscriptions_1.length; _i++) {\r\n sub = existingSubscriptions_1[_i];\r\n _loop_1(sub);\r\n }\r\n registeredMethods = serverRepository.getList();\r\n serverRepository.reset();\r\n _loop_2 = function (method) {\r\n var def = method.definition;\r\n logger.info(\"re-publishing method \".concat(def.name));\r\n if (method.stream) {\r\n reconnectionPromises.push(interop.server.createStream(def, method.streamCallbacks, undefined, undefined, method.stream).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n else if (method.theFunction && method.theFunction.userCallback) {\r\n reconnectionPromises.push(interop.register(def, method.theFunction.userCallback).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n else if (method.theFunction && method.theFunction.userCallbackAsync) {\r\n reconnectionPromises.push(interop.registerAsync(def, method.theFunction.userCallbackAsync).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n logger.info(\"re-publishing method \".concat(def.name, \" DONE\"));\r\n };\r\n for (_a = 0, registeredMethods_1 = registeredMethods; _a < registeredMethods_1.length; _a++) {\r\n method = registeredMethods_1[_a];\r\n _loop_2(method);\r\n }\r\n return [4, Promise.all(reconnectionPromises)];\r\n case 1:\r\n _b.sent();\r\n logger.info(\"Interop is re-announced\");\r\n return [2];\r\n }\r\n });\r\n });\r\n }\r\n function handleInitialJoin() {\r\n if (resolveReadyPromise) {\r\n resolveReadyPromise({\r\n client: client,\r\n server: server,\r\n });\r\n resolveReadyPromise = undefined;\r\n }\r\n }\r\n session.onJoined(function (reconnect) {\r\n clientRepository.addServer(instance, connection.peerId);\r\n if (reconnect) {\r\n handleReconnect().then(function () { return connection.setLibReAnnounced({ name: \"interop\" }); }).catch(function (error) { return logger.warn(\"Error while re-announcing interop: \".concat(JSON.stringify(error))); });\r\n }\r\n else {\r\n handleInitialJoin();\r\n }\r\n });\r\n session.onLeft(function () {\r\n clientRepository.reset();\r\n });\r\n session.join();\r\n return readyPromise;\r\n}\n\nvar Interop = (function () {\r\n function Interop(configuration) {\r\n var _this = this;\r\n if (typeof configuration === \"undefined\") {\r\n throw new Error(\"configuration is required\");\r\n }\r\n if (typeof configuration.connection === \"undefined\") {\r\n throw new Error(\"configuration.connections is required\");\r\n }\r\n var connection = configuration.connection;\r\n if (typeof configuration.methodResponseTimeout !== \"number\") {\r\n configuration.methodResponseTimeout = 30 * 1000;\r\n }\r\n if (typeof configuration.waitTimeoutMs !== \"number\") {\r\n configuration.waitTimeoutMs = 30 * 1000;\r\n }\r\n this.unwrappedInstance = new InstanceWrapper(this, undefined, connection);\r\n this.instance = this.unwrappedInstance.unwrap();\r\n this.clientRepository = new ClientRepository(configuration.logger.subLogger(\"cRep\"), this);\r\n this.serverRepository = new ServerRepository();\r\n var protocolPromise;\r\n if (connection.protocolVersion === 3) {\r\n protocolPromise = gW3ProtocolFactory(this.instance, connection, this.clientRepository, this.serverRepository, configuration, this);\r\n }\r\n else {\r\n throw new Error(\"protocol \".concat(connection.protocolVersion, \" not supported\"));\r\n }\r\n this.readyPromise = protocolPromise.then(function (protocol) {\r\n _this.protocol = protocol;\r\n _this.client = new Client(_this.protocol, _this.clientRepository, _this.instance, configuration);\r\n _this.server = new Server(_this.protocol, _this.serverRepository);\r\n return _this;\r\n });\r\n }\r\n Interop.prototype.ready = function () {\r\n return this.readyPromise;\r\n };\r\n Interop.prototype.serverRemoved = function (callback) {\r\n return this.client.serverRemoved(callback);\r\n };\r\n Interop.prototype.serverAdded = function (callback) {\r\n return this.client.serverAdded(callback);\r\n };\r\n Interop.prototype.serverMethodRemoved = function (callback) {\r\n return this.client.serverMethodRemoved(callback);\r\n };\r\n Interop.prototype.serverMethodAdded = function (callback) {\r\n return this.client.serverMethodAdded(callback);\r\n };\r\n Interop.prototype.methodRemoved = function (callback) {\r\n return this.client.methodRemoved(callback);\r\n };\r\n Interop.prototype.methodAdded = function (callback) {\r\n return this.client.methodAdded(callback);\r\n };\r\n Interop.prototype.methodsForInstance = function (instance) {\r\n return this.client.methodsForInstance(instance);\r\n };\r\n Interop.prototype.methods = function (methodFilter) {\r\n return this.client.methods(methodFilter);\r\n };\r\n Interop.prototype.servers = function (methodFilter) {\r\n return this.client.servers(methodFilter);\r\n };\r\n Interop.prototype.subscribe = function (method, options, successCallback, errorCallback) {\r\n return this.client.subscribe(method, options, successCallback, errorCallback);\r\n };\r\n Interop.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback) {\r\n return this.server.createStream(streamDef, callbacks, successCallback, errorCallback);\r\n };\r\n Interop.prototype.unregister = function (methodFilter) {\r\n return this.server.unregister(methodFilter);\r\n };\r\n Interop.prototype.registerAsync = function (methodDefinition, callback) {\r\n return this.server.registerAsync(methodDefinition, callback);\r\n };\r\n Interop.prototype.register = function (methodDefinition, callback) {\r\n return this.server.register(methodDefinition, callback);\r\n };\r\n Interop.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) {\r\n return this.client.invoke(methodFilter, argumentObj, target, additionalOptions, success, error);\r\n };\r\n Interop.prototype.waitForMethod = function (name) {\r\n var pw = new PromiseWrapper();\r\n var unsubscribe = this.client.methodAdded(function (m) {\r\n if (m.name === name) {\r\n unsubscribe();\r\n pw.resolve(m);\r\n }\r\n });\r\n return pw.promise;\r\n };\r\n return Interop;\r\n}());\n\nvar successMessages = [\"subscribed\", \"success\"];\r\nvar MessageBus = (function () {\r\n function MessageBus(connection, logger) {\r\n var _this = this;\r\n this.publish = function (topic, data, options) {\r\n var _a = options || {}, routingKey = _a.routingKey, target = _a.target;\r\n var args = _this.removeEmptyValues({\r\n type: \"publish\",\r\n topic: topic,\r\n data: data,\r\n peer_id: _this.peerId,\r\n routing_key: routingKey,\r\n target_identity: target\r\n });\r\n _this.session.send(args);\r\n };\r\n this.subscribe = function (topic, callback, options) {\r\n return new Promise(function (resolve, reject) {\r\n var _a = options || {}, routingKey = _a.routingKey, target = _a.target;\r\n var args = _this.removeEmptyValues({\r\n type: \"subscribe\",\r\n topic: topic,\r\n peer_id: _this.peerId,\r\n routing_key: routingKey,\r\n source: target\r\n });\r\n _this.session.send(args)\r\n .then(function (response) {\r\n var subscription_id = response.subscription_id;\r\n _this.subscriptions.push({ subscription_id: subscription_id, topic: topic, callback: callback, source: target });\r\n resolve({\r\n unsubscribe: function () {\r\n _this.session.send({ type: \"unsubscribe\", subscription_id: subscription_id, peer_id: _this.peerId });\r\n _this.subscriptions = _this.subscriptions.filter(function (s) { return s.subscription_id !== subscription_id; });\r\n return Promise.resolve();\r\n }\r\n });\r\n })\r\n .catch(function (error) { return reject(error); });\r\n });\r\n };\r\n this.watchOnEvent = function () {\r\n _this.session.on(\"event\", function (args) {\r\n var data = args.data, subscription_id = args.subscription_id;\r\n var source = args[\"publisher-identity\"];\r\n var subscription = _this.subscriptions.find(function (s) { return s.subscription_id === subscription_id; });\r\n if (subscription) {\r\n if (!subscription.source) {\r\n subscription.callback(data, subscription.topic, source);\r\n }\r\n else {\r\n if (_this.keysMatch(subscription.source, source)) {\r\n subscription.callback(data, subscription.topic, source);\r\n }\r\n }\r\n }\r\n });\r\n };\r\n this.connection = connection;\r\n this.logger = logger;\r\n this.peerId = connection.peerId;\r\n this.subscriptions = [];\r\n this.session = connection.domain(\"bus\", successMessages);\r\n this.readyPromise = this.session.join();\r\n this.readyPromise.then(function () {\r\n _this.watchOnEvent();\r\n });\r\n }\r\n MessageBus.prototype.ready = function () {\r\n return this.readyPromise;\r\n };\r\n MessageBus.prototype.removeEmptyValues = function (obj) {\r\n var cleaned = {};\r\n Object.keys(obj).forEach(function (key) {\r\n if (obj[key] !== undefined && obj[key] !== null) {\r\n cleaned[key] = obj[key];\r\n }\r\n });\r\n return cleaned;\r\n };\r\n MessageBus.prototype.keysMatch = function (obj1, obj2) {\r\n var keysObj1 = Object.keys(obj1);\r\n var allMatch = true;\r\n keysObj1.forEach(function (key) {\r\n if (obj1[key] !== obj2[key]) {\r\n allMatch = false;\r\n }\r\n });\r\n return allMatch;\r\n };\r\n return MessageBus;\r\n}());\n\nvar IOConnectCoreFactory = function (userConfig, ext) {\r\n var _a, _b;\r\n var iodesktop = typeof window === \"object\" ? ((_a = window.iodesktop) !== null && _a !== void 0 ? _a : window.glue42gd) : undefined;\r\n var preloadPromise = typeof window === \"object\" ? ((_b = window.gdPreloadPromise) !== null && _b !== void 0 ? _b : Promise.resolve()) : Promise.resolve();\r\n var glueInitTimer = timer(\"glue\");\r\n userConfig = userConfig || {};\r\n ext = ext || {};\r\n var internalConfig = prepareConfig(userConfig, ext, iodesktop);\r\n var _connection;\r\n var _interop;\r\n var _logger;\r\n var _metrics;\r\n var _contexts;\r\n var _bus;\r\n var _allowTrace;\r\n var libs = {};\r\n function registerLib(name, inner, t) {\r\n _allowTrace = _logger.canPublish(\"trace\");\r\n if (_allowTrace) {\r\n _logger.trace(\"registering \".concat(name, \" module\"));\r\n }\r\n var done = function () {\r\n inner.initTime = t.stop();\r\n inner.initEndTime = t.endTime;\r\n inner.marks = t.marks;\r\n if (_allowTrace) {\r\n _logger.trace(\"\".concat(name, \" is ready - \").concat(t.endTime - t.startTime));\r\n }\r\n };\r\n inner.initStartTime = t.startTime;\r\n if (inner.ready) {\r\n inner.ready().then(function () {\r\n done();\r\n });\r\n }\r\n else {\r\n done();\r\n }\r\n if (!Array.isArray(name)) {\r\n name = [name];\r\n }\r\n name.forEach(function (n) {\r\n libs[n] = inner;\r\n IOConnectCoreFactory[n] = inner;\r\n });\r\n }\r\n function setupConnection() {\r\n var initTimer = timer(\"connection\");\r\n _connection = new Connection(internalConfig.connection, _logger.subLogger(\"connection\"));\r\n var authPromise = Promise.resolve(internalConfig.auth);\r\n if (internalConfig.connection && !internalConfig.auth) {\r\n if (iodesktop) {\r\n authPromise = iodesktop.getGWToken()\r\n .then(function (token) {\r\n return {\r\n gatewayToken: token\r\n };\r\n });\r\n }\r\n else if (typeof window !== \"undefined\" && (window === null || window === void 0 ? void 0 : window.glue42electron)) {\r\n if (typeof window.glue42electron.gwToken === \"string\") {\r\n authPromise = Promise.resolve({\r\n gatewayToken: window.glue42electron.gwToken\r\n });\r\n }\r\n }\r\n else {\r\n authPromise = Promise.reject(\"You need to provide auth information\");\r\n }\r\n }\r\n return authPromise\r\n .then(function (authConfig) {\r\n initTimer.mark(\"auth-promise-resolved\");\r\n var authRequest;\r\n if (Object.prototype.toString.call(authConfig) === \"[object Object]\") {\r\n authRequest = authConfig;\r\n }\r\n else {\r\n throw new Error(\"Invalid auth object - \" + JSON.stringify(authConfig));\r\n }\r\n return _connection.login(authRequest);\r\n })\r\n .then(function () {\r\n registerLib(\"connection\", _connection, initTimer);\r\n return internalConfig;\r\n })\r\n .catch(function (e) {\r\n if (_connection) {\r\n _connection.logout();\r\n }\r\n throw e;\r\n });\r\n }\r\n function setupLogger() {\r\n var _a;\r\n var initTimer = timer(\"logger\");\r\n _logger = new Logger(\"\".concat((_a = internalConfig.connection.identity) === null || _a === void 0 ? void 0 : _a.application), undefined, internalConfig.customLogger);\r\n _logger.consoleLevel(internalConfig.logger.console);\r\n _logger.publishLevel(internalConfig.logger.publish);\r\n if (_logger.canPublish(\"debug\")) {\r\n _logger.debug(\"initializing glue...\");\r\n }\r\n registerLib(\"logger\", _logger, initTimer);\r\n return Promise.resolve(undefined);\r\n }\r\n function setupMetrics() {\r\n var _a, _b, _c, _d, _e;\r\n var initTimer = timer(\"metrics\");\r\n var config = internalConfig.metrics;\r\n var metricsPublishingEnabledFunc = iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.getMetricsPublishingEnabled;\r\n var identity = internalConfig.connection.identity;\r\n var canUpdateMetric = metricsPublishingEnabledFunc ? metricsPublishingEnabledFunc : function () { return true; };\r\n var disableAutoAppSystem = (_a = (typeof config !== \"boolean\" && config.disableAutoAppSystem)) !== null && _a !== void 0 ? _a : false;\r\n _metrics = metrics({\r\n connection: config ? _connection : undefined,\r\n logger: _logger.subLogger(\"metrics\"),\r\n canUpdateMetric: canUpdateMetric,\r\n system: \"Glue42\",\r\n service: (_c = (_b = identity === null || identity === void 0 ? void 0 : identity.service) !== null && _b !== void 0 ? _b : iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.applicationName) !== null && _c !== void 0 ? _c : internalConfig.application,\r\n instance: (_e = (_d = identity === null || identity === void 0 ? void 0 : identity.instance) !== null && _d !== void 0 ? _d : identity === null || identity === void 0 ? void 0 : identity.windowId) !== null && _e !== void 0 ? _e : shortid(),\r\n disableAutoAppSystem: disableAutoAppSystem,\r\n pagePerformanceMetrics: typeof config !== \"boolean\" ? config === null || config === void 0 ? void 0 : config.pagePerformanceMetrics : undefined\r\n });\r\n registerLib(\"metrics\", _metrics, initTimer);\r\n return Promise.resolve();\r\n }\r\n function setupInterop() {\r\n var initTimer = timer(\"interop\");\r\n var agmConfig = {\r\n connection: _connection,\r\n logger: _logger.subLogger(\"interop\"),\r\n };\r\n _interop = new Interop(agmConfig);\r\n Logger.Interop = _interop;\r\n registerLib([\"interop\", \"agm\"], _interop, initTimer);\r\n return Promise.resolve();\r\n }\r\n function setupContexts() {\r\n var hasActivities = (internalConfig.activities && _connection.protocolVersion === 3);\r\n var needsContexts = internalConfig.contexts || hasActivities;\r\n if (needsContexts) {\r\n var initTimer = timer(\"contexts\");\r\n _contexts = new ContextsModule({\r\n connection: _connection,\r\n logger: _logger.subLogger(\"contexts\"),\r\n trackAllContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.trackAllContexts : false,\r\n reAnnounceKnownContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.reAnnounceKnownContexts : false\r\n });\r\n registerLib(\"contexts\", _contexts, initTimer);\r\n return _contexts;\r\n }\r\n else {\r\n var replayer = _connection.replayer;\r\n if (replayer) {\r\n replayer.drain(ContextMessageReplaySpec.name);\r\n }\r\n }\r\n }\r\n function setupBus() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var initTimer;\r\n return __generator(this, function (_a) {\r\n if (!internalConfig.bus) {\r\n return [2, Promise.resolve()];\r\n }\r\n initTimer = timer(\"bus\");\r\n _bus = new MessageBus(_connection, _logger.subLogger(\"bus\"));\r\n registerLib(\"bus\", _bus, initTimer);\r\n return [2, Promise.resolve()];\r\n });\r\n });\r\n }\r\n function setupExternalLibs(externalLibs) {\r\n try {\r\n externalLibs.forEach(function (lib) {\r\n setupExternalLib(lib.name, lib.create);\r\n });\r\n return Promise.resolve();\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n function setupExternalLib(name, createCallback) {\r\n var initTimer = timer(name);\r\n var lib = createCallback(libs);\r\n if (lib) {\r\n registerLib(name, lib, initTimer);\r\n }\r\n }\r\n function waitForLibs() {\r\n var libsReadyPromises = Object.keys(libs).map(function (key) {\r\n var lib = libs[key];\r\n return lib.ready ?\r\n lib.ready() : Promise.resolve();\r\n });\r\n return Promise.all(libsReadyPromises);\r\n }\r\n function constructGlueObject() {\r\n var feedbackFunc = function (feedbackInfo) {\r\n if (!_interop) {\r\n return;\r\n }\r\n _interop.invoke(\"T42.ACS.Feedback\", feedbackInfo, \"best\");\r\n };\r\n var info = {\r\n coreVersion: version,\r\n version: internalConfig.version\r\n };\r\n glueInitTimer.stop();\r\n var glue = {\r\n feedback: feedbackFunc,\r\n info: info,\r\n logger: _logger,\r\n interop: _interop,\r\n agm: _interop,\r\n connection: _connection,\r\n metrics: _metrics,\r\n contexts: _contexts,\r\n bus: _bus,\r\n version: internalConfig.version,\r\n userConfig: userConfig,\r\n done: function () {\r\n _logger === null || _logger === void 0 ? void 0 : _logger.info(\"done called by user...\");\r\n return _connection.logout();\r\n }\r\n };\r\n glue.performance = {\r\n get glueVer() {\r\n return internalConfig.version;\r\n },\r\n get glueConfig() {\r\n return JSON.stringify(userConfig);\r\n },\r\n get browser() {\r\n return window.performance.timing.toJSON();\r\n },\r\n get memory() {\r\n return window.performance.memory;\r\n },\r\n get initTimes() {\r\n var all = getAllTimers();\r\n return Object.keys(all).map(function (key) {\r\n var t = all[key];\r\n return {\r\n name: key,\r\n duration: t.endTime - t.startTime,\r\n marks: t.marks,\r\n startTime: t.startTime,\r\n endTime: t.endTime\r\n };\r\n });\r\n }\r\n };\r\n Object.keys(libs).forEach(function (key) {\r\n var lib = libs[key];\r\n glue[key] = lib;\r\n });\r\n glue.config = {};\r\n Object.keys(internalConfig).forEach(function (k) {\r\n glue.config[k] = internalConfig[k];\r\n });\r\n if (ext && ext.extOptions) {\r\n Object.keys(ext.extOptions).forEach(function (k) {\r\n glue.config[k] = ext === null || ext === void 0 ? void 0 : ext.extOptions[k];\r\n });\r\n }\r\n if (ext === null || ext === void 0 ? void 0 : ext.enrichGlue) {\r\n ext.enrichGlue(glue);\r\n }\r\n if (iodesktop && iodesktop.updatePerfData) {\r\n iodesktop.updatePerfData(glue.performance);\r\n }\r\n if (glue.agm) {\r\n var deprecatedDecorator = function (fn, wrong, proper) {\r\n return function () {\r\n glue.logger.warn(\"glue.js - 'glue.agm.\".concat(wrong, \"' method is deprecated, use 'glue.interop.\").concat(proper, \"' instead.\"));\r\n return fn.apply(glue.agm, arguments);\r\n };\r\n };\r\n var agmAny = glue.agm;\r\n agmAny.method_added = deprecatedDecorator(glue.agm.methodAdded, \"method_added\", \"methodAdded\");\r\n agmAny.method_removed = deprecatedDecorator(glue.agm.methodRemoved, \"method_removed\", \"methodRemoved\");\r\n agmAny.server_added = deprecatedDecorator(glue.agm.serverAdded, \"server_added\", \"serverAdded\");\r\n agmAny.server_method_aded = deprecatedDecorator(glue.agm.serverMethodAdded, \"server_method_aded\", \"serverMethodAdded\");\r\n agmAny.server_method_removed = deprecatedDecorator(glue.agm.serverMethodRemoved, \"server_method_removed\", \"serverMethodRemoved\");\r\n }\r\n return glue;\r\n }\r\n function registerInstanceIfNeeded() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var RegisterInstanceMethodName, isMethodAvailable, error_1, typedError;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n RegisterInstanceMethodName = \"T42.ACS.RegisterInstance\";\r\n if (!(Utils.isNode() && typeof process.env._GD_STARTING_CONTEXT_ === \"undefined\" && typeof (userConfig === null || userConfig === void 0 ? void 0 : userConfig.application) !== \"undefined\")) return [3, 4];\r\n isMethodAvailable = _interop.methods({ name: RegisterInstanceMethodName }).length > 0;\r\n if (!isMethodAvailable) return [3, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4, _interop.invoke(RegisterInstanceMethodName, { appName: userConfig === null || userConfig === void 0 ? void 0 : userConfig.application, pid: process.pid })];\r\n case 2:\r\n _a.sent();\r\n return [3, 4];\r\n case 3:\r\n error_1 = _a.sent();\r\n typedError = error_1;\r\n _logger.error(\"Cannot register as an instance: \".concat(JSON.stringify(typedError.message)));\r\n return [3, 4];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n }\r\n return preloadPromise\r\n .then(setupLogger)\r\n .then(setupConnection)\r\n .then(function () { return Promise.all([setupMetrics(), setupInterop(), setupContexts(), setupBus()]); })\r\n .then(function () { return _interop.readyPromise; })\r\n .then(function () { return registerInstanceIfNeeded(); })\r\n .then(function () {\r\n return setupExternalLibs(internalConfig.libs || []);\r\n })\r\n .then(waitForLibs)\r\n .then(constructGlueObject)\r\n .catch(function (err) {\r\n return Promise.reject({\r\n err: err,\r\n libs: libs\r\n });\r\n });\r\n};\r\nif (typeof window !== \"undefined\") {\r\n window.IOConnectCore = IOConnectCoreFactory;\r\n}\r\nIOConnectCoreFactory.version = version;\r\nIOConnectCoreFactory.default = IOConnectCoreFactory;\n\nconst iOConnectBrowserFactory = createFactoryFunction(IOConnectCoreFactory);\r\nif (typeof window !== \"undefined\") {\r\n const windowAny = window;\r\n windowAny.IOBrowser = iOConnectBrowserFactory;\r\n delete windowAny.GlueCore;\r\n delete windowAny.IOConnectCore;\r\n}\r\nconst legacyGlobal = window.glue42gd || window.glue42core;\r\nconst ioGlobal = window.iodesktop || window.iobrowser;\r\nif (!legacyGlobal && !ioGlobal) {\r\n window.iobrowser = { webStarted: false };\r\n}\r\niOConnectBrowserFactory.version = version$2;\n\nexport { iOConnectBrowserFactory as default };\n//# sourceMappingURL=browser.es.js.map\n",null,null,null,null,"\"use strict\";\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\n;\ncreateRegistry.default = createRegistry;\nmodule.exports = createRegistry;\n//# sourceMappingURL=index.js.map","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","// Axios v1.6.3 Copyright (c) 2023 Matt Zabriskie and contributors\n'use strict';\n\nfunction bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n};\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n};\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n};\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz';\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n};\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0];\n }\n\n return str;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nvar utils$1 = {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils$1.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils$1.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype$1 = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype$1, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype$1);\n\n utils$1.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\n// eslint-disable-next-line strict\nvar httpAdapter = null;\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils$1.isPlainObject(thing) || utils$1.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils$1.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils$1.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils$1.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils$1.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);\n\n if (!utils$1.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils$1.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils$1.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils$1.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils$1.isArray(value) && isFlatArray(value)) ||\n ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils$1.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils$1.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils$1.forEach(value, function each(el, key) {\n const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils$1.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode$1(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode$1);\n } : encode$1;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nfunction buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils$1.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils$1.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nvar InterceptorManager$1 = InterceptorManager;\n\nvar transitionalDefaults = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n\nvar URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n\nvar FormData$1 = typeof FormData !== 'undefined' ? FormData : null;\n\nvar Blob$1 = typeof Blob !== 'undefined' ? Blob : null;\n\nvar platform$1 = {\n isBrowser: true,\n classes: {\n URLSearchParams: URLSearchParams$1,\n FormData: FormData$1,\n Blob: Blob$1\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n\nconst hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nvar utils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n hasBrowserEnv: hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv: hasStandardBrowserEnv\n});\n\nvar platform = {\n ...utils,\n ...platform$1\n};\n\nfunction toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils$1.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils$1.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils$1.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils$1.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils$1.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils$1.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {\n const obj = {};\n\n utils$1.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils$1.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils$1.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils$1.isObject(data);\n\n if (isObjectPayload && utils$1.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils$1.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils$1.isArrayBuffer(data) ||\n utils$1.isBuffer(data) ||\n utils$1.isStream(data) ||\n utils$1.isFile(data) ||\n utils$1.isBlob(data)\n ) {\n return data;\n }\n if (utils$1.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils$1.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nvar defaults$1 = defaults;\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils$1.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nvar parseHeaders = rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils$1.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils$1.isString(value)) return;\n\n if (utils$1.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils$1.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils$1.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils$1.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils$1.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils$1.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils$1.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils$1.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils$1.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils$1.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils$1.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils$1.forEach(this, (value, header) => {\n const key = utils$1.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils$1.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils$1.freezeMethods(AxiosHeaders);\n\nvar AxiosHeaders$1 = AxiosHeaders;\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nfunction transformData(fns, response) {\n const config = this || defaults$1;\n const context = response || config;\n const headers = AxiosHeaders$1.from(context.headers);\n let data = context.data;\n\n utils$1.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n\nfunction isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils$1.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nfunction settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n\nvar cookies = platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils$1.isString(path) && cookie.push('path=' + path);\n\n utils$1.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nfunction isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nfunction combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nfunction buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n\nvar isURLSameOrigin = platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n\nfunction parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nvar xhrAdapter = isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders$1.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils$1.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders$1.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils$1.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n};\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n};\n\nutils$1.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;\n\nvar adapters = {\n getAdapter: (adapters) => {\n adapters = utils$1.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n};\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nfunction dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders$1.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders$1.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders$1.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nfunction mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {\n return utils$1.merge.call({caseless}, target, source);\n } else if (utils$1.isPlainObject(source)) {\n return utils$1.merge({}, source);\n } else if (utils$1.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils$1.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils$1.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n\nconst VERSION = \"1.6.3\";\n\nconst validators$1 = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators$1[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators$1.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nvar validator = {\n assertOptions,\n validators: validators$1\n};\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager$1(),\n response: new InterceptorManager$1()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils$1.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n };\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils$1.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils$1.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders$1.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nvar Axios$1 = Axios;\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nvar CancelToken$1 = CancelToken;\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nfunction spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nfunction isAxiosError(payload) {\n return utils$1.isObject(payload) && (payload.isAxiosError === true);\n}\n\nconst HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nvar HttpStatusCode$1 = HttpStatusCode;\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios$1(defaultConfig);\n const instance = bind(Axios$1.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils$1.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults$1);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios$1;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken$1;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders$1;\n\naxios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode$1;\n\naxios.default = axios;\n\nmodule.exports = axios;\n//# sourceMappingURL=axios.cjs.map\n","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BaseAPI = void 0;\r\nconst axios_1 = __importDefault(require(\"axios\"));\r\nclass BaseAPI {\r\n constructor(options) {\r\n this.options = options;\r\n this.setOptions(options);\r\n }\r\n setOptions(options) {\r\n var _a, _b;\r\n this.options = options;\r\n if (!options.auth) {\r\n throw new Error(\"please provide auth info\");\r\n }\r\n this.eject(this.currentInterceptorsId, this.axiosInstance);\r\n const headers = this.getHeaders(options);\r\n this.axiosInstance = axios_1.default.create({\r\n transformResponse: options.transformResponse,\r\n baseURL: options.baseUrl,\r\n headers,\r\n auth: ((_a = options.auth) === null || _a === void 0 ? void 0 : _a.basic) ? options.auth.basic : undefined,\r\n withCredentials: (_b = options === null || options === void 0 ? void 0 : options.auth) === null || _b === void 0 ? void 0 : _b.includeCredentials\r\n });\r\n this.currentInterceptorsId = this.intercept(this.axiosInstance);\r\n }\r\n whoAmI() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.axiosInstance.get(`/whoami`);\r\n return result.data;\r\n });\r\n }\r\n onResponseSuccessCallback(callback) {\r\n this.responseSuccessCallback = callback;\r\n }\r\n onResponseErrorCallback(callback) {\r\n this.responseErrorCallback = callback;\r\n }\r\n unloadClient(session, tokenString) {\r\n var _a;\r\n if (!session || !tokenString) {\r\n return;\r\n }\r\n const authorizationValue = this.options.auth.basic ?\r\n `Basic ${window.btoa(this.options.auth.basic.username + \":\" + this.options.auth.basic.password)}` :\r\n `Bearer ${(_a = this.options.auth.token) === null || _a === void 0 ? void 0 : _a.bearer}`;\r\n const requestHeaders = new Headers(Object.assign({ \"Content-Type\": \"application/json\", \"serverx-token\": tokenString, \"Authorization\": authorizationValue }, this.options.headers));\r\n const request = new Request(`${this.options.baseUrl}/user/goodbye`, {\r\n method: \"POST\",\r\n headers: requestHeaders,\r\n mode: \"cors\",\r\n cache: \"default\",\r\n keepalive: true,\r\n body: JSON.stringify({ session })\r\n });\r\n // it is pointless to handle this promise, because the page will be closed long before it resolves or rejects\r\n window.fetch(request);\r\n }\r\n getHeaders(options) {\r\n const headers = {};\r\n if (options.auth.username) {\r\n headers.user = options.auth.username;\r\n }\r\n if (options.auth.token) {\r\n if (options.auth.token.bearer) {\r\n headers.Authorization = `Bearer ${options.auth.token.bearer}`;\r\n }\r\n }\r\n if (options.headers) {\r\n for (const headerName of Object.keys(options.headers)) {\r\n headers[headerName] = options.headers[headerName];\r\n }\r\n }\r\n return headers;\r\n }\r\n intercept(axiosInstance) {\r\n var _a, _b;\r\n try {\r\n const interceptorsId = (_b = (_a = axiosInstance === null || axiosInstance === void 0 ? void 0 : axiosInstance.interceptors) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.use((data) => {\r\n var _a;\r\n try {\r\n (_a = this.responseSuccessCallback) === null || _a === void 0 ? void 0 : _a.call(this, data);\r\n }\r\n catch (_b) { }\r\n return data;\r\n }, (error) => {\r\n var _a;\r\n try {\r\n (_a = this.responseErrorCallback) === null || _a === void 0 ? void 0 : _a.call(this, error);\r\n }\r\n catch (_b) { }\r\n return Promise.reject(error);\r\n });\r\n return interceptorsId;\r\n }\r\n catch (_c) {\r\n return undefined;\r\n }\r\n }\r\n eject(interceptId, axiosInstance) {\r\n var _a, _b;\r\n try {\r\n if (interceptId) {\r\n (_b = (_a = axiosInstance === null || axiosInstance === void 0 ? void 0 : axiosInstance.interceptors) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.eject(interceptId);\r\n }\r\n }\r\n catch (_c) {\r\n }\r\n }\r\n}\r\nexports.BaseAPI = BaseAPI;\r\n//# sourceMappingURL=base.js.map","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SystemConfigAPI = void 0;\r\nclass SystemConfigAPI {\r\n constructor(axios) {\r\n this.axios = axios;\r\n }\r\n getAll(request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let url = \"/systemConfig\";\r\n if (request) {\r\n const params = encodeURIComponent(JSON.stringify(request));\r\n url += `?params=${params}`;\r\n }\r\n const result = yield this.axios.get(url);\r\n return result.data;\r\n });\r\n }\r\n getExactEntry(identifier) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.axios.post(`/systemConfig/get`, { identifier, exact: true });\r\n return result.data;\r\n });\r\n }\r\n getComputed(identifier) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.axios.post(`/systemConfig/get`, { identifier, exact: false });\r\n return result.data;\r\n });\r\n }\r\n addOrReplace(definition) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.axios.post(`/systemConfig/`, definition);\r\n });\r\n }\r\n remove(identifier) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.axios.post(`/systemConfig/delete`, identifier);\r\n });\r\n }\r\n removeConfigForIdentifier(identifier, config) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.axios.post(`/systemConfig/deleteConfig`, { identifier, config });\r\n });\r\n }\r\n}\r\nexports.SystemConfigAPI = SystemConfigAPI;\r\n//# sourceMappingURL=systemConfig.js.map","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PromiseWrapper = void 0;\r\nclass PromiseWrapper {\r\n constructor() {\r\n this.resolve = () => { };\r\n this.reject = () => { };\r\n this.rejected = false;\r\n this.resolved = false;\r\n this.promise = new Promise((resolve, reject) => {\r\n this.resolve = (t) => {\r\n this.resolved = true;\r\n resolve(t);\r\n };\r\n this.reject = (err) => {\r\n this.rejected = true;\r\n reject(err);\r\n };\r\n });\r\n }\r\n static delay(time) {\r\n return new Promise((resolve) => setTimeout(resolve, time));\r\n }\r\n static delayForever() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const biggestPossibleDelay = 2147483647; // ~25 days\r\n while (true) {\r\n yield this.delay(biggestPossibleDelay);\r\n }\r\n });\r\n }\r\n get ended() {\r\n return this.rejected || this.resolved;\r\n }\r\n}\r\nexports.PromiseWrapper = PromiseWrapper;\r\n//# sourceMappingURL=promise.js.map","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ClientAPI = void 0;\r\nconst jwt_decode_1 = __importDefault(require(\"jwt-decode\"));\r\nconst form_data_1 = __importDefault(require(\"form-data\"));\r\nconst base_1 = require(\"./base\");\r\nconst systemConfig_1 = require(\"./sub/systemConfig\");\r\nconst promise_1 = require(\"./promise\");\r\nclass ClientAPI extends base_1.BaseAPI {\r\n constructor(options) {\r\n super(options);\r\n this.customRequest = options.req;\r\n this.systemConfig = new systemConfig_1.SystemConfigAPI(this.axiosInstance);\r\n }\r\n unload() {\r\n // this request is a keepalive fire and forget, so that it can completed successfully even after the page has been closed\r\n this.unloadClient(this.sessionToken.session, this.sessionTokenString);\r\n }\r\n refreshData(req) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const response = yield this.post(`/user`, req);\r\n return response.data;\r\n });\r\n }\r\n getApps() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const response = yield this.get(`/user/apps`);\r\n return response.data;\r\n });\r\n }\r\n getLayouts() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const response = yield this.get(`/user/layouts`);\r\n return response.data;\r\n });\r\n }\r\n saveLayout(data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.post(`/user/layouts`, data);\r\n return result.data;\r\n });\r\n }\r\n /**\r\n * This might fail if the layout is common\r\n * @param id Id of the layout\r\n */\r\n deleteUserLayout(id) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.delete(`/user/layouts/${id}`);\r\n });\r\n }\r\n /**\r\n * Removes all user layouts.\r\n * @returns all user layout definitions that the user must see after the\r\n */\r\n deleteAllUserLayouts() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.delete(`/user/layouts/`);\r\n return result.data;\r\n });\r\n }\r\n renameLayout(id, newName) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.post(`/user/layouts/${id}/rename`, { newName });\r\n return result.data;\r\n });\r\n }\r\n getDefaultLayout() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.get(`/user/layouts/default`);\r\n if (result.status === 204) {\r\n return undefined;\r\n }\r\n return result.data;\r\n });\r\n }\r\n setDefaultLayout(id) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.post(`/user/layouts/default`, { id });\r\n if (result.status === 204) {\r\n return undefined;\r\n }\r\n return result.data;\r\n });\r\n }\r\n openSession(machine, glue) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const response = yield this.post(\"/user/hello\", {\r\n machine,\r\n glue\r\n });\r\n const token = this.updateToken(response.data.token);\r\n const data = response.data.data;\r\n return {\r\n token,\r\n data\r\n };\r\n });\r\n }\r\n closeSession(session) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n session = session !== null && session !== void 0 ? session : this.sessionToken.session;\r\n if (!session) {\r\n throw new Error(\"no active session\");\r\n }\r\n const request = {\r\n session\r\n };\r\n yield this.post(\"/user/goodbye\", request);\r\n });\r\n }\r\n refreshToken() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const request = {\r\n token: this.sessionTokenString\r\n };\r\n const response = yield this.post(\"/user/refresh\", request);\r\n return this.updateToken(response.data.token);\r\n });\r\n }\r\n getCommands() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.get(`/user/commands/${this.sessionToken.session}`);\r\n return result.data;\r\n });\r\n }\r\n setCommandResult(commandId, result) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.post(`/user/commands/${commandId}`, result);\r\n });\r\n }\r\n setCommandFileResult(commandId, fileName, contentsBase64) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const request = {\r\n fileName,\r\n contents: contentsBase64\r\n };\r\n yield this.post(`/user/commands/${commandId}/file`, request);\r\n });\r\n }\r\n getPrefs(app, latestKnown) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n let path = `/user/prefs/${app}`;\r\n if (latestKnown) {\r\n const timestamp = latestKnown.getTime();\r\n path += `?last=${timestamp}`;\r\n }\r\n const result = yield this.get(path);\r\n return result.data;\r\n }\r\n catch (err) {\r\n return undefined;\r\n }\r\n });\r\n }\r\n getAllPrefs() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.get(`/user/prefs/`);\r\n return result.data;\r\n });\r\n }\r\n setPrefs(req) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.post(`/user/prefs/`, req);\r\n return result.data;\r\n });\r\n }\r\n deletePrefs(app) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.delete(`/user/prefs/${app}`);\r\n });\r\n }\r\n deleteAllPrefs() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.delete(`/user/prefs/`);\r\n });\r\n }\r\n addFeedback(description, rs) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const formData = new form_data_1.default();\r\n formData.append(\"description\", description);\r\n formData.append(\"attachment\", rs);\r\n try {\r\n const result = yield this.post(\"/user/feedbacks\", formData, formData.getHeaders());\r\n return result.data;\r\n }\r\n catch (err) {\r\n throw err;\r\n }\r\n });\r\n }\r\n setOptions(options) {\r\n super.setOptions(options);\r\n if (this.sessionTokenString) {\r\n this.updateToken(this.sessionTokenString);\r\n }\r\n }\r\n updateToken(tokenString) {\r\n var _a;\r\n this.sessionTokenString = tokenString;\r\n this.axiosInstance.defaults.headers.common[\"serverx-token\"] = tokenString;\r\n this.options.headers = (_a = this.options.headers) !== null && _a !== void 0 ? _a : {};\r\n this.options.headers[\"serverx-token\"] = tokenString;\r\n this.sessionToken = jwt_decode_1.default(tokenString);\r\n return this.sessionToken;\r\n }\r\n get(url, data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.customRequest) {\r\n return this.withRequest(url, \"GET\", data);\r\n }\r\n return this.axiosInstance.get(url, data);\r\n });\r\n }\r\n post(url, data, extraHeaders) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.customRequest) {\r\n return this.withRequest(url, \"POST\", data, extraHeaders);\r\n }\r\n return this.axiosInstance.post(url, data, { headers: extraHeaders });\r\n });\r\n }\r\n delete(url, data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.customRequest) {\r\n return this.withRequest(url, \"DELETE\", data);\r\n }\r\n return this.axiosInstance.delete(url, data);\r\n });\r\n }\r\n withRequest(url, method, body, extraHeaders) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this.customRequest) {\r\n throw new Error(`invalid call`);\r\n }\r\n const pw = new promise_1.PromiseWrapper();\r\n let headers = this.getHeaders(this.options);\r\n if (extraHeaders) {\r\n headers = Object.assign(Object.assign({}, headers), { extraHeaders });\r\n }\r\n // create full url\r\n // clean up\r\n // 1. remove the staring / , as it will strip baseUrl to the domain part\r\n if (url.startsWith(\"/\")) {\r\n url = url.substring(1);\r\n }\r\n // 2. add / at the ned of base\r\n let base = this.options.baseUrl;\r\n if (!base.endsWith(\"/\")) {\r\n base += \"/\";\r\n }\r\n const fullUrl = new URL(url, base).href;\r\n const opts = {\r\n method,\r\n url: fullUrl,\r\n headers,\r\n json: body !== null && body !== void 0 ? body : true\r\n };\r\n this.customRequest(opts, (error, resp) => {\r\n if (error) {\r\n pw.reject(error);\r\n return;\r\n }\r\n if (resp.statusCode >= 400) {\r\n pw.reject(`received error with code ${resp.statusCode}`);\r\n return;\r\n }\r\n let result = {};\r\n if (resp.body) {\r\n try {\r\n result = resp.body;\r\n }\r\n catch (_a) {\r\n // swallow exception\r\n }\r\n }\r\n pw.resolve({ data: result, status: resp.statusCode });\r\n });\r\n return pw.promise;\r\n });\r\n }\r\n}\r\nexports.ClientAPI = ClientAPI;\r\n//# sourceMappingURL=client.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ClientAPI = void 0;\r\nvar client_1 = require(\"./client-api/client\");\r\nObject.defineProperty(exports, \"ClientAPI\", { enumerable: true, get: function () { return client_1.ClientAPI; } });\r\n//# sourceMappingURL=client.js.map","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.35\n Copyright © 2012-2021 Faisal Salman \n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.35',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 350;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n VIERA = 'Viera',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook',\n CHROMIUM_OS = 'Chromium OS',\n MAC_OS = 'Mac OS';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i, // Baidu Browser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(heytap|ovi)browser\\/([\\d\\.]+)/i, // Heytap/Ovi\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i\n ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 '+BROWSER]], [\n /(oculus|samsung|sailfish|huawei)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish/Huawei Browser\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/Baidu App/2345 Browser\n ], [NAME, VERSION], [\n /(metasr)[\\/ ]?([\\w\\.]+)/i, // SouGouBrowser\n /(lbbrowser)/i, // LieBao Browser\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(chromium|instagram)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i, // Links\n /panasonic;(viera)/i // Panasonic Viera\n ], [NAME, VERSION], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /master.|lts./, \"\"]]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+)(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[12]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mitv-\\w{5}) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( 2| pro)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n /\\b(libweb)/i\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows) nt 6\\.2; (arm)/i, // Windows RT\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i, // Windows Phone\n /(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /ios;fbsv\\/([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, CHROMIUM_OS], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser[MAJOR] = majorize(_browser[VERSION]);\n // Brave-specific detection\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n _browser[NAME] = 'Brave';\n }\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n _device[TYPE] = MOBILE;\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n _device[MODEL] = 'iPad';\n _device[TYPE] = TABLET;\n }\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform != 'Unknown') {\n _os[NAME] = _uach.platform \n .replace(/chrome os/i, CHROMIUM_OS)\n .replace(/macos/i, MAC_OS); // backward compatibility\n }\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","var shadow$provide = {};\n(function(){\n/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\n'use strict';var h,aa=this||self;function ba(a){var b=typeof a;return\"object\"!=b?b:a?Array.isArray(a)?\"array\":b:\"null\"}function ea(a){var b=ba(a);return\"array\"==b||\"object\"==b&&\"number\"==typeof a.length}function fa(a){return Object.prototype.hasOwnProperty.call(a,ha)&&a[ha]||(a[ha]=++ia)}var ha=\"closure_uid_\"+(1E9*Math.random()>>>0),ia=0;function ja(a,b,c){return a.call.apply(a.bind,arguments)}\nfunction ka(a,b,c){if(!a)throw Error();if(2a?-0x7fffffffffffffff>=a?ua:va(new qa(-a,-a/4294967296)):wa}function va(a){var b=~a.la+1|0;return pa(b,~a.ha+!b|0)}function xa(a){return 4294967296*a.ha+(a.la>>>0)}\nfunction ya(a,b){if(za(b))throw Error(\"division by zero\");if(0>a.ha){if(Aa(a,ua)){if(Aa(b,Ba)||Aa(b,Ca))return ua;if(Aa(b,ua))return Ba;var c=1;if(0==c)c=a;else{var d=a.ha;c=32>c?pa(a.la>>>c|d<<32-c,d>>c):pa(d>>c-32,0<=d?0:-1)}c=ya(c,b).shiftLeft(1);if(Aa(c,wa))return 0>b.ha?Ba:Ca;d=b.multiply(c);a=a.add(va(d));return c.add(ya(a,b))}return 0>b.ha?ya(va(a),va(b)):va(ya(va(a),b))}if(za(a))return wa;if(0>b.ha)return Aa(b,ua)?wa:va(ya(a,va(b)));for(d=wa;0<=a.compare(b);){c=Math.max(1,Math.floor(xa(a)/\nxa(b)));var e=Math.ceil(Math.log(c)/Math.LN2);e=48>=e?1:Math.pow(2,e-48);for(var f=ra(c),g=f.multiply(b);0>g.ha||0>21;return 0==a||-1==a&&!(0==this.la&&-2097152==this.ha)}toString(a){a=a||10;if(2>a||36>2);var c=Math.pow(a,b),d=pa(c,c/4294967296);c=ya(this,d);var e=Math,f=e.abs;d=c.multiply(d);d=this.add(va(d));e=f.call(e,xa(d));f=10==a?\"\"+e:e.toString(a);f.length>>0>a.la>>>0?1:-1:this.ha>a.ha?1:-1}add(a){var b=this.ha>>>16,c=this.ha&65535,d=this.la>>>16,e=a.ha>>>16,f=a.ha&65535,g=a.la>>>16;a=(this.la&65535)+(a.la&65535);g=(a>>>16)+(d+g);d=g>>>16;d+=c+f;b=(d>>>16)+(b+e)&65535;return pa((g&65535)<<16|a&65535,b<<16|d&65535)}multiply(a){if(za(this))return this;if(za(a))return a;var b=this.ha>>>16,c=this.ha&65535,d=this.la>>>16,e=this.la&65535,f=a.ha>>>16,g=a.ha&65535,l=a.la>>>\n16;a=a.la&65535;var m=e*a;var q=(m>>>16)+d*a;var t=q>>>16;q=(q&65535)+e*l;t+=q>>>16;t+=c*a;var v=t>>>16;t=(t&65535)+d*l;v+=t>>>16;t=(t&65535)+e*g;v=v+(t>>>16)+(b*a+c*l+d*g+e*f)&65535;return pa((q&65535)<<16|m&65535,v<<16|t&65535)}and(a){return pa(this.la&a.la,this.ha&a.ha)}or(a){return pa(this.la|a.la,this.ha|a.ha)}xor(a){return pa(this.la^a.la,this.ha^a.ha)}shiftLeft(a){a&=63;if(0==a)return this;var b=this.la;return 32>a?pa(b<>>32-a):pa(0,b<=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}function Na(a,b){a.sort(b||Oa)}\nfunction Pa(a,b){const c=Array(a.length);for(let e=0;eb?1:a=a||\"€\"<=a&&\"�\">=a}var Xa=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};function Ya(a,b){a=String(a);let c=a.indexOf(\".\");-1===c&&(c=a.length);const d=\"-\"===a[0]?\"-\":\"\";d&&(a=a.substring(1));return d+Xa(\"0\",Math.max(0,b-c))+a};function Za(a,b){null!=a&&this.append.apply(this,arguments)}h=Za.prototype;h.Lc=\"\";h.set=function(a){this.Lc=\"\"+a};h.append=function(a,b,c){this.Lc+=String(a);if(null!=b)for(let d=1;d>>16&65535)*d+c*(b>>>16&65535)<<16>>>0)|0};function rd(a){a=qd(a|0,-862048943);return qd(a<<15|a>>>-15,461845907)}function sd(a,b){a=(a|0)^(b|0);return qd(a<<13|a>>>-13,5)+-430675100|0}function td(a,b){a=(a|0)^b;a=qd(a^a>>>16,-2048144789);a=qd(a^a>>>13,-1028477387);return a^a>>>16}var ud={},vd=0;\nfunction wd(a){255>2)}function zd(a,b){if(a.uc===b.uc)return 0;var c=yb(a.yb);if(n(c?b.yb:c))return-1;if(n(a.yb)){if(yb(b.yb))return 1;c=Oa(a.yb,b.yb);return 0===c?Oa(a.name,b.name):c}return Oa(a.name,b.name)}\nfunction Ad(a,b,c,d,e){this.yb=a;this.name=b;this.uc=c;this.ed=d;this.Mb=e;this.B=2154168321;this.M=4096}h=Ad.prototype;h.toString=function(){return this.uc};h.aa=function(a,b){return b instanceof Ad?this.uc===b.uc:!1};h.call=function(a){switch(arguments.length-1){case 1:return this.g(arguments[1]);case 2:return this.h(arguments[1],arguments[2]);default:throw Error([\"Invalid arity: \",p.g(arguments.length-1)].join(\"\"));}};h.apply=function(a,b){return this.call.apply(this,[this].concat(Lb(b)))};\nh.g=function(a){return u.h?u.h(a,this):u.call(null,a,this)};h.h=function(a,b){return u.j?u.j(a,this,b):u.call(null,a,this,b)};h.R=function(){return this.Mb};h.S=function(a,b){return new Ad(this.yb,this.name,this.uc,this.ed,b)};h.ba=function(){var a=this.ed;return null!=a?a:this.ed=a=yd(this)};h.Ad=function(){return this.name};h.Bd=function(){return this.yb};h.U=function(a,b){return Qc(b,this.uc)};\nvar Bd=function Bd(a){switch(arguments.length){case 1:return Bd.g(arguments[0]);case 2:return Bd.h(arguments[0],arguments[1]);default:throw Error([\"Invalid arity: \",p.g(arguments.length)].join(\"\"));}};Bd.g=function(a){for(;;){if(a instanceof Ad)return a;if(\"string\"===typeof a){var b=a.indexOf(\"/\");return 1>b?Bd.h(null,a):Bd.h(a.substring(0,b),a.substring(b+1,a.length))}if(a instanceof Cd)return a.ad;if(a instanceof w)a=a.W;else throw Error(\"no conversion to symbol\");}};\nBd.h=function(a,b){var c=null!=a?[p.g(a),\"/\",p.g(b)].join(\"\"):b;return new Ad(a,b,c,null,null)};Bd.I=2;function Cd(a,b,c){this.v=a;this.ad=b;this.Mb=c;this.B=6717441;this.M=0}h=Cd.prototype;h.toString=function(){return[\"#'\",p.g(this.ad)].join(\"\")};h.Jb=function(){return this.v.A?this.v.A():this.v.call(null)};h.R=function(){return this.Mb};h.S=function(a,b){return new Cd(this.v,this.ad,b)};h.aa=function(a,b){return b instanceof Cd?(a=this.ad,b=b.ad,x.h?x.h(a,b):x.call(null,a,b)):!1};h.ba=function(){return yd(this.ad)};\nh.xf=cb;\nh.call=function(a){switch(arguments.length-1){case 0:return this.A();case 1:return this.g(arguments[1]);case 2:return this.h(arguments[1],arguments[2]);case 3:return this.j(arguments[1],arguments[2],arguments[3]);case 4:return this.F(arguments[1],arguments[2],arguments[3],arguments[4]);case 5:return this.O(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]);case 6:return this.oa(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6]);case 7:return this.lb(arguments[1],arguments[2],\narguments[3],arguments[4],arguments[5],arguments[6],arguments[7]);case 8:return this.Ma(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8]);case 9:return this.ab(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9]);case 10:return this.pb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10]);case 11:return this.gb(arguments[1],\narguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11]);case 12:return this.qb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12]);case 13:return this.hb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13]);\ncase 14:return this.rb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14]);case 15:return this.ib(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15]);case 16:return this.sb(arguments[1],arguments[2],arguments[3],arguments[4],\narguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16]);case 17:return this.jb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17]);case 18:return this.tb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],\narguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17],arguments[18]);case 19:return this.kb(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17],arguments[18],arguments[19]);case 20:return this.ub(arguments[1],arguments[2],\narguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17],arguments[18],arguments[19],arguments[20]);case 21:return this.Sc(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6],arguments[7],arguments[8],arguments[9],arguments[10],arguments[11],arguments[12],arguments[13],arguments[14],arguments[15],arguments[16],arguments[17],arguments[18],\narguments[19],arguments[20],arguments[21]);default:throw Error([\"Invalid arity: \",p.g(arguments.length-1)].join(\"\"));}};h.apply=function(a,b){return this.call.apply(this,[this].concat(Lb(b)))};h.A=function(){var a=this.v.A?this.v.A():this.v.call(null);return a.A?a.A():a.call(null)};h.g=function(a){var b=this.v.A?this.v.A():this.v.call(null);return b.g?b.g(a):b.call(null,a)};h.h=function(a,b){var c=this.v.A?this.v.A():this.v.call(null);return c.h?c.h(a,b):c.call(null,a,b)};\nh.j=function(a,b,c){var d=this.v.A?this.v.A():this.v.call(null);return d.j?d.j(a,b,c):d.call(null,a,b,c)};h.F=function(a,b,c,d){var e=this.v.A?this.v.A():this.v.call(null);return e.F?e.F(a,b,c,d):e.call(null,a,b,c,d)};h.O=function(a,b,c,d,e){var f=this.v.A?this.v.A():this.v.call(null);return f.O?f.O(a,b,c,d,e):f.call(null,a,b,c,d,e)};h.oa=function(a,b,c,d,e,f){var g=this.v.A?this.v.A():this.v.call(null);return g.oa?g.oa(a,b,c,d,e,f):g.call(null,a,b,c,d,e,f)};\nh.lb=function(a,b,c,d,e,f,g){var l=this.v.A?this.v.A():this.v.call(null);return l.lb?l.lb(a,b,c,d,e,f,g):l.call(null,a,b,c,d,e,f,g)};h.Ma=function(a,b,c,d,e,f,g,l){var m=this.v.A?this.v.A():this.v.call(null);return m.Ma?m.Ma(a,b,c,d,e,f,g,l):m.call(null,a,b,c,d,e,f,g,l)};h.ab=function(a,b,c,d,e,f,g,l,m){var q=this.v.A?this.v.A():this.v.call(null);return q.ab?q.ab(a,b,c,d,e,f,g,l,m):q.call(null,a,b,c,d,e,f,g,l,m)};\nh.pb=function(a,b,c,d,e,f,g,l,m,q){var t=this.v.A?this.v.A():this.v.call(null);return t.pb?t.pb(a,b,c,d,e,f,g,l,m,q):t.call(null,a,b,c,d,e,f,g,l,m,q)};h.gb=function(a,b,c,d,e,f,g,l,m,q,t){var v=this.v.A?this.v.A():this.v.call(null);return v.gb?v.gb(a,b,c,d,e,f,g,l,m,q,t):v.call(null,a,b,c,d,e,f,g,l,m,q,t)};h.qb=function(a,b,c,d,e,f,g,l,m,q,t,v){var y=this.v.A?this.v.A():this.v.call(null);return y.qb?y.qb(a,b,c,d,e,f,g,l,m,q,t,v):y.call(null,a,b,c,d,e,f,g,l,m,q,t,v)};\nh.hb=function(a,b,c,d,e,f,g,l,m,q,t,v,y){var E=this.v.A?this.v.A():this.v.call(null);return E.hb?E.hb(a,b,c,d,e,f,g,l,m,q,t,v,y):E.call(null,a,b,c,d,e,f,g,l,m,q,t,v,y)};h.rb=function(a,b,c,d,e,f,g,l,m,q,t,v,y,E){var H=this.v.A?this.v.A():this.v.call(null);return H.rb?H.rb(a,b,c,d,e,f,g,l,m,q,t,v,y,E):H.call(null,a,b,c,d,e,f,g,l,m,q,t,v,y,E)};\nh.ib=function(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H){var K=this.v.A?this.v.A():this.v.call(null);return K.ib?K.ib(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H):K.call(null,a,b,c,d,e,f,g,l,m,q,t,v,y,E,H)};h.sb=function(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K){var R=this.v.A?this.v.A():this.v.call(null);return R.sb?R.sb(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K):R.call(null,a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K)};\nh.jb=function(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R){var ca=this.v.A?this.v.A():this.v.call(null);return ca.jb?ca.jb(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R):ca.call(null,a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R)};h.tb=function(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R,ca){var da=this.v.A?this.v.A():this.v.call(null);return da.tb?da.tb(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R,ca):da.call(null,a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R,ca)};\nh.kb=function(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R,ca,da){var sa=this.v.A?this.v.A():this.v.call(null);return sa.kb?sa.kb(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R,ca,da):sa.call(null,a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R,ca,da)};h.ub=function(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R,ca,da,sa){var Ha=this.v.A?this.v.A():this.v.call(null);return Ha.ub?Ha.ub(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R,ca,da,sa):Ha.call(null,a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R,ca,da,sa)};\nh.Sc=function(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R,ca,da,sa,Ha){var mb=this.v.A?this.v.A():this.v.call(null);return Dd.Ge?Dd.Ge(mb,a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R,ca,da,sa,Ha):Dd.call(null,mb,a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R,ca,da,sa,Ha)};function Ed(a){return null!=a?a.M&131072||cb===a.pi?!0:a.M?!1:Cb(md,a):Cb(md,a)}\nfunction z(a){if(null==a)return null;if(null!=a&&(a.B&8388608||cb===a.Bf))return a.ca(null);if(wb(a)||\"string\"===typeof a)return 0===a.length?null:new Fd(a,0,null);if(null!=a&&null!=a[Gb])return a=Ia(a,Gb).call(a),Gd.g?Gd.g(a):Gd.call(null,a);if(Cb(Jc,a))return Kc(a);throw Error([p.g(a),\" is not ISeqable\"].join(\"\"));}function A(a){if(null==a)return null;if(null!=a&&(a.B&64||cb===a.hd))return a.Ga(null);a=z(a);return null==a?null:bc(a)}\nfunction Hd(a){return null!=a?null!=a&&(a.B&64||cb===a.hd)?a.Ia(null):(a=z(a))?a.Ia(null):Id:Id}function B(a){return null==a?null:null!=a&&(a.B&128||cb===a.Cd)?a.Aa(null):z(Hd(a))}var x=function x(a){switch(arguments.length){case 1:return x.g(arguments[0]);case 2:return x.h(arguments[0],arguments[1]);default:for(var c=[],d=arguments.length,e=0;;)if(e=d)return-1;!(0c&&(c+=d,c=0>c?0:c);for(;;)if(cc?d+c:c;for(;;)if(0<=c){if(x.h(ee?ee(a,c):fe.call(null,a,c),b))return c;--c}else return-1}function he(a,b){this.o=a;this.N=b}he.prototype.ua=function(){return this.Na?0:a};h.Ac=function(){var a=this.da(null);return 0b)throw Error(\"Index out of bounds\");a:for(;;){if(null==a)throw Error(\"Index out of bounds\");\nif(0===b){if(z(a)){a=A(a);break a}throw Error(\"Index out of bounds\");}if(ce(a)){a=Zb(a,b);break a}if(z(a))a=B(a),--b;else throw Error(\"Index out of bounds\");}return a}if(Cb(Yb,a))return Zb(a,b);throw Error([\"nth not supported on this type \",p.g(Fb(Db(a)))].join(\"\"));}\nfunction G(a,b,c){if(\"number\"!==typeof b)throw Error(\"Index argument to nth must be a number.\");if(null==a)return c;if(null!=a&&(a.B&16||cb===a.Af))return a.Ba(null,b,c);if(wb(a))return-1b?c:ue(a,b,c);if(Cb(Yb,a))return Zb(a,b,c);throw Error([\"nth not supported on this type \",p.g(Fb(Db(a)))].join(\"\"));}\nvar u=function u(a){switch(arguments.length){case 2:return u.h(arguments[0],arguments[1]);case 3:return u.j(arguments[0],arguments[1],arguments[2]);default:throw Error([\"Invalid arity: \",p.g(arguments.length)].join(\"\"));}};u.h=function(a,b){return null==a?null:null!=a&&(a.B&256||cb===a.Ig)?a.na(null,b):wb(a)?null!=b&&bd)a=1;else if(0===c)a=0;else a:for(d=0;;){var e=Ue(ee(a,d),ee(b,d));if(0===e&&d+1b};\ngf.l=function(a,b,c){for(;;)if(a>b)if(B(c))a=b,b=A(c),c=B(c);else return b>A(c);else return!1};gf.J=function(a){var b=A(a),c=B(a);a=A(c);c=B(c);return this.l(b,a,c)};gf.I=2;function hf(a){if(\"number\"===typeof a)return String.fromCharCode(a);if(\"string\"===typeof a&&1===a.length)return a;throw Error(\"Argument to char must be a character or number\");}function jf(a){return 0<=a?Math.floor(a):Math.ceil(a)}function kf(a,b){return jf((a-a%b)/b)}function lf(a,b){return a-b*kf(a,b)}\nfunction mf(a){a-=a>>1&1431655765;a=(a&858993459)+(a>>2&858993459);return 16843009*(a+(a>>4)&252645135)>>24}function nf(a){switch(arguments.length){case 1:return!0;case 2:return Hc(arguments[0],arguments[1]);default:for(var b=[],c=arguments.length,d=0;;)if(dd:e))c[d]=a.next(),d+=1;else return Jf(new Gf(c,0,d),qg.g?qg.g(a):qg.call(null,a))}else return null},null,null)};function rg(a){this.buffer=pg;this.Ib=mg;this.Se=!1;this.nc=null;this.cf=a;this.Ph=!1}\nrg.prototype.step=function(){if(this.Ib!==mg)return!0;for(;;)if(this.Ib===mg)if(this.buffer.Qd()){if(this.Se)return!1;if(this.cf.ua()){if(this.Ph)var a=Xf(this.nc,ke(null,this.cf.next()));else a=this.cf.next(),a=this.nc.h?this.nc.h(null,a):this.nc.call(null,null,a);Ud(a)&&(this.nc.g?this.nc.g(null):this.nc.call(null,null),this.Se=!0)}else this.nc.g?this.nc.g(null):this.nc.call(null,null),this.Se=!0}else this.Ib=this.buffer.remove();else return!0};rg.prototype.ua=function(){return this.step()};\nrg.prototype.next=function(){if(this.ua()){var a=this.Ib;this.Ib=mg;return a}throw Error(\"No such element\");};rg.prototype.remove=function(){return Error(\"Unsupported operation\")};rg.prototype[Gb]=function(){return Kd(this)};\nfunction sg(a,b){var c=new rg(b);c.nc=function(){var d=function(){function e(g,l){c.buffer=c.buffer.add(l);return g}var f=null;f=function(g,l){switch(arguments.length){case 0:return null;case 1:return g;case 2:return e.call(this,g,l)}throw Error(\"Invalid arity: \"+arguments.length);};f.A=function(){return null};f.g=function(g){return g};f.h=e;return f}();return a.g?a.g(d):a.call(null,d)}();return c}function tg(a){return Qe(a)?a:(a=z(a))?a:Id}\nfunction ug(a,b){for(;;){if(null==z(b))return!0;var c=A(b);c=a.g?a.g(c):a.call(null,c);if(n(c))b=B(b);else return!1}}function vg(a,b){for(;;)if(b=z(b)){var c=A(b);c=a.g?a.g(c):a.call(null,c);if(n(c))return c;b=B(b)}else return null}function wg(a){if(Se(a))return 0===(a&1);throw Error([\"Argument must be an integer: \",p.g(a)].join(\"\"));}\nfunction xg(a){return function(){function b(g,l){return yb(a.h?a.h(g,l):a.call(null,g,l))}function c(g){return yb(a.g?a.g(g):a.call(null,g))}function d(){return yb(a.A?a.A():a.call(null))}var e=null,f=function(){function g(m,q,t){var v=null;if(2a?0:a-1>>>5<<5}function mh(a,b,c){for(;;){if(0===b)return c;var d=jh(a);d.o[0]=c;c=d;b-=5}}var nh=function nh(a,b,c,d){var f=kh(c),g=a.H-1>>>b&31;5===b?f.o[g]=d:(c=c.o[g],null!=c?(b-=5,a=nh.F?nh.F(a,b,c,d):nh.call(null,a,b,c,d)):a=mh(null,b-5,d),f.o[g]=a);return f};function oh(a,b){throw Error([\"No item \",p.g(a),\" in vector of length \",p.g(b)].join(\"\"));}\nfunction ph(a,b){if(b>=lh(a))return a.wa;var c=a.root;for(a=a.shift;;)if(0>>a&31];a=d}else return c.o}function qh(a,b){return 0<=b&&b>>b&31;b-=5;c=c.o[l];a=rh.O?rh.O(a,b,c,d,e):rh.call(null,a,b,c,d,e);g.o[l]=a}return g},sh=function sh(a,b,c){var e=a.H-2>>>b&31;if(5=this.H)return new Fd(this.wa,0,null);a:{var a=this.root;for(var b=this.shift;;)if(0this.H-lh(this)){a=this.wa.length;for(var c=Array(a+1),d=0;;)if(d>>5>1<c)return new Q(null,c,5,S,a,null);b=32;for(var d=(new Q(null,32,5,S,a.slice(0,32),null)).gd(null);;)if(bb)return null;a=this.start+b;return ab||this.end<=this.start+b?oh(b,this.end-this.start):Zb(this.ma,this.start+b)};h.Ba=function(a,b,c){return 0>b||this.end<=this.start+b?c:Zb(this.ma,this.start+b,c)};\nh.Kb=function(a,b,c){a=this.start+b;if(0>b||this.end+1<=a)throw Error([\"Index \",p.g(b),\" out of bounds [0,\",p.g(this.da(null)),\"]\"].join(\"\"));b=this.K;c=I.j(this.ma,a,c);var d=this.start,e=this.end;a+=1;a=e>a?e:a;return Mh.O?Mh.O(b,c,d,a,null):Mh.call(null,b,c,d,a,null)};h.xa=function(){return null!=this.ma&&cb===this.ma.Ee?uh(this.ma,this.start,this.end):new jg(this)};h.R=function(){return this.K};h.da=function(){return this.end-this.start};\nh.Ub=function(){return this.start===this.end?null:Zb(this.ma,this.end-1)};h.Vb=function(){if(this.start===this.end)throw Error(\"Can't pop empty vector\");var a=this.K,b=this.ma,c=this.start,d=this.end-1;return Mh.O?Mh.O(a,b,c,d,null):Mh.call(null,a,b,c,d,null)};h.Ac=function(){return this.start!==this.end?new ie(this,this.end-this.start-1,null):null};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=Nd(this)};h.aa=function(a,b){return je(this,b)};h.sa=function(){return Bc(F,this.K)};\nh.Ea=function(a,b){return null!=this.ma&&cb===this.ma.Ee?vh(this.ma,b,this.start,this.end):Xd(this,b)};h.Fa=function(a,b,c){return null!=this.ma&&cb===this.ma.Ee?wh(this.ma,b,c,this.start,this.end):Yd(this,b,c)};h.ja=function(a,b,c){if(\"number\"===typeof b)return this.Kb(null,b,c);throw Error(\"Subvec's key for assoc must be a number.\");};h.za=function(a,b){return Se(b)?0<=b&&bc||dC(b))throw Error(\"Index out of bounds\");return new Lh(a,b,c,d,e)}}function Nh(a,b,c){return Mh(null,a,b|0,c|0,null)}function Oh(a,b){return a===b.ya?b:new ih(a,Lb(b.o))}function zh(a){return new ih({},Lb(a.o))}\nfunction Ah(a){var b=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];Ne(a,0,b,0,a.length);return b}var Ph=function Ph(a,b,c,d){c=Oh(a.root.ya,c);var f=a.H-1>>>b&31;if(5===b)a=d;else{var g=c.o[f];null!=g?(b-=5,a=Ph.F?Ph.F(a,b,g,d):Ph.call(null,a,b,g,d)):a=mh(a.root.ya,b-5,d)}c.o[f]=a;return c};function yh(a,b,c,d){this.H=a;this.shift=b;this.root=c;this.wa=d;this.M=88;this.B=275}h=yh.prototype;\nh.kd=function(a,b){if(this.root.ya){if(32>this.H-lh(this))this.wa[this.H&31]=b;else{a=new ih(this.root.ya,this.wa);var c=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];c[0]=b;this.wa=c;this.H>>>5>1<>>f&31;f=l(f-5,g.o[m]);g.o[m]=f}return g}(a.shift,a.root);a.root=d}return a}if(b===a.H)return a.kd(null,c);throw Error([\"Index \",p.g(b),\" out of bounds for TransientVector of length\",p.g(a.H)].join(\"\"));}throw Error(\"assoc! after persistent!\");}h.da=function(){if(this.root.ya)return this.H;throw Error(\"count after persistent!\");};\nh.$=function(a,b){if(this.root.ya)return qh(this,b)[b&31];throw Error(\"nth after persistent!\");};h.Ba=function(a,b,c){return 0<=b&&b=a)return new k(this.K,this.H-1,c,null);x.h(b,this.o[d])?d+=2:(c[e]=this.o[d],c[e+1]=this.o[d+1],e+=2,d+=2)}}else return this};\nh.ja=function(a,b,c){a=ai(this.o,b);if(-1===a){if(this.H=e){if(ji(c[e],c[g]))return g;g-=2}else return g}(),a[f]=c[e],a[f+1]=c[b+1],b=2+f,e=2+e,f=b);else break;return new k(null,a.length/2,a,null)}return new k(null,c.length/2,c,null)}k.prototype[Gb]=function(){return Kd(this)};\nfunction fi(a,b){this.Uc={};this.hc=a;this.o=b;this.B=259;this.M=56}h=fi.prototype;h.da=function(){if(this.Uc)return kf(this.hc,2);throw Error(\"count after persistent!\");};h.na=function(a,b){return this.P(null,b,null)};h.P=function(a,b,c){if(this.Uc)return a=ai(this.o,b),-1===a?c:this.o[a+1];throw Error(\"lookup after persistent!\");};\nh.kd=function(a,b){if(this.Uc){if(Fh(b))return this.jd(null,Gh.g?Gh.g(b):Gh.call(null,b),Hh.g?Hh.g(b):Hh.call(null,b));if(Le(b))return this.jd(null,b.g?b.g(0):b.call(null,0),b.g?b.g(1):b.call(null,1));a=z(b);for(b=this;;){var c=A(a);if(n(c))a=B(a),b=$c(b,Gh.g?Gh.g(c):Gh.call(null,c),Hh.g?Hh.g(c):Hh.call(null,c));else return b}}else throw Error(\"conj! after persistent!\");};h.Ed=function(){if(this.Uc)return this.Uc=!1,new k(null,kf(this.hc,2),this.o,null);throw Error(\"persistent! called twice\");};\nh.jd=function(a,b,c){if(this.Uc){a=ai(this.o,b);if(-1===a)return this.hc+2<=2*gi?(this.hc+=2,this.o.push(b),this.o.push(c),this):Qf(ni.h?ni.h(this.hc,this.o):ni.call(null,this.hc,this.o),b,c);c!==this.o[a+1]&&(this.o[a+1]=c);return this}throw Error(\"assoc! after persistent!\");};h.Ke=function(a,b){if(this.Uc)return a=ai(this.o,b),0<=a&&(this.o[a]=this.o[this.hc-2],this.o[a+1]=this.o[this.hc-1],a=this.o,a.pop(),a.pop(),this.hc-=2),this;throw Error(\"dissoc! after persistent!\");};\nh.call=function(a){switch(arguments.length-1){case 1:return this.g(arguments[1]);case 2:return this.h(arguments[1],arguments[2]);default:throw Error([\"Invalid arity: \",p.g(arguments.length-1)].join(\"\"));}};h.apply=function(a,b){return this.call.apply(this,[this].concat(Lb(b)))};h.g=function(a){return this.P(null,a,null)};h.h=function(a,b){return this.P(null,a,b)};function ni(a,b){for(var c=Xc(hi),d=0;;)if(db?4:2*(b+1));Ne(this.o,0,c,0,2*b);return new ui(a,this.ra,c)};h.Pd=function(a,b,c,d,e){var f=1<<(c>>>b&31);if(0===(this.ra&f))return this;var g=mf(this.ra&f-1),l=this.o[2*g],m=this.o[2*g+1];return null==l?(b=m.Pd(a,b+5,c,d,e),b===m?this:null!=b?ri(this,a,2*g+1,b):this.ra===f?null:vi(this,a,f,g)):ji(d,l)?(e.v=!0,vi(this,a,f,g)):this};\nfunction vi(a,b,c,d){if(a.ra===c)return null;a=a.Ec(b);b=a.o;var e=b.length;a.ra^=c;Ne(b,2*(d+1),b,2*d,e-2*(d+1));b[e-2]=null;b[e-1]=null;return a}h.Nd=function(){return wi?wi(this.o):xi.call(null,this.o)};h.$c=function(a,b){return si(this.o,a,b)};h.Pc=function(a,b,c,d){var e=1<<(b>>>a&31);if(0===(this.ra&e))return d;var f=mf(this.ra&e-1);e=this.o[2*f];f=this.o[2*f+1];return null==e?f.Pc(a+5,b,c,d):ji(c,e)?f:d};\nh.fc=function(a,b,c,d,e,f){var g=1<<(c>>>b&31),l=mf(this.ra&g-1);if(0===(this.ra&g)){var m=mf(this.ra);if(2*m>>b&31]=yi.fc(a,b+5,c,d,e,f);for(e=d=0;;)if(32>d)0===(this.ra>>>\nd&1)?d+=1:(l[d]=null!=this.o[e]?yi.fc(a,b+5,xd(this.o[e]),this.o[e],this.o[e+1],f):this.o[e+1],e+=2,d+=1);else break;return new zi(a,m+1,l)}b=Array(2*(m+4));Ne(this.o,0,b,0,2*l);b[2*l]=d;b[2*l+1]=e;Ne(this.o,2*l,b,2*(l+1),2*(m-l));f.v=!0;a=this.Ec(a);a.o=b;a.ra|=g;return a}m=this.o[2*l];g=this.o[2*l+1];if(null==m)return m=g.fc(a,b+5,c,d,e,f),m===g?this:ri(this,a,2*l+1,m);if(ji(d,m))return e===g?this:ri(this,a,2*l+1,e);f.v=!0;f=b+5;d=Ai?Ai(a,f,m,g,c,d,e):Bi.call(null,a,f,m,g,c,d,e);e=2*l;l=2*l+1;a=\nthis.Ec(a);a.o[e]=null;a.o[l]=d;return a};\nh.ec=function(a,b,c,d,e){var f=1<<(b>>>a&31),g=mf(this.ra&f-1);if(0===(this.ra&f)){var l=mf(this.ra);if(16<=l){g=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];g[b>>>a&31]=yi.ec(a+5,b,c,d,e);for(d=c=0;;)if(32>c)0===(this.ra>>>c&1)?c+=1:(g[c]=null!=this.o[d]?yi.ec(a+5,xd(this.o[d]),this.o[d],this.o[d+1],e):this.o[d+1],d+=2,c+=1);else break;return new zi(null,l+1,g)}a=Array(2*(l+1));Ne(this.o,\n0,a,0,2*g);a[2*g]=c;a[2*g+1]=d;Ne(this.o,2*g,a,2*(g+1),2*(l-g));e.v=!0;return new ui(null,this.ra|f,a)}var m=this.o[2*g];f=this.o[2*g+1];if(null==m)return l=f.ec(a+5,b,c,d,e),l===f?this:new ui(null,this.ra,pi(this.o,2*g+1,l));if(ji(c,m))return d===f?this:new ui(null,this.ra,pi(this.o,2*g+1,d));e.v=!0;e=this.ra;l=this.o;a+=5;a=Ci?Ci(a,m,f,b,c,d):Bi.call(null,a,m,f,b,c,d);c=2*g;g=2*g+1;d=Lb(l);d[c]=null;d[g]=a;return new ui(null,e,d)};\nh.Md=function(a,b,c,d){var e=1<<(b>>>a&31);if(0===(this.ra&e))return d;var f=mf(this.ra&e-1);e=this.o[2*f];f=this.o[2*f+1];return null==e?f.Md(a+5,b,c,d):ji(c,e)?new xh(e,f):d};\nh.Od=function(a,b,c){var d=1<<(b>>>a&31);if(0===(this.ra&d))return this;var e=mf(this.ra&d-1),f=this.o[2*e],g=this.o[2*e+1];return null==f?(a=g.Od(a+5,b,c),a===g?this:null!=a?new ui(null,this.ra,pi(this.o,2*e+1,a)):this.ra===d?null:new ui(null,this.ra^d,qi(this.o,e))):ji(c,f)?this.ra===d?null:new ui(null,this.ra^d,qi(this.o,e)):this};h.xa=function(){return new ti(this.o)};var yi=new ui(null,0,[]);\nfunction Di(a,b,c){var d=a.o,e=d.length;a=Array(2*(a.H-1));for(var f=0,g=1,l=0;;)if(f>>b&31,g=this.o[f];if(null==g)return this;b=g.Pd(a,b+5,c,d,e);if(b===g)return this;if(null==b){if(8>=this.H)return Di(this,a,f);a=ri(this,a,f,b);--a.H;return a}return ri(this,a,f,b)};h.Nd=function(){return Fi?Fi(this.o):Gi.call(null,this.o)};\nh.$c=function(a,b){for(var c=this.o.length,d=0;;)if(d>>a&31];return null!=e?e.Pc(a+5,b,c,d):d};h.fc=function(a,b,c,d,e,f){var g=c>>>b&31,l=this.o[g];if(null==l)return a=ri(this,a,g,yi.fc(a,b+5,c,d,e,f)),a.H+=1,a;b=l.fc(a,b+5,c,d,e,f);return b===l?this:ri(this,a,g,b)};\nh.ec=function(a,b,c,d,e){var f=b>>>a&31,g=this.o[f];if(null==g)return new zi(null,this.H+1,pi(this.o,f,yi.ec(a+5,b,c,d,e)));a=g.ec(a+5,b,c,d,e);return a===g?this:new zi(null,this.H,pi(this.o,f,a))};h.Md=function(a,b,c,d){var e=this.o[b>>>a&31];return null!=e?e.Md(a+5,b,c,d):d};h.Od=function(a,b,c){var d=b>>>a&31,e=this.o[d];return null!=e?(a=e.Od(a+5,b,c),a===e?this:null==a?8>=this.H?Di(this,null,d):new zi(null,this.H-1,pi(this.o,d,a)):new zi(null,this.H,pi(this.o,d,a))):this};h.xa=function(){return new Ei(this.o)};\nfunction Hi(a,b,c){b*=2;for(var d=0;;)if(da?d:ji(c,this.o[a])?this.o[a+1]:d};\nh.fc=function(a,b,c,d,e,f){if(c===this.Cc){b=Hi(this.o,this.H,d);if(-1===b){if(this.o.length>2*this.H)return b=2*this.H,c=2*this.H+1,a=this.Ec(a),a.o[b]=d,a.o[c]=e,f.v=!0,a.H+=1,a;c=this.o.length;b=Array(c+2);Ne(this.o,0,b,0,c);b[c]=d;b[c+1]=e;f.v=!0;d=this.H+1;a===this.ya?(this.o=b,this.H=d,a=this):a=new Ii(this.ya,this.Cc,d,b);return a}return this.o[b+1]===e?this:ri(this,a,b+1,e)}return(new ui(a,1<<(this.Cc>>>b&31),[null,this,null,null])).fc(a,b,c,d,e,f)};\nh.ec=function(a,b,c,d,e){return b===this.Cc?(a=Hi(this.o,this.H,c),-1===a?(a=2*this.H,b=Array(a+2),Ne(this.o,0,b,0,a),b[a]=c,b[a+1]=d,e.v=!0,new Ii(null,this.Cc,this.H+1,b)):x.h(this.o[a+1],d)?this:new Ii(null,this.Cc,this.H,pi(this.o,a+1,d))):(new ui(null,1<<(this.Cc>>>a&31),[null,this])).ec(a,b,c,d,e)};h.Md=function(a,b,c,d){a=Hi(this.o,this.H,c);return 0>a?d:ji(c,this.o[a])?new xh(this.o[a],this.o[a+1]):d};\nh.Od=function(a,b,c){a=Hi(this.o,this.H,c);return-1===a?this:1===this.H?null:new Ii(null,this.Cc,this.H-1,qi(this.o,kf(a,2)))};h.xa=function(){return new ti(this.o)};function Bi(a){switch(arguments.length){case 6:return Ci(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]);case 7:return Ai(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6]);default:throw Error([\"Invalid arity: \",p.g(arguments.length)].join(\"\"));}}\nfunction Ci(a,b,c,d,e,f){var g=xd(b);if(g===d)return new Ii(null,g,2,[b,c,e,f]);var l=new oi;return yi.ec(a,g,b,c,l).ec(a,d,e,f,l)}function Ai(a,b,c,d,e,f,g){var l=xd(c);if(l===e)return new Ii(null,l,2,[c,d,f,g]);var m=new oi;return yi.fc(a,b,l,c,d,m).fc(a,b,e,f,g,m)}function Ji(a,b,c,d,e){this.K=a;this.va=b;this.N=c;this.ka=d;this.G=e;this.B=32374988;this.M=0}h=Ji.prototype;h.toString=function(){return pd(this)};\nh.indexOf=function(){var a=null;a=function(b,c){switch(arguments.length){case 1:return de(this,b,0);case 2:return de(this,b,c)}throw Error(\"Invalid arity: \"+arguments.length);};a.g=function(b){return de(this,b,0)};a.h=function(b,c){return de(this,b,c)};return a}();\nh.lastIndexOf=function(){function a(c){return ge(this,c,C(this))}var b=null;b=function(c,d){switch(arguments.length){case 1:return a.call(this,c);case 2:return ge(this,c,d)}throw Error(\"Invalid arity: \"+arguments.length);};b.g=a;b.h=function(c,d){return ge(this,c,d)};return b}();h.R=function(){return this.K};h.Aa=function(){if(null==this.ka){var a=this.va,b=this.N+2;return Ki?Ki(a,b,null):xi.call(null,a,b,null)}a=this.va;b=this.N;var c=B(this.ka);return Ki?Ki(a,b,c):xi.call(null,a,b,c)};\nh.ba=function(){var a=this.G;return null!=a?a:this.G=a=Nd(this)};h.aa=function(a,b){return je(this,b)};h.sa=function(){return Id};h.Ea=function(a,b){return le(b,this)};h.Fa=function(a,b,c){return ne(b,c,this)};h.Ga=function(){return null==this.ka?new xh(this.va[this.N],this.va[this.N+1]):A(this.ka)};\nh.Ia=function(){var a=this,b=null==a.ka?function(){var c=a.va,d=a.N+2;return Ki?Ki(c,d,null):xi.call(null,c,d,null)}():function(){var c=a.va,d=a.N,e=B(a.ka);return Ki?Ki(c,d,e):xi.call(null,c,d,e)}();return null!=b?b:Id};h.ca=function(){return this};h.S=function(a,b){return b===this.K?this:new Ji(b,this.va,this.N,this.ka,this.G)};h.ia=function(a,b){return ke(b,this)};Ji.prototype[Gb]=function(){return Kd(this)};\nfunction xi(a){switch(arguments.length){case 1:return wi(arguments[0]);case 3:return Ki(arguments[0],arguments[1],arguments[2]);default:throw Error([\"Invalid arity: \",p.g(arguments.length)].join(\"\"));}}function wi(a){return Ki(a,0,null)}function Ki(a,b,c){if(null==c)for(c=a.length;;)if(bthis.H?C(B(this))+1:this.H};\nh.ba=function(){var a=this.G;return null!=a?a:this.G=a=Nd(this)};h.aa=function(a,b){return je(this,b)};h.sa=function(){return Id};h.Ea=function(a,b){return le(b,this)};h.Fa=function(a,b,c){return ne(b,c,this)};h.Ga=function(){return Be(this.stack)};h.Ia=function(){var a=A(this.stack);a=Ti(this.Rc?a.right:a.left,B(this.stack),this.Rc);return null!=a?new Ui(null,a,this.Rc,this.H-1,null):Id};h.ca=function(){return this};h.S=function(a,b){return b===this.K?this:new Ui(b,this.stack,this.Rc,this.H,this.G)};\nh.ia=function(a,b){return ke(b,this)};Ui.prototype[Gb]=function(){return Kd(this)};function Vi(a,b,c){return new Ui(null,Ti(a,null,b),b,c,null)}function Wi(a,b,c,d){return c instanceof Xi?c.left instanceof Xi?new Xi(c.key,c.v,c.left.vc(),new Yi(a,b,c.right,d)):c.right instanceof Xi?new Xi(c.right.key,c.right.v,new Yi(c.key,c.v,c.left,c.right.left),new Yi(a,b,c.right.right,d)):new Yi(a,b,c,d):new Yi(a,b,c,d)}\nfunction Zi(a,b,c,d){return d instanceof Xi?d.right instanceof Xi?new Xi(d.key,d.v,new Yi(a,b,c,d.left),d.right.vc()):d.left instanceof Xi?new Xi(d.left.key,d.left.v,new Yi(a,b,c,d.left.left),new Yi(d.key,d.v,d.left.right,d.right)):new Yi(a,b,c,d):new Yi(a,b,c,d)}\nfunction $i(a,b,c,d){if(c instanceof Xi)return new Xi(a,b,c.vc(),d);if(d instanceof Yi)return Zi(a,b,c,d.Td());if(d instanceof Xi&&d.left instanceof Yi)return new Xi(d.left.key,d.left.v,new Yi(a,b,c,d.left.left),Zi(d.key,d.v,d.left.right,d.right.Td()));throw Error(\"red-black tree invariant violation\");}\nfunction aj(a,b,c,d){if(d instanceof Xi)return new Xi(a,b,c,d.vc());if(c instanceof Yi)return Wi(a,b,c.Td(),d);if(c instanceof Xi&&c.right instanceof Yi)return new Xi(c.right.key,c.right.v,Wi(c.key,c.v,c.left.Td(),c.right.left),new Yi(a,b,c.right.right,d));throw Error(\"red-black tree invariant violation\");}\nvar bj=function bj(a,b,c){var e=null!=a.left?function(){var l=a.left;return bj.j?bj.j(l,b,c):bj.call(null,l,b,c)}():c;if(Ud(e))return e;var f=function(){var l=a.key,m=a.v;return b.j?b.j(e,l,m):b.call(null,e,l,m)}();if(Ud(f))return f;if(null!=a.right){var g=a.right;return bj.j?bj.j(g,b,f):bj.call(null,g,b,f)}return f};function Yi(a,b,c,d){this.key=a;this.v=b;this.left=c;this.right=d;this.G=null;this.B=166619935;this.M=0}h=Yi.prototype;\nh.zc=function(a,b){switch(b){case 0:return new xh(0,this.key);case 1:return new xh(1,this.v);default:return null}};h.lastIndexOf=function(){function a(c){return ge(this,c,C(this))}var b=null;b=function(c,d){switch(arguments.length){case 1:return a.call(this,c);case 2:return ge(this,c,d)}throw Error(\"Invalid arity: \"+arguments.length);};b.g=a;b.h=function(c,d){return ge(this,c,d)};return b}();\nh.indexOf=function(){var a=null;a=function(b,c){switch(arguments.length){case 1:return de(this,b,0);case 2:return de(this,b,c)}throw Error(\"Invalid arity: \"+arguments.length);};a.g=function(b){return de(this,b,0)};a.h=function(b,c){return de(this,b,c)};return a}();h.rf=function(a){return a.uf(this)};h.Td=function(){return new Xi(this.key,this.v,this.left,this.right)};h.vc=function(){return this};h.qf=function(a){return a.tf(this)};h.replace=function(a,b,c,d){return new Yi(a,b,c,d)};\nh.tf=function(a){return new Yi(a.key,a.v,this,a.right)};h.uf=function(a){return new Yi(a.key,a.v,a.left,this)};h.$c=function(a,b){return bj(this,a,b)};h.na=function(a,b){return this.Ba(null,b,null)};h.P=function(a,b,c){return this.Ba(null,b,c)};h.$=function(a,b){if(0===b)return this.key;if(1===b)return this.v;throw Error(\"Index out of bounds\");};h.Ba=function(a,b,c){return 0===b?this.key:1===b?this.v:c};h.Kb=function(a,b,c){return(new Q(null,2,5,S,[this.key,this.v],null)).Kb(null,b,c)};h.R=function(){return null};\nh.da=function(){return 2};h.He=function(){return this.key};h.Ie=function(){return this.v};h.Ub=function(){return this.v};h.Vb=function(){return new Q(null,1,5,S,[this.key],null)};h.Ac=function(){return new Fd([this.v,this.key],0,null)};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=Nd(this)};h.aa=function(a,b){return je(this,b)};h.sa=function(){return null};h.Ea=function(a,b){return Xd(this,b)};h.Fa=function(a,b,c){return Yd(this,b,c)};\nh.ja=function(a,b,c){return I.j(new Q(null,2,5,S,[this.key,this.v],null),b,c)};h.za=function(a,b){return 0===b||1===b};h.ca=function(){return new Fd([this.key,this.v],0,null)};h.S=function(a,b){return Bc(new Q(null,2,5,S,[this.key,this.v],null),b)};h.ia=function(a,b){return new Q(null,3,5,S,[this.key,this.v,b],null)};\nh.call=function(a){switch(arguments.length-1){case 1:return this.g(arguments[1]);case 2:return this.h(arguments[1],arguments[2]);default:throw Error([\"Invalid arity: \",p.g(arguments.length-1)].join(\"\"));}};h.apply=function(a,b){return this.call.apply(this,[this].concat(Lb(b)))};h.g=function(a){return this.$(null,a)};h.h=function(a,b){return this.Ba(null,a,b)};Yi.prototype[Gb]=function(){return Kd(this)};\nfunction Xi(a,b,c,d){this.key=a;this.v=b;this.left=c;this.right=d;this.G=null;this.B=166619935;this.M=0}h=Xi.prototype;h.zc=function(a,b){switch(b){case 0:return new xh(0,this.key);case 1:return new xh(1,this.v);default:return null}};\nh.lastIndexOf=function(){function a(c){return ge(this,c,C(this))}var b=null;b=function(c,d){switch(arguments.length){case 1:return a.call(this,c);case 2:return ge(this,c,d)}throw Error(\"Invalid arity: \"+arguments.length);};b.g=a;b.h=function(c,d){return ge(this,c,d)};return b}();\nh.indexOf=function(){var a=null;a=function(b,c){switch(arguments.length){case 1:return de(this,b,0);case 2:return de(this,b,c)}throw Error(\"Invalid arity: \"+arguments.length);};a.g=function(b){return de(this,b,0)};a.h=function(b,c){return de(this,b,c)};return a}();h.rf=function(a){return new Xi(this.key,this.v,this.left,a)};h.Td=function(){throw Error(\"red-black tree invariant violation\");};h.vc=function(){return new Yi(this.key,this.v,this.left,this.right)};\nh.qf=function(a){return new Xi(this.key,this.v,a,this.right)};h.replace=function(a,b,c,d){return new Xi(a,b,c,d)};h.tf=function(a){return this.left instanceof Xi?new Xi(this.key,this.v,this.left.vc(),new Yi(a.key,a.v,this.right,a.right)):this.right instanceof Xi?new Xi(this.right.key,this.right.v,new Yi(this.key,this.v,this.left,this.right.left),new Yi(a.key,a.v,this.right.right,a.right)):new Yi(a.key,a.v,this,a.right)};\nh.uf=function(a){return this.right instanceof Xi?new Xi(this.key,this.v,new Yi(a.key,a.v,a.left,this.left),this.right.vc()):this.left instanceof Xi?new Xi(this.left.key,this.left.v,new Yi(a.key,a.v,a.left,this.left.left),new Yi(this.key,this.v,this.left.right,this.right)):new Yi(a.key,a.v,a.left,this)};h.$c=function(a,b){return bj(this,a,b)};h.na=function(a,b){return this.Ba(null,b,null)};h.P=function(a,b,c){return this.Ba(null,b,c)};\nh.$=function(a,b){if(0===b)return this.key;if(1===b)return this.v;throw Error(\"Index out of bounds\");};h.Ba=function(a,b,c){return 0===b?this.key:1===b?this.v:c};h.Kb=function(a,b,c){return(new Q(null,2,5,S,[this.key,this.v],null)).Kb(null,b,c)};h.R=function(){return null};h.da=function(){return 2};h.He=function(){return this.key};h.Ie=function(){return this.v};h.Ub=function(){return this.v};h.Vb=function(){return new Q(null,1,5,S,[this.key],null)};\nh.Ac=function(){return new Fd([this.v,this.key],0,null)};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=Nd(this)};h.aa=function(a,b){return je(this,b)};h.sa=function(){return null};h.Ea=function(a,b){return Xd(this,b)};h.Fa=function(a,b,c){return Yd(this,b,c)};h.ja=function(a,b,c){return I.j(new Q(null,2,5,S,[this.key,this.v],null),b,c)};h.za=function(a,b){return 0===b||1===b};h.ca=function(){return new Fd([this.key,this.v],0,null)};\nh.S=function(a,b){return Bc(new Q(null,2,5,S,[this.key,this.v],null),b)};h.ia=function(a,b){return new Q(null,3,5,S,[this.key,this.v,b],null)};h.call=function(a){switch(arguments.length-1){case 1:return this.g(arguments[1]);case 2:return this.h(arguments[1],arguments[2]);default:throw Error([\"Invalid arity: \",p.g(arguments.length-1)].join(\"\"));}};h.apply=function(a,b){return this.call.apply(this,[this].concat(Lb(b)))};h.g=function(a){return this.$(null,a)};\nh.h=function(a,b){return this.Ba(null,a,b)};Xi.prototype[Gb]=function(){return Kd(this)};\nvar cj=function cj(a,b,c,d,e){if(null==b)return new Xi(c,d,null,null);var g=function(){var l=b.key;return a.h?a.h(c,l):a.call(null,c,l)}();if(0===g)return e[0]=b,null;if(0>g)return g=function(){var l=b.left;return cj.O?cj.O(a,l,c,d,e):cj.call(null,a,l,c,d,e)}(),null!=g?b.qf(g):null;g=function(){var l=b.right;return cj.O?cj.O(a,l,c,d,e):cj.call(null,a,l,c,d,e)}();return null!=g?b.rf(g):null},dj=function dj(a,b){if(null==a)return b;if(null==b)return a;if(a instanceof Xi){if(b instanceof Xi){var d=function(){var e=\na.right,f=b.left;return dj.h?dj.h(e,f):dj.call(null,e,f)}();return d instanceof Xi?new Xi(d.key,d.v,new Xi(a.key,a.v,a.left,d.left),new Xi(b.key,b.v,d.right,b.right)):new Xi(a.key,a.v,a.left,new Xi(b.key,b.v,d,b.right))}return new Xi(a.key,a.v,a.left,function(){var e=a.right;return dj.h?dj.h(e,b):dj.call(null,e,b)}())}if(b instanceof Xi)return new Xi(b.key,b.v,function(){var e=b.left;return dj.h?dj.h(a,e):dj.call(null,a,e)}(),b.right);d=function(){var e=a.right,f=b.left;return dj.h?dj.h(e,f):dj.call(null,\ne,f)}();return d instanceof Xi?new Xi(d.key,d.v,new Yi(a.key,a.v,a.left,d.left),new Yi(b.key,b.v,d.right,b.right)):$i(a.key,a.v,a.left,new Yi(b.key,b.v,d,b.right))},ej=function ej(a,b,c,d){if(null!=b){var f=function(){var g=b.key;return a.h?a.h(c,g):a.call(null,c,g)}();if(0===f)return d[0]=b,dj(b.left,b.right);if(0>f)return f=function(){var g=b.left;return ej.F?ej.F(a,g,c,d):ej.call(null,a,g,c,d)}(),null!=f||null!=d[0]?b.left instanceof Yi?$i(b.key,b.v,f,b.right):new Xi(b.key,b.v,f,b.right):null;\nf=function(){var g=b.right;return ej.F?ej.F(a,g,c,d):ej.call(null,a,g,c,d)}();return null!=f||null!=d[0]?b.right instanceof Yi?aj(b.key,b.v,b.left,f):new Xi(b.key,b.v,b.left,f):null}return null},fj=function fj(a,b,c,d){var f=b.key,g=a.h?a.h(c,f):a.call(null,c,f);return 0===g?b.replace(f,d,b.left,b.right):0>g?b.replace(f,b.v,function(){var l=b.left;return fj.F?fj.F(a,l,c,d):fj.call(null,a,l,c,d)}(),b.right):b.replace(f,b.v,b.left,function(){var l=b.right;return fj.F?fj.F(a,l,c,d):fj.call(null,a,l,\nc,d)}())};function gj(a,b,c,d,e){this.Ob=a;this.Kc=b;this.H=c;this.K=d;this.G=e;this.B=418776847;this.M=8192}h=gj.prototype;h.zc=function(a,b){return hj(this,b)};h.forEach=function(a){for(var b=z(this),c=null,d=0,e=0;;)if(ed?c.left:c.right}else return null}h.has=function(a){return M(this,a)};h.na=function(a,b){return this.P(null,b,null)};\nh.P=function(a,b,c){a=hj(this,b);return null!=a?a.v:c};h.Ka=function(a,b,c){return null!=this.Kc?Vd(bj(this.Kc,b,c)):c};h.R=function(){return this.K};h.da=function(){return this.H};h.Ac=function(){return 0(a.g?a.g(c):a.call(null,c))?b:c};\nCj.l=function(a,b,c,d){return Nb.j(function(e,f){return Cj.j(a,e,f)},Cj.j(a,b,c),d)};Cj.J=function(a){var b=A(a),c=B(a);a=A(c);var d=B(c);c=A(d);d=B(d);return this.l(b,a,c,d)};Cj.I=3;function Dj(){this.o=[]}Dj.prototype.add=function(a){return this.o.push(a)};Dj.prototype.size=function(){return this.o.length};Dj.prototype.clear=function(){return this.o=[]};Dj.prototype.Qd=function(){return 0===this.o.length};\nfunction Ej(){return function(a){var b=new Dj;return function(){function c(g,l){b.add(l);return 2===b.size()?(l=Eh(b.o),b.clear(),a.h?a.h(g,l):a.call(null,g,l)):g}function d(g){if(!n(b.Qd())){var l=Eh(b.o);b.clear();g=Vd(a.h?a.h(g,l):a.call(null,g,l))}return a.g?a.g(g):a.call(null,g)}function e(){return a.A?a.A():a.call(null)}var f=null;f=function(g,l){switch(arguments.length){case 0:return e.call(this);case 1:return d.call(this,g);case 2:return c.call(this,g,l)}throw Error(\"Invalid arity: \"+arguments.length);\n};f.A=e;f.g=d;f.h=c;return f}()}}function Yt(a,b,c){return new Df(null,function(){var d=z(c);return d?ke(Og.h(a,d),Yt(a,b,Pg(b,d))):null},null,null)}function Fj(a,b){return new Df(null,function(){var c=z(b);if(c){var d=A(c);d=a.g?a.g(d):a.call(null,d);c=n(d)?ke(A(c),Fj(a,Hd(c))):null}else c=null;return c},null,null)}function Gj(a,b,c){this.start=a;this.step=b;this.count=c;this.B=82;this.M=0}h=Gj.prototype;h.da=function(){return this.count};h.Ga=function(){return this.start};\nh.$=function(a,b){return this.start+b*this.step};h.Ba=function(a,b,c){return 0<=b&&b=this.count)throw Error(\"-drop-first of empty chunk\");return new Gj(this.start+this.step,this.step,this.count-1)};function Hj(a,b,c){this.N=a;this.end=b;this.step=c}Hj.prototype.ua=function(){return 0this.end};Hj.prototype.next=function(){var a=this.N;this.N+=this.step;return a};\nfunction Ij(a,b,c,d,e,f,g){this.K=a;this.start=b;this.end=c;this.step=d;this.Oa=e;this.yc=f;this.G=g;this.B=32375006;this.M=140800}h=Ij.prototype;h.toString=function(){return pd(this)};h.indexOf=function(){var a=null;a=function(b,c){switch(arguments.length){case 1:return de(this,b,0);case 2:return de(this,b,c)}throw Error(\"Invalid arity: \"+arguments.length);};a.g=function(b){return de(this,b,0)};a.h=function(b,c){return de(this,b,c)};return a}();\nh.lastIndexOf=function(){function a(c){return ge(this,c,C(this))}var b=null;b=function(c,d){switch(arguments.length){case 1:return a.call(this,c);case 2:return ge(this,c,d)}throw Error(\"Invalid arity: \"+arguments.length);};b.g=a;b.h=function(c,d){return ge(this,c,d)};return b}();h.Kd=function(){if(null==this.Oa){var a=this.da(null);32this.end&&0===this.step)return this.start;throw Error(\"Index out of bounds\");};h.Ba=function(a,b,c){return 0<=b&&bthis.end&&0===this.step?this.start:c};h.xa=function(){return new Hj(this.start,this.end,this.step)};h.R=function(){return this.K};\nh.Aa=function(){return 0this.end?new Ij(null,this.start+this.step,this.end,this.step,null,null,null):null};h.da=function(){return Math.ceil((this.end-this.start)/this.step)};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=Nd(this)};h.aa=function(a,b){return je(this,b)};h.sa=function(){return Id};h.Ea=function(a,b){return Xd(this,b)};\nh.Fa=function(a,b,c){for(a=this.start;;)if(0this.end){c=b.h?b.h(c,a):b.call(null,c,a);if(Ud(c))return r(c);a+=this.step}else return c};h.Ga=function(){return this.start};h.Ia=function(){var a=this.Aa(null);return null==a?Id:a};h.ca=function(){return this};h.yd=function(){this.Kd();return this.Oa};h.Mc=function(){this.Kd();return null==this.yc?Id:this.yc};h.S=function(a,b){return b===this.K?this:new Ij(b,this.start,this.end,this.step,this.Oa,this.yc,this.G)};\nh.ia=function(a,b){return ke(b,this)};h.be=function(){return z(this.Mc(null))};Ij.prototype[Gb]=function(){return Kd(this)};function Jj(a,b,c,d,e,f,g){this.K=a;this.start=b;this.end=c;this.step=d;this.Oa=e;this.yc=f;this.G=g;this.M=140800;this.B=32374988}h=Jj.prototype;h.toString=function(){return pd(this)};\nh.indexOf=function(){var a=null;a=function(b,c){switch(arguments.length){case 1:return de(this,b,0);case 2:return de(this,b,c)}throw Error(\"Invalid arity: \"+arguments.length);};a.g=function(b){return de(this,b,0)};a.h=function(b,c){return de(this,b,c)};return a}();\nh.lastIndexOf=function(){function a(c){return ge(this,c,C(this))}var b=null;b=function(c,d){switch(arguments.length){case 1:return a.call(this,c);case 2:return ge(this,c,d)}throw Error(\"Invalid arity: \"+arguments.length);};b.g=a;b.h=function(c,d){return ge(this,c,d)};return b}();\nh.Kd=function(){if(null==this.Oa){var a=[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null];a:{var b=0;for(var c=this.start;;)if(32>b){if(a[b]=c,b+=1,c+=this.step,!(0this.end)){b=this.Oa=new Gf(a,0,b);break a}}else{b=c;break a}}null==this.Oa&&(this.Oa=new Gf(a,0,32),(0this.end)&&(this.yc=new Jj(null,b,this.end,this.step,null,null,null)))}};\nh.xa=function(){return new Hj(this.start,this.end,this.step)};h.R=function(){return this.K};h.Aa=function(){return 0this.end?new Jj(null,this.start+this.step,this.end,this.step,null,null,null):null};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=Nd(this)};h.aa=function(a,b){return je(this,b)};h.sa=function(){return Id};h.Ea=function(a,b){return le(b,this)};\nh.Fa=function(a,b,c){for(a=this.start;;)if(0this.end){c=b.h?b.h(c,a):b.call(null,c,a);if(Ud(c))return r(c);a+=this.step}else return c};h.Ga=function(){return this.start};h.Ia=function(){var a=this.Aa(null);return null==a?Id:a};h.ca=function(){return this};h.yd=function(){this.Kd();return this.Oa};h.Mc=function(){this.Kd();return null==this.yc?Id:this.yc};h.S=function(a,b){return b===this.K?this:new Jj(b,this.start,this.end,this.step,this.Oa,this.yc,this.G)};\nh.ia=function(a,b){return ke(b,this)};h.be=function(){return z(this.Mc(null))};Jj.prototype[Gb]=function(){return Kd(this)};function Kj(a){return 1>=a?Id:Se(1)&&Se(a)&&Se(1)?new Ij(null,1,a,1,null,null,null):new Jj(null,1,a,1,null,null,null)}function Lj(a,b){return new Df(null,function(){var c=z(b);return c?ke(A(c),Lj(a,Pg(a,c))):null},null,null)}function Mj(a){return Zc(Nb.j(function(b,c){return Qf(b,c,u.j(b,c,0)+1)},Xc(P),a))}\nfunction Nj(a,b){return function(){function c(m,q,t){return new Q(null,2,5,S,[a.j?a.j(m,q,t):a.call(null,m,q,t),b.j?b.j(m,q,t):b.call(null,m,q,t)],null)}function d(m,q){return new Q(null,2,5,S,[a.h?a.h(m,q):a.call(null,m,q),b.h?b.h(m,q):b.call(null,m,q)],null)}function e(m){return new Q(null,2,5,S,[a.g?a.g(m):a.call(null,m),b.g?b.g(m):b.call(null,m)],null)}function f(){return new Q(null,2,5,S,[a.A?a.A():a.call(null),b.A?b.A():b.call(null)],null)}var g=null,l=function(){function m(t,v,y,E){var H=null;\nif(3g?1:g);return g<=b.length?(g=b.substring(g),Rj.h?Rj.h(a,g):Rj.call(null,a,g)):null},null,null))};function Sj(a){if(a instanceof RegExp)return a;var b=Qj(/^\\(\\?([idmsux]*)\\)/,a),c=G(b,0,null);b=G(b,1,null);return new RegExp(a.substring(null==c?0:c.length),n(b)?b:\"\")}\nfunction Tj(a,b,c,d,e,f,g){var l=jb;jb=null==jb?null:jb-1;try{if(null!=jb&&0>jb)return Qc(a,\"#\");Qc(a,c);if(0===tb.g(f))z(g)&&Qc(a,function(){var E=Uj.g(f);return n(E)?E:\"...\"}());else{if(z(g)){var m=A(g);b.j?b.j(m,a,f):b.call(null,m,a,f)}for(var q=B(g),t=tb.g(f)-1;;)if(!q||null!=t&&0===t){z(q)&&0===t&&(Qc(a,d),Qc(a,function(){var E=Uj.g(f);return n(E)?E:\"...\"}()));break}else{Qc(a,d);var v=A(q);c=a;g=f;b.j?b.j(v,c,g):b.call(null,v,c,g);var y=B(q);c=t-1;q=y;t=c}}return Qc(a,e)}finally{jb=l}}\nfunction Vj(a,b){b=z(b);for(var c=null,d=0,e=0;;)if(ethis.head?(aH(this.o,this.wa,a,0,this.o.length-this.wa),aH(this.o,0,a,this.o.length-this.wa,this.head),this.wa=0,this.head=this.length,this.o=a):this.wa===this.head?(this.head=this.wa=0,this.o=a):null};h.cleanup=function(a){for(var b=this.length,c=0;;)if(c=this.n};dH.prototype.ce=function(a,b){this.ga.unbounded_unshift(b);return this};dH.prototype.da=function(){return this.ga.length};function eH(a,b){this.ga=a;this.n=b;this.B=2;this.M=0}eH.prototype.Fd=function(){return!1};eH.prototype.ce=function(a,b){this.ga.length!==this.n&&this.ga.unshift(b);return this};eH.prototype.da=function(){return this.ga.length};\nfunction dZ(a,b){this.ga=a;this.n=b;this.B=2;this.M=0}dZ.prototype.Fd=function(){return!1};dZ.prototype.ce=function(a,b){this.ga.length===this.n&&this.ga.pop();this.ga.unshift(b);return this};dZ.prototype.da=function(){return this.ga.length};function fH(){return Ta(\"iPhone\")&&!Ta(\"iPod\")&&!Ta(\"iPad\")};Ta(\"Opera\");var gH=Ta(\"Trident\")||Ta(\"MSIE\");Ta(\"Edge\");var hH=Ta(\"Gecko\")&&!(-1!=Sa.toLowerCase().indexOf(\"webkit\")&&!Ta(\"Edge\"))&&!(Ta(\"Trident\")||Ta(\"MSIE\"))&&!Ta(\"Edge\"),iH=-1!=Sa.toLowerCase().indexOf(\"webkit\")&&!Ta(\"Edge\");iH&&Ta(\"Mobile\");Ta(\"Macintosh\");Ta(\"Windows\");Ta(\"Linux\")||Ta(\"CrOS\");var eZ=aa.navigator||null;eZ&&(eZ.appVersion||\"\").indexOf(\"X11\");Ta(\"Android\");fH();Ta(\"iPad\");Ta(\"iPod\");fH()||Ta(\"iPad\")||Ta(\"iPod\");Sa.toLowerCase().indexOf(\"kaios\");function kH(){var a=document;var b=\"IFRAME\";\"application/xhtml+xml\"===a.contentType&&(b=b.toLowerCase());return a.createElement(b)};var lH;\nfunction mH(){var a=aa.MessageChannel;\"undefined\"===typeof a&&\"undefined\"!==typeof window&&window.postMessage&&window.addEventListener&&!Ta(\"Presto\")&&(a=function(){var e=kH();e.style.display=\"none\";document.documentElement.appendChild(e);var f=e.contentWindow;e=f.document;e.open();e.close();var g=\"callImmediate\"+Math.random(),l=\"file:\"==f.location.protocol?\"*\":f.location.protocol+\"//\"+f.location.host;e=la(function(m){if((\"*\"==l||m.origin==l)&&m.data==g)this.port1.onmessage()},this);f.addEventListener(\"message\",e,\n!1);this.port1={};this.port2={postMessage:function(){f.postMessage(g,l)}}});if(\"undefined\"!==typeof a&&!Ta(\"Trident\")&&!Ta(\"MSIE\")){var b=new a,c={},d=c;b.port1.onmessage=function(){if(void 0!==c.next){c=c.next;var e=c.Zd;c.Zd=null;e()}};return function(e){d.next={Zd:e};d=d.next;b.port2.postMessage(0)}}return function(e){aa.setTimeout(e,0)}};var nH=cH(32),oH=!1,pH=!1;function qH(){oH=!0;pH=!1;for(var a=0;;){var b=nH.pop();if(null!=b&&(b.A?b.A():b.call(null),1024>a)){a+=1;continue}break}oH=!1;return 0c)return a;a:for(;;){var e=cMath.random()&&15>d)d+=1;else break a;if(d>this.level){for(var e=this.level+1;;)if(e<=d+1)c[e]=this.Hc,e+=1;else break;this.level=d}a=FH(a,b,Array(d));for(b=0;;)if(b<=this.level)d=c[b].forward,bc)return x.h(b.key,a)?b:b.forward[0];var d;a:for(d=b;;){var e=ca)break a;d=e}else{d=0===c?d:null;break a}}n(d)?(--c,b=d):--c}};h.floorEntry=function(a){for(var b=this.Hc,c=this.level;;){if(0>c)return b===this.Hc?null:b;var d;a:for(d=b;;){var e=ca)break a;d=e}else{d=0===c?d:null;break a}}n(d)?(--c,b=d):--c}};\nh.ca=function(){return function c(b){return new Df(null,function(){return null==b?null:ke(new Q(null,2,5,S,[b.key,b.v],null),c(b.forward[0]))},null,null)}(this.Hc.forward[0])};h.U=function(a,b,c){return Tj(b,function(d){return Tj(b,bk,\"\",\" \",\"\",c,d)},\"{\",\", \",\"}\",c,this)};var r2=new HH;function s2(a){var b=(new Date).valueOf()+a,c=r2.ceilingEntry(b);c=n(n(c)?c.key=C(b)){a=II.h?II.h(this,b):II.call(null,this,b);var c=this.H+C(b),d=ah.h(this.ma,b),e=this.nd;return new GI(d,a,Md(a,c),c,e?e:b.nd)}a=II.h?II.h(this,b):II.call(null,this,b);c=this.H+C(b);return new GI(re.h(this.ma,b),a,Md(a,c),c,!0)}a=qd(31,this.se)+xd(b);c=this.H+1;return new GI(re.h(this.ma,b),a,Md(a,c),c,this.nd)};\nfunction II(a,b){var c=C(b);a:if(0===c)c=1;else{c|=0;for(var d=1,e=31;;){var f=wg(c);c=kf(c,2);if(f)e=qd(e,e);else{if(0===c){c=qd(e,d);break a}d=qd(e,d);e=qd(e,e)}}}c|=0;return qd(c,a.se)+(b.se-c)}h.pa=cb;h.U=function(a,b,c){return Tc(z(this),b,c)};function JI(a){a=Eh(a);a:for(var b=1,c=z(a);;)if(null!=c)b=qd(31,b)+xd(A(c))|0,c=B(c);else break a;return new GI(a,b,xd(a),C(a),!1)}var HI=JI(F);function DI(a){return a instanceof GI}function FI(a){return DI(a)?C(a.ma):C(a)}\nvar KI=function KI(a,b){for(;;)if(z(b)){var d=A(b);DI(d)?(a=KI.h?KI.h(a,d):KI.call(null,a,d),b=B(b)):(a=Pf.h(a,d),b=B(b))}else return a};function LI(a,b,c,d){this.ma=a;this.Gc=b;this.H=c;this.flat=d;this.B=167142175;this.M=2048}h=LI.prototype;h.toString=function(){return pd(MI(this))};h.na=function(a,b){return MI(this).na(null,b)};h.P=function(a,b,c){return MI(this).P(null,b,c)};\nfunction MI(a){yb(r(a.flat))&&(Ig.h(a.flat,function(){var b=r(a.ma);b=Zc(KI(Xc(F),b));return ze(b,Ae(r(a.ma)))}),Ig.h(a.ma,function(){return null}));return r(a.flat)}h.Ka=function(a,b,c){return MI(this).Ka(null,b,c)};h.$=function(a,b){return MI(this).$(null,b)};h.Ba=function(a,b,c){return MI(this).Ba(null,b,c)};h.Kb=function(a,b,c){return MI(this).Kb(null,b,c)};h.R=function(){return n(r(this.flat))?Ae(r(this.flat)):Ae(r(this.ma))};h.da=function(){return this.H};h.Ub=function(){return MI(this).Ub(null)};\nh.Vb=function(){return MI(this).Vb(null)};h.Ac=function(){return 0=b||b>=2+C(a))return re.h(Eh(ke(\"\",Ng.h(p,z(a)))),\"\");if(n(of?Hc(1,b):nf.call(null,1,b)))return new Q(null,1,5,S,[a],null);if(n(of?Hc(2,b):nf.call(null,2,b)))return new Q(null,2,5,S,[\"\",a],null);b-=2;return re.h(Eh(ke(\"\",Nh(Eh(Ng.h(p,z(a))),0,b))),a.substring(b))}\nfunction TI(a,b,c){if(\"/(?:)/\"===p.g(b))b=SI(a,c);else if(1>c)b=Eh(p.g(a).split(b));else a:for(var d=c,e=F;;){if(1===d){b=re.h(e,a);break a}var f=Qj(b,a);if(null!=f){var g=a.indexOf(f);f=a.substring(g+C(f));--d;e=re.h(e,a.substring(0,g));a=f}else{b=re.h(e,a);break a}}if(0===c&&1=a?[\"0000\",p.g(a.toString(16))].join(\"\").substr(-4):a.toString(16)}function aJ(a){var b=bg(a);a=u.h(b,ft);b=u.h(b,mr);return x.h(a,b)?[\"%x\",p.g($I(a))].join(\"\"):[\"%x\",p.g($I(a)),\"-\",p.g($I(b))].join(\"\")}function WI(a){switch(arguments.length){case 1:return VI(arguments[0],!1);case 2:return VI(arguments[0],arguments[1]);default:throw Error([\"Invalid arity: \",p.g(arguments.length)].join(\"\"));}}\nfunction VI(a,b){var c=bg(a);a=u.h(c,Eq);var d=u.h(c,Qr),e=u.h(c,Rr),f=u.h(c,Ls),g=u.h(c,Y);if(n(function(){var m=yb(b);return m?jt.g(c):m}()))return[\"\\x3c\",p.g(VI(c,!0)),\"\\x3e\"].join(\"\");g=g instanceof w?g.W:null;switch(g){case \"epsilon\":return\"ε\";case \"opt\":return[p.g(XI(b,a)),\"?\"].join(\"\");case \"plus\":return[p.g(XI(b,a)),\"+\"].join(\"\");case \"star\":return[p.g(XI(b,a)),\"*\"].join(\"\");case \"rep\":return cg.h(Jq.g(c),EC.g(c))?[p.g(XI(b,a)),\"{\",p.g(Jq.g(c)),\",\",p.g(EC.g(c)),\"}\"].join(\"\"):[p.g(XI(b,a)),\n\"{\",p.g(Jq.g(c)),\"}\"].join(\"\");case \"alt\":return RI(\" | \",Ng.h(Bg(UI,new uj(null,new k(null,1,[yA,null],null),null),b),f));case \"ord\":return[p.g(UI(new uj(null,new k(null,1,[Hm,null],null),null),b,d)),\" / \",p.g(UI(new uj(null,new k(null,1,[Hm,null],null),null),b,e))].join(\"\");case \"cat\":return RI(\" \",Ng.h(Bg(UI,new uj(null,new k(null,2,[yA,null,Hm,null],null),null),b),f));case \"string\":var l=new Za;a=fb;d=eb;fb=!0;eb=function(m){return l.append(m)};try{gk(D([CB.g(c)]),kb())}finally{eb=d,fb=a}return p.g(l);\ncase \"string-ci\":l=new Za;a=fb;d=eb;fb=!0;eb=function(m){return l.append(m)};try{gk(D([CB.g(c)]),kb())}finally{eb=d,fb=a}return p.g(l);case \"char\":return aJ(c);case \"regexp\":return ZI(RA.g(c));case \"nt\":return rf(p.g(bt.g(c)),1);case \"look\":return[\"\\x26\",p.g(XI(b,a))].join(\"\");case \"neg\":return[\"!\",p.g(XI(b,a))].join(\"\");default:throw Error([\"No matching clause: \",p.g(g)].join(\"\"));}}\nfunction bJ(a,b){return x.h(Xv.g(Qn.g(b)),Co)?[\"\\x3c\",Cf(a),\"\\x3e \\x3d \",p.g(VI(b,!1))].join(\"\"):[Cf(a),\" \\x3d \",p.g(VI(b,!1))].join(\"\")}\nfunction cJ(a){a=bg(a);var b=u.h(a,hr),c=u.h(a,Bp);return RI(\"\\n\",ke(bJ(c,b.g?b.g(c):b.call(null,c)),function(){return function f(e){return new Df(null,function(){for(var g=e;;)if(g=z(g)){if(Me(g)){var l=ed(g),m=C(l),q=Hf(m);a:for(var t=0;;)if(t=c?\"^\":Xf(p,Of.h(Tg(c-1,\" \"),new Q(null,1,5,S,[\"^\"],null))):null]));c=zj(Ng.h(EF,Xg.h(rz,b)));a=zj(Ng.h(EF,Xg.h(xg(rz),b)));d=C(c)+C(a);0!==d&&(x.h(1,d)?lk(D([\"Expected:\"])):lk(D([\"Expected one of:\"])));c=z(c);d=null;for(var e=b=0;;)if(e=a))return null;if(65536<=a&&1114111>=a){const b=(a&1023)+56320;return String.fromCharCode((a>>10)+55232)+String.fromCharCode(b)}return String.fromCharCode(a)}\nfunction MJ(a,b){const c=a.charCodeAt(b);if(55296<=c&&56319>=c&&b+1=a)return 55296<=c&&56319>=c&&56320<=a&&57343>=a?(c<<10)-56623104+(a-56320+65536):null}else if(56320<=c&&57343>=c&&0=a))return-(55296<=a&&56319>=a&&56320<=c&&57343>=c?(a<<10)-56623104+(c-56320+65536):0);return c};function NJ(a,b,c){var d=Y.g(a);d=d instanceof w?d.W:null;switch(d){case \"nt\":return OJ.j?OJ.j(a,b,c):OJ.call(null,a,b,c);case \"alt\":return PJ.j?PJ.j(a,b,c):PJ.call(null,a,b,c);case \"cat\":return QJ.j?QJ.j(a,b,c):QJ.call(null,a,b,c);case \"string\":return RJ.j?RJ.j(a,b,c):RJ.call(null,a,b,c);case \"string-ci\":return SJ.j?SJ.j(a,b,c):SJ.call(null,a,b,c);case \"char\":return TJ.j?TJ.j(a,b,c):TJ.call(null,a,b,c);case \"epsilon\":return UJ.j?UJ.j(a,b,c):UJ.call(null,a,b,c);case \"opt\":return VJ.j?VJ.j(a,b,c):\nVJ.call(null,a,b,c);case \"plus\":return WJ.j?WJ.j(a,b,c):WJ.call(null,a,b,c);case \"rep\":return XJ.j?XJ.j(a,b,c):XJ.call(null,a,b,c);case \"star\":return YJ.j?YJ.j(a,b,c):YJ.call(null,a,b,c);case \"regexp\":return ZJ.j?ZJ.j(a,b,c):ZJ.call(null,a,b,c);case \"look\":return $J.j?$J.j(a,b,c):$J.call(null,a,b,c);case \"neg\":return aK.j?aK.j(a,b,c):aK.call(null,a,b,c);case \"ord\":return bK.j?bK.j(a,b,c):bK.call(null,a,b,c);default:throw Error([\"No matching clause: \",p.g(d)].join(\"\"));}}\nfunction cK(a,b,c){var d=Y.g(a);d=d instanceof w?d.W:null;switch(d){case \"nt\":return dK.j?dK.j(a,b,c):dK.call(null,a,b,c);case \"alt\":return eK.j?eK.j(a,b,c):eK.call(null,a,b,c);case \"cat\":return fK.j?fK.j(a,b,c):fK.call(null,a,b,c);case \"string\":return gK.j?gK.j(a,b,c):gK.call(null,a,b,c);case \"string-ci\":return hK.j?hK.j(a,b,c):hK.call(null,a,b,c);case \"char\":return iK.j?iK.j(a,b,c):iK.call(null,a,b,c);case \"epsilon\":return jK.j?jK.j(a,b,c):jK.call(null,a,b,c);case \"opt\":return kK.j?kK.j(a,b,c):\nkK.call(null,a,b,c);case \"plus\":return lK.j?lK.j(a,b,c):lK.call(null,a,b,c);case \"rep\":return mK.j?mK.j(a,b,c):mK.call(null,a,b,c);case \"star\":return nK.j?nK.j(a,b,c):nK.call(null,a,b,c);case \"regexp\":return oK.j?oK.j(a,b,c):oK.call(null,a,b,c);case \"look\":return pK.j?pK.j(a,b,c):pK.call(null,a,b,c);case \"neg\":return aK.j?aK.j(a,b,c):aK.call(null,a,b,c);case \"ord\":return qK.j?qK.j(a,b,c):qK.call(null,a,b,c);default:throw Error([\"No matching clause: \",p.g(d)].join(\"\"));}}\nfunction rK(a,b,c,d,e){this.index=a;this.reason=b;this.D=c;this.m=d;this.G=e;this.B=2230716170;this.M=139264}h=rK.prototype;h.na=function(a,b){return this.P(null,b,null)};h.P=function(a,b,c){switch(b instanceof w?b.W:null){case \"index\":return this.index;case \"reason\":return this.reason;default:return u.j(this.m,b,c)}};h.Ka=function(a,b,c){return Nb.j(function(d,e){var f=G(e,0,null);e=G(e,1,null);return b.j?b.j(d,f,e):b.call(null,d,f,e)},c,this)};\nh.U=function(a,b,c){return Tj(b,function(d){return Tj(b,bk,\"\",\" \",\"\",c,d)},\"#instaparse.gll.Failure{\",\", \",\"}\",c,Of.h(new Q(null,2,5,S,[new Q(null,2,5,S,[Gm,this.index],null),new Q(null,2,5,S,[In,this.reason],null)],null),this.m))};h.xa=function(){return new Yh(this,2,new Q(null,2,5,S,[Gm,In],null),n(this.m)?nd(this.m):eg())};h.R=function(){return this.D};h.da=function(){return 2+C(this.m)};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=-1140991288^Pd(this)};\nh.aa=function(a,b){return null!=b&&this.constructor===b.constructor&&x.h(this.index,b.index)&&x.h(this.reason,b.reason)&&x.h(this.m,b.m)};h.bb=function(a,b){return M(new uj(null,new k(null,2,[Gm,null,In,null],null),null),b)?we.h(Bc(ah.h(P,this),this.D),b):new rK(this.index,this.reason,this.D,dg(we.h(this.m,b)),null)};h.za=function(a,b){switch(b instanceof w?b.W:null){case \"index\":case \"reason\":return!0;default:return M(this.m,b)}};\nh.ja=function(a,b,c){return n(O.h?O.h(Gm,b):O.call(null,Gm,b))?new rK(c,this.reason,this.D,this.m,null):n(O.h?O.h(In,b):O.call(null,In,b))?new rK(this.index,c,this.D,this.m,null):new rK(this.index,this.reason,this.D,I.j(this.m,b,c),null)};h.ca=function(){return z(Of.h(new Q(null,2,5,S,[new xh(Gm,this.index),new xh(In,this.reason)],null),this.m))};h.S=function(a,b){return new rK(this.index,this.reason,b,this.m,this.G)};h.ia=function(a,b){return Le(b)?this.ja(null,Zb(b,0),Zb(b,1)):Nb.j(Xb,this,b)};\nh.pa=cb;h.U=function(a,b){var c=this;return Qc(b,function(){var d=new Za,e=fb,f=eb;fb=!0;eb=function(g){return d.append(g)};try{eJ(c)}finally{eb=f,fb=e}return p.g(d)}())};var sK=Db(new rK(null,null,null,null,null));function tK(a,b,c,d,e,f,g,l,m,q,t,v,y,E,H,K,R){this.ta=a;this.text=b;this.Ya=c;this.Qa=d;this.Xa=e;this.stack=f;this.Wa=g;this.Sa=l;this.Va=m;this.Ua=q;this.va=t;this.Za=v;this.Ra=y;this.$a=E;this.D=H;this.m=K;this.G=R;this.B=2230716170;this.M=139264}h=tK.prototype;\nh.na=function(a,b){return this.P(null,b,null)};\nh.P=function(a,b,c){switch(b instanceof w?b.W:null){case \"grammar\":return this.ta;case \"text\":return this.text;case \"segment\":return this.Ya;case \"fail-index\":return this.Qa;case \"node-builder\":return this.Xa;case \"stack\":return this.stack;case \"next-stack\":return this.Wa;case \"generation\":return this.Sa;case \"negative-listeners\":return this.Va;case \"msg-cache\":return this.Ua;case \"nodes\":return this.va;case \"success\":return this.Za;case \"failure\":return this.Ra;case \"trace?\":return this.$a;default:return u.j(this.m,\nb,c)}};h.Ka=function(a,b,c){return Nb.j(function(d,e){var f=G(e,0,null);e=G(e,1,null);return b.j?b.j(d,f,e):b.call(null,d,f,e)},c,this)};\nh.U=function(a,b,c){return Tj(b,function(d){return Tj(b,bk,\"\",\" \",\"\",c,d)},\"#instaparse.gll.Tramp{\",\", \",\"}\",c,Of.h(new Q(null,14,5,S,[new Q(null,2,5,S,[hr,this.ta],null),new Q(null,2,5,S,[TD,this.text],null),new Q(null,2,5,S,[zn,this.Ya],null),new Q(null,2,5,S,[Jm,this.Qa],null),new Q(null,2,5,S,[Zx,this.Xa],null),new Q(null,2,5,S,[Uw,this.stack],null),new Q(null,2,5,S,[tw,this.Wa],null),new Q(null,2,5,S,[Wr,this.Sa],null),new Q(null,2,5,S,[iC,this.Va],null),new Q(null,2,5,S,[Dq,this.Ua],null),new Q(null,\n2,5,S,[Mu,this.va],null),new Q(null,2,5,S,[jC,this.Za],null),new Q(null,2,5,S,[gx,this.Ra],null),new Q(null,2,5,S,[Nu,this.$a],null)],null),this.m))};h.xa=function(){return new Yh(this,14,new Q(null,14,5,S,[hr,TD,zn,Jm,Zx,Uw,tw,Wr,iC,Dq,Mu,jC,gx,Nu],null),n(this.m)?nd(this.m):eg())};h.R=function(){return this.D};h.da=function(){return 14+C(this.m)};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=166878148^Pd(this)};\nh.aa=function(a,b){return null!=b&&this.constructor===b.constructor&&x.h(this.ta,b.ta)&&x.h(this.text,b.text)&&x.h(this.Ya,b.Ya)&&x.h(this.Qa,b.Qa)&&x.h(this.Xa,b.Xa)&&x.h(this.stack,b.stack)&&x.h(this.Wa,b.Wa)&&x.h(this.Sa,b.Sa)&&x.h(this.Va,b.Va)&&x.h(this.Ua,b.Ua)&&x.h(this.va,b.va)&&x.h(this.Za,b.Za)&&x.h(this.Ra,b.Ra)&&x.h(this.$a,b.$a)&&x.h(this.m,b.m)};\nh.bb=function(a,b){return M(new uj(null,new k(null,14,[Dq,null,iC,null,Wr,null,gx,null,Jm,null,hr,null,jC,null,Mu,null,Zx,null,zn,null,Uw,null,Nu,null,tw,null,TD,null],null),null),b)?we.h(Bc(ah.h(P,this),this.D),b):new tK(this.ta,this.text,this.Ya,this.Qa,this.Xa,this.stack,this.Wa,this.Sa,this.Va,this.Ua,this.va,this.Za,this.Ra,this.$a,this.D,dg(we.h(this.m,b)),null)};\nh.za=function(a,b){switch(b instanceof w?b.W:null){case \"grammar\":case \"text\":case \"segment\":case \"fail-index\":case \"node-builder\":case \"stack\":case \"next-stack\":case \"generation\":case \"negative-listeners\":case \"msg-cache\":case \"nodes\":case \"success\":case \"failure\":case \"trace?\":return!0;default:return M(this.m,b)}};\nh.ja=function(a,b,c){return n(O.h?O.h(hr,b):O.call(null,hr,b))?new tK(c,this.text,this.Ya,this.Qa,this.Xa,this.stack,this.Wa,this.Sa,this.Va,this.Ua,this.va,this.Za,this.Ra,this.$a,this.D,this.m,null):n(O.h?O.h(TD,b):O.call(null,TD,b))?new tK(this.ta,c,this.Ya,this.Qa,this.Xa,this.stack,this.Wa,this.Sa,this.Va,this.Ua,this.va,this.Za,this.Ra,this.$a,this.D,this.m,null):n(O.h?O.h(zn,b):O.call(null,zn,b))?new tK(this.ta,this.text,c,this.Qa,this.Xa,this.stack,this.Wa,this.Sa,this.Va,this.Ua,this.va,\nthis.Za,this.Ra,this.$a,this.D,this.m,null):n(O.h?O.h(Jm,b):O.call(null,Jm,b))?new tK(this.ta,this.text,this.Ya,c,this.Xa,this.stack,this.Wa,this.Sa,this.Va,this.Ua,this.va,this.Za,this.Ra,this.$a,this.D,this.m,null):n(O.h?O.h(Zx,b):O.call(null,Zx,b))?new tK(this.ta,this.text,this.Ya,this.Qa,c,this.stack,this.Wa,this.Sa,this.Va,this.Ua,this.va,this.Za,this.Ra,this.$a,this.D,this.m,null):n(O.h?O.h(Uw,b):O.call(null,Uw,b))?new tK(this.ta,this.text,this.Ya,this.Qa,this.Xa,c,this.Wa,this.Sa,this.Va,this.Ua,\nthis.va,this.Za,this.Ra,this.$a,this.D,this.m,null):n(O.h?O.h(tw,b):O.call(null,tw,b))?new tK(this.ta,this.text,this.Ya,this.Qa,this.Xa,this.stack,c,this.Sa,this.Va,this.Ua,this.va,this.Za,this.Ra,this.$a,this.D,this.m,null):n(O.h?O.h(Wr,b):O.call(null,Wr,b))?new tK(this.ta,this.text,this.Ya,this.Qa,this.Xa,this.stack,this.Wa,c,this.Va,this.Ua,this.va,this.Za,this.Ra,this.$a,this.D,this.m,null):n(O.h?O.h(iC,b):O.call(null,iC,b))?new tK(this.ta,this.text,this.Ya,this.Qa,this.Xa,this.stack,this.Wa,\nthis.Sa,c,this.Ua,this.va,this.Za,this.Ra,this.$a,this.D,this.m,null):n(O.h?O.h(Dq,b):O.call(null,Dq,b))?new tK(this.ta,this.text,this.Ya,this.Qa,this.Xa,this.stack,this.Wa,this.Sa,this.Va,c,this.va,this.Za,this.Ra,this.$a,this.D,this.m,null):n(O.h?O.h(Mu,b):O.call(null,Mu,b))?new tK(this.ta,this.text,this.Ya,this.Qa,this.Xa,this.stack,this.Wa,this.Sa,this.Va,this.Ua,c,this.Za,this.Ra,this.$a,this.D,this.m,null):n(O.h?O.h(jC,b):O.call(null,jC,b))?new tK(this.ta,this.text,this.Ya,this.Qa,this.Xa,this.stack,\nthis.Wa,this.Sa,this.Va,this.Ua,this.va,c,this.Ra,this.$a,this.D,this.m,null):n(O.h?O.h(gx,b):O.call(null,gx,b))?new tK(this.ta,this.text,this.Ya,this.Qa,this.Xa,this.stack,this.Wa,this.Sa,this.Va,this.Ua,this.va,this.Za,c,this.$a,this.D,this.m,null):n(O.h?O.h(Nu,b):O.call(null,Nu,b))?new tK(this.ta,this.text,this.Ya,this.Qa,this.Xa,this.stack,this.Wa,this.Sa,this.Va,this.Ua,this.va,this.Za,this.Ra,c,this.D,this.m,null):new tK(this.ta,this.text,this.Ya,this.Qa,this.Xa,this.stack,this.Wa,this.Sa,this.Va,\nthis.Ua,this.va,this.Za,this.Ra,this.$a,this.D,I.j(this.m,b,c),null)};h.ca=function(){return z(Of.h(new Q(null,14,5,S,[new xh(hr,this.ta),new xh(TD,this.text),new xh(zn,this.Ya),new xh(Jm,this.Qa),new xh(Zx,this.Xa),new xh(Uw,this.stack),new xh(tw,this.Wa),new xh(Wr,this.Sa),new xh(iC,this.Va),new xh(Dq,this.Ua),new xh(Mu,this.va),new xh(jC,this.Za),new xh(gx,this.Ra),new xh(Nu,this.$a)],null),this.m))};\nh.S=function(a,b){return new tK(this.ta,this.text,this.Ya,this.Qa,this.Xa,this.stack,this.Wa,this.Sa,this.Va,this.Ua,this.va,this.Za,this.Ra,this.$a,b,this.m,this.G)};h.ia=function(a,b){return Le(b)?this.ja(null,Zb(b,0),Zb(b,1)):Nb.j(Xb,this,b)};function uK(a,b,c,d,e){return new tK(a,b,c,d,e,Fg(F),Fg(F),Fg(0),Fg(mj(gf)),Fg(P),Fg(P),Fg(null),Fg(new rK(0,F,null,null,null)),!1,null,null,null)}function vK(a,b){return new k(null,2,[xA,a,Gm,b],null)}function wK(a,b){return x.h(C(TD.g(a)),Gm.g(b))}\nfunction xK(a,b,c,d,e,f,g){this.ic=a;this.$b=b;this.results=c;this.ac=d;this.D=e;this.m=f;this.G=g;this.B=2230716170;this.M=139264}h=xK.prototype;h.na=function(a,b){return this.P(null,b,null)};h.P=function(a,b,c){switch(b instanceof w?b.W:null){case \"listeners\":return this.ic;case \"full-listeners\":return this.$b;case \"results\":return this.results;case \"full-results\":return this.ac;default:return u.j(this.m,b,c)}};\nh.Ka=function(a,b,c){return Nb.j(function(d,e){var f=G(e,0,null);e=G(e,1,null);return b.j?b.j(d,f,e):b.call(null,d,f,e)},c,this)};h.U=function(a,b,c){return Tj(b,function(d){return Tj(b,bk,\"\",\" \",\"\",c,d)},\"#instaparse.gll.Node{\",\", \",\"}\",c,Of.h(new Q(null,4,5,S,[new Q(null,2,5,S,[rC,this.ic],null),new Q(null,2,5,S,[Vy,this.$b],null),new Q(null,2,5,S,[io,this.results],null),new Q(null,2,5,S,[fF,this.ac],null)],null),this.m))};\nh.xa=function(){return new Yh(this,4,new Q(null,4,5,S,[rC,Vy,io,fF],null),n(this.m)?nd(this.m):eg())};h.R=function(){return this.D};h.da=function(){return 4+C(this.m)};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=-1610074144^Pd(this)};h.aa=function(a,b){return null!=b&&this.constructor===b.constructor&&x.h(this.ic,b.ic)&&x.h(this.$b,b.$b)&&x.h(this.results,b.results)&&x.h(this.ac,b.ac)&&x.h(this.m,b.m)};\nh.bb=function(a,b){return M(new uj(null,new k(null,4,[fF,null,Vy,null,rC,null,io,null],null),null),b)?we.h(Bc(ah.h(P,this),this.D),b):new xK(this.ic,this.$b,this.results,this.ac,this.D,dg(we.h(this.m,b)),null)};h.za=function(a,b){switch(b instanceof w?b.W:null){case \"listeners\":case \"full-listeners\":case \"results\":case \"full-results\":return!0;default:return M(this.m,b)}};\nh.ja=function(a,b,c){return n(O.h?O.h(rC,b):O.call(null,rC,b))?new xK(c,this.$b,this.results,this.ac,this.D,this.m,null):n(O.h?O.h(Vy,b):O.call(null,Vy,b))?new xK(this.ic,c,this.results,this.ac,this.D,this.m,null):n(O.h?O.h(io,b):O.call(null,io,b))?new xK(this.ic,this.$b,c,this.ac,this.D,this.m,null):n(O.h?O.h(fF,b):O.call(null,fF,b))?new xK(this.ic,this.$b,this.results,c,this.D,this.m,null):new xK(this.ic,this.$b,this.results,this.ac,this.D,I.j(this.m,b,c),null)};\nh.ca=function(){return z(Of.h(new Q(null,4,5,S,[new xh(rC,this.ic),new xh(Vy,this.$b),new xh(io,this.results),new xh(fF,this.ac)],null),this.m))};h.S=function(a,b){return new xK(this.ic,this.$b,this.results,this.ac,b,this.m,this.G)};h.ia=function(a,b){return Le(b)?this.ja(null,Zb(b,0),Zb(b,1)):Nb.j(Xb,this,b)};function yK(a,b){return Ig.j(Uw.g(a),re,b)}\nfunction zK(a,b,c){function d(){return b.g?b.g(c):b.call(null,c)}var e=Dq.g(a),f=Gm.g(c);f=new Q(null,2,5,S,[b,f],null);var g=u.j(r(e),f,0);g>r(Wr.g(a))?Ig.j(tw.g(a),re,d):Ig.j(Uw.g(a),re,d);Ig.F(e,I,f,g+1)}function AK(a,b){a=Mu.g(a);a=r(a);b=a.g?a.g(b):a.call(null,b);return n(b)?0=C(f))return KK(c,new Q(null,2,5,S,[b,a],null),b,new k(null,2,[Y,bB,EF,new k(null,3,[Kt,!0,ft,d,mr,e],null)],null));if(65535>=e)return f=f.charCodeAt(b),d<=f&&f<=e?FK(c,new Q(null,2,5,S,[b,a],null),vK(p.g(hf(f)),b+1)):KK(c,new Q(null,2,5,S,[b,a],null),b,new k(null,2,[Y,bB,EF,new k(null,3,[Kt,!0,ft,d,mr,e],null)],null));f=MJ(f,b|0);var g=LJ(f);return d<=f&&f<=e?FK(c,new Q(null,2,5,S,[b,a],null),vK(g,b+C(g))):KK(c,new Q(null,2,5,S,[b,a],null),\nb,new k(null,2,[Y,bB,EF,new k(null,3,[Kt,!0,ft,d,mr,e],null)],null))}\nfunction iK(a,b,c){var d=ft.g(a),e=mr.g(a),f=TD.g(c),g=C(f);if(b>=C(f))return KK(c,new Q(null,2,5,S,[b,a],null),b,new k(null,2,[Y,bB,EF,new k(null,3,[Kt,!0,ft,d,mr,e],null)],null));if(65535>=e)return f=f.charCodeAt(b),x.h(b+1,g)&&d<=f&&f<=e?FK(c,new Q(null,2,5,S,[b,a],null),vK(p.g(hf(f)),g)):KK(c,new Q(null,2,5,S,[b,a],null),b,new k(null,2,[Y,bB,EF,new k(null,3,[Kt,!0,ft,d,mr,e],null)],null));f=MJ(f,b|0);var l=LJ(f);return x.h(b+C(l),g)&&d<=f&&f<=e?FK(c,new Q(null,2,5,S,[b,a],null),vK(l,g)):KK(c,\nnew Q(null,2,5,S,[b,a],null),b,new k(null,3,[Y,bB,EF,new k(null,3,[Kt,!0,ft,d,mr,e],null),rz,!0],null))}function XK(a,b){a=(new RegExp(a.source,[\"g\",hJ(a)].join(\"\"))).exec(b);return n(n(a)?0===a.index:a)?A(a):null}function ZJ(a,b,c){var d=RA.g(a),e=zn.g(c);e=rf?e.substring(b):qf.call(null,e,b);e=XK(d,e);return n(e)?FK(c,new Q(null,2,5,S,[b,a],null),vK(e,b+C(e))):KK(c,new Q(null,2,5,S,[b,a],null),b,new k(null,2,[Y,RA,EF,d],null))}\nfunction oK(a,b,c){var d=RA.g(a),e=zn.g(c),f=rf?e.substring(b):qf.call(null,e,b);f=XK(d,f);var g=C(e)-b;return n(n(f)?x.h(C(f),g):f)?FK(c,new Q(null,2,5,S,[b,a],null),vK(f,C(e))):KK(c,new Q(null,2,5,S,[b,a],null),b,new k(null,3,[Y,RA,EF,d,rz,!0],null))}function QJ(a,b,c){var d=Ls.g(a);return GK(c,new Q(null,2,5,S,[b,A(d)],null),QK(HI,B(d),new Q(null,2,5,S,[b,a],null),c))}function fK(a,b,c){var d=Ls.g(a);return GK(c,new Q(null,2,5,S,[b,A(d)],null),RK(HI,B(d),new Q(null,2,5,S,[b,a],null),c))}\nfunction WJ(a,b,c){var d=Eq.g(a);return GK(c,new Q(null,2,5,S,[b,d],null),SK(HI,d,b,new Q(null,2,5,S,[b,a],null),c))}function lK(a,b,c){var d=Eq.g(a);return GK(c,new Q(null,2,5,S,[b,d],null),TK(HI,d,b,new Q(null,2,5,S,[b,a],null),c))}\nfunction XJ(a,b,c){var d=Eq.g(a),e=Jq.g(a),f=EC.g(a);return 0===e?(FK(c,new Q(null,2,5,S,[b,a],null),vK(null,b)),1<=f?GK(c,new Q(null,2,5,S,[b,d],null),UK(HI,0,d,1,f,b,new Q(null,2,5,S,[b,a],null),c)):null):GK(c,new Q(null,2,5,S,[b,d],null),UK(HI,0,d,e,f,b,new Q(null,2,5,S,[b,a],null),c))}\nfunction mK(a,b,c){var d=Eq.g(a),e=Jq.g(a),f=EC.g(a);return 0===e?(FK(c,new Q(null,2,5,S,[b,a],null),vK(null,b)),1<=f?GK(c,new Q(null,2,5,S,[b,d],null),VK(HI,0,d,1,f,b,new Q(null,2,5,S,[b,a],null),c)):null):GK(c,new Q(null,2,5,S,[b,d],null),VK(HI,0,d,e,f,b,new Q(null,2,5,S,[b,a],null),c))}function YJ(a,b,c){var d=Eq.g(a);GK(c,new Q(null,2,5,S,[b,d],null),SK(HI,d,b,new Q(null,2,5,S,[b,a],null),c));return FK(c,new Q(null,2,5,S,[b,a],null),vK(null,b))}\nfunction nK(a,b,c){var d=Eq.g(a);return x.h(b,C(TD.g(c)))?FK(c,new Q(null,2,5,S,[b,a],null),vK(null,b)):GK(c,new Q(null,2,5,S,[b,d],null),TK(HI,d,b,new Q(null,2,5,S,[b,a],null),c))}\nfunction PJ(a,b,c){var d=Ls.g(a);d=z(d);for(var e=null,f=0,g=0;;)if(gthis.td){var a=this.ka.charAt(this.td);this.td+=1;return a}return null};xL.prototype.Bc=function(){return this.bg>this.td?this.ka.charAt(this.td):null};function yL(a,b){this.Zf=a;this.ga=b;this.Sb=this.De=1}yL.prototype.Ca=function(){var a=this.Sbc)b[c]=A(d),c+=1,d=B(d);else break a;else for(c=0;;)if(1>c)b[c]=null,c+=1;else break}return new yL(a,b)};function BL(a,b,c,d){var e=C(b);a=n(a)?0:10a?'...\"':'\"',d=b.length;return['\"',p.g(b.substring(0,ad?\"...}\":\"}\")});CL.C(null,pt,function(a,b){return BL(a,b,\"#{\",\"}\")});CL.C(null,hA,function(a,b){return BL(a,b,\"[\",\"]\")});CL.C(null,Zk,function(a,b){return hk.l(D([Db(b)]))});function IL(a,b,c){b=new k(null,2,[X,Yl,Lm,b],null);a=zL(a)?I.l(b,CD,wL(a),D([cw,uL(a),bx,vL(a)])):b;var d=CD.g(a);b=cw.g(a);var e=bx.g(a);d=n(d)?[p.g(d),\" \"].join(\"\"):null;b=n(b)?[\"[line \",p.g(b),\", col \",p.g(e),\"]\"].join(\"\"):null;c=$f(p,d,b,n(n(d)?d:b)?\" \":null,c);throw cl(c,a);}function JL(a,b){return IL(a,sq,D([Xf(p,b)]))}function KL(a,b){return IL(a,fp,D([Xf(p,b)]))}function LL(a,b){return IL(a,qn,D([Xf(p,b)]))}\nfunction ML(a,b,c,d,e){return LL(a,D([\"Unexpected EOF while reading \",n(e)?[\"item \",p.g(e),\" of \"].join(\"\"):null,Cf(b),n(c)?[\", starting at line \",p.g(c),\" and column \",p.g(d)].join(\"\"):null,\".\"]))}function NL(a,b,c,d){JL(a,D([\"The map literal starting with \",CL.h(!1,A(d)),n(b)?[\" on line \",p.g(b),\" column \",p.g(c)].join(\"\"):null,\" contains \",C(d),\" form(s). Map literals must contain an even number of forms.\"]))}function OL(a){throw KL(null,D([\"Invalid unicode literal: \\\\\",a,\".\"]));}\nfunction PL(a,b){return JL(a,D([\"Invalid unicode escape: \\\\u\",b,\".\"]))}function QL(a,b,c){return JL(a,D([\"Invalid \",Cf(b),\": \",c,\".\"]))}function RL(a,b){return LL(a,D([\"Unexpected EOF while reading start of \",Cf(b),\".\"]))}function SL(a,b,c){return JL(a,D([\"Invalid character: \",c,\" found while reading \",Cf(b),\".\"]))}function TL(a){return LL(a,D([\"Unexpected EOF while reading dispatch character.\"]))}\nfunction UL(a,b,c){a:{var d=b instanceof w?b.W:null;switch(d){case \"regex\":d='#\"';break a;case \"string\":d='\"';break a;default:throw Error([\"No matching clause: \",p.g(d)].join(\"\"));}}return LL(a,D([\"Unexpected EOF reading \",Cf(b),\" starting \",Yf(p,d,c),\".\"]))}function VL(a,b){return KL(null,D([\"Invalid digit \",a,\" in unicode character \\\\\",b,\".\"]))}function WL(a,b){return KL(a,D([\"Invalid digit \",b,\" in unicode character.\"]))}\nfunction XL(a,b,c){return KL(a,D([\"Invalid unicode literal. Unicode literals should be \",c,\"characters long. \",\"Value supplied is \",b,\" characters long.\"]))}function YL(a,b){return JL(a,D([\"Invalid character literal \\\\u\",b,\".\"]))}function ZL(a,b){return JL(a,D([\"Invalid octal escape sequence in a character literal: \",b,\". Octal escape sequences must be 3 or fewer digits.\"]))}function $L(a){return JL(a,D([\"Octal escape sequence must be in range [0, 377].\"]))}\nfunction aM(a){return LL(a,D([\"Unexpected EOF while reading character.\"]))}function bM(a,b){return JL(a,D([\"Unsupported escape character: \\\\\",b,\".\"]))}function cM(a){return JL(a,D([\"A single colon is not a valid keyword.\"]))}function dM(a,b){JL(a,D([\"Metadata cannot be \",CL.h(!1,b),\". Metadata must be a Symbol, Keyword, String or Map.\"]))}function eM(a,b){return JL(a,D([\"Metadata can not be applied to \",CL.h(!1,b),\". \",\"Metadata can only be applied to IMetas.\"]))}\nfunction fM(a,b){return JL(a,D([\"Namespaced map with namespace \",b,\" does not specify a map.\"]))}function gM(a,b){return JL(a,D([\"Invalid value used as namespace in namespaced map: \",b,\".\"]))}function hM(a,b){JL(a,D([\"Invalid reader tag: \",CL.h(!1,b),\". Reader tags must be symbols.\"]))}function iM(a,b){return JL(a,D([\"No reader function for tag \",CL.h(!1,b),\".\"]))}\nfunction jM(a,b){b=function(c){return function f(e){return new Df(null,function(){for(var g=e;;)if(g=z(g)){if(Me(g)){var l=ed(g),m=C(l),q=Hf(m);a:for(var t=0;;)if(tc?YL(a,c.toString(16)):b;if(n(0==b.lastIndexOf(\"o\",0))){--c;if(3=parseInt(b.substring(1),\n8)?c:$L(a)}return JL(a,D([\"Unsupported character: \",b,\".\"]))}return aM(a)}function HM(a){return zL(a)?new Q(null,2,5,S,[a.Jd(null),a.Id(null)-1|0],null):null}function IM(a){return zL(a)?new Q(null,2,5,S,[a.Jd(null),a.Id(null)],null):null}var JM={},KM={},LM=!1;\nfunction MM(a,b,c,d,e){var f=LM;LM=!0;try{a:for(var g=HM(c),l=G(g,0,null),m=G(g,1,null),q=gL(b),t=Xc(F);;){var v=NM?NM(c,!1,JM,q,d,e):OM.call(null,c,!1,JM,q,d,e);if(v===KM){var y=Zc(t);break a}if(v===JM){y=ML(c,a,l,m,C(t));break a}t=Pf.h(t,v)}return y}finally{LM=f}}\nfunction PM(a,b,c,d){var e=HM(a);b=G(e,0,null);e=G(e,1,null);var f=MM(Xx,\")\",a,c,d);d=IM(a);c=G(d,0,null);d=G(d,1,null);f=Ee(f)?Id:Xf(N,f);if(n(b)){var g=pj.l;a=wL(a);a=g.call(pj,D([n(a)?new k(null,1,[CD,a],null):null,new k(null,4,[cw,b,rs,e,MG,c,so,d],null)]))}else a=null;return ze(f,a)}\nfunction QM(a,b,c,d){var e=HM(a);b=G(e,0,null);e=G(e,1,null);c=MM(hA,\"]\",a,c,d);var f=IM(a);d=G(f,0,null);f=G(f,1,null);if(n(b)){var g=pj.l;a=wL(a);a=g.call(pj,D([n(a)?new k(null,1,[CD,a],null):null,new k(null,4,[cw,b,rs,e,MG,d,so,f],null)]))}else a=null;return ze(c,a)}\nfunction RM(a,b,c,d){var e=HM(a);b=G(e,0,null);e=G(e,1,null);var f=MM(BC,\"}\",a,c,d),g=C(f),l=Lj(2,f),m=yj(l);d=IM(a);c=G(d,0,null);d=G(d,1,null);!wg(g)&&NL(a,b,e,f);x.h(C(m),C(l))||kM(a,BC,l);f=g<=2*gi?ii(Ye(f)):Qi(Ye(f));n(b)?(g=pj.l,a=wL(a),a=g.call(pj,D([n(a)?new k(null,1,[CD,a],null):null,new k(null,4,[cw,b,rs,e,MG,c,so,d],null)]))):a=null;return ze(f,a)}\nfunction SM(a,b){for(var c=function(){var g=new Za;g.append(b);return g}(),d=a.Ca(null);;){if(n(function(){var g=kL(d);if(g)return g;g=FM.g?FM.g(d):FM.call(null,d);return n(g)?g:null==d}())){var e=p.g(c);a.Hd(null,d);var f=rM(e);return n(f)?f:JL(a,D([\"Invalid number: \",e,\".\"]))}e=function(){var g=c;g.append(d);return g}();f=a.Ca(null);c=e;d=f}}\nfunction TM(a){var b=a.Ca(null);switch(b){case \"t\":return\"\\t\";case \"r\":return\"\\r\";case \"n\":return\"\\n\";case \"\\\\\":return\"\\\\\";case '\"':return'\"';case \"b\":return\"\\b\";case \"f\":return\"\\f\";case \"u\":return b=a.Ca(null),-1===parseInt(b|0,16)?PL(a,b):EM(a,b,16,4,!0);default:return lL(b)?(b=EM(a,b,8,3,!1),255<(b|0)?$L(a):b):bM(a,b)}}\nfunction UM(a){for(var b=new Za,c=a.Ca(null);;){if(null==c)return UL(a,CB,D(['\"',b]));switch(c){case \"\\\\\":var d=function(){var f=b;f.append(TM(a));return f}(),e=a.Ca(null);b=d;c=e;continue;case '\"':return p.g(b);default:d=function(){var f=b;f.append(c);return f}(),e=a.Ca(null),b=d,c=e}}}\nfunction VM(a,b){var c=HM(a),d=G(c,0,null);c=G(c,1,null);b=xM(a,zq,b);if(null==b)return null;switch(b){case \"nil\":return null;case \"true\":return!0;case \"false\":return!1;case \"/\":return Ct;default:var e=sM(b);if(null!=e){b=Bd.h(e.$(null,0),e.$(null,1));e=b.S;if(null==d)d=null;else{var f=wL(a);f=null==f?null:new k(null,1,[CD,f],null);var g=IM(a);a=G(g,0,null);g=G(g,1,null);d=pj.l(D([f,new k(null,4,[cw,d,rs,c,MG,a,so,g],null)]))}d=e.call(b,null,d)}else d=QL(a,zq,b);return d}}\nfunction WM(a){var b=a.Ca(null);if(kL(b))return cM(a);b=xM(a,bt,b);var c=sM(b);if(null!=c){var d=c.$(null,0);c=c.$(null,1);if(\":\"===b.charAt(0)){if(null!=d)return d=u.h(null,Bd.g(d.substring(1))),n(d)?Bf.h(p.g(d),c):QL(a,bt,[\":\",p.g(b)].join(\"\"));d=null;return n(d)?Bf.h(p.g(d),c.substring(1)):JL(a,D([\"Invalid token: :\",b]))}return Bf.h(d,c)}return QL(a,bt,[\":\",p.g(b)].join(\"\"))}\nfunction XM(a){return function(b,c,d,e){return new se(null,a,new se(null,YM?YM(b,!0,null,d,e):OM.call(null,b,!0,null,d,e),null,1,null),2,null)}}function ZM(a,b,c,d){var e=HM(a);b=G(e,0,null);e=G(e,1,null);var f=mL(YM?YM(a,!0,null,c,d):OM.call(null,a,!0,null,c,d));J(f)||dM(a,f);c=YM?YM(a,!0,null,c,d):OM.call(null,a,!0,null,c,d);return null!=c&&(c.B&131072||cb===c.zd)?(a=n(n(b)?Qe(c):b)?I.l(f,cw,b,D([rs,e])):f,null!=c&&(c.B&262144||cb===c.Me)?ze(c,pj.l(D([Ae(c),a]))):c.K=a):eM(a,c)}\nfunction $M(a,b,c,d){var e=HM(a);b=G(e,0,null);e=G(e,1,null);e=n(e)?e-1|0:null;var f=MM(pt,\"}\",a,c,d);c=yj(f);var g=IM(a);d=G(g,0,null);g=G(g,1,null);x.h(C(f),C(c))||JL(a,D([kM(a,pt,f)]));n(b)?(f=pj.l,a=wL(a),a=f.call(pj,D([n(a)?new k(null,1,[CD,a],null):null,new k(null,4,[cw,b,rs,e,MG,d,so,g],null)]))):a=null;return ze(c,a)}function aN(a,b,c,d){YM?YM(a,!0,null,c,d):OM.call(null,a,!0,null,c,d);return a}\nfunction bN(a,b,c,d){b=YM?YM(a,!0,null,c,d):OM.call(null,a,!0,null,c,d);return x.h(bo,b)?Number.NaN:x.h(kD,b)?Number.NEGATIVE_INFINITY:x.h(Em,b)?Number.POSITIVE_INFINITY:JL(a,D([[\"Invalid token: ##\",p.g(b)].join(\"\")]))}var cN=new uj(null,new k(null,2,[lt,null,Mv,null],null),null);function dN(a,b,c){a===JM&&(a=0>c,lM(b,a?c:a))}function eN(a,b,c,d){var e=fN;fN=!0;try{var f=NM?NM(b,!1,JM,\")\",c,d):OM.call(null,b,!1,JM,\")\",c,d);dN(f,b,a);return f===KM?KM:null}finally{fN=e}}var gN={};\nfunction hN(a,b,c,d){var e=zL(a)?uL(a):-1;a:for(var f=gN,g=null;;)if(f===gN){f=e;g=a;var l=c,m=d,q=NM?NM(g,!1,JM,\")\",l,m):OM.call(null,g,!1,JM,\")\",l,m);dN(q,g,f);if(x.h(q,KM))f=KM;else{var t=g,v=q;n(u.h(cN,v))&&JL(t,D([\"Feature name \",v,\" is reserved\"]));t=g;v=l;(q instanceof w?x.h(Zk,q)||M(u.h(v,Sy),q):JL(t,D([\"Feature should be a keyword: \",q])))?(l=NM?NM(g,!1,JM,\")\",l,m):OM.call(null,g,!1,JM,\")\",l,m),dN(l,g,f),l===KM&&(0>f?JL(g,D([\"read-cond requires an even number of forms\"])):JL(g,D([\"read-cond starting on line \",\nf,\" requires an even number of forms\"]))),f=l):(f=eN(f,g,l,m),f=n(f)?f:gN)}if(f===KM){c=KM;break a}g=null}else if(g!==KM)g=eN(e,a,c,d);else{c=f;break a}return c===KM?a:n(b)?null!=c&&(c.B&16777216||cb===c.Je)?(b=Ye(c),ma(La,d,0,0).apply(null,b),a):JL(a,D([\"Spliced form list in read-cond-splicing must implement ISequential\"])):c}\nfunction iN(a,b,c,d){if(yb(function(){if(n(c)){var g=os.g(c),l=new uj(null,new k(null,2,[JA,null,uu,null],null),null);return l.g?l.g(g):l.call(null,g)}return c}()))throw cl(\"Conditional read not allowed\",new k(null,1,[X,eo],null));var e=a.Ca(null);if(n(e))if(e=(b=x.h(e,\"@\"))?a.Ca(null):e,b&&(n(LM)||JL(a,D([\"cond-splice not in list\"]))),e=kL(e)?mM(a):e,n(e)){if(cg.h(e,\"(\"))throw cl(\"read-cond body must be a list\",new k(null,1,[X,eo],null));var f=fN;fN=function(){var g=fN;return n(g)?g:x.h(JA,os.g(c))}();\ntry{return n(fN)?iL(PM(a,e,c,d),b):hN(a,b,c,d)}finally{fN=f}}else return aM(a);else return aM(a)}var jN=null;function kN(a){return Bd.g([-1===a?\"rest\":[\"p\",p.g(a)].join(\"\"),\"__\",p.g(Ig.h(nL,Rd)),\"#\"].join(\"\"))}\nfunction lN(a,b,c,d){if(n(jN))throw cl(\"Nested #()s are not allowed\",new k(null,1,[X,nq],null));b=jN;jN=lj();try{tL(a,\"(\");var e=YM?YM(a,!0,null,c,d):OM.call(null,a,!0,null,c,d);var f=Pc(jN);if(f){var g=pc(A(f));a:{a=1;for(var l=Xc(F);;){if(a>g){var m=Zc(l);break a}c=a+1;d=Pf;var q=d.h;f=l;var t=u.h(jN,a);var v=n(t)?t:kN(a);var y=q.call(d,f,v);a=c;l=y}}var E=n(jN.call(null,-1))?re.l(m,hl,D([jN.call(null,-1)])):m}else E=F;return new se(null,wl,new se(null,E,new se(null,e,null,1,null),2,null),3,null)}finally{jN=\nb}}function mN(a){if(n(jN)){var b=jN.call(null,a);if(n(b))return b;b=kN(a);jN=I.j(jN,a,b);return b}throw cl(\"Arg literal not in #()\",new k(null,1,[X,nq],null));}function nN(a,b,c,d){if(null==jN)return VM(a,b);b=a.Bc(null);if(kL(b)||vM(b)||null==b)return mN(1);if(x.h(b,\"\\x26\"))return a.Ca(null),mN(-1);a=YM?YM(a,!0,null,c,d):OM.call(null,a,!0,null,c,d);if(Se(a))return mN(a);throw cl(\"Arg literal must be %, %\\x26 or %integer\",new k(null,1,[X,nq],null));}var oN=null;\nfunction pN(a,b,c,d){b=a.Bc(null);n(b)?x.h(\"@\",b)?(b=XM(RE),a.Ca(null),a=b(a,\"@\",c,d)):a=XM(cD)(a,\"~\",c,d):a=null;return a}function qN(a){a=z(a);for(var b=Xc(F);;)if(a){var c=A(a);a=B(a);b=Pf.h(Pf.h(b,pc(c)),qc(c))}else return z(Zc(b))}function rN(a){if(yb(oN))throw cl(\"Gensym literal not in syntax-quote\",new k(null,1,[X,nq],null));var b=u.h(oN,a);if(n(b))return b;b=Bd.g([sf(Cf(a),0,Cf(a).length-1),\"__\",p.g(Ig.h(nL,Rd)),\"__auto__\"].join(\"\"));oN=I.j(oN,a,b);return b}\nfunction sN(a,b){return function(){var c=null!=a?a.B&262144||cb===a.Me?!0:!1:!1;return c?z(we.l(Ae(a),cw,D([rs,MG,so,CD,$s]))):c}()?new se(null,Rx,new se(null,b,new se(null,function(){var c=Ae(a);return tN.g?tN.g(c):tN.call(null,c)}(),null,1,null),2,null),3,null):b}\nfunction uN(a,b){a:{b=z(b);for(var c=Xc(F);;)if(b){var d=A(b);c=Pf.h(c,Qe(d)&&x.h(A(d),cD)?new se(null,Kq,new se(null,oe(d),null,1,null),2,null):Qe(d)&&x.h(A(d),RE)?oe(d):new se(null,Kq,new se(null,tN.g?tN.g(d):tN.call(null,d),null,1,null),2,null));b=B(b)}else{b=z(Zc(c));break a}}b=new se(null,Ep,new se(null,ke(wy,b),null,1,null),2,null);return n(a)?new se(null,Rz,new se(null,a,new se(null,b,null,1,null),2,null),3,null):b}\nfunction vN(a){throw cl(\"resolve-symbol is not implemented\",new k(null,1,[GA,a],null));}\nfunction tN(a){if(gl(a))var b=new se(null,Bl,new se(null,a,null,1,null),2,null);else if(a instanceof Ad)b=new se(null,Bl,new se(null,n(function(){var c=yb(zf(a));return c?Ea(Cf(a),\"#\"):c}())?rN(a):function(){var c=p.g(a);return n(Ea(c,\".\"))?(c=Bd.g(c.substring(0,c.length-1)),Bd.g([p.g(vN.call(null,c)),\".\"].join(\"\"))):vN.call(null,a)}(),null,1,null),2,null);else if(Qe(a)&&x.h(A(a),cD))b=oe(a);else{if(Qe(a)&&x.h(A(a),RE))throw cl(\"unquote-splice not in list\",new k(null,1,[X,nq],null));if(Fe(a))if(null!=\na&&(a.B&67108864||cb===a.Lg))b=a;else if(J(a))b=uN(16<=C(a)?JE:MD,qN(a));else if(Le(a))b=new se(null,ru,new se(null,uN(null,a),null,1,null),2,null);else if(Ge(a))b=uN(nv,a);else if(Qe(a)||tf(a))b=function(){var c=z(a);return c?uN(null,c):N(Tx)}();else throw cl(\"Unknown Collection type\",new k(null,1,[X,rF],null));else b=a instanceof w||\"number\"===typeof a||\"string\"===typeof a||null==a||a instanceof Boolean||!0===a||!1===a||a instanceof RegExp?a:new se(null,Bl,new se(null,a,null,1,null),2,null)}return sN(a,\nb)}function wN(a,b,c,d){b=oN;oN=P;try{return tN(YM?YM(a,!0,null,c,d):OM.call(null,a,!0,null,c,d))}finally{oN=b}}\nfunction xN(a,b,c,d){var e=HM(a);b=G(e,0,null);e=G(e,1,null);var f=xM(a,oG,rL(a)),g=x.h(f,\":\")?null.name:x.h(\":\",A(f))?function(){var m=null==f?null:f.substring(1);m=null==m?null:sM(m);m=null==m?null:pL(m);m=null==m?null:Bd.g(m);if(null==m)m=null;else{var q=u.h(null,m);if(n(q))m=q;else{null==Ml&&(Ml=Fg(P));q=u.h(r(Ml),m);if(null!=q)m=q;else{q=p.g(m);var t=p.g(q);for(var v=new Za,y=0;;)if(y=Number(c)?a:a=-1Number(a)?\"-\":0<=b.indexOf(\"+\")?\"+\":0<=b.indexOf(\" \")?\" \":\"\";0<=Number(a)&&(d=f+d);if(isNaN(c)||d.length>=Number(c))return d;d=isNaN(e)?Math.abs(Number(a)).toString():Math.abs(Number(a)).toFixed(e);a=Number(c)-d.length-f.length;0<=b.indexOf(\"-\",0)?d=f+d+Xa(\" \",a):(b=0<=b.indexOf(\"0\",0)?\"0\":\" \",d=f+Xa(b,a)+d);return d};SN.Dc.d=function(a,b,c,d,e,f,g,l){return SN.Dc.f(parseInt(a,10),b,c,d,0,f,g,l)};\nSN.Dc.i=SN.Dc.d;SN.Dc.u=SN.Dc.d;var TN=Ri([$z,Ju,vt,sy,Gw,Lz,uz,qC,MB,fq,Dx,Sw,Go,Xp,Aq,Qx],[xJ(\"\\r\\n\"),xJ(\"\\t\"),uJ.l(D([uJ.l(D([xJ(\" \"),xJ(\"\\t\")])),sJ(wJ.l(D([xJ(\"\\r\\n\"),uJ.l(D([xJ(\" \"),xJ(\"\\t\")]))])))])),xJ(\"\\n\"),AJ(\"[\\\\u0021-\\\\u007E]\"),AJ(\"[0-9]\"),xJ(\" \"),AJ(\"[0-9a-fA-F]\"),AJ(\"[\\\\u0000-\\\\u001F|\\\\u007F]\"),xJ('\"'),uJ.l(D([xJ(\" \"),xJ(\"\\t\")])),xJ(\"\\r\"),AJ(\"[\\\\u0000-\\\\u00FF]\"),AJ(\"[a-zA-Z]\"),AJ(\"[\\\\u0001-\\\\u007F]\"),AJ(\"[01]\")]),UN=Ri([xm,Es,Hu,bu,av,Nr,iG,Tl,FF,gs,Lz,Oz,Iq,Jn,jt,ax,qC,vC,YE,zz,rA,px,fA,Br,RA,FB,jE,Js,hB,as,iu,MC,\non],[new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,\"!\"],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,av],null),null,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,xm],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,\"(\"],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,\nbt,Br],null),new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,hB],null),new se(null,new k(null,2,[Y,CB,CB,\")\"],null),null,1,null),2,null),jt,!0],null),null,1,null),2,null),3,null),Qn,new k(null,1,[Xv,Co],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,\"\\x3c\"],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,jE],null),new se(null,new k(null,3,[Y,az,Ls,new se(null,\nnew k(null,2,[Y,Os,bt,hB],null),new se(null,new k(null,2,[Y,CB,CB,\"\\x3e\"],null),null,1,null),2,null),jt,!0],null),null,1,null),2,null),3,null),Qn,new k(null,1,[Xv,Co],null)],null),pj.l(D([AJ(\"\\\\s+(?:;.*?\\\\u000D?\\\\u000A\\\\s*)*\"),new k(null,1,[Qn,new k(null,2,[Xv,xx,gB,bu],null)],null)])),new k(null,3,[Y,Hm,Ls,new se(null,new k(null,2,[Y,Os,bt,gs],null),new se(null,new k(null,2,[Y,Os,bt,Es],null),new se(null,new k(null,2,[Y,Os,bt,jt],null),new se(null,new k(null,2,[Y,Os,bt,vC],null),new se(null,new k(null,\n2,[Y,Os,bt,Iq],null),new se(null,new k(null,2,[Y,Os,bt,Jn],null),new se(null,new k(null,2,[Y,Os,bt,iG],null),new se(null,new k(null,2,[Y,Os,bt,xm],null),new se(null,new k(null,2,[Y,Os,bt,RA],null),null,1,null),2,null),3,null),4,null),5,null),6,null),7,null),8,null),9,null),Qn,new k(null,1,[Xv,Co],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,Hu],null),new se(null,new k(null,3,[Y,Os,bt,ax,jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,Br],null),new se(null,new k(null,3,[Y,Os,\nbt,hB,jt,!0],null),null,1,null),2,null),3,null),4,null),Qn,new k(null,2,[Xv,xx,gB,Nr],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,\"\\x26\"],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,av],null),null,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,iG],null)],null),new k(null,3,[Y,gu,Eq,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,CB,CB,\"0\"],null),new se(null,new k(null,\n2,[Y,CB,CB,\"1\"],null),null,1,null),2,null)],null),Qn,new k(null,2,[Xv,xx,gB,Tl],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,jE],null),new se(null,new k(null,3,[Y,Os,bt,ax,jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,Br],null),new se(null,new k(null,3,[Y,Os,bt,hB,jt,!0],null),null,1,null),2,null),3,null),4,null),Qn,new k(null,2,[Xv,xx,gB,FF],null)],null),new k(null,3,[Y,Os,bt,zz,Qn,new k(null,2,[Xv,xx,gB,gs],null)],null),pj.l(D([AJ(\"[0-9]\"),new k(null,1,[Qn,new k(null,1,\n[Xv,Co],null)],null)])),new k(null,3,[Y,gu,Eq,new k(null,2,[Y,Os,bt,Lz],null),Qn,new k(null,2,[Xv,xx,gB,Oz],null)],null),new k(null,3,[Y,Hm,Ls,new se(null,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,'\"',jt,!0],null),new se(null,new k(null,2,[Y,cF,Eq,pj.l(D([AJ(\"[\\\\u0020-\\\\u0021\\\\u0023-\\\\u007E]\"),P]))],null),new se(null,new k(null,3,[Y,CB,CB,'\"',jt,!0],null),null,1,null),2,null),3,null)],null),new se(null,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,\"'\",jt,!0],null),new se(null,\nnew k(null,2,[Y,cF,Eq,pj.l(D([AJ(\"[\\\\u0020-\\\\u0026(-~]\"),P]))],null),new se(null,new k(null,3,[Y,CB,CB,\"'\",jt,!0],null),null,1,null),2,null),3,null)],null),null,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,Iq],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,\"%\",jt,!0],null),new se(null,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,Os,bt,rA],null),new se(null,new k(null,2,[Y,Os,bt,px],null),new se(null,new k(null,2,[Y,Os,bt,iu],null),null,1,null),2,null),3,null)],null),null,1,\nnull),2,null),Qn,new k(null,1,[Xv,Co],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,\"\\x3c\"],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,Br],null),new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,hB],null),new se(null,new k(null,2,[Y,CB,CB,\"\\x3e\"],null),null,1,null),2,null),jt,!0],null),null,1,null),2,null),3,null),Qn,new k(null,2,[Xv,xx,gB,jt],null)],\nnull),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,Os,bt,hB,jt,!0],null),new se(null,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,CB,CB,\"\\x3d\"],null),new se(null,new k(null,2,[Y,CB,CB,\"\\x3d/\"],null),null,1,null),2,null)],null),new se(null,new k(null,3,[Y,Os,bt,hB,jt,!0],null),null,1,null),2,null),3,null),Qn,new k(null,2,[Xv,xx,gB,ax],null)],null),pj.l(D([AJ(\"[0-9a-fA-F]\"),new k(null,1,[Qn,new k(null,1,[Xv,Co],null)],null)])),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,\nnew k(null,2,[Y,CB,CB,\"[\"],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,Br],null),new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,hB],null),new se(null,new k(null,2,[Y,CB,CB,\"]\"],null),null,1,null),2,null),jt,!0],null),null,1,null),2,null),3,null),Qn,new k(null,2,[Xv,xx,gB,vC],null)],null),new k(null,3,[Y,gu,Eq,new k(null,2,[Y,Os,bt,qC],null),Qn,new k(null,2,[Xv,xx,gB,YE],null)],null),pj.l(D([AJ(\"[a-zA-Z][-a-zA-Z0-9]*\"),\nnew k(null,1,[Qn,new k(null,1,[Xv,Co],null)],null)])),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,\"b\",jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,Tl],null),new se(null,new k(null,2,[Y,BA,Eq,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,gu,Eq,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,\".\",jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,Tl],null),null,1,null),2,null)],null)],null),new se(null,new k(null,2,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,\"-\"],null),new se(null,\nnew k(null,2,[Y,Os,bt,Tl],null),null,1,null),2,null)],null),null,1,null),2,null)],null)],null),null,1,null),2,null),3,null),Qn,new k(null,2,[Xv,xx,gB,rA],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,\"d\",jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,MC],null),new se(null,new k(null,2,[Y,BA,Eq,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,gu,Eq,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,\".\",jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,MC],null),null,1,null),\n2,null)],null)],null),new se(null,new k(null,2,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,\"-\"],null),new se(null,new k(null,2,[Y,Os,bt,MC],null),null,1,null),2,null)],null),null,1,null),2,null)],null)],null),null,1,null),2,null),3,null),Qn,new k(null,2,[Xv,xx,gB,px],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,FB],null),new se(null,new k(null,2,[Y,cF,Eq,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,Os,bt,bu,jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,FB],null),null,\n1,null),2,null)],null)],null),null,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,fA],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,fA],null),new se(null,new k(null,2,[Y,cF,Eq,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,Os,bt,hB],null),new se(null,new k(null,2,[Y,CB,CB,\"/\"],null),new se(null,new k(null,2,[Y,Os,bt,hB],null),null,1,null),2,null),3,null),jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,fA],null),null,1,null),2,null)],null)],null),\nnull,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,Br],null)],null),new k(null,3,[Y,Hm,Ls,new se(null,pj.l(D([AJ(\"#'[^'\\\\\\\\]*(?:\\\\\\\\.[^'\\\\\\\\]*)*'\"),P])),new se(null,pj.l(D([AJ('#\\\\\"[^\\\\\"\\\\\\\\]*(?:\\\\\\\\.[^\\\\\"\\\\\\\\]*)*\\\\\"'),P])),null,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,RA],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,2,[Y,BA,Eq,new k(null,2,[Y,Os,bt,as],null)],null),new se(null,new k(null,3,[Y,Os,bt,hB,jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,av],null),null,1,null),2,null),3,null),\nQn,new k(null,2,[Xv,xx,gB,FB],null)],null),new k(null,3,[Y,Os,bt,zz,Qn,new k(null,2,[Xv,xx,gB,jE],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,Os,bt,hB,jt,!0],null),new se(null,new k(null,2,[Y,gu,Eq,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,Os,bt,FF],null),new se(null,new k(null,2,[Y,Os,bt,Nr],null),null,1,null),2,null)],null)],null),null,1,null),2,null),Qn,new k(null,1,[Xv,Co],null)],null),pj.l(D([AJ(\"\\\\s*(?:;.*?(?:\\\\u000D?\\\\u000A\\\\s*|$))*\"),new k(null,1,[Qn,new k(null,\n2,[Xv,xx,gB,hB],null)],null)])),new k(null,3,[Y,Hm,Ls,new se(null,new k(null,2,[Y,Os,bt,Oz],null),new se(null,new k(null,2,[Y,az,Ls,new se(null,new k(null,2,[Y,BA,Eq,new k(null,2,[Y,Os,bt,Oz],null)],null),new se(null,new k(null,2,[Y,CB,CB,\"*\"],null),new se(null,new k(null,2,[Y,BA,Eq,new k(null,2,[Y,Os,bt,Oz],null)],null),null,1,null),2,null),3,null)],null),null,1,null),2,null),Qn,new k(null,2,[Xv,xx,gB,as],null)],null),new k(null,3,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,\"x\",jt,!0],null),new se(null,\nnew k(null,2,[Y,Os,bt,YE],null),new se(null,new k(null,2,[Y,BA,Eq,new k(null,2,[Y,Hm,Ls,new se(null,new k(null,2,[Y,gu,Eq,new k(null,2,[Y,az,Ls,new se(null,new k(null,3,[Y,CB,CB,\".\",jt,!0],null),new se(null,new k(null,2,[Y,Os,bt,YE],null),null,1,null),2,null)],null)],null),new se(null,new k(null,2,[Y,az,Ls,new se(null,new k(null,2,[Y,CB,CB,\"-\"],null),new se(null,new k(null,2,[Y,Os,bt,YE],null),null,1,null),2,null)],null),null,1,null),2,null)],null)],null),null,1,null),2,null),3,null),Qn,new k(null,\n2,[Xv,xx,gB,iu],null)],null),new k(null,3,[Y,gu,Eq,new k(null,2,[Y,Os,bt,Lz],null),Qn,new k(null,2,[Xv,xx,gB,MC],null)],null),new k(null,3,[Y,Hm,Ls,new se(null,new k(null,2,[Y,Os,bt,Js],null),new se(null,new k(null,2,[Y,Os,bt,Br],null),null,1,null),2,null),Qn,new k(null,1,[Xv,Co],null)],null)]),VN=function VN(a){for(var c=[],d=arguments.length,e=0;;)if(ec?YL(a,c.toString(16)):b;if(n(0==b.lastIndexOf(\"o\",0))){--c;if(3R.getLength())R=R.append(\"0\");else{R=R.toString();break a}R=$O(R);return n(R)?R:0}();q=(x.h(q,\"-\")?-1:1)*(60*function(){var R=$O(t);return n(R)?R:0}()+function(){var R=$O(v);return n(R)?R:0}());return new Q(null,8,5,S,[a,aP(1,b,12,\"timestamp month field must be in range 1..12\"),aP(1,c,YO(b,0===(a%4+4)%4&&(0!==(a%100+100)%100||0===(a%400+400)%400)),\"timestamp day field must be in range 1..last day in month\"),aP(0,y,23,\"timestamp hour field must be in range 0..23\"),\naP(0,E,59,\"timestamp minute field must be in range 0..59\"),aP(0,H,x.h(E,59)?60:59,\"timestamp second field must be in range 0..60\"),aP(0,K,999,\"timestamp millisecond field must be in range 0..999\"),q],null)}\nvar cP=Fg(null),dP=Fg(pj.l(D([new k(null,4,[sp,function(a){if(\"string\"===typeof a){var b=bP(a);if(n(b)){a=G(b,0,null);var c=G(b,1,null),d=G(b,2,null),e=G(b,3,null),f=G(b,4,null),g=G(b,5,null),l=G(b,6,null);b=G(b,7,null);b=new Date(Date.UTC(a,c-1,d,e,f,g,l)-6E4*b)}else throw Error([\"Unrecognized date/time syntax: \",p.g(a)].join(\"\"));return b}throw Error(\"Instance literal expects a string for its timestamp.\");},KB,function(a){if(\"string\"===typeof a)return new $k(a.toLowerCase());throw Error(\"UUID literal expects a string as its representation.\");\n},SD,function(a){if(Le(a))return ah.h(Uh,a);throw Error(\"Queue literal expects a vector for its elements.\");},gw,function(a){if(Le(a)){var b=[];a=z(a);for(var c=null,d=0,e=0;;)if(epb?1:pb,Rb=0;;){if(Rb>=C(Da))return Da;if(PP(nb,ee(Da,Rb)))Rb+=pb;else return pB}else for(Rb=0,pb=z(Da),Hb=z(pb),A(Hb),B(Hb);;){gb=z(pb);Hb=A(gb);Sb=B(gb);gb=Hb;ob=pb;if(null==ob||x.h(Rb,101))return Da;if(PP(nb,gb))pb=Sb,Rb+=1;else return pB}},\nrP.prototype.Xb=function(nb,Da){return aQ(this.form,this.Qb,this.Of,Da)},rP.Na=!0,rP.Ja=\"cljs.spec.alpha/t_cljs$spec$alpha14276\",rP.Pa=function(nb){return Qc(nb,\"cljs.spec.alpha/t_cljs$spec$alpha14276\")};return new rP(a,g,function(nb){return PP(r(Ha),nb)},f,d,m,b,q,t,l,e,function(nb){return Le(nb)&&(yb(da)||Le(da))?new Q(null,3,5,S,[bf,function(Da,Hb,Rb,pb){return Rb===pb?Da:I.j(Da,Hb,pb)},bf],null):n(function(){var Da=J(nb);return Da?(Da=n(R)?yb(da):R,n(Da)?Da:J(da)):Da}())?new Q(null,3,5,S,[n(t)?\nte:bf,function(Da,Hb,Rb,pb){return Rb===pb&&yb(t)?Da:I.j(Da,ee(n(t)?pb:Rb,0),ee(pb,1))},bf],null):tf(da)||Qe(da)||yb(da)&&(tf(nb)||Qe(nb))?new Q(null,3,5,S,[te,e,vf],null):new Q(null,3,5,S,[function(Da){return te(n(da)?da:Da)},e,bf],null)},v,y,Ha,mb,sa,c,H,K,f,R,ca,da,P)}function bQ(a){return new k(null,2,[dF,sA,Yn,a],null)}function cQ(a){a=bg(a);a=u.h(a,dF);return x.h(sA,a)}\nvar dQ=function dQ(a){var c=bg(a),d=u.h(c,zs);a=z(d);var e=A(a);a=B(a);var f=u.h(c,Zs),g=z(f),l=A(g);g=B(g);var m=u.h(c,zF),q=z(m);A(q);q=B(q);var t=u.h(c,Yn);c=u.h(c,Tq);return ug(bf,d)?cQ(e)?(d=Yn.g(e),d=re.h(t,n(f)?ve([l,d]):d),a?(a=new k(null,4,[zs,a,Zs,g,zF,q,Yn,d],null),dQ.g?dQ.g(a):dQ.call(null,a)):bQ(d)):new k(null,6,[dF,dp,zs,d,Yn,t,Zs,f,zF,m,Tq,c],null):null};\nfunction eQ(a,b,c,d,e){return n(a)?(d=new k(null,5,[dF,bF,Qs,b,Nq,d,zF,e,kt,al()],null),cQ(a)?I.l(d,Ms,b,D([Yn,re.h(c,Yn.g(a))])):I.l(d,Ms,a,D([Yn,c]))):null}\nfunction fQ(a,b,c,d){return n(n(b)?b:c)?(a=Xg.h(function(e){e=A(e);return d.g?d.g(e):d.call(null,e)},Ng.F(Ih,a,function(){var e=z(b);return e?e:Sg(null)}(),function(){var e=z(c);return e?e:Sg(null)}())),new Q(null,3,5,S,[z(Ng.h(A,a)),n(b)?z(Ng.h(oe,a)):null,n(c)?z(Ng.h(function(e){return ee(e,2)},a)):null],null)):new Q(null,3,5,S,[z(Xg.h(d,a)),b,c],null)}\nfunction gQ(a,b,c){var d=fQ(a,b,c,bf);b=G(d,0,null);c=z(b);a=A(c);c=B(c);var e=G(d,1,null),f=G(e,0,null);d=G(d,2,null);return n(b)?(b=new k(null,4,[dF,GD,zs,b,Zs,e,zF,d],null),null==c?n(f)?cQ(a)?bQ(VP(f,Yn.g(a))):b:a:b):null}function hQ(a,b){return n(n(a)?b:a)?gQ(D([a,b]),null,null):n(a)?a:b}\nvar iQ=function iQ(a){a=yP(a);var c=bg(a),d=u.h(c,dF),e=u.h(c,zs);a=u.h(c,Ms);var f=u.h(c,Qs);c=u.h(c,zF);if(x.h(sA,d))return!0;if(x.h(null,d))return null;if(x.h(BD,d))return d=iQ.g?iQ.g(a):iQ.call(null,a),n(d)?(a=XP(jQ(a),e,B(c)),!LP(a)):d;if(x.h(bF,d))return(e=a===f)?e:iQ.g?iQ.g(a):iQ.call(null,a);if(x.h(dp,d))return ug(iQ,e);if(x.h(GD,d))return vg(iQ,e);throw Error([\"No matching clause: \",p.g(d)].join(\"\"));},jQ=function jQ(a){a=yP(a);var c=bg(a);a=u.h(c,zs);var d=z(a),e=A(d);B(d);var f=u.h(c,Zs),\ng=G(f,0,null),l=u.h(c,dF);d=u.h(c,Ms);var m=u.h(c,Yn);c=u.h(c,zF);if(x.h(sA,l))return m;if(x.h(null,l))return null;if(x.h(BD,l))return e=jQ.g?jQ.g(d):jQ.call(null,d),(f=x.h(e,TB))?d=f:(d=dF.g(yP(d)),f=new uj(null,new k(null,2,[bF,null,dp,null],null),null),d=f.g?f.g(d):f.call(null,d),d=n(d)?Ee(e):d,d=n(d)?d:null),n(d)?TB:XP(e,a,c);if(x.h(bF,l))return kQ(d,m,g);if(x.h(dp,l))return kQ(e,m,g);if(x.h(GD,l))return c=fQ(a,f,c,iQ),a=G(c,0,null),a=G(a,0,null),c=G(c,1,null),c=G(c,0,null),a=null==a?TB:jQ.g?\njQ.g(a):jQ.call(null,a),n(c)?VP(c,a):a;throw Error([\"No matching clause: \",p.g(l)].join(\"\"));};function kQ(a,b,c){a=yP(a);var d=bg(a),e=u.h(d,dF);u.h(d,zs);a=u.h(d,Nq);if(x.h(null,e))return b;if(x.h(GD,e)||x.h(sA,e)||x.h(BD,e))return a=jQ(d),x.h(a,TB)?b:re.h(b,n(c)?ve([c,a]):a);if(x.h(bF,e)||x.h(dp,e))return d=jQ(d),Ee(d)||(c=n(c)?ve([c,d]):d,a=n(a)?ah:re,b=a.h?a.h(b,c):a.call(null,b,c)),b;throw Error([\"No matching clause: \",p.g(e)].join(\"\"));}\nvar lQ=function lQ(a,b){a=yP(a);var d=bg(a),e=u.h(d,zF),f=u.h(d,Qs);a=u.h(d,zs);var g=z(a),l=A(g),m=B(g),q=u.h(d,Yn);g=u.h(d,dF);var t=u.h(d,Nq),v=u.h(d,Zs),y=z(v),E=A(y),H=B(y);y=u.h(d,um);var K=u.h(d,Ms);if(n(d)){if(x.h(sA,g))return null;if(x.h(null,g))return a=OP(d,b,d),LP(a)?null:bQ(a);if(x.h(BD,g))return d=lQ.h?lQ.h(K,b):lQ.call(null,K,b),n(d)?x.h(sA,dF.g(d))?(a=XP(jQ(d),a,B(e)),LP(a)?null:bQ(a)):new k(null,5,[dF,BD,Ms,d,um,y,zs,a,zF,e],null):null;if(x.h(dp,g))return hQ(dQ(new k(null,4,[zs,ke(lQ.h?\nlQ.h(l,b):lQ.call(null,l,b),m),Zs,v,zF,e,Yn,q],null)),n(iQ(l))?function(){var R=dQ(new k(null,4,[zs,m,Zs,H,zF,B(e),Yn,kQ(l,q,E)],null));return lQ.h?lQ.h(R,b):lQ.call(null,R,b)}():null);if(x.h(GD,g))return gQ(Ng.h(function(R){return lQ.h?lQ.h(R,b):lQ.call(null,R,b)},a),v,e);if(x.h(bF,g))return hQ(eQ(lQ.h?lQ.h(K,b):lQ.call(null,K,b),f,q,t,e),n(iQ(K))?function(){var R=eQ(f,f,kQ(K,q,null),t,e);return lQ.h?lQ.h(R,b):lQ.call(null,R,b)}():null);throw Error([\"No matching clause: \",p.g(g)].join(\"\"));}return null};\nfunction mQ(a,b){for(;;){var c=z(b),d=A(c);c=B(c);if(Ee(b))return n(iQ(a))?(a=jQ(a),x.h(a,TB)?null:a):pB;a=lQ(a,d);if(n(a))b=c;else return pB}}\nvar EP=function EP(a,b){if(\"undefined\"===typeof $a||\"undefined\"===typeof iP||\"undefined\"===typeof jP||\"undefined\"===typeof sP)sP=function(d,e,f){this.te=d;this.mb=e;this.Ch=f;this.B=393216;this.M=0},sP.prototype.S=function(d,e){return new sP(this.te,this.mb,e)},sP.prototype.R=function(){return this.Ch},sP.prototype.Eb=function(){return this},sP.prototype.Fb=function(){return this},sP.prototype.pc=cb,sP.prototype.Wb=function(d,e){return null==e||Ie(e)?mQ(this.te,z(e)):pB},sP.prototype.Xb=function(d,\ne){return EP.h?EP.h(this.te,e):EP.call(null,this.te,e)},sP.Na=!0,sP.Ja=\"cljs.spec.alpha/t_cljs$spec$alpha14816\",sP.Pa=function(d){return Qc(d,\"cljs.spec.alpha/t_cljs$spec$alpha14816\")};return new sP(a,b,P)};\nZ(Lt,N(ez,N(wl,new Q(null,1,5,S,[FD],null),N(GG,N(om,VB,FD),N(om,dC,FD))),N(wl,new Q(null,1,5,S,[Zy],null),N(om,N(V,new Q(null,1,5,S,[new Q(null,2,5,S,[Tt,Wt],null)],null),new k(null,2,[VB,Tt,dC,Wt],null)),Zy))),JP(N(ez,N(V,new Q(null,1,5,S,[W],null),N(GG,N(om,VB,W),N(om,dC,W))),N(V,new Q(null,1,5,S,[W],null),N(om,N(V,new Q(null,1,5,S,[new Q(null,2,5,S,[Tt,Wt],null)],null),new k(null,2,[VB,Tt,dC,Wt],null)),W))),function(a){return Bj(Ng.h(VB,a),Ng.h(dC,a))},null,!0,function(a){return Ng.h(function(b){var c=\nG(b,0,null);b=G(b,1,null);return new k(null,2,[VB,c,dC,b],null)},a)}));\nvar nQ=function nQ(a,b,c){var e=new qk(function(){return KP.h(b,a)});if(\"undefined\"===typeof $a||\"undefined\"===typeof iP||\"undefined\"===typeof jP||\"undefined\"===typeof tP)tP=function(f,g,l,m,q){this.form=f;this.Qb=g;this.mb=l;this.Vd=m;this.Dh=q;this.B=393216;this.M=0},tP.prototype.S=function(f,g){return new tP(this.form,this.Qb,this.mb,this.Vd,g)},tP.prototype.R=function(){return this.Dh},tP.prototype.Eb=function(){return this},tP.prototype.Fb=function(){return this},tP.prototype.pc=cb,tP.prototype.Wb=\nfunction(f,g){return null==g?null:uP(r(this.Vd),g)},tP.prototype.Xb=function(f,g){return nQ.j?nQ.j(this.form,this.Qb,g):nQ.call(null,this.form,this.Qb,g)},tP.Na=!0,tP.Ja=\"cljs.spec.alpha/t_cljs$spec$alpha15076\",tP.Pa=function(f){return Qc(f,\"cljs.spec.alpha/t_cljs$spec$alpha15076\")};return new tP(a,b,c,e,P)};Z(zw,SC,Ab);Z(hz,SC,Ab);Z(ep,un,pf);Z(Un,wB,zb);\nZ(pm,N(eD,T,new Q(null,3,5,S,[zw,hz,ep],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[zw,hz,ep],null),null,null,new Q(null,4,5,S,[function(a){return J(a)},function(a){return M(a,GC)},function(a){return M(a,pr)},function(a){return M(a,bD)}],null),function(a){return J(a)&&M(a,GC)&&M(a,pr)&&M(a,bD)},F,new Q(null,3,5,S,[zw,hz,ep],null),null,new Q(null,3,5,S,[GC,pr,bD],null),F,new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,GC)),N(V,\nnew Q(null,1,5,S,[W],null),N(U,W,pr)),N(V,new Q(null,1,5,S,[W],null),N(U,W,bD))],null),null])));Z(VC,SC,Ab);\nZ(Ny,N(Zq,VC,N(eD,T,new Q(null,2,5,S,[Un,pm],null))),aQ(N(zx,VC,N(es,T,new Q(null,2,5,S,[Un,pm],null))),TP(new Q(null,2,5,S,[VC,N(eD,T,new Q(null,2,5,S,[Un,pm],null))],null),new Q(null,2,5,S,[VC,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[Un,pm],null),null,null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,wu)},function(a){return M(a,pD)}],null),function(a){return J(a)&&M(a,wu)&&M(a,pD)},F,new Q(null,2,5,S,[Un,pm],null),null,new Q(null,2,5,S,[wu,pD],null),F,new Q(null,\n3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,wu)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pD))],null),null]))],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,VC,N(eD,T,new Q(null,2,5,S,[Un,pm],null))),Jz,function(a){return J(a)}],null),null));Z(jB,SC,Ab);Z(sC,N(jz,SC),nQ(SC,Ab,null));Z(Yu,Yv,Te);Z(Vz,SC,Ab);var oQ,F2=Fg(P),G2=Fg(P),H2=Fg(P),I2=Fg(P),J2=u.j(P,fu,Kk.A?Kk.A():Kk.call(null));oQ=new Yk(Bd.h(\"gateway.state.spec.common\",\"address-type\"),X,J2,F2,G2,H2,I2);Z(ME,Hs,Bb);\noQ.C(null,gz,function(){return QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[Ss,ME],null),null,null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,X)},function(a){return M(a,oz)}],null),function(a){return J(a)&&M(a,X)&&M(a,oz)},F,new Q(null,2,5,S,[Ss,ME],null),null,new Q(null,2,5,S,[X,oz],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],null),N(U,W,oz))],null),null]))});Z(Io,SC,Ab);\noQ.C(null,qy,function(){return QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[Ss,IB,Io],null),null,null,new Q(null,4,5,S,[function(a){return J(a)},function(a){return M(a,X)},function(a){return M(a,em)},function(a){return M(a,zt)}],null),function(a){return J(a)&&M(a,X)&&M(a,em)&&M(a,zt)},F,new Q(null,3,5,S,[Ss,IB,Io],null),null,new Q(null,3,5,S,[X,em,zt],null),F,new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],\nnull),N(U,W,em)),N(V,new Q(null,1,5,S,[W],null),N(U,W,zt))],null),null]))});oQ.C(null,jD,function(){return QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[Ss],null),null,null,new Q(null,2,5,S,[function(a){return J(a)},function(a){return M(a,X)}],null),function(a){return J(a)&&M(a,X)},F,new Q(null,1,5,S,[Ss],null),null,new Q(null,1,5,S,[X],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X))],null),null]))});\noQ.C(null,zt,function(){return QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[Ss,Io],null),null,null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,X)},function(a){return M(a,zt)}],null),function(a){return J(a)&&M(a,X)&&M(a,zt)},F,new Q(null,2,5,S,[Ss,Io],null),null,new Q(null,2,5,S,[X,zt],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],null),N(U,W,zt))],null),null]))});\noQ.C(null,Zk,function(){return QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[Ss],null),null,null,new Q(null,2,5,S,[function(a){return J(a)},function(a){return M(a,X)}],null),function(a){return J(a)&&M(a,X)},F,new Q(null,1,5,S,[Ss],null),null,new Q(null,1,5,S,[X],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X))],null),null]))});\nZ(yE,N(Gx,cn,X),RP(cn,new Cd(function(){return oQ},cn,Ri([Rs,Yo,CD,so,rs,cw,MG,oo,KC,wD],[iw,Xs,\"gateway/state/spec/common.cljc\",23,1,10,10,Id,null,n(oQ)?oQ.md:null]))));Z(DA,N(Gx,cn,X),RP(cn,new Cd(function(){return oQ},cn,Ri([Rs,Yo,CD,so,rs,cw,MG,oo,KC,wD],[iw,Xs,\"gateway/state/spec/common.cljc\",23,1,10,10,Id,null,n(oQ)?oQ.md:null]))));\nZ(sw,N(Zq,N(Hp,tq,SC,Pl,tA),Hs),aQ(N(zx,N(WD,tq,oC,Pl,As),BB),TP(new Q(null,2,5,S,[N(Hp,tq,SC,Pl,tA),Hs],null),new Q(null,2,5,S,[WP(new Q(null,2,5,S,[tq,Pl],null),new Q(null,2,5,S,[SC,tA],null),new Q(null,2,5,S,[Ab,yf],null),null),Bb],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,N(Hp,tq,SC,Pl,tA),Hs),Jz,function(a){return J(a)}],null),null));Z(vo,N(Hp,ex,kn,qm,SC,kp,iB),WP(new Q(null,3,5,S,[ex,qm,kp],null),new Q(null,3,5,S,[kn,SC,iB],null),new Q(null,3,5,S,[vb,Ab,Le],null),null));Z(zC,N(gq,SC,Yx),YP(new Q(null,2,5,S,[SC,Yx],null),new Q(null,2,5,S,[Ab,z],null),null));Z(lw,SC,Ab);Z(bq,N(jz,Wu),nQ(Wu,J,null));Z(uD,vo,vo);Z($E,vo,vo);\nZ(Kz,N(gq,tA,N(wl,new Q(null,1,5,S,[Az],null),N(U,new uj(null,new k(null,4,[mC,\"null\",cz,\"null\",Pp,\"null\",SB,\"null\"],null),null),Az))),YP(new Q(null,2,5,S,[tA,N(V,new Q(null,1,5,S,[W],null),N(U,new uj(null,new k(null,4,[mC,\"null\",cz,\"null\",Pp,\"null\",SB,\"null\"],null),null),W))],null),new Q(null,2,5,S,[yf,function(a){return M(new uj(null,new k(null,4,[mC,null,cz,null,Pp,null,SB,null],null),null),a)}],null),null));\nZ(hD,N(xy,jB,Jr,Jy),aQ(jB,jB,new k(null,5,[Rv,!0,Jr,Ge,Fo,Jy,tD,N(xy,jB,Jr,Jy),Jz,function(a){return Ge(a)}],null),null));Z(rt,jB,jB);Z(vn,jB,jB);Z(eA,eu,xb);Z(iq,eu,xb);\nZ(cC,N(eD,T,new Q(null,2,5,S,[eA,iq],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[eA,iq],null),null,null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,OB)},function(a){return M(a,uA)}],null),function(a){return J(a)&&M(a,OB)&&M(a,uA)},F,new Q(null,2,5,S,[eA,iq],null),null,new Q(null,2,5,S,[OB,uA],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,OB)),N(V,new Q(null,1,5,S,[W],null),N(U,W,uA))],null),null])));\nZ(jF,N(eD,T,new Q(null,4,5,S,[zC,Kz,hD,vn],null),dD,new Q(null,6,5,S,[lw,uD,$E,bq,rt,cC],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,4,5,S,[zC,Kz,hD,vn],null),new Q(null,6,5,S,[lw,uD,$E,bq,rt,cC],null),null,new Q(null,5,5,S,[function(a){return J(a)},function(a){return M(a,kt)},function(a){return M(a,JF)},function(a){return M(a,QD)},function(a){return M(a,Zv)}],null),function(a){return J(a)&&M(a,kt)&&M(a,JF)&&M(a,QD)&&M(a,Zv)},new Q(null,6,5,S,[Yo,PA,sD,Fw,Ru,bD],null),new Q(null,\n4,5,S,[zC,Kz,hD,vn],null),null,new Q(null,4,5,S,[kt,JF,QD,Zv],null),new Q(null,6,5,S,[lw,uD,$E,bq,rt,cC],null),new Q(null,5,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,kt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,JF)),N(V,new Q(null,1,5,S,[W],null),N(U,W,QD)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Zv))],null),null])));\nZ(Nt,N(Zq,zC,jF),aQ(N(zx,zC,jF),TP(new Q(null,2,5,S,[zC,jF],null),new Q(null,2,5,S,[zC,jF],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,zC,jF),Jz,function(a){return J(a)}],null),null));Z(HC,Yv,Te);Z(qA,SC,Ab);Z(KE,N(Zq,wB,Hs),aQ(N(zx,hF,BB),TP(new Q(null,2,5,S,[wB,Hs],null),new Q(null,2,5,S,[zb,Bb],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,wB,Hs),Jz,function(a){return J(a)}],null),null));Z(Bx,N(Zq,wB,Hs),aQ(N(zx,hF,BB),TP(new Q(null,2,5,S,[wB,Hs],null),new Q(null,2,5,S,[zb,Bb],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,wB,Hs),Jz,function(a){return J(a)}],null),null));\nZ(DE,N(eD,T,new Q(null,2,5,S,[HC,qA],null),dD,new Q(null,2,5,S,[KE,Bx],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[HC,qA],null),new Q(null,2,5,S,[KE,Bx],null),null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,kt)},function(a){return M(a,pA)}],null),function(a){return J(a)&&M(a,kt)&&M(a,pA)},new Q(null,2,5,S,[DB,oD],null),new Q(null,2,5,S,[HC,qA],null),null,new Q(null,2,5,S,[kt,pA],null),new Q(null,2,5,S,[KE,Bx],null),new Q(null,3,5,S,[N(V,new Q(null,1,\n5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,kt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pA))],null),null])));Z(Et,N(Zq,qA,DE),aQ(N(zx,qA,DE),TP(new Q(null,2,5,S,[qA,DE],null),new Q(null,2,5,S,[qA,DE],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,qA,DE),Jz,function(a){return J(a)}],null),null));Z(Lv,SC,Ab);Z(Bz,Lv,Lv);Z(ix,N(Zq,wB,wB),aQ(N(zx,hF,hF),TP(new Q(null,2,5,S,[wB,wB],null),new Q(null,2,5,S,[zb,zb],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,wB,wB),Jz,function(a){return J(a)}],null),null));\nZ(fy,N(eD,T,new Q(null,1,5,S,[Lv],null),dD,new Q(null,2,5,S,[Bz,ix],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[Lv],null),new Q(null,2,5,S,[Bz,ix],null),null,new Q(null,2,5,S,[function(a){return J(a)},function(a){return M(a,X)}],null),function(a){return J(a)&&M(a,X)},new Q(null,2,5,S,[Yo,DB],null),new Q(null,1,5,S,[Lv],null),null,new Q(null,1,5,S,[X],null),new Q(null,2,5,S,[Bz,ix],null),new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),\nN(U,W,X))],null),null])));Z(No,fy,fy);Z(St,N(xy,fy,Jr,iB),aQ(fy,fy,new k(null,5,[Rv,!0,Jr,Le,Fo,iB,tD,N(xy,fy,Jr,iB),Jz,function(a){return Le(a)}],null),null));Z(ly,N(Zq,wB,wB),aQ(N(zx,hF,hF),TP(new Q(null,2,5,S,[wB,wB],null),new Q(null,2,5,S,[zb,zb],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,wB,wB),Jz,function(a){return J(a)}],null),null));Z(RC,vo,vo);\nZ(uG,N(eD,T,new Q(null,2,5,S,[Bz,No],null),dD,new Q(null,3,5,S,[St,ly,RC],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[Bz,No],null),new Q(null,3,5,S,[St,ly,RC],null),null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,Yo)},function(a){return M(a,ey)}],null),function(a){return J(a)&&M(a,Yo)&&M(a,ey)},new Q(null,3,5,S,[mE,Ev,qr],null),new Q(null,2,5,S,[Bz,No],null),null,new Q(null,2,5,S,[Yo,ey],null),new Q(null,3,5,S,[St,ly,RC],null),new Q(null,3,5,S,[N(V,\nnew Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Yo)),N(V,new Q(null,1,5,S,[W],null),N(U,W,ey))],null),null])));Z(yw,SC,Ab);\nZ(jo,N(Zq,yw,N(Zq,Lv,uG)),aQ(N(zx,yw,N(ap,Lv,uG)),TP(new Q(null,2,5,S,[yw,N(Zq,Lv,uG)],null),new Q(null,2,5,S,[yw,aQ(N(zx,Lv,uG),TP(new Q(null,2,5,S,[Lv,uG],null),new Q(null,2,5,S,[Lv,uG],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,Lv,uG),Jz,function(a){return J(a)}],null),null)],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,yw,N(Zq,Lv,uG)),Jz,function(a){return J(a)}],null),null));Z(rG,SC,Ab);Z(gn,zC,zC);Z(SA,jB,jB);\nZ(BG,jB,jB);Z(gt,N(xy,jB,Jr,Jy),aQ(jB,jB,new k(null,5,[Rv,!0,Jr,Ge,Fo,Jy,tD,N(xy,jB,Jr,Jy),Jz,function(a){return Ge(a)}],null),null));Z(bA,N(xy,jB,Jr,Jy),aQ(jB,jB,new k(null,5,[Rv,!0,Jr,Ge,Fo,Jy,tD,N(xy,jB,Jr,Jy),Jz,function(a){return Ge(a)}],null),null));Z(km,jF,jF);\nZ(YB,N(eD,T,new Q(null,3,5,S,[Lv,km,BG],null),dD,new Q(null,3,5,S,[bA,Ly,Ul],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[Lv,km,BG],null),new Q(null,3,5,S,[bA,Ly,Ul],null),null,new Q(null,4,5,S,[function(a){return J(a)},function(a){return M(a,X)},function(a){return M(a,Fp)},function(a){return M(a,Ru)}],null),function(a){return J(a)&&M(a,X)&&M(a,Fp)&&M(a,Ru)},new Q(null,3,5,S,[wp,Ln,nC],null),new Q(null,3,5,S,[Lv,km,BG],null),null,new Q(null,3,5,S,[X,Fp,Ru],null),new Q(null,\n3,5,S,[bA,Ly,Ul],null),new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Fp)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Ru))],null),null])));Z(Ul,N(Zq,rG,YB),aQ(N(zx,rG,YB),TP(new Q(null,2,5,S,[rG,YB],null),new Q(null,2,5,S,[rG,YB],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,rG,YB),Jz,function(a){return J(a)}],null),null));Z(XD,rG,rG);Z(Jv,Mw,Pe);\nZ(HD,N(eD,T,new Q(null,4,5,S,[rG,Lv,Bs,SA],null),dD,new Q(null,5,5,S,[Jv,BG,bA,gt,Ul],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,4,5,S,[rG,Lv,Bs,SA],null),new Q(null,5,5,S,[Jv,BG,bA,gt,Ul],null),null,new Q(null,5,5,S,[function(a){return J(a)},function(a){return M(a,kt)},function(a){return M(a,X)},function(a){return M(a,Ty)},function(a){return M(a,bp)}],null),function(a){return J(a)&&M(a,kt)&&M(a,X)&&M(a,Ty)&&M(a,bp)},new Q(null,5,5,S,[zy,Ru,wp,rn,nC],null),new Q(null,4,5,S,[rG,\nLv,Bs,SA],null),null,new Q(null,4,5,S,[kt,X,Ty,bp],null),new Q(null,5,5,S,[Jv,BG,bA,gt,Ul],null),new Q(null,5,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,kt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Ty)),N(V,new Q(null,1,5,S,[W],null),N(U,W,bp))],null),null])));\nZ(ry,N(Zq,rG,HD),aQ(N(zx,rG,HD),TP(new Q(null,2,5,S,[rG,HD],null),new Q(null,2,5,S,[rG,HD],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,rG,HD),Jz,function(a){return J(a)}],null),null));\nZ(tn,N(eD,dD,new Q(null,1,5,S,[Et],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[null,new Q(null,1,5,S,[Et],null),null,new Q(null,1,5,S,[function(a){return J(a)}],null),function(a){return J(a)},new Q(null,1,5,S,[hx],null),F,null,F,new Q(null,1,5,S,[Et],null),new Q(null,1,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W))],null),null])));\nZ(By,N(Zq,N(Hp,X,Lv,Fm,N(zp,hG,Fm)),N(xy,jB,Jr,Jy)),aQ(N(zx,N(WD,X,Lv,Fm,N(Cu,Zt,Fm)),N(vm,jB,Jr,lx)),TP(new Q(null,2,5,S,[N(Hp,X,Lv,Fm,N(zp,hG,Fm)),N(xy,jB,Jr,Jy)],null),new Q(null,2,5,S,[WP(new Q(null,2,5,S,[X,Fm],null),new Q(null,2,5,S,[Lv,N(zp,hG,Fm)],null),new Q(null,2,5,S,[Lv,Ag(x,Fm)],null),null),aQ(jB,jB,new k(null,5,[Rv,!0,Jr,Ge,Fo,Jy,tD,N(xy,jB,Jr,Jy),Jz,function(a){return Ge(a)}],null),null)],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,N(Hp,X,Lv,\nFm,N(zp,hG,Fm)),N(xy,jB,Jr,Jy)),Jz,function(a){return J(a)}],null),null));Z(Or,Yv,Te);Z(mF,SC,Ab);Z(go,Yv,Te);Z(Ww,SC,Ab);Z(VD,SC,Ab);Z(qB,SC,Ab);Z(lp,SC,Ab);\nZ(qx,N(eD,T,new Q(null,6,5,S,[Or,mF,go,Ks,Ww,VD],null),dD,new Q(null,3,5,S,[qB,lp,vo],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,6,5,S,[Or,mF,go,Ks,Ww,VD],null),new Q(null,3,5,S,[qB,lp,vo],null),null,new Q(null,7,5,S,[function(a){return J(a)},function(a){return M(a,kt)},function(a){return M(a,Yo)},function(a){return M(a,bD)},function(a){return M(a,oD)},function(a){return M(a,Gt)},function(a){return M(a,uq)}],null),function(a){return J(a)&&M(a,kt)&&M(a,Yo)&&M(a,bD)&&M(a,oD)&&M(a,\nGt)&&M(a,uq)},new Q(null,3,5,S,[Nx,pr,Gp],null),new Q(null,6,5,S,[Or,mF,go,Ks,Ww,VD],null),null,new Q(null,6,5,S,[kt,Yo,bD,oD,Gt,uq],null),new Q(null,3,5,S,[qB,lp,vo],null),new Q(null,7,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,kt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Yo)),N(V,new Q(null,1,5,S,[W],null),N(U,W,bD)),N(V,new Q(null,1,5,S,[W],null),N(U,W,oD)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Gt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,uq))],null),null])));\nZ(Wp,N(Hp,Mr,On,WE,N(Zq,Or,qx)),WP(new Q(null,2,5,S,[Mr,WE],null),new Q(null,2,5,S,[On,N(Zq,Or,qx)],null),new Q(null,2,5,S,[Ee,aQ(N(zx,Or,qx),TP(new Q(null,2,5,S,[Or,qx],null),new Q(null,2,5,S,[Or,qx],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,Or,qx),Jz,function(a){return J(a)}],null),null)],null),null));\nZ(zA,N(Zq,jB,Wp),aQ(N(zx,jB,Wp),TP(new Q(null,2,5,S,[jB,Wp],null),new Q(null,2,5,S,[jB,Wp],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,jB,Wp),Jz,function(a){return J(a)}],null),null));Z(gv,Or,Or);Z(Qm,sC,sC);Z(mz,sC,sC);Z(aD,sC,sC);Z(Px,jB,jB);\nZ(er,N(eD,T,new Q(null,3,5,S,[Px,gv,Qm],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[Px,gv,Qm],null),null,null,new Q(null,4,5,S,[function(a){return J(a)},function(a){return M(a,Wm)},function(a){return M(a,Vo)},function(a){return M(a,jv)}],null),function(a){return J(a)&&M(a,Wm)&&M(a,Vo)&&M(a,jv)},F,new Q(null,3,5,S,[Px,gv,Qm],null),null,new Q(null,3,5,S,[Wm,Vo,jv],null),F,new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Wm)),N(V,\nnew Q(null,1,5,S,[W],null),N(U,W,Vo)),N(V,new Q(null,1,5,S,[W],null),N(U,W,jv))],null),null])));Z(ot,N(Zq,aD,er),aQ(N(zx,aD,er),TP(new Q(null,2,5,S,[aD,er],null),new Q(null,2,5,S,[aD,er],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,aD,er),Jz,function(a){return J(a)}],null),null));Z(Lx,jB,jB);\nZ(gG,N(eD,T,new Q(null,3,5,S,[Lx,gv,aD],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[Lx,gv,aD],null),null,null,new Q(null,4,5,S,[function(a){return J(a)},function(a){return M(a,bn)},function(a){return M(a,Vo)},function(a){return M(a,UC)}],null),function(a){return J(a)&&M(a,bn)&&M(a,Vo)&&M(a,UC)},F,new Q(null,3,5,S,[Lx,gv,aD],null),null,new Q(null,3,5,S,[bn,Vo,UC],null),F,new Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,bn)),N(V,\nnew Q(null,1,5,S,[W],null),N(U,W,Vo)),N(V,new Q(null,1,5,S,[W],null),N(U,W,UC))],null),null])));Z($F,N(Zq,Qm,gG),aQ(N(zx,Qm,gG),TP(new Q(null,2,5,S,[Qm,gG],null),new Q(null,2,5,S,[Qm,gG],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,Qm,gG),Jz,function(a){return J(a)}],null),null));Z(bm,SC,Ab);Z(aE,bm,bm);Z(Zz,jB,jB);\nZ(Jw,N(eD,T,new Q(null,3,5,S,[Zz,gv,aD],null),dD,new Q(null,1,5,S,[aE],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[Zz,gv,aD],null),new Q(null,1,5,S,[aE],null),null,new Q(null,4,5,S,[function(a){return J(a)},function(a){return M(a,QB)},function(a){return M(a,Vo)},function(a){return M(a,UC)}],null),function(a){return J(a)&&M(a,QB)&&M(a,Vo)&&M(a,UC)},new Q(null,1,5,S,[kC],null),new Q(null,3,5,S,[Zz,gv,aD],null),null,new Q(null,3,5,S,[QB,Vo,UC],null),new Q(null,1,5,S,[aE],null),\nnew Q(null,4,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,QB)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Vo)),N(V,new Q(null,1,5,S,[W],null),N(U,W,UC))],null),null])));Z(Gz,N(Zq,mz,Jw),aQ(N(zx,mz,Jw),TP(new Q(null,2,5,S,[mz,Jw],null),new Q(null,2,5,S,[mz,Jw],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,mz,Jw),Jz,function(a){return J(a)}],null),null));Z(QC,jB,jB);\nZ(nr,N(eD,dr,new Q(null,2,5,S,[QC,Or],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[null,null,null,new Q(null,1,5,S,[function(a){return J(a)}],null),function(a){return J(a)},F,F,null,F,F,new Q(null,1,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W))],null),null])));Z(Kx,N(Zq,mz,nr),aQ(N(zx,mz,nr),TP(new Q(null,2,5,S,[mz,nr],null),new Q(null,2,5,S,[mz,nr],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,mz,nr),Jz,function(a){return J(a)}],null),null));\nZ(Mp,N(Zq,jB,N(xy,mz,Jr,Jy)),aQ(N(zx,jB,N(vm,mz,Jr,lx)),TP(new Q(null,2,5,S,[jB,N(xy,mz,Jr,Jy)],null),new Q(null,2,5,S,[jB,aQ(mz,mz,new k(null,5,[Rv,!0,Jr,Ge,Fo,Jy,tD,N(xy,mz,Jr,Jy),Jz,function(a){return Ge(a)}],null),null)],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,jB,N(xy,mz,Jr,Jy)),Jz,function(a){return J(a)}],null),null));\nZ(lD,N(Zq,bm,Mp),aQ(N(zx,bm,Mp),TP(new Q(null,2,5,S,[bm,Mp],null),new Q(null,2,5,S,[bm,Mp],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,bm,Mp),Jz,function(a){return J(a)}],null),null));\nZ(PF,N(eD,dD,new Q(null,7,5,S,[vo,zA,ot,$F,Gz,Kx,lD],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[null,new Q(null,7,5,S,[vo,zA,ot,$F,Gz,Kx,lD],null),null,new Q(null,1,5,S,[function(a){return J(a)}],null),function(a){return J(a)},new Q(null,7,5,S,[Gp,ew,Ux,Lp,Ey,wo,Iz],null),F,null,F,new Q(null,7,5,S,[vo,zA,ot,$F,Gz,Kx,lD],null),new Q(null,1,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W))],null),null])));Z(Aw,sC,sC);Z(qp,SC,Ab);Z(dG,Hs,Bb);\nZ(Bw,N(eD,T,new Q(null,1,5,S,[qp],null),dD,new Q(null,2,5,S,[dG,hC],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[qp],null),new Q(null,2,5,S,[dG,hC],null),null,new Q(null,2,5,S,[function(a){return J(a)},function(a){return M(a,ND)}],null),function(a){return J(a)&&M(a,ND)},new Q(null,2,5,S,[xp,pn],null),new Q(null,1,5,S,[qp],null),null,new Q(null,1,5,S,[ND],null),new Q(null,2,5,S,[dG,hC],null),new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],\nnull),N(U,W,ND))],null),null])));Z(Ez,N(Zq,Aw,Bw),aQ(N(zx,Aw,Bw),TP(new Q(null,2,5,S,[Aw,Bw],null),new Q(null,2,5,S,[Aw,Bw],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,Aw,Bw),Jz,function(a){return J(a)}],null),null));\nZ(uF,N(eD,dD,new Q(null,1,5,S,[Ez],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[null,new Q(null,1,5,S,[Ez],null),null,new Q(null,1,5,S,[function(a){return J(a)}],null),function(a){return J(a)},new Q(null,1,5,S,[Ey],null),F,null,F,new Q(null,1,5,S,[Ez],null),new Q(null,1,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W))],null),null])));Z(kq,SC,Ab);Z(hu,Yv,Te);Z(xn,jB,jB);Z(Xq,sC,sC);\nZ($q,N(eD,T,new Q(null,2,5,S,[xn,Xq],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[xn,Xq],null),null,null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,iD)},function(a){return M(a,Nw)}],null),function(a){return J(a)&&M(a,iD)&&M(a,Nw)},F,new Q(null,2,5,S,[xn,Xq],null),null,new Q(null,2,5,S,[iD,Nw],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,iD)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Nw))],null),null])));Z(Rq,sC,sC);Z(eE,SC,Ab);Z(KA,Mw,Pe);Z(gA,N(eD,dr,new Q(null,2,5,S,[eE,KA],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[null,null,null,new Q(null,1,5,S,[function(a){return J(a)}],null),function(a){return J(a)},F,F,null,F,F,new Q(null,1,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W))],null),null])));Z(SE,kq,kq);Z(YA,new uj(null,new k(null,2,[jn,\"null\",cz,\"null\"],null),null),new uj(null,new k(null,2,[jn,null,cz,null],null),null));\nZ(cu,N(eD,T,new Q(null,2,5,S,[eE,YA],null),dD,new Q(null,3,5,S,[cq,gA,qA],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[eE,YA],null),new Q(null,3,5,S,[cq,gA,qA],null),null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,kt)},function(a){return M(a,X)}],null),function(a){return J(a)&&M(a,kt)&&M(a,X)},new Q(null,3,5,S,[Pw,cz,pA],null),new Q(null,2,5,S,[eE,YA],null),null,new Q(null,2,5,S,[kt,X],null),new Q(null,3,5,S,[cq,gA,qA],null),new Q(null,3,5,S,[N(V,new Q(null,\n1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,kt)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X))],null),null])));Z(Pr,N(Zq,Rq,cu),aQ(N(zx,Rq,cu),TP(new Q(null,2,5,S,[Rq,cu],null),new Q(null,2,5,S,[Rq,cu],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,Rq,cu),Jz,function(a){return J(a)}],null),null));Z(lr,Yv,Te);Z(hw,cu,cu);\nZ(Lu,N(eD,T,new Q(null,2,5,S,[DA,sw],null),dD,new Q(null,6,5,S,[nm,PF,tn,uF,hw,qA],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[DA,sw],null),new Q(null,6,5,S,[nm,PF,tn,uF,hw,qA],null),null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,$s)},function(a){return M(a,Uz)}],null),function(a){return J(a)&&M(a,$s)&&M(a,Uz)},new Q(null,6,5,S,[Vt,CF,zr,tF,Sv,pA],null),new Q(null,2,5,S,[DA,sw],null),null,new Q(null,2,5,S,[$s,Uz],null),new Q(null,6,5,S,[nm,PF,tn,uF,\nhw,qA],null),new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,$s)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Uz))],null),null])));Z(pw,N(Zq,jB,Lu),aQ(N(zx,jB,Lu),TP(new Q(null,2,5,S,[jB,Lu],null),new Q(null,2,5,S,[jB,Lu],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,jB,Lu),Jz,function(a){return J(a)}],null),null));\nZ(bz,N(Zq,N(Hp,Gy,SC,Er,new uj(null,new k(null,1,[qv,\"null\"],null),null)),N(xy,jB)),aQ(N(zx,N(WD,Gy,oC,Er,new uj(null,new k(null,1,[qv,\"null\"],null),null)),N(vm,jB)),TP(new Q(null,2,5,S,[N(Hp,Gy,SC,Er,new uj(null,new k(null,1,[qv,\"null\"],null),null)),N(xy,jB)],null),new Q(null,2,5,S,[WP(new Q(null,2,5,S,[Gy,Er],null),new Q(null,2,5,S,[SC,new uj(null,new k(null,1,[qv,\"null\"],null),null)],null),new Q(null,2,5,S,[Ab,new uj(null,new k(null,1,[qv,null],null),null)],null),null),aQ(jB,jB,new k(null,4,[Rv,\n!0,Fo,null,tD,N(xy,jB),Jz,function(a){return Fe(a)}],null),null)],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,N(Hp,Gy,SC,Er,new uj(null,new k(null,1,[qv,\"null\"],null),null)),N(xy,jB)),Jz,function(a){return J(a)}],null),null));Z(QF,N(xy,jB),aQ(jB,jB,new k(null,4,[Rv,!0,Fo,null,tD,N(xy,jB),Jz,function(a){return Fe(a)}],null),null));Z(Yz,Nt,Nt);Z(im,jo,jo);Z(Yy,By,By);\nZ(nB,N(Zq,sw,jB),aQ(N(zx,sw,jB),TP(new Q(null,2,5,S,[sw,jB],null),new Q(null,2,5,S,[sw,jB],null)),new k(null,7,[Um,function(a,b){return ee(b,0)},aF,P,Rv,!0,Jr,J,Fo,Wu,tD,N(Zq,sw,jB),Jz,function(a){return J(a)}],null),null));Z(ns,Hs,Bb);Z(Vv,SC,Ab);Z(XA,un,pf);\nZ(ty,N(eD,T,new Q(null,2,5,S,[Vv,XA],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[Vv,XA],null),null,null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,jw)},function(a){return M(a,Zu)}],null),function(a){return J(a)&&M(a,jw)&&M(a,Zu)},F,new Q(null,2,5,S,[Vv,XA],null),null,new Q(null,2,5,S,[jw,Zu],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,jw)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Zu))],null),null])));\nZ(ID,SC,Ab);\nZ(lo,N(eD,T,new Q(null,2,5,S,[ty,ID],null),dD,new Q(null,11,5,S,[ns,Ny,pw,bz,QF,nB,Yz,Pr,ry,im,Yy],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[ty,ID],null),new Q(null,11,5,S,[ns,Ny,pw,bz,QF,nB,Yz,Pr,ry,im,Yy],null),null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,pq)},function(a){return M(a,ho)}],null),function(a){return J(a)&&M(a,pq)&&M(a,ho)},new Q(null,11,5,S,[Cv,PE,wG,xB,Ip,Du,YC,nn,Lo,Dz,zu],null),new Q(null,2,5,S,[ty,ID],null),null,new Q(null,2,\n5,S,[pq,ho],null),new Q(null,11,5,S,[ns,Ny,pw,bz,QF,nB,Yz,Pr,ry,im,Yy],null),new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pq)),N(V,new Q(null,1,5,S,[W],null),N(U,W,ho))],null),null])));Z(Kn,SC,Ab);Z(XE,tA,yf);var uQ,K2=Fg(P),L2=Fg(P),M2=Fg(P),N2=Fg(P),O2=u.j(P,fu,Kk.A?Kk.A():Kk.call(null));uQ=new Yk(Bd.h(\"gateway.common.spec.messages\",\"message-body\"),X,O2,K2,L2,M2,N2);Z(To,SC,Ab);Z(Vw,SC,Ab);Z(or,N(jz,jB),nQ(jB,jB,null));\nZ(KG,N(eD,T,new Q(null,2,5,S,[Kn,XE],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[Kn,XE],null),null,null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,wu)},function(a){return M(a,X)}],null),function(a){return J(a)&&M(a,wu)&&M(a,X)},F,new Q(null,2,5,S,[Kn,XE],null),null,new Q(null,2,5,S,[wu,X],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,wu)),N(V,new Q(null,1,5,S,[W],null),N(U,W,X))],null),null])));\nZ(Ix,N(eD,T,new Q(null,2,5,S,[sC,jB],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[sC,jB],null),null,null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,UC)},function(a){return M(a,pG)}],null),function(a){return J(a)&&M(a,UC)&&M(a,pG)},F,new Q(null,2,5,S,[sC,jB],null),null,new Q(null,2,5,S,[UC,pG],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,UC)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pG))],null),null])));\nZ(TA,N(eD,T,new Q(null,1,5,S,[jB],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[jB],null),null,null,new Q(null,2,5,S,[function(a){return J(a)},function(a){return M(a,pG)}],null),function(a){return J(a)&&M(a,pG)},F,new Q(null,1,5,S,[jB],null),null,new Q(null,1,5,S,[pG],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pG))],null),null])));Z(Ko,N(Xy,KG,TA),ZP(new Q(null,2,5,S,[KG,TA],null),new Q(null,2,5,S,[KG,TA],null),null));\nZ(Ql,N(Xy,KG,TA,N(eD,T,new Q(null,1,5,S,[sC],null))),ZP(new Q(null,3,5,S,[KG,TA,N(eD,T,new Q(null,1,5,S,[sC],null))],null),new Q(null,3,5,S,[KG,TA,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[sC],null),null,null,new Q(null,2,5,S,[function(a){return J(a)},function(a){return M(a,UC)}],null),function(a){return J(a)&&M(a,UC)},F,new Q(null,1,5,S,[sC],null),null,new Q(null,1,5,S,[UC],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,\nUC))],null),null]))],null),null));\nuQ.C(null,Cx,function(){return ZP(new Q(null,2,5,S,[KG,N(eD,T,new Q(null,2,5,S,[To,Vw],null),dD,new Q(null,1,5,S,[or],null))],null),new Q(null,2,5,S,[KG,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[To,Vw],null),new Q(null,1,5,S,[or],null),null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,pE)},function(a){return M(a,In)}],null),function(a){return J(a)&&M(a,pE)&&M(a,In)},new Q(null,1,5,S,[pG],null),new Q(null,2,5,S,[To,Vw],null),null,new Q(null,2,5,S,[pE,In],null),\nnew Q(null,1,5,S,[or],null),new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pE)),N(V,new Q(null,1,5,S,[W],null),N(U,W,In))],null),null]))],null),null)});\nuQ.C(null,jC,function(){return ZP(new Q(null,2,5,S,[KG,N(eD,dD,new Q(null,1,5,S,[or],null))],null),new Q(null,2,5,S,[KG,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[null,new Q(null,1,5,S,[or],null),null,new Q(null,1,5,S,[function(a){return J(a)}],null),function(a){return J(a)},new Q(null,1,5,S,[pG],null),F,null,F,new Q(null,1,5,S,[or],null),new Q(null,1,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W))],null),null]))],null),null)});\nZ(gr,N(Gx,yF,X),RP(yF,new Cd(function(){return uQ},yF,Ri([Rs,Yo,CD,so,rs,cw,MG,oo,KC,wD],[Fn,hv,\"gateway/common/spec/messages.cljc\",23,1,8,8,Id,null,n(uQ)?uQ.md:null]))));Z(tp,yE,yE);\nZ(EE,N(eD,T,new Q(null,2,5,S,[DA,gr],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[DA,gr],null),null,null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,$s)},function(a){return M(a,Ro)}],null),function(a){return J(a)&&M(a,$s)&&M(a,Ro)},F,new Q(null,2,5,S,[DA,gr],null),null,new Q(null,2,5,S,[$s,Ro],null),F,new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,$s)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Ro))],null),null])));\nZ(dE,N(eD,T,new Q(null,2,5,S,[tp,gr],null),dD,new Q(null,1,5,S,[DA],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,2,5,S,[tp,gr],null),new Q(null,1,5,S,[DA],null),null,new Q(null,3,5,S,[function(a){return J(a)},function(a){return M(a,tB)},function(a){return M(a,Ro)}],null),function(a){return J(a)&&M(a,tB)&&M(a,Ro)},new Q(null,1,5,S,[$s],null),new Q(null,2,5,S,[tp,gr],null),null,new Q(null,2,5,S,[tB,Ro],null),new Q(null,1,5,S,[DA],null),new Q(null,3,5,S,[N(V,new Q(null,1,5,S,[W],null),\nN(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,tB)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Ro))],null),null])));Z(xo,N(jz,N(xy,dE)),nQ(N(xy,dE),aQ(dE,dE,new k(null,4,[Rv,!0,Fo,null,tD,N(xy,dE),Jz,function(a){return Fe(a)}],null),null),null));Z(NE,Mw,Pe);\nZ(uv,N(eD,T,new Q(null,1,5,S,[NE],null)),QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,1,5,S,[NE],null),null,null,new Q(null,2,5,S,[function(a){return J(a)},function(a){return M(a,gz)}],null),function(a){return J(a)&&M(a,gz)},F,new Q(null,1,5,S,[NE],null),null,new Q(null,1,5,S,[gz],null),F,new Q(null,2,5,S,[N(V,new Q(null,1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,gz))],null),null])));\nuQ.C(null,nG,function(){return ZP(new Q(null,2,5,S,[Ko,N(eD,T,new Q(null,3,5,S,[dz,sw,uv],null))],null),new Q(null,2,5,S,[Ko,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[dz,sw,uv],null),null,null,new Q(null,4,5,S,[function(a){return J(a)},function(a){return M(a,Fr)},function(a){return M(a,Uz)},function(a){return M(a,rb)}],null),function(a){return J(a)&&M(a,Fr)&&M(a,Uz)&&M(a,rb)},F,new Q(null,3,5,S,[dz,sw,uv],null),null,new Q(null,3,5,S,[Fr,Uz,rb],null),F,new Q(null,4,5,S,[N(V,new Q(null,\n1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Fr)),N(V,new Q(null,1,5,S,[W],null),N(U,W,Uz)),N(V,new Q(null,1,5,S,[W],null),N(U,W,rb))],null),null]))],null),null)});Z(WB,jB,jB);\nuQ.C(null,$w,function(){return ZP(new Q(null,2,5,S,[Ko,N(eD,T,new Q(null,3,5,S,[WB,To,Vw],null))],null),new Q(null,2,5,S,[Ko,QP(Ri([T,dD,Cz,AB,KD,Np,mm,Zn,rE,AE,$p,BA],[new Q(null,3,5,S,[WB,To,Vw],null),null,null,new Q(null,4,5,S,[function(a){return J(a)},function(a){return M(a,rw)},function(a){return M(a,pE)},function(a){return M(a,In)}],null),function(a){return J(a)&&M(a,rw)&&M(a,pE)&&M(a,In)},F,new Q(null,3,5,S,[WB,To,Vw],null),null,new Q(null,3,5,S,[rw,pE,In],null),F,new Q(null,4,5,S,[N(V,new Q(null,\n1,5,S,[W],null),N(Wu,W)),N(V,new Q(null,1,5,S,[W],null),N(U,W,rw)),N(V,new Q(null,1,5,S,[W],null),N(U,W,pE)),N(V,new Q(null,1,5,S,[W],null),N(U,W,In))],null),null]))],null),null)});Z(xu,N(jz,N(zx,N(jz,lo),N(jz,N(xy,dE)))),nQ(N(zx,N(jz,lo),N(jz,N(xy,dE))),TP(new Q(null,2,5,S,[N(jz,lo),N(jz,N(xy,dE))],null),new Q(null,2,5,S,[nQ(lo,lo,null),nQ(N(xy,dE),aQ(dE,dE,new k(null,4,[Rv,!0,Fo,null,tD,N(xy,dE),Jz,function(a){return Fe(a)}],null),null),null)],null)),null));function AQ(a){if(null!=a&&null!=a.Yc)a=a.Yc(a);else{var b=AQ[ba(null==a?null:a)];if(null!=b)a=b.g?b.g(a):b.call(null,a);else if(b=AQ._,null!=b)a=b.g?b.g(a):b.call(null,a);else throw Eb(\"Domain.info\",a);}return a}\nfunction BQ(a,b){if(null!=a&&null!=a.Zc)a=a.Zc(a,b);else{var c=BQ[ba(null==a?null:a)];if(null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else if(c=BQ._,null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else throw Eb(\"Domain.init\",a);}return a}function CQ(a,b){if(null!=a&&null!=a.Wc)a=a.Wc(a,b);else{var c=CQ[ba(null==a?null:a)];if(null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else if(c=CQ._,null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else throw Eb(\"Domain.destroy\",a);}return a}\nfunction DQ(a,b,c){if(null!=a&&null!=a.Xc)a=a.Xc(a,b,c);else{var d=DQ[ba(null==a?null:a)];if(null!=d)a=d.j?d.j(a,b,c):d.call(null,a,b,c);else if(d=DQ._,null!=d)a=d.j?d.j(a,b,c):d.call(null,a,b,c);else throw Eb(\"Domain.handle-message\",a);}return a};function EQ(a,b,c,d,e,f,g){this.id=a;this.cc=b;this.source=c;this.options=d;this.D=e;this.m=f;this.G=g;this.B=2230716170;this.M=139264}h=EQ.prototype;h.na=function(a,b){return this.P(null,b,null)};h.P=function(a,b,c){switch(b instanceof w?b.W:null){case \"id\":return this.id;case \"identity\":return this.cc;case \"source\":return this.source;case \"options\":return this.options;default:return u.j(this.m,b,c)}};\nh.Ka=function(a,b,c){return Nb.j(function(d,e){var f=G(e,0,null);e=G(e,1,null);return b.j?b.j(d,f,e):b.call(null,d,f,e)},c,this)};h.U=function(a,b,c){return Tj(b,function(d){return Tj(b,bk,\"\",\" \",\"\",c,d)},\"#gateway.state.peers.Peer{\",\", \",\"}\",c,Of.h(new Q(null,4,5,S,[new Q(null,2,5,S,[kt,this.id],null),new Q(null,2,5,S,[Uz,this.cc],null),new Q(null,2,5,S,[$s,this.source],null),new Q(null,2,5,S,[Vt,this.options],null)],null),this.m))};\nh.xa=function(){return new Yh(this,4,new Q(null,4,5,S,[kt,Uz,$s,Vt],null),n(this.m)?nd(this.m):eg())};h.R=function(){return this.D};h.da=function(){return 4+C(this.m)};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=802532213^Pd(this)};h.aa=function(a,b){return null!=b&&this.constructor===b.constructor&&x.h(this.id,b.id)&&x.h(this.cc,b.cc)&&x.h(this.source,b.source)&&x.h(this.options,b.options)&&x.h(this.m,b.m)};\nh.bb=function(a,b){return M(new uj(null,new k(null,4,[Uz,null,$s,null,kt,null,Vt,null],null),null),b)?we.h(Bc(ah.h(P,this),this.D),b):new EQ(this.id,this.cc,this.source,this.options,this.D,dg(we.h(this.m,b)),null)};h.za=function(a,b){switch(b instanceof w?b.W:null){case \"id\":case \"identity\":case \"source\":case \"options\":return!0;default:return M(this.m,b)}};\nh.ja=function(a,b,c){return n(O.h?O.h(kt,b):O.call(null,kt,b))?new EQ(c,this.cc,this.source,this.options,this.D,this.m,null):n(O.h?O.h(Uz,b):O.call(null,Uz,b))?new EQ(this.id,c,this.source,this.options,this.D,this.m,null):n(O.h?O.h($s,b):O.call(null,$s,b))?new EQ(this.id,this.cc,c,this.options,this.D,this.m,null):n(O.h?O.h(Vt,b):O.call(null,Vt,b))?new EQ(this.id,this.cc,this.source,c,this.D,this.m,null):new EQ(this.id,this.cc,this.source,this.options,this.D,I.j(this.m,b,c),null)};\nh.ca=function(){return z(Of.h(new Q(null,4,5,S,[new xh(kt,this.id),new xh(Uz,this.cc),new xh($s,this.source),new xh(Vt,this.options)],null),this.m))};h.S=function(a,b){return new EQ(this.id,this.cc,this.source,this.options,b,this.m,this.G)};h.ia=function(a,b){return Le(b)?this.ja(null,Zb(b,0),Zb(b,1)):Nb.j(Xb,this,b)};\nvar FQ=function FQ(a){switch(arguments.length){case 2:return FQ.h(arguments[0],arguments[1]);case 3:return FQ.j(arguments[0],arguments[1],arguments[2]);default:throw Error([\"Invalid arity: \",p.g(arguments.length)].join(\"\"));}};FQ.h=function(a,b){return n(b)?dh.h(a,new Q(null,2,5,S,[wG,b],null)):null};FQ.j=function(a,b,c){a=FQ.h(a,b);return n(u.h(a,c))?a:null};FQ.I=3;\nfunction GQ(a,b){if(null==b)throw cl(\"Peer id is missing\",P);a=FQ.h(a,b);if(n(a))return a;throw cl([\"Unable to find peer with id \",p.g(b)].join(\"\"),P);}function HQ(a,b,c){if(null==b)throw cl(\"Peer id is missing\",P);a=FQ.j(a,b,c);if(n(a))return a;throw cl([\"Unable to find peer with id \",p.g(b),\" in domain \",p.g(c)].join(\"\"),P);}function IQ(a){return x.h(gz,dh.h(a,new Q(null,2,5,S,[$s,X],null)))}function JQ(a,b){return wk(D([Ng.g(Ag(FQ,a)),dh.h(a,new Q(null,2,5,S,[JB,b],null))]))}\nfunction KQ(a,b){var c=X.g(b);switch(c instanceof w?c.W:null){case \"node\":return x.h(zt.g(b),zt.g(a));case \"peer\":return x.h(zt.g(b),zt.g(a))&&x.h(em.g(b),em.g(a));case \"local\":return x.h(oz.g(b),oz.g(a));default:return!1}}function LQ(a,b){return wk(D([zg.h(Ng.g(Hh),Xg.g(function(c){return KQ($s.g(c),b)})),wG.g(a)]))}function MQ(a,b,c){return wk(D([Xg.g(function(d){return KQ($s.g(d),b)}),JQ(a,c)]))}\nfunction NQ(a,b,c,d,e,f){var g=FQ.h(a,c);if(n(g)){var l=g;return new Q(null,2,5,S,[a,l],null)}l=function(){var q=new EQ(c,d,b,f,null,null,null);return n(e)?I.j(q,Sv,e):q}();var m=xr.h(d,qv);g=function(){var q=eh(fh.F(eh(a,new Q(null,2,5,S,[Du,d],null),c),new Q(null,2,5,S,[xB,m],null),Dg(re,wj),c),new Q(null,2,5,S,[wG,c],null),l);return n(cp.g(f))?hh(q,Ip,Dg(re,wj),c):q}();return new Q(null,2,5,S,[g,l],null)}\nfunction OQ(a,b){var c=Uz.g(b),d=kt.g(b),e=xr.h(c,qv);return hh(hh(gh(hh(a,Du,we,c),xB,function(f){var g=De.h(u.h(f,e),d);return z(g)?I.j(f,e,g):we.h(f,e)}),wG,we,d),Ip,Dg(De,wj),d)}function PQ(a,b,c){return eh(a,new Q(null,2,5,S,[wG,b],null),c)}function QQ(a){for(var b=[],c=arguments.length,d=0;;)if(dc?\"-\":\"+\"];c=Math.abs(c);d.push(Math.floor(c/60)%100);c%=60;0!=c&&d.push(\":\",Ya(c,2));c=d.join(\"\")}b.df=c;c=a;0==c?c=\"UTC\":(d=[\"UTC\",0>c?\"+\":\"-\"],c=Math.abs(c),d.push(Math.floor(c/60)%100),c%=60,0!=c&&d.push(\":\",c),c=d.join(\"\"));a=aR(a);b.ef=[c,c];b.cd={ii:a,nf:a};b.xe=[];return b}b=new ZQ;b.df=a.id;b.ve=-a.std_offset;b.ef=a.names;b.cd=a.names_ext;b.xe=a.transitions;return b}\nfunction aR(a){var b=[\"GMT\"];b.push(0>=a?\"+\":\"-\");a=Math.abs(a);b.push(Ya(Math.floor(a/60)%100,2),\":\",Ya(a%60,2));return b.join(\"\")}function bR(a,b){b=Date.UTC(b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate(),b.getUTCHours(),b.getUTCMinutes())/36E5;for(var c=0;c=a.xe[c];)c+=2;return 0==c?0:a.xe[c-1]};function cR(a){this.qe=[];this.Ha=XQ;\"number\"==typeof a?dR(this,a):eR(this,a)}var fR=[/^'(?:[^']|'')*('|$)/,/^(?:G+|y+|Y+|M+|k+|S+|E+|a+|h+|K+|H+|c+|L+|Q+|d+|m+|s+|v+|V+|w+|z+|Z+)/,/^[^'GyYMkSEahKHcLQdmsvVwzZ]+/];function gR(a){return a.getHours?a.getHours():0}\nfunction eR(a,b){for(hR&&(b=b.replace(/\\u200f/g,\"\"));b;){const c=b;for(let d=0;db)c=a.Ha.kf[b];else if(8>b)c=a.Ha.pf[b-4];else if(12>b)c=a.Ha.hg[b-8],c=c.replace(\"{1}\",a.Ha.kf[b-8]),c=c.replace(\"{0}\",a.Ha.pf[b-8]);else{dR(a,10);return}eR(a,c)}function jR(a,b){{b=String(b);const c=a.Ha||XQ;if(void 0!==c.yg){a=[];for(let d=0;d=e?String.fromCharCode(c.yg+e-48):b.charAt(d))}b=a.join(\"\")}}return b}var hR=!1;\nfunction kR(a){if(!(a.getHours&&a.getSeconds&&a.getMinutes))throw Error(\"The date to format has no time (probably a goog.date.Date). Use Date or goog.date.DateTime, or use a pattern without time fields.\");}\nfunction iR(a,b,c,d,e,f){var g=b.length;switch(b.charAt(0)){case \"G\":return c=0c&&(c=-c),2==g&&(c%=100),jR(a,Ya(c,g));case \"Y\":return c=(new Date(YQ(d.getFullYear(),d.getMonth(),d.getDate(),a.Ha.mf,a.Ha.lf))).getFullYear(),0>c&&(c=-c),2==g&&(c%=100),jR(a,Ya(c,g));case \"M\":a:switch(c=d.getMonth(),g){case 5:g=a.Ha.mg[c];break a;case 4:g=a.Ha.lg[c];break a;case 3:g=a.Ha.og[c];break a;default:g=jR(a,Ya(c+1,g))}return g;\ncase \"k\":return kR(e),jR(a,Ya(gR(e)||24,g));case \"S\":return jR(a,(e.getMilliseconds()/1E3).toFixed(Math.min(3,g)).substr(2)+(3g?1:0];case \"h\":return kR(e),jR(a,Ya(gR(e)%12||12,g));case \"K\":return kR(e),jR(a,Ya(gR(e)%12,g));case \"H\":return kR(e),jR(a,Ya(gR(e),g));case \"c\":a:switch(c=d.getDay(),g){case 5:g=a.Ha.tg[c];break a;case 4:g=a.Ha.wg[c];break a;case 3:g=a.Ha.vg[c];break a;\ndefault:g=jR(a,Ya(c,1))}return g;case \"L\":a:switch(c=d.getMonth(),g){case 5:g=a.Ha.sg[c];break a;case 4:g=a.Ha.rg[c];break a;case 3:g=a.Ha.ug[c];break a;default:g=jR(a,Ya(c+1,g))}return g;case \"Q\":return c=Math.floor(d.getMonth()/3),4>g?a.Ha.pg[c]:a.Ha.ng[c];case \"d\":return jR(a,Ya(d.getDate(),g));case \"m\":return kR(e),jR(a,Ya(e.getMinutes(),g));case \"s\":return kR(e),jR(a,Ya(e.getSeconds(),g));case \"v\":return g=f||$Q(c.getTimezoneOffset()),g.df;case \"V\":return a=f||$Q(c.getTimezoneOffset()),2>=g?\na.df:0g?a.ef[0g?(g=-(b.ve-bR(b,c)),a=[0>g?\"-\":\"+\"],g=Math.abs(g),a.push(Ya(Math.floor(g/\n60)%100,2),Ya(g%60,2)),g=a.join(\"\")):g=jR(a,aR(b.ve-bR(b,c))),g;default:return\"\"}};function lR(a,b){var c=Yf(Cj,a,b);return ke(c,Yg.h(function(d){return c===d},b))}function mR(a,b){return C(a)a||x.h(b,a)&&(c>f||x.h(c,f)&&d>=e)))throw cl(\"Insufficient `com.taoensso/encore` version, you may have a dependency conflict: see http://goo.gl/qBbLvC for solutions.\",new k(null,2,[Xu,RI(\".\",new Q(null,3,5,S,[a,f,e],null)),kB,RI(\".\",new Q(null,3,5,S,[b,\nc,d],null))],null));}var DR=function DR(a){switch(arguments.length){case 3:return DR.j(arguments[0],arguments[1],arguments[2]);case 2:return DR.h(arguments[0],arguments[1]);default:for(var c=[],d=arguments.length,e=0;;)if(eb?0:b;var c=C(a);return b>=c?F:Nh(a,b,c)};\nER.j=function(a,b,c){b=0>b?0:b;var d=jf(C(a));c=c>d?d:c;return b>=c?F:Nh(a,b,c)};ER.I=3;var FR=function FR(a){switch(arguments.length){case 2:return FR.h(arguments[0],arguments[1]);case 3:return FR.j(arguments[0],arguments[1],arguments[2]);default:throw Error([\"Invalid arity: \",p.g(arguments.length)].join(\"\"));}};FR.h=function(a,b){var c=C(a);return 0>b?(b+=c,Nh(a,0>b?0:b,c)):b>=c?F:Nh(a,b,c)};\nFR.j=function(a,b,c){if(0>=c)return F;var d=jf(C(a));if(0>b)return b+=d,b=0>b?0:b,c=b+c,Nh(a,b,c>d?d:c);c=b+c;d=c>d?d:c;return b>=d?F:Nh(a,b,d)};FR.I=3;function GR(a){return 1=Math.random()&&(Gg(c,null),Ig.h(d,function(v){return Zc(af(function(y,E,H){H=af(function(K,R,ca){var da=u.h(e,R);return n(da)?l>=ca.ff+da.$e?we.h(K,R):K:we.h(K,R)},H,H);return Ee(H)?ad(y,E):$c(y,E,H)},Xc(n(v)?v:P),v))}));for(;;){var m=r(d),q=u.h(m,f),t=null==q?null:af(function(v,y,E,H,K,R){return function(ca,da,sa){var Ha=u.h(R,da);if(n(Ha)){if(sa.n=sa?ca:null==ca?new JR(ve([da,sa]),\nda,sa):sa>ca.jf?new JR(I.j(ca.Ye,da,sa),da,sa):new JR(I.j(ca.Ye,da,sa),ca.fg,ca.jf)}return ca}}(m,q,l,c,d,e),null,q);if(n(n(g)?g:t))return g=t,n(g)?(f=g,new Q(null,3,5,S,[f.fg,f.jf,f.Ye],null)):null;g=r(c);n(g)||(q=af(function(v,y,E,H,K){return function(R,ca,da){var sa=I.j;var Ha=u.h(E,ca);if(n(Ha)){var mb=Ha.ff;da=K>=mb+da.$e?new IR(1,K):new IR(Ha.n+1,mb)}else da=new IR(1,K);return sa.call(I,R,ca,da)}}(g,m,q,t,l,c,d,e),q,e),Gg(d,I.j(m,f,q)));return null}}if(Ee(a))return new Q(null,2,5,S,[null,yg(null)],\nnull);var c=Fg(null),d=Fg(null),e=KR(a);return new Q(null,2,5,S,[d,function(){function f(q,t){if(n(O.h?O.h(q,wr):O.call(null,q,wr)))return n(O.h?O.h(t,VA):O.call(null,t,VA))?Gg(d,null):Ig.j(d,we,t),null;if(n(O.h?O.h(q,DD):O.call(null,q,DD)))return b(t,!0);throw cl(\"Unrecognized rate limiter command\",new k(null,2,[Po,q,Hq,t],null));}function g(q){return b(q,!1)}function l(){return b(null,!1)}var m=null;m=function(q,t){switch(arguments.length){case 0:return l.call(this);case 1:return g.call(this,q);\ncase 2:return f.call(this,q,t)}throw Error(\"Invalid arity: \"+arguments.length);};m.A=l;m.g=g;m.h=f;return m}()],null)}\nvar MR=function(){function a(d){return new Za(d)}function b(){return new Za}var c=null;c=function(d){switch(arguments.length){case 0:return b.call(this);case 1:return a.call(this,d)}throw Error(\"Invalid arity: \"+arguments.length);};c.A=b;c.g=a;return c}(),NR=function(){function a(e,f){e=e instanceof Za?e:MR.g(p.g(e));f=p.g(f);return e.append(f)}function b(e){return e instanceof Za?e:MR.g(p.g(e))}function c(){return MR.A()}var d=null;d=function(e,f){switch(arguments.length){case 0:return c.call(this);\ncase 1:return b.call(this,e);case 2:return a.call(this,e,f)}throw Error(\"Invalid arity: \"+arguments.length);};d.A=c;d.g=b;d.h=a;return d}();function OR(a,b){if(n(n(\" \")?cg.h(\" \",\"\"):\" \")){var c=Vg(),d=cf(NR,p);return n(a)?df(zg.h(a,c),d,b):df(c,d,b)}return n(a)?df(a,cf(NR,p),b):p.g(Nb.h(NR,b))}\nvar PR=function PR(a){switch(arguments.length){case 2:return PR.h(arguments[0],arguments[1]);case 3:return PR.j(arguments[0],arguments[1],arguments[2]);default:throw Error([\"Invalid arity: \",p.g(arguments.length)].join(\"\"));}};PR.h=function(a,b){return a.substring(b)};PR.j=function(a,b,c){return b>=c?\"\":a.substring(b,c)};PR.I=3;\nvar QR=function QR(a){switch(arguments.length){case 2:return QR.h(arguments[0],arguments[1]);case 3:return QR.j(arguments[0],arguments[1],arguments[2]);default:throw Error([\"Invalid arity: \",p.g(arguments.length)].join(\"\"));}};QR.h=function(a,b){return wR(a.substr(b))};QR.j=function(a,b,c){return wR(a.substr(b,c))};QR.I=3;function RR(a){return void 0===a||null==a?\"nil\":a}bh.h(p,\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_\");\nvar SR=function SR(a){for(var c=[],d=arguments.length,e=0;;)if(e=(lS.g?lS.g(b):lS.call(null,b))}var nS=Hk(function(a){return YR(a)}),oS=Hk(function(a,b){a=nS(a);return a.g?a.g(b):a.call(null,b)});function pS(a,b){a=n(xe.g?xe.g(a):xe.call(null,a))?a.g?a.g(b):a.call(null,b):oS(a,b);return n(a)?!0:!1}\nvar qS=Hk(function(a,b){return zR(function(c){var d=G(c,0,null);c=G(c,1,null);return n(oS(d,b))?kS(c):null},a)});function rS(a,b,c){b=Le(b)?qS(b,c):b;a=n(b)?b:a;return kS.g?kS.g(a):kS.call(null,a)}function sS(a){if(n(a)){var b=xj([F,wj]);b=b.g?b.g(a):b.call(null,a);a=n(b)?null:a}else a=null;return a}function tS(a,b){a=sS(a);b=sS(b);return n(n(a)?a:b)?new k(null,2,[uu,a,At,b],null):null}\nfunction uS(a,b,c,d){var e=n(d)?d:gS;d=function(){var f=u.h(e,ny);f=n(f)?f:u.h(e,bE);return rS.j?rS.j(a,f,c):rS.call(null,a,f,c)}();return n(mS.h?mS.h(b,d):mS.call(null,b,d))?(b=function(){var f=u.h(e,Dt);if(n(f))return f;f=u.h(e,QE);var g=u.h(e,uy);return tS.h?tS.h(f,g):tS.call(null,f,g)}(),n(b)?n(pS.h?pS.h(b,c):pS.call(null,b,c))?!0:!1:!0):!1}function vS(a){return OR(Ng.g(function(b){b=RR(b);return Ke(b)?hk.l(D([b])):b}),a)}var wS=Hk(function(a,b){a=LR(b);G(a,0,null);return G(a,1,null)});\nfunction xS(a,b){var c=O.h?O.h(au,au):O.call(null,au,au),d=O.h?O.h(a,uE):O.call(null,a,uE),e=G(b,0,null);if(n(n(c)?e instanceof Error:c)){a=e;var f=null,g=GR(b);b=n(d)?G(g,0,null):null;d=n(d)?GR(g):g;return new Q(null,4,5,S,[a,f,b,d],null)}f=n(function(){var m=J(e);return m?rb.g(Ae(e)):m}())?e:null;a=function(){var m=Pm.g(f);return n(m)?m:n(c)?null:au}();var l=we.h(f,Pm);g=n(l)?GR(b):b;b=n(d)?G(g,0,null):null;d=n(d)?GR(g):g;return new Q(null,4,5,S,[a,l,b,d],null)}\nfunction yS(a,b,c,d,e,f){var g=gS;if(uS(fC,a,b,g)){var l=new Date;e=r(e);e=xS(d,e);var m=G(e,0,null),q=G(e,1,null),t=G(e,2,null);e=G(e,3,null);l=re.h(n(null)?null:P,Ri([Eu,Wl,Ts,$r,FG,Qq,jy,bE,Gs,Fp,Qo,ZD,Iw,RD],[l,null,g,e,null,function(){var R=new uj(null,new k(null,2,[ds,null,Cx,null],null),null);return R.g?R.g(a):R.call(null,a)}(),b,a,m,null,c,new qk(function(){return m}),q,t]));l=Nb.j(function(R,ca){R=ca.g?ca.g(R):ca.call(null,R);return null==R?Td(null):R},l,cv.g(g));if(n(l)){e=bg(l);var v=u.h(e,\n$r);l=I.j(l,et,new qk(function(){return v}));var y=DR.l(l,hn,new qk(function(){if(x.h(null,d))return\"\";if(x.h(lE,d))return vS(v);if(x.h(uE,d)){if(\"string\"!==typeof t)throw cl(\"Timbre format-style logging call without a format pattern (string)\",new k(null,2,[bE,a,aq,[p.g(n(b)?b:n(null)?null:\"?\"),\":\",p.g(n(c)?c:\"?\")].join(\"\")],null));var R=n(t)?t:\"\",ca=bh.h(RR,v);return Yf(SN,R,ca)}throw Error([\"No matching clause: \",p.g(d)].join(\"\"));}),D([tx,new qk(function(){return xd(new Q(null,3,5,S,[f,t,u.j(q,\nvx,v)],null))})])),E=Hk(u.j(g,qo,dS)),H=re.h(cS,u.h(g,Lq)),K=Hk(function(R){return new qk(function(){var ca=u.h(y,Eu),da=bg(R);da=u.h(da,Vl);return n(O.h?O.h(da,DC):O.call(null,da,DC))?(new Date(ca)).toISOString():(new cR(da)).format(ca)})});af(function(R,ca,da){if(n(function(){var Hb=NB.g(da);return n(Hb)?uS(Cy,a,b,da):Hb}())){var sa=iy.g(da);if(function(){var Hb=Ee(sa);if(Hb)return Hb;Hb=wS(ca,sa);var Rb=uk(tx.g(y));Hb=Hb.g?Hb.g(Rb):Hb.call(null,Rb);return yb(Hb)}()){var Ha=bg(da);R=u.h(Ha,Ir);\nu.h(Ha,aw);var mb=function(){var Hb=qo.g(da);var Rb=(Rb=null==Hb)?Rb:O.h?O.h(Hb,IE):O.call(null,Hb,IE);return n(Rb)?E:Hb}(),nb=function(){var Hb=Lq.g(da);var Rb=(Rb=null==Hb)?Rb:O.h?O.h(Hb,IE):O.call(null,Hb,IE);return n(Rb)?K(H):K(re.h(H,Hb))}(),Da=re.h(y,new k(null,5,[$n,ca,Lw,da,qo,mb,no,new qk(function(){var Hb=I.j(y,Km,nb);return mb.g?mb.g(Hb):mb.call(null,Hb)}),Km,nb],null));Ha=function(){var Hb=qu.g(da);return n(Hb)?Hb.g?Hb.g(Da):Hb.call(null,Da):Da}();return n(Ha)?R.g?R.g(Ha):R.call(null,\nHa):null}}return null},null,dA.g(g))}}return null}function fS(a){switch(arguments.length){case 1:return eS(arguments[0],null);case 2:return eS(arguments[0],arguments[1]);default:throw Error([\"Invalid arity: \",p.g(arguments.length)].join(\"\"));}}function eS(a){var b=a.stack;return n(b)?b:p.g(a)};function zS(a,b,c){var d=zS[ba(null)];if(null!=d)d.F?d.F(null,a,b,c):d.call(null,null,a,b,c);else if(d=zS._,null!=d)d.F?d.F(null,a,b,c):d.call(null,null,a,b,c);else throw Eb(\"Measurements.record!\",null);};function AS(a){if(null!=a&&null!=a.Jf)a.Jf(a);else{var b=AS[ba(null==a?null:a)];if(null!=b)b.g?b.g(a):b.call(null,a);else if(b=AS._,null!=b)b.g?b.g(a):b.call(null,a);else throw Eb(\"Node.close\",a);}}function BS(a,b){if(null!=a&&null!=a.Kf)a.Kf(a,b);else{var c=BS[ba(null==a?null:a)];if(null!=c)c.h?c.h(a,b):c.call(null,a,b);else if(c=BS._,null!=c)c.h?c.h(a,b):c.call(null,a,b);else throw Eb(\"Node.message\",a);}}\nfunction CS(a,b){if(null==a||null==a.fh){var c=CS[ba(null==a?null:a)];if(null!=c)c.h?c.h(a,b):c.call(null,a,b);else if(c=CS._,null!=c)c.h?c.h(a,b):c.call(null,a,b);else throw Eb(\"Node.add-source\",a);}}function DS(a,b){if(null!=a&&null!=a.Lf)a.Lf(a,b);else{var c=DS[ba(null==a?null:a)];if(null!=c)c.h?c.h(a,b):c.call(null,a,b);else if(c=DS._,null!=c)c.h?c.h(a,b):c.call(null,a,b);else throw Eb(\"Node.remove-source\",a);}}\nfunction ES(a,b,c){c=pG.g(c);a=FQ.h(a,c);if(n(n(a)?cg.h(b,$s.g(a)):a))throw cl([\"The original source of peer \",p.g(c),\" doesnt match the current source\"].join(\"\"),P);}\nfunction FS(a,b,c){return Nb.j(function(d,e){var f=G(d,0,null);d=G(d,1,null);yS(it,\"gateway.node\",33,lE,new qk(function(){return new Q(null,2,5,S,[\"about to remove source from domain\",AQ(e)],null)}),-1725873782);var g=DQ(e,f,a);return n(g)?(f=G(g,0,null),g=G(g,1,null),yS(it,\"gateway.node\",36,lE,new qk(function(){return new Q(null,2,5,S,[\"removed source from domain\",AQ(e)],null)}),-1884391675),new Q(null,2,5,S,[f,ah.h(d,g)],null)):new Q(null,2,5,S,[f,d],null)},new Q(null,2,5,S,[b,F],null),Xg.h(zb,\nre.h(bh.h(function(d){G(d,0,null);d=G(d,1,null);return wu.g(d)},we.h(c,\"global\")),dh.h(c,new Q(null,2,5,S,[\"global\",wu],null)))))}\nfunction GS(a,b,c,d,e){try{if(x.h(zB,X.g(e)))return FS(c,b,a);var f=dh.h(a,new Q(null,2,5,S,[wu.h(e,\"global\"),wu],null));return n(f)?(yS(it,\"gateway.node\",59,lE,new qk(function(){return new Q(null,4,5,S,[\"Handling message with domain\",f,\"message: \\n\",p.g(c)],null)}),1168230188),ES(b,d,e),DQ(f,b,c)):new Q(null,2,5,S,[b,new Q(null,1,5,S,[wI.O(wu.g(e),d,UC.g(e),pG.g(e),lI(\"global.errors.failure\",[\"Unable to find domain for message \",p.g(c)].join(\"\")))],null)],null)}finally{a=X.g(e),n(a)&&n(null)&&zS(Lr,\n[\"inv/\",Cf(a)].join(\"\"),0)}};var HS={};function IS(a){a=aI(a);var b=X.g(a);return n(b)?I.j(a,X,Bf.g(b)):a}function JS(a,b,c,d){a=IS(a);var e=dh.h(r(b),new Q(null,2,5,S,[d,$s],null));if(n(e)){x.h(my,X.g(a))||BS(c,new k(null,3,[ut,gz,$s,e,Ro,a],null));var f=(new Date).getTime();return Ig.h(b,function(g){return eh(g,new Q(null,2,5,S,[d,oA],null),f)})}return yS(tz,\"gateway.cljs.common\",31,lE,new qk(function(){return new Q(null,2,5,S,[\"Cannot process message for not-registered key\",d],null)}),1304480393)}\nfunction KS(a,b){XH(oz.g(a));try{DS(b,a)}catch(d){if(d instanceof Error){var c=d;yS(Cx,\"gateway.cljs.common\",39,lE,new qk(function(){return new Q(null,3,5,S,[c,\"Unable to remove client for\",Gh],null)}),55484312)}else throw d;}}function LS(a,b,c){yS(pD,\"gateway.cljs.common\",43,lE,new qk(function(){return new Q(null,2,5,S,[\"removing client for\",c],null)}),1631725028);a=Kg(a,c);var d=G(a,0,null);G(a,1,null);a=dh.h(d,new Q(null,2,5,S,[c,$s],null));n(a)&&KS(a,b)}\nfunction MS(a,b,c,d){Ig.F(a,I,c,new k(null,2,[$s,d,oA,(new Date).getTime()],null));CS(b,d)}function NS(a,b,c){return ah.h(P,function(){function d(e){G(e,0,null);e=G(e,1,null);return oA.g(e)>=8);b[c++]=e}return b};Ua();fH()||Ta(\"iPod\");Ta(\"iPad\");!Ta(\"Android\")||Va()||Ua()||Ta(\"Opera\")||Ta(\"Silk\");Va();var MT=Ta(\"Safari\")&&!(Va()||Ta(\"Coast\")||Ta(\"Opera\")||Ta(\"Edge\")||Ta(\"Edg/\")||Ta(\"OPR\")||Ua()||Ta(\"Silk\")||Ta(\"Android\"))&&!(fH()||Ta(\"iPad\")||Ta(\"iPod\"));var NT={},OT=null,PT=hH||iH,QT=PT||\"function\"==typeof aa.btoa,RT=PT||!MT&&!gH&&\"function\"==typeof aa.atob;function ST(a){var b;void 0===b&&(b=0);TT();b=NT[b];const c=Array(Math.floor(a.length/3)),d=b[64]||\"\";let e=0,f=0;for(;e>2];g=b[(g&3)<<4|l>>4];l=b[(l&15)<<2|m>>6];m=b[m&63];c[f++]=\"\"+q+g+l+m}q=0;m=d;switch(a.length-e){case 2:q=a[e+1],m=b[(q&15)<<2]||d;case 1:a=a[e],c[f]=\"\"+b[a>>2]+b[(a&3)<<4|q>>4]+m+d}return c.join(\"\")}\nfunction UT(a){return QT?aa.btoa(a):ST(LT(a))}function VT(a){if(RT)return aa.atob(a);var b=\"\";WT(a,function(c){b+=String.fromCharCode(c)});return b}function WT(a,b){function c(m){for(;d>4);64!=g&&(b(f<<4&240|g>>2),64!=l&&b(g<<6&192|l))}}\nfunction TT(){if(!OT){OT={};for(var a=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\".split(\"\"),b=[\"+/\\x3d\",\"+/\",\"-_\\x3d\",\"-_.\",\"-_\"],c=0;5>c;c++){var d=a.concat(b[c].split(\"\"));NT[c]=d;for(var e=0;ea;a++){d=b[a-15]|0;c=b[a-2]|0;var e=(b[a-16]|0)+((d>>>7|d<<25)^(d>>>18|d<<14)^d>>>3)|0,f=(b[a-7]|0)+((c>>>17|c<<15)^(c>>>19|c<<13)^c>>>10)|0;b[a]=e+f|0}c=this.ea[0]|0;d=this.ea[1]|0;var g=this.ea[2]|0,l=this.ea[3]|0,m=this.ea[4]|0,q=this.ea[5]|0,t=this.ea[6]|0;e=this.ea[7]|0;for(a=0;64>a;a++){var v=((c>>>2|c<<30)^(c>>>13|c<<19)^(c>>>22|c<<10))+(c&d^c&g^d&g)|0;f=\nm&q^~m&t;e=e+((m>>>6|m<<26)^(m>>>11|m<<21)^(m>>>25|m<<7))|0;f=f+($T[a]|0)|0;f=e+(f+(b[a]|0)|0)|0;e=t;t=q;q=m;m=l+f|0;l=g;g=d;d=c;c=f+v|0}this.ea[0]=this.ea[0]+c|0;this.ea[1]=this.ea[1]+d|0;this.ea[2]=this.ea[2]+g|0;this.ea[3]=this.ea[3]+l|0;this.ea[4]=this.ea[4]+m|0;this.ea[5]=this.ea[5]+q|0;this.ea[6]=this.ea[6]+t|0;this.ea[7]=this.ea[7]+e|0};\nYT.prototype.update=function(a,b){void 0===b&&(b=a.length);var c=0,d=this.rd;if(\"string\"===typeof a)for(;c=e&&e==(e|0)))throw Error(\"message must be a byte array\");this.xc[d++]=e;d==this.blockSize&&(this.Tc(),d=0)}else throw Error(\"message must be string or array\");this.rd=d;this.Jc+=b};\nYT.prototype.digest=function(){var a=[],b=8*this.Jc;56>this.rd?this.update(bU,56-this.rd):this.update(bU,this.blockSize-(this.rd-56));for(var c=63;56<=c;c--)this.xc[c]=b&255,b/=256;this.Tc();for(c=b=0;c>d&255;return a};\nvar aU=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,\n4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function cU(){YT.call(this,8,dU)}oa(cU,YT);var dU=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];function eU(a,b){this.blockSize=-1;this.blockSize=128;this.xc=aa.Uint8Array?new Uint8Array(this.blockSize):Array(this.blockSize);this.Jc=this.fd=0;this.ea=[];this.oe=a;this.gf=[];this.ie=fU(b);this.ne=!1;this.reset()}oa(eU,XT);var gU=Ja([128],Qa(127));h=eU.prototype;h.reset=function(){this.Jc=this.fd=0;this.ea=Ka(this.ie);this.ne=!1};\nh.update=function(a,b){b=void 0!==b?b:a.length;if(this.ne)throw Error(\"this hasher needs to be reset\");var c=this.fd;if(\"string\"===typeof a)for(var d=0;de||255this.fd?this.update(gU,112-this.fd):this.update(gU,this.blockSize-this.fd+112);for(var b=127;112<=b;b--)this.xc[b]=a&255,a/=256;this.Tc();a=0;var c=Array(8*this.oe);for(b=0;b>f&255;for(f=24;0<=f;f-=8)c[a++]=d>>f&255}this.ne=!0;return c};\nh.Tc=function(){for(var a=this.xc,b=this.gf,c=0;16>c;c++){var d=8*c;b[c]=new qa(a[d+4]<<24|a[d+5]<<16|a[d+6]<<8|a[d+7],a[d]<<24|a[d+1]<<16|a[d+2]<<8|a[d+3])}for(c=16;80>c;c++){d=b[c-15];a=d.la;d=d.ha;var e=b[c-2],f=e.la;e=e.ha;b[c]=this.cg(b[c-16],b[c-7],new qa(a>>>1^d<<31^a>>>8^d<<24^a>>>7^d<<25,d>>>1^a<<31^d>>>8^a<<24^d>>>7),new qa(f>>>19^e<<13^e>>>29^f<<3^f>>>6^e<<26,e>>>19^f<<13^f>>>29^e<<3^e>>>6))}a=this.ea[0];d=this.ea[1];f=this.ea[2];e=this.ea[3];var g=this.ea[4],l=this.ea[5],m=this.ea[6],\nq=this.ea[7];for(c=0;80>c;c++){var t=a.la,v=a.ha;t=(new qa(t>>>28^v<<4^v>>>2^t<<30^v>>>7^t<<25,v>>>28^t<<4^t>>>2^v<<30^t>>>7^v<<25)).add(new qa(a.la&d.la|d.la&f.la|a.la&f.la,a.ha&d.ha|d.ha&f.ha|a.ha&f.ha));v=g.la;var y=g.ha,E=g.la,H=g.ha;v=this.cg(q,new qa(v>>>14^y<<18^v>>>18^y<<14^y>>>9^v<<23,y>>>14^v<<18^y>>>18^v<<14^v>>>9^y<<23),new qa(E&l.la|~E&m.la,H&l.ha|~H&m.ha),hU[c],b[c]);q=m;m=l;l=g;g=e.add(v);e=f;f=d;d=a;a=v.add(t)}this.ea[0]=this.ea[0].add(a);this.ea[1]=this.ea[1].add(d);this.ea[2]=this.ea[2].add(f);\nthis.ea[3]=this.ea[3].add(e);this.ea[4]=this.ea[4].add(g);this.ea[5]=this.ea[5].add(l);this.ea[6]=this.ea[6].add(m);this.ea[7]=this.ea[7].add(q)};h.cg=function(a,b,c){for(var d=(a.la^2147483648)+(b.la^2147483648),e=a.ha+b.ha,f=arguments.length-1;2<=f;--f)d+=arguments[f].la^2147483648,e+=arguments[f].ha;arguments.length&1&&(d+=2147483648);e+=arguments.length>>1;e+=Math.floor(d/4294967296);return new qa(d,e)};function fU(a){for(var b=[],c=0;cthis.blockSize&&(this.Pb.update(a),a=this.Pb.digest(),this.Pb.reset());for(c=0;cf+g:l}()))throw cl([\"Token is not yet valid \",p.g(Vm.g(a))].join(\"\"),new k(null,2,[X,Qw,Qv,Vm],null));if(n(function(){var l=Mq.g(a);return n(l)?\"number\"===typeof c&&f-Mq.g(a)>c:l}()))throw cl([\"Token is older than max-age \",p.g(c)].join(\"\"),new k(null,2,[X,Qw,Qv,yB],null));return a}\nvar uU=function uU(a){switch(arguments.length){case 2:return uU.h(arguments[0],arguments[1]);case 3:return uU.j(arguments[0],arguments[1],arguments[2]);default:throw Error([\"Invalid arity: \",p.g(arguments.length)].join(\"\"));}};na(\"gateway.common.jwt.unsign\",uU);uU.h=function(a,b){return uU.j(a,b,P)};\nuU.j=function(a,b,c){c=bg(c);var d=u.j(c,ev,!1),e=TI(a,\".\",0);a=u.h(e,0);var f=u.h(e,1);e=u.h(e,2);if(n(vg(vb,new Q(null,3,5,S,[a,f,e],null))))throw Error(\"invalid token\");var g=oR(VT(QI(QI(a,\"_\",\"/\"),\"-\",\"+\"))).alg,l=af(function(q,t,v){return I.j(q,Bf.g(t),v)},P,Ek(oR(VT(QI(QI(f,\"_\",\"/\"),\"-\",\"+\"))))),m=u.h(nU,g);g=u.h(oU,g);if(n(d))return l;if(yb(n(m)?g:m))throw Error(\"algorithm not supported\");if(yb(sU([p.g(a),\".\",p.g(f)].join(\"\"),e,b,m,g)))throw Error(\"signature verification failed\");return tU(l,\nc)};uU.I=3;var vU=function vU(a){for(var c=[],d=arguments.length,e=0;;)if(ed?XU(this,TR,WU(this,TR)+C(e)):(XU(this,TR,C(e)-d-1),XU(this,cw,WU(this,cw)+C(Xg.h(function(f){return x.h(f,\"\\n\")},e)))),Qc(WU(this,XF),e);if(n(x.h?x.h(Number,d):x.call(null,Number,d)))return YU(this,e);throw Error([\"No matching clause: \",p.g(d)].join(\"\"));},HU.Na=!0,HU.Ja=\"cljs.pprint/t_cljs$pprint19595\",HU.Pa=function(d){return Qc(d,\"cljs.pprint/t_cljs$pprint19595\")};return new HU(a,b,c,P)}\nfunction $U(a,b,c,d,e,f,g,l,m,q,t,v,y){this.parent=a;this.Ab=b;this.ob=c;this.nb=d;this.vb=e;this.wb=f;this.prefix=g;this.zb=l;this.Bb=m;this.xb=q;this.D=t;this.m=v;this.G=y;this.B=2230716170;this.M=139264}h=$U.prototype;h.na=function(a,b){return this.P(null,b,null)};\nh.P=function(a,b,c){switch(b instanceof w?b.W:null){case \"parent\":return this.parent;case \"section\":return this.Ab;case \"start-col\":return this.ob;case \"indent\":return this.nb;case \"done-nl\":return this.vb;case \"intra-block-nl\":return this.wb;case \"prefix\":return this.prefix;case \"per-line-prefix\":return this.zb;case \"suffix\":return this.Bb;case \"logical-block-callback\":return this.xb;default:return u.j(this.m,b,c)}};\nh.Ka=function(a,b,c){return Nb.j(function(d,e){var f=G(e,0,null);e=G(e,1,null);return b.j?b.j(d,f,e):b.call(null,d,f,e)},c,this)};\nh.U=function(a,b,c){return Tj(b,function(d){return Tj(b,bk,\"\",\" \",\"\",c,d)},\"#cljs.pprint.logical-block{\",\", \",\"}\",c,Of.h(new Q(null,10,5,S,[new Q(null,2,5,S,[IF,this.parent],null),new Q(null,2,5,S,[eF,this.Ab],null),new Q(null,2,5,S,[fE,this.ob],null),new Q(null,2,5,S,[Rp,this.nb],null),new Q(null,2,5,S,[Us,this.vb],null),new Q(null,2,5,S,[dm,this.wb],null),new Q(null,2,5,S,[jr,this.prefix],null),new Q(null,2,5,S,[dn,this.zb],null),new Q(null,2,5,S,[bs,this.Bb],null),new Q(null,2,5,S,[rp,this.xb],\nnull)],null),this.m))};h.xa=function(){return new Yh(this,10,new Q(null,10,5,S,[IF,eF,fE,Rp,Us,dm,jr,dn,bs,rp],null),n(this.m)?nd(this.m):eg())};h.R=function(){return this.D};h.da=function(){return 10+C(this.m)};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=1977012399^Pd(this)};\nh.aa=function(a,b){return null!=b&&this.constructor===b.constructor&&x.h(this.parent,b.parent)&&x.h(this.Ab,b.Ab)&&x.h(this.ob,b.ob)&&x.h(this.nb,b.nb)&&x.h(this.vb,b.vb)&&x.h(this.wb,b.wb)&&x.h(this.prefix,b.prefix)&&x.h(this.zb,b.zb)&&x.h(this.Bb,b.Bb)&&x.h(this.xb,b.xb)&&x.h(this.m,b.m)};\nh.bb=function(a,b){return M(new uj(null,new k(null,10,[bs,null,Rp,null,IF,null,eF,null,Us,null,fE,null,jr,null,dn,null,rp,null,dm,null],null),null),b)?we.h(Bc(ah.h(P,this),this.D),b):new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,this.prefix,this.zb,this.Bb,this.xb,this.D,dg(we.h(this.m,b)),null)};\nh.za=function(a,b){switch(b instanceof w?b.W:null){case \"parent\":case \"section\":case \"start-col\":case \"indent\":case \"done-nl\":case \"intra-block-nl\":case \"prefix\":case \"per-line-prefix\":case \"suffix\":case \"logical-block-callback\":return!0;default:return M(this.m,b)}};\nh.ja=function(a,b,c){return n(O.h?O.h(IF,b):O.call(null,IF,b))?new $U(c,this.Ab,this.ob,this.nb,this.vb,this.wb,this.prefix,this.zb,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(eF,b):O.call(null,eF,b))?new $U(this.parent,c,this.ob,this.nb,this.vb,this.wb,this.prefix,this.zb,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(fE,b):O.call(null,fE,b))?new $U(this.parent,this.Ab,c,this.nb,this.vb,this.wb,this.prefix,this.zb,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(Rp,b):O.call(null,Rp,b))?new $U(this.parent,\nthis.Ab,this.ob,c,this.vb,this.wb,this.prefix,this.zb,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(Us,b):O.call(null,Us,b))?new $U(this.parent,this.Ab,this.ob,this.nb,c,this.wb,this.prefix,this.zb,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(dm,b):O.call(null,dm,b))?new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,c,this.prefix,this.zb,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(jr,b):O.call(null,jr,b))?new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,c,this.zb,this.Bb,this.xb,this.D,\nthis.m,null):n(O.h?O.h(dn,b):O.call(null,dn,b))?new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,this.prefix,c,this.Bb,this.xb,this.D,this.m,null):n(O.h?O.h(bs,b):O.call(null,bs,b))?new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,this.prefix,this.zb,c,this.xb,this.D,this.m,null):n(O.h?O.h(rp,b):O.call(null,rp,b))?new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,this.prefix,this.zb,this.Bb,c,this.D,this.m,null):new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,\nthis.prefix,this.zb,this.Bb,this.xb,this.D,I.j(this.m,b,c),null)};h.ca=function(){return z(Of.h(new Q(null,10,5,S,[new xh(IF,this.parent),new xh(eF,this.Ab),new xh(fE,this.ob),new xh(Rp,this.nb),new xh(Us,this.vb),new xh(dm,this.wb),new xh(jr,this.prefix),new xh(dn,this.zb),new xh(bs,this.Bb),new xh(rp,this.xb)],null),this.m))};h.S=function(a,b){return new $U(this.parent,this.Ab,this.ob,this.nb,this.vb,this.wb,this.prefix,this.zb,this.Bb,this.xb,b,this.m,this.G)};\nh.ia=function(a,b){return Le(b)?this.ja(null,Zb(b,0),Zb(b,1)):Nb.j(Xb,this,b)};function aV(a,b){for(b=IF.g(b);;){if(null==b)return!1;if(a===b)return!0;b=IF.g(b)}}function bV(a,b,c,d,e,f,g,l){this.Z=a;this.data=b;this.Rb=c;this.Y=d;this.X=e;this.D=f;this.m=g;this.G=l;this.B=2230716170;this.M=139264}h=bV.prototype;h.na=function(a,b){return this.P(null,b,null)};\nh.P=function(a,b,c){switch(b instanceof w?b.W:null){case \"type-tag\":return this.Z;case \"data\":return this.data;case \"trailing-white-space\":return this.Rb;case \"start-pos\":return this.Y;case \"end-pos\":return this.X;default:return u.j(this.m,b,c)}};h.Ka=function(a,b,c){return Nb.j(function(d,e){var f=G(e,0,null);e=G(e,1,null);return b.j?b.j(d,f,e):b.call(null,d,f,e)},c,this)};\nh.U=function(a,b,c){return Tj(b,function(d){return Tj(b,bk,\"\",\" \",\"\",c,d)},\"#cljs.pprint.buffer-blob{\",\", \",\"}\",c,Of.h(new Q(null,5,5,S,[new Q(null,2,5,S,[qG,this.Z],null),new Q(null,2,5,S,[Fw,this.data],null),new Q(null,2,5,S,[Zl,this.Rb],null),new Q(null,2,5,S,[nD,this.Y],null),new Q(null,2,5,S,[$m,this.X],null)],null),this.m))};h.xa=function(){return new Yh(this,5,new Q(null,5,5,S,[qG,Fw,Zl,nD,$m],null),n(this.m)?nd(this.m):eg())};h.R=function(){return this.D};h.da=function(){return 5+C(this.m)};\nh.ba=function(){var a=this.G;return null!=a?a:this.G=a=1809113693^Pd(this)};h.aa=function(a,b){return null!=b&&this.constructor===b.constructor&&x.h(this.Z,b.Z)&&x.h(this.data,b.data)&&x.h(this.Rb,b.Rb)&&x.h(this.Y,b.Y)&&x.h(this.X,b.X)&&x.h(this.m,b.m)};h.bb=function(a,b){return M(new uj(null,new k(null,5,[$m,null,Zl,null,qG,null,nD,null,Fw,null],null),null),b)?we.h(Bc(ah.h(P,this),this.D),b):new bV(this.Z,this.data,this.Rb,this.Y,this.X,this.D,dg(we.h(this.m,b)),null)};\nh.za=function(a,b){switch(b instanceof w?b.W:null){case \"type-tag\":case \"data\":case \"trailing-white-space\":case \"start-pos\":case \"end-pos\":return!0;default:return M(this.m,b)}};\nh.ja=function(a,b,c){return n(O.h?O.h(qG,b):O.call(null,qG,b))?new bV(c,this.data,this.Rb,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(Fw,b):O.call(null,Fw,b))?new bV(this.Z,c,this.Rb,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(Zl,b):O.call(null,Zl,b))?new bV(this.Z,this.data,c,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(nD,b):O.call(null,nD,b))?new bV(this.Z,this.data,this.Rb,c,this.X,this.D,this.m,null):n(O.h?O.h($m,b):O.call(null,$m,b))?new bV(this.Z,this.data,this.Rb,this.Y,c,this.D,this.m,null):\nnew bV(this.Z,this.data,this.Rb,this.Y,this.X,this.D,I.j(this.m,b,c),null)};h.ca=function(){return z(Of.h(new Q(null,5,5,S,[new xh(qG,this.Z),new xh(Fw,this.data),new xh(Zl,this.Rb),new xh(nD,this.Y),new xh($m,this.X)],null),this.m))};h.S=function(a,b){return new bV(this.Z,this.data,this.Rb,this.Y,this.X,b,this.m,this.G)};h.ia=function(a,b){return Le(b)?this.ja(null,Zb(b,0),Zb(b,1)):Nb.j(Xb,this,b)};\nfunction cV(a,b,c,d,e,f,g,l){this.Z=a;this.type=b;this.fa=c;this.Y=d;this.X=e;this.D=f;this.m=g;this.G=l;this.B=2230716170;this.M=139264}h=cV.prototype;h.na=function(a,b){return this.P(null,b,null)};h.P=function(a,b,c){switch(b instanceof w?b.W:null){case \"type-tag\":return this.Z;case \"type\":return this.type;case \"logical-block\":return this.fa;case \"start-pos\":return this.Y;case \"end-pos\":return this.X;default:return u.j(this.m,b,c)}};\nh.Ka=function(a,b,c){return Nb.j(function(d,e){var f=G(e,0,null);e=G(e,1,null);return b.j?b.j(d,f,e):b.call(null,d,f,e)},c,this)};h.U=function(a,b,c){return Tj(b,function(d){return Tj(b,bk,\"\",\" \",\"\",c,d)},\"#cljs.pprint.nl-t{\",\", \",\"}\",c,Of.h(new Q(null,5,5,S,[new Q(null,2,5,S,[qG,this.Z],null),new Q(null,2,5,S,[X,this.type],null),new Q(null,2,5,S,[rB,this.fa],null),new Q(null,2,5,S,[nD,this.Y],null),new Q(null,2,5,S,[$m,this.X],null)],null),this.m))};\nh.xa=function(){return new Yh(this,5,new Q(null,5,5,S,[qG,X,rB,nD,$m],null),n(this.m)?nd(this.m):eg())};h.R=function(){return this.D};h.da=function(){return 5+C(this.m)};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=-1640656800^Pd(this)};h.aa=function(a,b){return null!=b&&this.constructor===b.constructor&&x.h(this.Z,b.Z)&&x.h(this.type,b.type)&&x.h(this.fa,b.fa)&&x.h(this.Y,b.Y)&&x.h(this.X,b.X)&&x.h(this.m,b.m)};\nh.bb=function(a,b){return M(new uj(null,new k(null,5,[$m,null,X,null,rB,null,qG,null,nD,null],null),null),b)?we.h(Bc(ah.h(P,this),this.D),b):new cV(this.Z,this.type,this.fa,this.Y,this.X,this.D,dg(we.h(this.m,b)),null)};h.za=function(a,b){switch(b instanceof w?b.W:null){case \"type-tag\":case \"type\":case \"logical-block\":case \"start-pos\":case \"end-pos\":return!0;default:return M(this.m,b)}};\nh.ja=function(a,b,c){return n(O.h?O.h(qG,b):O.call(null,qG,b))?new cV(c,this.type,this.fa,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(X,b):O.call(null,X,b))?new cV(this.Z,c,this.fa,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(rB,b):O.call(null,rB,b))?new cV(this.Z,this.type,c,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(nD,b):O.call(null,nD,b))?new cV(this.Z,this.type,this.fa,c,this.X,this.D,this.m,null):n(O.h?O.h($m,b):O.call(null,$m,b))?new cV(this.Z,this.type,this.fa,this.Y,c,this.D,this.m,null):\nnew cV(this.Z,this.type,this.fa,this.Y,this.X,this.D,I.j(this.m,b,c),null)};h.ca=function(){return z(Of.h(new Q(null,5,5,S,[new xh(qG,this.Z),new xh(X,this.type),new xh(rB,this.fa),new xh(nD,this.Y),new xh($m,this.X)],null),this.m))};h.S=function(a,b){return new cV(this.Z,this.type,this.fa,this.Y,this.X,b,this.m,this.G)};h.ia=function(a,b){return Le(b)?this.ja(null,Zb(b,0),Zb(b,1)):Nb.j(Xb,this,b)};\nfunction dV(a,b,c,d,e,f,g){this.Z=a;this.fa=b;this.Y=c;this.X=d;this.D=e;this.m=f;this.G=g;this.B=2230716170;this.M=139264}h=dV.prototype;h.na=function(a,b){return this.P(null,b,null)};h.P=function(a,b,c){switch(b instanceof w?b.W:null){case \"type-tag\":return this.Z;case \"logical-block\":return this.fa;case \"start-pos\":return this.Y;case \"end-pos\":return this.X;default:return u.j(this.m,b,c)}};\nh.Ka=function(a,b,c){return Nb.j(function(d,e){var f=G(e,0,null);e=G(e,1,null);return b.j?b.j(d,f,e):b.call(null,d,f,e)},c,this)};h.U=function(a,b,c){return Tj(b,function(d){return Tj(b,bk,\"\",\" \",\"\",c,d)},\"#cljs.pprint.start-block-t{\",\", \",\"}\",c,Of.h(new Q(null,4,5,S,[new Q(null,2,5,S,[qG,this.Z],null),new Q(null,2,5,S,[rB,this.fa],null),new Q(null,2,5,S,[nD,this.Y],null),new Q(null,2,5,S,[$m,this.X],null)],null),this.m))};\nh.xa=function(){return new Yh(this,4,new Q(null,4,5,S,[qG,rB,nD,$m],null),n(this.m)?nd(this.m):eg())};h.R=function(){return this.D};h.da=function(){return 4+C(this.m)};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=-414877272^Pd(this)};h.aa=function(a,b){return null!=b&&this.constructor===b.constructor&&x.h(this.Z,b.Z)&&x.h(this.fa,b.fa)&&x.h(this.Y,b.Y)&&x.h(this.X,b.X)&&x.h(this.m,b.m)};\nh.bb=function(a,b){return M(new uj(null,new k(null,4,[$m,null,rB,null,qG,null,nD,null],null),null),b)?we.h(Bc(ah.h(P,this),this.D),b):new dV(this.Z,this.fa,this.Y,this.X,this.D,dg(we.h(this.m,b)),null)};h.za=function(a,b){switch(b instanceof w?b.W:null){case \"type-tag\":case \"logical-block\":case \"start-pos\":case \"end-pos\":return!0;default:return M(this.m,b)}};\nh.ja=function(a,b,c){return n(O.h?O.h(qG,b):O.call(null,qG,b))?new dV(c,this.fa,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(rB,b):O.call(null,rB,b))?new dV(this.Z,c,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(nD,b):O.call(null,nD,b))?new dV(this.Z,this.fa,c,this.X,this.D,this.m,null):n(O.h?O.h($m,b):O.call(null,$m,b))?new dV(this.Z,this.fa,this.Y,c,this.D,this.m,null):new dV(this.Z,this.fa,this.Y,this.X,this.D,I.j(this.m,b,c),null)};\nh.ca=function(){return z(Of.h(new Q(null,4,5,S,[new xh(qG,this.Z),new xh(rB,this.fa),new xh(nD,this.Y),new xh($m,this.X)],null),this.m))};h.S=function(a,b){return new dV(this.Z,this.fa,this.Y,this.X,b,this.m,this.G)};h.ia=function(a,b){return Le(b)?this.ja(null,Zb(b,0),Zb(b,1)):Nb.j(Xb,this,b)};function eV(a,b,c,d,e,f,g){this.Z=a;this.fa=b;this.Y=c;this.X=d;this.D=e;this.m=f;this.G=g;this.B=2230716170;this.M=139264}h=eV.prototype;h.na=function(a,b){return this.P(null,b,null)};\nh.P=function(a,b,c){switch(b instanceof w?b.W:null){case \"type-tag\":return this.Z;case \"logical-block\":return this.fa;case \"start-pos\":return this.Y;case \"end-pos\":return this.X;default:return u.j(this.m,b,c)}};h.Ka=function(a,b,c){return Nb.j(function(d,e){var f=G(e,0,null);e=G(e,1,null);return b.j?b.j(d,f,e):b.call(null,d,f,e)},c,this)};\nh.U=function(a,b,c){return Tj(b,function(d){return Tj(b,bk,\"\",\" \",\"\",c,d)},\"#cljs.pprint.end-block-t{\",\", \",\"}\",c,Of.h(new Q(null,4,5,S,[new Q(null,2,5,S,[qG,this.Z],null),new Q(null,2,5,S,[rB,this.fa],null),new Q(null,2,5,S,[nD,this.Y],null),new Q(null,2,5,S,[$m,this.X],null)],null),this.m))};h.xa=function(){return new Yh(this,4,new Q(null,4,5,S,[qG,rB,nD,$m],null),n(this.m)?nd(this.m):eg())};h.R=function(){return this.D};h.da=function(){return 4+C(this.m)};\nh.ba=function(){var a=this.G;return null!=a?a:this.G=a=1365867980^Pd(this)};h.aa=function(a,b){return null!=b&&this.constructor===b.constructor&&x.h(this.Z,b.Z)&&x.h(this.fa,b.fa)&&x.h(this.Y,b.Y)&&x.h(this.X,b.X)&&x.h(this.m,b.m)};h.bb=function(a,b){return M(new uj(null,new k(null,4,[$m,null,rB,null,qG,null,nD,null],null),null),b)?we.h(Bc(ah.h(P,this),this.D),b):new eV(this.Z,this.fa,this.Y,this.X,this.D,dg(we.h(this.m,b)),null)};\nh.za=function(a,b){switch(b instanceof w?b.W:null){case \"type-tag\":case \"logical-block\":case \"start-pos\":case \"end-pos\":return!0;default:return M(this.m,b)}};\nh.ja=function(a,b,c){return n(O.h?O.h(qG,b):O.call(null,qG,b))?new eV(c,this.fa,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(rB,b):O.call(null,rB,b))?new eV(this.Z,c,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(nD,b):O.call(null,nD,b))?new eV(this.Z,this.fa,c,this.X,this.D,this.m,null):n(O.h?O.h($m,b):O.call(null,$m,b))?new eV(this.Z,this.fa,this.Y,c,this.D,this.m,null):new eV(this.Z,this.fa,this.Y,this.X,this.D,I.j(this.m,b,c),null)};\nh.ca=function(){return z(Of.h(new Q(null,4,5,S,[new xh(qG,this.Z),new xh(rB,this.fa),new xh(nD,this.Y),new xh($m,this.X)],null),this.m))};h.S=function(a,b){return new eV(this.Z,this.fa,this.Y,this.X,b,this.m,this.G)};h.ia=function(a,b){return Le(b)?this.ja(null,Zb(b,0),Zb(b,1)):Nb.j(Xb,this,b)};function fV(a,b,c,d,e,f,g,l,m){this.Z=a;this.fa=b;this.Lb=c;this.offset=d;this.Y=e;this.X=f;this.D=g;this.m=l;this.G=m;this.B=2230716170;this.M=139264}h=fV.prototype;\nh.na=function(a,b){return this.P(null,b,null)};h.P=function(a,b,c){switch(b instanceof w?b.W:null){case \"type-tag\":return this.Z;case \"logical-block\":return this.fa;case \"relative-to\":return this.Lb;case \"offset\":return this.offset;case \"start-pos\":return this.Y;case \"end-pos\":return this.X;default:return u.j(this.m,b,c)}};h.Ka=function(a,b,c){return Nb.j(function(d,e){var f=G(e,0,null);e=G(e,1,null);return b.j?b.j(d,f,e):b.call(null,d,f,e)},c,this)};\nh.U=function(a,b,c){return Tj(b,function(d){return Tj(b,bk,\"\",\" \",\"\",c,d)},\"#cljs.pprint.indent-t{\",\", \",\"}\",c,Of.h(new Q(null,6,5,S,[new Q(null,2,5,S,[qG,this.Z],null),new Q(null,2,5,S,[rB,this.fa],null),new Q(null,2,5,S,[am,this.Lb],null),new Q(null,2,5,S,[jx,this.offset],null),new Q(null,2,5,S,[nD,this.Y],null),new Q(null,2,5,S,[$m,this.X],null)],null),this.m))};h.xa=function(){return new Yh(this,6,new Q(null,6,5,S,[qG,rB,am,jx,nD,$m],null),n(this.m)?nd(this.m):eg())};h.R=function(){return this.D};\nh.da=function(){return 6+C(this.m)};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=-1602780238^Pd(this)};h.aa=function(a,b){return null!=b&&this.constructor===b.constructor&&x.h(this.Z,b.Z)&&x.h(this.fa,b.fa)&&x.h(this.Lb,b.Lb)&&x.h(this.offset,b.offset)&&x.h(this.Y,b.Y)&&x.h(this.X,b.X)&&x.h(this.m,b.m)};\nh.bb=function(a,b){return M(new uj(null,new k(null,6,[jx,null,$m,null,am,null,rB,null,qG,null,nD,null],null),null),b)?we.h(Bc(ah.h(P,this),this.D),b):new fV(this.Z,this.fa,this.Lb,this.offset,this.Y,this.X,this.D,dg(we.h(this.m,b)),null)};h.za=function(a,b){switch(b instanceof w?b.W:null){case \"type-tag\":case \"logical-block\":case \"relative-to\":case \"offset\":case \"start-pos\":case \"end-pos\":return!0;default:return M(this.m,b)}};\nh.ja=function(a,b,c){return n(O.h?O.h(qG,b):O.call(null,qG,b))?new fV(c,this.fa,this.Lb,this.offset,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(rB,b):O.call(null,rB,b))?new fV(this.Z,c,this.Lb,this.offset,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(am,b):O.call(null,am,b))?new fV(this.Z,this.fa,c,this.offset,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(jx,b):O.call(null,jx,b))?new fV(this.Z,this.fa,this.Lb,c,this.Y,this.X,this.D,this.m,null):n(O.h?O.h(nD,b):O.call(null,nD,b))?new fV(this.Z,this.fa,\nthis.Lb,this.offset,c,this.X,this.D,this.m,null):n(O.h?O.h($m,b):O.call(null,$m,b))?new fV(this.Z,this.fa,this.Lb,this.offset,this.Y,c,this.D,this.m,null):new fV(this.Z,this.fa,this.Lb,this.offset,this.Y,this.X,this.D,I.j(this.m,b,c),null)};h.ca=function(){return z(Of.h(new Q(null,6,5,S,[new xh(qG,this.Z),new xh(rB,this.fa),new xh(am,this.Lb),new xh(jx,this.offset),new xh(nD,this.Y),new xh($m,this.X)],null),this.m))};\nh.S=function(a,b){return new fV(this.Z,this.fa,this.Lb,this.offset,this.Y,this.X,b,this.m,this.G)};h.ia=function(a,b){return Le(b)?this.ja(null,Zb(b,0),Zb(b,1)):Nb.j(Xb,this,b)};var gV=function(){var a=Fg(P),b=Fg(P),c=Fg(P),d=Fg(P),e=u.j(P,fu,Kk.A?Kk.A():Kk.call(null));return new Yk(Bd.h(\"cljs.pprint\",\"write-token\"),function(f,g){return qG.g(g)},e,a,b,c,d)}();\ngV.C(null,Do,function(a,b){var c=rp.g(r(r(a)));n(c)&&(c.g?c.g(Ku):c.call(null,Ku));b=rB.g(b);c=jr.g(b);n(c)&&Qc(XF.g(r(r(a))),c);a=WU(XF.g(r(r(a))),TR);Gg(fE.g(b),a);return Gg(Rp.g(b),a)});gV.C(null,aC,function(a,b){var c=rp.g(r(r(a)));n(c)&&(c.g?c.g(Bn):c.call(null,Bn));b=bs.g(rB.g(b));return n(b)?Qc(XF.g(r(r(a))),b):null});\ngV.C(null,wz,function(a,b){var c=rB.g(b),d=Rp.g(c),e=jx.g(b);b=am.g(b);if(n(x.h?x.h(vv,b):x.call(null,vv,b)))a=r(fE.g(c));else if(n(x.h?x.h(zm,b):x.call(null,zm,b)))a=WU(XF.g(r(r(a))),TR);else throw Error([\"No matching clause: \",p.g(b)].join(\"\"));return Gg(d,e+a)});gV.C(null,Qy,function(a,b){return Qc(XF.g(r(r(a))),Fw.g(b))});\ngV.C(null,js,function(a,b){var c=x.h(X.g(b),Is);c||(c=(c=!x.h(X.g(b),yD))?r(Us.g(rB.g(b))):c);n(c)?hV.h?hV.h(a,b):hV.call(null,a,b):(b=Zl.g(r(r(a))),n(b)&&Qc(XF.g(r(r(a))),b));return Ig.F(r(a),I,Zl,null)});\nfunction iV(a,b,c){b=z(b);for(var d=null,e=0,f=0;;)if(f=e-d)?kV(a,b,c):d:e:d}var mV=function(){var a=Fg(P),b=Fg(P),c=Fg(P),d=Fg(P),e=u.j(P,fu,Kk.A?Kk.A():Kk.call(null));return new Yk(Bd.h(\"cljs.pprint\",\"emit-nl?\"),function(f){return X.g(f)},e,a,b,c,d)}();\nmV.C(null,qw,function(a,b,c){a=rB.g(a);return kV(b,a,c)});mV.C(null,tm,function(a,b,c){a=rB.g(a);return lV(b,a,c)});mV.C(null,yD,function(a,b,c,d){a=rB.g(a);var e=r(dm.g(a));return n(e)?e:(d=!jV(b,d))?d:lV(b,a,c)});mV.C(null,Is,function(){return!0});function nV(a){var b=A(a),c=rB.g(b);b=z(Fj(function(d){return!(x.h(qG.g(d),js)&&aV(rB.g(d),c))},B(a)));return new Q(null,2,5,S,[b,z(Pg(C(b)+1,a))],null)}\nfunction oV(a){var b=A(a),c=rB.g(b);return z(Fj(function(d){var e=rB.g(d);return!(x.h(qG.g(d),js)&&(x.h(e,c)||aV(e,c)))},B(a)))}function hV(a,b){Qc(XF.g(r(r(a))),\"\\n\");Ig.F(r(a),I,Zl,null);b=rB.g(b);var c=dn.g(b);n(c)&&Qc(XF.g(r(r(a))),c);c=Xf(p,Tg(r(Rp.g(b))-C(c),\" \"));Qc(XF.g(r(r(a))),c);a:for(Gg(dm.g(b),!0),Gg(Us.g(b),!0),a=IF.g(b);;)if(n(a))Gg(Us.g(a),!0),Gg(dm.g(a),!0),a=IF.g(a);else break a;return null}\nfunction pV(a){var b=z(Fj(function(c){return!x.h(qG.g(c),js)},a));return new Q(null,2,5,S,[b,z(Pg(C(b),a))],null)}var qV=function qV(a,b){var d=pV(b);b=G(d,0,null);var e=G(d,1,null);n(b)&&iV(a,b,!1);if(n(e)){d=nV(e);b=G(d,0,null);d=G(d,1,null);var f=A(e),g=mV.F(f,a,b,oV(e));n(g)&&(hV(a,f),e=B(e));jV(a,e)?a=e:(e=qV.h?qV.h(a,b):qV.call(null,a,b),x.h(e,b)?(iV(a,b,!1),a=d):a=ah.h(F,Of.h(e,d)));return a}return null};\nfunction rV(a){for(var b=Cp.g(r(r(a)));;){Ig.F(r(a),I,Cp,ah.h(F,b));if(jV(a,b))return null;var c=qV(a,b);if(b!==c)b=c;else return null}}function sV(a,b){Ig.F(r(a),I,Cp,re.h(Cp.g(r(r(a))),b));return jV(a,Cp.g(r(r(a))))?null:rV(a)}function tV(a){var b=Zl.g(r(r(a)));return n(b)?(Qc(XF.g(r(r(a))),b),Ig.F(r(a),I,Zl,null)):null}\nfunction uV(a,b){var c=TI(b,\"\\n\",-1);if(x.h(C(c),1))return b;b=dn.g(A(Wn.g(r(r(a)))));var d=A(c);if(x.h($x,So.g(r(r(a))))){var e=DG.g(r(r(a))),f=e+C(d);Ig.F(r(a),I,DG,f);sV(a,new bV(Qy,d,null,e,f,null,null,null));rV(a);d=Cp.g(r(r(a)));n(d)&&(iV(a,d,!0),Ig.F(r(a),I,Cp,F))}else tV(a),Qc(XF.g(r(r(a))),d);Qc(XF.g(r(r(a))),\"\\n\");d=z(B(Aj(c)));e=null;for(var g=f=0;;)if(g=ib:b);yb(AV)?OU.call(null,a):n(b)?Qc(db,\"...\"):(n(IV)&&(IV+=1),BV.call(null,a));return b}var LV=function LV(a){for(var c=[],d=arguments.length,e=0;;)if(e=jb:a}function PV(a){NV(a,new uj(null,new k(null,4,[Is,null,tm,null,yD,null,qw,null],null),null));var b=db;Ig.F(r(b),I,So,$x);var c=DG.g(r(r(b))),d=Wn.g(r(r(b)));sV(b,new cV(js,a,d,c,c,null,null,null))}\nfunction QV(a,b){NV(a,new uj(null,new k(null,2,[vv,null,zm,null],null),null));var c=db,d=Wn.g(r(r(c)));if(x.h(So.g(r(r(c))),jp)){tV(c);var e=Rp.g(d);if(n(x.h?x.h(vv,a):x.call(null,vv,a)))a=r(fE.g(d));else if(n(x.h?x.h(zm,a):x.call(null,zm,a)))a=WU(XF.g(r(r(c))),TR);else throw Error([\"No matching clause: \",p.g(a)].join(\"\"));Gg(e,b+a)}else e=DG.g(r(r(c))),sV(c,new fV(wz,d,a,b,e,e,null,null,null))}\nfunction RV(a,b,c){b=\"string\"===typeof b?SV(b):b;c=TV(c);a:{var d=new Za,e=yb(a)||!0===a?new od(d):a,f=UV(b)&&yb(JV(e))?n(JV(e))?e:vV(e):e,g=db;db=f;try{try{VV(b,c)}finally{e!==f&&Rc(f)}var l=yb(a)?p.g(d):!0===a?Wj(p.g(d)):null;break a}finally{db=g}l=void 0}return l}var WV=null;function XV(a,b){a=[p.g(a),\"\\n\",p.g(WV),\"\\n\",p.g(Xf(p,Tg(b,\" \"))),\"^\\n\"].join(\"\");throw Error(a);}function YV(a,b,c,d,e,f){this.sc=a;this.fb=b;this.rc=c;this.D=d;this.m=e;this.G=f;this.B=2230716170;this.M=139264}h=YV.prototype;\nh.na=function(a,b){return this.P(null,b,null)};h.P=function(a,b,c){switch(b instanceof w?b.W:null){case \"seq\":return this.sc;case \"rest\":return this.fb;case \"pos\":return this.rc;default:return u.j(this.m,b,c)}};h.Ka=function(a,b,c){return Nb.j(function(d,e){var f=G(e,0,null);e=G(e,1,null);return b.j?b.j(d,f,e):b.call(null,d,f,e)},c,this)};\nh.U=function(a,b,c){return Tj(b,function(d){return Tj(b,bk,\"\",\" \",\"\",c,d)},\"#cljs.pprint.arg-navigator{\",\", \",\"}\",c,Of.h(new Q(null,3,5,S,[new Q(null,2,5,S,[mt,this.sc],null),new Q(null,2,5,S,[ur,this.fb],null),new Q(null,2,5,S,[DG,this.rc],null)],null),this.m))};h.xa=function(){return new Yh(this,3,new Q(null,3,5,S,[mt,ur,DG],null),n(this.m)?nd(this.m):eg())};h.R=function(){return this.D};h.da=function(){return 3+C(this.m)};h.ba=function(){var a=this.G;return null!=a?a:this.G=a=-402038447^Pd(this)};\nh.aa=function(a,b){return null!=b&&this.constructor===b.constructor&&x.h(this.sc,b.sc)&&x.h(this.fb,b.fb)&&x.h(this.rc,b.rc)&&x.h(this.m,b.m)};h.bb=function(a,b){return M(new uj(null,new k(null,3,[DG,null,mt,null,ur,null],null),null),b)?we.h(Bc(ah.h(P,this),this.D),b):new YV(this.sc,this.fb,this.rc,this.D,dg(we.h(this.m,b)),null)};h.za=function(a,b){switch(b instanceof w?b.W:null){case \"seq\":case \"rest\":case \"pos\":return!0;default:return M(this.m,b)}};\nh.ja=function(a,b,c){return n(O.h?O.h(mt,b):O.call(null,mt,b))?new YV(c,this.fb,this.rc,this.D,this.m,null):n(O.h?O.h(ur,b):O.call(null,ur,b))?new YV(this.sc,c,this.rc,this.D,this.m,null):n(O.h?O.h(DG,b):O.call(null,DG,b))?new YV(this.sc,this.fb,c,this.D,this.m,null):new YV(this.sc,this.fb,this.rc,this.D,I.j(this.m,b,c),null)};h.ca=function(){return z(Of.h(new Q(null,3,5,S,[new xh(mt,this.sc),new xh(ur,this.fb),new xh(DG,this.rc)],null),this.m))};\nh.S=function(a,b){return new YV(this.sc,this.fb,this.rc,b,this.m,this.G)};h.ia=function(a,b){return Le(b)?this.ja(null,Zb(b,0),Zb(b,1)):Nb.j(Xb,this,b)};function TV(a){a=z(a);return new YV(a,a,0,null,null,null)}function ZV(a){var b=ur.g(a);if(n(b))return new Q(null,2,5,S,[A(b),new YV(mt.g(a),B(b),DG.g(a)+1,null,null,null)],null);throw Error(\"Not enough arguments for format definition\");}\nfunction $V(a){var b=ZV(a);a=G(b,0,null);b=G(b,1,null);a=\"string\"===typeof a?SV(a):a;return new Q(null,2,5,S,[a,b],null)}function aW(a,b){return b>=DG.g(a)?(b=DG.g(a)-b,bW.h?bW.h(a,b):bW.call(null,a,b)):new YV(mt.g(a),Pg(b,mt.g(a)),b,null,null,null)}function bW(a,b){var c=DG.g(a)+b;return 0>b?aW(a,c):new YV(mt.g(a),Pg(b,ur.g(a)),c,null,null,null)}function cW(a,b,c,d,e,f,g){this.bc=a;this.Zb=b;this.lc=c;this.offset=d;this.D=e;this.m=f;this.G=g;this.B=2230716170;this.M=139264}h=cW.prototype;\nh.na=function(a,b){return this.P(null,b,null)};h.P=function(a,b,c){switch(b instanceof w?b.W:null){case \"func\":return this.bc;case \"def\":return this.Zb;case \"params\":return this.lc;case \"offset\":return this.offset;default:return u.j(this.m,b,c)}};h.Ka=function(a,b,c){return Nb.j(function(d,e){var f=G(e,0,null);e=G(e,1,null);return b.j?b.j(d,f,e):b.call(null,d,f,e)},c,this)};\nh.U=function(a,b,c){return Tj(b,function(d){return Tj(b,bk,\"\",\" \",\"\",c,d)},\"#cljs.pprint.compiled-directive{\",\", \",\"}\",c,Of.h(new Q(null,4,5,S,[new Q(null,2,5,S,[vA,this.bc],null),new Q(null,2,5,S,[qE,this.Zb],null),new Q(null,2,5,S,[CC,this.lc],null),new Q(null,2,5,S,[jx,this.offset],null)],null),this.m))};h.xa=function(){return new Yh(this,4,new Q(null,4,5,S,[vA,qE,CC,jx],null),n(this.m)?nd(this.m):eg())};h.R=function(){return this.D};h.da=function(){return 4+C(this.m)};\nh.ba=function(){var a=this.G;return null!=a?a:this.G=a=-829256337^Pd(this)};h.aa=function(a,b){return null!=b&&this.constructor===b.constructor&&x.h(this.bc,b.bc)&&x.h(this.Zb,b.Zb)&&x.h(this.lc,b.lc)&&x.h(this.offset,b.offset)&&x.h(this.m,b.m)};h.bb=function(a,b){return M(new uj(null,new k(null,4,[jx,null,vA,null,CC,null,qE,null],null),null),b)?we.h(Bc(ah.h(P,this),this.D),b):new cW(this.bc,this.Zb,this.lc,this.offset,this.D,dg(we.h(this.m,b)),null)};\nh.za=function(a,b){switch(b instanceof w?b.W:null){case \"func\":case \"def\":case \"params\":case \"offset\":return!0;default:return M(this.m,b)}};\nh.ja=function(a,b,c){return n(O.h?O.h(vA,b):O.call(null,vA,b))?new cW(c,this.Zb,this.lc,this.offset,this.D,this.m,null):n(O.h?O.h(qE,b):O.call(null,qE,b))?new cW(this.bc,c,this.lc,this.offset,this.D,this.m,null):n(O.h?O.h(CC,b):O.call(null,CC,b))?new cW(this.bc,this.Zb,c,this.offset,this.D,this.m,null):n(O.h?O.h(jx,b):O.call(null,jx,b))?new cW(this.bc,this.Zb,this.lc,c,this.D,this.m,null):new cW(this.bc,this.Zb,this.lc,this.offset,this.D,I.j(this.m,b,c),null)};\nh.ca=function(){return z(Of.h(new Q(null,4,5,S,[new xh(vA,this.bc),new xh(qE,this.Zb),new xh(CC,this.lc),new xh(jx,this.offset)],null),this.m))};h.S=function(a,b){return new cW(this.bc,this.Zb,this.lc,this.offset,b,this.m,this.G)};h.ia=function(a,b){return Le(b)?this.ja(null,Zb(b,0),Zb(b,1)):Nb.j(Xb,this,b)};\nfunction dW(a,b){var c=G(a,0,null);a=G(a,1,null);var d=G(a,0,null);a=G(a,1,null);d=M(new uj(null,new k(null,2,[Wz,null,hs,null],null),null),c)?new Q(null,2,5,S,[d,b],null):x.h(d,np)?ZV(b):x.h(d,Vn)?new Q(null,2,5,S,[C(ur.g(b)),b],null):new Q(null,2,5,S,[d,b],null);b=G(d,0,null);d=G(d,1,null);return new Q(null,2,5,S,[new Q(null,2,5,S,[c,new Q(null,2,5,S,[b,a],null)],null),d],null)}function eW(a,b){b=RU(dW,b,a);a=G(b,0,null);b=G(b,1,null);return new Q(null,2,5,S,[ah.h(P,a),b],null)}\nvar fW=new k(null,3,[2,\"#b\",8,\"#o\",16,\"#x\"],null);\nfunction gW(a,b,c){c=ZV(c);var d=G(c,0,null);c=G(c,1,null);if(Se(d))if(x.h(GV,10))var e=[p.g(d),n(FV)?\".\":null].join(\"\");else{e=p;var f=e.g;if(n(FV)){var g=u.h(fW,GV);g=n(g)?g:[\"#\",p.g(GV),\"r\"].join(\"\")}else g=null;e=[f.call(e,g),p.g(hW(GV,d))].join(\"\")}else e=null;a=n(e)?e:a.g?a.g(d):a.call(null,d);d=a.length;e=d+oB.g(b);e=e>=nx.g(b)?e:e+(kf(nx.g(b)-e-1,xt.g(b))+1)*xt.g(b);d=Xf(p,Tg(e-d,Yw.g(b)));n(hs.g(b))?NU.l(D([[p.g(d),p.g(a)].join(\"\")])):NU.l(D([[p.g(a),p.g(d)].join(\"\")]));return c}\nfunction iW(a,b){return vf(A(SU(function(c){return 0c?hf(QU(\"0\")+c):hf(QU(\"a\")+(c-10))},iW(a,b)))}function jW(a,b){return vf(A(SU(function(c){return new Q(null,2,5,S,[z(vf(Og.h(a,c))),z(Pg(a,c))],null)},vf(b))))}\nfunction kW(a,b,c){c=ZV(c);var d=G(c,0,null);c=G(c,1,null);if(Se(d)||\"number\"===typeof d&&!isNaN(d)&&Infinity!==d&&parseFloat(d)!==parseInt(d,10)&&x.h(d,Math.floor(d))){var e=0>d,f=hW(a,e?-d:d);a=n(Wz.g(b))?function(){var g=Ng.h(function(m){return Xf(p,m)},jW(ky.g(b),f)),l=Tg(C(g),LE.g(b));return Xf(p,B(Ug.h(l,g)))}():f;a=e?[\"-\",p.g(a)].join(\"\"):n(hs.g(b))?[\"+\",p.g(a)].join(\"\"):a;a=a.lengtha)var f=ee(lW,a);else{f=kf(a,10);var g=lf(a,10);f=[p.g(0c){var d=iW(10,c);c=F;for(var e=C(d)-1;;)if(Ee(d)){NU.l(D([Xf(p,c)]));break}else{var f=A(d);c=x.h(0,f)?c:re.h(c,ee(ee(a,e),f-1));--e;d=B(d)}}else kW(10,new k(null,5,[nx,0,Yw,\" \",LE,\",\",ky,3,Wz,!0],null),TV(new Q(null,1,5,S,[c],null)));return b}var vW=new k(null,5,[8,\"Backspace\",9,\"Tab\",10,\"Newline\",13,\"Return\",32,\"Space\"],null);\nfunction wW(a,b){a=ZV(b);b=G(a,0,null);a=G(a,1,null);var c=QU(b);b=c&127;c&=128;var d=u.h(vW,b);0b?[\"Control-\",p.g(hf(b+64))].join(\"\"):x.h(b,127)?\"Control-?\":hf(b)]));return a}\nfunction xW(a,b){var c=ZV(b);b=G(c,0,null);c=G(c,1,null);a=Sq.g(a);if(n(x.h?x.h(\"o\",a):x.call(null,\"o\",a)))RV(!0,\"\\\\o~3,'0o\",D([QU(b)]));else if(n(x.h?x.h(\"u\",a):x.call(null,\"u\",a)))RV(!0,\"\\\\u~4,'0x\",D([QU(b)]));else if(n(x.h?x.h(null,a):x.call(null,null,a)))Qc(db,n(x.h?x.h(\"\\b\",b):x.call(null,\"\\b\",b))?\"\\\\backspace\":n(x.h?x.h(\" \",b):x.call(null,\" \",b))?\"\\\\space\":n(x.h?x.h(\"\\t\",b):x.call(null,\"\\t\",b))?\"\\\\tab\":n(x.h?x.h(\"\\n\",b):x.call(null,\"\\n\",b))?\"\\\\newline\":n(x.h?x.h(\"\\f\",b):x.call(null,\"\\f\",b))?\n\"\\\\formfeed\":n(x.h?x.h(\"\\r\",b):x.call(null,\"\\r\",b))?\"\\\\return\":n(x.h?x.h('\"',b):x.call(null,'\"',b))?'\\\\\"':n(x.h?x.h(\"\\\\\",b):x.call(null,\"\\\\\",b))?\"\\\\\\\\\":[\"\\\\\",p.g(b)].join(\"\"));else throw Error([\"No matching clause: \",p.g(a)].join(\"\"));return c}function yW(a,b){b=ZV(b);a=G(b,0,null);b=G(b,1,null);NU.l(D([a]));return b}function zW(a){a=A(a);return x.h(Bt,a)||x.h(yr,a)}\nfunction AW(a,b,c){return oe(RU(function(d,e){if(zW(e))return new Q(null,2,5,S,[null,e],null);e=eW(CC.g(d),e);var f=G(e,0,null);e=G(e,1,null);var g=TU(f);f=G(g,0,null);g=G(g,1,null);f=I.j(f,by,c);return new Q(null,2,5,S,[null,Xf(vA.g(d),new Q(null,3,5,S,[f,e,g],null))],null)},b,a))}\nfunction BW(a){a=p.g(a).toLowerCase();var b=a.indexOf(\"e\"),c=a.indexOf(\".\");a=0>b?0>c?new Q(null,2,5,S,[a,p.g(a.length-1)],null):new Q(null,2,5,S,[[a.substring(0,c),a.substring(c+1)].join(\"\"),p.g(c-1)],null):0>c?new Q(null,2,5,S,[a.substring(0,b),a.substring(b+1)],null):new Q(null,2,5,S,[[a.substring(0,1),a.substring(2,b)].join(\"\"),a.substring(b+1)],null);b=G(a,0,null);a=G(a,1,null);a:if(c=C(b),0c){b=\"\";break a}if(x.h(ee(b,c),\"0\"))--c;else{b=b.substring(0,\nc+1);break a}}a:{c=b;var d=C(c);if(0d?2:d:0;n(c)?c=b+c+1:0<=b?(c=b+1,--d,c=c>d?c:d):c=d+b;var f=x.h(c,0)?new Q(null,4,5,S,[[\"0\",p.g(a)].join(\"\"),b+1,1,e+1],null):new Q(null,4,5,S,[a,b,c,e],null);c=G(f,0,null);e=G(f,1,null);d=G(f,2,null);f=G(f,3,null);if(n(d)){if(0>d)return new Q(null,3,5,S,[\"0\",0,!1],null);if(f>d){b=ee(c,d);a=c.substring(0,d);if(QU(b)>=QU(\"5\")){a:for(b=C(a)-1,c=b|0;;){if(0>c){b=Yf(p,\"1\",Tg(b+1,\"0\"));break a}if(x.h(\"9\",a.charAt(c)))--c;else{b=Zf(p,a.substring(0,\nc),hf(QU(a.charAt(c))+1),Tg(b-c,\"0\"));break a}}a=C(b)>a.length;return new Q(null,3,5,S,[a?sf(b,0,C(b)-1):b,e,a],null)}return new Q(null,3,5,S,[a,e,!1],null)}}}return new Q(null,3,5,S,[a,b,!1],null)}\nfunction DW(a,b,c){var d=0>b?new Q(null,2,5,S,[[p.g(Xf(p,Tg(-b-1,\"0\"))),p.g(a)].join(\"\"),-1],null):new Q(null,2,5,S,[a,b],null);a=G(d,0,null);var e=G(d,1,null);d=C(a);c=n(c)?e+c+1:e+1;c=db?b=[\".\",p.g(c)].join(\"\"):(b+=1,b=[c.substring(0,b),\".\",c.substring(b)].join(\"\"));return b}function EW(a,b){return 0>b?[\".\",p.g(a)].join(\"\"):[a.substring(0,b),\".\",a.substring(b)].join(\"\")}\nfunction FW(a,b){var c=kE.g(a),d=zE.g(a);b=ZV(b);var e=G(b,0,null);b=G(b,1,null);var f=0>e?new Q(null,2,5,S,[\"-\",-e],null):new Q(null,2,5,S,[\"+\",e],null),g=G(f,0,null);f=G(f,1,null);f=BW(f);var l=G(f,0,null),m=G(f,1,null)+vE.g(a);f=function(){var y=hs.g(a);return n(y)?y:0>e}();var q=yb(d)&&C(l)-1<=m,t=CW(l,m,d,n(c)?c-(n(f)?1:0):null);l=G(t,0,null);m=G(t,1,null);t=G(t,2,null);l=DW(l,n(t)?m+1:m,d);d=n(n(c)?n(d)?1<=d&&x.h(l.charAt(0),\"0\")&&x.h(l.charAt(1),\".\")&&l.length>c-(n(f)?1:0):d:c)?l.substring(1):\nl;m=x.h(A(d),\".\");if(n(c)){l=d.length;l=n(f)?l+1:l;m=m&&!(l>=c);q=q&&!(l>=c);var v=m||q?l+1:l;n(function(){var y=v>c;return y?BE.g(a):y}())?NU.l(D([Xf(p,Tg(c,BE.g(a)))])):NU.l(D([[p.g(Xf(p,Tg(c-v,Yw.g(a)))),p.g(n(f)?g:null),m?\"0\":null,d,q?\"0\":null].join(\"\")]))}else NU.l(D([[p.g(n(f)?g:null),m?\"0\":null,d,q?\"0\":null].join(\"\")]));return b}\nfunction GW(a,b){b=ZV(b);var c=G(b,0,null);b=G(b,1,null);var d=BW(0>c?-c:c);G(d,0,null);for(G(d,1,null);;){var e=G(d,0,null),f=G(d,1,null),g=kE.g(a),l=zE.g(a),m=wE.g(a),q=vE.g(a),t=function(){var R=fm.g(a);return n(R)?R:\"E\"}();d=function(){var R=hs.g(a);return n(R)?R:0>c}();var v=0>=q,y=f-(q-1),E=p.g(Math.abs(y));t=[p.g(t),0>y?\"-\":\"+\",p.g(n(m)?Xf(p,Tg(m-E.length,\"0\")):null),E].join(\"\");var H=t.length;y=C(e);e=[p.g(Xf(p,Tg(-q,\"0\"))),p.g(e),p.g(n(l)?Xf(p,Tg(l-(y-1)-(0>q?-q:0),\"0\")):null)].join(\"\");\ny=n(g)?g-H:null;e=CW(e,0,x.h(q,0)?l-1:0q?l-1:null,n(y)?y-(n(d)?1:0):null);y=G(e,0,null);G(e,1,null);E=G(e,2,null);e=EW(y,q);l=x.h(q,C(y))&&null==l;if(yb(E)){if(n(g)){f=e.length+H;f=n(d)?f+1:f;var K=(v=v&&!x.h(f,g))?f+1:f;f=l&&Kg;R||(R=m,R=n(R)?H-2>m:R);return n(R)?BE.g(a):R}())?NU.l(D([Xf(p,Tg(g,BE.g(a)))])):NU.l(D([[p.g(Xf(p,Tg(g-K-(f?1:0),Yw.g(a)))),n(d)?0>c?\"-\":\"+\":null,v?\"0\":null,e,f?\"0\":null,t].join(\"\")]))}else NU.l(D([[n(d)?0>c?\"-\":\"+\":null,v?\"0\":null,e,l?\"0\":\nnull,t].join(\"\")]));break}else d=new Q(null,2,5,S,[y,f+1],null)}return b}function HW(a,b,c){var d=ZV(b),e=G(d,0,null);G(d,1,null);d=BW(0>e?-e:e);var f=G(d,0,null);d=G(d,1,null);var g=kE.g(a),l=zE.g(a),m=wE.g(a);d=x.h(e,0)?0:d+1;e=n(m)?m+2:4;g=n(g)?g-e:null;n(l)?f=l:(f=C(f),l=7>d?d:7,f=f>l?f:l);d=f-d;return 0<=d&&d<=f?(a=FW(new k(null,6,[kE,g,zE,d,vE,0,BE,BE.g(a),Yw,Yw.g(a),hs,hs.g(a)],null),b,c),NU.l(D([Xf(p,Tg(e,\" \"))])),a):GW(a,b,c)}\nfunction IW(a,b){b=ZV(b);var c=G(b,0,null);b=G(b,1,null);var d=BW(Math.abs(c)),e=G(d,0,null),f=G(d,1,null),g=zE.g(a),l=nE.g(a);d=kE.g(a);var m=function(){var t=hs.g(a);return n(t)?t:0>c}(),q=CW(e,f,g,null);e=G(q,0,null);f=G(q,1,null);q=G(q,2,null);g=DW(e,n(q)?f+1:f,g);l=[p.g(Xf(p,Tg(l-g.indexOf(\".\"),\"0\"))),g].join(\"\");g=l.length+(n(m)?1:0);NU.l(D([[n(function(){var t=Wz.g(a);return n(t)?m:t}())?0>c?\"-\":\"+\":null,p.g(Xf(p,Tg(d-g,Yw.g(a)))),n(function(){var t=yb(Wz.g(a));return t?m:t}())?0>c?\"-\":\"+\":\nnull,l].join(\"\")]));return b}function JW(a,b){var c=up.g(a);c=n(c)?new Q(null,2,5,S,[c,b],null):ZV(b);b=G(c,0,null);c=G(c,1,null);var d=OF.g(a);b=0>b||b>=C(d)?A(lt.g(a)):ee(d,b);return n(b)?AW(b,c,by.g(a)):c}function KW(a,b){var c=ZV(b);b=G(c,0,null);c=G(c,1,null);var d=OF.g(a);b=n(b)?oe(d):A(d);return n(b)?AW(b,c,by.g(a)):c}function LW(a,b){var c=ZV(b),d=G(c,0,null);c=G(c,1,null);var e=OF.g(a);e=n(d)?A(e):null;return n(d)?n(e)?AW(e,b,by.g(a)):b:c}\nfunction MW(a,b){var c=aB.g(a),d=A(OF.g(a));d=Ee(d)?$V(b):new Q(null,2,5,S,[d,b],null);b=G(d,0,null);d=G(d,1,null);d=ZV(d);var e=G(d,0,null);d=G(d,1,null);var f=0;e=TV(e);for(var g=-1;;){if(yb(c)&&x.h(DG.g(e),g)&&1=c:c))return d;g=AW(b,e,by.g(a));if(x.h(Bt,A(g)))return d;f+=1;var l=DG.g(e);e=g;g=l}}\nfunction NW(a,b){var c=aB.g(a),d=A(OF.g(a));d=Ee(d)?$V(b):new Q(null,2,5,S,[d,b],null);b=G(d,0,null);d=G(d,1,null);d=ZV(d);var e=G(d,0,null);d=G(d,1,null);for(var f=0;;){var g=Ee(e)&&(yb(Wz.g(Sz.g(a)))||0=c:c))return d;g=AW(b,TV(A(e)),TV(B(e)));if(x.h(yr,A(g)))return d;f+=1;e=B(e)}}\nfunction OW(a,b){var c=aB.g(a),d=A(OF.g(a)),e=Ee(d)?$V(b):new Q(null,2,5,S,[d,b],null);b=G(e,0,null);d=0;e=G(e,1,null);for(var f=-1;;){if(yb(c)&&x.h(DG.g(e),f)&&1=c:c))return e;f=AW(b,e,by.g(a));if(x.h(Bt,A(f)))return oe(f);d+=1;var g=DG.g(e);e=f;f=g}}\nfunction PW(a,b){var c=aB.g(a),d=A(OF.g(a)),e=Ee(d)?$V(b):new Q(null,2,5,S,[d,b],null);b=G(e,0,null);d=0;for(e=G(e,1,null);;){var f=Ee(ur.g(e))&&(yb(Wz.g(Sz.g(a)))||0=c:c))return e;f=ur.g(e);f=n(f)?new Q(null,2,5,S,[A(f),new YV(mt.g(e),B(f),DG.g(e)+1,null,null,null)],null):new Q(null,2,5,S,[null,e],null);e=G(f,0,null);f=G(f,1,null);e=AW(b,TV(e),f);if(x.h(yr,A(e)))return f;e=f;d+=1}}\nfunction QW(a,b){if(n(Wz.g(Sz.g(a)))){var c=OF.g(a),d=C(c),e=1da?\n1:da}();m=Nb.h(ff,Ng.h(C,q));var v=nx.g(a),y=oB.g(a),E=xt.g(a),H=m+t*y;v=H<=v?v:v+E*(1+kf(H-v-1,E));var K=v-m;m=function(){var da=kf(K,t);return y>da?y:da}();E=K-m*t;m=Xf(p,Tg(m,Yw.g(a)));n(n(d)?WU(XF.g(r(r(db))),TR)+c+v>l:d)&&NU.l(D([d]));c=E;for(var R=q,ca=function(){var da=Wz.g(a);return n(da)?da:x.h(C(R),1)&&yb(hs.g(a))}();;)if(z(R))NU.l(D([[p.g(yb(ca)?A(R):null),p.g(n(function(){var da=ca;return n(da)?da:(da=B(R))?da:hs.g(a)}())?m:null),p.g(0c?-c:c);if(C(d)<=C(pW)){var e=Ng.h(qW,Qg(1,d));e=rW(e,1);var f=qe(d);d=kf(f,100);f=lf(f,100);var g=0f)var q=ee(mW,f);else{q=kf(f,10);var t=lf(f,10);q=0\nc?\"minus \":null,Ee(e)||Ee(d)?Ee(e)?d:[e,\"th\"].join(\"\"):[e,\", \",d].join(\"\")].join(\"\")]))}else kW(10,new k(null,5,[nx,0,Yw,\" \",LE,\",\",ky,3,Wz,!0],null),TV(new Q(null,1,5,S,[c],null))),e=lf(c,100),c=11e,e=lf(e,10),NU.l(D([1===e&&c?\"st\":2===e&&c?\"nd\":3===e&&c?\"rd\":\"th\"]))}return b}:function(b,c){c=ZV(c);b=G(c,0,null);c=G(c,1,null);if(x.h(0,b))NU.l(D([\"zero\"]));else{var d=iW(1E3,0>b?-b:b);C(d)<=C(pW)?(d=Ng.h(qW,d),d=rW(d,0),NU.l(D([[0>b?\"minus \":null,d].join(\"\")]))):kW(10,new k(null,5,[nx,0,Yw,\n\" \",LE,\",\",ky,3,Wz,!0],null),TV(new Q(null,1,5,S,[b],null)))}return c}}],null),new k(null,5,[ws,\"P\",CC,P,oD,new uj(null,new k(null,3,[Wz,null,hs,null,xq,null],null),null),Mo,P,JD,function(){return function(a,b){b=n(Wz.g(a))?bW(b,-1):b;a=n(hs.g(a))?new Q(null,2,5,S,[\"y\",\"ies\"],null):new Q(null,2,5,S,[\"\",\"s\"],null);var c=ZV(b);b=G(c,0,null);c=G(c,1,null);NU.l(D([x.h(b,1)?A(a):oe(a)]));return c}}],null),new k(null,5,[ws,\"C\",CC,new k(null,1,[Sq,new Q(null,2,5,S,[null,String],null)],null),oD,new uj(null,\nnew k(null,3,[Wz,null,hs,null,xq,null],null),null),Mo,P,JD,function(a){return n(Wz.g(a))?wW:n(hs.g(a))?xW:yW}],null),new k(null,5,[ws,\"F\",CC,new k(null,5,[kE,new Q(null,2,5,S,[null,Number],null),zE,new Q(null,2,5,S,[null,Number],null),vE,new Q(null,2,5,S,[0,Number],null),BE,new Q(null,2,5,S,[null,String],null),Yw,new Q(null,2,5,S,[\" \",String],null)],null),oD,new uj(null,new k(null,1,[hs,null],null),null),Mo,P,JD,function(){return FW}],null),new k(null,5,[ws,\"E\",CC,new k(null,7,[kE,new Q(null,2,5,\nS,[null,Number],null),zE,new Q(null,2,5,S,[null,Number],null),wE,new Q(null,2,5,S,[null,Number],null),vE,new Q(null,2,5,S,[1,Number],null),BE,new Q(null,2,5,S,[null,String],null),Yw,new Q(null,2,5,S,[\" \",String],null),fm,new Q(null,2,5,S,[null,String],null)],null),oD,new uj(null,new k(null,1,[hs,null],null),null),Mo,P,JD,function(){return GW}],null),new k(null,5,[ws,\"G\",CC,new k(null,7,[kE,new Q(null,2,5,S,[null,Number],null),zE,new Q(null,2,5,S,[null,Number],null),wE,new Q(null,2,5,S,[null,Number],\nnull),vE,new Q(null,2,5,S,[1,Number],null),BE,new Q(null,2,5,S,[null,String],null),Yw,new Q(null,2,5,S,[\" \",String],null),fm,new Q(null,2,5,S,[null,String],null)],null),oD,new uj(null,new k(null,1,[hs,null],null),null),Mo,P,JD,function(){return HW}],null),new k(null,5,[ws,\"$\",CC,new k(null,4,[zE,new Q(null,2,5,S,[2,Number],null),nE,new Q(null,2,5,S,[1,Number],null),kE,new Q(null,2,5,S,[0,Number],null),Yw,new Q(null,2,5,S,[\" \",String],null)],null),oD,new uj(null,new k(null,3,[Wz,null,hs,null,xq,null],\nnull),null),Mo,P,JD,function(){return IW}],null),new k(null,5,[ws,\"%\",CC,new k(null,1,[mw,new Q(null,2,5,S,[1,Number],null)],null),oD,wj,Mo,P,JD,function(){return function(a,b){a=mw.g(a);for(var c=0;;)if(cC(CC.g(a))&&XV(RV(null,'Too many parameters for directive \"~C\": ~D~:* ~[were~;was~:;were~] specified but only ~D~:* ~[are~;is~:;are~] allowed',D([ws.g(a),C(b),C(CC.g(a))])),oe(A(b)));Oj(Ng.j(function(e,f){var g=A(e);return null==g||M(bX,g)||x.h(oe(oe(f)),Db(g))?null:XV([\"Parameter \",Cf(A(f)),' has bad type in directive \"',p.g(ws.g(a)),'\": ',p.g(Db(g))].join(\"\"),oe(e))},b,CC.g(a)));return pj.l(D([ah.h(P,vf(function(){return function g(f){return new Df(null,function(){for(;;){var l=\nz(f);if(l){if(Me(l)){var m=ed(l),q=C(m),t=Hf(q);a:for(var v=0;;)if(ve?new Q(null,2,5,S,[jX(d,c),new Q(null,2,5,S,[\"\",c+d.length],null)],null):0===e?iX(d.substring(1),c+1):new Q(null,2,5,S,[jX(d.substring(0,e),c),new Q(null,2,5,S,[d.substring(e),e+c],null)],null)},new Q(null,2,5,S,[a,0],null))))}finally{WV=b}}\nvar UV=function UV(a){for(;;){if(Ee(a))return!1;var c=kF.g(oD.g(qE.g(A(a))));n(c)||(c=vg(UV,A(OF.g(CC.g(A(a))))),c=n(c)?c:vg(UV,A(lt.g(CC.g(A(a))))));if(n(c))return!0;a=B(a)}};function VV(a,b){RU(function(c,d){if(zW(d))return new Q(null,2,5,S,[null,d],null);d=eW(CC.g(c),d);var e=G(d,0,null);d=G(d,1,null);var f=TU(e);e=G(f,0,null);f=G(f,1,null);e=I.j(e,by,d);return new Q(null,2,5,S,[null,Xf(vA.g(c),new Q(null,3,5,S,[e,d,f],null))],null)},b,a);return null}\nvar oX=Hk(SV),pX=new k(null,6,[Bl,\"'\",Al,\"#'\",lB,\"@\",cD,\"~\",sv,\"@\",lv,\"~\"],null);function qX(a){var b=A(a);b=pX.g?pX.g(b):pX.call(null,b);return n(n(b)?x.h(2,C(a)):b)?(Qc(db,b),KV(oe(a)),!0):null}function rX(a){if(n(OV()))Qc(db,\"#\");else{var b=HV,c=IV;HV+=1;IV=0;try{yV(\"[\",\"]\");for(var d=0,e=z(a);;){if(yb(ib)||dOB.g(b)||x.h(OB.g(a),OB.g(b))&&uA.g(a)>=uA.g(b)}function l0(a,b,c){var d=JF.g(a);return function(){var e=x.h(kt.g(b),Zv.g(a));if(e)return e;if(x.h(d,cz))return M(QD.g(a),kt.g(b));if((e=x.h(kt.g(b),Zv.g(a)))||(e=x.h(kt.g(b),Ru.g(a))))return e;if(yb(c))return hP(sD.g(a),Uz.g(a),Uz.g(b));e=sD.g(a);return n(e)?hP(sD.g(a),Uz.g(a),Uz.g(b)):e}()}\nfunction m0(a,b,c){x.h(JF.g(b),cz)&&jI(g0(a),\"Activity contexts cannot be explicitly destroyed\");var d=x.h(JF.g(b),SB);var e=d&&x.h(Ru.g(b),kt.g(c));b=e?e:(d=!d)?l0(b,c,!1):d;n(b)||jI(g0(a),\"Not authorized to destroy context\")}function n0(a,b){var c=x.h(kt.g(b),Zv.g(a));if(c||(c=x.h(kt.g(b),Ru.g(a))))return c;c=hP(PA.g(a),Uz.g(a),Uz.g(b));return n(c)?c:l0(a,b,!0)}function o0(a,b){var c=IQ(a);return c?(c=cg.h(JF.g(b),cz))?n0(b,a):c:c}\nfunction p0(a,b,c){n(n0(b,c))||jI(g0(a),\"Not authorized to read context\")}function q0(a){return n(dh.h(a,new Q(null,2,5,S,[Vt,Sp],null)))?\"global\":\"context\"}function r0(a,b,c,d,e){var f=kt.g(b);a=A_(a,b,d,e);return new Q(null,2,5,S,[a,bh.h(function(g){var l=q0(g),m=$s.g(g);g=kt.g(g);return tI(m,new k(null,6,[wu,l,X,Bq,pG,g,ko,c,Rt,f,fG,d],null))},Xg.h(IQ,Ng.h(Ag(FQ,a),Yg.h(Ag(x,c),QD.g(b)))))],null)}\nfunction s0(a,b){var c=bg(b);u.h(c,UC);var d=u.h(c,pG),e=u.h(c,Yo);c=u.h(c,fG);try{var f=GQ(a,d),g=u_(a,e,f);if(n(g))return n(function(){var m=l0(g,f,!1);return n(m)?k0(b,g):m}())?r0(a,g,d,aI(c),bD.g(b)):new Q(null,2,5,S,[a,null],null);yS(tz,\"gateway.common.context.ops\",156,lE,new qk(function(){return new Q(null,2,5,S,[\"unable to find remote context\",e],null)}),-2046241708);return new Q(null,2,5,S,[a,null],null)}catch(m){var l=m;yS(Cx,\"gateway.common.context.ops\",160,lE,new qk(function(){return new Q(null,\n2,5,S,[l,\"error performing remote context update\"],null)}),-123359054);return new Q(null,2,5,S,[a,null],null)}}\nfunction t0(a,b,c,d){if(yI(c)){var e=bg(d),f=u.h(e,UC),g=u.h(e,pG),l=u.h(e,Rt);e=u.h(e,fG);try{var m=GQ(b,g),q=v_(b,l),t=bD.h(q,new k(null,1,[OB,0],null));var v=I.j(gh(t,OB,Rd),uA,(new Date).getTime());n(l0(q,m,!1))||jI(g0(a),\"Not authorized to update context\");var y=r0(b,q,g,aI(e),v),E=G(y,0,null),H=G(y,1,null),K=new Q(null,2,5,S,[E,new Q(null,2,5,S,[xI.F(a,c,f,g),uI(MY(cI(pq.g(b)),g),I.l(d,X,MF,D([bD,v,Yo,Yo.g(q)])))],null)],null),R=G(K,0,null),ca=G(K,1,null);var da=new Q(null,2,5,S,[n(R)?R:E,Qe(ca)||\nLe(ca)?Nb.j(Dg(re,F),H,ca):null!=ca?Dg(re,F)(H,ca):H],null)}catch(sa){da=new Q(null,2,5,S,[b,new Q(null,1,5,S,[wI.O(a,c,f,g,iI(sa,j0(a)))],null)],null)}}else da=s0(b,d);return da}function u0(a){if(a instanceof w)return a;switch(a){case \"ownership\":return SB;case \"ref-counted\":return Pp;case \"retained\":return mC;default:return null}}\nfunction v0(a,b,c,d){d=bg(d);var e=u.h(d,Yo),f=u.h(d,Fw),g=u.h(d,JF),l=u.h(d,PA),m=u.h(d,sD),q=u.h(d,pG),t=eI(pq.g(a));d=G(t,0,null);t=G(t,1,null);b=I.l(B_(b,e,f,g,l,m,t),QD,xj([q]),D([mG,c]));b=x.h(g,SB)?I.j(b,Ru,q):b;c=S;a=I.j(a,pq,d);a=eh(a,new Q(null,2,5,S,[YC,kt.g(b)],null),b);return new Q(null,2,5,c,[a,b],null)}\nfunction w0(a,b,c,d,e,f){yS(pD,\"GATEWAY_ACTION_LOG|context|gateway.common.context.ops\",240,lE,new qk(function(){return new Q(null,6,5,S,[\"peer\",f,\"subscribes for context\",Yo.g(e),\"using request\",d],null)}),1435752541);b=w_(b,e,f);return new Q(null,2,5,S,[b,new Q(null,1,5,S,[e0(a,c,d,f,kt.g(e),Fw.g(e))],null)],null)}\nfunction x0(a,b,c){c=bg(c);u.h(c,UC);var d=u.h(c,pG),e=u.h(c,Yo);try{var f=GQ(b,d),g=u_(b,e,f);if(n(g))return p0(a,g,f),new Q(null,2,5,S,[w_(b,g,d),null],null);yS(tz,\"gateway.common.context.ops\",257,lE,new qk(function(){return new Q(null,2,5,S,[\"unable to find remote context\",e],null)}),-1378912437);return new Q(null,2,5,S,[b,null],null)}catch(l){return new Q(null,2,5,S,[b,null],null)}}\nfunction y0(a,b,c,d){if(yI(c)){var e=bg(d),f=u.h(e,UC),g=u.h(e,pG);e=u.h(e,Rt);try{var l=GQ(b,g),m=v_(b,e),q=Ag(w0,a);p0(a,m,l);var t=new Q(null,2,5,S,[b,null],null),v=G(t,0,null),y=G(t,1,null),E=q(v,c,f,m,g),H=G(E,0,null),K=G(E,1,null);var R=new Q(null,2,5,S,[n(H)?H:v,Qe(K)||Le(K)?Nb.j(Dg(re,F),y,K):null!=K?Dg(re,F)(y,K):y],null);var ca=G(R,0,null),da=G(R,1,null),sa=new Q(null,2,5,S,[null,uI(MY(cI(pq.g(b)),g),I.l(d,X,lu,D([Yo,Yo.g(m)])))],null),Ha=G(sa,0,null),mb=G(sa,1,null);var nb=new Q(null,2,\n5,S,[n(Ha)?Ha:ca,Qe(mb)||Le(mb)?Nb.j(Dg(re,F),da,mb):null!=mb?Dg(re,F)(da,mb):da],null)}catch(Da){nb=new Q(null,2,5,S,[b,new Q(null,1,5,S,[wI.O(a,c,f,g,iI(Da,j0(a)))],null)],null)}}else nb=x0(a,b,d);return nb}function z0(a,b,c){var d=Yo.g(b),e=kt.g(b),f=kt.g(c);return ah.j(F,zg.j(Xg.g(IQ),Xg.g(Ag(n0,b)),Ng.g(function(g){var l=q0(g),m=$s.g(g);g=kt.g(g);return tI(m,new k(null,6,[wu,l,X,fr,pG,g,UB,f,Rt,e,Yo,d],null))})),TQ(a,Yp,c,!0))}\nfunction A0(a,b,c){var d=kt.g(a);return ah.j(F,zg.j(Xg.g(IQ),Xg.g(Ag(n0,a)),Ng.g(function(e){return f0(q0(e),$s.g(e),kt.g(e),d,c)})),b)}function B0(a,b){var c=gP(PA.g(b)),d=gP(sD.g(b)),e=u0(JF.g(b));n(e)||jI([p.g(a),\".errors.bad_lifetime\"].join(\"\"),[\"Bad lifetime value \",p.g(e)].join(\"\"));return pj.l(D([b,new k(null,3,[PA,c,sD,d,JF,e],null)]))}\nfunction C0(a,b,c,d){var e=bg(d),f=u.h(e,UC),g=u.h(e,pG),l=u.h(e,Yo);try{var m=GQ(b,g),q=u_(b,l,m);if(n(q))return p0(a,q,m),w0(a,b,c,f,q,g);var t=v0(b,m,!0,B0(a,d)),v=G(t,0,null),y=G(t,1,null);yS(pD,\"GATEWAY_ACTION_LOG|context|gateway.common.context.ops\",380,lE,new qk(function(){return new Q(null,6,5,S,[\"peer\",g,\"creates context\",l,\"using request\",f],null)}),319259055);return new Q(null,2,5,S,[v,re.l(z0(v,y,m),d0(a,c,f,g,kt.g(y)),D([uI(MY(cI(pq.g(b)),g),I.l(d,X,Qu,D([bD,bD.g(y)])))]))],null)}catch(H){var E=\nH;yS(Cx,\"gateway.common.context.ops\",389,lE,new qk(function(){return new Q(null,2,5,S,[E,\"error\"],null)}),1914118705);return new Q(null,2,5,S,[b,new Q(null,1,5,S,[wI.O(a,c,f,g,iI(E,j0(a)))],null)],null)}}\nfunction D0(a,b,c,d){if(yI(c))var e=C0(a,b,c,d);else{var f=bg(d);u.h(f,UC);c=u.h(f,pG);f=u.h(f,Yo);try{var g=GQ(b,c),l=u_(b,f,g);if(n(l))p0(a,l,g),e=k0(d,l)?r0(b,l,c,new k(null,1,[AD,Fw.g(d)],null),bD.g(d)):new Q(null,2,5,S,[b,null],null);else{var m=v0(b,g,!1,B0(a,d)),q=G(m,0,null),t=G(m,1,null);e=new Q(null,2,5,S,[q,z0(q,t,g)],null)}}catch(v){e=new Q(null,2,5,S,[b,null],null)}}return e}\nfunction E0(a,b,c,d){yS(pD,\"GATEWAY_ACTION_LOG|context|gateway.common.context.ops\",419,lE,new qk(function(){return new Q(null,5,5,S,[\"context\",Yo.g(c),\"is destroyed\",\"with reason\",d],null)}),-1663283401);var e=kt.g(c),f=QD.g(c);return new Q(null,2,5,S,[TH(b,new Q(null,2,5,S,[YC,e],null)),Nb.j(re,bh.h(function(g){return f0(a,$s.g(g),kt.g(g),e,d)},Xg.h(IQ,Ng.h(Ag(FQ,b),f))),A0(c,wk(D([Yg.h(function(g){return u.h(f,kt.g(g))},JQ(b,Yp))])),d))],null)}\nfunction F0(a,b,c){c=bg(c);var d=u.h(c,pG),e=u.h(c,Yo);try{var f=GQ(b,d),g=u_(b,e,f);if(n(g))return m0(a,g,f),E0(a,b,g,h0(a));yS(tz,\"gateway.common.context.ops\",446,lE,new qk(function(){return new Q(null,2,5,S,[\"unable to find remote context\",e],null)}),1357307602);return new Q(null,2,5,S,[b,null],null)}catch(l){return new Q(null,2,5,S,[b,null],null)}}\nfunction G0(a,b,c,d){if(yI(c)){var e=bg(d),f=u.h(e,UC),g=u.h(e,pG);e=u.h(e,Rt);try{var l=GQ(b,g),m=v_(b,e);m0(a,m,l);var q=E0(a,b,m,h0(a)),t=G(q,0,null),v=G(q,1,null),y=new Q(null,2,5,S,[null,new Q(null,2,5,S,[xI.F(a,c,f,g),uI(MY(cI(pq.g(b)),g),I.l(d,X,Ho,D([Yo,Yo.g(m)])))],null)],null),E=G(y,0,null),H=G(y,1,null);var K=new Q(null,2,5,S,[n(E)?E:t,Qe(H)||Le(H)?Nb.j(Dg(re,F),v,H):null!=H?Dg(re,F)(v,H):v],null)}catch(R){K=new Q(null,2,5,S,[b,new Q(null,1,5,S,[wI.O(a,c,f,g,iI(R,j0(a)))],null)],null)}}else K=\nF0(a,b,d);return K}var H0=function H0(a){switch(arguments.length){case 3:return H0.j(arguments[0],arguments[1],arguments[2]);case 4:return H0.F(arguments[0],arguments[1],arguments[2],arguments[3]);default:throw Error([\"Invalid arity: \",p.g(arguments.length)].join(\"\"));}};\nH0.j=function(a,b,c){var d=kt.g(c),e=Ag(H0,a);return Nb.j(function(f,g){var l=G(f,0,null);f=G(f,1,null);var m=e(l,d,g);g=G(m,0,null);m=G(m,1,null);return new Q(null,2,5,S,[n(g)?g:l,Qe(m)||Le(m)?Nb.j(Dg(re,F),f,m):null!=m?Dg(re,F)(f,m):f],null)},new Q(null,2,5,S,[b,F],null),t_(b))};\nH0.F=function(a,b,c,d){if(M(QD.g(d),c)){var e=hh(d,QD,De,c);c=x.h(c,Ru.g(e))?we.h(e,Ru):e;d=new Q(null,2,5,S,[eh(b,new Q(null,2,5,S,[YC,kt.g(d)],null),c),c],null);b=G(d,0,null);d=G(d,1,null);a:switch(c=JF.g(d),c instanceof w?c.W:null){case \"ownership\":c=null==Ru.g(d);break a;case \"ref-counted\":c=Ee(QD.g(d));break a;default:c=!1}return n(c)?E0(a,b,d,i0(a)):new Q(null,2,5,S,[b,null],null)}return new Q(null,2,5,S,[b,null],null)};H0.I=4;\nfunction I0(a,b,c){var d=bg(c);u.h(d,UC);var e=u.h(d,pG),f=u.h(d,Yo);try{var g=GQ(b,e),l=u_(b,f,g);if(n(l))return H0.F(a,b,e,l);yS(tz,\"gateway.common.context.ops\",517,lE,new qk(function(){return new Q(null,2,5,S,[\"unable to find remote context\",f],null)}),1511749041);return new Q(null,2,5,S,[b,null],null)}catch(q){var m=q;yS(tz,\"gateway.common.context.ops\",521,lE,new qk(function(){return new Q(null,3,5,S,[m,\"unable to process remote unsubscribe\",c],null)}),91111828);return new Q(null,2,5,S,[b,null],\nnull)}}\nfunction J0(a,b,c,d){if(yI(c)){var e=bg(d),f=u.h(e,UC),g=u.h(e,pG);e=u.h(e,Rt);try{GQ(b,g);var l=v_(b,e),m=H0.F(a,b,g,l),q=G(m,0,null),t=G(m,1,null),v=new Q(null,2,5,S,[null,new Q(null,2,5,S,[xI.F(a,c,f,g),uI(MY(cI(pq.g(b)),g),I.l(d,X,xs,D([Yo,Yo.g(l)])))],null)],null),y=G(v,0,null),E=G(v,1,null);var H=new Q(null,2,5,S,[n(y)?y:q,Qe(E)||Le(E)?Nb.j(Dg(re,F),t,E):null!=E?Dg(re,F)(t,E):t],null)}catch(K){H=new Q(null,2,5,S,[b,new Q(null,1,5,S,[wI.O(a,c,f,g,iI(K,j0(a)))],null)],null)}}else H=I0(a,b,d);\nreturn H}function K0(a,b,c){var d=$s.g(c),e=kt.g(c);return Ng.h(function(f){var g=Ru.g(f),l=kt.g(f);f=Yo.g(f);return tI(d,new k(null,6,[wu,a,X,fr,pG,e,UB,g,Rt,l,Yo,f],null))},Xg.h(Ag(o0,c),t_(b)))}function L0(a,b){a=FQ.h(a,pG.g(Ro.g(b)));return n(a)?yb(Sp.g(Vt.g(a))):null};var M0=Ag(t0,\"activity\");function N0(a){a=1E3*dh.j(a,new Q(null,2,5,S,[du,nA],null),0);return 0=c:null}function X0(a,b){return af(function(c,d,e){return I.j(c,d,x.h(\"?\",e)?b:e)},P,a)}\nfunction Y0(a,b,c){function d(q,t){return wI.O(\"global\",b,f,g,hI(q,t))}var e=bg(c),f=u.h(e,UC),g=u.h(e,pG);e=u.h(e,xz);var l=Uz.g(FQ.h(a,g));if(n(l)){var m=sI(a,e);return n(m)?DQ(m,a,new k(null,3,[ut,gz,$s,b,Ro,I.j(I.j(c,Uz,l),X,OG)],null)):new Q(null,2,5,S,[a,new Q(null,1,5,S,[d(\"global.errors.invalid_domain\",[\"Unable to join missing domain \",p.g(e)].join(\"\"))],null)],null)}return new Q(null,2,5,S,[a,new Q(null,1,5,S,[d(\"global.errors.invalid_peer\",[\"Unable to find peer with id \",p.g(g)].join(\"\"))],\nnull)],null)}function Z0(a,b,c){return Y0(a,b,c)}\nfunction $0(a,b,c,d,e){var f=bg(c),g=u.h(f,UC),l=u.h(f,qz),m=u.h(f,fz),q=u.h(f,xr),t=u.h(f,Jp),v=u.h(f,Vt);f=mD.g(d);a=rI(a,kt.g(m));var y=G(a,0,null);G(a,1,null);var E=function(){var ec=pj.l(D([new k(null,1,[Ay,KT(yv.g(b),hE.g(e))],null),HT(l),rj(c,new Q(null,2,5,S,[xr,iz],null))]));if(n(iD.g(c))){var Je=iD.g(c);Je=xr.g(Je);ec=n(Je)?I.j(ec,xr,Je):ec}return ec}(),H=n(Wv.g(E))?new Q(null,2,5,S,[E,y],null):function(){var ec=pq.g(y);var Je=Zu.h(ec,1);var vu=[\"i-\",p.g(jw.g(ec)),\"-\",p.g(Je)].join(\"\");\nJe=new Q(null,2,5,S,[I.j(ec,Zu,Je+1),vu],null);ec=G(Je,0,null);Je=G(Je,1,null);return new Q(null,2,5,S,[I.j(E,Wv,Je),I.j(y,pq,ec)],null)}();a=G(H,0,null);H=G(H,1,null);v=I.j(v,Sp,!0);try{var K=dh.h(H,new Q(null,2,5,S,[Du,a],null));n(K)&&jI(\"global.errors.already_seen\",\"Hello already received once\");JT(a);n(W0(H,q,f))&&jI(\"global.errors.limits_exceeded\",\"Maximum number of peers per user have been reached\");var R=fI(pq.g(H)),ca=G(R,0,null),da=G(R,1,null),sa=X0(a,da),Ha=NQ(I.j(H,pq,ca),b,da,sa,m,v),\nmb=G(Ha,0,null),nb=G(Ha,1,null),Da=yZ(b,g,kt.g(nb),Ng.h(pD,ei(PE.g(mb))),sa,pj.l(D([function(){var ec=pD.g(d);return n(ec)?new k(null,1,[pD,ec],null):null}(),n(t)?new k(null,1,[Jp,t],null):null])));n(null)&&zS(jm,\"global/peer-count\",C(wG.g(mb)));var Hb=new Q(null,2,5,S,[mb,new Q(null,1,5,S,[Da],null)],null),Rb=G(Hb,0,null),pb=G(Hb,1,null),Sb=Z0(Rb,b,new k(null,6,[UC,g,pG,kt.g(nb),Uz,sa,Vt,v,xz,\"context\",wu,\"global\"],null)),gb=G(Sb,0,null),ob=G(Sb,1,null);return new Q(null,2,5,S,[n(gb)?gb:Rb,Qe(ob)||\nLe(ob)?Nb.j(Dg(re,F),pb,ob):null!=ob?Dg(re,F)(pb,ob):pb],null)}catch(ec){return m=ec,yI(b)?new Q(null,2,5,S,[H,new Q(null,1,5,S,[wI.O(\"global\",b,g,null,iI(m,\"global.errors.failure\"))],null)],null):null}}\nfunction a1(a,b,c){yS(it,\"gateway.domains.global.core\",230,lE,new qk(function(){return new Q(null,1,5,S,[\"removing source from global domain\"],null)}),-1006906324);var d=dh.h(a,new Q(null,2,5,S,[pq,jw],null));a=Nb.j(function(f,g){var l=G(f,0,null);f=G(f,1,null);var m=new Q(null,2,5,S,[OQ(l,g),null],null),q=G(m,0,null);m=G(m,1,null);f=new Q(null,2,5,S,[n(q)?q:l,Qe(m)||Le(m)?Nb.j(Dg(re,F),f,m):null!=m?Dg(re,F)(f,m):f],null);l=G(f,0,null);f=G(f,1,null);q=new Q(null,2,5,S,[null,yI(b)?uI(new k(null,3,\n[X,qy,em,kt.g(g),zt,d],null),c):null],null);g=G(q,0,null);q=G(q,1,null);return new Q(null,2,5,S,[n(g)?g:l,Qe(q)||Le(q)?Nb.j(Dg(re,F),f,q):null!=q?Dg(re,F)(f,q):f],null)},new Q(null,2,5,S,[a,null],null),LQ(a,b));var e=G(a,0,null);G(a,1,null);yS(it,\"gateway.domains.global.core\",243,lE,new qk(function(){return new Q(null,1,5,S,[\"removed source from global domain\"],null)}),-2080102303);n(null)&&zS(jm,\"global/peer-count\",C(wG.g(e)));return a}\nfunction b1(a,b,c,d,e){c=bg(c);var f=u.h(c,UC),g=u.h(c,Uz);c=u.h(c,du);c=fL(c);var l=Bf.g(Hn.h(c,Zk.g(d)));d=dh.h(d,new Q(null,2,5,S,[nw,l],null));return n(d)?(qT(sT(qT(wT(d,new k(null,4,[UC,f,qz,g,du,c,ho,ho.g(a)],null)),function(m){return gh(m,X,function(q){switch(q instanceof w?q.W:null){case \"success\":return an;case \"continue\":return tE;default:return q}})}),function(m){return I.j(el(m),X,Ft)}),function(m){return PH(e,new k(null,3,[ut,gz,$s,b,Ro,I.l(m,UC,f,D([qz,g]))],null))}),new Q(null,2,5,\nS,[a,null],null)):new Q(null,2,5,S,[a,new Q(null,1,5,S,[wI.O(\"global\",b,f,null,lI(\"global.errors.authentication.failure\",[\"Requested authentication provider \",p.g(l),\" is not available\"].join(\"\")))],null)],null)}\nvar c1=Ag(t0,\"global\"),d1=Ag(D0,\"global\"),e1=Ag(G0,\"global\"),f1=Ag(y0,\"global\"),g1=Ag(J0,\"global\"),h1=function(){var a=Fg(P),b=Fg(P),c=Fg(P),d=Fg(P),e=u.j(P,fu,Kk.A?Kk.A():Kk.call(null));return new Yk(Bd.h(\"gateway.domains.global.core\",\"handle-request\"),function(f,g,l){return X.g(l)},e,a,b,c,d)}();h1.C(null,Nm,function(a,b,c,d){return b1(a,b,c,d,Cv.g(a))});\nh1.C(null,qt,function(a,b,c){if(yI(b))b=Y0(a,b,c);else{var d=bg(c),e=u.h(d,pG),f=u.h(d,xz);d=u.h(d,Vt);f=sI(a,f);n(f)?(a=NQ(a,b,e,Uz.g(c),null,d),e=G(a,0,null),G(a,1,null),b=DQ(f,e,new k(null,3,[ut,jD,$s,b,Ro,I.j(c,X,OG)],null))):b=null}return b});\nh1.C(null,Pz,function(a,b,c){if(yI(b)){var d=bg(c),e=u.h(d,UC),f=u.h(d,pG);d=u.h(d,xz);if(n(FQ.h(a,f))){var g=sI(a,d);a=n(g)?DQ(g,a,new k(null,3,[ut,gz,$s,b,Ro,I.j(c,X,mv)],null)):new Q(null,2,5,S,[a,new Q(null,1,5,S,[wI.O(\"global\",b,e,f,lI(\"global.errors.invalid_domain\",[\"Unable to leave missing domain \",p.g(d)].join(\"\")))],null)],null)}else a=new Q(null,2,5,S,[a,new Q(null,1,5,S,[wI.O(\"global\",b,e,f,lI(\"global.errors.invalid_peer\",[\"Unable to find peer with id \",p.g(f)].join(\"\")))],null)],null)}else f=\nbg(c),e=u.h(f,pG),f=u.h(f,xz),n(FQ.h(a,e))?(e=sI(a,f),a=n(e)?DQ(e,a,new k(null,3,[ut,gz,$s,b,Ro,I.j(c,X,mv)],null)):null):a=null;return a});h1.C(null,an,function(a,b,c,d,e,f){return $0(a,b,c,e,f)});h1.C(null,Ft,function(a,b,c){var d=bg(c);c=u.h(d,Ar);d=u.h(d,UC);return new Q(null,2,5,S,[a,new Q(null,1,5,S,[wI.O(\"global\",b,d,null,hI(\"global.errors.authentication.failure\",c))],null)],null)});\nh1.C(null,tE,function(a,b,c){var d=bg(c);c=u.h(d,UC);d=u.h(d,du);return new Q(null,2,5,S,[a,new Q(null,1,5,S,[tI(b,new k(null,4,[wu,\"global\",X,oF,UC,c,du,d],null))],null)],null)});h1.C(null,Qu,function(a,b,c){return d1(a,b,c)});h1.C(null,MF,function(a,b,c){return c1(a,b,c)});h1.C(null,lu,function(a,b,c){return f1(a,b,c)});h1.C(null,xs,function(a,b,c){return g1(a,b,c)});h1.C(null,Ho,function(a,b,c){return e1(a,b,c)});h1.C(null,my,function(a){return new Q(null,1,5,S,[a],null)});\nh1.C(null,zB,function(a,b,c){return a1(a,b,c)});h1.C(null,ZC,function(a,b,c,d,e){d=bg(c);c=u.h(d,UC);d=u.h(d,pG);var f=GQ(a,d),g=S,l=S;a:{var m=wU;wU=N0(e);try{var q=Uz.g(f),t=SH()+wU,v=new k(null,2,[X,du,xr,xr.g(q)],null);var y=n(t)?I.j(v,Rl,kf(t,1E3)):v;var E=vU(y,ho.g(a));break a}finally{wU=m}E=void 0}return new Q(null,2,5,g,[a,new Q(null,1,5,l,[tI(b,new k(null,5,[wu,\"global\",X,Ol,UC,c,pG,d,Ol,E],null))],null)],null)});\nh1.C(null,Zk,function(a,b,c){yS(Cx,\"gateway.domains.global.core\",410,lE,new qk(function(){return new Q(null,2,5,S,[\"Unhandled message\",c],null)}),-107392902);return new Q(null,2,5,S,[a,new Q(null,1,5,S,[wI.O(\"global\",b,UC.h(c,-1),pG.g(c),lI(\"global.errors.unhandled_message\",[\"Unhandled message \",p.g(c)].join(\"\")))],null)],null)});\nfunction i1(a,b,c,d,e){var f=bg(e),g=u.h(f,$s);f=u.h(f,Ro);try{return h1.oa(d,g,f,a,b,c)}catch(m){if(m instanceof Error){var l=m;n(el(l))||yS(Cx,\"gateway.domains.global.core\",426,lE,new qk(function(){return new Q(null,3,5,S,[l,\"Error processing message\",e],null)}),1315495637);return new Q(null,2,5,S,[d,new Q(null,1,5,S,[wI.O(\"global\",g,UC.h(f,-1),pG.g(f),iI(l,\"global.errors.failure\"))],null)],null)}throw m;}}\nfunction j1(a){this.Ue=new k(null,1,[hE,\"127.0.0.1\"],null);this.Ag=a;this.configuration=null}j1.prototype.Yc=function(){return new k(null,3,[GC,\"global\",pr,\"\",bD,1],null)};j1.prototype.Zc=function(a,b){return b};j1.prototype.Wc=function(a,b){return b};j1.prototype.Xc=function(a,b,c){return i1(this.Ag,this.configuration,this.Ue,b,c)};function k1(a,b){return af(function(c,d,e){c=u.h(b,d);return yb(xY(e,c))?Td(!1):!0},!0,a)}function l1(a,b,c){var d=Nb.j(function(e,f){return n(k1(cG.g(f),b))?n(yY(dh.h(f,new Q(null,2,5,S,[ss,NF],null)),c))?Td(!1):n(e)?e:yY(dh.h(f,new Q(null,2,5,S,[ss,cs],null)),c):e},null,bw.g(a));if(null!=d)return d;a=Su.g(a);switch(a instanceof w?a.W:null){case \"whitelist\":return!0;case \"blacklist\":return!1;default:return!0}};function m1(a){if(null!=a&&null!=a.bh)a=a.bh(a);else{var b=m1[ba(null==a?null:a)];if(null!=b)a=b.g?b.g(a):b.call(null,a);else if(b=m1._,null!=b)a=b.g?b.g(a):b.call(null,a);else throw Eb(\"Repository.start!\",a);}return a}function n1(a){if(null!=a&&null!=a.dh)a.dh(a);else{var b=n1[ba(null==a?null:a)];if(null!=b)b.g?b.g(a):b.call(null,a);else if(b=n1._,null!=b)b.g?b.g(a):b.call(null,a);else throw Eb(\"Repository.stop!\",a);}}\nfunction o1(a,b){if(null!=a&&null!=a.$g)a=a.$g(a,b);else{var c=o1[ba(null==a?null:a)];if(null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else if(c=o1._,null!=c)a=c.h?c.h(a,b):c.call(null,a,b);else throw Eb(\"Repository.add!\",a);}return a}function p1(a,b){if(null!=a&&null!=a.ah)a.ah(a,b);else{var c=p1[ba(null==a?null:a)];if(null!=c)c.h?c.h(a,b):c.call(null,a,b);else if(c=p1._,null!=c)c.h?c.h(a,b):c.call(null,a,b);else throw Eb(\"Repository.publish!\",a);}}\nfunction q1(a,b){if(null!=a&&null!=a.eh)a=a.eh(a,b,null);else{var c=q1[ba(null==a?null:a)];if(null!=c)a=c.j?c.j(a,b,null):c.call(null,a,b,null);else if(c=q1._,null!=c)a=c.j?c.j(a,b,null):c.call(null,a,b,null);else throw Eb(\"RepositoryFactory.repository\",a);}return a}function T3(a){if(null!=a&&null!=a.Ki)a.Ki(a);else{var b=T3[ba(null==a?null:a)];if(null!=b)b.g?b.g(a):b.call(null,a);else if(b=T3._,null!=b)b.g?b.g(a):b.call(null,a);else throw Eb(\"RepositoryFactory.shutdown\",a);}};var r1=new uj(null,new k(null,3,[Xt,null,oE,null,Wv,null],null),null);function s1(a){var b=vg(function(c){var d=!M(a,c);return d?c:d},r1);n(b)&&jI(\"metrics.errors.bad_identity\",[\"Repository is missing required \",p.g(b),\" property\"].join(\"\"))}\nfunction t1(a,b){var c=kt.g(b);b=dh.h(b,new Q(null,2,5,S,[Ou,Gv],null));if(z(b)){yS(pD,\"gateway.domains.metrics.core\",72,lE,new qk(function(){return new Q(null,2,5,S,[\"stopping metrics publishing for peer\",c],null)}),-1708796740);b=z(b);for(var d=null,e=0,f=0;;)if(fa.Ei)){c=we.h(I.j(I.j(c,uA,b),Uy,b+3*a.Ei),wQ);var d=E3(a.Di,c,a.Hi),e=OH(1);sH(function(){var g=function(){return function(){function m(v){for(;;){a:try{for(;;){var y=\nv,E=y[1];var H=1===E?t2(y,2,a.uh,d):2===E?NH(y,y[2]):null;if(!O(H,fv)){var K=H;break a}}}catch(R){K=R;v[2]=K;if(z(v[4]))v[1]=A(v[4]);else throw K;K=fv}if(!O(K,fv))return K}}function q(){var v=[null,null,null,null,null,null,null];v[0]=t;v[1]=1;return v}var t=null;t=function(v){switch(arguments.length){case 0:return q.call(this);case 1:return m.call(this,v)}throw Error(\"Invalid arity: \"+arguments.length);};t.A=q;t.g=m;return t}()}(),l=function(){var m=g();m[6]=e;return m}();return LH(l)})}Gg(a.Fi,!0);\nif(0 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet || ORIGINAL;\n}\n\nmodule.exports = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n","'use strict';\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nmodule.exports = randomByte;\n","// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nmodule.exports = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length)\n var id = ''\n\n while (true) {\n var bytes = random(step)\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || ''\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id\n }\n }\n}\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar random = require('./random/random-byte');\nvar format = require('nanoid/format');\n\nfunction generate(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nmodule.exports = generate;\n","'use strict';\n\nvar generate = require('./generate');\nvar alphabet = require('./alphabet');\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nmodule.exports = build;\n","'use strict';\nvar alphabet = require('./alphabet');\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nmodule.exports = isShortId;\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar build = require('./build');\nvar isValid = require('./is-valid');\n\n// if you are using cluster or multiple servers use this to make each instance\n// has a unique value for worker\n// Note: I don't know if this is automatically set when using third\n// party cluster solutions such as pm2.\nvar clusterWorkerId = require('./util/cluster-worker-id') || 0;\n\n/**\n * Set the seed.\n * Highly recommended if you don't want people to try to figure out your id schema.\n * exposed as shortid.seed(int)\n * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n */\nfunction seed(seedValue) {\n alphabet.seed(seedValue);\n return module.exports;\n}\n\n/**\n * Set the cluster worker or machine id\n * exposed as shortid.worker(int)\n * @param workerId worker must be positive integer. Number less than 16 is recommended.\n * returns shortid module so it can be chained.\n */\nfunction worker(workerId) {\n clusterWorkerId = workerId;\n return module.exports;\n}\n\n/**\n *\n * sets new characters to use in the alphabet\n * returns the shuffled alphabet\n */\nfunction characters(newCharacters) {\n if (newCharacters !== undefined) {\n alphabet.characters(newCharacters);\n }\n\n return alphabet.shuffled();\n}\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction generate() {\n return build(clusterWorkerId);\n}\n\n// Export all other functions as properties of the generate function\nmodule.exports = generate;\nmodule.exports.generate = generate;\nmodule.exports.seed = seed;\nmodule.exports.worker = worker;\nmodule.exports.characters = characters;\nmodule.exports.isValid = isValid;\n","'use strict';\nmodule.exports = require('./lib/index');\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value; // eslint-disable-line no-param-reassign\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = require('object-keys');\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bind/callBound');\nvar toObject = Object;\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = toObject(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = toObject(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind.apply(getPolyfill());\n// eslint-disable-next-line no-unused-vars\nvar bound = function assign(target, source1) {\n\treturn polyfill(Object, arguments);\n};\n\ndefineProperties(bound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = bound;\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $Object = Object;\nvar $TypeError = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.unicodeSets) {\n\t\tresult += 'v';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n\nif (functionsHaveConfigurableNames && Object.defineProperty) {\n\tObject.defineProperty(module.exports, 'name', { value: 'get flags' });\n}\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& typeof RegExp.prototype.dotAll === 'boolean'\n\t\t\t&& typeof RegExp.prototype.hasIndices === 'boolean'\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar has = require('has');\nvar channel = require('side-channel')();\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar SLOT = {\n\tassert: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tchannel.assert(O);\n\t\tif (!SLOT.has(O, slot)) {\n\t\t\tthrow new $TypeError('`' + slot + '` is not present on `O`');\n\t\t}\n\t},\n\tget: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn slots && slots['$' + slot];\n\t},\n\thas: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn !!slots && has(slots, '$' + slot);\n\t},\n\tset: function (O, slot, V) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\tif (!slots) {\n\t\t\tslots = {};\n\t\t\tchannel.set(O, slots);\n\t\t}\n\t\tslots['$' + slot] = V;\n\t}\n};\n\nif (Object.freeze) {\n\tObject.freeze(SLOT);\n}\n\nmodule.exports = SLOT;\n","'use strict';\n\nvar SLOT = require('internal-slot');\n\nvar $SyntaxError = SyntaxError;\nvar $StopIteration = typeof StopIteration === 'object' ? StopIteration : null;\n\nmodule.exports = function getStopIterationIterator(origIterator) {\n\tif (!$StopIteration) {\n\t\tthrow new $SyntaxError('this environment lacks StopIteration');\n\t}\n\n\tSLOT.set(origIterator, '[[Done]]', false);\n\n\tvar siIterator = {\n\t\tnext: function next() {\n\t\t\tvar iterator = SLOT.get(this, '[[Iterator]]');\n\t\t\tvar done = SLOT.get(iterator, '[[Done]]');\n\t\t\ttry {\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: done ? void undefined : iterator.next()\n\t\t\t\t};\n\t\t\t} catch (e) {\n\t\t\t\tSLOT.set(iterator, '[[Done]]', true);\n\t\t\t\tif (e !== $StopIteration) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n\n\tSLOT.set(siIterator, '[[Iterator]]', origIterator);\n\n\treturn siIterator;\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar strValue = String.prototype.valueOf;\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\tstrValue.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar strClass = '[object String]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\n};\n","'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Map) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$mapHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Set) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$setHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\n/* eslint global-require: 0 */\n// the code is structured this way so that bundlers can\n// alias out `has-symbols` to `() => true` or `() => false` if your target\n// environments' Symbol capabilities are known, and then use\n// dead code elimination on the rest of this module.\n//\n// Similarly, `isarray` can be aliased to `Array.isArray` if\n// available in all target environments.\n\nvar isArguments = require('is-arguments');\nvar getStopIterationIterator = require('stop-iteration-iterator');\n\nif (require('has-symbols')() || require('has-symbols/shams')()) {\n\tvar $iterator = Symbol.iterator;\n\t// Symbol is available natively or shammed\n\t// natively:\n\t// - Chrome >= 38\n\t// - Edge 12-14?, Edge >= 15 for sure\n\t// - FF >= 36\n\t// - Safari >= 9\n\t// - node >= 0.12\n\tmodule.exports = function getIterator(iterable) {\n\t\t// alternatively, `iterable[$iterator]?.()`\n\t\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\n\t\t\treturn iterable[$iterator]();\n\t\t}\n\t\tif (isArguments(iterable)) {\n\t\t\t// arguments objects lack Symbol.iterator\n\t\t\t// - node 0.12\n\t\t\treturn Array.prototype[$iterator].call(iterable);\n\t\t}\n\t};\n} else {\n\t// Symbol is not available, native or shammed\n\tvar isArray = require('isarray');\n\tvar isString = require('is-string');\n\tvar GetIntrinsic = require('get-intrinsic');\n\tvar $Map = GetIntrinsic('%Map%', true);\n\tvar $Set = GetIntrinsic('%Set%', true);\n\tvar callBound = require('call-bind/callBound');\n\tvar $arrayPush = callBound('Array.prototype.push');\n\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\n\tvar $stringSlice = callBound('String.prototype.slice');\n\n\tvar advanceStringIndex = function advanceStringIndex(S, index) {\n\t\tvar length = S.length;\n\t\tif ((index + 1) >= length) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar first = $charCodeAt(S, index);\n\t\tif (first < 0xD800 || first > 0xDBFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar second = $charCodeAt(S, index + 1);\n\t\tif (second < 0xDC00 || second > 0xDFFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\treturn index + 2;\n\t};\n\n\tvar getArrayIterator = function getArrayIterator(arraylike) {\n\t\tvar i = 0;\n\t\treturn {\n\t\t\tnext: function next() {\n\t\t\t\tvar done = i >= arraylike.length;\n\t\t\t\tvar value;\n\t\t\t\tif (!done) {\n\t\t\t\t\tvalue = arraylike[i];\n\t\t\t\t\ti += 1;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t};\n\n\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable, noPrimordialCollections) {\n\t\tif (isArray(iterable) || isArguments(iterable)) {\n\t\t\treturn getArrayIterator(iterable);\n\t\t}\n\t\tif (isString(iterable)) {\n\t\t\tvar i = 0;\n\t\t\treturn {\n\t\t\t\tnext: function next() {\n\t\t\t\t\tvar nextIndex = advanceStringIndex(iterable, i);\n\t\t\t\t\tvar value = $stringSlice(iterable, i, nextIndex);\n\t\t\t\t\ti = nextIndex;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: nextIndex > iterable.length,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// es6-shim and es-shims' es-map use a string \"_es6-shim iterator_\" property on different iterables, such as MapIterator.\n\t\tif (noPrimordialCollections && typeof iterable['_es6-shim iterator_'] !== 'undefined') {\n\t\t\treturn iterable['_es6-shim iterator_']();\n\t\t}\n\t};\n\n\tif (!$Map && !$Set) {\n\t\t// the only language iterables are Array, String, arguments\n\t\t// - Safari <= 6.0\n\t\t// - Chrome < 38\n\t\t// - node < 0.12\n\t\t// - FF < 13\n\t\t// - IE < 11\n\t\t// - Edge < 11\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\tif (iterable != null) {\n\t\t\t\treturn getNonCollectionIterator(iterable, true);\n\t\t\t}\n\t\t};\n\t} else {\n\t\t// either Map or Set are available, but Symbol is not\n\t\t// - es6-shim on an ES5 browser\n\t\t// - Safari 6.2 (maybe 6.1?)\n\t\t// - FF v[13, 36)\n\t\t// - IE 11\n\t\t// - Edge 11\n\t\t// - Safari v[6, 9)\n\n\t\tvar isMap = require('is-map');\n\t\tvar isSet = require('is-set');\n\n\t\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\n\t\tvar $mapForEach = callBound('Map.prototype.forEach', true);\n\t\tvar $setForEach = callBound('Set.prototype.forEach', true);\n\t\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \"if is not node\"\n\n\t\t\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\n\t\t\t// returns a value, or throws a StopIteration object. These browsers\n\t\t\t// do not have any other mechanism for iteration.\n\t\t\tvar $mapIterator = callBound('Map.prototype.iterator', true);\n\t\t\tvar $setIterator = callBound('Set.prototype.iterator', true);\n\t\t}\n\t\t// Firefox 27-35, and some older es6-shim versions, use a string \"@@iterator\" property\n\t\t// this returns a proper iterator object, so we should use it instead of forEach.\n\t\t// newer es6-shim versions use a string \"_es6-shim iterator_\" property.\n\t\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\n\t\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\n\n\t\tvar getCollectionIterator = function getCollectionIterator(iterable) {\n\t\t\tif (isMap(iterable)) {\n\t\t\t\tif ($mapIterator) {\n\t\t\t\t\treturn getStopIterationIterator($mapIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($mapAtAtIterator) {\n\t\t\t\t\treturn $mapAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($mapForEach) {\n\t\t\t\t\tvar entries = [];\n\t\t\t\t\t$mapForEach(iterable, function (v, k) {\n\t\t\t\t\t\t$arrayPush(entries, [k, v]);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(entries);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isSet(iterable)) {\n\t\t\t\tif ($setIterator) {\n\t\t\t\t\treturn getStopIterationIterator($setIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($setAtAtIterator) {\n\t\t\t\t\treturn $setAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($setForEach) {\n\t\t\t\t\tvar values = [];\n\t\t\t\t\t$setForEach(iterable, function (v) {\n\t\t\t\t\t\t$arrayPush(values, v);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(values);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\n\t\t};\n\t}\n}\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tcache['$' + typedArray] = callBind(arr.slice);\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar found = false;\n\tforEach(cache, function (getter, typedArray) {\n\t\tif (!found) {\n\t\t\ttry {\n\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t}\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn found;\n};\n\nvar trySlices = function tryAllSlices(value) {\n\tvar found = false;\n\tforEach(cache, function (getter, name) {\n\t\tif (!found) {\n\t\t\ttry {\n\t\t\t\tgetter(value);\n\t\t\t\tfound = $slice(name, 1);\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn found;\n};\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar GetIntrinsic = require('get-intrinsic');\nvar isTypedArray = require('is-typed-array');\n\nvar $ArrayBuffer = GetIntrinsic('ArrayBuffer', true);\nvar $Float32Array = GetIntrinsic('Float32Array', true);\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\n\n// in node 0.10, ArrayBuffers have no prototype methods, but have an own slot-checking `slice` method\nvar abSlice = $ArrayBuffer && !$byteLength && new $ArrayBuffer().slice;\nvar $abSlice = abSlice && callBind(abSlice);\n\nmodule.exports = $byteLength || $abSlice\n\t? function isArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\tif ($byteLength) {\n\t\t\t\t$byteLength(obj);\n\t\t\t} else {\n\t\t\t\t$abSlice(obj, 0);\n\t\t\t}\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: $Float32Array\n\t\t// in node 0.8, ArrayBuffers have no prototype or own methods\n\t\t? function IsArrayBuffer(obj) {\n\t\t\ttry {\n\t\t\t\treturn (new $Float32Array(obj)).buffer === obj && !isTypedArray(obj);\n\t\t\t} catch (e) {\n\t\t\t\treturn typeof obj === 'object' && e.name === 'RangeError';\n\t\t\t}\n\t\t}\n\t\t: function isArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\t\treturn false;\n\t\t};\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\n\nvar $byteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\nmodule.exports = $byteLength\n\t? function isSharedArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t$byteLength(obj);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: function isSharedArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\treturn false;\n\t};\n","'use strict';\n\nvar numToStr = Number.prototype.toString;\nvar tryNumberObject = function tryNumberObject(value) {\n\ttry {\n\t\tnumToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar numClass = '[object Number]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isNumberObject(value) {\n\tif (typeof value === 'number') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryNumberObject(value) : toStr.call(value) === numClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $boolToStr = callBound('Boolean.prototype.toString');\nvar $toString = callBound('Object.prototype.toString');\n\nvar tryBooleanObject = function booleanBrandCheck(value) {\n\ttry {\n\t\t$boolToStr(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar boolClass = '[object Boolean]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isBoolean(value) {\n\tif (typeof value === 'boolean') {\n\t\treturn true;\n\t}\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : $toString(value) === boolClass;\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = require('has-symbols')();\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (toStr.call(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar $BigInt = typeof BigInt !== 'undefined' && BigInt;\n\nmodule.exports = function hasNativeBigInts() {\n\treturn typeof $BigInt === 'function'\n\t\t&& typeof BigInt === 'function'\n\t\t&& typeof $BigInt(42) === 'bigint' // eslint-disable-line no-magic-numbers\n\t\t&& typeof BigInt(42) === 'bigint'; // eslint-disable-line no-magic-numbers\n};\n","'use strict';\n\nvar hasBigInts = require('has-bigints')();\n\nif (hasBigInts) {\n\tvar bigIntValueOf = BigInt.prototype.valueOf;\n\tvar tryBigInt = function tryBigIntObject(value) {\n\t\ttry {\n\t\t\tbigIntValueOf.call(value);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t}\n\t\treturn false;\n\t};\n\n\tmodule.exports = function isBigInt(value) {\n\t\tif (\n\t\t\tvalue === null\n\t\t\t|| typeof value === 'undefined'\n\t\t\t|| typeof value === 'boolean'\n\t\t\t|| typeof value === 'string'\n\t\t\t|| typeof value === 'number'\n\t\t\t|| typeof value === 'symbol'\n\t\t\t|| typeof value === 'function'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof value === 'bigint') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn tryBigInt(value);\n\t};\n} else {\n\tmodule.exports = function isBigInt(value) {\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar isString = require('is-string');\nvar isNumber = require('is-number-object');\nvar isBoolean = require('is-boolean-object');\nvar isSymbol = require('is-symbol');\nvar isBigInt = require('is-bigint');\n\n// eslint-disable-next-line consistent-return\nmodule.exports = function whichBoxedPrimitive(value) {\n\t// eslint-disable-next-line eqeqeq\n\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\treturn null;\n\t}\n\tif (isString(value)) {\n\t\treturn 'String';\n\t}\n\tif (isNumber(value)) {\n\t\treturn 'Number';\n\t}\n\tif (isBoolean(value)) {\n\t\treturn 'Boolean';\n\t}\n\tif (isSymbol(value)) {\n\t\treturn 'Symbol';\n\t}\n\tif (isBigInt(value)) {\n\t\treturn 'BigInt';\n\t}\n};\n","'use strict';\n\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\n\nvar exported;\n\nif (!$WeakMap) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\nif (!exported && !$mapHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isWeakMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x, $mapHas);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x, $setHas);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\n\nvar $WeakSet = GetIntrinsic('%WeakSet%', true);\n\nvar $setHas = callBound('WeakSet.prototype.has', true);\n\nif ($setHas) {\n\tvar $mapHas = callBound('WeakMap.prototype.has', true);\n\n\tmodule.exports = function isWeakSet(x) {\n\t\tif (!x || typeof x !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t$setHas(x, $setHas);\n\t\t\tif ($mapHas) {\n\t\t\t\ttry {\n\t\t\t\t\t$mapHas(x, $mapHas);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\n\t\t} catch (e) {}\n\t\treturn false;\n\t};\n} else {\n\t// eslint-disable-next-line no-unused-vars\n\tmodule.exports = function isWeakSet(x) {\n\t\t// `WeakSet` does not exist, or does not have a `has` method\n\t\treturn false;\n\t};\n}\n","'use strict';\n\nvar isMap = require('is-map');\nvar isSet = require('is-set');\nvar isWeakMap = require('is-weakmap');\nvar isWeakSet = require('is-weakset');\n\nmodule.exports = function whichCollection(value) {\n\tif (value && typeof value === 'object') {\n\t\tif (isMap(value)) {\n\t\t\treturn 'Map';\n\t\t}\n\t\tif (isSet(value)) {\n\t\t\treturn 'Set';\n\t\t}\n\t\tif (isWeakMap(value)) {\n\t\t\treturn 'WeakMap';\n\t\t}\n\t\tif (isWeakSet(value)) {\n\t\t\treturn 'WeakSet';\n\t\t}\n\t}\n\treturn false;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\n\nvar isArrayBuffer = require('is-array-buffer');\n\nmodule.exports = function byteLength(ab) {\n\tif (!isArrayBuffer(ab)) {\n\t\treturn NaN;\n\t}\n\treturn $byteLength ? $byteLength(ab) : ab.byteLength;\n}; // in node < 0.11, byteLength is an own nonconfigurable property\n","'use strict';\n\nvar assign = require('object.assign');\nvar callBound = require('call-bind/callBound');\nvar flags = require('regexp.prototype.flags');\nvar GetIntrinsic = require('get-intrinsic');\nvar getIterator = require('es-get-iterator');\nvar getSideChannel = require('side-channel');\nvar is = require('object-is');\nvar isArguments = require('is-arguments');\nvar isArray = require('isarray');\nvar isArrayBuffer = require('is-array-buffer');\nvar isDate = require('is-date-object');\nvar isRegex = require('is-regex');\nvar isSharedArrayBuffer = require('is-shared-array-buffer');\nvar objectKeys = require('object-keys');\nvar whichBoxedPrimitive = require('which-boxed-primitive');\nvar whichCollection = require('which-collection');\nvar whichTypedArray = require('which-typed-array');\nvar byteLength = require('array-buffer-byte-length');\n\nvar sabByteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\nvar $getTime = callBound('Date.prototype.getTime');\nvar gPO = Object.getPrototypeOf;\nvar $objToString = callBound('Object.prototype.toString');\n\nvar $Set = GetIntrinsic('%Set%', true);\nvar $mapHas = callBound('Map.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSize = callBound('Map.prototype.size', true);\nvar $setAdd = callBound('Set.prototype.add', true);\nvar $setDelete = callBound('Set.prototype.delete', true);\nvar $setHas = callBound('Set.prototype.has', true);\nvar $setSize = callBound('Set.prototype.size', true);\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\nfunction setHasEqualElement(set, val1, opts, channel) {\n var i = getIterator(set);\n var result;\n while ((result = i.next()) && !result.done) {\n if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\n // Remove the matching element to make sure we do not check that again.\n $setDelete(set, result.value);\n return true;\n }\n }\n\n return false;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\nfunction findLooseMatchingPrimitives(prim) {\n if (typeof prim === 'undefined') {\n return null;\n }\n if (typeof prim === 'object') { // Only pass in null as object!\n return void 0;\n }\n if (typeof prim === 'symbol') {\n return false;\n }\n if (typeof prim === 'string' || typeof prim === 'number') {\n // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\n return +prim === +prim; // eslint-disable-line no-implicit-coercion\n }\n return true;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = $mapGet(b, altValue);\n var looseOpts = assign({}, opts, { strict: false });\n if (\n (typeof curB === 'undefined' && !$mapHas(b, altValue))\n // eslint-disable-next-line no-use-before-define\n || !internalDeepEqual(item, curB, looseOpts, channel)\n ) {\n return false;\n }\n // eslint-disable-next-line no-use-before-define\n return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n\n return $setHas(b, altValue) && !$setHas(a, altValue);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\n var i = getIterator(set);\n var result;\n var key2;\n while ((result = i.next()) && !result.done) {\n key2 = result.value;\n if (\n // eslint-disable-next-line no-use-before-define\n internalDeepEqual(key1, key2, opts, channel)\n // eslint-disable-next-line no-use-before-define\n && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\n ) {\n $setDelete(set, key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction internalDeepEqual(actual, expected, options, channel) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n var actualBoxed = whichBoxedPrimitive(actual);\n var expectedBoxed = whichBoxedPrimitive(expected);\n if (actualBoxed !== expectedBoxed) {\n return false;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\n\n var hasActual = channel.has(actual);\n var hasExpected = channel.has(expected);\n var sentinel;\n if (hasActual && hasExpected) {\n if (channel.get(actual) === channel.get(expected)) {\n return true;\n }\n } else {\n sentinel = {};\n }\n if (!hasActual) { channel.set(actual, sentinel); }\n if (!hasExpected) { channel.set(expected, sentinel); }\n\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts, channel);\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n\n return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\n}\n\nfunction setEquiv(a, b, opts, channel) {\n if ($setSize(a) !== $setSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n while ((resultA = iA.next()) && !resultA.done) {\n if (resultA.value && typeof resultA.value === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n } else if (!$setHas(b, resultA.value)) {\n if (opts.strict) { return false; }\n if (!setMightHaveLoosePrim(a, b, resultA.value)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n }\n }\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\n if (resultB.value && typeof resultB.value === 'object') {\n if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && !$setHas(a, resultB.value)\n && !setHasEqualElement(set, resultB.value, opts.strict, channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction mapEquiv(a, b, opts, channel) {\n if ($mapSize(a) !== $mapSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n var key;\n var item1;\n var item2;\n while ((resultA = iA.next()) && !resultA.done) {\n key = resultA.value[0];\n item1 = resultA.value[1];\n if (key && typeof key === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n } else {\n item2 = $mapGet(b, key);\n if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\n if (opts.strict) {\n return false;\n }\n if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n }\n }\n }\n\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n key = resultB.value[0];\n item2 = resultB.value[1];\n if (key && typeof key === 'object') {\n if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\n && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts, channel) {\n /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5], max-lines: [2, 400] */\n var i, key;\n\n if (typeof a !== typeof b) { return false; }\n if (a == null || b == null) { return false; }\n\n if ($objToString(a) !== $objToString(b)) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsArray = isArray(a);\n var bIsArray = isArray(b);\n if (aIsArray !== bIsArray) { return false; }\n\n // TODO: replace when a cross-realm brand check is available\n var aIsError = a instanceof Error;\n var bIsError = b instanceof Error;\n if (aIsError !== bIsError) { return false; }\n if (aIsError || bIsError) {\n if (a.name !== b.name || a.message !== b.message) { return false; }\n }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\n return false;\n }\n\n var aIsDate = isDate(a);\n var bIsDate = isDate(b);\n if (aIsDate !== bIsDate) { return false; }\n if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\n if ($getTime(a) !== $getTime(b)) { return false; }\n }\n if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\n\n var aWhich = whichTypedArray(a);\n var bWhich = whichTypedArray(b);\n if (aWhich !== bWhich) {\n return false;\n }\n if (aWhich || bWhich) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsArrayBuffer = isArrayBuffer(a);\n var bIsArrayBuffer = isArrayBuffer(b);\n if (aIsArrayBuffer !== bIsArrayBuffer) { return false; }\n if (aIsArrayBuffer || bIsArrayBuffer) { // && would work too, because both are true or both false here\n if (byteLength(a) !== byteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n var aIsSAB = isSharedArrayBuffer(a);\n var bIsSAB = isSharedArrayBuffer(b);\n if (aIsSAB !== bIsSAB) { return false; }\n if (aIsSAB || bIsSAB) { // && would work too, because both are true or both false here\n if (sabByteLength(a) !== sabByteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n if (typeof a !== typeof b) { return false; }\n\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; } // eslint-disable-line eqeqeq\n }\n\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\n }\n\n var aCollection = whichCollection(a);\n var bCollection = whichCollection(b);\n if (aCollection !== bCollection) {\n return false;\n }\n if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\n return setEquiv(a, b, opts, channel);\n }\n if (aCollection === 'Map') { // aCollection === bCollection\n return mapEquiv(a, b, opts, channel);\n }\n\n return true;\n}\n\nmodule.exports = function deepEqual(a, b, opts) {\n return internalDeepEqual(a, b, opts, getSideChannel());\n};\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n",null,null,"const connectBrowserAppProps = [\"name\", \"title\", \"version\", \"customProperties\", \"icon\", \"caption\", \"type\"];\nconst fdc3v2AppProps = [\"appId\", \"name\", \"type\", \"details\", \"version\", \"title\", \"tooltip\", \"lang\", \"description\", \"categories\", \"icons\", \"screenshots\", \"contactEmail\", \"moreInfo\", \"publisher\", \"customConfig\", \"hostManifests\", \"interop\", \"localizedVersions\"];\n\n/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nDecoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nDecoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nDecoder.union;\r\n/** See `Decoder.intersection` */\r\nDecoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nDecoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nDecoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nDecoder.succeed;\r\n/** See `Decoder.fail` */\r\nDecoder.fail;\r\n/** See `Decoder.lazy` */\r\nDecoder.lazy;\n\nconst nonEmptyStringDecoder = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nconst nonNegativeNumberDecoder = number().where((num) => num >= 0, \"Expected a non-negative number\");\n\nconst intentDefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n displayName: optional(string()),\n contexts: optional(array(string())),\n customConfig: optional(object())\n});\nconst v2TypeDecoder = oneOf(constant(\"web\"), constant(\"native\"), constant(\"citrix\"), constant(\"onlineNative\"), constant(\"other\"));\nconst v2DetailsDecoder = object({\n url: nonEmptyStringDecoder\n});\nconst v2IconDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder)\n});\nconst v2ScreenshotDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder),\n label: optional(nonEmptyStringDecoder)\n});\nconst v2ListensForIntentDecoder = object({\n contexts: array(nonEmptyStringDecoder),\n displayName: optional(nonEmptyStringDecoder),\n resultType: optional(nonEmptyStringDecoder),\n customConfig: optional(anyJson())\n});\nconst v2IntentsDecoder = object({\n listensFor: optional(dict(v2ListensForIntentDecoder)),\n raises: optional(dict(array(nonEmptyStringDecoder)))\n});\nconst v2UserChannelDecoder = object({\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2AppChannelDecoder = object({\n name: nonEmptyStringDecoder,\n description: optional(nonEmptyStringDecoder),\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2InteropDecoder = object({\n intents: optional(v2IntentsDecoder),\n userChannels: optional(v2UserChannelDecoder),\n appChannels: optional(array(v2AppChannelDecoder))\n});\nconst glue42ApplicationDetailsDecoder = object({\n url: nonEmptyStringDecoder,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\nconst glue42HostManifestsBrowserDecoder = object({\n name: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\")),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n customProperties: optional(anyJson()),\n icon: optional(string()),\n caption: optional(string()),\n details: optional(glue42ApplicationDetailsDecoder),\n intents: optional(array(intentDefinitionDecoder)),\n hidden: optional(boolean())\n});\nconst hostManifestsBrowserDecoder = oneOf(object({\n \"Glue42\": oneOf(glue42HostManifestsBrowserDecoder, anyJson())\n}), anyJson());\nconst v1DefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n appId: nonEmptyStringDecoder,\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n manifest: nonEmptyStringDecoder,\n manifestType: nonEmptyStringDecoder,\n tooltip: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n images: optional(array(object({ url: optional(nonEmptyStringDecoder) }))),\n icons: optional(array(object({ icon: optional(nonEmptyStringDecoder) }))),\n customConfig: anyJson(),\n intents: optional(array(intentDefinitionDecoder))\n});\nconst v2LocalizedDefinitionDecoder = object({\n appId: optional(nonEmptyStringDecoder),\n name: optional(nonEmptyStringDecoder),\n details: optional(v2DetailsDecoder),\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder)\n});\nconst v2DefinitionDecoder = object({\n appId: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder,\n type: v2TypeDecoder,\n details: v2DetailsDecoder,\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder),\n localizedVersions: optional(dict(v2LocalizedDefinitionDecoder))\n});\nconst allDefinitionsDecoder = oneOf(v1DefinitionDecoder, v2DefinitionDecoder);\n\nconst parseDecoderErrorToStringMessage = (error) => {\n return `${error.kind} at ${error.at}: ${JSON.stringify(error.input)}. Reason - ${error.message}`;\n};\n\nclass FDC3Service {\n constructor() {\n this.fdc3ToDesktopDefinitionType = {\n web: \"window\",\n native: \"exe\",\n citrix: \"citrix\",\n onlineNative: \"clickonce\",\n other: \"window\"\n };\n }\n toApi() {\n return {\n isFdc3Definition: this.isFdc3Definition.bind(this),\n parseToBrowserBaseAppData: this.parseToBrowserBaseAppData.bind(this),\n parseToDesktopAppConfig: this.parseToDesktopAppConfig.bind(this)\n };\n }\n isFdc3Definition(definition) {\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n return { isFdc3: false, reason: parseDecoderErrorToStringMessage(decodeRes.error) };\n }\n if (definition.appId && definition.details) {\n return { isFdc3: true, version: \"2.0\" };\n }\n if (definition.manifest) {\n return { isFdc3: true, version: \"1.2\" };\n }\n return { isFdc3: false, reason: \"The passed definition is not FDC3\" };\n }\n parseToBrowserBaseAppData(definition) {\n var _a;\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n const userProperties = this.getUserPropertiesFromDefinition(definition, version);\n const createOptions = { url: this.getUrl(definition, version) };\n let baseApplicationData = {\n name: definition.appId,\n type: \"window\",\n createOptions,\n userProperties: Object.assign(Object.assign({}, userProperties), { intents: version === \"1.2\"\n ? userProperties.intents\n : this.getIntentsFromV2AppDefinition(definition), details: createOptions }),\n title: definition.title,\n version: definition.version,\n icon: this.getIconFromDefinition(definition, version),\n caption: definition.description,\n fdc3: version === \"2.0\" ? Object.assign(Object.assign({}, definition), { definitionVersion: \"2.0\" }) : undefined,\n };\n if ((_a = definition.hostManifests) === null || _a === void 0 ? void 0 : _a[\"Glue42\"]) {\n const decodeRes = glue42HostManifestsBrowserDecoder.run(definition.hostManifests[\"Glue42\"]);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (!Object.keys(decodeRes.result).length) {\n throw new Error(\"Invalid 'hostManifests['Glue42]' key\");\n }\n baseApplicationData = this.mergeBaseAppDataWithGlueManifest(baseApplicationData, decodeRes.result);\n }\n return baseApplicationData;\n }\n parseToDesktopAppConfig(definition) {\n var _a, _b, _c;\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (version === \"1.2\") {\n const fdc3v1Definition = definition;\n return {\n name: fdc3v1Definition.appId,\n type: \"window\",\n details: {\n url: this.getUrl(definition, version)\n },\n version: fdc3v1Definition.version,\n title: fdc3v1Definition.title,\n tooltip: fdc3v1Definition.tooltip,\n caption: fdc3v1Definition.description,\n icon: (_a = fdc3v1Definition.icons) === null || _a === void 0 ? void 0 : _a[0].icon,\n intents: fdc3v1Definition.intents,\n customProperties: {\n manifestType: fdc3v1Definition.manifestType,\n images: fdc3v1Definition.images,\n contactEmail: fdc3v1Definition.contactEmail,\n supportEmail: fdc3v1Definition.supportEmail,\n publisher: fdc3v1Definition.publisher,\n icons: fdc3v1Definition.icons,\n customConfig: fdc3v1Definition.customConfig\n }\n };\n }\n const fdc3v2Definition = definition;\n let desktopDefinition = {\n name: fdc3v2Definition.appId,\n type: this.fdc3ToDesktopDefinitionType[fdc3v2Definition.type],\n details: fdc3v2Definition.details,\n version: fdc3v2Definition.version,\n title: fdc3v2Definition.title,\n tooltip: fdc3v2Definition.tooltip,\n caption: fdc3v2Definition.description,\n icon: this.getIconFromDefinition(fdc3v2Definition, \"2.0\"),\n intents: this.getIntentsFromV2AppDefinition(fdc3v2Definition),\n fdc3: Object.assign(Object.assign({}, fdc3v2Definition), { definitionVersion: \"2.0\" })\n };\n if ((_b = fdc3v2Definition.hostManifests) === null || _b === void 0 ? void 0 : _b[\"Glue42\"]) {\n if (typeof fdc3v2Definition.hostManifests[\"Glue42\"] !== \"object\" || Array.isArray(fdc3v2Definition.hostManifests[\"Glue42\"])) {\n throw new Error(\"Invalid 'hostManifests['Glue42]' key\");\n }\n desktopDefinition = this.mergeDesktopConfigWithGlueManifest(desktopDefinition, (_c = fdc3v2Definition.hostManifests) === null || _c === void 0 ? void 0 : _c[\"Glue42\"]);\n }\n return desktopDefinition;\n }\n getUserPropertiesFromDefinition(definition, version) {\n if (version === \"1.2\") {\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key)));\n }\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key) && !fdc3v2AppProps.includes(key)));\n }\n getUrl(definition, version) {\n var _a, _b;\n let url;\n if (version === \"1.2\") {\n const parsedManifest = JSON.parse(definition.manifest);\n url = ((_a = parsedManifest.details) === null || _a === void 0 ? void 0 : _a.url) || parsedManifest.url;\n }\n else {\n url = (_b = definition.details) === null || _b === void 0 ? void 0 : _b.url;\n }\n if (!url || typeof url !== \"string\") {\n throw new Error(`Invalid FDC3 ${version} definition. Provide valid 'url' under '${version === \"1.2\" ? \"manifest\" : \"details\"}' key`);\n }\n return url;\n }\n getIntentsFromV2AppDefinition(definition) {\n var _a, _b;\n const fdc3Intents = (_b = (_a = definition.interop) === null || _a === void 0 ? void 0 : _a.intents) === null || _b === void 0 ? void 0 : _b.listensFor;\n if (!fdc3Intents) {\n return;\n }\n const intents = Object.entries(fdc3Intents).map((fdc3Intent) => {\n const [intentName, intentData] = fdc3Intent;\n return Object.assign({ name: intentName }, intentData);\n });\n return intents;\n }\n getIconFromDefinition(definition, version) {\n var _a, _b, _c, _d;\n if (version === \"1.2\") {\n return ((_b = (_a = definition.icons) === null || _a === void 0 ? void 0 : _a.find((iconDef) => iconDef.icon)) === null || _b === void 0 ? void 0 : _b.icon) || undefined;\n }\n return ((_d = (_c = definition.icons) === null || _c === void 0 ? void 0 : _c.find((iconDef) => iconDef.src)) === null || _d === void 0 ? void 0 : _d.src) || undefined;\n }\n mergeBaseAppDataWithGlueManifest(baseAppData, hostManifestDefinition) {\n let baseApplicationDefinition = baseAppData;\n if (hostManifestDefinition.details) {\n const details = Object.assign(Object.assign({}, baseAppData.createOptions), hostManifestDefinition.details);\n baseApplicationDefinition.createOptions = details;\n baseApplicationDefinition.userProperties.details = details;\n }\n if (Array.isArray(hostManifestDefinition.intents)) {\n baseApplicationDefinition.userProperties.intents = (baseApplicationDefinition.userProperties.intents || []).concat(hostManifestDefinition.intents);\n }\n baseApplicationDefinition = Object.assign(Object.assign({}, baseApplicationDefinition), hostManifestDefinition);\n delete baseApplicationDefinition.details;\n delete baseApplicationDefinition.intents;\n return baseApplicationDefinition;\n }\n mergeDesktopConfigWithGlueManifest(config, desktopDefinition) {\n const appConfig = Object.assign({}, config, desktopDefinition, { details: Object.assign(Object.assign({}, config.details), desktopDefinition.details) });\n if (Array.isArray(desktopDefinition.intents)) {\n appConfig.intents = (config.intents || []).concat(desktopDefinition.intents);\n }\n return appConfig;\n }\n}\n\nconst decoders$1 = {\n common: {\n nonEmptyStringDecoder,\n nonNegativeNumberDecoder\n },\n fdc3: {\n allDefinitionsDecoder,\n v1DefinitionDecoder,\n v2DefinitionDecoder\n }\n};\n\nvar INTENTS_ERRORS;\n(function (INTENTS_ERRORS) {\n INTENTS_ERRORS[\"USER_CANCELLED\"] = \"User Closed Intents Resolver UI without choosing a handler\";\n INTENTS_ERRORS[\"CALLER_NOT_DEFINED\"] = \"Caller Id is not defined\";\n INTENTS_ERRORS[\"TIMEOUT_HIT\"] = \"Timeout hit\";\n INTENTS_ERRORS[\"INTENT_NOT_FOUND\"] = \"Cannot find Intent\";\n INTENTS_ERRORS[\"HANDLER_NOT_FOUND\"] = \"Cannot find Intent Handler\";\n INTENTS_ERRORS[\"TARGET_INSTANCE_UNAVAILABLE\"] = \"Cannot start Target Instance\";\n INTENTS_ERRORS[\"INTENT_DELIVERY_FAILED\"] = \"Target Instance did not add a listener\";\n INTENTS_ERRORS[\"RESOLVER_UNAVAILABLE\"] = \"Intents Resolver UI unavailable\";\n INTENTS_ERRORS[\"RESOLVER_TIMEOUT\"] = \"User did not choose a handler\";\n INTENTS_ERRORS[\"INVALID_RESOLVER_RESPONSE\"] = \"Intents Resolver UI returned invalid response\";\n INTENTS_ERRORS[\"INTENT_HANDLER_REJECTION\"] = \"Intent Handler function processing the raised intent threw an error or rejected the promise it returned\";\n})(INTENTS_ERRORS || (INTENTS_ERRORS = {}));\n\nclass IoC {\n constructor() {\n this._decoders = decoders$1;\n this._errors = {\n intents: INTENTS_ERRORS\n };\n }\n get fdc3() {\n if (!this._fdc3) {\n this._fdc3 = new FDC3Service().toApi();\n }\n return this._fdc3;\n }\n get decoders() {\n return this._decoders;\n }\n get errors() {\n return this._errors;\n }\n}\n\nconst ioc = new IoC();\nconst fdc3 = ioc.fdc3;\nconst decoders = ioc.decoders;\nconst errors = ioc.errors;\n\nexport { decoders, errors, fdc3 };\n//# sourceMappingURL=utils.es.js.map\n","/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Typeguard for `Ok`.\r\n */\r\nvar isOk = function (r) { return r.ok === true; };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Typeguard for `Err`.\r\n */\r\nvar isErr = function (r) { return r.ok === false; };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Given an array of `Result`s, return the successful values.\r\n */\r\nvar successes = function (results) {\r\n return results.reduce(function (acc, r) { return (r.ok === true ? acc.concat(r.result) : acc); }, []);\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n\r\nvar result = Object.freeze({\r\n\tok: ok,\r\n\tisOk: isOk,\r\n\terr: err,\r\n\tisErr: isErr,\r\n\tasPromise: asPromise,\r\n\twithDefault: withDefault,\r\n\twithException: withException,\r\n\tsuccesses: successes,\r\n\tmap: map,\r\n\tmap2: map2,\r\n\tmapError: mapError,\r\n\tandThen: andThen\r\n});\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/**\r\n * Type guard for `DecoderError`. One use case of the type guard is in the\r\n * `catch` of a promise. Typescript types the error argument of `catch` as\r\n * `any`, so when dealing with a decoder as a promise you may need to\r\n * distinguish between a `DecoderError` and an error string.\r\n */\r\nvar isDecoderError = function (a) {\r\n return a.kind === 'DecoderError' && typeof a.at === 'string' && typeof a.message === 'string';\r\n};\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nvar unknownJson = Decoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nvar tuple = Decoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nvar union = Decoder.union;\r\n/** See `Decoder.intersection` */\r\nvar intersection = Decoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nvar withDefault$1 = Decoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nvar valueAt = Decoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nvar succeed = Decoder.succeed;\r\n/** See `Decoder.fail` */\r\nvar fail = Decoder.fail;\r\n/** See `Decoder.lazy` */\r\nvar lazy = Decoder.lazy;\r\n\r\nexport { result as Result, Decoder, isDecoderError, string, number, boolean, anyJson, unknownJson, constant, object, array, tuple, dict, optional, oneOf, union, intersection, withDefault$1 as withDefault, valueAt, succeed, fail, lazy };\r\n//# sourceMappingURL=index.es5.js.map\r\n",null,"'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nlet nanoid = (size = 21) =>\n crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n byte &= 63;\n if (byte < 36) {\n id += byte.toString(36);\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase();\n } else if (byte > 62) {\n id += '-';\n } else {\n id += '_';\n }\n return id\n }, '');\n\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\ncreateRegistry.default = createRegistry;\nvar lib = createRegistry;\n\nconst SEARCH_QUERY_STATUSES = {\r\n done: \"done\",\r\n inProgress: \"in-progress\",\r\n error: \"error\"\r\n};\r\nconst CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS = {\r\n info: \"info\",\r\n search: \"search\",\r\n cancel: \"cancel\"\r\n};\n\n/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nDecoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nDecoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nDecoder.tuple;\r\n/** See `Decoder.dict` */\r\nDecoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nDecoder.union;\r\n/** See `Decoder.intersection` */\r\nDecoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nDecoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nDecoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nDecoder.succeed;\r\n/** See `Decoder.fail` */\r\nDecoder.fail;\r\n/** See `Decoder.lazy` */\r\nDecoder.lazy;\n\nconst nonEmptyStringDecoder = string().where((s) => s.length > 0, \"Expected a non-empty string\");\r\nconst nonNegativeNumberDecoder = number().where((num) => num >= 0, \"Expected a non-negative number\");\r\nconst searchTypeDecoder = object({\r\n name: nonEmptyStringDecoder,\r\n displayName: optional(nonEmptyStringDecoder)\r\n});\r\nconst providerData = object({\r\n id: nonEmptyStringDecoder,\r\n interopId: nonEmptyStringDecoder,\r\n name: nonEmptyStringDecoder,\r\n appName: optional(nonEmptyStringDecoder),\r\n types: optional(array(searchTypeDecoder))\r\n});\r\nconst providerLimitsDecoder = object({\r\n maxResults: optional(nonNegativeNumberDecoder),\r\n maxResultsPerType: optional(nonNegativeNumberDecoder)\r\n});\r\nconst queryConfigDecoder = object({\r\n search: nonEmptyStringDecoder,\r\n providers: optional(array(providerData)),\r\n types: optional(array(searchTypeDecoder)),\r\n providerLimits: optional(providerLimitsDecoder)\r\n});\r\nconst providerRegistrationConfig = object({\r\n name: nonEmptyStringDecoder,\r\n types: optional(array(searchTypeDecoder))\r\n});\r\nconst operationDecoder = oneOf(constant(\"cancel\"), constant(\"info\"), constant(\"search\"));\r\nconst queryStatusDecoder = oneOf(constant(\"done\"), constant(\"in-progress\"), constant(\"error\"));\r\nconst searchCancelRequestDecoder = object({\r\n id: nonEmptyStringDecoder\r\n});\r\nconst mainActionDecoder = object({\r\n method: nonEmptyStringDecoder,\r\n target: optional(oneOf(object({ instance: nonEmptyStringDecoder }), constant(\"all\"))),\r\n params: optional(anyJson())\r\n});\r\nconst secondaryActionDecoder = object({\r\n name: nonEmptyStringDecoder,\r\n method: nonEmptyStringDecoder,\r\n target: optional(oneOf(object({ instance: nonEmptyStringDecoder }), constant(\"all\"))),\r\n params: optional(anyJson())\r\n});\r\nconst queryResultDecoder = object({\r\n type: searchTypeDecoder,\r\n id: optional(nonEmptyStringDecoder),\r\n displayName: optional(nonEmptyStringDecoder),\r\n description: optional(nonEmptyStringDecoder),\r\n iconURL: optional(nonEmptyStringDecoder),\r\n metadata: optional(anyJson()),\r\n action: optional(mainActionDecoder),\r\n secondaryActions: optional(array(secondaryActionDecoder))\r\n});\r\nconst legacySearchResultItemDecoder = object({\r\n type: string(),\r\n category: optional(string()),\r\n id: optional(string()),\r\n displayName: optional(string()),\r\n description: optional(string()),\r\n iconURL: optional(string()),\r\n action: optional(mainActionDecoder)\r\n});\r\nconst protocolSearchResultsBatchDecoder = object({\r\n items: array(oneOf(queryResultDecoder, legacySearchResultItemDecoder)),\r\n provider: optional(providerData),\r\n queryId: nonEmptyStringDecoder,\r\n status: constant(\"in-progress\")\r\n});\r\nconst protocolSearchCompletedDecoder = object({\r\n items: array(oneOf(queryResultDecoder, legacySearchResultItemDecoder)),\r\n queryId: nonEmptyStringDecoder,\r\n status: constant(\"done\")\r\n});\r\nconst protocolProviderErrorDecoder = object({\r\n items: array(oneOf(queryResultDecoder, legacySearchResultItemDecoder)),\r\n provider: optional(providerData),\r\n queryId: nonEmptyStringDecoder,\r\n errorMessage: nonEmptyStringDecoder,\r\n status: constant(\"error\")\r\n});\n\nclass ClientController {\r\n constructor(logger, glueController, modelFactory) {\r\n this.logger = logger;\r\n this.glueController = glueController;\r\n this.modelFactory = modelFactory;\r\n this.registry = lib();\r\n this.activeQueryLookup = {};\r\n this.queryIdToMasterIdLookup = {};\r\n this.pendingDebounce = [];\r\n this.debounceMS = 0;\r\n }\r\n setDebounceMS(data) {\r\n this.logger.info(`[${data.commandId}] Setting the debounceMS to: ${data.milliseconds}`);\r\n this.debounceMS = data.milliseconds;\r\n this.logger.info(`[${data.commandId}] debounceMS set to: ${data.milliseconds}`);\r\n }\r\n getDebounceMS(data) {\r\n this.logger.info(`[${data.commandId}] Getting the debounceMS`);\r\n return this.debounceMS;\r\n }\r\n query(data, skipDebounce) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.debounceMS && !skipDebounce) {\r\n return this.debounceQuery(data);\r\n }\r\n yield this.glueController.registerMainClientMethod(this.handleProviderCall.bind(this));\r\n const { queryConfig, commandId } = data;\r\n this.logger.info(`[${commandId}] Initiating a query request`);\r\n let allProvidersInfo = yield this.glueController.getAllProvidersInfo();\r\n this.logger.trace(`[${commandId}] Got all available providers: ${JSON.stringify(allProvidersInfo)}`);\r\n if (queryConfig.providers) {\r\n this.logger.info(`[${commandId}] Filtering providers by explicitly allowed providers.`);\r\n allProvidersInfo = this.filterProvidersByAllowList(allProvidersInfo, queryConfig.providers);\r\n }\r\n if (queryConfig.types) {\r\n this.logger.info(`[${commandId}] Filtering providers by explicitly allowed types.`);\r\n allProvidersInfo = this.filterProvidersByAllowedTypes(allProvidersInfo, queryConfig.types);\r\n }\r\n if (!allProvidersInfo.length) {\r\n this.logger.warn(`[${commandId}] There are no providers that can handle the query for ${data.queryConfig.search}`);\r\n }\r\n this.logger.info(`[${commandId}] Sending query request to providers: ${JSON.stringify(allProvidersInfo)}`);\r\n const allQueryResponses = yield this.glueController.sendQueryRequest(queryConfig, allProvidersInfo);\r\n this.logger.info(`[${commandId}] Received responses from the providers: ${JSON.stringify(allQueryResponses)}`);\r\n const masterQueryId = this.generateMasterQueryId();\r\n const queryModel = this.modelFactory.buildClientQueryModel(masterQueryId, this);\r\n this.logger.info(`[${commandId}] The query is in progress with master id: ${masterQueryId}`);\r\n this.activeQueryLookup[masterQueryId] = {\r\n servers: allQueryResponses,\r\n model: queryModel\r\n };\r\n allQueryResponses.forEach((response) => {\r\n this.queryIdToMasterIdLookup[response.queryId] = masterQueryId;\r\n });\r\n if (!allQueryResponses.length) {\r\n setTimeout(() => {\r\n this.registry.execute(`on-query-completed-${masterQueryId}`);\r\n this.cleanUpQuery(masterQueryId);\r\n }, 0);\r\n }\r\n return queryModel.exposeFacade();\r\n });\r\n }\r\n cancelQuery(masterQueryId, commandId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const activeQuery = this.activeQueryLookup[masterQueryId];\r\n if (!activeQuery) {\r\n throw new Error(`[${commandId}] Cannot cancel query: ${masterQueryId}, because this query does not exist`);\r\n }\r\n const interopIds = activeQuery.servers;\r\n this.logger.info(`[${commandId}] Sending cancel query requests`);\r\n yield Promise.all(interopIds.map((serverId) => {\r\n this.logger.trace(`[${commandId}] Sending cancel query request to ${serverId.interopId} with queryId: ${serverId.queryId}`);\r\n return this.glueController.sendQueryCancelRequest({ id: serverId.queryId }, { instance: serverId.interopId });\r\n }));\r\n this.logger.info(`[${commandId}] The query was cancelled`);\r\n });\r\n }\r\n processClientOnResults(data) {\r\n return this.registry.add(`on-query-results-${data.masterQueryId}`, data.callback);\r\n }\r\n processClientOnCompleted(data) {\r\n return this.registry.add(`on-query-completed-${data.masterQueryId}`, data.callback);\r\n }\r\n processClientOnError(data) {\r\n return this.registry.add(`on-query-error-${data.masterQueryId}`, data.callback);\r\n }\r\n handleProviderCall(args) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const { status } = args;\r\n const validatedOperation = queryStatusDecoder.runWithException(status);\r\n const commandId = nanoid(10);\r\n switch (validatedOperation) {\r\n case SEARCH_QUERY_STATUSES.done:\r\n return this.handleQueryCompleted({ completedConfig: args, commandId });\r\n case SEARCH_QUERY_STATUSES.inProgress:\r\n return this.handleQueryResults({ resultsBatch: args, commandId });\r\n case SEARCH_QUERY_STATUSES.error:\r\n return this.handleQueryError({ error: args, commandId });\r\n default:\r\n throw new Error(`Unrecognized status: ${status}`);\r\n }\r\n });\r\n }\r\n handleQueryResults(data) {\r\n var _a, _b;\r\n const { resultsBatch, commandId } = data;\r\n this.logger.trace(`[${commandId}] Processing a results batch from provider: ${(_a = resultsBatch.provider) === null || _a === void 0 ? void 0 : _a.name} with id: ${(_b = resultsBatch.provider) === null || _b === void 0 ? void 0 : _b.id}`);\r\n const verifiedResultsBatch = protocolSearchResultsBatchDecoder.runWithException(resultsBatch);\r\n const masterQueryId = this.queryIdToMasterIdLookup[verifiedResultsBatch.queryId];\r\n if (!masterQueryId) {\r\n this.logger.warn(`[${commandId}] Received results for an unknown query. Provider ${JSON.stringify(verifiedResultsBatch.provider)}, items: ${JSON.stringify(verifiedResultsBatch.items)}`);\r\n return;\r\n }\r\n this.logger.trace(`[${commandId}] The results batch is validated, forwarding to the callbacks`);\r\n const translatedResults = this.checkTransformLegacyResults(verifiedResultsBatch.items);\r\n const results = {\r\n provider: verifiedResultsBatch.provider,\r\n results: translatedResults\r\n };\r\n this.registry.execute(`on-query-results-${masterQueryId}`, results);\r\n }\r\n handleQueryCompleted(data) {\r\n const { completedConfig, commandId } = data;\r\n this.logger.trace(`[${commandId}] Processing a query completed message from query id: ${completedConfig.queryId}`);\r\n const verifiedCompleteConfig = protocolSearchCompletedDecoder.runWithException(completedConfig);\r\n const masterQueryId = this.queryIdToMasterIdLookup[verifiedCompleteConfig.queryId];\r\n if (!masterQueryId) {\r\n this.logger.warn(`[${commandId}] Received completed message for an unknown query. Provider query id: ${JSON.stringify(verifiedCompleteConfig.queryId)}`);\r\n return;\r\n }\r\n if (verifiedCompleteConfig.items.length) {\r\n const translatedResults = this.checkTransformLegacyResults(verifiedCompleteConfig.items);\r\n const results = {\r\n results: translatedResults\r\n };\r\n this.registry.execute(`on-query-results-${masterQueryId}`, results);\r\n }\r\n delete this.queryIdToMasterIdLookup[verifiedCompleteConfig.queryId];\r\n const activeQuery = this.activeQueryLookup[masterQueryId];\r\n activeQuery.servers = activeQuery.servers.filter((server) => server.queryId !== verifiedCompleteConfig.queryId);\r\n if (activeQuery.servers.length) {\r\n this.logger.trace(`[${commandId}] Waiting for more providers to complete`);\r\n return;\r\n }\r\n this.logger.trace(`[${commandId}] All providers are done, marking this query as completed`);\r\n this.registry.execute(`on-query-completed-${masterQueryId}`);\r\n this.cleanUpQuery(masterQueryId);\r\n }\r\n handleQueryError(data) {\r\n const { error, commandId } = data;\r\n this.logger.trace(`[${commandId}] Processing an error message from query: ${error.queryId}`);\r\n const validatedError = protocolProviderErrorDecoder.runWithException(error);\r\n const masterQueryId = this.queryIdToMasterIdLookup[validatedError.queryId];\r\n if (!masterQueryId) {\r\n this.logger.warn(`[${commandId}] Received error message for an unknown query. Provider query id: ${JSON.stringify(validatedError.queryId)} and message: ${JSON.stringify(validatedError.errorMessage)}`);\r\n return;\r\n }\r\n const queryError = {\r\n error: validatedError.errorMessage,\r\n provider: validatedError.provider\r\n };\r\n this.registry.execute(`on-query-error-${masterQueryId}`, queryError);\r\n }\r\n filterProvidersByAllowList(servers, allowed) {\r\n const allowedLookup = allowed.reduce((lookup, allowedEntry) => {\r\n lookup[allowedEntry.id] = true;\r\n return lookup;\r\n }, {});\r\n return servers.filter((server) => {\r\n const serverProviders = server.info.providers;\r\n return serverProviders.some((provider) => allowedLookup[provider.id]);\r\n });\r\n }\r\n filterProvidersByAllowedTypes(servers, allowed) {\r\n const allowedLookup = allowed.reduce((lookup, allowedEntry) => {\r\n lookup[allowedEntry.name] = true;\r\n return lookup;\r\n }, {});\r\n return servers.filter((server) => {\r\n const allTypes = server.info.supportedTypes;\r\n if (allTypes.some((searchType) => searchType === \"*\")) {\r\n return true;\r\n }\r\n if (!allTypes || !allTypes.length) {\r\n return true;\r\n }\r\n return allTypes.some((supportedType) => allowedLookup[supportedType]);\r\n });\r\n }\r\n generateMasterQueryId() {\r\n const queryId = nanoid(10);\r\n if (this.activeQueryLookup[queryId]) {\r\n return this.generateMasterQueryId();\r\n }\r\n return queryId;\r\n }\r\n cleanUpQuery(masterQueryId) {\r\n this.registry.clearKey(`on-query-results-${masterQueryId}`);\r\n this.registry.clearKey(`on-query-completed-${masterQueryId}`);\r\n this.registry.clearKey(`on-query-error-${masterQueryId}`);\r\n delete this.activeQueryLookup[masterQueryId];\r\n }\r\n debounceQuery(data) {\r\n return new Promise((res, rej) => {\r\n clearTimeout(this.debounceTimer);\r\n this.debounceTimer = setTimeout(() => {\r\n const currentPending = [...this.pendingDebounce];\r\n this.pendingDebounce = [];\r\n this.query(data, true)\r\n .then((query) => currentPending.forEach(({ resolve }) => resolve(query)))\r\n .catch((error) => currentPending.forEach(({ reject }) => reject(error)));\r\n }, this.debounceMS);\r\n this.pendingDebounce.push({ resolve: res, reject: rej });\r\n });\r\n }\r\n checkTransformLegacyResults(items) {\r\n if (!items.length) {\r\n return [];\r\n }\r\n const sampleItem = items[0];\r\n if (!sampleItem || typeof sampleItem.type === \"object\") {\r\n return items;\r\n }\r\n return items.map((item) => {\r\n return {\r\n type: { name: item.type, displayName: item.category },\r\n id: item.id,\r\n displayName: item.displayName,\r\n description: item.description,\r\n iconURL: item.iconURL,\r\n action: item.action\r\n };\r\n });\r\n }\r\n}\n\nconst MAIN_PROVIDER_METHOD_NAME = \"T42.Search.Provider\";\r\nconst MAIN_CLIENT_METHOD_NAME = \"T42.Search.Client\";\r\nconst SEQUELIZER_INTERVAL_MS = 10;\r\nconst FLUSH_SEQUELIZER_INTERVAL_MS = 10;\r\nconst FLUSH_TIMEOUT_MS = 100;\r\nconst STALE_QUERY_TIMEOUT_MS = 900000;\n\nclass GlueController {\r\n constructor(glue) {\r\n this.glue = glue;\r\n }\r\n get myAppName() {\r\n return this.glue.interop.instance.applicationName;\r\n }\r\n get myInteropId() {\r\n return this.glue.interop.instance.instance;\r\n }\r\n registerMainProviderMethod(handler) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const mainMethodStatus = this.checkMyMethodExists(MAIN_PROVIDER_METHOD_NAME);\r\n if (mainMethodStatus.exists) {\r\n return;\r\n }\r\n yield this.glue.interop.register(MAIN_PROVIDER_METHOD_NAME, handler);\r\n });\r\n }\r\n registerMainClientMethod(handler) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const mainMethodStatus = this.checkMyMethodExists(MAIN_CLIENT_METHOD_NAME);\r\n if (mainMethodStatus.exists) {\r\n return;\r\n }\r\n yield this.glue.interop.register(MAIN_CLIENT_METHOD_NAME, handler);\r\n });\r\n }\r\n clearMainProviderMethod() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.glue.interop.unregister(MAIN_PROVIDER_METHOD_NAME);\r\n });\r\n }\r\n sendClientResultsBatch(batch, clientInstanceId, queryId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const interopArguments = {\r\n items: batch.results,\r\n provider: batch.provider,\r\n queryId,\r\n status: SEARCH_QUERY_STATUSES.inProgress\r\n };\r\n yield this.glue.interop.invoke(MAIN_CLIENT_METHOD_NAME, interopArguments, { instance: clientInstanceId });\r\n });\r\n }\r\n sendClientQueueCompleted(clientInstanceId, queryId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const interopArguments = {\r\n items: [],\r\n queryId,\r\n status: SEARCH_QUERY_STATUSES.done\r\n };\r\n yield this.glue.interop.invoke(MAIN_CLIENT_METHOD_NAME, interopArguments, { instance: clientInstanceId });\r\n });\r\n }\r\n sendClientErrorMessage(error, clientInstanceId, queryId, provider) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const interopArguments = {\r\n items: [],\r\n provider,\r\n errorMessage: error,\r\n queryId,\r\n status: SEARCH_QUERY_STATUSES.error\r\n };\r\n yield this.glue.interop.invoke(MAIN_CLIENT_METHOD_NAME, interopArguments, { instance: clientInstanceId });\r\n });\r\n }\r\n sendQueryRequest(queryConfig, instances) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!instances.length) {\r\n return [];\r\n }\r\n const target = instances.map((inst) => ({ instance: inst.interopId }));\r\n const invokeArgs = Object.assign({ operation: CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.search, apiVersion: \"1\" }, queryConfig);\r\n const response = yield this.glue.interop.invoke(MAIN_PROVIDER_METHOD_NAME, invokeArgs, target);\r\n const allReturned = response.all_return_values || [];\r\n return allReturned.map((returnValue) => {\r\n var _a;\r\n return {\r\n interopId: (_a = returnValue.executed_by) === null || _a === void 0 ? void 0 : _a.instance,\r\n queryId: returnValue.returned.id\r\n };\r\n });\r\n });\r\n }\r\n sendQueryCancelRequest(request, instance) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const args = {\r\n operation: CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.cancel,\r\n id: request.id\r\n };\r\n yield this.glue.interop.invoke(MAIN_PROVIDER_METHOD_NAME, args, instance);\r\n });\r\n }\r\n getAllProvidersInfo() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.glue.interop.methods().every((method) => method.name !== MAIN_PROVIDER_METHOD_NAME)) {\r\n return [];\r\n }\r\n const args = {\r\n operation: CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.info\r\n };\r\n const response = yield this.glue.interop.invoke(MAIN_PROVIDER_METHOD_NAME, args, \"all\");\r\n const allReturned = response.all_return_values || [];\r\n return allReturned.map((returnValue) => {\r\n var _a, _b, _c, _d, _e;\r\n const isLegacy = typeof returnValue.returned.apiVersion === \"undefined\";\r\n const info = isLegacy ? {\r\n supportedTypes: returnValue.returned.supportedTypes,\r\n apiVersion: returnValue.returned.apiVersion,\r\n providers: [{\r\n interopId: (_a = returnValue.executed_by) === null || _a === void 0 ? void 0 : _a.instance,\r\n id: (_b = returnValue.executed_by) === null || _b === void 0 ? void 0 : _b.instance,\r\n name: (_c = returnValue.executed_by) === null || _c === void 0 ? void 0 : _c.instance,\r\n appName: (_d = response.executed_by) === null || _d === void 0 ? void 0 : _d.application,\r\n types: returnValue.returned.supportedTypes.map((t) => ({ name: t }))\r\n }]\r\n } : returnValue.returned;\r\n return {\r\n interopId: (_e = returnValue.executed_by) === null || _e === void 0 ? void 0 : _e.instance,\r\n info\r\n };\r\n });\r\n });\r\n }\r\n checkMyMethodExists(methodName) {\r\n const myMethods = this.glue.interop.methodsForInstance({ instance: this.glue.interop.instance.instance });\r\n return { exists: myMethods.some((method) => method.name === methodName) };\r\n }\r\n}\n\nclass MainController {\r\n constructor(logger, glueController, clientController, providerController) {\r\n this.logger = logger;\r\n this.glueController = glueController;\r\n this.clientController = clientController;\r\n this.providerController = providerController;\r\n }\r\n setDebounceMS(data) {\r\n this.logger.info(`[${data.commandId}] Starting setDebounceMS operation with duration ${data.milliseconds}`);\r\n this.clientController.setDebounceMS(data);\r\n this.logger.info(`[${data.commandId}] Operation setDebounceMS with duration ${data.milliseconds} completed`);\r\n }\r\n getDebounceMS(data) {\r\n this.logger.info(`[${data.commandId}] Starting getDebounceMS operation.`);\r\n return this.clientController.getDebounceMS(data);\r\n }\r\n query(data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.logger.info(`[${data.commandId}] Starting query operation with config ${JSON.stringify(data.queryConfig)}`);\r\n if (Array.isArray(data.queryConfig.providers) && !data.queryConfig.providers.length) {\r\n throw new Error(\"Cannot sent a query with a defined empty array of providers, because this is an impossible query for complete.\");\r\n }\r\n if (Array.isArray(data.queryConfig.types) && !data.queryConfig.types.length) {\r\n throw new Error(\"Cannot sent a query with a defined empty array of types, because this is an impossible query for complete.\");\r\n }\r\n const query = yield this.clientController.query(data);\r\n this.logger.info(`[${data.commandId}] Operation query with config ${JSON.stringify(data.queryConfig)} completed.`);\r\n return query;\r\n });\r\n }\r\n registerProvider(data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.logger.info(`[${data.commandId}] Starting registerProvider operation with config ${JSON.stringify(data.config)}`);\r\n const provider = yield this.providerController.processRegisterProvider(data);\r\n this.logger.info(`[${data.commandId}] Operation registerProvider with config ${JSON.stringify(data.config)} completed.`);\r\n return provider;\r\n });\r\n }\r\n providers(data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.logger.info(`[${data.commandId}] Starting providers operation.`);\r\n const allProvidersInfo = yield this.glueController.getAllProvidersInfo();\r\n const allProvidersData = allProvidersInfo.flatMap((provInfo) => provInfo.info.providers);\r\n this.logger.info(`[${data.commandId}] Operation providers completed.`);\r\n return allProvidersData;\r\n });\r\n }\r\n types(data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.logger.info(`[${data.commandId}] Starting types operation.`);\r\n const allProvidersInfo = yield this.glueController.getAllProvidersInfo();\r\n const allProvidersData = allProvidersInfo.flatMap((provInfo) => provInfo.info.providers);\r\n const allSupportedTypes = allProvidersData.filter((provData) => !!provData.types).flatMap((provData) => provData.types);\r\n const uniqueSupportedTypes = [...new Set(allSupportedTypes)];\r\n this.logger.info(`[${data.commandId}] Operation types completed.`);\r\n return uniqueSupportedTypes;\r\n });\r\n }\r\n}\n\nconst extractErrorMsg = (error) => {\r\n const stringError = typeof error === \"string\" ?\r\n error :\r\n error.message ? JSON.stringify(error.message) :\r\n JSON.stringify(error);\r\n return stringError;\r\n};\n\nclass ProviderController {\r\n constructor(logger, glueController, sequelizer, limitsTracker, modelsFactory) {\r\n this.logger = logger;\r\n this.glueController = glueController;\r\n this.sequelizer = sequelizer;\r\n this.limitsTracker = limitsTracker;\r\n this.modelsFactory = modelsFactory;\r\n this.registry = lib();\r\n this.providersModels = {};\r\n this.activeQueries = {};\r\n }\r\n processRegisterProvider(data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const { config, commandId } = data;\r\n this.logger.info(`[${commandId}] enqueueing the provider registration process with config: ${JSON.stringify(config)}`);\r\n const result = yield this.sequelizer.enqueue(() => __awaiter(this, void 0, void 0, function* () {\r\n const allProvidersInfo = yield this.glueController.getAllProvidersInfo();\r\n const allProvidersData = allProvidersInfo.flatMap((provInfo) => provInfo.info.providers);\r\n if (allProvidersData.some((providerData) => providerData && providerData.name === config.name)) {\r\n throw new Error(`Cannot register a new provider with name: ${config.name}, because there already is a provider with this name`);\r\n }\r\n yield this.glueController.registerMainProviderMethod(this.handleSearchQueryRequest.bind(this));\r\n const modelData = {\r\n id: nanoid(10),\r\n name: config.name,\r\n interopId: this.glueController.myInteropId,\r\n appName: this.glueController.myAppName,\r\n types: config.types\r\n };\r\n const model = this.modelsFactory.buildProviderModel(modelData, this);\r\n this.providersModels[modelData.id] = model;\r\n return model.exposeFacade();\r\n }));\r\n this.logger.info(`[${commandId}] the provider with name: ${config.name} has been registered.`);\r\n return result;\r\n });\r\n }\r\n processProviderOnQuery(data) {\r\n return this.registry.add(`on-search-query-${data.id}`, data.callback);\r\n }\r\n processProviderOnQueryCancel(data) {\r\n return this.registry.add(`on-cancel-query-${data.id}`, data.callback);\r\n }\r\n processProviderUnregister(data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.logger.info(`[${data.commandId}] enqueueing the provider un-registration with id: ${data.id}`);\r\n yield this.sequelizer.enqueue(() => __awaiter(this, void 0, void 0, function* () {\r\n this.cleanUpProvider(data.id, data.commandId);\r\n if (Object.keys(this.providersModels).length) {\r\n return;\r\n }\r\n yield this.glueController.clearMainProviderMethod();\r\n }));\r\n this.logger.info(`[${data.commandId}] the provider un-registration with id: ${data.id} completed`);\r\n });\r\n }\r\n processProviderQueryDone(command) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const { commandId, identification } = command;\r\n (_a = this.activeQueries[identification.queryId]) === null || _a === void 0 ? void 0 : _a.publisher.syncSuspendProvider(identification.providerId, commandId);\r\n yield this.sequelizer.enqueue(() => __awaiter(this, void 0, void 0, function* () {\r\n this.logger.trace(`[${commandId}] Processing a query done command with identification: ${JSON.stringify(identification)}`);\r\n const activeQuery = this.activeQueries[identification.queryId];\r\n if (!activeQuery) {\r\n this.logger.warn(`[${commandId}] Cannot mark provider: ${identification.providerId} done with query ${identification.queryId}, because there is no active query with this id`);\r\n return;\r\n }\r\n yield this.cleanUpProviderQuery(identification.queryId, identification.providerId, commandId);\r\n if (activeQuery.providersAtWork.length) {\r\n this.logger.trace(`[${commandId}] Query done command completed, but there are more providers still at work.`);\r\n return;\r\n }\r\n this.cleanUpQuery(identification.queryId, commandId);\r\n this.logger.trace(`[${commandId}] Query is completed, signalling.`);\r\n }));\r\n });\r\n }\r\n processProviderQueryError(command) {\r\n var _a;\r\n const { commandId, identification, error } = command;\r\n this.logger.warn(`[${commandId}] Processing an error sent by provider: ${identification.providerId} for query id: ${identification.queryId} -> ${error}`);\r\n (_a = this.activeQueries[identification.queryId]) === null || _a === void 0 ? void 0 : _a.publisher.markProviderError(command);\r\n return this.processProviderQueryDone(command);\r\n }\r\n processProviderQueryResult(command) {\r\n const { commandId, identification } = command;\r\n const activeQuery = this.activeQueries[identification.queryId];\r\n if (!activeQuery) {\r\n const errorMessage = `Will not send this result to the client, because there is no active query with id ${identification.queryId}. Most likely this query was cancelled.`;\r\n this.logger.warn(`[${command}] ${errorMessage}`);\r\n throw new Error(errorMessage);\r\n }\r\n if (activeQuery.publisher.checkProviderSuspended(identification.providerId)) {\r\n const errorMessage = `Will not send this result to the client, because there is no info about this provider in the active query with id ${identification.queryId}. Most likely this query was marked as done by this provider already.`;\r\n this.logger.warn(`[${command}] ${errorMessage}`);\r\n throw new Error(errorMessage);\r\n }\r\n const requestedTypes = activeQuery.requestedTypes;\r\n if (requestedTypes && requestedTypes.every((searchType) => searchType.name !== command.result.type.name)) {\r\n const errorMessage = `Will not send this result to the client, because this result has a defined type: ${command.result.type.name} which is not in the explicitly requested list of types by the client.`;\r\n this.logger.warn(`[${command}] ${errorMessage}`);\r\n throw new Error(errorMessage);\r\n }\r\n const testResult = this.limitsTracker.testResultLimit(command);\r\n if (testResult === null || testResult === void 0 ? void 0 : testResult.maxLimitHit) {\r\n const errorMessage = `Will not process this result from provider ${command.identification.providerId}, because this provider has reached the max results limit set by the client. This provider cannot send more result, marking it as done.`;\r\n this.logger.info(errorMessage);\r\n setTimeout(() => this.processProviderQueryDone(command), 0);\r\n throw new Error(errorMessage);\r\n }\r\n if (testResult === null || testResult === void 0 ? void 0 : testResult.maxLimitPerTypeHit) {\r\n const errorMessage = `Will not process this result from provider ${command.identification.providerId}, because this provider has reached the max results limit per type as set by the client.`;\r\n this.logger.info(errorMessage);\r\n throw new Error(errorMessage);\r\n }\r\n this.logger.trace(`[${commandId}] An active query for query ${identification.queryId} was found and the provider is within limits, queueing the result`);\r\n this.limitsTracker.update(command);\r\n activeQuery.publisher.queueResult(command);\r\n this.logger.trace(`[${commandId}] The query result was queued successfully.`);\r\n }\r\n handleSearchQueryRequest(args, caller) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const { operation } = args;\r\n const validatedOperation = operationDecoder.runWithException(operation);\r\n const commandId = nanoid(10);\r\n switch (validatedOperation) {\r\n case CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.info:\r\n return this.handleInfoOperation({ commandId });\r\n case CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.search:\r\n return this.handleSearchOperation({ args, commandId }, caller);\r\n case CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.cancel:\r\n return this.handleCancelOperation({ args, commandId });\r\n default:\r\n throw new Error(`Unrecognized operation: ${operation}`);\r\n }\r\n });\r\n }\r\n handleInfoOperation(request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.logger.info(`[${request.commandId}] handling an info operation`);\r\n const allSupportedTypes = Object.values(this.providersModels).flatMap((providerModel) => providerModel.myProviderData.types || []);\r\n const uniqueSupportedTypes = [...new Set(allSupportedTypes)];\r\n const hasWildCardTypeProvider = Object.values(this.providersModels).some((providerModel) => !providerModel.myProviderData.types);\r\n if (hasWildCardTypeProvider) {\r\n uniqueSupportedTypes.push({ name: \"*\" });\r\n }\r\n const providers = Object.values(this.providersModels).map((providerModel) => providerModel.myProviderData);\r\n const response = {\r\n supportedTypes: uniqueSupportedTypes.map((supportedType) => supportedType.name),\r\n providers: providers,\r\n apiVersion: \"1\"\r\n };\r\n this.logger.info(`[${request.commandId}] responding to an info operation with: ${JSON.stringify(response)}`);\r\n return response;\r\n });\r\n }\r\n handleSearchOperation(request, caller) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const commandId = request.commandId;\r\n const queryId = this.generateQueryId();\r\n this.logger.info(`[${commandId}] Processing search operation with queryId: ${queryId} request details: ${JSON.stringify(request.args)}`);\r\n const isLegacyRequest = this.checkRequestLegacy(request.args);\r\n const validatedRequest = this.prepareRequest(request.args, isLegacyRequest, commandId);\r\n this.logger.info(`[${commandId}] Search operation with queryId: ${queryId} is validated. Creating an active query and enqueueing calling the providers.`);\r\n this.activeQueries[queryId] = {\r\n queryId,\r\n callerInstanceId: caller.instance,\r\n providersAtWork: [],\r\n requestedTypes: validatedRequest.types,\r\n publisher: this.modelsFactory.buildPublisher(caller.instance, queryId, isLegacyRequest),\r\n staleTimer: this.setClearStaleQueryTimer(queryId)\r\n };\r\n if (validatedRequest.providerLimits) {\r\n this.limitsTracker.enableTracking(validatedRequest.providerLimits, queryId);\r\n }\r\n setTimeout(() => {\r\n this.sequelizer.enqueue(() => __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n this.logger.info(`[${commandId}] Calling the providers.`);\r\n this.callProviders(validatedRequest, queryId, commandId);\r\n }\r\n catch (error) {\r\n this.logger.error(`[${commandId}] Error calling the providers: ${extractErrorMsg(error)}`);\r\n }\r\n }));\r\n }, 0);\r\n this.logger.info(`[${commandId}] Search operation with queryID: ${queryId} processed successfully.`);\r\n return { id: queryId };\r\n });\r\n }\r\n handleCancelOperation(request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.sequelizer.enqueue(() => __awaiter(this, void 0, void 0, function* () {\r\n const validation = searchCancelRequestDecoder.run(request.args);\r\n if (!validation.ok) {\r\n const errorMsg = `Cannot process a cancel request, because of validation error: ${JSON.stringify(validation.error)}`;\r\n this.logger.warn(`[${request.commandId}] ${errorMsg}`);\r\n throw new Error(errorMsg);\r\n }\r\n const validatedRequest = validation.result;\r\n const activeQuery = this.activeQueries[validatedRequest.id];\r\n if (!activeQuery) {\r\n return;\r\n }\r\n clearTimeout(activeQuery.staleTimer);\r\n activeQuery.publisher.cancel(request.commandId);\r\n delete this.activeQueries[validatedRequest.id];\r\n activeQuery.providersAtWork.forEach((provider) => this.registry.execute(`on-cancel-query-${provider.myProviderData.id}`, { id: validatedRequest.id }));\r\n }));\r\n });\r\n }\r\n generateQueryId() {\r\n const queryId = nanoid(10);\r\n if (this.activeQueries[queryId]) {\r\n return this.generateQueryId();\r\n }\r\n return queryId;\r\n }\r\n translateLegacySearchRequest(legacyRequest) {\r\n var _a;\r\n return {\r\n search: legacyRequest.search,\r\n types: (_a = legacyRequest.types) === null || _a === void 0 ? void 0 : _a.map((searchType) => ({ name: searchType })),\r\n providerLimits: {\r\n maxResults: legacyRequest.limit,\r\n maxResultsPerType: legacyRequest.categoryLimit\r\n }\r\n };\r\n }\r\n checkRequestLegacy(searchRequest) {\r\n return typeof searchRequest.apiVersion === \"undefined\";\r\n }\r\n callProviders(validatedRequest, queryId, commandId) {\r\n let providers = validatedRequest.providers ?\r\n this.getFilteredProviderModels(validatedRequest.providers)\r\n : Object.values(this.providersModels);\r\n this.logger.trace(`[${commandId}] initial providers filtration yielded: ${JSON.stringify(providers.map((p) => p.myProviderData.name).join(\", \"))}`);\r\n providers = validatedRequest.types ? this.getFilteredProvidersBySearchTypes(providers, validatedRequest.types) : providers;\r\n this.logger.trace(`[${commandId}] search type providers filtration yielded: ${JSON.stringify(providers.map((p) => p.myProviderData.name).join(\", \"))}`);\r\n this.activeQueries[queryId].publisher.configureProviders(providers);\r\n this.activeQueries[queryId].providersAtWork.push(...providers);\r\n providers.forEach((provider) => this.callProvider(provider, validatedRequest, queryId, commandId));\r\n }\r\n callProvider(provider, validatedRequest, queryId, commandId) {\r\n const queryModel = this.modelsFactory.buildProviderQueryModel(validatedRequest, { queryId, providerId: provider.myProviderData.id }, this);\r\n const queryFacade = queryModel.exposeFacade();\r\n this.logger.info(`[${commandId}] The query facade for provider: ${provider.myProviderData.id} with name ${provider.myProviderData.name} is ready, raising the event for query ID: ${queryId}.`);\r\n this.registry.execute(`on-search-query-${provider.myProviderData.id}`, queryFacade);\r\n }\r\n getFilteredProviderModels(providers) {\r\n const filtered = providers.reduce((providers, provider) => {\r\n if (this.providersModels[provider.id]) {\r\n providers.push(this.providersModels[provider.id]);\r\n }\r\n return providers;\r\n }, []);\r\n return filtered;\r\n }\r\n getFilteredProvidersBySearchTypes(providers, searchTypes) {\r\n const filtered = providers.filter((provider) => {\r\n var _a;\r\n if (!provider.myProviderData.types || !provider.myProviderData.types.length) {\r\n return true;\r\n }\r\n return (_a = provider.myProviderData.types) === null || _a === void 0 ? void 0 : _a.some((providerSearchType) => searchTypes.some((searchType) => searchType.name === providerSearchType.name));\r\n });\r\n return filtered;\r\n }\r\n setClearStaleQueryTimer(queryId) {\r\n return setTimeout(() => {\r\n const commandId = nanoid(10);\r\n this.logger.info(`[${commandId}] Stale query timer is activated for queryId: ${queryId}`);\r\n const activeQuery = this.activeQueries[queryId];\r\n if (!activeQuery) {\r\n this.logger.info(`[${commandId}] No active query was found, this was a false activation.`);\r\n return;\r\n }\r\n this.logger.info(`[${commandId}] force-marking the query as done`);\r\n this.cleanUpQuery(queryId, commandId);\r\n this.logger.info(`[${commandId}] the stale query was cleared.`);\r\n }, STALE_QUERY_TIMEOUT_MS);\r\n }\r\n prepareRequest(searchRequest, isLegacyRequest, commandId) {\r\n const parsedRequest = isLegacyRequest ? this.translateLegacySearchRequest(searchRequest) : searchRequest;\r\n const validation = queryConfigDecoder.run(parsedRequest);\r\n if (!validation.ok) {\r\n const errorMsg = `Cannot process a search request, because of validation error: ${JSON.stringify(validation.error)}`;\r\n this.logger.warn(`[${commandId}] ${errorMsg}`);\r\n throw new Error(errorMsg);\r\n }\r\n const validatedRequest = validation.result;\r\n return validatedRequest;\r\n }\r\n cleanUpQuery(queryId, commandId) {\r\n const activeQuery = this.activeQueries[queryId];\r\n clearTimeout(activeQuery.staleTimer);\r\n activeQuery.publisher.cleanPublisher(commandId);\r\n delete this.activeQueries[queryId];\r\n this.limitsTracker.cleanTracking(queryId);\r\n }\r\n cleanUpProvider(providerId, commandId) {\r\n this.registry.clearKey(`on-search-query-${providerId}`);\r\n this.registry.clearKey(`on-cancel-query-${providerId}`);\r\n delete this.providersModels[providerId];\r\n const queriesWithProvider = Object.values(this.activeQueries).filter((query) => !query.publisher.checkProviderSuspended(providerId));\r\n queriesWithProvider.forEach((query) => {\r\n this.processProviderQueryDone({\r\n identification: {\r\n queryId: query.queryId,\r\n providerId\r\n },\r\n commandId\r\n });\r\n });\r\n }\r\n cleanUpProviderQuery(queryId, providerId, commandId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const activeQuery = this.activeQueries[queryId];\r\n if (!activeQuery) {\r\n this.logger.warn(`[${commandId}] Cannot clean up a provider query ${queryId} for provider ${providerId} because there is no such active query`);\r\n return;\r\n }\r\n activeQuery.providersAtWork = activeQuery.providersAtWork.filter((provider) => provider.myProviderData.id !== providerId);\r\n yield activeQuery.publisher.markProviderDone(providerId, commandId);\r\n });\r\n }\r\n}\n\nvar version = \"2.2.0\";\n\nclass SearchFacade {\r\n constructor(main) {\r\n this.main = main;\r\n }\r\n exposeApi() {\r\n const api = {\r\n version,\r\n setDebounceMS: this.setDebounceMS.bind(this),\r\n getDebounceMS: this.getDebounceMS.bind(this),\r\n listProviders: this.providers.bind(this),\r\n listTypes: this.types.bind(this),\r\n query: this.query.bind(this),\r\n registerProvider: this.registerProvider.bind(this)\r\n };\r\n return Object.freeze(api);\r\n }\r\n setDebounceMS(milliseconds) {\r\n nonNegativeNumberDecoder.runWithException(milliseconds);\r\n const commandId = nanoid(10);\r\n return this.main.setDebounceMS({ milliseconds, commandId });\r\n }\r\n getDebounceMS() {\r\n const commandId = nanoid(10);\r\n return this.main.getDebounceMS({ commandId });\r\n }\r\n providers() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const commandId = nanoid(10);\r\n return this.main.providers({ commandId });\r\n });\r\n }\r\n types() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const commandId = nanoid(10);\r\n return this.main.types({ commandId });\r\n });\r\n }\r\n query(queryConfig) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const verifiedConfig = queryConfigDecoder.runWithException(queryConfig);\r\n const commandId = nanoid(10);\r\n return this.main.query({ queryConfig: verifiedConfig, commandId });\r\n });\r\n }\r\n registerProvider(config) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const verifiedConfig = providerRegistrationConfig.runWithException(config);\r\n const commandId = nanoid(10);\r\n return this.main.registerProvider({ config: verifiedConfig, commandId });\r\n });\r\n }\r\n}\n\nclass AsyncSequelizer {\r\n constructor(minSequenceInterval = 0) {\r\n this.minSequenceInterval = minSequenceInterval;\r\n this.queue = [];\r\n this.isExecutingQueue = false;\r\n }\r\n enqueue(action) {\r\n return new Promise((resolve, reject) => {\r\n this.queue.push({ action, resolve, reject });\r\n this.executeQueue();\r\n });\r\n }\r\n executeQueue() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.isExecutingQueue) {\r\n return;\r\n }\r\n this.isExecutingQueue = true;\r\n while (this.queue.length) {\r\n const operation = this.queue.shift();\r\n if (!operation) {\r\n this.isExecutingQueue = false;\r\n return;\r\n }\r\n try {\r\n const actionResult = yield operation.action();\r\n operation.resolve(actionResult);\r\n }\r\n catch (error) {\r\n operation.reject(error);\r\n }\r\n yield this.intervalBreak();\r\n }\r\n this.isExecutingQueue = false;\r\n });\r\n }\r\n intervalBreak() {\r\n return new Promise((res) => setTimeout(res, this.minSequenceInterval));\r\n }\r\n}\n\nclass LimitsTracker {\r\n constructor() {\r\n this.limitsLookup = {};\r\n this.limitsData = {};\r\n }\r\n enableTracking(limits, queryId) {\r\n this.limitsLookup[queryId] = {};\r\n this.limitsData[queryId] = {\r\n maxResults: limits.maxResults ? limits.maxResults : Number.MAX_SAFE_INTEGER,\r\n maxResultsPerType: limits.maxResultsPerType ? limits.maxResultsPerType : Number.MAX_SAFE_INTEGER\r\n };\r\n }\r\n testResultLimit(command) {\r\n const foundLookup = this.limitsLookup[command.identification.queryId];\r\n const limitData = this.limitsData[command.identification.queryId];\r\n if (!foundLookup || !limitData) {\r\n return;\r\n }\r\n let providerStateLookup = foundLookup[command.identification.providerId];\r\n if (!providerStateLookup) {\r\n providerStateLookup = { total: 0 };\r\n foundLookup[command.identification.providerId] = providerStateLookup;\r\n }\r\n if ((providerStateLookup.total + 1) > limitData.maxResults) {\r\n return { maxLimitHit: true };\r\n }\r\n const resultTypeName = command.result.type.name;\r\n if (!resultTypeName) {\r\n return;\r\n }\r\n const currentResultTypeCount = providerStateLookup[resultTypeName] || 0;\r\n if ((currentResultTypeCount + 1) > limitData.maxResultsPerType) {\r\n return { maxLimitPerTypeHit: true };\r\n }\r\n }\r\n update(command) {\r\n const foundLookup = this.limitsLookup[command.identification.queryId];\r\n const limitData = this.limitsData[command.identification.queryId];\r\n if (!foundLookup || !limitData) {\r\n return;\r\n }\r\n const providerStateLookup = foundLookup[command.identification.providerId];\r\n providerStateLookup.total += 1;\r\n const resultTypeName = command.result.type.name;\r\n if (!resultTypeName) {\r\n return;\r\n }\r\n providerStateLookup[resultTypeName] = providerStateLookup[resultTypeName] ? providerStateLookup[resultTypeName] + 1 : 1;\r\n }\r\n cleanTracking(queryId) {\r\n delete this.limitsLookup[queryId];\r\n delete this.limitsData[queryId];\r\n }\r\n}\n\nclass ClientQuery {\r\n constructor(controller, logger, masterQueryId) {\r\n this.controller = controller;\r\n this.logger = logger;\r\n this.masterQueryId = masterQueryId;\r\n }\r\n exposeFacade() {\r\n const providerQueryFacade = {\r\n cancel: this.cancel.bind(this),\r\n onResults: this.onResults.bind(this),\r\n onCompleted: this.onCompleted.bind(this),\r\n onError: this.onError.bind(this)\r\n };\r\n return Object.freeze(providerQueryFacade);\r\n }\r\n cancel() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const commandId = nanoid(10);\r\n this.logger.info(`[${commandId}] received a valid query cancel request, forwarding to the controller.`);\r\n yield this.controller.cancelQuery(this.masterQueryId, commandId);\r\n this.logger.info(`[${commandId}] the cancel request was completed.`);\r\n });\r\n }\r\n onResults(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onQuery requires a callback of type function\");\r\n }\r\n const commandId = nanoid(10);\r\n this.logger.info(`[${commandId}] received a valid query onResults request, forwarding to the controller.`);\r\n const unsubscribe = this.controller.processClientOnResults({ callback, masterQueryId: this.masterQueryId, commandId });\r\n this.logger.info(`[${commandId}] the onResults request was completed.`);\r\n return unsubscribe;\r\n }\r\n onCompleted(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onQuery requires a callback of type function\");\r\n }\r\n const commandId = nanoid(10);\r\n this.logger.info(`[${commandId}] received a valid query onCompleted request, forwarding to the controller.`);\r\n const unsubscribe = this.controller.processClientOnCompleted({ callback, masterQueryId: this.masterQueryId, commandId });\r\n this.logger.info(`[${commandId}] the onCompleted request was completed.`);\r\n return unsubscribe;\r\n }\r\n onError(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onQuery requires a callback of type function\");\r\n }\r\n const commandId = nanoid(10);\r\n this.logger.info(`[${commandId}] received a valid query onError request, forwarding to the controller.`);\r\n const unsubscribe = this.controller.processClientOnError({ callback, masterQueryId: this.masterQueryId, commandId });\r\n this.logger.info(`[${commandId}] the onError request was completed.`);\r\n return unsubscribe;\r\n }\r\n}\n\nclass ProviderModel {\r\n constructor(myData, controller, logger) {\r\n this.myData = myData;\r\n this.controller = controller;\r\n this.logger = logger;\r\n }\r\n get id() {\r\n return this.myData.id;\r\n }\r\n get name() {\r\n return this.myData.name;\r\n }\r\n get appName() {\r\n return this.myData.appName;\r\n }\r\n get types() {\r\n return this.myData.types;\r\n }\r\n get myProviderData() {\r\n return Object.assign({}, this.myData);\r\n }\r\n exposeFacade() {\r\n const providerFacade = {\r\n interopId: this.myData.interopId,\r\n id: this.id,\r\n name: this.name,\r\n appName: this.appName,\r\n types: this.types,\r\n onQuery: this.onQuery.bind(this),\r\n onQueryCancel: this.onQueryCancel.bind(this),\r\n unregister: this.unregister.bind(this)\r\n };\r\n return Object.freeze(providerFacade);\r\n }\r\n onQuery(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onQuery requires a callback of type function\");\r\n }\r\n const commandId = nanoid(10);\r\n this.logger.info(`[${commandId}] received a valid onQuery request, forwarding to the controller.`);\r\n const unsubscribe = this.controller.processProviderOnQuery({ callback, id: this.id, commandId });\r\n this.logger.info(`[${commandId}] the onQuery request was completed.`);\r\n return unsubscribe;\r\n }\r\n onQueryCancel(callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onQuery requires a callback of type function\");\r\n }\r\n const commandId = nanoid(10);\r\n this.logger.info(`[${commandId}] received a valid onQueryCancel request, forwarding to the controller.`);\r\n const unsubscribe = this.controller.processProviderOnQueryCancel({ callback, id: this.id, commandId });\r\n this.logger.info(`[${commandId}] the onQueryCancel request was completed.`);\r\n return unsubscribe;\r\n }\r\n unregister() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const commandId = nanoid(10);\r\n this.logger.info(`[${commandId}] received a valid unregister request, forwarding to the controller.`);\r\n yield this.controller.processProviderUnregister({ id: this.id, commandId });\r\n this.logger.info(`[${commandId}] the unregister request was completed.`);\r\n });\r\n }\r\n}\n\nclass ProviderQueryModel {\r\n constructor(myData, controller, logger, identification) {\r\n this.myData = myData;\r\n this.controller = controller;\r\n this.logger = logger;\r\n this.identification = identification;\r\n }\r\n get id() {\r\n return this.identification.queryId;\r\n }\r\n get search() {\r\n return this.myData.search;\r\n }\r\n get providers() {\r\n return this.myData.providers;\r\n }\r\n get types() {\r\n return this.myData.types;\r\n }\r\n get providerLimits() {\r\n return this.myData.providerLimits;\r\n }\r\n get myQueryData() {\r\n return Object.assign({}, this.myData);\r\n }\r\n exposeFacade() {\r\n const providerQueryFacade = {\r\n id: this.id,\r\n search: this.search,\r\n providers: this.providers,\r\n types: this.types,\r\n providerLimits: this.providerLimits,\r\n sendResult: this.sendResult.bind(this),\r\n error: this.error.bind(this),\r\n done: this.done.bind(this)\r\n };\r\n return Object.freeze(providerQueryFacade);\r\n }\r\n sendResult(result) {\r\n queryResultDecoder.runWithException(result);\r\n const commandId = nanoid(10);\r\n this.logger.trace(`[${commandId}] Received a valid result, forwarding to the controller`);\r\n return this.controller.processProviderQueryResult({ identification: this.identification, result, commandId });\r\n }\r\n error(error) {\r\n const commandId = nanoid(10);\r\n nonEmptyStringDecoder.runWithException(error);\r\n this.logger.trace(`[${commandId}] Received a valid error, forwarding to the controller`);\r\n this.controller.processProviderQueryError({ identification: this.identification, error, commandId }).catch((error) => this.logger.warn(`Error processing the error signal for this provider: ${this.id}, error: ${extractErrorMsg(error)}`));\r\n }\r\n done() {\r\n const commandId = nanoid(10);\r\n this.logger.trace(`[${commandId}] Received a valid done, forwarding to the controller`);\r\n this.controller.processProviderQueryDone({ identification: this.identification, commandId }).catch((error) => this.logger.warn(`Error processing the done signal for this provider: ${this.identification.providerId}, error: ${extractErrorMsg(error)}`));\r\n }\r\n}\n\nclass QueryResultsPublisher {\r\n constructor(sequelizer, glueController, logger, clientInstanceId, queryId, isLegacy) {\r\n this.sequelizer = sequelizer;\r\n this.glueController = glueController;\r\n this.logger = logger;\r\n this.clientInstanceId = clientInstanceId;\r\n this.queryId = queryId;\r\n this.isLegacy = isLegacy;\r\n this.queues = {};\r\n }\r\n checkProviderSuspended(providerId) {\r\n return this.queues[providerId] ? !!this.queues[providerId].suspended : false;\r\n }\r\n syncSuspendProvider(providerId, commandId) {\r\n const providerQueue = this.queues[providerId];\r\n if (!providerQueue) {\r\n this.logger.warn(`[${commandId}] Cannot suspend provider: ${providerId}, because there is no provider queue. This happens when the provider queue was already cancelled or completed`);\r\n return;\r\n }\r\n providerQueue.suspended = true;\r\n }\r\n configureProviders(providers) {\r\n providers.forEach((provider) => {\r\n this.queues[provider.myProviderData.id] = {\r\n providerData: provider,\r\n pendingResults: []\r\n };\r\n });\r\n }\r\n queueResult(command) {\r\n const { commandId, identification } = command;\r\n this.logger.trace(`[${commandId}] Queuing a new result from provider: ${identification.providerId}`);\r\n const providerQueue = this.queues[identification.providerId];\r\n if (!providerQueue) {\r\n this.logger.warn(`[${commandId}] Cannot queue this result, because there is no provider queue. This happens when the provider queue was already cancelled or completed`);\r\n return;\r\n }\r\n const result = this.isLegacy ? this.translateLegacySearchItem(command.result) : command.result;\r\n providerQueue.pendingResults.push(result);\r\n clearTimeout(providerQueue.flushTimer);\r\n if (providerQueue.pendingResults.length === 10) {\r\n this.logger.trace(`[${commandId}] Reached the limit in the queue buffer, flushing to the client.`);\r\n this.flushProviderQueue(identification.providerId, commandId);\r\n return;\r\n }\r\n this.logger.trace(`[${commandId}] The limit in the queue buffer is not reached yet, setting a flush timer.`);\r\n providerQueue.flushTimer = setTimeout(() => {\r\n this.logger.trace(`[${commandId}] Reached the time limit in the queue buffer, flushing to the client.`);\r\n this.flushProviderQueue(identification.providerId, commandId);\r\n }, FLUSH_TIMEOUT_MS);\r\n }\r\n cancel(commandId) {\r\n this.logger.trace(`[${commandId}] Cancelling queue ${this.queryId}.`);\r\n Object.values(this.queues).forEach((queue) => clearTimeout(queue.flushTimer));\r\n this.queues = {};\r\n this.logger.trace(`[${commandId}] Queue ${this.queryId} publisher cancelled.`);\r\n }\r\n markProviderDone(providerId, commandId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.logger.trace(`[${commandId}] Marking provider ${providerId} as done.`);\r\n const providerQueue = this.queues[providerId];\r\n if (!providerQueue) {\r\n this.logger.info(`[${commandId}] Cannot mark this queue as done, because there is no provider queue. This happens when the provider queue was already cancelled, completed or the provider sent an error`);\r\n return;\r\n }\r\n clearTimeout(providerQueue.flushTimer);\r\n yield this.flushProviderQueue(providerId, commandId);\r\n delete this.queues[providerId];\r\n this.logger.trace(`[${commandId}] Provider ${providerId} marked as done.`);\r\n });\r\n }\r\n markProviderError(command) {\r\n const providerQueue = this.queues[command.identification.providerId];\r\n if (!providerQueue) {\r\n this.logger.warn(`[${command.commandId}] Cannot mark this provider as errored, because there is no provider queue. This happens when the provider queue was already cancelled, completed or the provider sent and error`);\r\n return;\r\n }\r\n this.glueController.sendClientErrorMessage(command.error, this.clientInstanceId, this.queryId, providerQueue.providerData.myProviderData)\r\n .catch((error) => this.logger.warn(`[${command.commandId}] The client errored when handling error message for query: ${this.queryId} -> ${extractErrorMsg(error)}`));\r\n }\r\n cleanPublisher(commandId) {\r\n Object.values(this.queues).forEach((queue) => clearTimeout(queue.flushTimer));\r\n this.queues = {};\r\n this.glueController.sendClientQueueCompleted(this.clientInstanceId, this.queryId)\r\n .catch((error) => this.logger.warn(`[${commandId}] The client errored when handling search end message for query: ${this.queryId} -> ${extractErrorMsg(error)}`));\r\n }\r\n flushProviderQueue(providerId, commandId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.sequelizer.enqueue(() => __awaiter(this, void 0, void 0, function* () {\r\n const providerQueue = this.queues[providerId];\r\n if (!providerQueue) {\r\n this.logger.warn(`[${commandId}] Cannot flush this queue, because there is no provider queue. This happens when the provider queue was already cancelled, completed or the provider sent and error`);\r\n return;\r\n }\r\n if (!providerQueue.pendingResults.length) {\r\n this.logger.info(`[${commandId}] This provider does not have any pending results to flush.`);\r\n return;\r\n }\r\n const resultBatch = {\r\n results: providerQueue.pendingResults,\r\n provider: providerQueue.providerData.myProviderData\r\n };\r\n providerQueue.pendingResults = [];\r\n try {\r\n yield this.glueController.sendClientResultsBatch(resultBatch, this.clientInstanceId, this.queryId);\r\n }\r\n catch (error) {\r\n this.logger.warn(`[${commandId}] The client errored when handling search results for query: ${this.queryId} -> ${extractErrorMsg(error)}`);\r\n }\r\n }));\r\n });\r\n }\r\n translateLegacySearchItem(searchResult) {\r\n return {\r\n type: searchResult.type.name,\r\n category: searchResult.type.displayName,\r\n id: searchResult.id,\r\n displayName: searchResult.displayName,\r\n description: searchResult.description,\r\n iconURL: searchResult.iconURL,\r\n action: searchResult.action\r\n };\r\n }\r\n}\n\nclass ModelFactory {\r\n constructor(glueController, glue, flushSequelizer) {\r\n this.glueController = glueController;\r\n this.glue = glue;\r\n this.flushSequelizer = flushSequelizer;\r\n }\r\n buildProviderModel(providerData, controller) {\r\n return new ProviderModel(providerData, controller, this.glue.logger.subLogger(`search.provider.model.${providerData.name}`));\r\n }\r\n buildProviderQueryModel(queryConfig, identification, controller) {\r\n return new ProviderQueryModel(queryConfig, controller, this.glue.logger.subLogger(`search.provider.${identification.providerId}.query.${identification.queryId}`), identification);\r\n }\r\n buildPublisher(clientInstanceId, queryId, isLegacy) {\r\n return new QueryResultsPublisher(this.flushSequelizer, this.glueController, this.glue.logger.subLogger(`search.results.publisher.${queryId}`), clientInstanceId, queryId, isLegacy);\r\n }\r\n buildClientQueryModel(masterQueryId, controller) {\r\n return new ClientQuery(controller, this.glue.logger.subLogger(`search.provider.model.${masterQueryId}`), masterQueryId);\r\n }\r\n}\n\nclass IoC {\r\n constructor(glue, config) {\r\n this.glue = glue;\r\n this.config = config;\r\n }\r\n get glueController() {\r\n if (!this._glueController) {\r\n this._glueController = new GlueController(this.glue);\r\n }\r\n return this._glueController;\r\n }\r\n get main() {\r\n if (!this._mainController) {\r\n this._mainController = new MainController(this.glue.logger.subLogger(\"search.main.controller\"), this.glueController, this.clientController, this.providerController);\r\n }\r\n return this._mainController;\r\n }\r\n get clientController() {\r\n if (!this._clientController) {\r\n this._clientController = new ClientController(this.glue.logger.subLogger(\"search.client.controller\"), this.glueController, this.modelFactory);\r\n }\r\n return this._clientController;\r\n }\r\n get providerController() {\r\n if (!this._providerController) {\r\n this._providerController = new ProviderController(this.glue.logger.subLogger(\"search.provider.controller\"), this.glueController, this.sequelizer, this.limitsTracker, this.modelFactory);\r\n }\r\n return this._providerController;\r\n }\r\n get facade() {\r\n if (!this._facade) {\r\n this._facade = new SearchFacade(this.main);\r\n }\r\n return this._facade;\r\n }\r\n get sequelizer() {\r\n if (!this._asyncSequelizer) {\r\n this._asyncSequelizer = new AsyncSequelizer(SEQUELIZER_INTERVAL_MS);\r\n }\r\n return this._asyncSequelizer;\r\n }\r\n get flushSequelizer() {\r\n if (!this._flushSequelizer) {\r\n this._flushSequelizer = new AsyncSequelizer(FLUSH_SEQUELIZER_INTERVAL_MS);\r\n }\r\n return this._flushSequelizer;\r\n }\r\n get limitsTracker() {\r\n if (!this._limitsTracker) {\r\n this._limitsTracker = new LimitsTracker();\r\n }\r\n return this._limitsTracker;\r\n }\r\n get modelFactory() {\r\n if (!this._modelFactory) {\r\n this._modelFactory = new ModelFactory(this.glueController, this.glue, this.flushSequelizer);\r\n }\r\n return this._modelFactory;\r\n }\r\n}\n\nconst factoryFunction = (io, config) => __awaiter(void 0, void 0, void 0, function* () {\r\n const ioc = new IoC(io, config);\r\n io.search = ioc.facade.exposeApi();\r\n});\r\nif (typeof window !== \"undefined\") {\r\n window.IOSearch = factoryFunction;\r\n}\n\nexport { factoryFunction as default };\n//# sourceMappingURL=search-api.es.js.map\n","export { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) =>\n crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n byte &= 63\n if (byte < 36) {\n id += byte.toString(36)\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte > 62) {\n id += '-'\n } else {\n id += '_'\n }\n return id\n }, '')\n",null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar MetricTypes = {\r\n STRING: 1,\r\n NUMBER: 2,\r\n TIMESTAMP: 3,\r\n OBJECT: 4\r\n};\n\nfunction getMetricTypeByValue(metric) {\r\n if (metric.type === MetricTypes.TIMESTAMP) {\r\n return \"timestamp\";\r\n }\r\n else if (metric.type === MetricTypes.NUMBER) {\r\n return \"number\";\r\n }\r\n else if (metric.type === MetricTypes.STRING) {\r\n return \"string\";\r\n }\r\n else if (metric.type === MetricTypes.OBJECT) {\r\n return \"object\";\r\n }\r\n return \"unknown\";\r\n}\r\nfunction getTypeByValue(value) {\r\n if (value.constructor === Date) {\r\n return \"timestamp\";\r\n }\r\n else if (typeof value === \"number\") {\r\n return \"number\";\r\n }\r\n else if (typeof value === \"string\") {\r\n return \"string\";\r\n }\r\n else if (typeof value === \"object\") {\r\n return \"object\";\r\n }\r\n else {\r\n return \"string\";\r\n }\r\n}\r\nfunction serializeMetric(metric) {\r\n var serializedMetrics = {};\r\n var type = getMetricTypeByValue(metric);\r\n if (type === \"object\") {\r\n var values = Object.keys(metric.value).reduce(function (memo, key) {\r\n var innerType = getTypeByValue(metric.value[key]);\r\n if (innerType === \"object\") {\r\n var composite = defineNestedComposite(metric.value[key]);\r\n memo[key] = {\r\n type: \"object\",\r\n description: \"\",\r\n context: {},\r\n composite: composite,\r\n };\r\n }\r\n else {\r\n memo[key] = {\r\n type: innerType,\r\n description: \"\",\r\n context: {},\r\n };\r\n }\r\n return memo;\r\n }, {});\r\n serializedMetrics.composite = values;\r\n }\r\n serializedMetrics.name = normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name);\r\n serializedMetrics.type = type;\r\n serializedMetrics.description = metric.description;\r\n serializedMetrics.context = {};\r\n return serializedMetrics;\r\n}\r\nfunction defineNestedComposite(values) {\r\n return Object.keys(values).reduce(function (memo, key) {\r\n var type = getTypeByValue(values[key]);\r\n if (type === \"object\") {\r\n memo[key] = {\r\n type: \"object\",\r\n description: \"\",\r\n context: {},\r\n composite: defineNestedComposite(values[key]),\r\n };\r\n }\r\n else {\r\n memo[key] = {\r\n type: type,\r\n description: \"\",\r\n context: {},\r\n };\r\n }\r\n return memo;\r\n }, {});\r\n}\r\nfunction normalizeMetricName(name) {\r\n if (typeof name !== \"undefined\" && name.length > 0 && name[0] !== \"/\") {\r\n return \"/\" + name;\r\n }\r\n else {\r\n return name;\r\n }\r\n}\r\nfunction getMetricValueByType(metric) {\r\n var type = getMetricTypeByValue(metric);\r\n if (type === \"timestamp\") {\r\n return Date.now();\r\n }\r\n else {\r\n return publishNestedComposite(metric.value);\r\n }\r\n}\r\nfunction publishNestedComposite(values) {\r\n if (typeof values !== \"object\") {\r\n return values;\r\n }\r\n return Object.keys(values).reduce(function (memo, key) {\r\n var value = values[key];\r\n if (typeof value === \"object\" && value.constructor !== Date) {\r\n memo[key] = publishNestedComposite(value);\r\n }\r\n else if (value.constructor === Date) {\r\n memo[key] = new Date(value).getTime();\r\n }\r\n else if (value.constructor === Boolean) {\r\n memo[key] = value.toString();\r\n }\r\n else {\r\n memo[key] = value;\r\n }\r\n return memo;\r\n }, {});\r\n}\r\nfunction flatten(arr) {\r\n return arr.reduce(function (flat, toFlatten) {\r\n return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);\r\n }, []);\r\n}\r\nfunction getHighestState(arr) {\r\n return arr.sort(function (a, b) {\r\n if (!a.state) {\r\n return 1;\r\n }\r\n if (!b.state) {\r\n return -1;\r\n }\r\n return b.state - a.state;\r\n })[0];\r\n}\r\nfunction aggregateDescription(arr) {\r\n var msg = \"\";\r\n arr.forEach(function (m, idx, a) {\r\n var path = m.path.join(\".\");\r\n if (idx === a.length - 1) {\r\n msg += path + \".\" + m.name + \": \" + m.description;\r\n }\r\n else {\r\n msg += path + \".\" + m.name + \": \" + m.description + \",\";\r\n }\r\n });\r\n if (msg.length > 100) {\r\n return msg.slice(0, 100) + \"...\";\r\n }\r\n else {\r\n return msg;\r\n }\r\n}\r\nfunction composeMsgForRootStateMetric(system) {\r\n var aggregatedState = system.root.getAggregateState();\r\n var merged = flatten(aggregatedState);\r\n var highestState = getHighestState(merged);\r\n var aggregateDesc = aggregateDescription(merged);\r\n return {\r\n description: aggregateDesc,\r\n value: highestState.state,\r\n };\r\n}\n\nfunction gw3 (connection, config) {\r\n var _this = this;\r\n if (!connection || typeof connection !== \"object\") {\r\n throw new Error(\"Connection is required parameter\");\r\n }\r\n var joinPromise;\r\n var session;\r\n var init = function (repo) {\r\n var resolveReadyPromise;\r\n joinPromise = new Promise(function (resolve) {\r\n resolveReadyPromise = resolve;\r\n });\r\n session = connection.domain(\"metrics\");\r\n session.onJoined(function (reconnect) {\r\n if (!reconnect && resolveReadyPromise) {\r\n resolveReadyPromise();\r\n resolveReadyPromise = undefined;\r\n }\r\n var rootStateMetric = {\r\n name: \"/State\",\r\n type: \"object\",\r\n composite: {\r\n Description: {\r\n type: \"string\",\r\n description: \"\",\r\n },\r\n Value: {\r\n type: \"number\",\r\n description: \"\",\r\n },\r\n },\r\n description: \"System state\",\r\n context: {},\r\n };\r\n var defineRootMetricsMsg = {\r\n type: \"define\",\r\n metrics: [rootStateMetric],\r\n };\r\n session.send(defineRootMetricsMsg);\r\n if (reconnect) {\r\n replayRepo(repo);\r\n }\r\n });\r\n session.join({\r\n system: config.system,\r\n service: config.service,\r\n instance: config.instance\r\n });\r\n };\r\n var replayRepo = function (repo) {\r\n replaySystem(repo.root);\r\n };\r\n var replaySystem = function (system) {\r\n createSystem(system);\r\n system.metrics.forEach(function (m) {\r\n createMetric(m);\r\n });\r\n system.subSystems.forEach(function (ss) {\r\n replaySystem(ss);\r\n });\r\n };\r\n var createSystem = function (system) { return __awaiter(_this, void 0, void 0, function () {\r\n var metric, createMetricsMsg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (system.parent === undefined) {\r\n return [2];\r\n }\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n metric = {\r\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\r\n type: \"object\",\r\n composite: {\r\n Description: {\r\n type: \"string\",\r\n description: \"\",\r\n },\r\n Value: {\r\n type: \"number\",\r\n description: \"\",\r\n },\r\n },\r\n description: \"System state\",\r\n context: {},\r\n };\r\n createMetricsMsg = {\r\n type: \"define\",\r\n metrics: [metric],\r\n };\r\n session.send(createMetricsMsg);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateSystem = function (system, state) { return __awaiter(_this, void 0, void 0, function () {\r\n var shadowedUpdateMetric, stateObj, rootMetric;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n shadowedUpdateMetric = {\r\n type: \"publish\",\r\n values: [{\r\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\r\n value: {\r\n Description: state.description,\r\n Value: state.state,\r\n },\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n session.send(shadowedUpdateMetric);\r\n stateObj = composeMsgForRootStateMetric(system);\r\n rootMetric = {\r\n type: \"publish\",\r\n peer_id: connection.peerId,\r\n values: [{\r\n name: \"/State\",\r\n value: {\r\n Description: stateObj.description,\r\n Value: stateObj.value,\r\n },\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n session.send(rootMetric);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var createMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () {\r\n var metricClone, m, createMetricsMsg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metricClone = cloneMetric(metric);\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n m = serializeMetric(metricClone);\r\n createMetricsMsg = {\r\n type: \"define\",\r\n metrics: [m],\r\n };\r\n session.send(createMetricsMsg);\r\n if (typeof metricClone.value !== \"undefined\") {\r\n updateMetricCore(metricClone);\r\n }\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () {\r\n var metricClone;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metricClone = cloneMetric(metric);\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n updateMetricCore(metricClone);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateMetricCore = function (metric) {\r\n if (canUpdate()) {\r\n var value = getMetricValueByType(metric);\r\n var publishMetricsMsg = {\r\n type: \"publish\",\r\n values: [{\r\n name: normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name),\r\n value: value,\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n return session.sendFireAndForget(publishMetricsMsg);\r\n }\r\n return Promise.resolve();\r\n };\r\n var cloneMetric = function (metric) {\r\n var metricClone = __assign({}, metric);\r\n if (typeof metric.value === \"object\" && metric.value !== null) {\r\n metricClone.value = __assign({}, metric.value);\r\n }\r\n return metricClone;\r\n };\r\n var canUpdate = function () {\r\n var _a;\r\n try {\r\n var func = (_a = config.canUpdateMetric) !== null && _a !== void 0 ? _a : (function () { return true; });\r\n return func();\r\n }\r\n catch (_b) {\r\n return true;\r\n }\r\n };\r\n return {\r\n init: init,\r\n createSystem: createSystem,\r\n updateSystem: updateSystem,\r\n createMetric: createMetric,\r\n updateMetric: updateMetric,\r\n };\r\n}\n\nvar Helpers = {\r\n validate: function (definition, parent, transport) {\r\n if (definition === null || typeof definition !== \"object\") {\r\n throw new Error(\"Missing definition\");\r\n }\r\n if (parent === null || typeof parent !== \"object\") {\r\n throw new Error(\"Missing parent\");\r\n }\r\n if (transport === null || typeof transport !== \"object\") {\r\n throw new Error(\"Missing transport\");\r\n }\r\n },\r\n};\n\nvar BaseMetric = (function () {\r\n function BaseMetric(definition, system, transport, value, type) {\r\n this.definition = definition;\r\n this.system = system;\r\n this.transport = transport;\r\n this.value = value;\r\n this.type = type;\r\n this.path = [];\r\n Helpers.validate(definition, system, transport);\r\n this.path = system.path.slice(0);\r\n this.path.push(system.name);\r\n this.name = definition.name;\r\n this.description = definition.description;\r\n transport.createMetric(this);\r\n }\r\n Object.defineProperty(BaseMetric.prototype, \"repo\", {\r\n get: function () {\r\n var _a;\r\n return (_a = this.system) === null || _a === void 0 ? void 0 : _a.repo;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseMetric.prototype, \"id\", {\r\n get: function () { return \"\".concat(this.system.path, \"/\").concat(name); },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n BaseMetric.prototype.update = function (newValue) {\r\n this.value = newValue;\r\n return this.transport.updateMetric(this);\r\n };\r\n return BaseMetric;\r\n}());\n\nvar NumberMetric = (function (_super) {\r\n __extends(NumberMetric, _super);\r\n function NumberMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.NUMBER) || this;\r\n }\r\n NumberMetric.prototype.incrementBy = function (num) {\r\n this.update(this.value + num);\r\n };\r\n NumberMetric.prototype.increment = function () {\r\n this.incrementBy(1);\r\n };\r\n NumberMetric.prototype.decrement = function () {\r\n this.incrementBy(-1);\r\n };\r\n NumberMetric.prototype.decrementBy = function (num) {\r\n this.incrementBy(num * -1);\r\n };\r\n return NumberMetric;\r\n}(BaseMetric));\n\nvar ObjectMetric = (function (_super) {\r\n __extends(ObjectMetric, _super);\r\n function ObjectMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.OBJECT) || this;\r\n }\r\n ObjectMetric.prototype.update = function (newValue) {\r\n this.mergeValues(newValue);\r\n return this.transport.updateMetric(this);\r\n };\r\n ObjectMetric.prototype.mergeValues = function (values) {\r\n var _this = this;\r\n return Object.keys(this.value).forEach(function (k) {\r\n if (typeof values[k] !== \"undefined\") {\r\n _this.value[k] = values[k];\r\n }\r\n });\r\n };\r\n return ObjectMetric;\r\n}(BaseMetric));\n\nvar StringMetric = (function (_super) {\r\n __extends(StringMetric, _super);\r\n function StringMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.STRING) || this;\r\n }\r\n return StringMetric;\r\n}(BaseMetric));\n\nvar TimestampMetric = (function (_super) {\r\n __extends(TimestampMetric, _super);\r\n function TimestampMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.TIMESTAMP) || this;\r\n }\r\n TimestampMetric.prototype.now = function () {\r\n this.update(new Date());\r\n };\r\n return TimestampMetric;\r\n}(BaseMetric));\n\nfunction system(name, repo, protocol, parent, description) {\r\n if (!repo) {\r\n throw new Error(\"Repository is required\");\r\n }\r\n if (!protocol) {\r\n throw new Error(\"Transport is required\");\r\n }\r\n var _transport = protocol;\r\n var _name = name;\r\n var _description = description || \"\";\r\n var _repo = repo;\r\n var _parent = parent;\r\n var _path = _buildPath(parent);\r\n var _state = {};\r\n var id = _arrayToString(_path, \"/\") + name;\r\n var root = repo.root;\r\n var _subSystems = [];\r\n var _metrics = [];\r\n function subSystem(nameSystem, descriptionSystem) {\r\n if (!nameSystem || nameSystem.length === 0) {\r\n throw new Error(\"name is required\");\r\n }\r\n var match = _subSystems.filter(function (s) { return s.name === nameSystem; });\r\n if (match.length > 0) {\r\n return match[0];\r\n }\r\n var _system = system(nameSystem, _repo, _transport, me, descriptionSystem);\r\n _subSystems.push(_system);\r\n return _system;\r\n }\r\n function setState(state, stateDescription) {\r\n _state = { state: state, description: stateDescription };\r\n _transport.updateSystem(me, _state);\r\n }\r\n function stringMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.STRING, value, function (metricDef) { return new StringMetric(metricDef, me, _transport, value); });\r\n }\r\n function numberMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.NUMBER, value, function (metricDef) { return new NumberMetric(metricDef, me, _transport, value); });\r\n }\r\n function objectMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.OBJECT, value, function (metricDef) { return new ObjectMetric(metricDef, me, _transport, value); });\r\n }\r\n function timestampMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.TIMESTAMP, value, function (metricDef) { return new TimestampMetric(metricDef, me, _transport, value); });\r\n }\r\n function _getOrCreateMetric(metricObject, expectedType, value, createMetric) {\r\n var metricDef = { name: \"\" };\r\n if (typeof metricObject === \"string\") {\r\n metricDef = { name: metricObject };\r\n }\r\n else {\r\n metricDef = metricObject;\r\n }\r\n var matching = _metrics.filter(function (shadowedMetric) { return shadowedMetric.name === metricDef.name; });\r\n if (matching.length > 0) {\r\n var existing = matching[0];\r\n if (existing.type !== expectedType) {\r\n throw new Error(\"A metric named \".concat(metricDef.name, \" is already defined with different type.\"));\r\n }\r\n if (typeof value !== \"undefined\") {\r\n existing\r\n .update(value)\r\n .catch(function () { });\r\n }\r\n return existing;\r\n }\r\n var metric = createMetric(metricDef);\r\n _metrics.push(metric);\r\n return metric;\r\n }\r\n function _buildPath(shadowedSystem) {\r\n if (!shadowedSystem || !shadowedSystem.parent) {\r\n return [];\r\n }\r\n var path = _buildPath(shadowedSystem.parent);\r\n path.push(shadowedSystem.name);\r\n return path;\r\n }\r\n function _arrayToString(path, separator) {\r\n return ((path && path.length > 0) ? path.join(separator) : \"\");\r\n }\r\n function getAggregateState() {\r\n var aggState = [];\r\n if (Object.keys(_state).length > 0) {\r\n aggState.push({\r\n name: _name,\r\n path: _path,\r\n state: _state.state,\r\n description: _state.description,\r\n });\r\n }\r\n _subSystems.forEach(function (shadowedSubSystem) {\r\n var result = shadowedSubSystem.getAggregateState();\r\n if (result.length > 0) {\r\n aggState.push.apply(aggState, result);\r\n }\r\n });\r\n return aggState;\r\n }\r\n var me = {\r\n get name() {\r\n return _name;\r\n },\r\n get description() {\r\n return _description;\r\n },\r\n get repo() {\r\n return _repo;\r\n },\r\n get parent() {\r\n return _parent;\r\n },\r\n path: _path,\r\n id: id,\r\n root: root,\r\n get subSystems() {\r\n return _subSystems;\r\n },\r\n get metrics() {\r\n return _metrics;\r\n },\r\n subSystem: subSystem,\r\n getState: function () {\r\n return _state;\r\n },\r\n setState: setState,\r\n stringMetric: stringMetric,\r\n timestampMetric: timestampMetric,\r\n objectMetric: objectMetric,\r\n numberMetric: numberMetric,\r\n getAggregateState: getAggregateState,\r\n };\r\n _transport.createSystem(me);\r\n return me;\r\n}\n\nvar Repository = (function () {\r\n function Repository(options, protocol) {\r\n protocol.init(this);\r\n this.root = system(\"\", this, protocol);\r\n this.addSystemMetrics(this.root, options.clickStream || options.clickStream === undefined);\r\n }\r\n Repository.prototype.addSystemMetrics = function (rootSystem, useClickStream) {\r\n if (typeof navigator !== \"undefined\") {\r\n rootSystem.stringMetric(\"UserAgent\", navigator.userAgent);\r\n }\r\n if (useClickStream && typeof document !== \"undefined\") {\r\n var clickStream_1 = rootSystem.subSystem(\"ClickStream\");\r\n var documentClickHandler = function (e) {\r\n var _a;\r\n if (!e.target) {\r\n return;\r\n }\r\n var target = e.target;\r\n var className = target ? (_a = target.getAttribute(\"class\")) !== null && _a !== void 0 ? _a : \"\" : \"\";\r\n clickStream_1.objectMetric(\"LastBrowserEvent\", {\r\n type: \"click\",\r\n timestamp: new Date(),\r\n target: {\r\n className: className,\r\n id: target.id,\r\n type: \"<\" + target.tagName.toLowerCase() + \">\",\r\n href: target.href || \"\",\r\n },\r\n });\r\n };\r\n clickStream_1.objectMetric(\"Page\", {\r\n title: document.title,\r\n page: window.location.href,\r\n });\r\n if (document.addEventListener) {\r\n document.addEventListener(\"click\", documentClickHandler);\r\n }\r\n else {\r\n document.attachEvent(\"onclick\", documentClickHandler);\r\n }\r\n }\r\n rootSystem.stringMetric(\"StartTime\", (new Date()).toString());\r\n var urlMetric = rootSystem.stringMetric(\"StartURL\", \"\");\r\n var appNameMetric = rootSystem.stringMetric(\"AppName\", \"\");\r\n if (typeof window !== \"undefined\") {\r\n if (typeof window.location !== \"undefined\") {\r\n var startUrl = window.location.href;\r\n urlMetric.update(startUrl);\r\n }\r\n if (typeof window.glue42gd !== \"undefined\") {\r\n appNameMetric.update(window.glue42gd.appName);\r\n }\r\n }\r\n };\r\n return Repository;\r\n}());\n\nvar NullProtocol = (function () {\r\n function NullProtocol() {\r\n }\r\n NullProtocol.prototype.init = function (repo) {\r\n };\r\n NullProtocol.prototype.createSystem = function (system) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.updateSystem = function (metric, state) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.createMetric = function (metric) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.updateMetric = function (metric) {\r\n return Promise.resolve();\r\n };\r\n return NullProtocol;\r\n}());\n\nvar PerfTracker = (function () {\r\n function PerfTracker(api, initialPublishTimeout, publishInterval) {\r\n this.api = api;\r\n this.lastCount = 0;\r\n this.initialPublishTimeout = 10 * 1000;\r\n this.publishInterval = 60 * 1000;\r\n this.initialPublishTimeout = initialPublishTimeout !== null && initialPublishTimeout !== void 0 ? initialPublishTimeout : this.initialPublishTimeout;\r\n this.publishInterval = publishInterval !== null && publishInterval !== void 0 ? publishInterval : this.publishInterval;\r\n this.scheduleCollection();\r\n this.system = this.api.subSystem(\"performance\", \"Performance data published by the web application\");\r\n }\r\n PerfTracker.prototype.scheduleCollection = function () {\r\n var _this = this;\r\n setTimeout(function () {\r\n _this.collect();\r\n setInterval(function () {\r\n _this.collect();\r\n }, _this.publishInterval);\r\n }, this.initialPublishTimeout);\r\n };\r\n PerfTracker.prototype.collect = function () {\r\n try {\r\n this.collectMemory();\r\n this.collectEntries();\r\n }\r\n catch (_a) {\r\n }\r\n };\r\n PerfTracker.prototype.collectMemory = function () {\r\n var memory = window.performance.memory;\r\n this.system.stringMetric(\"memory\", JSON.stringify({\r\n totalJSHeapSize: memory.totalJSHeapSize,\r\n usedJSHeapSize: memory.usedJSHeapSize\r\n }));\r\n };\r\n PerfTracker.prototype.collectEntries = function () {\r\n var allEntries = window.performance.getEntries();\r\n if (allEntries.length <= this.lastCount) {\r\n return;\r\n }\r\n this.lastCount = allEntries.length;\r\n var jsonfiedEntries = allEntries.map(function (i) { return i.toJSON(); });\r\n this.system.stringMetric(\"entries\", JSON.stringify(jsonfiedEntries));\r\n };\r\n return PerfTracker;\r\n}());\n\nvar metrics = (function (options) {\r\n var protocol;\r\n if (!options.connection || typeof options.connection !== \"object\") {\r\n protocol = new NullProtocol();\r\n }\r\n else {\r\n protocol = gw3(options.connection, options);\r\n }\r\n var repo = new Repository(options, protocol);\r\n var rootSystem = repo.root;\r\n if (!options.disableAutoAppSystem) {\r\n rootSystem = rootSystem.subSystem(\"App\");\r\n }\r\n var api = addFAVSupport(rootSystem);\r\n initPerf(api, options.pagePerformanceMetrics);\r\n return api;\r\n});\r\nfunction initPerf(api, config) {\r\n var _a, _b;\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n var perfConfig = (_b = (_a = window === null || window === void 0 ? void 0 : window.glue42gd) === null || _a === void 0 ? void 0 : _a.metrics) === null || _b === void 0 ? void 0 : _b.pagePerformanceMetrics;\r\n if (perfConfig) {\r\n config = perfConfig;\r\n }\r\n if (config === null || config === void 0 ? void 0 : config.enabled) {\r\n new PerfTracker(api, config.initialPublishTimeout, config.publishInterval);\r\n }\r\n}\r\nfunction addFAVSupport(system) {\r\n var reportingSystem = system.subSystem(\"reporting\");\r\n var def = {\r\n name: \"features\"\r\n };\r\n var featureMetric;\r\n var featureMetricFunc = function (name, action, payload) {\r\n if (typeof name === \"undefined\" || name === \"\") {\r\n throw new Error(\"name is mandatory\");\r\n }\r\n else if (typeof action === \"undefined\" || action === \"\") {\r\n throw new Error(\"action is mandatory\");\r\n }\r\n else if (typeof payload === \"undefined\" || payload === \"\") {\r\n throw new Error(\"payload is mandatory\");\r\n }\r\n if (!featureMetric) {\r\n featureMetric = reportingSystem.objectMetric(def, { name: name, action: action, payload: payload });\r\n }\r\n else {\r\n featureMetric.update({\r\n name: name,\r\n action: action,\r\n payload: payload\r\n });\r\n }\r\n };\r\n system.featureMetric = featureMetricFunc;\r\n return system;\r\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\ncreateRegistry.default = createRegistry;\nvar lib$1 = createRegistry;\n\nvar InProcTransport = (function () {\r\n function InProcTransport(settings, logger) {\r\n var _this = this;\r\n this.registry = lib$1();\r\n this.gw = settings.facade;\r\n this.gw.connect(function (_client, message) {\r\n _this.messageHandler(message);\r\n }).then(function (client) {\r\n _this.client = client;\r\n });\r\n }\r\n Object.defineProperty(InProcTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n InProcTransport.prototype.sendObject = function (msg) {\r\n if (this.client) {\r\n this.client.send(msg);\r\n return Promise.resolve(undefined);\r\n }\r\n else {\r\n return Promise.reject(\"not connected\");\r\n }\r\n };\r\n InProcTransport.prototype.send = function (_msg) {\r\n return Promise.reject(\"not supported\");\r\n };\r\n InProcTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n InProcTransport.prototype.onConnectedChanged = function (callback) {\r\n callback(true);\r\n return function () { };\r\n };\r\n InProcTransport.prototype.close = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.open = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.name = function () {\r\n return \"in-memory\";\r\n };\r\n InProcTransport.prototype.reconnect = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.messageHandler = function (msg) {\r\n this.registry.execute(\"onMessage\", msg);\r\n };\r\n return InProcTransport;\r\n}());\n\nvar SharedWorkerTransport = (function () {\r\n function SharedWorkerTransport(workerFile, logger) {\r\n var _this = this;\r\n this.logger = logger;\r\n this.registry = lib$1();\r\n this.worker = new SharedWorker(workerFile);\r\n this.worker.port.onmessage = function (e) {\r\n _this.messageHandler(e.data);\r\n };\r\n }\r\n Object.defineProperty(SharedWorkerTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n SharedWorkerTransport.prototype.sendObject = function (msg) {\r\n this.worker.port.postMessage(msg);\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.send = function (_msg) {\r\n return Promise.reject(\"not supported\");\r\n };\r\n SharedWorkerTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n SharedWorkerTransport.prototype.onConnectedChanged = function (callback) {\r\n callback(true);\r\n return function () { };\r\n };\r\n SharedWorkerTransport.prototype.close = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.open = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.name = function () {\r\n return \"shared-worker\";\r\n };\r\n SharedWorkerTransport.prototype.reconnect = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.messageHandler = function (msg) {\r\n this.registry.execute(\"onMessage\", msg);\r\n };\r\n return SharedWorkerTransport;\r\n}());\n\nvar Utils = (function () {\r\n function Utils() {\r\n }\r\n Utils.isNode = function () {\r\n if (typeof Utils._isNode !== \"undefined\") {\r\n return Utils._isNode;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n Utils._isNode = false;\r\n return false;\r\n }\r\n try {\r\n Utils._isNode = Object.prototype.toString.call(global.process) === \"[object process]\";\r\n }\r\n catch (e) {\r\n Utils._isNode = false;\r\n }\r\n return Utils._isNode;\r\n };\r\n return Utils;\r\n}());\n\nvar PromiseWrapper = (function () {\r\n function PromiseWrapper() {\r\n var _this = this;\r\n this.rejected = false;\r\n this.resolved = false;\r\n this.promise = new Promise(function (resolve, reject) {\r\n _this.resolve = function (t) {\r\n _this.resolved = true;\r\n resolve(t);\r\n };\r\n _this.reject = function (err) {\r\n _this.rejected = true;\r\n reject(err);\r\n };\r\n });\r\n }\r\n PromiseWrapper.delay = function (time) {\r\n return new Promise(function (resolve) { return setTimeout(resolve, time); });\r\n };\r\n Object.defineProperty(PromiseWrapper.prototype, \"ended\", {\r\n get: function () {\r\n return this.rejected || this.resolved;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return PromiseWrapper;\r\n}());\n\nvar timers = {};\r\nfunction getAllTimers() {\r\n return timers;\r\n}\r\nfunction timer (timerName) {\r\n var existing = timers[timerName];\r\n if (existing) {\r\n return existing;\r\n }\r\n var marks = [];\r\n function now() {\r\n return new Date().getTime();\r\n }\r\n var startTime = now();\r\n mark(\"start\", startTime);\r\n var endTime;\r\n var period;\r\n function stop() {\r\n endTime = now();\r\n mark(\"end\", endTime);\r\n period = endTime - startTime;\r\n return period;\r\n }\r\n function mark(name, time) {\r\n var currentTime = time !== null && time !== void 0 ? time : now();\r\n var diff = 0;\r\n if (marks.length > 0) {\r\n diff = currentTime - marks[marks.length - 1].time;\r\n }\r\n marks.push({ name: name, time: currentTime, diff: diff });\r\n }\r\n var timerObj = {\r\n get startTime() {\r\n return startTime;\r\n },\r\n get endTime() {\r\n return endTime;\r\n },\r\n get period() {\r\n return period;\r\n },\r\n stop: stop,\r\n mark: mark,\r\n marks: marks\r\n };\r\n timers[timerName] = timerObj;\r\n return timerObj;\r\n}\n\nvar WebSocketConstructor = Utils.isNode() ? require(\"ws\") : window.WebSocket;\r\nvar WS = (function () {\r\n function WS(settings, logger) {\r\n this.startupTimer = timer(\"connection\");\r\n this._running = true;\r\n this._registry = lib$1();\r\n this.wsRequests = [];\r\n this.settings = settings;\r\n this.logger = logger;\r\n if (!this.settings.ws) {\r\n throw new Error(\"ws is missing\");\r\n }\r\n }\r\n WS.prototype.onMessage = function (callback) {\r\n return this._registry.add(\"onMessage\", callback);\r\n };\r\n WS.prototype.send = function (msg, options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.waitForSocketConnection(function () {\r\n var _a;\r\n try {\r\n (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.send(msg);\r\n resolve();\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n }, reject);\r\n });\r\n };\r\n WS.prototype.open = function () {\r\n var _this = this;\r\n this.logger.info(\"opening ws...\");\r\n this._running = true;\r\n return new Promise(function (resolve, reject) {\r\n _this.waitForSocketConnection(resolve, reject);\r\n });\r\n };\r\n WS.prototype.close = function () {\r\n this._running = false;\r\n if (this.ws) {\r\n this.ws.close();\r\n }\r\n return Promise.resolve();\r\n };\r\n WS.prototype.onConnectedChanged = function (callback) {\r\n return this._registry.add(\"onConnectedChanged\", callback);\r\n };\r\n WS.prototype.name = function () {\r\n return this.settings.ws;\r\n };\r\n WS.prototype.reconnect = function () {\r\n var _a;\r\n (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();\r\n var pw = new PromiseWrapper();\r\n this.waitForSocketConnection(function () {\r\n pw.resolve();\r\n });\r\n return pw.promise;\r\n };\r\n WS.prototype.waitForSocketConnection = function (callback, failed) {\r\n var _a;\r\n failed = failed !== null && failed !== void 0 ? failed : (function () { });\r\n if (!this._running) {\r\n failed(\"wait for socket on \".concat(this.settings.ws, \" failed - socket closed by user\"));\r\n return;\r\n }\r\n if (((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === 1) {\r\n callback();\r\n return;\r\n }\r\n this.wsRequests.push({ callback: callback, failed: failed });\r\n if (this.wsRequests.length > 1) {\r\n return;\r\n }\r\n this.openSocket();\r\n };\r\n WS.prototype.openSocket = function (retryInterval, retriesLeft) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.startupTimer.mark(\"opening-socket\");\r\n if (retryInterval === undefined) {\r\n retryInterval = this.settings.reconnectInterval;\r\n }\r\n if (typeof retriesLeft === \"undefined\") {\r\n retriesLeft = this.settings.reconnectAttempts;\r\n }\r\n if (retriesLeft !== undefined) {\r\n if (retriesLeft === 0) {\r\n this.notifyForSocketState(\"wait for socket on \".concat(this.settings.ws, \" failed - no more retries left\"));\r\n return [2];\r\n }\r\n this.logger.debug(\"will retry \".concat(retriesLeft, \" more times (every \").concat(retryInterval, \" ms)\"));\r\n }\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4, this.initiateSocket()];\r\n case 2:\r\n _b.sent();\r\n this.startupTimer.mark(\"socket-initiated\");\r\n this.notifyForSocketState();\r\n return [3, 4];\r\n case 3:\r\n _b.sent();\r\n setTimeout(function () {\r\n var retries = retriesLeft === undefined ? undefined : retriesLeft - 1;\r\n _this.openSocket(retryInterval, retries);\r\n }, retryInterval);\r\n return [3, 4];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n };\r\n WS.prototype.initiateSocket = function () {\r\n var _this = this;\r\n var pw = new PromiseWrapper();\r\n this.logger.debug(\"initiating ws to \".concat(this.settings.ws, \"...\"));\r\n this.ws = new WebSocketConstructor(this.settings.ws || \"\");\r\n this.ws.onerror = function (err) {\r\n var reason = \"\";\r\n try {\r\n reason = JSON.stringify(err);\r\n }\r\n catch (error) {\r\n var seen_1 = new WeakSet();\r\n var replacer = function (key, value) {\r\n if (typeof value === \"object\" && value !== null) {\r\n if (seen_1.has(value)) {\r\n return;\r\n }\r\n seen_1.add(value);\r\n }\r\n return value;\r\n };\r\n reason = JSON.stringify(err, replacer);\r\n }\r\n pw.reject(\"error\");\r\n _this.notifyStatusChanged(false, reason);\r\n };\r\n this.ws.onclose = function (err) {\r\n _this.logger.info(\"ws closed \".concat(err));\r\n pw.reject(\"closed\");\r\n _this.notifyStatusChanged(false);\r\n };\r\n this.ws.onopen = function () {\r\n var _a;\r\n _this.startupTimer.mark(\"ws-opened\");\r\n _this.logger.info(\"ws opened \".concat((_a = _this.settings.identity) === null || _a === void 0 ? void 0 : _a.application));\r\n pw.resolve();\r\n _this.notifyStatusChanged(true);\r\n };\r\n this.ws.onmessage = function (message) {\r\n _this._registry.execute(\"onMessage\", message.data);\r\n };\r\n return pw.promise;\r\n };\r\n WS.prototype.notifyForSocketState = function (error) {\r\n this.wsRequests.forEach(function (wsRequest) {\r\n if (error) {\r\n if (wsRequest.failed) {\r\n wsRequest.failed(error);\r\n }\r\n }\r\n else {\r\n wsRequest.callback();\r\n }\r\n });\r\n this.wsRequests = [];\r\n };\r\n WS.prototype.notifyStatusChanged = function (status, reason) {\r\n this._registry.execute(\"onConnectedChanged\", status, reason);\r\n };\r\n return WS;\r\n}());\n\nvar shortidExports = {};\nvar shortid$1 = {\n get exports(){ return shortidExports; },\n set exports(v){ shortidExports = v; },\n};\n\nvar libExports = {};\nvar lib = {\n get exports(){ return libExports; },\n set exports(v){ libExports = v; },\n};\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed$1(_seed_) {\n seed = _seed_;\n}\n\nvar randomFromSeed$1 = {\n nextValue: getNextValue,\n seed: setSeed$1\n};\n\nvar randomFromSeed = randomFromSeed$1;\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet$2;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet$2 !== ORIGINAL) {\n alphabet$2 = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet$2) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet$2 = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet$2;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet$2) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet$2.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet$2 || ORIGINAL;\n}\n\nvar alphabet_1 = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nvar randomByteBrowser = randomByte;\n\n// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nvar format_browser = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1;\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length);\n var id = '';\n\n while (true) {\n var bytes = random(step);\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step;\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || '';\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id\n }\n }\n};\n\nvar alphabet$1 = alphabet_1;\nvar random = randomByteBrowser;\nvar format = format_browser;\n\nfunction generate$1(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet$1.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nvar generate_1 = generate$1;\n\nvar generate = generate_1;\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version$1 = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version$1);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nvar build_1 = build;\n\nvar alphabet = alphabet_1;\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nvar isValid = isShortId;\n\n(function (module) {\n\n\tvar alphabet = alphabet_1;\n\tvar build = build_1;\n\tvar isValid$1 = isValid;\n\n\t// if you are using cluster or multiple servers use this to make each instance\n\t// has a unique value for worker\n\t// Note: I don't know if this is automatically set when using third\n\t// party cluster solutions such as pm2.\n\tvar clusterWorkerId = 0;\n\n\t/**\n\t * Set the seed.\n\t * Highly recommended if you don't want people to try to figure out your id schema.\n\t * exposed as shortid.seed(int)\n\t * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n\t */\n\tfunction seed(seedValue) {\n\t alphabet.seed(seedValue);\n\t return module.exports;\n\t}\n\n\t/**\n\t * Set the cluster worker or machine id\n\t * exposed as shortid.worker(int)\n\t * @param workerId worker must be positive integer. Number less than 16 is recommended.\n\t * returns shortid module so it can be chained.\n\t */\n\tfunction worker(workerId) {\n\t clusterWorkerId = workerId;\n\t return module.exports;\n\t}\n\n\t/**\n\t *\n\t * sets new characters to use in the alphabet\n\t * returns the shuffled alphabet\n\t */\n\tfunction characters(newCharacters) {\n\t if (newCharacters !== undefined) {\n\t alphabet.characters(newCharacters);\n\t }\n\n\t return alphabet.shuffled();\n\t}\n\n\t/**\n\t * Generate unique id\n\t * Returns string id\n\t */\n\tfunction generate() {\n\t return build(clusterWorkerId);\n\t}\n\n\t// Export all other functions as properties of the generate function\n\tmodule.exports = generate;\n\tmodule.exports.generate = generate;\n\tmodule.exports.seed = seed;\n\tmodule.exports.worker = worker;\n\tmodule.exports.characters = characters;\n\tmodule.exports.isValid = isValid$1;\n} (lib));\n\n(function (module) {\n\tmodule.exports = libExports;\n} (shortid$1));\n\nvar shortid = /*@__PURE__*/getDefaultExportFromCjs(shortidExports);\n\nfunction domainSession (domain, connection, logger, successMessages, errorMessages) {\r\n if (domain == null) {\r\n domain = \"global\";\r\n }\r\n successMessages = successMessages || [\"success\"];\r\n errorMessages = errorMessages || [\"error\"];\r\n var isJoined = false;\r\n var tryReconnecting = false;\r\n var _latestOptions;\r\n var _connectionOn = false;\r\n var callbacks = lib$1();\r\n connection.disconnected(handleConnectionDisconnected);\r\n connection.loggedIn(handleConnectionLoggedIn);\r\n connection.on(\"success\", function (msg) { return handleSuccessMessage(msg); });\r\n connection.on(\"error\", function (msg) { return handleErrorMessage(msg); });\r\n connection.on(\"result\", function (msg) { return handleSuccessMessage(msg); });\r\n if (successMessages) {\r\n successMessages.forEach(function (sm) {\r\n connection.on(sm, function (msg) { return handleSuccessMessage(msg); });\r\n });\r\n }\r\n if (errorMessages) {\r\n errorMessages.forEach(function (sm) {\r\n connection.on(sm, function (msg) { return handleErrorMessage(msg); });\r\n });\r\n }\r\n var requestsMap = {};\r\n function join(options) {\r\n _latestOptions = options;\r\n return new Promise(function (resolve, reject) {\r\n if (isJoined) {\r\n resolve({});\r\n return;\r\n }\r\n var joinPromise;\r\n if (domain === \"global\") {\r\n joinPromise = _connectionOn ? Promise.resolve({}) : Promise.reject(\"not connected to gateway\");\r\n }\r\n else {\r\n logger.debug(\"joining domain \".concat(domain));\r\n var joinMsg = {\r\n type: \"join\",\r\n destination: domain,\r\n domain: \"global\",\r\n options: options,\r\n };\r\n joinPromise = send(joinMsg);\r\n }\r\n joinPromise\r\n .then(function () {\r\n handleJoined();\r\n resolve({});\r\n })\r\n .catch(function (err) {\r\n logger.debug(\"error joining \" + domain + \" domain: \" + JSON.stringify(err));\r\n reject(err);\r\n });\r\n });\r\n }\r\n function leave() {\r\n if (domain === \"global\") {\r\n return Promise.resolve();\r\n }\r\n logger.debug(\"stopping session \" + domain + \"...\");\r\n var leaveMsg = {\r\n type: \"leave\",\r\n destination: domain,\r\n domain: \"global\",\r\n };\r\n tryReconnecting = false;\r\n return send(leaveMsg)\r\n .then(function () {\r\n isJoined = false;\r\n callbacks.execute(\"onLeft\");\r\n })\r\n .catch(function () {\r\n isJoined = false;\r\n callbacks.execute(\"onLeft\");\r\n });\r\n }\r\n function handleJoined() {\r\n logger.debug(\"did join \" + domain);\r\n isJoined = true;\r\n var wasReconnect = tryReconnecting;\r\n tryReconnecting = false;\r\n callbacks.execute(\"onJoined\", wasReconnect);\r\n }\r\n function handleConnectionDisconnected() {\r\n _connectionOn = false;\r\n logger.debug(\"connection is down\");\r\n isJoined = false;\r\n tryReconnecting = true;\r\n callbacks.execute(\"onLeft\", { disconnected: true });\r\n }\r\n function handleConnectionLoggedIn() {\r\n _connectionOn = true;\r\n if (tryReconnecting) {\r\n logger.debug(\"connection is now up - trying to reconnect...\");\r\n join(_latestOptions);\r\n }\r\n }\r\n function onJoined(callback) {\r\n if (isJoined) {\r\n callback(false);\r\n }\r\n return callbacks.add(\"onJoined\", callback);\r\n }\r\n function onLeft(callback) {\r\n if (!isJoined) {\r\n callback();\r\n }\r\n return callbacks.add(\"onLeft\", callback);\r\n }\r\n function handleErrorMessage(msg) {\r\n if (domain !== msg.domain) {\r\n return;\r\n }\r\n var requestId = msg.request_id;\r\n if (!requestId) {\r\n return;\r\n }\r\n var entry = requestsMap[requestId];\r\n if (!entry) {\r\n return;\r\n }\r\n entry.error(msg);\r\n }\r\n function handleSuccessMessage(msg) {\r\n if (msg.domain !== domain) {\r\n return;\r\n }\r\n var requestId = msg.request_id;\r\n if (!requestId) {\r\n return;\r\n }\r\n var entry = requestsMap[requestId];\r\n if (!entry) {\r\n return;\r\n }\r\n entry.success(msg);\r\n }\r\n function getNextRequestId() {\r\n return shortid();\r\n }\r\n function send(msg, tag, options) {\r\n options = options || {};\r\n msg.request_id = msg.request_id || getNextRequestId();\r\n msg.domain = msg.domain || domain;\r\n if (!options.skipPeerId) {\r\n msg.peer_id = connection.peerId;\r\n }\r\n var requestId = msg.request_id;\r\n return new Promise(function (resolve, reject) {\r\n requestsMap[requestId] = {\r\n success: function (successMsg) {\r\n delete requestsMap[requestId];\r\n successMsg._tag = tag;\r\n resolve(successMsg);\r\n },\r\n error: function (errorMsg) {\r\n logger.warn(\"GW error - \".concat(JSON.stringify(errorMsg), \" for request \").concat(JSON.stringify(msg)));\r\n delete requestsMap[requestId];\r\n errorMsg._tag = tag;\r\n reject(errorMsg);\r\n },\r\n };\r\n connection\r\n .send(msg, options)\r\n .catch(function (err) {\r\n requestsMap[requestId].error({ err: err });\r\n });\r\n });\r\n }\r\n function sendFireAndForget(msg) {\r\n msg.request_id = msg.request_id ? msg.request_id : getNextRequestId();\r\n msg.domain = msg.domain || domain;\r\n msg.peer_id = connection.peerId;\r\n return connection.send(msg);\r\n }\r\n return {\r\n join: join,\r\n leave: leave,\r\n onJoined: onJoined,\r\n onLeft: onLeft,\r\n send: send,\r\n sendFireAndForget: sendFireAndForget,\r\n on: function (type, callback) {\r\n connection.on(type, function (msg) {\r\n if (msg.domain !== domain) {\r\n return;\r\n }\r\n try {\r\n callback(msg);\r\n }\r\n catch (e) {\r\n logger.error(\"Callback failed: \".concat(e, \" \\n \").concat(e.stack, \" \\n msg was: \").concat(JSON.stringify(msg)), e);\r\n }\r\n });\r\n },\r\n loggedIn: function (callback) { return connection.loggedIn(callback); },\r\n connected: function (callback) { return connection.connected(callback); },\r\n disconnected: function (callback) { return connection.disconnected(callback); },\r\n get peerId() {\r\n return connection.peerId;\r\n },\r\n get domain() {\r\n return domain;\r\n },\r\n };\r\n}\n\nvar GW3ProtocolImpl = (function () {\r\n function GW3ProtocolImpl(connection, settings, logger) {\r\n var _this = this;\r\n this.connection = connection;\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.protocolVersion = 3;\r\n this.datePrefix = \"#T42_DATE#\";\r\n this.datePrefixLen = this.datePrefix.length;\r\n this.dateMinLen = this.datePrefixLen + 1;\r\n this.datePrefixFirstChar = this.datePrefix[0];\r\n this.registry = lib$1();\r\n this._isLoggedIn = false;\r\n this.shouldTryLogin = true;\r\n this.initialLogin = true;\r\n this.initialLoginAttempts = 3;\r\n this.sessions = [];\r\n connection.disconnected(function () {\r\n _this.handleDisconnected();\r\n });\r\n this.ping();\r\n }\r\n Object.defineProperty(GW3ProtocolImpl.prototype, \"isLoggedIn\", {\r\n get: function () {\r\n return this._isLoggedIn;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GW3ProtocolImpl.prototype.processStringMessage = function (message) {\r\n var _this = this;\r\n var msg = JSON.parse(message, function (key, value) {\r\n if (typeof value !== \"string\") {\r\n return value;\r\n }\r\n if (value.length < _this.dateMinLen) {\r\n return value;\r\n }\r\n if (value[0] !== _this.datePrefixFirstChar) {\r\n return value;\r\n }\r\n if (value.substring(0, _this.datePrefixLen) !== _this.datePrefix) {\r\n return value;\r\n }\r\n try {\r\n var milliseconds = parseInt(value.substring(_this.datePrefixLen, value.length), 10);\r\n if (isNaN(milliseconds)) {\r\n return value;\r\n }\r\n return new Date(milliseconds);\r\n }\r\n catch (ex) {\r\n return value;\r\n }\r\n });\r\n return {\r\n msg: msg,\r\n msgType: msg.type,\r\n };\r\n };\r\n GW3ProtocolImpl.prototype.createStringMessage = function (message) {\r\n var oldToJson = Date.prototype.toJSON;\r\n try {\r\n var datePrefix_1 = this.datePrefix;\r\n Date.prototype.toJSON = function () {\r\n return datePrefix_1 + this.getTime();\r\n };\r\n var result = JSON.stringify(message);\r\n return result;\r\n }\r\n finally {\r\n Date.prototype.toJSON = oldToJson;\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.processObjectMessage = function (message) {\r\n if (!message.type) {\r\n throw new Error(\"Object should have type property\");\r\n }\r\n return {\r\n msg: message,\r\n msgType: message.type,\r\n };\r\n };\r\n GW3ProtocolImpl.prototype.createObjectMessage = function (message) {\r\n return message;\r\n };\r\n GW3ProtocolImpl.prototype.login = function (config, reconnect) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authentication, token, e_1, _a, helloMsg, sendOptions, welcomeMsg, msg, token, _b, err_1;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n this.logger.debug(\"logging in...\");\r\n this.loginConfig = config;\r\n if (!this.loginConfig) {\r\n this.loginConfig = { username: \"\", password: \"\" };\r\n }\r\n this.shouldTryLogin = true;\r\n authentication = {};\r\n this.connection.gatewayToken = config.gatewayToken;\r\n if (!config.gatewayToken) return [3, 5];\r\n if (!reconnect) return [3, 4];\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, 3, , 4]);\r\n return [4, this.getNewGWToken()];\r\n case 2:\r\n token = _c.sent();\r\n config.gatewayToken = token;\r\n return [3, 4];\r\n case 3:\r\n e_1 = _c.sent();\r\n this.logger.warn(\"failed to get GW token when reconnecting \".concat((e_1 === null || e_1 === void 0 ? void 0 : e_1.message) || e_1));\r\n return [3, 4];\r\n case 4:\r\n authentication.method = \"gateway-token\";\r\n authentication.token = config.gatewayToken;\r\n this.connection.gatewayToken = config.gatewayToken;\r\n return [3, 10];\r\n case 5:\r\n if (!(config.flowName === \"sspi\")) return [3, 9];\r\n authentication.provider = \"win\";\r\n authentication.method = \"access-token\";\r\n if (!(config.flowCallback && config.sessionId)) return [3, 7];\r\n _a = authentication;\r\n return [4, config.flowCallback(config.sessionId, null)];\r\n case 6:\r\n _a.token =\r\n (_c.sent())\r\n .data\r\n .toString(\"base64\");\r\n return [3, 8];\r\n case 7: throw new Error(\"Invalid SSPI config\");\r\n case 8: return [3, 10];\r\n case 9:\r\n if (config.token) {\r\n authentication.method = \"access-token\";\r\n authentication.token = config.token;\r\n }\r\n else if (config.username) {\r\n authentication.method = \"secret\";\r\n authentication.login = config.username;\r\n authentication.secret = config.password;\r\n }\r\n else if (config.provider) {\r\n authentication.provider = config.provider;\r\n authentication.providerContext = config.providerContext;\r\n }\r\n else {\r\n throw new Error(\"invalid auth message\" + JSON.stringify(config));\r\n }\r\n _c.label = 10;\r\n case 10:\r\n helloMsg = {\r\n type: \"hello\",\r\n identity: this.settings.identity,\r\n authentication: authentication\r\n };\r\n if (config.sessionId) {\r\n helloMsg.request_id = config.sessionId;\r\n }\r\n this.globalDomain = domainSession(\"global\", this.connection, this.logger.subLogger(\"global-domain\"), [\r\n \"welcome\",\r\n \"token\",\r\n \"authentication-request\"\r\n ]);\r\n sendOptions = { skipPeerId: true };\r\n if (this.initialLogin) {\r\n sendOptions.retryInterval = this.settings.reconnectInterval;\r\n sendOptions.maxRetries = this.settings.reconnectAttempts;\r\n }\r\n _c.label = 11;\r\n case 11:\r\n _c.trys.push([11, 19, 20, 21]);\r\n welcomeMsg = void 0;\r\n _c.label = 12;\r\n case 12:\r\n return [4, this.globalDomain.send(helloMsg, undefined, sendOptions)];\r\n case 13:\r\n msg = _c.sent();\r\n if (!(msg.type === \"authentication-request\")) return [3, 16];\r\n token = Buffer.from(msg.authentication.token, \"base64\");\r\n if (!(config.flowCallback && config.sessionId)) return [3, 15];\r\n _b = helloMsg.authentication;\r\n return [4, config.flowCallback(config.sessionId, token)];\r\n case 14:\r\n _b.token =\r\n (_c.sent())\r\n .data\r\n .toString(\"base64\");\r\n _c.label = 15;\r\n case 15:\r\n helloMsg.request_id = config.sessionId;\r\n return [3, 12];\r\n case 16:\r\n if (msg.type === \"welcome\") {\r\n welcomeMsg = msg;\r\n return [3, 18];\r\n }\r\n else if (msg.type === \"error\") {\r\n throw new Error(\"Authentication failed: \" + msg.reason);\r\n }\r\n else {\r\n throw new Error(\"Unexpected message type during authentication: \" + msg.type);\r\n }\r\n case 17: return [3, 12];\r\n case 18:\r\n this.initialLogin = false;\r\n this.logger.debug(\"login successful with peerId \" + welcomeMsg.peer_id);\r\n this.connection.peerId = welcomeMsg.peer_id;\r\n this.connection.resolvedIdentity = welcomeMsg.resolved_identity;\r\n this.connection.availableDomains = welcomeMsg.available_domains;\r\n if (welcomeMsg.options) {\r\n this.connection.token = welcomeMsg.options.access_token;\r\n this.connection.info = welcomeMsg.options.info;\r\n }\r\n this.setLoggedIn(true);\r\n return [2, welcomeMsg.resolved_identity];\r\n case 19:\r\n err_1 = _c.sent();\r\n this.logger.error(\"error sending hello message - \" + (err_1.message || err_1.msg || err_1.reason || err_1), err_1);\r\n throw err_1;\r\n case 20:\r\n if (config && config.flowCallback && config.sessionId) {\r\n config.flowCallback(config.sessionId, null);\r\n }\r\n return [7];\r\n case 21: return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.logout = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var promises;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.debug(\"logging out...\");\r\n this.shouldTryLogin = false;\r\n if (this.pingTimer) {\r\n clearTimeout(this.pingTimer);\r\n }\r\n promises = this.sessions.map(function (session) {\r\n session.leave();\r\n });\r\n return [4, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.loggedIn = function (callback) {\r\n if (this._isLoggedIn) {\r\n callback();\r\n }\r\n return this.registry.add(\"onLoggedIn\", callback);\r\n };\r\n GW3ProtocolImpl.prototype.domain = function (domainName, domainLogger, successMessages, errorMessages) {\r\n var session = this.sessions.filter(function (s) { return s.domain === domainName; })[0];\r\n if (!session) {\r\n session = domainSession(domainName, this.connection, domainLogger, successMessages, errorMessages);\r\n this.sessions.push(session);\r\n }\r\n return session;\r\n };\r\n GW3ProtocolImpl.prototype.handleDisconnected = function () {\r\n var _this = this;\r\n this.setLoggedIn(false);\r\n var tryToLogin = this.shouldTryLogin;\r\n if (tryToLogin && this.initialLogin) {\r\n if (this.initialLoginAttempts <= 0) {\r\n return;\r\n }\r\n this.initialLoginAttempts--;\r\n }\r\n this.logger.debug(\"disconnected - will try new login?\" + this.shouldTryLogin);\r\n if (this.shouldTryLogin) {\r\n if (!this.loginConfig) {\r\n throw new Error(\"no login info\");\r\n }\r\n this.connection.login(this.loginConfig, true)\r\n .catch(function () {\r\n setTimeout(_this.handleDisconnected.bind(_this), _this.settings.reconnectInterval || 1000);\r\n });\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.setLoggedIn = function (value) {\r\n this._isLoggedIn = value;\r\n if (this._isLoggedIn) {\r\n this.registry.execute(\"onLoggedIn\");\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.ping = function () {\r\n var _this = this;\r\n if (!this.shouldTryLogin) {\r\n return;\r\n }\r\n if (this._isLoggedIn) {\r\n this.connection.send({ type: \"ping\" });\r\n }\r\n this.pingTimer = setTimeout(function () {\r\n _this.ping();\r\n }, 30 * 1000);\r\n };\r\n GW3ProtocolImpl.prototype.authToken = function () {\r\n var createTokenReq = {\r\n type: \"create-token\"\r\n };\r\n if (!this.globalDomain) {\r\n return Promise.reject(new Error(\"no global domain session\"));\r\n }\r\n return this.globalDomain.send(createTokenReq)\r\n .then(function (res) {\r\n return res.token;\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.getNewGWToken = function () {\r\n if (typeof window !== \"undefined\") {\r\n var glue42gd = window.glue42gd;\r\n if (glue42gd) {\r\n return glue42gd.getGWToken();\r\n }\r\n }\r\n return Promise.reject(new Error(\"not running in GD\"));\r\n };\r\n return GW3ProtocolImpl;\r\n}());\n\nvar MessageReplayerImpl = (function () {\r\n function MessageReplayerImpl(specs) {\r\n this.specsNames = [];\r\n this.messages = {};\r\n this.subs = {};\r\n this.subsRefCount = {};\r\n this.specs = {};\r\n for (var _i = 0, specs_1 = specs; _i < specs_1.length; _i++) {\r\n var spec = specs_1[_i];\r\n this.specs[spec.name] = spec;\r\n this.specsNames.push(spec.name);\r\n }\r\n }\r\n MessageReplayerImpl.prototype.init = function (connection) {\r\n var _this = this;\r\n this.connection = connection;\r\n for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) {\r\n var name_1 = _a[_i];\r\n var _loop_1 = function (type) {\r\n var refCount = this_1.subsRefCount[type];\r\n if (!refCount) {\r\n refCount = 0;\r\n }\r\n refCount += 1;\r\n this_1.subsRefCount[type] = refCount;\r\n if (refCount > 1) {\r\n return \"continue\";\r\n }\r\n var sub = connection.on(type, function (msg) { return _this.processMessage(type, msg); });\r\n this_1.subs[type] = sub;\r\n };\r\n var this_1 = this;\r\n for (var _b = 0, _c = this.specs[name_1].types; _b < _c.length; _b++) {\r\n var type = _c[_b];\r\n _loop_1(type);\r\n }\r\n }\r\n };\r\n MessageReplayerImpl.prototype.processMessage = function (type, msg) {\r\n if (this.isDone || !msg) {\r\n return;\r\n }\r\n for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) {\r\n var name_2 = _a[_i];\r\n if (this.specs[name_2].types.indexOf(type) !== -1) {\r\n var messages = this.messages[name_2] || [];\r\n this.messages[name_2] = messages;\r\n messages.push(msg);\r\n }\r\n }\r\n };\r\n MessageReplayerImpl.prototype.drain = function (name, callback) {\r\n var _a;\r\n if (callback) {\r\n (this.messages[name] || []).forEach(callback);\r\n }\r\n delete this.messages[name];\r\n for (var _i = 0, _b = this.specs[name].types; _i < _b.length; _i++) {\r\n var type = _b[_i];\r\n this.subsRefCount[type] -= 1;\r\n if (this.subsRefCount[type] <= 0) {\r\n (_a = this.connection) === null || _a === void 0 ? void 0 : _a.off(this.subs[type]);\r\n delete this.subs[type];\r\n delete this.subsRefCount[type];\r\n }\r\n }\r\n delete this.specs[name];\r\n if (!this.specs.length) {\r\n this.isDone = true;\r\n }\r\n };\r\n return MessageReplayerImpl;\r\n}());\n\nvar PromisePlus = function (executor, timeoutMilliseconds, timeoutMessage) {\r\n return new Promise(function (resolve, reject) {\r\n var timeout = setTimeout(function () {\r\n var message = timeoutMessage || \"Promise timeout hit: \".concat(timeoutMilliseconds);\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n var providedPromise = new Promise(executor);\r\n providedPromise\r\n .then(function (result) {\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch(function (error) {\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n};\n\nvar WebPlatformTransport = (function () {\r\n function WebPlatformTransport(settings, logger, identity) {\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.identity = identity;\r\n this.iAmConnected = false;\r\n this.parentReady = false;\r\n this.rejected = false;\r\n this.children = [];\r\n this.extContentAvailable = false;\r\n this.extContentConnecting = false;\r\n this.extContentConnected = false;\r\n this.parentInExtMode = false;\r\n this.webNamespace = \"g42_core_web\";\r\n this.parentPingTimeout = 5000;\r\n this.connectionRequestTimeout = 7000;\r\n this.defaultTargetString = \"*\";\r\n this.registry = lib$1();\r\n this.messages = {\r\n connectionAccepted: { name: \"connectionAccepted\", handle: this.handleConnectionAccepted.bind(this) },\r\n connectionRejected: { name: \"connectionRejected\", handle: this.handleConnectionRejected.bind(this) },\r\n connectionRequest: { name: \"connectionRequest\", handle: this.handleConnectionRequest.bind(this) },\r\n parentReady: {\r\n name: \"parentReady\", handle: function () {\r\n }\r\n },\r\n parentPing: { name: \"parentPing\", handle: this.handleParentPing.bind(this) },\r\n platformPing: { name: \"platformPing\", handle: this.handlePlatformPing.bind(this) },\r\n platformReady: { name: \"platformReady\", handle: this.handlePlatformReady.bind(this) },\r\n clientUnload: { name: \"clientUnload\", handle: this.handleClientUnload.bind(this) },\r\n manualUnload: { name: \"manualUnload\", handle: this.handleManualUnload.bind(this) },\r\n extConnectionResponse: { name: \"extConnectionResponse\", handle: this.handleExtConnectionResponse.bind(this) },\r\n extSetupRequest: { name: \"extSetupRequest\", handle: this.handleExtSetupRequest.bind(this) },\r\n gatewayDisconnect: { name: \"gatewayDisconnect\", handle: this.handleGatewayDisconnect.bind(this) },\r\n gatewayInternalConnect: { name: \"gatewayInternalConnect\", handle: this.handleGatewayInternalConnect.bind(this) }\r\n };\r\n this.extContentAvailable = !!window.glue42ext;\r\n this.setUpMessageListener();\r\n this.setUpUnload();\r\n this.setupPlatformUnloadListener();\r\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : undefined;\r\n }\r\n WebPlatformTransport.prototype.manualSetReadyState = function () {\r\n this.iAmConnected = true;\r\n this.parentReady = true;\r\n };\r\n Object.defineProperty(WebPlatformTransport.prototype, \"transportWindowId\", {\r\n get: function () {\r\n return this.publicWindowId;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebPlatformTransport.prototype, \"communicationId\", {\r\n get: function () {\r\n return this._communicationId;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WebPlatformTransport.prototype.sendObject = function (msg) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (this.extContentConnected) {\r\n return [2, window.postMessage({ glue42ExtOut: msg }, this.defaultTargetString)];\r\n }\r\n if (!this.port) {\r\n throw new Error(\"Cannot send message, because the port was not opened yet\");\r\n }\r\n this.port.postMessage(msg);\r\n return [2];\r\n });\r\n });\r\n };\r\n Object.defineProperty(WebPlatformTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WebPlatformTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n WebPlatformTransport.prototype.send = function () {\r\n return Promise.reject(\"not supported\");\r\n };\r\n WebPlatformTransport.prototype.onConnectedChanged = function (callback) {\r\n return this.registry.add(\"onConnectedChanged\", callback);\r\n };\r\n WebPlatformTransport.prototype.open = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.debug(\"opening a connection to the web platform gateway.\");\r\n return [4, this.connect()];\r\n case 1:\r\n _a.sent();\r\n this.notifyStatusChanged(true);\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.close = function () {\r\n var _a, _b;\r\n var message = {\r\n glue42core: {\r\n type: this.messages.gatewayDisconnect.name,\r\n data: {\r\n clientId: this.myClientId,\r\n ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n this.parentReady = false;\r\n this.notifyStatusChanged(false, \"manual reconnection\");\r\n return Promise.resolve();\r\n };\r\n WebPlatformTransport.prototype.name = function () {\r\n return \"web-platform\";\r\n };\r\n WebPlatformTransport.prototype.reconnect = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.close()];\r\n case 1:\r\n _a.sent();\r\n return [2, Promise.resolve()];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.initiateInternalConnection = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.logger.debug(\"opening an internal web platform connection\");\r\n _this.port = _this.settings.port;\r\n if (_this.iAmConnected) {\r\n _this.logger.warn(\"cannot open a new connection, because this client is currently connected\");\r\n return;\r\n }\r\n _this.port.onmessage = function (event) {\r\n var _a, _b;\r\n if (_this.iAmConnected && !((_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core)) {\r\n _this.registry.execute(\"onMessage\", event.data);\r\n return;\r\n }\r\n var data = (_b = event.data) === null || _b === void 0 ? void 0 : _b.glue42core;\r\n if (!data) {\r\n return;\r\n }\r\n if (data.type === _this.messages.gatewayInternalConnect.name && data.success) {\r\n _this.publicWindowId = _this.settings.windowId;\r\n if (_this.identity && _this.publicWindowId) {\r\n _this.identity.windowId = _this.publicWindowId;\r\n _this.identity.instance = _this.publicWindowId;\r\n }\r\n resolve();\r\n }\r\n if (data.type === _this.messages.gatewayInternalConnect.name && data.error) {\r\n reject(data.error);\r\n }\r\n };\r\n _this.port.postMessage({\r\n glue42core: {\r\n type: _this.messages.gatewayInternalConnect.name\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.initiateRemoteConnection = function (target) {\r\n var _this = this;\r\n return PromisePlus(function (resolve, reject) {\r\n var _a;\r\n _this.connectionResolve = resolve;\r\n _this.connectionReject = reject;\r\n _this.myClientId = (_a = _this.myClientId) !== null && _a !== void 0 ? _a : shortid();\r\n var bridgeInstanceId = _this.getMyWindowId() || shortid();\r\n var request = {\r\n glue42core: {\r\n type: _this.messages.connectionRequest.name,\r\n clientId: _this.myClientId,\r\n clientType: \"child\",\r\n bridgeInstanceId: bridgeInstanceId,\r\n selfAssignedWindowId: _this.selfAssignedWindowId\r\n }\r\n };\r\n _this.logger.debug(\"sending connection request\");\r\n if (_this.extContentConnecting) {\r\n request.glue42core.clientType = \"child\";\r\n request.glue42core.bridgeInstanceId = _this.myClientId;\r\n request.glue42core.parentWindowId = _this.parentWindowId;\r\n return window.postMessage(request, _this.defaultTargetString);\r\n }\r\n if (!target) {\r\n throw new Error(\"Cannot send a connection request, because no glue target was specified!\");\r\n }\r\n target.postMessage(request, _this.defaultTargetString);\r\n }, this.connectionRequestTimeout, \"The connection to the target glue window timed out\");\r\n };\r\n WebPlatformTransport.prototype.isParentCheckSuccess = function (parentCheck) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, parentCheck];\r\n case 1:\r\n _a.sent();\r\n return [2, { success: true }];\r\n case 2:\r\n _a.sent();\r\n return [2, { success: false }];\r\n case 3: return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.setUpMessageListener = function () {\r\n var _this = this;\r\n if (this.settings.port) {\r\n this.logger.debug(\"skipping generic message listener, because this is an internal client\");\r\n return;\r\n }\r\n window.addEventListener(\"message\", function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (!data || _this.rejected) {\r\n return;\r\n }\r\n var allowedOrigins = _this.settings.allowedOrigins || [];\r\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\r\n _this.logger.warn(\"received a message from an origin which is not in the allowed list: \".concat(event.origin));\r\n return;\r\n }\r\n if (!_this.checkMessageTypeValid(data.type)) {\r\n _this.logger.error(\"cannot handle the incoming glue42 core message, because the type is invalid: \".concat(data.type));\r\n return;\r\n }\r\n var messageType = data.type;\r\n _this.logger.debug(\"received valid glue42core message of type: \".concat(messageType));\r\n _this.messages[messageType].handle(event);\r\n });\r\n };\r\n WebPlatformTransport.prototype.setUpUnload = function () {\r\n var _this = this;\r\n if (this.settings.port) {\r\n this.logger.debug(\"skipping unload event listener, because this is an internal client\");\r\n return;\r\n }\r\n window.addEventListener(\"beforeunload\", function () {\r\n var _a, _b;\r\n if (_this.extContentConnected) {\r\n return;\r\n }\r\n var message = {\r\n glue42core: {\r\n type: _this.messages.clientUnload.name,\r\n data: {\r\n clientId: _this.myClientId,\r\n ownWindowId: (_a = _this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n if (_this.parent) {\r\n _this.parent.postMessage(message, _this.defaultTargetString);\r\n }\r\n (_b = _this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n });\r\n };\r\n WebPlatformTransport.prototype.handlePlatformReady = function (event) {\r\n this.logger.debug(\"the web platform gave the ready signal\");\r\n this.parentReady = true;\r\n if (this.parentPingResolve) {\r\n this.parentPingResolve();\r\n delete this.parentPingResolve;\r\n }\r\n if (this.parentPingInterval) {\r\n clearInterval(this.parentPingInterval);\r\n delete this.parentPingInterval;\r\n }\r\n this.parent = event.source;\r\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : \"window\";\r\n };\r\n WebPlatformTransport.prototype.handleConnectionAccepted = function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (this.myClientId === data.clientId) {\r\n return this.handleAcceptanceOfMyRequest(data);\r\n }\r\n return this.handleAcceptanceOfGrandChildRequest(data, event);\r\n };\r\n WebPlatformTransport.prototype.handleAcceptanceOfMyRequest = function (data) {\r\n var _this = this;\r\n this.logger.debug(\"handling a connection accepted signal targeted at me.\");\r\n this.isPreferredActivated = data.isPreferredActivated;\r\n if (this.extContentConnecting) {\r\n return this.processExtContentConnection(data);\r\n }\r\n if (!data.port) {\r\n this.logger.error(\"cannot set up my connection, because I was not provided with a port\");\r\n return;\r\n }\r\n this.publicWindowId = this.getMyWindowId();\r\n if (this.identity) {\r\n this.identity.windowId = this.publicWindowId;\r\n this.identity.instance = this.identity.instance ? this.identity.instance : this.publicWindowId || shortid();\r\n }\r\n if (this.identity && data.appName) {\r\n this.identity.application = data.appName;\r\n this.identity.applicationName = data.appName;\r\n }\r\n this._communicationId = data.communicationId;\r\n this.port = data.port;\r\n this.port.onmessage = function (e) { return _this.registry.execute(\"onMessage\", e.data); };\r\n if (this.connectionResolve) {\r\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\r\n this.connectionResolve();\r\n delete this.connectionResolve;\r\n return;\r\n }\r\n this.logger.error(\"unable to call the connection resolve, because no connection promise was found\");\r\n };\r\n WebPlatformTransport.prototype.processExtContentConnection = function (data) {\r\n var _this = this;\r\n this.logger.debug(\"handling a connection accepted signal targeted at me for extension content connection.\");\r\n this.extContentConnecting = false;\r\n this.extContentConnected = true;\r\n this.publicWindowId = this.parentWindowId || this.myClientId;\r\n if (this.extContentConnecting && this.identity) {\r\n this.identity.windowId = this.publicWindowId;\r\n }\r\n if (this.identity && data.appName) {\r\n this.identity.application = data.appName;\r\n this.identity.applicationName = data.appName;\r\n }\r\n window.addEventListener(\"message\", function (event) {\r\n var _a;\r\n var extData = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42ExtInc;\r\n if (!extData) {\r\n return;\r\n }\r\n var allowedOrigins = _this.settings.allowedOrigins || [];\r\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\r\n _this.logger.warn(\"received a message from an origin which is not in the allowed list: \".concat(event.origin));\r\n return;\r\n }\r\n _this.registry.execute(\"onMessage\", extData);\r\n });\r\n if (this.connectionResolve) {\r\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\r\n this.connectionResolve();\r\n delete this.connectionResolve;\r\n return;\r\n }\r\n };\r\n WebPlatformTransport.prototype.handleAcceptanceOfGrandChildRequest = function (data, event) {\r\n if (this.extContentConnecting || this.extContentConnected) {\r\n this.logger.debug(\"cannot process acceptance of a grandchild, because I am connected to a content script\");\r\n return;\r\n }\r\n this.logger.debug(\"handling a connection accepted signal targeted at a grandchild: \".concat(data.clientId));\r\n var child = this.children.find(function (c) { return c.grandChildId === data.clientId; });\r\n if (!child) {\r\n this.logger.error(\"cannot handle connection accepted for grandchild: \".concat(data.clientId, \", because there is no grandchild with this id\"));\r\n return;\r\n }\r\n child.connected = true;\r\n this.logger.debug(\"the grandchild connection for \".concat(data.clientId, \" is set up, forwarding the success message and the gateway port\"));\r\n data.parentWindowId = this.publicWindowId;\r\n child.source.postMessage(event.data, child.origin, [data.port]);\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleConnectionRejected = function () {\r\n this.logger.debug(\"handling a connection rejection. Most likely the reason is that this window was not created by a glue API call\");\r\n if (this.connectionReject) {\r\n this.connectionReject(\"The platform connection was rejected. Most likely because this window was not created by a glue API call\");\r\n delete this.connectionReject;\r\n }\r\n };\r\n WebPlatformTransport.prototype.handleConnectionRequest = function (event) {\r\n if (this.extContentConnecting) {\r\n this.logger.debug(\"This connection request event is targeted at the extension content\");\r\n return;\r\n }\r\n var source = event.source;\r\n var data = event.data.glue42core;\r\n if (!data.clientType || data.clientType !== \"grandChild\") {\r\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source was not opened by a glue API call\");\r\n }\r\n if (!data.clientId) {\r\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source did not provide a valid id\");\r\n }\r\n if (!this.parent) {\r\n return this.rejectConnectionRequest(source, event.origin, \"Cannot forward the connection request, because no direct connection to the platform was found\");\r\n }\r\n this.logger.debug(\"handling a connection request for a grandchild: \".concat(data.clientId));\r\n this.children.push({ grandChildId: data.clientId, source: source, connected: false, origin: event.origin });\r\n this.logger.debug(\"grandchild: \".concat(data.clientId, \" is prepared, forwarding connection request to the platform\"));\r\n this.parent.postMessage(event.data, this.defaultTargetString);\r\n };\r\n WebPlatformTransport.prototype.handleParentPing = function (event) {\r\n if (!this.parentReady) {\r\n this.logger.debug(\"my parent is not ready, I am ignoring the parent ping\");\r\n return;\r\n }\r\n if (!this.iAmConnected) {\r\n this.logger.debug(\"i am not fully connected yet, I am ignoring the parent ping\");\r\n return;\r\n }\r\n var message = {\r\n glue42core: {\r\n type: this.messages.parentReady.name\r\n }\r\n };\r\n if (this.extContentConnected) {\r\n message.glue42core.extMode = { windowId: this.myClientId };\r\n }\r\n var source = event.source;\r\n this.logger.debug(\"responding to a parent ping with a ready message\");\r\n source.postMessage(message, event.origin);\r\n };\r\n WebPlatformTransport.prototype.setupPlatformUnloadListener = function () {\r\n var _this = this;\r\n this.onMessage(function (msg) {\r\n if (msg.type === \"platformUnload\") {\r\n _this.logger.debug(\"detected a web platform unload\");\r\n _this.parentReady = false;\r\n _this.notifyStatusChanged(false, \"Gateway unloaded\");\r\n }\r\n });\r\n };\r\n WebPlatformTransport.prototype.handleManualUnload = function () {\r\n var _a, _b;\r\n var message = {\r\n glue42core: {\r\n type: this.messages.clientUnload.name,\r\n data: {\r\n clientId: this.myClientId,\r\n ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n if (this.extContentConnected) {\r\n return window.postMessage({ glue42ExtOut: message }, this.defaultTargetString);\r\n }\r\n (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n };\r\n WebPlatformTransport.prototype.handleClientUnload = function (event) {\r\n var data = event.data.glue42core;\r\n var clientId = data === null || data === void 0 ? void 0 : data.data.clientId;\r\n if (!clientId) {\r\n this.logger.warn(\"cannot process grand child unload, because the provided id was not valid\");\r\n return;\r\n }\r\n var foundChild = this.children.find(function (child) { return child.grandChildId === clientId; });\r\n if (!foundChild) {\r\n this.logger.warn(\"cannot process grand child unload, because this client is unaware of this grandchild\");\r\n return;\r\n }\r\n this.logger.debug(\"handling grandchild unload for id: \".concat(clientId));\r\n this.children = this.children.filter(function (child) { return child.grandChildId !== clientId; });\r\n };\r\n WebPlatformTransport.prototype.handlePlatformPing = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.notifyStatusChanged = function (status, reason) {\r\n this.iAmConnected = status;\r\n this.registry.execute(\"onConnectedChanged\", status, reason);\r\n };\r\n WebPlatformTransport.prototype.checkMessageTypeValid = function (typeToValidate) {\r\n return typeof typeToValidate === \"string\" && !!this.messages[typeToValidate];\r\n };\r\n WebPlatformTransport.prototype.rejectConnectionRequest = function (source, origin, reason) {\r\n this.rejected = true;\r\n this.logger.error(reason);\r\n var rejection = {\r\n glue42core: {\r\n type: this.messages.connectionRejected.name\r\n }\r\n };\r\n source.postMessage(rejection, origin);\r\n };\r\n WebPlatformTransport.prototype.requestConnectionPermissionFromExt = function () {\r\n var _this = this;\r\n return this.waitForContentScript()\r\n .then(function () { return PromisePlus(function (resolve, reject) {\r\n _this.extConnectionResolve = resolve;\r\n _this.extConnectionReject = reject;\r\n var message = {\r\n glue42core: {\r\n type: \"extSetupRequest\"\r\n }\r\n };\r\n _this.logger.debug(\"permission request to the extension content script was sent\");\r\n window.postMessage(message, _this.defaultTargetString);\r\n }, _this.parentPingTimeout, \"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out\"); });\r\n };\r\n WebPlatformTransport.prototype.handleExtConnectionResponse = function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (!data.approved) {\r\n return this.extConnectionReject ? this.extConnectionReject(\"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection was rejected\") : undefined;\r\n }\r\n if (this.extConnectionResolve) {\r\n this.extConnectionResolve();\r\n delete this.extConnectionResolve;\r\n }\r\n this.extContentConnecting = true;\r\n this.parentType = \"extension\";\r\n this.logger.debug(\"The extension connection was approved, proceeding.\");\r\n };\r\n WebPlatformTransport.prototype.handleExtSetupRequest = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleGatewayDisconnect = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleGatewayInternalConnect = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.waitForContentScript = function () {\r\n var _a;\r\n var contentReady = !!((_a = window.glue42ext) === null || _a === void 0 ? void 0 : _a.content);\r\n if (contentReady) {\r\n return Promise.resolve();\r\n }\r\n return PromisePlus(function (resolve) {\r\n window.addEventListener(\"Glue42EXTReady\", function () {\r\n resolve();\r\n });\r\n }, this.connectionRequestTimeout, \"The content script was available, but was never heard to be ready\");\r\n };\r\n WebPlatformTransport.prototype.connect = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.settings.port) return [3, 2];\r\n return [4, this.initiateInternalConnection()];\r\n case 1:\r\n _a.sent();\r\n this.logger.debug(\"internal web platform connection completed\");\r\n return [2];\r\n case 2:\r\n this.logger.debug(\"opening a client web platform connection\");\r\n return [4, this.findParent()];\r\n case 3:\r\n _a.sent();\r\n return [4, this.initiateRemoteConnection(this.parent)];\r\n case 4:\r\n _a.sent();\r\n this.logger.debug(\"the client is connected\");\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.findParent = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var connectionNotPossibleMsg, myInsideParents, myOutsideParents, uniqueParents, defaultParentCheck;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\r\n myInsideParents = this.getPossibleParentsInWindow(window);\r\n myOutsideParents = this.getPossibleParentsOutsideWindow((_a = window.top) === null || _a === void 0 ? void 0 : _a.opener, window.top);\r\n uniqueParents = new Set(__spreadArray(__spreadArray([], myInsideParents, true), myOutsideParents, true));\r\n if (!uniqueParents.size && !this.extContentAvailable) {\r\n throw new Error(connectionNotPossibleMsg);\r\n }\r\n if (!(!uniqueParents.size && this.extContentAvailable)) return [3, 2];\r\n return [4, this.requestConnectionPermissionFromExt()];\r\n case 1:\r\n _b.sent();\r\n return [2];\r\n case 2: return [4, this.isParentCheckSuccess(this.confirmParent(Array.from(uniqueParents)))];\r\n case 3:\r\n defaultParentCheck = _b.sent();\r\n if (defaultParentCheck.success) {\r\n this.logger.debug(\"The default parent was found!\");\r\n return [2];\r\n }\r\n if (!this.extContentAvailable) {\r\n throw new Error(connectionNotPossibleMsg);\r\n }\r\n return [4, this.requestConnectionPermissionFromExt()];\r\n case 4:\r\n _b.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.getPossibleParentsInWindow = function (currentWindow) {\r\n return (!currentWindow || currentWindow === currentWindow.top) ? [] : __spreadArray([currentWindow.parent], this.getPossibleParentsInWindow(currentWindow.parent), true);\r\n };\r\n WebPlatformTransport.prototype.getPossibleParentsOutsideWindow = function (opener, current) {\r\n return (!opener || !current || opener === current) ? [] : __spreadArray(__spreadArray([opener], this.getPossibleParentsInWindow(opener), true), this.getPossibleParentsOutsideWindow(opener.opener, opener), true);\r\n };\r\n WebPlatformTransport.prototype.confirmParent = function (targets) {\r\n var _this = this;\r\n var connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\r\n var parentCheck = PromisePlus(function (resolve) {\r\n _this.parentPingResolve = resolve;\r\n var message = {\r\n glue42core: {\r\n type: _this.messages.platformPing.name\r\n }\r\n };\r\n _this.parentPingInterval = setInterval(function () {\r\n targets.forEach(function (target) {\r\n target.postMessage(message, _this.defaultTargetString);\r\n });\r\n }, 1000);\r\n }, this.parentPingTimeout, connectionNotPossibleMsg);\r\n parentCheck.catch(function () {\r\n if (_this.parentPingInterval) {\r\n clearInterval(_this.parentPingInterval);\r\n delete _this.parentPingInterval;\r\n }\r\n });\r\n return parentCheck;\r\n };\r\n WebPlatformTransport.prototype.getMyWindowId = function () {\r\n var _a;\r\n if (this.parentType === \"workspace\") {\r\n return window.name.substring(0, window.name.indexOf(\"#wsp\"));\r\n }\r\n if (window !== window.top) {\r\n return;\r\n }\r\n if ((_a = window.name) === null || _a === void 0 ? void 0 : _a.includes(\"g42\")) {\r\n return window.name;\r\n }\r\n this.selfAssignedWindowId = this.selfAssignedWindowId || \"g42-\".concat(shortid());\r\n return this.selfAssignedWindowId;\r\n };\r\n return WebPlatformTransport;\r\n}());\n\nvar waitForInvocations = function (invocations, callback) {\r\n var left = invocations;\r\n return function () {\r\n left--;\r\n if (left === 0) {\r\n callback();\r\n }\r\n };\r\n};\n\nvar AsyncSequelizer = (function () {\r\n function AsyncSequelizer(minSequenceInterval) {\r\n if (minSequenceInterval === void 0) { minSequenceInterval = 0; }\r\n this.minSequenceInterval = minSequenceInterval;\r\n this.queue = [];\r\n this.isExecutingQueue = false;\r\n }\r\n AsyncSequelizer.prototype.enqueue = function (action) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.queue.push({ action: action, resolve: resolve, reject: reject });\r\n _this.executeQueue();\r\n });\r\n };\r\n AsyncSequelizer.prototype.executeQueue = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var operation, actionResult, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.isExecutingQueue) {\r\n return [2];\r\n }\r\n this.isExecutingQueue = true;\r\n _a.label = 1;\r\n case 1:\r\n if (!this.queue.length) return [3, 7];\r\n operation = this.queue.shift();\r\n if (!operation) {\r\n this.isExecutingQueue = false;\r\n return [2];\r\n }\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4, operation.action()];\r\n case 3:\r\n actionResult = _a.sent();\r\n operation.resolve(actionResult);\r\n return [3, 5];\r\n case 4:\r\n error_1 = _a.sent();\r\n operation.reject(error_1);\r\n return [3, 5];\r\n case 5: return [4, this.intervalBreak()];\r\n case 6:\r\n _a.sent();\r\n return [3, 1];\r\n case 7:\r\n this.isExecutingQueue = false;\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n AsyncSequelizer.prototype.intervalBreak = function () {\r\n var _this = this;\r\n return new Promise(function (res) { return setTimeout(res, _this.minSequenceInterval); });\r\n };\r\n return AsyncSequelizer;\r\n}());\n\nvar Connection = (function () {\r\n function Connection(settings, logger) {\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.messageHandlers = {};\r\n this.ids = 1;\r\n this.registry = lib$1();\r\n this._connected = false;\r\n this.isTrace = false;\r\n this._swapTransport = false;\r\n this._switchInProgress = false;\r\n this._transportSubscriptions = [];\r\n this._sequelizer = new AsyncSequelizer();\r\n settings = settings || {};\r\n settings.reconnectAttempts = settings.reconnectAttempts || 10;\r\n settings.reconnectInterval = settings.reconnectInterval || 1000;\r\n if (settings.inproc) {\r\n this.transport = new InProcTransport(settings.inproc, logger.subLogger(\"inMemory\"));\r\n }\r\n else if (settings.sharedWorker) {\r\n this.transport = new SharedWorkerTransport(settings.sharedWorker, logger.subLogger(\"shared-worker\"));\r\n }\r\n else if (settings.webPlatform) {\r\n this.transport = new WebPlatformTransport(settings.webPlatform, logger.subLogger(\"web-platform\"), settings.identity);\r\n }\r\n else if (settings.ws !== undefined) {\r\n this.transport = new WS(settings, logger.subLogger(\"ws\"));\r\n }\r\n else {\r\n throw new Error(\"No connection information specified\");\r\n }\r\n this.isTrace = logger.canPublish(\"trace\");\r\n logger.debug(\"starting with \".concat(this.transport.name(), \" transport\"));\r\n this.protocol = new GW3ProtocolImpl(this, settings, logger.subLogger(\"protocol\"));\r\n var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\r\n var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\r\n this._transportSubscriptions.push(unsubConnectionChanged);\r\n this._transportSubscriptions.push(unsubOnMessage);\r\n this._defaultTransport = this.transport;\r\n }\r\n Object.defineProperty(Connection.prototype, \"protocolVersion\", {\r\n get: function () {\r\n var _a;\r\n return (_a = this.protocol) === null || _a === void 0 ? void 0 : _a.protocolVersion;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Connection.prototype.switchTransport = function (settings) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2, this._sequelizer.enqueue(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var switchTargetTransport, verifyPromise, isSwitchSuccess;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!settings || typeof settings !== \"object\") {\r\n throw new Error(\"Cannot switch transports, because the settings are missing or invalid.\");\r\n }\r\n if (typeof settings.type === \"undefined\") {\r\n throw new Error(\"Cannot switch the transport, because the type is not defined\");\r\n }\r\n this.logger.trace(\"Starting transport switch with settings: \".concat(JSON.stringify(settings)));\r\n switchTargetTransport = settings.type === \"secondary\" ? this.getNewSecondaryTransport(settings) : this._defaultTransport;\r\n this._targetTransport = switchTargetTransport;\r\n this._targetAuth = settings.type === \"secondary\" ? this.getNewSecondaryAuth(settings) : this._defaultAuth;\r\n verifyPromise = this.verifyConnection();\r\n this._swapTransport = true;\r\n this._switchInProgress = true;\r\n this.logger.trace(\"The new transport has been set, closing the current transport\");\r\n return [4, this.transport.close()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4, verifyPromise];\r\n case 3:\r\n _a.sent();\r\n isSwitchSuccess = this.transport === switchTargetTransport;\r\n this.logger.info(\"The reconnection after the switch was completed. Was the switch a success: \".concat(isSwitchSuccess));\r\n this._switchInProgress = false;\r\n return [2, { success: isSwitchSuccess }];\r\n case 4:\r\n _a.sent();\r\n this.logger.info(\"The reconnection after the switch timed out, reverting back to the default transport.\");\r\n this.switchTransport({ type: \"default\" });\r\n this._switchInProgress = false;\r\n return [2, { success: false }];\r\n case 5: return [2];\r\n }\r\n });\r\n }); })];\r\n });\r\n });\r\n };\r\n Connection.prototype.onLibReAnnounced = function (callback) {\r\n return this.registry.add(\"libReAnnounced\", callback);\r\n };\r\n Connection.prototype.setLibReAnnounced = function (lib) {\r\n this.registry.execute(\"libReAnnounced\", lib);\r\n };\r\n Connection.prototype.send = function (message, options) {\r\n if (this.transport.sendObject &&\r\n this.transport.isObjectBasedTransport) {\r\n var msg = this.protocol.createObjectMessage(message);\r\n if (this.isTrace) {\r\n this.logger.trace(\">> \".concat(JSON.stringify(msg)));\r\n }\r\n return this.transport.sendObject(msg, options);\r\n }\r\n else {\r\n var strMessage = this.protocol.createStringMessage(message);\r\n if (this.isTrace) {\r\n this.logger.trace(\">> \".concat(strMessage));\r\n }\r\n return this.transport.send(strMessage, options);\r\n }\r\n };\r\n Connection.prototype.on = function (type, messageHandler) {\r\n type = type.toLowerCase();\r\n if (this.messageHandlers[type] === undefined) {\r\n this.messageHandlers[type] = {};\r\n }\r\n var id = this.ids++;\r\n this.messageHandlers[type][id] = messageHandler;\r\n return {\r\n type: type,\r\n id: id,\r\n };\r\n };\r\n Connection.prototype.off = function (info) {\r\n delete this.messageHandlers[info.type.toLowerCase()][info.id];\r\n };\r\n Object.defineProperty(Connection.prototype, \"isConnected\", {\r\n get: function () {\r\n return this.protocol.isLoggedIn;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Connection.prototype.connected = function (callback) {\r\n var _this = this;\r\n return this.protocol.loggedIn(function () {\r\n var currentServer = _this.transport.name();\r\n callback(currentServer);\r\n });\r\n };\r\n Connection.prototype.disconnected = function (callback) {\r\n return this.registry.add(\"disconnected\", callback);\r\n };\r\n Connection.prototype.login = function (authRequest, reconnect) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newAuth, identity, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this._defaultAuth) {\r\n this._defaultAuth = authRequest;\r\n }\r\n if (this._swapTransport) {\r\n this.logger.trace(\"Detected a transport swap, swapping transports\");\r\n newAuth = this.transportSwap();\r\n authRequest = newAuth !== null && newAuth !== void 0 ? newAuth : authRequest;\r\n }\r\n this.logger.trace(\"Starting login for transport: \".concat(this.transport.name(), \" and auth \").concat(JSON.stringify(authRequest)));\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 4, , 5]);\r\n return [4, this.transport.open()];\r\n case 2:\r\n _a.sent();\r\n this.logger.trace(\"Transport: \".concat(this.transport.name(), \" opened, logging in\"));\r\n timer(\"connection\").mark(\"transport-opened\");\r\n return [4, this.protocol.login(authRequest, reconnect)];\r\n case 3:\r\n identity = _a.sent();\r\n this.logger.trace(\"Logged in with identity: \".concat(JSON.stringify(identity)));\r\n timer(\"connection\").mark(\"protocol-logged-in\");\r\n return [2, identity];\r\n case 4:\r\n error_2 = _a.sent();\r\n if (this._switchInProgress) {\r\n this.logger.trace(\"An error while logging in after a transport swap, preparing a default swap.\");\r\n this.prepareDefaultSwap();\r\n }\r\n throw new Error(error_2);\r\n case 5: return [2];\r\n }\r\n });\r\n });\r\n };\r\n Connection.prototype.logout = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.protocol.logout()];\r\n case 1:\r\n _a.sent();\r\n return [4, this.transport.close()];\r\n case 2:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Connection.prototype.loggedIn = function (callback) {\r\n return this.protocol.loggedIn(callback);\r\n };\r\n Connection.prototype.domain = function (domain, successMessages, errorMessages) {\r\n return this.protocol.domain(domain, this.logger.subLogger(\"domain=\".concat(domain)), successMessages, errorMessages);\r\n };\r\n Connection.prototype.authToken = function () {\r\n return this.protocol.authToken();\r\n };\r\n Connection.prototype.reconnect = function () {\r\n return this.transport.reconnect();\r\n };\r\n Connection.prototype.distributeMessage = function (message, type) {\r\n var _this = this;\r\n var handlers = this.messageHandlers[type.toLowerCase()];\r\n if (handlers !== undefined) {\r\n Object.keys(handlers).forEach(function (handlerId) {\r\n var handler = handlers[handlerId];\r\n if (handler !== undefined) {\r\n try {\r\n handler(message);\r\n }\r\n catch (error) {\r\n try {\r\n _this.logger.error(\"Message handler failed with \".concat(error.stack), error);\r\n }\r\n catch (loggerError) {\r\n console.log(\"Message handler failed\", error);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n };\r\n Connection.prototype.handleConnectionChanged = function (connected) {\r\n if (this._connected === connected) {\r\n return;\r\n }\r\n this._connected = connected;\r\n if (connected) {\r\n if (this.settings.replaySpecs && this.settings.replaySpecs.length) {\r\n this.replayer = new MessageReplayerImpl(this.settings.replaySpecs);\r\n this.replayer.init(this);\r\n }\r\n this.registry.execute(\"connected\");\r\n }\r\n else {\r\n this.registry.execute(\"disconnected\");\r\n }\r\n };\r\n Connection.prototype.handleTransportMessage = function (msg) {\r\n var msgObj;\r\n if (typeof msg === \"string\") {\r\n msgObj = this.protocol.processStringMessage(msg);\r\n }\r\n else {\r\n msgObj = this.protocol.processObjectMessage(msg);\r\n }\r\n if (this.isTrace) {\r\n this.logger.trace(\"<< \".concat(JSON.stringify(msgObj)));\r\n }\r\n this.distributeMessage(msgObj.msg, msgObj.msgType);\r\n };\r\n Connection.prototype.verifyConnection = function () {\r\n var _this = this;\r\n return PromisePlus(function (resolve) {\r\n var unsub;\r\n var ready = waitForInvocations(2, function () {\r\n if (unsub) {\r\n unsub();\r\n }\r\n resolve();\r\n });\r\n unsub = _this.onLibReAnnounced(function (lib) {\r\n if (lib.name === \"interop\") {\r\n return ready();\r\n }\r\n if (lib.name === \"contexts\") {\r\n return ready();\r\n }\r\n });\r\n }, 10000, \"Transport switch timed out waiting for all libraries to be re-announced\");\r\n };\r\n Connection.prototype.getNewSecondaryTransport = function (settings) {\r\n var _a;\r\n if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.url)) {\r\n throw new Error(\"Missing secondary transport URL.\");\r\n }\r\n return new WS(Object.assign({}, this.settings, { ws: settings.transportConfig.url, reconnectAttempts: 1 }), this.logger.subLogger(\"ws-secondary\"));\r\n };\r\n Connection.prototype.getNewSecondaryAuth = function (settings) {\r\n var _a;\r\n if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.auth)) {\r\n throw new Error(\"Missing secondary transport auth information.\");\r\n }\r\n return settings.transportConfig.auth;\r\n };\r\n Connection.prototype.transportSwap = function () {\r\n this._swapTransport = false;\r\n if (!this._targetTransport || !this._targetAuth) {\r\n this.logger.warn(\"Error while switching transports - either the target transport or auth is not defined: transport defined -> \".concat(!!this._defaultTransport, \", auth defined -> \").concat(!!this._targetAuth, \". Staying on the current one.\"));\r\n return;\r\n }\r\n this._transportSubscriptions.forEach(function (unsub) { return unsub(); });\r\n this._transportSubscriptions = [];\r\n this.transport = this._targetTransport;\r\n var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\r\n var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\r\n this._transportSubscriptions.push(unsubConnectionChanged);\r\n this._transportSubscriptions.push(unsubOnMessage);\r\n return this._targetAuth;\r\n };\r\n Connection.prototype.prepareDefaultSwap = function () {\r\n var _this = this;\r\n this._transportSubscriptions.forEach(function (unsub) { return unsub(); });\r\n this._transportSubscriptions = [];\r\n this.transport.close().catch(function (error) { return _this.logger.warn(\"Error closing the \".concat(_this.transport.name(), \" transport after a failed connection attempt: \").concat(JSON.stringify(error))); });\r\n this._targetTransport = this._defaultTransport;\r\n this._targetAuth = this._defaultAuth;\r\n this._swapTransport = true;\r\n };\r\n return Connection;\r\n}());\n\nvar order = [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"off\"];\r\nvar Logger = (function () {\r\n function Logger(name, parent, logFn) {\r\n this.name = name;\r\n this.parent = parent;\r\n this.subLoggers = [];\r\n this.logFn = console;\r\n this.customLogFn = false;\r\n this.name = name;\r\n if (parent) {\r\n this.path = \"\".concat(parent.path, \".\").concat(name);\r\n }\r\n else {\r\n this.path = name;\r\n }\r\n this.loggerFullName = \"[\".concat(this.path, \"]\");\r\n this.includeTimeAndLevel = !logFn;\r\n if (logFn) {\r\n this.logFn = logFn;\r\n this.customLogFn = true;\r\n }\r\n }\r\n Logger.prototype.subLogger = function (name) {\r\n var existingSub = this.subLoggers.filter(function (subLogger) {\r\n return subLogger.name === name;\r\n })[0];\r\n if (existingSub !== undefined) {\r\n return existingSub;\r\n }\r\n Object.keys(this).forEach(function (key) {\r\n if (key === name) {\r\n throw new Error(\"This sub logger name is not allowed.\");\r\n }\r\n });\r\n var sub = new Logger(name, this, this.customLogFn ? this.logFn : undefined);\r\n this.subLoggers.push(sub);\r\n return sub;\r\n };\r\n Logger.prototype.publishLevel = function (level) {\r\n var _a;\r\n if (level) {\r\n this._publishLevel = level;\r\n }\r\n return this._publishLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.publishLevel());\r\n };\r\n Logger.prototype.consoleLevel = function (level) {\r\n var _a;\r\n if (level) {\r\n this._consoleLevel = level;\r\n }\r\n return this._consoleLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.consoleLevel());\r\n };\r\n Logger.prototype.log = function (message, level, error) {\r\n this.publishMessage(level || \"info\", message, error);\r\n };\r\n Logger.prototype.trace = function (message) {\r\n this.log(message, \"trace\");\r\n };\r\n Logger.prototype.debug = function (message) {\r\n this.log(message, \"debug\");\r\n };\r\n Logger.prototype.info = function (message) {\r\n this.log(message, \"info\");\r\n };\r\n Logger.prototype.warn = function (message) {\r\n this.log(message, \"warn\");\r\n };\r\n Logger.prototype.error = function (message, err) {\r\n this.log(message, \"error\");\r\n };\r\n Logger.prototype.canPublish = function (level, compareWith) {\r\n var levelIdx = order.indexOf(level);\r\n var restrictionIdx = order.indexOf(compareWith || this.consoleLevel() || \"trace\");\r\n return levelIdx >= restrictionIdx;\r\n };\r\n Logger.prototype.publishMessage = function (level, message, error) {\r\n var loggerName = this.loggerFullName;\r\n if (level === \"error\" && !error) {\r\n var e = new Error();\r\n if (e.stack) {\r\n message =\r\n message +\r\n \"\\n\" +\r\n e.stack\r\n .split(\"\\n\")\r\n .slice(3)\r\n .join(\"\\n\");\r\n }\r\n }\r\n if (this.canPublish(level, this.publishLevel())) {\r\n var interop = Logger.Interop;\r\n if (interop) {\r\n try {\r\n if (interop.methods({ name: Logger.InteropMethodName }).length > 0) {\r\n interop.invoke(Logger.InteropMethodName, {\r\n msg: \"\".concat(message),\r\n logger: loggerName,\r\n level: level\r\n });\r\n }\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n }\r\n if (this.canPublish(level)) {\r\n var prefix = \"\";\r\n if (this.includeTimeAndLevel) {\r\n var date = new Date();\r\n var time = \"\".concat(date.getHours(), \":\").concat(date.getMinutes(), \":\").concat(date.getSeconds(), \":\").concat(date.getMilliseconds());\r\n prefix = \"[\".concat(time, \"] [\").concat(level, \"] \");\r\n }\r\n var toPrint = \"\".concat(prefix).concat(loggerName, \": \").concat(message);\r\n switch (level) {\r\n case \"trace\":\r\n this.logFn.debug(toPrint);\r\n break;\r\n case \"debug\":\r\n if (this.logFn.debug) {\r\n this.logFn.debug(toPrint);\r\n }\r\n else {\r\n this.logFn.log(toPrint);\r\n }\r\n break;\r\n case \"info\":\r\n this.logFn.info(toPrint);\r\n break;\r\n case \"warn\":\r\n this.logFn.warn(toPrint);\r\n break;\r\n case \"error\":\r\n this.logFn.error(toPrint, error);\r\n break;\r\n }\r\n }\r\n };\r\n Logger.InteropMethodName = \"T42.AppLogger.Log\";\r\n return Logger;\r\n}());\n\nvar GW_MESSAGE_CREATE_CONTEXT = \"create-context\";\r\nvar GW_MESSAGE_ACTIVITY_CREATED = \"created\";\r\nvar GW_MESSAGE_ACTIVITY_DESTROYED = \"destroyed\";\r\nvar GW_MESSAGE_CONTEXT_CREATED = \"context-created\";\r\nvar GW_MESSAGE_CONTEXT_ADDED = \"context-added\";\r\nvar GW_MESSAGE_SUBSCRIBE_CONTEXT = \"subscribe-context\";\r\nvar GW_MESSAGE_SUBSCRIBED_CONTEXT = \"subscribed-context\";\r\nvar GW_MESSAGE_UNSUBSCRIBE_CONTEXT = \"unsubscribe-context\";\r\nvar GW_MESSAGE_DESTROY_CONTEXT = \"destroy-context\";\r\nvar GW_MESSAGE_CONTEXT_DESTROYED = \"context-destroyed\";\r\nvar GW_MESSAGE_UPDATE_CONTEXT = \"update-context\";\r\nvar GW_MESSAGE_CONTEXT_UPDATED = \"context-updated\";\r\nvar GW_MESSAGE_JOINED_ACTIVITY = \"joined\";\n\nvar ContextMessageReplaySpec = {\r\n get name() {\r\n return \"context\";\r\n },\r\n get types() {\r\n return [\r\n GW_MESSAGE_CREATE_CONTEXT,\r\n GW_MESSAGE_ACTIVITY_CREATED,\r\n GW_MESSAGE_ACTIVITY_DESTROYED,\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_CONTEXT_ADDED,\r\n GW_MESSAGE_SUBSCRIBE_CONTEXT,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\r\n GW_MESSAGE_DESTROY_CONTEXT,\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_UPDATE_CONTEXT,\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n GW_MESSAGE_JOINED_ACTIVITY\r\n ];\r\n }\r\n};\n\nvar version = \"6.2.0\";\n\nfunction prepareConfig (configuration, ext, glue42gd) {\r\n var _a, _b, _c, _d;\r\n var nodeStartingContext;\r\n if (Utils.isNode()) {\r\n var startingContextString = process.env._GD_STARTING_CONTEXT_;\r\n if (startingContextString) {\r\n try {\r\n nodeStartingContext = JSON.parse(startingContextString);\r\n }\r\n catch (_e) {\r\n }\r\n }\r\n }\r\n function getConnection() {\r\n var _a, _b, _c, _d, _e, _f;\r\n var gwConfig = configuration.gateway;\r\n var protocolVersion = (_a = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.protocolVersion) !== null && _a !== void 0 ? _a : 3;\r\n var reconnectInterval = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectInterval;\r\n var reconnectAttempts = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectAttempts;\r\n var defaultWs = \"ws://localhost:8385\";\r\n var ws = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.ws;\r\n var sharedWorker = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.sharedWorker;\r\n var inproc = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.inproc;\r\n var webPlatform = (_b = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.webPlatform) !== null && _b !== void 0 ? _b : undefined;\r\n if (glue42gd) {\r\n ws = glue42gd.gwURL;\r\n }\r\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwURL) {\r\n ws = nodeStartingContext.gwURL;\r\n }\r\n if (!ws && !sharedWorker && !inproc) {\r\n ws = defaultWs;\r\n }\r\n var instanceId;\r\n var windowId;\r\n var pid;\r\n var environment;\r\n var region;\r\n var appName = getApplication();\r\n var uniqueAppName = appName;\r\n if (typeof glue42gd !== \"undefined\") {\r\n windowId = glue42gd.windowId;\r\n pid = glue42gd.pid;\r\n if (glue42gd.env) {\r\n environment = glue42gd.env.env;\r\n region = glue42gd.env.region;\r\n }\r\n uniqueAppName = (_c = glue42gd.application) !== null && _c !== void 0 ? _c : \"glue-app\";\r\n instanceId = glue42gd.appInstanceId;\r\n }\r\n else if (Utils.isNode()) {\r\n pid = process.pid;\r\n if (nodeStartingContext) {\r\n environment = nodeStartingContext.env;\r\n region = nodeStartingContext.region;\r\n instanceId = nodeStartingContext.instanceId;\r\n }\r\n }\r\n else if (typeof (window === null || window === void 0 ? void 0 : window.glue42electron) !== \"undefined\") {\r\n windowId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId;\r\n pid = window === null || window === void 0 ? void 0 : window.glue42electron.pid;\r\n environment = window === null || window === void 0 ? void 0 : window.glue42electron.env;\r\n region = window === null || window === void 0 ? void 0 : window.glue42electron.region;\r\n uniqueAppName = (_d = window === null || window === void 0 ? void 0 : window.glue42electron.application) !== null && _d !== void 0 ? _d : \"glue-app\";\r\n instanceId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId;\r\n }\r\n else ;\r\n var replaySpecs = (_f = (_e = configuration.gateway) === null || _e === void 0 ? void 0 : _e.replaySpecs) !== null && _f !== void 0 ? _f : [];\r\n replaySpecs.push(ContextMessageReplaySpec);\r\n var identity = {\r\n application: uniqueAppName,\r\n applicationName: appName,\r\n windowId: windowId,\r\n instance: instanceId,\r\n process: pid,\r\n region: region,\r\n environment: environment,\r\n api: ext.version || version\r\n };\r\n if (configuration.identity) {\r\n identity = Object.assign(identity, configuration.identity);\r\n }\r\n return {\r\n identity: identity,\r\n reconnectInterval: reconnectInterval,\r\n ws: ws,\r\n sharedWorker: sharedWorker,\r\n webPlatform: webPlatform,\r\n inproc: inproc,\r\n protocolVersion: protocolVersion,\r\n reconnectAttempts: reconnectAttempts,\r\n replaySpecs: replaySpecs,\r\n };\r\n }\r\n function getContexts() {\r\n if (typeof configuration.contexts === \"undefined\") {\r\n return { reAnnounceKnownContexts: true };\r\n }\r\n if (typeof configuration.contexts === \"boolean\" && configuration.contexts) {\r\n return { reAnnounceKnownContexts: true };\r\n }\r\n if (typeof configuration.contexts === \"object\") {\r\n return Object.assign({}, { reAnnounceKnownContexts: true }, configuration.contexts);\r\n }\r\n return false;\r\n }\r\n function getApplication() {\r\n if (configuration.application) {\r\n return configuration.application;\r\n }\r\n if (glue42gd) {\r\n return glue42gd.applicationName;\r\n }\r\n if (typeof window !== \"undefined\" && typeof window.glue42electron !== \"undefined\") {\r\n return window.glue42electron.application;\r\n }\r\n var uid = shortid();\r\n if (Utils.isNode()) {\r\n if (nodeStartingContext) {\r\n return nodeStartingContext.applicationConfig.name;\r\n }\r\n return \"NodeJS\" + uid;\r\n }\r\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\r\n return document.title + \" (\".concat(uid, \")\");\r\n }\r\n return uid;\r\n }\r\n function getAuth() {\r\n var _a, _b, _c;\r\n if (typeof configuration.auth === \"string\") {\r\n return {\r\n token: configuration.auth\r\n };\r\n }\r\n if (configuration.auth) {\r\n return configuration.auth;\r\n }\r\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwToken) {\r\n return {\r\n gatewayToken: nodeStartingContext.gwToken\r\n };\r\n }\r\n if (((_a = configuration.gateway) === null || _a === void 0 ? void 0 : _a.webPlatform) || ((_b = configuration.gateway) === null || _b === void 0 ? void 0 : _b.inproc) || ((_c = configuration.gateway) === null || _c === void 0 ? void 0 : _c.sharedWorker)) {\r\n return {\r\n username: \"glue42\", password: \"glue42\"\r\n };\r\n }\r\n }\r\n function getLogger() {\r\n var _a, _b;\r\n var config = configuration.logger;\r\n var defaultLevel = \"warn\";\r\n if (!config) {\r\n config = defaultLevel;\r\n }\r\n var gdConsoleLevel;\r\n if (glue42gd) {\r\n gdConsoleLevel = glue42gd.consoleLogLevel;\r\n }\r\n if (typeof config === \"string\") {\r\n return { console: gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config, publish: defaultLevel };\r\n }\r\n return {\r\n console: (_a = gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config.console) !== null && _a !== void 0 ? _a : defaultLevel,\r\n publish: (_b = config.publish) !== null && _b !== void 0 ? _b : defaultLevel\r\n };\r\n }\r\n var connection = getConnection();\r\n var application = getApplication();\r\n if (typeof window !== \"undefined\") {\r\n var windowAsAny = window;\r\n var containerApplication = windowAsAny.htmlContainer ?\r\n \"\".concat(windowAsAny.htmlContainer.containerName, \".\").concat(windowAsAny.htmlContainer.application) :\r\n (_a = windowAsAny === null || windowAsAny === void 0 ? void 0 : windowAsAny.glue42gd) === null || _a === void 0 ? void 0 : _a.application;\r\n if (containerApplication) {\r\n application = containerApplication;\r\n }\r\n }\r\n return {\r\n bus: (_b = configuration.bus) !== null && _b !== void 0 ? _b : false,\r\n application: application,\r\n auth: getAuth(),\r\n logger: getLogger(),\r\n connection: connection,\r\n metrics: (_c = configuration.metrics) !== null && _c !== void 0 ? _c : true,\r\n contexts: getContexts(),\r\n version: ext.version || version,\r\n libs: (_d = ext.libs) !== null && _d !== void 0 ? _d : [],\r\n customLogger: configuration.customLogger\r\n };\r\n}\n\nvar GW3ContextData = (function () {\r\n function GW3ContextData(contextId, name, isAnnounced, activityId) {\r\n this.updateCallbacks = {};\r\n this.contextId = contextId;\r\n this.name = name;\r\n this.isAnnounced = isAnnounced;\r\n this.activityId = activityId;\r\n this.context = {};\r\n }\r\n GW3ContextData.prototype.hasCallbacks = function () {\r\n return Object.keys(this.updateCallbacks).length > 0;\r\n };\r\n GW3ContextData.prototype.getState = function () {\r\n if (this.isAnnounced && this.hasCallbacks()) {\r\n return 3;\r\n }\r\n if (this.isAnnounced) {\r\n return 2;\r\n }\r\n if (this.hasCallbacks()) {\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n return GW3ContextData;\r\n}());\n\nvar lodash_clonedeepExports = {};\nvar lodash_clonedeep = {\n get exports(){ return lodash_clonedeepExports; },\n set exports(v){ lodash_clonedeepExports = v; },\n};\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n(function (module, exports) {\n\t/** Used as the size to enable large array optimizations. */\n\tvar LARGE_ARRAY_SIZE = 200;\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t promiseTag = '[object Promise]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t symbolTag = '[object Symbol]',\n\t weakMapTag = '[object WeakMap]';\n\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t dataViewTag = '[object DataView]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n\t/** Used to match `RegExp` flags from their coerced string values. */\n\tvar reFlags = /\\w*$/;\n\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n\t/** Used to identify `toStringTag` values supported by `_.clone`. */\n\tvar cloneableTags = {};\n\tcloneableTags[argsTag] = cloneableTags[arrayTag] =\n\tcloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n\tcloneableTags[boolTag] = cloneableTags[dateTag] =\n\tcloneableTags[float32Tag] = cloneableTags[float64Tag] =\n\tcloneableTags[int8Tag] = cloneableTags[int16Tag] =\n\tcloneableTags[int32Tag] = cloneableTags[mapTag] =\n\tcloneableTags[numberTag] = cloneableTags[objectTag] =\n\tcloneableTags[regexpTag] = cloneableTags[setTag] =\n\tcloneableTags[stringTag] = cloneableTags[symbolTag] =\n\tcloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n\tcloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n\tcloneableTags[errorTag] = cloneableTags[funcTag] =\n\tcloneableTags[weakMapTag] = false;\n\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n\t/** Detect free variable `self`. */\n\tvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n\t/** Used as a reference to the global object. */\n\tvar root = freeGlobal || freeSelf || Function('return this')();\n\n\t/** Detect free variable `exports`. */\n\tvar freeExports = exports && !exports.nodeType && exports;\n\n\t/** Detect free variable `module`. */\n\tvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n\t/** Detect the popular CommonJS extension `module.exports`. */\n\tvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n\t/**\n\t * Adds the key-value `pair` to `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to modify.\n\t * @param {Array} pair The key-value pair to add.\n\t * @returns {Object} Returns `map`.\n\t */\n\tfunction addMapEntry(map, pair) {\n\t // Don't return `map.set` because it's not chainable in IE 11.\n\t map.set(pair[0], pair[1]);\n\t return map;\n\t}\n\n\t/**\n\t * Adds `value` to `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to modify.\n\t * @param {*} value The value to add.\n\t * @returns {Object} Returns `set`.\n\t */\n\tfunction addSetEntry(set, value) {\n\t // Don't return `set.add` because it's not chainable in IE 11.\n\t set.add(value);\n\t return set;\n\t}\n\n\t/**\n\t * A specialized version of `_.forEach` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayEach(array, iteratee) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t while (++index < length) {\n\t if (iteratee(array[index], index, array) === false) {\n\t break;\n\t }\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Appends the elements of `values` to `array`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {Array} values The values to append.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayPush(array, values) {\n\t var index = -1,\n\t length = values.length,\n\t offset = array.length;\n\n\t while (++index < length) {\n\t array[offset + index] = values[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * A specialized version of `_.reduce` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {boolean} [initAccum] Specify using the first element of `array` as\n\t * the initial value.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\tfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t if (initAccum && length) {\n\t accumulator = array[++index];\n\t }\n\t while (++index < length) {\n\t accumulator = iteratee(accumulator, array[index], index, array);\n\t }\n\t return accumulator;\n\t}\n\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Gets the value at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} [object] The object to query.\n\t * @param {string} key The key of the property to get.\n\t * @returns {*} Returns the property value.\n\t */\n\tfunction getValue(object, key) {\n\t return object == null ? undefined : object[key];\n\t}\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Converts `map` to its key-value pairs.\n\t *\n\t * @private\n\t * @param {Object} map The map to convert.\n\t * @returns {Array} Returns the key-value pairs.\n\t */\n\tfunction mapToArray(map) {\n\t var index = -1,\n\t result = Array(map.size);\n\n\t map.forEach(function(value, key) {\n\t result[++index] = [key, value];\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\n\t/**\n\t * Converts `set` to an array of its values.\n\t *\n\t * @private\n\t * @param {Object} set The set to convert.\n\t * @returns {Array} Returns the values.\n\t */\n\tfunction setToArray(set) {\n\t var index = -1,\n\t result = Array(set.size);\n\n\t set.forEach(function(value) {\n\t result[++index] = value;\n\t });\n\t return result;\n\t}\n\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype,\n\t funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\n\t/** Used to detect overreaching core-js shims. */\n\tvar coreJsData = root['__core-js_shared__'];\n\n\t/** Used to detect methods masquerading as native. */\n\tvar maskSrcKey = (function() {\n\t var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n\t return uid ? ('Symbol(src)_1.' + uid) : '';\n\t}());\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\n\t/** Built-in value references. */\n\tvar Buffer = moduleExports ? root.Buffer : undefined,\n\t Symbol = root.Symbol,\n\t Uint8Array = root.Uint8Array,\n\t getPrototype = overArg(Object.getPrototypeOf, Object),\n\t objectCreate = Object.create,\n\t propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t splice = arrayProto.splice;\n\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetSymbols = Object.getOwnPropertySymbols,\n\t nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n\t nativeKeys = overArg(Object.keys, Object);\n\n\t/* Built-in method references that are verified to be native. */\n\tvar DataView = getNative(root, 'DataView'),\n\t Map = getNative(root, 'Map'),\n\t Promise = getNative(root, 'Promise'),\n\t Set = getNative(root, 'Set'),\n\t WeakMap = getNative(root, 'WeakMap'),\n\t nativeCreate = getNative(Object, 'create');\n\n\t/** Used to detect maps, sets, and weakmaps. */\n\tvar dataViewCtorString = toSource(DataView),\n\t mapCtorString = toSource(Map),\n\t promiseCtorString = toSource(Promise),\n\t setCtorString = toSource(Set),\n\t weakMapCtorString = toSource(WeakMap);\n\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Hash(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the hash.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Hash\n\t */\n\tfunction hashClear() {\n\t this.__data__ = nativeCreate ? nativeCreate(null) : {};\n\t}\n\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Hash\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(key) {\n\t return this.has(key) && delete this.__data__[key];\n\t}\n\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(key) {\n\t var data = this.__data__;\n\t if (nativeCreate) {\n\t var result = data[key];\n\t return result === HASH_UNDEFINED ? undefined : result;\n\t }\n\t return hasOwnProperty.call(data, key) ? data[key] : undefined;\n\t}\n\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Hash\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(key) {\n\t var data = this.__data__;\n\t return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n\t}\n\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the hash instance.\n\t */\n\tfunction hashSet(key, value) {\n\t var data = this.__data__;\n\t data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t return this;\n\t}\n\n\t// Add methods to `Hash`.\n\tHash.prototype.clear = hashClear;\n\tHash.prototype['delete'] = hashDelete;\n\tHash.prototype.get = hashGet;\n\tHash.prototype.has = hashHas;\n\tHash.prototype.set = hashSet;\n\n\t/**\n\t * Creates an list cache object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction ListCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the list cache.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf ListCache\n\t */\n\tfunction listCacheClear() {\n\t this.__data__ = [];\n\t}\n\n\t/**\n\t * Removes `key` and its value from the list cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction listCacheDelete(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t return false;\n\t }\n\t var lastIndex = data.length - 1;\n\t if (index == lastIndex) {\n\t data.pop();\n\t } else {\n\t splice.call(data, index, 1);\n\t }\n\t return true;\n\t}\n\n\t/**\n\t * Gets the list cache value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction listCacheGet(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t return index < 0 ? undefined : data[index][1];\n\t}\n\n\t/**\n\t * Checks if a list cache value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf ListCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction listCacheHas(key) {\n\t return assocIndexOf(this.__data__, key) > -1;\n\t}\n\n\t/**\n\t * Sets the list cache `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the list cache instance.\n\t */\n\tfunction listCacheSet(key, value) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t data.push([key, value]);\n\t } else {\n\t data[index][1] = value;\n\t }\n\t return this;\n\t}\n\n\t// Add methods to `ListCache`.\n\tListCache.prototype.clear = listCacheClear;\n\tListCache.prototype['delete'] = listCacheDelete;\n\tListCache.prototype.get = listCacheGet;\n\tListCache.prototype.has = listCacheHas;\n\tListCache.prototype.set = listCacheSet;\n\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction MapCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapCacheClear() {\n\t this.__data__ = {\n\t 'hash': new Hash,\n\t 'map': new (Map || ListCache),\n\t 'string': new Hash\n\t };\n\t}\n\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapCacheDelete(key) {\n\t return getMapData(this, key)['delete'](key);\n\t}\n\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapCacheGet(key) {\n\t return getMapData(this, key).get(key);\n\t}\n\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapCacheHas(key) {\n\t return getMapData(this, key).has(key);\n\t}\n\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapCacheSet(key, value) {\n\t getMapData(this, key).set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapCacheClear;\n\tMapCache.prototype['delete'] = mapCacheDelete;\n\tMapCache.prototype.get = mapCacheGet;\n\tMapCache.prototype.has = mapCacheHas;\n\tMapCache.prototype.set = mapCacheSet;\n\n\t/**\n\t * Creates a stack cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Stack(entries) {\n\t this.__data__ = new ListCache(entries);\n\t}\n\n\t/**\n\t * Removes all key-value entries from the stack.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Stack\n\t */\n\tfunction stackClear() {\n\t this.__data__ = new ListCache;\n\t}\n\n\t/**\n\t * Removes `key` and its value from the stack.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction stackDelete(key) {\n\t return this.__data__['delete'](key);\n\t}\n\n\t/**\n\t * Gets the stack value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction stackGet(key) {\n\t return this.__data__.get(key);\n\t}\n\n\t/**\n\t * Checks if a stack value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Stack\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction stackHas(key) {\n\t return this.__data__.has(key);\n\t}\n\n\t/**\n\t * Sets the stack `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the stack cache instance.\n\t */\n\tfunction stackSet(key, value) {\n\t var cache = this.__data__;\n\t if (cache instanceof ListCache) {\n\t var pairs = cache.__data__;\n\t if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n\t pairs.push([key, value]);\n\t return this;\n\t }\n\t cache = this.__data__ = new MapCache(pairs);\n\t }\n\t cache.set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `Stack`.\n\tStack.prototype.clear = stackClear;\n\tStack.prototype['delete'] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\n\t/**\n\t * Creates an array of the enumerable property names of the array-like `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @param {boolean} inherited Specify returning inherited property names.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction arrayLikeKeys(value, inherited) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t // Safari 9 makes `arguments.length` enumerable in strict mode.\n\t var result = (isArray(value) || isArguments(value))\n\t ? baseTimes(value.length, String)\n\t : [];\n\n\t var length = result.length,\n\t skipIndexes = !!length;\n\n\t for (var key in value) {\n\t if ((inherited || hasOwnProperty.call(value, key)) &&\n\t !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Assigns `value` to `key` of `object` if the existing value is not equivalent\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {string} key The key of the property to assign.\n\t * @param {*} value The value to assign.\n\t */\n\tfunction assignValue(object, key, value) {\n\t var objValue = object[key];\n\t if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n\t (value === undefined && !(key in object))) {\n\t object[key] = value;\n\t }\n\t}\n\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t var length = array.length;\n\t while (length--) {\n\t if (eq(array[length][0], key)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t}\n\n\t/**\n\t * The base implementation of `_.assign` without support for multiple sources\n\t * or `customizer` functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction baseAssign(object, source) {\n\t return object && copyObject(source, keys(source), object);\n\t}\n\n\t/**\n\t * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n\t * traversed objects.\n\t *\n\t * @private\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @param {boolean} [isFull] Specify a clone including symbols.\n\t * @param {Function} [customizer] The function to customize cloning.\n\t * @param {string} [key] The key of `value`.\n\t * @param {Object} [object] The parent object of `value`.\n\t * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n\t * @returns {*} Returns the cloned value.\n\t */\n\tfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n\t var result;\n\t if (customizer) {\n\t result = object ? customizer(value, key, object, stack) : customizer(value);\n\t }\n\t if (result !== undefined) {\n\t return result;\n\t }\n\t if (!isObject(value)) {\n\t return value;\n\t }\n\t var isArr = isArray(value);\n\t if (isArr) {\n\t result = initCloneArray(value);\n\t if (!isDeep) {\n\t return copyArray(value, result);\n\t }\n\t } else {\n\t var tag = getTag(value),\n\t isFunc = tag == funcTag || tag == genTag;\n\n\t if (isBuffer(value)) {\n\t return cloneBuffer(value, isDeep);\n\t }\n\t if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n\t if (isHostObject(value)) {\n\t return object ? value : {};\n\t }\n\t result = initCloneObject(isFunc ? {} : value);\n\t if (!isDeep) {\n\t return copySymbols(value, baseAssign(result, value));\n\t }\n\t } else {\n\t if (!cloneableTags[tag]) {\n\t return object ? value : {};\n\t }\n\t result = initCloneByTag(value, tag, baseClone, isDeep);\n\t }\n\t }\n\t // Check for circular references and return its corresponding clone.\n\t stack || (stack = new Stack);\n\t var stacked = stack.get(value);\n\t if (stacked) {\n\t return stacked;\n\t }\n\t stack.set(value, result);\n\n\t if (!isArr) {\n\t var props = isFull ? getAllKeys(value) : keys(value);\n\t }\n\t arrayEach(props || value, function(subValue, key) {\n\t if (props) {\n\t key = subValue;\n\t subValue = value[key];\n\t }\n\t // Recursively populate clone (susceptible to call stack limits).\n\t assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * The base implementation of `_.create` without support for assigning\n\t * properties to the created object.\n\t *\n\t * @private\n\t * @param {Object} prototype The object to inherit from.\n\t * @returns {Object} Returns the new object.\n\t */\n\tfunction baseCreate(proto) {\n\t return isObject(proto) ? objectCreate(proto) : {};\n\t}\n\n\t/**\n\t * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n\t * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n\t * symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @param {Function} symbolsFunc The function to get the symbols of `object`.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n\t var result = keysFunc(object);\n\t return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n\t}\n\n\t/**\n\t * The base implementation of `getTag`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction baseGetTag(value) {\n\t return objectToString.call(value);\n\t}\n\n\t/**\n\t * The base implementation of `_.isNative` without bad shim checks.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t * else `false`.\n\t */\n\tfunction baseIsNative(value) {\n\t if (!isObject(value) || isMasked(value)) {\n\t return false;\n\t }\n\t var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t return pattern.test(toSource(value));\n\t}\n\n\t/**\n\t * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t if (!isPrototype(object)) {\n\t return nativeKeys(object);\n\t }\n\t var result = [];\n\t for (var key in Object(object)) {\n\t if (hasOwnProperty.call(object, key) && key != 'constructor') {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `buffer`.\n\t *\n\t * @private\n\t * @param {Buffer} buffer The buffer to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Buffer} Returns the cloned buffer.\n\t */\n\tfunction cloneBuffer(buffer, isDeep) {\n\t if (isDeep) {\n\t return buffer.slice();\n\t }\n\t var result = new buffer.constructor(buffer.length);\n\t buffer.copy(result);\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `arrayBuffer`.\n\t *\n\t * @private\n\t * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n\t * @returns {ArrayBuffer} Returns the cloned array buffer.\n\t */\n\tfunction cloneArrayBuffer(arrayBuffer) {\n\t var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n\t new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `dataView`.\n\t *\n\t * @private\n\t * @param {Object} dataView The data view to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned data view.\n\t */\n\tfunction cloneDataView(dataView, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n\t return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n\t}\n\n\t/**\n\t * Creates a clone of `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned map.\n\t */\n\tfunction cloneMap(map, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n\t return arrayReduce(array, addMapEntry, new map.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of `regexp`.\n\t *\n\t * @private\n\t * @param {Object} regexp The regexp to clone.\n\t * @returns {Object} Returns the cloned regexp.\n\t */\n\tfunction cloneRegExp(regexp) {\n\t var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n\t result.lastIndex = regexp.lastIndex;\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned set.\n\t */\n\tfunction cloneSet(set, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n\t return arrayReduce(array, addSetEntry, new set.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of the `symbol` object.\n\t *\n\t * @private\n\t * @param {Object} symbol The symbol object to clone.\n\t * @returns {Object} Returns the cloned symbol object.\n\t */\n\tfunction cloneSymbol(symbol) {\n\t return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n\t}\n\n\t/**\n\t * Creates a clone of `typedArray`.\n\t *\n\t * @private\n\t * @param {Object} typedArray The typed array to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned typed array.\n\t */\n\tfunction cloneTypedArray(typedArray, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n\t return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n\t}\n\n\t/**\n\t * Copies the values of `source` to `array`.\n\t *\n\t * @private\n\t * @param {Array} source The array to copy values from.\n\t * @param {Array} [array=[]] The array to copy values to.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction copyArray(source, array) {\n\t var index = -1,\n\t length = source.length;\n\n\t array || (array = Array(length));\n\t while (++index < length) {\n\t array[index] = source[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Copies properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy properties from.\n\t * @param {Array} props The property identifiers to copy.\n\t * @param {Object} [object={}] The object to copy properties to.\n\t * @param {Function} [customizer] The function to customize copied values.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copyObject(source, props, object, customizer) {\n\t object || (object = {});\n\n\t var index = -1,\n\t length = props.length;\n\n\t while (++index < length) {\n\t var key = props[index];\n\n\t var newValue = customizer\n\t ? customizer(object[key], source[key], key, object, source)\n\t : undefined;\n\n\t assignValue(object, key, newValue === undefined ? source[key] : newValue);\n\t }\n\t return object;\n\t}\n\n\t/**\n\t * Copies own symbol properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy symbols from.\n\t * @param {Object} [object={}] The object to copy symbols to.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copySymbols(source, object) {\n\t return copyObject(source, getSymbols(source), object);\n\t}\n\n\t/**\n\t * Creates an array of own enumerable property names and symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction getAllKeys(object) {\n\t return baseGetAllKeys(object, keys, getSymbols);\n\t}\n\n\t/**\n\t * Gets the data for `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to query.\n\t * @param {string} key The reference key.\n\t * @returns {*} Returns the map data.\n\t */\n\tfunction getMapData(map, key) {\n\t var data = map.__data__;\n\t return isKeyable(key)\n\t ? data[typeof key == 'string' ? 'string' : 'hash']\n\t : data.map;\n\t}\n\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = getValue(object, key);\n\t return baseIsNative(value) ? value : undefined;\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable symbol properties of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of symbols.\n\t */\n\tvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n\t/**\n\t * Gets the `toStringTag` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tvar getTag = baseGetTag;\n\n\t// Fallback for data views, maps, sets, and weak maps in IE 11,\n\t// for data views in Edge < 14, and promises in Node.js.\n\tif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n\t (Map && getTag(new Map) != mapTag) ||\n\t (Promise && getTag(Promise.resolve()) != promiseTag) ||\n\t (Set && getTag(new Set) != setTag) ||\n\t (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n\t getTag = function(value) {\n\t var result = objectToString.call(value),\n\t Ctor = result == objectTag ? value.constructor : undefined,\n\t ctorString = Ctor ? toSource(Ctor) : undefined;\n\n\t if (ctorString) {\n\t switch (ctorString) {\n\t case dataViewCtorString: return dataViewTag;\n\t case mapCtorString: return mapTag;\n\t case promiseCtorString: return promiseTag;\n\t case setCtorString: return setTag;\n\t case weakMapCtorString: return weakMapTag;\n\t }\n\t }\n\t return result;\n\t };\n\t}\n\n\t/**\n\t * Initializes an array clone.\n\t *\n\t * @private\n\t * @param {Array} array The array to clone.\n\t * @returns {Array} Returns the initialized clone.\n\t */\n\tfunction initCloneArray(array) {\n\t var length = array.length,\n\t result = array.constructor(length);\n\n\t // Add properties assigned by `RegExp#exec`.\n\t if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n\t result.index = array.index;\n\t result.input = array.input;\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Initializes an object clone.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneObject(object) {\n\t return (typeof object.constructor == 'function' && !isPrototype(object))\n\t ? baseCreate(getPrototype(object))\n\t : {};\n\t}\n\n\t/**\n\t * Initializes an object clone based on its `toStringTag`.\n\t *\n\t * **Note:** This function only supports cloning values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @param {string} tag The `toStringTag` of the object to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n\t var Ctor = object.constructor;\n\t switch (tag) {\n\t case arrayBufferTag:\n\t return cloneArrayBuffer(object);\n\n\t case boolTag:\n\t case dateTag:\n\t return new Ctor(+object);\n\n\t case dataViewTag:\n\t return cloneDataView(object, isDeep);\n\n\t case float32Tag: case float64Tag:\n\t case int8Tag: case int16Tag: case int32Tag:\n\t case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n\t return cloneTypedArray(object, isDeep);\n\n\t case mapTag:\n\t return cloneMap(object, isDeep, cloneFunc);\n\n\t case numberTag:\n\t case stringTag:\n\t return new Ctor(object);\n\n\t case regexpTag:\n\t return cloneRegExp(object);\n\n\t case setTag:\n\t return cloneSet(object, isDeep, cloneFunc);\n\n\t case symbolTag:\n\t return cloneSymbol(object);\n\t }\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return !!length &&\n\t (typeof value == 'number' || reIsUint.test(value)) &&\n\t (value > -1 && value % 1 == 0 && value < length);\n\t}\n\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t var type = typeof value;\n\t return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n\t ? (value !== '__proto__')\n\t : (value === null);\n\t}\n\n\t/**\n\t * Checks if `func` has its source masked.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n\t */\n\tfunction isMasked(func) {\n\t return !!maskSrcKey && (maskSrcKey in func);\n\t}\n\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n\t return value === proto;\n\t}\n\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t if (func != null) {\n\t try {\n\t return funcToString.call(func);\n\t } catch (e) {}\n\t try {\n\t return (func + '');\n\t } catch (e) {}\n\t }\n\t return '';\n\t}\n\n\t/**\n\t * This method is like `_.clone` except that it recursively clones `value`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 1.0.0\n\t * @category Lang\n\t * @param {*} value The value to recursively clone.\n\t * @returns {*} Returns the deep cloned value.\n\t * @see _.clone\n\t * @example\n\t *\n\t * var objects = [{ 'a': 1 }, { 'b': 2 }];\n\t *\n\t * var deep = _.cloneDeep(objects);\n\t * console.log(deep[0] === objects[0]);\n\t * // => false\n\t */\n\tfunction cloneDeep(value) {\n\t return baseClone(value, true, true);\n\t}\n\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(value.length) && !isFunction(value);\n\t}\n\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t return isObjectLike(value) && isArrayLike(value);\n\t}\n\n\t/**\n\t * Checks if `value` is a buffer.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.3.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n\t * @example\n\t *\n\t * _.isBuffer(new Buffer(2));\n\t * // => true\n\t *\n\t * _.isBuffer(new Uint8Array(2));\n\t * // => false\n\t */\n\tvar isBuffer = nativeIsBuffer || stubFalse;\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8-9 which returns 'object' for typed array and other constructors.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n\t}\n\n\t/**\n\t * This method returns a new empty array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {Array} Returns the new empty array.\n\t * @example\n\t *\n\t * var arrays = _.times(2, _.stubArray);\n\t *\n\t * console.log(arrays);\n\t * // => [[], []]\n\t *\n\t * console.log(arrays[0] === arrays[1]);\n\t * // => false\n\t */\n\tfunction stubArray() {\n\t return [];\n\t}\n\n\t/**\n\t * This method returns `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {boolean} Returns `false`.\n\t * @example\n\t *\n\t * _.times(2, _.stubFalse);\n\t * // => [false, false]\n\t */\n\tfunction stubFalse() {\n\t return false;\n\t}\n\n\tmodule.exports = cloneDeep;\n} (lodash_clonedeep, lodash_clonedeepExports));\n\nvar cloneDeep = lodash_clonedeepExports;\n\nfunction applyContextDelta(context, delta, logger) {\r\n try {\r\n if (logger === null || logger === void 0 ? void 0 : logger.canPublish(\"trace\")) {\r\n logger === null || logger === void 0 ? void 0 : logger.trace(\"applying context delta \".concat(JSON.stringify(delta), \" on context \").concat(JSON.stringify(context)));\r\n }\r\n if (!delta) {\r\n return context;\r\n }\r\n if (delta.reset) {\r\n context = __assign({}, delta.reset);\r\n return context;\r\n }\r\n context = deepClone(context, undefined);\r\n if (delta.commands) {\r\n for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) {\r\n var command = _a[_i];\r\n if (command.type === \"remove\") {\r\n deletePath(context, command.path);\r\n }\r\n else if (command.type === \"set\") {\r\n setValueToPath(context, command.value, command.path);\r\n }\r\n }\r\n return context;\r\n }\r\n var added_1 = delta.added;\r\n var updated_1 = delta.updated;\r\n var removed = delta.removed;\r\n if (added_1) {\r\n Object.keys(added_1).forEach(function (key) {\r\n context[key] = added_1[key];\r\n });\r\n }\r\n if (updated_1) {\r\n Object.keys(updated_1).forEach(function (key) {\r\n mergeObjectsProperties(key, context, updated_1);\r\n });\r\n }\r\n if (removed) {\r\n removed.forEach(function (key) {\r\n delete context[key];\r\n });\r\n }\r\n return context;\r\n }\r\n catch (e) {\r\n logger === null || logger === void 0 ? void 0 : logger.error(\"error applying context delta \".concat(JSON.stringify(delta), \" on context \").concat(JSON.stringify(context)), e);\r\n return context;\r\n }\r\n}\r\nfunction deepClone(obj, hash) {\r\n return cloneDeep(obj);\r\n}\r\nvar mergeObjectsProperties = function (key, what, withWhat) {\r\n var right = withWhat[key];\r\n if (right === undefined) {\r\n return what;\r\n }\r\n var left = what[key];\r\n if (!left || !right) {\r\n what[key] = right;\r\n return what;\r\n }\r\n if (typeof left === \"string\" ||\r\n typeof left === \"number\" ||\r\n typeof left === \"boolean\" ||\r\n typeof right === \"string\" ||\r\n typeof right === \"number\" ||\r\n typeof right === \"boolean\" ||\r\n Array.isArray(left) ||\r\n Array.isArray(right)) {\r\n what[key] = right;\r\n return what;\r\n }\r\n what[key] = Object.assign({}, left, right);\r\n return what;\r\n};\r\nfunction deepEqual(x, y) {\r\n if (x === y) {\r\n return true;\r\n }\r\n if (!(x instanceof Object) || !(y instanceof Object)) {\r\n return false;\r\n }\r\n if (x.constructor !== y.constructor) {\r\n return false;\r\n }\r\n for (var p in x) {\r\n if (!x.hasOwnProperty(p)) {\r\n continue;\r\n }\r\n if (!y.hasOwnProperty(p)) {\r\n return false;\r\n }\r\n if (x[p] === y[p]) {\r\n continue;\r\n }\r\n if (typeof (x[p]) !== \"object\") {\r\n return false;\r\n }\r\n if (!deepEqual(x[p], y[p])) {\r\n return false;\r\n }\r\n }\r\n for (var p in y) {\r\n if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction setValueToPath(obj, value, path) {\r\n var pathArr = path.split(\".\");\r\n var i;\r\n for (i = 0; i < pathArr.length - 1; i++) {\r\n if (!obj[pathArr[i]]) {\r\n obj[pathArr[i]] = {};\r\n }\r\n if (typeof obj[pathArr[i]] !== \"object\") {\r\n obj[pathArr[i]] = {};\r\n }\r\n obj = obj[pathArr[i]];\r\n }\r\n obj[pathArr[i]] = value;\r\n}\r\nfunction isSubset(superObj, subObj) {\r\n return Object.keys(subObj).every(function (ele) {\r\n if (typeof subObj[ele] === \"object\") {\r\n return isSubset((superObj === null || superObj === void 0 ? void 0 : superObj[ele]) || {}, subObj[ele] || {});\r\n }\r\n return subObj[ele] === (superObj === null || superObj === void 0 ? void 0 : superObj[ele]);\r\n });\r\n}\r\nfunction deletePath(obj, path) {\r\n var pathArr = path.split(\".\");\r\n var i;\r\n for (i = 0; i < pathArr.length - 1; i++) {\r\n if (!obj[pathArr[i]]) {\r\n return;\r\n }\r\n obj = obj[pathArr[i]];\r\n }\r\n delete obj[pathArr[i]];\r\n}\n\nvar GW3Bridge = (function () {\r\n function GW3Bridge(config) {\r\n var _this = this;\r\n var _a;\r\n this._contextNameToData = {};\r\n this._gw3Subscriptions = [];\r\n this._nextCallbackSubscriptionNumber = 0;\r\n this._creationPromises = {};\r\n this._contextNameToId = {};\r\n this._contextIdToName = {};\r\n this._protocolVersion = undefined;\r\n this._contextsTempCache = {};\r\n this._contextsSubscriptionsCache = [];\r\n this._connection = config.connection;\r\n this._logger = config.logger;\r\n this._trackAllContexts = config.trackAllContexts;\r\n this._reAnnounceKnownContexts = config.reAnnounceKnownContexts;\r\n this._gw3Session = this._connection.domain(\"global\", [\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n ]);\r\n this._gw3Session.disconnected(this.resetState.bind(this));\r\n this._gw3Session.onJoined(function (wasReconnect) {\r\n if (!wasReconnect) {\r\n return;\r\n }\r\n if (!_this._reAnnounceKnownContexts) {\r\n return _this._connection.setLibReAnnounced({ name: \"contexts\" });\r\n }\r\n _this.reInitiateState().then(function () { return _this._connection.setLibReAnnounced({ name: \"contexts\" }); });\r\n });\r\n this.subscribeToContextCreatedMessages();\r\n this.subscribeToContextUpdatedMessages();\r\n this.subscribeToContextDestroyedMessages();\r\n (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) {\r\n var type = message.type;\r\n if (!type) {\r\n return;\r\n }\r\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\r\n type === GW_MESSAGE_CONTEXT_ADDED ||\r\n type === GW_MESSAGE_ACTIVITY_CREATED) {\r\n _this.handleContextCreatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\r\n type === GW_MESSAGE_CONTEXT_UPDATED ||\r\n type === GW_MESSAGE_JOINED_ACTIVITY) {\r\n _this.handleContextUpdatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\r\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n _this.handleContextDestroyedMessage(message);\r\n }\r\n });\r\n }\r\n Object.defineProperty(GW3Bridge.prototype, \"protocolVersion\", {\r\n get: function () {\r\n var _a;\r\n if (!this._protocolVersion) {\r\n var contextsDomainInfo = this._connection.availableDomains.find(function (d) { return d.uri === \"context\"; });\r\n this._protocolVersion = (_a = contextsDomainInfo === null || contextsDomainInfo === void 0 ? void 0 : contextsDomainInfo.version) !== null && _a !== void 0 ? _a : 1;\r\n }\r\n return this._protocolVersion;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(GW3Bridge.prototype, \"setPathSupported\", {\r\n get: function () {\r\n return this.protocolVersion >= 2;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GW3Bridge.prototype.dispose = function () {\r\n for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) {\r\n var sub = _a[_i];\r\n this._connection.off(sub);\r\n }\r\n this._gw3Subscriptions.length = 0;\r\n for (var contextName in this._contextNameToData) {\r\n if (this._contextNameToId.hasOwnProperty(contextName)) {\r\n delete this._contextNameToData[contextName];\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.createContext = function (name, data) {\r\n var _this = this;\r\n if (name in this._creationPromises) {\r\n return this._creationPromises[name];\r\n }\r\n this._creationPromises[name] =\r\n this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_CREATE_CONTEXT,\r\n domain: \"global\",\r\n name: name,\r\n data: data,\r\n lifetime: \"retained\",\r\n })\r\n .then(function (createContextMsg) {\r\n _this._contextNameToId[name] = createContextMsg.context_id;\r\n _this._contextIdToName[createContextMsg.context_id] = name;\r\n var contextData = _this._contextNameToData[name] || new GW3ContextData(createContextMsg.context_id, name, true, undefined);\r\n contextData.isAnnounced = true;\r\n contextData.name = name;\r\n contextData.contextId = createContextMsg.context_id;\r\n contextData.context = createContextMsg.data || deepClone(data);\r\n contextData.hasReceivedSnapshot = true;\r\n _this._contextNameToData[name] = contextData;\r\n delete _this._creationPromises[name];\r\n return createContextMsg.context_id;\r\n });\r\n return this._creationPromises[name];\r\n };\r\n GW3Bridge.prototype.all = function () {\r\n var _this = this;\r\n return Object.keys(this._contextNameToData)\r\n .filter(function (name) { return _this._contextNameToData[name].isAnnounced; });\r\n };\r\n GW3Bridge.prototype.update = function (name, delta) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, currentContext, calculatedDelta;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (delta) {\r\n delta = deepClone(delta);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, this.createContext(name, delta)];\r\n }\r\n currentContext = contextData.context;\r\n if (!!contextData.hasCallbacks()) return [3, 4];\r\n return [4, this.get(contextData.name)];\r\n case 3:\r\n currentContext = _b.sent();\r\n _b.label = 4;\r\n case 4:\r\n calculatedDelta = this.setPathSupported ?\r\n this.calculateContextDeltaV2(currentContext, delta) :\r\n this.calculateContextDeltaV1(currentContext, delta);\r\n if (!Object.keys(calculatedDelta.added).length\r\n && !Object.keys(calculatedDelta.updated).length\r\n && !calculatedDelta.removed.length\r\n && !((_a = calculatedDelta.commands) === null || _a === void 0 ? void 0 : _a.length)) {\r\n return [2, Promise.resolve()];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: calculatedDelta,\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, calculatedDelta, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.set = function (name, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (data) {\r\n data = deepClone(data);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, this.createContext(name, data)];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: { reset: data },\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, {\r\n reset: data,\r\n added: {},\r\n removed: [],\r\n updated: {}\r\n }, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.setPath = function (name, path, value) {\r\n if (!this.setPathSupported) {\r\n return Promise.reject(\"glue.contexts.setPath operation is not supported, use Glue42 3.10 or later\");\r\n }\r\n return this.setPaths(name, [{ path: path, value: value }]);\r\n };\r\n GW3Bridge.prototype.setPaths = function (name, pathValues) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, obj, _i, pathValues_1, pathValue, commands, _a, pathValues_2, pathValue;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.setPathSupported) {\r\n return [2, Promise.reject(\"glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later\")];\r\n }\r\n if (pathValues) {\r\n pathValues = deepClone(pathValues);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n obj = {};\r\n for (_i = 0, pathValues_1 = pathValues; _i < pathValues_1.length; _i++) {\r\n pathValue = pathValues_1[_i];\r\n setValueToPath(obj, pathValue.value, pathValue.path);\r\n }\r\n return [2, this.createContext(name, obj)];\r\n }\r\n commands = [];\r\n for (_a = 0, pathValues_2 = pathValues; _a < pathValues_2.length; _a++) {\r\n pathValue = pathValues_2[_a];\r\n if (pathValue.value === null) {\r\n commands.push({ type: \"remove\", path: pathValue.path });\r\n }\r\n else {\r\n commands.push({ type: \"set\", path: pathValue.path, value: pathValue.value });\r\n }\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: { commands: commands }\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, {\r\n added: {},\r\n removed: [],\r\n updated: {},\r\n commands: commands\r\n }, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.get = function (name) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, context;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, Promise.resolve({})];\r\n }\r\n if (contextData && (!contextData.hasCallbacks() || !contextData.hasReceivedSnapshot)) {\r\n return [2, new Promise(function (resolve) {\r\n _this.subscribe(name, function (data, _d, _r, un) {\r\n _this.unsubscribe(un);\r\n resolve(data);\r\n });\r\n })];\r\n }\r\n context = (_a = contextData === null || contextData === void 0 ? void 0 : contextData.context) !== null && _a !== void 0 ? _a : {};\r\n return [2, Promise.resolve(deepClone(context))];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.subscribe = function (name, callback, subscriptionKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var thisCallbackSubscriptionNumber, contextData, hadCallbacks, clone, clone, clone;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n thisCallbackSubscriptionNumber = typeof subscriptionKey === \"undefined\" ? this._nextCallbackSubscriptionNumber : subscriptionKey;\r\n if (typeof subscriptionKey === \"undefined\") {\r\n this._nextCallbackSubscriptionNumber += 1;\r\n }\r\n if (this._contextsSubscriptionsCache.every(function (subscription) { return subscription.subKey !== _this._nextCallbackSubscriptionNumber; })) {\r\n this._contextsSubscriptionsCache.push({ contextName: name, subKey: thisCallbackSubscriptionNumber, callback: callback });\r\n }\r\n contextData = this._contextNameToData[name];\r\n if (!contextData ||\r\n !contextData.isAnnounced) {\r\n contextData = contextData || new GW3ContextData(undefined, name, false, undefined);\r\n this._contextNameToData[name] = contextData;\r\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n hadCallbacks = contextData.hasCallbacks();\r\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\r\n if (!hadCallbacks) {\r\n if (!contextData.joinedActivity) {\r\n if (contextData.context && contextData.sentExplicitSubscription) {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n return [2, this.sendSubscribe(contextData)\r\n .then(function () { return thisCallbackSubscriptionNumber; })];\r\n }\r\n else {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n }\r\n else {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.unsubscribe = function (subscriptionKey) {\r\n this._contextsSubscriptionsCache = this._contextsSubscriptionsCache.filter(function (subscription) { return subscription.subKey !== subscriptionKey; });\r\n for (var _i = 0, _a = Object.keys(this._contextNameToData); _i < _a.length; _i++) {\r\n var name_1 = _a[_i];\r\n var contextData = this._contextNameToData[name_1];\r\n if (!contextData) {\r\n return;\r\n }\r\n var hadCallbacks = contextData.hasCallbacks();\r\n delete contextData.updateCallbacks[subscriptionKey];\r\n if (contextData.isAnnounced &&\r\n hadCallbacks &&\r\n !contextData.hasCallbacks() &&\r\n contextData.sentExplicitSubscription) {\r\n this.sendUnsubscribe(contextData);\r\n }\r\n if (!contextData.isAnnounced &&\r\n !contextData.hasCallbacks()) {\r\n delete this._contextNameToData[name_1];\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.destroy = function (name) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData) {\r\n return [2, Promise.reject(\"context with \".concat(name, \" does not exist\"))];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_DESTROY_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.handleUpdated = function (contextData, delta, extraData) {\r\n var oldContext = contextData.context;\r\n contextData.context = applyContextDelta(contextData.context, delta, this._logger);\r\n contextData.hasReceivedSnapshot = true;\r\n if (this._contextNameToData[contextData.name] === contextData &&\r\n !deepEqual(oldContext, contextData.context)) {\r\n this.invokeUpdateCallbacks(contextData, delta, extraData);\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextCreatedMessages = function () {\r\n var createdMessageTypes = [\r\n GW_MESSAGE_CONTEXT_ADDED,\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_ACTIVITY_CREATED,\r\n ];\r\n for (var _i = 0, createdMessageTypes_1 = createdMessageTypes; _i < createdMessageTypes_1.length; _i++) {\r\n var createdMessageType = createdMessageTypes_1[_i];\r\n var sub = this._connection.on(createdMessageType, this.handleContextCreatedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextCreatedMessage = function (contextCreatedMsg) {\r\n var _this = this;\r\n var createdMessageType = contextCreatedMsg.type;\r\n if (createdMessageType === GW_MESSAGE_ACTIVITY_CREATED) {\r\n this._contextNameToId[contextCreatedMsg.activity_id] = contextCreatedMsg.context_id;\r\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.activity_id;\r\n }\r\n else if (createdMessageType === GW_MESSAGE_CONTEXT_ADDED) {\r\n this._contextNameToId[contextCreatedMsg.name] = contextCreatedMsg.context_id;\r\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.name;\r\n }\r\n else ;\r\n var name = this._contextIdToName[contextCreatedMsg.context_id];\r\n if (!name) {\r\n throw new Error(\"Received created event for context with unknown name: \" + contextCreatedMsg.context_id);\r\n }\r\n if (!this._contextNameToId[name]) {\r\n throw new Error(\"Received created event for context with unknown id: \" + contextCreatedMsg.context_id);\r\n }\r\n var contextData = this._contextNameToData[name];\r\n if (contextData) {\r\n if (contextData.isAnnounced) {\r\n return;\r\n }\r\n else {\r\n if (!contextData.hasCallbacks()) {\r\n throw new Error(\"Assertion failure: contextData.hasCallbacks()\");\r\n }\r\n contextData.isAnnounced = true;\r\n contextData.contextId = contextCreatedMsg.context_id;\r\n contextData.activityId = contextCreatedMsg.activity_id;\r\n if (!contextData.sentExplicitSubscription) {\r\n this.sendSubscribe(contextData);\r\n }\r\n }\r\n }\r\n else {\r\n this._contextNameToData[name] = contextData =\r\n new GW3ContextData(contextCreatedMsg.context_id, name, true, contextCreatedMsg.activity_id);\r\n if (this._trackAllContexts) {\r\n this.subscribe(name, function () { }).then(function (subKey) { return _this._systemContextsSubKey = subKey; });\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextUpdatedMessages = function () {\r\n var updatedMessageTypes = [\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_JOINED_ACTIVITY,\r\n ];\r\n for (var _i = 0, updatedMessageTypes_1 = updatedMessageTypes; _i < updatedMessageTypes_1.length; _i++) {\r\n var updatedMessageType = updatedMessageTypes_1[_i];\r\n var sub = this._connection.on(updatedMessageType, this.handleContextUpdatedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextUpdatedMessage = function (contextUpdatedMsg) {\r\n var updatedMessageType = contextUpdatedMsg.type;\r\n var contextId = contextUpdatedMsg.context_id;\r\n var contextData = this._contextNameToData[this._contextIdToName[contextId]];\r\n var justSeen = !contextData || !contextData.isAnnounced;\r\n if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\r\n if (!contextData) {\r\n contextData =\r\n this._contextNameToData[contextUpdatedMsg.activity_id] ||\r\n new GW3ContextData(contextId, contextUpdatedMsg.activity_id, true, contextUpdatedMsg.activity_id);\r\n }\r\n this._contextNameToData[contextUpdatedMsg.activity_id] = contextData;\r\n this._contextIdToName[contextId] = contextUpdatedMsg.activity_id;\r\n this._contextNameToId[contextUpdatedMsg.activity_id] = contextId;\r\n contextData.contextId = contextId;\r\n contextData.isAnnounced = true;\r\n contextData.activityId = contextUpdatedMsg.activity_id;\r\n contextData.joinedActivity = true;\r\n }\r\n else {\r\n if (!contextData || !contextData.isAnnounced) {\r\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n contextData = contextData || new GW3ContextData(contextId, contextUpdatedMsg.name, true, undefined);\r\n contextData.sentExplicitSubscription = true;\r\n this._contextNameToData[contextUpdatedMsg.name] = contextData;\r\n this._contextIdToName[contextId] = contextUpdatedMsg.name;\r\n this._contextNameToId[contextUpdatedMsg.name] = contextId;\r\n }\r\n else {\r\n this._logger.error(\"Received 'update' for unknown context: \".concat(contextId));\r\n }\r\n return;\r\n }\r\n }\r\n var oldContext = contextData.context;\r\n contextData.hasReceivedSnapshot = true;\r\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n contextData.context = contextUpdatedMsg.data || {};\r\n }\r\n else if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\r\n contextData.context = contextUpdatedMsg.context_snapshot || {};\r\n }\r\n else if (updatedMessageType === GW_MESSAGE_CONTEXT_UPDATED) {\r\n contextData.context = applyContextDelta(contextData.context, contextUpdatedMsg.delta, this._logger);\r\n }\r\n else {\r\n throw new Error(\"Unrecognized context update message \" + updatedMessageType);\r\n }\r\n if (justSeen ||\r\n !deepEqual(contextData.context, oldContext) ||\r\n updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n this.invokeUpdateCallbacks(contextData, contextUpdatedMsg.delta, { updaterId: contextUpdatedMsg.updater_id });\r\n }\r\n };\r\n GW3Bridge.prototype.invokeUpdateCallbacks = function (contextData, delta, extraData) {\r\n delta = delta || { added: {}, updated: {}, reset: {}, removed: [] };\r\n if (delta.commands) {\r\n delta.added = delta.updated = delta.reset = {};\r\n delta.removed = [];\r\n for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) {\r\n var command = _a[_i];\r\n if (command.type === \"remove\") {\r\n if (command.path.indexOf(\".\") === -1) {\r\n delta.removed.push(command.path);\r\n }\r\n setValueToPath(delta.updated, null, command.path);\r\n }\r\n else if (command.type === \"set\") {\r\n setValueToPath(delta.updated, command.value, command.path);\r\n }\r\n }\r\n }\r\n for (var updateCallbackIndex in contextData.updateCallbacks) {\r\n if (contextData.updateCallbacks.hasOwnProperty(updateCallbackIndex)) {\r\n try {\r\n var updateCallback = contextData.updateCallbacks[updateCallbackIndex];\r\n updateCallback(deepClone(contextData.context), deepClone(Object.assign({}, delta.added || {}, delta.updated || {}, delta.reset || {})), delta.removed, parseInt(updateCallbackIndex, 10), extraData);\r\n }\r\n catch (err) {\r\n this._logger.debug(\"callback error: \" + JSON.stringify(err));\r\n }\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextDestroyedMessages = function () {\r\n var destroyedMessageTypes = [\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_ACTIVITY_DESTROYED,\r\n ];\r\n for (var _i = 0, destroyedMessageTypes_1 = destroyedMessageTypes; _i < destroyedMessageTypes_1.length; _i++) {\r\n var destroyedMessageType = destroyedMessageTypes_1[_i];\r\n var sub = this._connection.on(destroyedMessageType, this.handleContextDestroyedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextDestroyedMessage = function (destroyedMsg) {\r\n var destroyedMessageType = destroyedMsg.type;\r\n var contextId;\r\n var name;\r\n if (destroyedMessageType === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n name = destroyedMsg.activity_id;\r\n contextId = this._contextNameToId[name];\r\n if (!contextId) {\r\n this._logger.error(\"Received 'destroyed' for unknown activity: \".concat(destroyedMsg.activity_id));\r\n return;\r\n }\r\n }\r\n else {\r\n contextId = destroyedMsg.context_id;\r\n name = this._contextIdToName[contextId];\r\n if (!name) {\r\n this._logger.error(\"Received 'destroyed' for unknown context: \".concat(destroyedMsg.context_id));\r\n return;\r\n }\r\n }\r\n delete this._contextIdToName[contextId];\r\n delete this._contextNameToId[name];\r\n var contextData = this._contextNameToData[name];\r\n delete this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n this._logger.error(\"Received 'destroyed' for unknown context: \".concat(contextId));\r\n return;\r\n }\r\n };\r\n GW3Bridge.prototype.sendSubscribe = function (contextData) {\r\n contextData.sentExplicitSubscription = true;\r\n return this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_SUBSCRIBE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; });\r\n };\r\n GW3Bridge.prototype.sendUnsubscribe = function (contextData) {\r\n contextData.sentExplicitSubscription = false;\r\n return this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; });\r\n };\r\n GW3Bridge.prototype.calculateContextDeltaV1 = function (from, to) {\r\n var delta = { added: {}, updated: {}, removed: [], reset: undefined };\r\n if (from) {\r\n for (var _i = 0, _a = Object.keys(from); _i < _a.length; _i++) {\r\n var x = _a[_i];\r\n if (Object.keys(to).indexOf(x) !== -1\r\n && to[x] !== null\r\n && !deepEqual(from[x], to[x])) {\r\n delta.updated[x] = to[x];\r\n }\r\n }\r\n }\r\n for (var _b = 0, _c = Object.keys(to); _b < _c.length; _b++) {\r\n var x = _c[_b];\r\n if (!from || (Object.keys(from).indexOf(x) === -1)) {\r\n if (to[x] !== null) {\r\n delta.added[x] = to[x];\r\n }\r\n }\r\n else if (to[x] === null) {\r\n delta.removed.push(x);\r\n }\r\n }\r\n return delta;\r\n };\r\n GW3Bridge.prototype.calculateContextDeltaV2 = function (from, to) {\r\n var _a, _b;\r\n var delta = { added: {}, updated: {}, removed: [], reset: undefined, commands: [] };\r\n for (var _i = 0, _c = Object.keys(to); _i < _c.length; _i++) {\r\n var x = _c[_i];\r\n if (to[x] !== null) {\r\n var fromX = from ? from[x] : null;\r\n if (!deepEqual(fromX, to[x])) {\r\n (_a = delta.commands) === null || _a === void 0 ? void 0 : _a.push({ type: \"set\", path: x, value: to[x] });\r\n }\r\n }\r\n else {\r\n (_b = delta.commands) === null || _b === void 0 ? void 0 : _b.push({ type: \"remove\", path: x });\r\n }\r\n }\r\n return delta;\r\n };\r\n GW3Bridge.prototype.resetState = function () {\r\n var _this = this;\r\n for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) {\r\n var sub = _a[_i];\r\n this._connection.off(sub);\r\n }\r\n if (this._systemContextsSubKey) {\r\n this.unsubscribe(this._systemContextsSubKey);\r\n delete this._systemContextsSubKey;\r\n }\r\n this._gw3Subscriptions = [];\r\n this._contextNameToId = {};\r\n this._contextIdToName = {};\r\n delete this._protocolVersion;\r\n this._contextsTempCache = Object.keys(this._contextNameToData).reduce(function (cacheSoFar, ctxName) {\r\n cacheSoFar[ctxName] = _this._contextNameToData[ctxName].context;\r\n return cacheSoFar;\r\n }, {});\r\n this._contextNameToData = {};\r\n };\r\n GW3Bridge.prototype.reInitiateState = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _b, _c, _e, _i, ctxName, lastKnownData;\r\n var _this = this;\r\n return __generator(this, function (_f) {\r\n switch (_f.label) {\r\n case 0:\r\n this.subscribeToContextCreatedMessages();\r\n this.subscribeToContextUpdatedMessages();\r\n this.subscribeToContextDestroyedMessages();\r\n (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) {\r\n var type = message.type;\r\n if (!type) {\r\n return;\r\n }\r\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\r\n type === GW_MESSAGE_CONTEXT_ADDED ||\r\n type === GW_MESSAGE_ACTIVITY_CREATED) {\r\n _this.handleContextCreatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\r\n type === GW_MESSAGE_CONTEXT_UPDATED ||\r\n type === GW_MESSAGE_JOINED_ACTIVITY) {\r\n _this.handleContextUpdatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\r\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n _this.handleContextDestroyedMessage(message);\r\n }\r\n });\r\n return [4, Promise.all(this._contextsSubscriptionsCache.map(function (subscription) { return _this.subscribe(subscription.contextName, subscription.callback, subscription.subKey); }))];\r\n case 1:\r\n _f.sent();\r\n return [4, this.flushQueue()];\r\n case 2:\r\n _f.sent();\r\n _b = this._contextsTempCache;\r\n _c = [];\r\n for (_e in _b)\r\n _c.push(_e);\r\n _i = 0;\r\n _f.label = 3;\r\n case 3:\r\n if (!(_i < _c.length)) return [3, 7];\r\n _e = _c[_i];\r\n if (!(_e in _b)) return [3, 6];\r\n ctxName = _e;\r\n if (typeof this._contextsTempCache[ctxName] !== \"object\" || Object.keys(this._contextsTempCache[ctxName]).length === 0) {\r\n return [3, 6];\r\n }\r\n lastKnownData = this._contextsTempCache[ctxName];\r\n this._logger.info(\"Re-announcing known context: \".concat(ctxName));\r\n return [4, this.flushQueue()];\r\n case 4:\r\n _f.sent();\r\n return [4, this.update(ctxName, lastKnownData)];\r\n case 5:\r\n _f.sent();\r\n _f.label = 6;\r\n case 6:\r\n _i++;\r\n return [3, 3];\r\n case 7:\r\n this._contextsTempCache = {};\r\n this._logger.info(\"Contexts are re-announced\");\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.flushQueue = function () {\r\n return new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 0); });\r\n };\r\n return GW3Bridge;\r\n}());\n\nvar ContextsModule = (function () {\r\n function ContextsModule(config) {\r\n this._bridge = new GW3Bridge(config);\r\n }\r\n ContextsModule.prototype.all = function () {\r\n return this._bridge.all();\r\n };\r\n ContextsModule.prototype.update = function (name, data) {\r\n this.checkName(name);\r\n this.checkData(data);\r\n return this._bridge.update(name, data);\r\n };\r\n ContextsModule.prototype.set = function (name, data) {\r\n this.checkName(name);\r\n this.checkData(data);\r\n return this._bridge.set(name, data);\r\n };\r\n ContextsModule.prototype.setPath = function (name, path, data) {\r\n this.checkName(name);\r\n this.checkPath(path);\r\n var isTopLevelPath = path === \"\";\r\n if (isTopLevelPath) {\r\n this.checkData(data);\r\n return this.set(name, data);\r\n }\r\n return this._bridge.setPath(name, path, data);\r\n };\r\n ContextsModule.prototype.setPaths = function (name, paths) {\r\n this.checkName(name);\r\n if (!Array.isArray(paths)) {\r\n throw new Error(\"Please provide the paths as an array of PathValues!\");\r\n }\r\n for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) {\r\n var _a = paths_1[_i], path = _a.path, value = _a.value;\r\n this.checkPath(path);\r\n var isTopLevelPath = path === \"\";\r\n if (isTopLevelPath) {\r\n this.checkData(value);\r\n }\r\n }\r\n return this._bridge.setPaths(name, paths);\r\n };\r\n ContextsModule.prototype.subscribe = function (name, callback) {\r\n var _this = this;\r\n this.checkName(name);\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Please provide the callback as a function!\");\r\n }\r\n return this._bridge\r\n .subscribe(name, function (data, delta, removed, key, extraData) { return callback(data, delta, removed, function () { return _this._bridge.unsubscribe(key); }, extraData); })\r\n .then(function (key) {\r\n return function () {\r\n _this._bridge.unsubscribe(key);\r\n };\r\n });\r\n };\r\n ContextsModule.prototype.get = function (name) {\r\n this.checkName(name);\r\n return this._bridge.get(name);\r\n };\r\n ContextsModule.prototype.ready = function () {\r\n return Promise.resolve(this);\r\n };\r\n ContextsModule.prototype.destroy = function (name) {\r\n this.checkName(name);\r\n return this._bridge.destroy(name);\r\n };\r\n Object.defineProperty(ContextsModule.prototype, \"setPathSupported\", {\r\n get: function () {\r\n return this._bridge.setPathSupported;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ContextsModule.prototype.checkName = function (name) {\r\n if (typeof name !== \"string\" || name === \"\") {\r\n throw new Error(\"Please provide the name as a non-empty string!\");\r\n }\r\n };\r\n ContextsModule.prototype.checkPath = function (path) {\r\n if (typeof path !== \"string\") {\r\n throw new Error(\"Please provide the path as a dot delimited string!\");\r\n }\r\n };\r\n ContextsModule.prototype.checkData = function (data) {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Please provide the data as an object!\");\r\n }\r\n };\r\n return ContextsModule;\r\n}());\n\nfunction promisify (promise, successCallback, errorCallback) {\r\n if (typeof successCallback !== \"function\" && typeof errorCallback !== \"function\") {\r\n return promise;\r\n }\r\n if (typeof successCallback !== \"function\") {\r\n successCallback = function () { };\r\n }\r\n else if (typeof errorCallback !== \"function\") {\r\n errorCallback = function () { };\r\n }\r\n return promise.then(successCallback, errorCallback);\r\n}\n\nfunction rejectAfter(ms, promise, error) {\r\n if (ms === void 0) { ms = 0; }\r\n var timeout;\r\n var clearTimeoutIfThere = function () {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n }\r\n };\r\n promise\r\n .then(function () {\r\n clearTimeoutIfThere();\r\n })\r\n .catch(function () {\r\n clearTimeoutIfThere();\r\n });\r\n return new Promise(function (resolve, reject) {\r\n timeout = setTimeout(function () { return reject(error); }, ms);\r\n });\r\n}\n\nvar InvokeStatus;\r\n(function (InvokeStatus) {\r\n InvokeStatus[InvokeStatus[\"Success\"] = 0] = \"Success\";\r\n InvokeStatus[InvokeStatus[\"Error\"] = 1] = \"Error\";\r\n})(InvokeStatus || (InvokeStatus = {}));\r\nvar Client = (function () {\r\n function Client(protocol, repo, instance, configuration) {\r\n this.protocol = protocol;\r\n this.repo = repo;\r\n this.instance = instance;\r\n this.configuration = configuration;\r\n }\r\n Client.prototype.subscribe = function (method, options, successCallback, errorCallback, existingSub) {\r\n var _this = this;\r\n var callProtocolSubscribe = function (targetServers, stream, successProxy, errorProxy) {\r\n var _a;\r\n options.methodResponseTimeout = (_a = options.methodResponseTimeout) !== null && _a !== void 0 ? _a : options.waitTimeoutMs;\r\n _this.protocol.client.subscribe(stream, options, targetServers, successProxy, errorProxy, existingSub);\r\n };\r\n var promise = new Promise(function (resolve, reject) {\r\n var successProxy = function (sub) {\r\n resolve(sub);\r\n };\r\n var errorProxy = function (err) {\r\n reject(err);\r\n };\r\n if (!method) {\r\n reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\");\r\n return;\r\n }\r\n var methodDef;\r\n if (typeof method === \"string\") {\r\n methodDef = { name: method };\r\n }\r\n else {\r\n methodDef = method;\r\n }\r\n if (!methodDef.name) {\r\n reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\");\r\n return;\r\n }\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n var target = options.target;\r\n if (target === undefined) {\r\n target = \"best\";\r\n }\r\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\") {\r\n reject(new Error(\"\\\"\".concat(target, \"\\\" is not a valid target. Valid targets are \\\"all\\\", \\\"best\\\", or an instance.\")));\r\n return;\r\n }\r\n if (options.methodResponseTimeout === undefined) {\r\n options.methodResponseTimeout = options.method_response_timeout;\r\n if (options.methodResponseTimeout === undefined) {\r\n options.methodResponseTimeout = _this.configuration.methodResponseTimeout;\r\n }\r\n }\r\n if (options.waitTimeoutMs === undefined) {\r\n options.waitTimeoutMs = options.wait_for_method_timeout;\r\n if (options.waitTimeoutMs === undefined) {\r\n options.waitTimeoutMs = _this.configuration.waitTimeoutMs;\r\n }\r\n }\r\n var delayStep = 500;\r\n var delayTillNow = 0;\r\n var currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target);\r\n if (currentServers.length > 0) {\r\n callProtocolSubscribe(currentServers, currentServers[0].methods[0], successProxy, errorProxy);\r\n }\r\n else {\r\n var retry_1 = function () {\r\n if (!target || !(options.waitTimeoutMs)) {\r\n return;\r\n }\r\n delayTillNow += delayStep;\r\n currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target);\r\n if (currentServers.length > 0) {\r\n var streamInfo = currentServers[0].methods[0];\r\n callProtocolSubscribe(currentServers, streamInfo, successProxy, errorProxy);\r\n }\r\n else if (delayTillNow >= options.waitTimeoutMs) {\r\n var def = typeof method === \"string\" ? { name: method } : method;\r\n callProtocolSubscribe(currentServers, def, successProxy, errorProxy);\r\n }\r\n else {\r\n setTimeout(retry_1, delayStep);\r\n }\r\n };\r\n setTimeout(retry_1, delayStep);\r\n }\r\n });\r\n return promisify(promise, successCallback, errorCallback);\r\n };\r\n Client.prototype.servers = function (methodFilter) {\r\n var filterCopy = methodFilter === undefined\r\n ? undefined\r\n : __assign({}, methodFilter);\r\n return this.getServers(filterCopy).map(function (serverMethodMap) {\r\n return serverMethodMap.server.instance;\r\n });\r\n };\r\n Client.prototype.methods = function (methodFilter) {\r\n if (typeof methodFilter === \"string\") {\r\n methodFilter = { name: methodFilter };\r\n }\r\n else {\r\n methodFilter = __assign({}, methodFilter);\r\n }\r\n return this.getMethods(methodFilter);\r\n };\r\n Client.prototype.methodsForInstance = function (instance) {\r\n return this.getMethodsForInstance(instance);\r\n };\r\n Client.prototype.methodAdded = function (callback) {\r\n return this.repo.onMethodAdded(callback);\r\n };\r\n Client.prototype.methodRemoved = function (callback) {\r\n return this.repo.onMethodRemoved(callback);\r\n };\r\n Client.prototype.serverAdded = function (callback) {\r\n return this.repo.onServerAdded(callback);\r\n };\r\n Client.prototype.serverRemoved = function (callback) {\r\n return this.repo.onServerRemoved(function (server, reason) {\r\n callback(server, reason);\r\n });\r\n };\r\n Client.prototype.serverMethodAdded = function (callback) {\r\n return this.repo.onServerMethodAdded(function (server, method) {\r\n callback({ server: server, method: method });\r\n });\r\n };\r\n Client.prototype.serverMethodRemoved = function (callback) {\r\n return this.repo.onServerMethodRemoved(function (server, method) {\r\n callback({ server: server, method: method });\r\n });\r\n };\r\n Client.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var getInvokePromise;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n getInvokePromise = function () { return __awaiter(_this, void 0, void 0, function () {\r\n var methodDefinition, serversMethodMap, method, errorObj, timeout, additionalOptionsCopy, invokePromises, invocationMessages, results, allRejected;\r\n var _this = this;\r\n var _a, _b, _c;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n if (typeof methodFilter === \"string\") {\r\n methodDefinition = { name: methodFilter };\r\n }\r\n else {\r\n methodDefinition = __assign({}, methodFilter);\r\n }\r\n if (!methodDefinition.name) {\r\n return [2, Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\")];\r\n }\r\n if (!argumentObj) {\r\n argumentObj = {};\r\n }\r\n if (!target) {\r\n target = \"best\";\r\n }\r\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\" && target !== \"skipMine\") {\r\n return [2, Promise.reject(new Error(\"\\\"\".concat(target, \"\\\" is not a valid target. Valid targets are \\\"all\\\" and \\\"best\\\".\")))];\r\n }\r\n if (!additionalOptions) {\r\n additionalOptions = {};\r\n }\r\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\r\n additionalOptions.methodResponseTimeoutMs = additionalOptions.method_response_timeout;\r\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\r\n additionalOptions.methodResponseTimeoutMs = this.configuration.methodResponseTimeout;\r\n }\r\n }\r\n if (additionalOptions.waitTimeoutMs === undefined) {\r\n additionalOptions.waitTimeoutMs = additionalOptions.wait_for_method_timeout;\r\n if (additionalOptions.waitTimeoutMs === undefined) {\r\n additionalOptions.waitTimeoutMs = this.configuration.waitTimeoutMs;\r\n }\r\n }\r\n if (additionalOptions.waitTimeoutMs !== undefined && typeof additionalOptions.waitTimeoutMs !== \"number\") {\r\n return [2, Promise.reject(new Error(\"\\\"\".concat(additionalOptions.waitTimeoutMs, \"\\\" is not a valid number for \\\"waitTimeoutMs\\\" \")))];\r\n }\r\n if (typeof argumentObj !== \"object\") {\r\n return [2, Promise.reject(new Error(\"The method arguments must be an object. method: \".concat(methodDefinition.name)))];\r\n }\r\n serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target);\r\n if (!(serversMethodMap.length === 0)) return [3, 4];\r\n _d.label = 1;\r\n case 1:\r\n _d.trys.push([1, 3, , 4]);\r\n return [4, this.tryToAwaitForMethods(methodDefinition, target, additionalOptions)];\r\n case 2:\r\n serversMethodMap = _d.sent();\r\n return [3, 4];\r\n case 3:\r\n _d.sent();\r\n method = __assign(__assign({}, methodDefinition), { getServers: function () { return []; }, supportsStreaming: false, objectTypes: (_a = methodDefinition.objectTypes) !== null && _a !== void 0 ? _a : [], flags: (_c = (_b = methodDefinition.flags) === null || _b === void 0 ? void 0 : _b.metadata) !== null && _c !== void 0 ? _c : {} });\r\n errorObj = {\r\n method: method,\r\n called_with: argumentObj,\r\n message: \"Can not find a method matching \".concat(JSON.stringify(methodFilter), \" with server filter \").concat(JSON.stringify(target)),\r\n executed_by: undefined,\r\n returned: undefined,\r\n status: undefined,\r\n };\r\n return [2, Promise.reject(errorObj)];\r\n case 4:\r\n timeout = additionalOptions.methodResponseTimeoutMs;\r\n additionalOptionsCopy = additionalOptions;\r\n invokePromises = serversMethodMap.map(function (serversMethodPair) {\r\n var invId = shortid();\r\n var method = serversMethodPair.methods[0];\r\n var server = serversMethodPair.server;\r\n var invokePromise = _this.protocol.client.invoke(invId, method, argumentObj, server, additionalOptionsCopy);\r\n return Promise.race([\r\n invokePromise,\r\n rejectAfter(timeout, invokePromise, {\r\n invocationId: invId,\r\n message: \"Invocation timeout (\".concat(timeout, \" ms) reached for method name: \").concat(method === null || method === void 0 ? void 0 : method.name, \", target instance: \").concat(JSON.stringify(server.instance), \", options: \").concat(JSON.stringify(additionalOptionsCopy)),\r\n status: InvokeStatus.Error,\r\n })\r\n ]);\r\n });\r\n return [4, Promise.all(invokePromises)];\r\n case 5:\r\n invocationMessages = _d.sent();\r\n results = this.getInvocationResultObj(invocationMessages, methodDefinition, argumentObj);\r\n allRejected = invocationMessages.every(function (result) { return result.status === InvokeStatus.Error; });\r\n if (allRejected) {\r\n return [2, Promise.reject(results)];\r\n }\r\n return [2, results];\r\n }\r\n });\r\n }); };\r\n return [2, promisify(getInvokePromise(), success, error)];\r\n });\r\n });\r\n };\r\n Client.prototype.getInvocationResultObj = function (invocationResults, method, calledWith) {\r\n var all_return_values = invocationResults\r\n .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Success; })\r\n .reduce(function (allValues, currentValue) {\r\n allValues = __spreadArray(__spreadArray([], allValues, true), [\r\n {\r\n executed_by: currentValue.instance,\r\n returned: currentValue.result,\r\n called_with: calledWith,\r\n method: method,\r\n message: currentValue.message,\r\n status: currentValue.status,\r\n }\r\n ], false);\r\n return allValues;\r\n }, []);\r\n var all_errors = invocationResults\r\n .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Error; })\r\n .reduce(function (allErrors, currError) {\r\n allErrors = __spreadArray(__spreadArray([], allErrors, true), [\r\n {\r\n executed_by: currError.instance,\r\n called_with: calledWith,\r\n name: method.name,\r\n message: currError.message,\r\n }\r\n ], false);\r\n return allErrors;\r\n }, []);\r\n var invResult = invocationResults[0];\r\n var result = {\r\n method: method,\r\n called_with: calledWith,\r\n returned: invResult.result,\r\n executed_by: invResult.instance,\r\n all_return_values: all_return_values,\r\n all_errors: all_errors,\r\n message: invResult.message,\r\n status: invResult.status\r\n };\r\n return result;\r\n };\r\n Client.prototype.tryToAwaitForMethods = function (methodDefinition, target, additionalOptions) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n if (additionalOptions.waitTimeoutMs === 0) {\r\n reject();\r\n return;\r\n }\r\n var delayStep = 500;\r\n var delayTillNow = 0;\r\n var retry = function () {\r\n delayTillNow += delayStep;\r\n var serversMethodMap = _this.getServerMethodsByFilterAndTarget(methodDefinition, target);\r\n if (serversMethodMap.length > 0) {\r\n clearInterval(interval);\r\n resolve(serversMethodMap);\r\n }\r\n else if (delayTillNow >= (additionalOptions.waitTimeoutMs || 10000)) {\r\n clearInterval(interval);\r\n reject();\r\n return;\r\n }\r\n };\r\n var interval = setInterval(retry, delayStep);\r\n });\r\n };\r\n Client.prototype.filterByTarget = function (target, serverMethodMap) {\r\n var _this = this;\r\n if (typeof target === \"string\") {\r\n if (target === \"all\") {\r\n return __spreadArray([], serverMethodMap, true);\r\n }\r\n else if (target === \"best\") {\r\n var localMachine = serverMethodMap\r\n .find(function (s) { return s.server.instance.isLocal; });\r\n if (localMachine) {\r\n return [localMachine];\r\n }\r\n if (serverMethodMap[0] !== undefined) {\r\n return [serverMethodMap[0]];\r\n }\r\n }\r\n else if (target === \"skipMine\") {\r\n return serverMethodMap.filter(function (_a) {\r\n var server = _a.server;\r\n return server.instance.peerId !== _this.instance.peerId;\r\n });\r\n }\r\n }\r\n else {\r\n var targetArray = void 0;\r\n if (!Array.isArray(target)) {\r\n targetArray = [target];\r\n }\r\n else {\r\n targetArray = target;\r\n }\r\n var allServersMatching = targetArray.reduce(function (matches, filter) {\r\n var myMatches = serverMethodMap.filter(function (serverMethodPair) {\r\n return _this.instanceMatch(filter, serverMethodPair.server.instance);\r\n });\r\n return matches.concat(myMatches);\r\n }, []);\r\n return allServersMatching;\r\n }\r\n return [];\r\n };\r\n Client.prototype.instanceMatch = function (instanceFilter, instanceDefinition) {\r\n return this.containsProps(instanceFilter, instanceDefinition);\r\n };\r\n Client.prototype.methodMatch = function (methodFilter, methodDefinition) {\r\n return this.containsProps(methodFilter, methodDefinition);\r\n };\r\n Client.prototype.containsProps = function (filter, repoMethod) {\r\n var filterProps = Object.keys(filter)\r\n .filter(function (prop) {\r\n return filter[prop] !== undefined\r\n && filter[prop] !== null\r\n && typeof filter[prop] !== \"function\"\r\n && prop !== \"object_types\"\r\n && prop !== \"display_name\"\r\n && prop !== \"id\"\r\n && prop !== \"gatewayId\"\r\n && prop !== \"identifier\"\r\n && prop[0] !== \"_\";\r\n });\r\n return filterProps.every(function (prop) {\r\n var isMatch;\r\n var filterValue = filter[prop];\r\n var repoMethodValue = repoMethod[prop];\r\n switch (prop) {\r\n case \"objectTypes\":\r\n isMatch = (filterValue || []).every(function (filterValueEl) {\r\n return (repoMethodValue || []).includes(filterValueEl);\r\n });\r\n break;\r\n case \"flags\":\r\n isMatch = isSubset(repoMethodValue || {}, filterValue || {});\r\n break;\r\n default:\r\n isMatch = String(filterValue).toLowerCase() === String(repoMethodValue).toLowerCase();\r\n }\r\n return isMatch;\r\n });\r\n };\r\n Client.prototype.getMethods = function (methodFilter) {\r\n var _this = this;\r\n if (methodFilter === undefined) {\r\n return this.repo.getMethods();\r\n }\r\n var methods = this.repo.getMethods().filter(function (method) {\r\n return _this.methodMatch(methodFilter, method);\r\n });\r\n return methods;\r\n };\r\n Client.prototype.getMethodsForInstance = function (instanceFilter) {\r\n var _this = this;\r\n var allServers = this.repo.getServers();\r\n var matchingServers = allServers.filter(function (server) {\r\n return _this.instanceMatch(instanceFilter, server.instance);\r\n });\r\n if (matchingServers.length === 0) {\r\n return [];\r\n }\r\n var resultMethodsObject = {};\r\n if (matchingServers.length === 1) {\r\n resultMethodsObject = matchingServers[0].methods;\r\n }\r\n else {\r\n matchingServers.forEach(function (server) {\r\n Object.keys(server.methods).forEach(function (methodKey) {\r\n var method = server.methods[methodKey];\r\n resultMethodsObject[method.identifier] = method;\r\n });\r\n });\r\n }\r\n return Object.keys(resultMethodsObject)\r\n .map(function (key) {\r\n return resultMethodsObject[key];\r\n });\r\n };\r\n Client.prototype.getServers = function (methodFilter) {\r\n var _this = this;\r\n var servers = this.repo.getServers();\r\n if (methodFilter === undefined) {\r\n return servers.map(function (server) {\r\n return { server: server, methods: [] };\r\n });\r\n }\r\n return servers.reduce(function (prev, current) {\r\n var methodsForServer = Object.values(current.methods);\r\n var matchingMethods = methodsForServer.filter(function (method) {\r\n return _this.methodMatch(methodFilter, method);\r\n });\r\n if (matchingMethods.length > 0) {\r\n prev.push({ server: current, methods: matchingMethods });\r\n }\r\n return prev;\r\n }, []);\r\n };\r\n Client.prototype.getServerMethodsByFilterAndTarget = function (methodFilter, target) {\r\n var serversMethodMap = this.getServers(methodFilter);\r\n return this.filterByTarget(target, serversMethodMap);\r\n };\r\n return Client;\r\n}());\n\nvar ServerSubscription = (function () {\r\n function ServerSubscription(protocol, repoMethod, subscription) {\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n this.subscription = subscription;\r\n }\r\n Object.defineProperty(ServerSubscription.prototype, \"stream\", {\r\n get: function () {\r\n if (!this.repoMethod.stream) {\r\n throw new Error(\"no stream\");\r\n }\r\n return this.repoMethod.stream;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"arguments\", {\r\n get: function () { return this.subscription.arguments || {}; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"branchKey\", {\r\n get: function () { return this.subscription.branchKey; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"instance\", {\r\n get: function () {\r\n if (!this.subscription.instance) {\r\n throw new Error(\"no instance\");\r\n }\r\n return this.subscription.instance;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ServerSubscription.prototype.close = function () {\r\n this.protocol.server.closeSingleSubscription(this.repoMethod, this.subscription);\r\n };\r\n ServerSubscription.prototype.push = function (data) {\r\n this.protocol.server.pushDataToSingle(this.repoMethod, this.subscription, data);\r\n };\r\n return ServerSubscription;\r\n}());\n\nvar Request = (function () {\r\n function Request(protocol, repoMethod, requestContext) {\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n this.requestContext = requestContext;\r\n this.arguments = requestContext.arguments;\r\n this.instance = requestContext.instance;\r\n }\r\n Request.prototype.accept = function () {\r\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, \"\");\r\n };\r\n Request.prototype.acceptOnBranch = function (branch) {\r\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, branch);\r\n };\r\n Request.prototype.reject = function (reason) {\r\n this.protocol.server.rejectRequest(this.requestContext, this.repoMethod, reason);\r\n };\r\n return Request;\r\n}());\n\nvar ServerStreaming$1 = (function () {\r\n function ServerStreaming(protocol, server) {\r\n var _this = this;\r\n this.protocol = protocol;\r\n this.server = server;\r\n protocol.server.onSubRequest(function (rc, rm) { return _this.handleSubRequest(rc, rm); });\r\n protocol.server.onSubAdded(function (sub, rm) { return _this.handleSubAdded(sub, rm); });\r\n protocol.server.onSubRemoved(function (sub, rm) { return _this.handleSubRemoved(sub, rm); });\r\n }\r\n ServerStreaming.prototype.handleSubRequest = function (requestContext, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionRequestHandler === \"function\")) {\r\n return;\r\n }\r\n var request = new Request(this.protocol, repoMethod, requestContext);\r\n repoMethod.streamCallbacks.subscriptionRequestHandler(request);\r\n };\r\n ServerStreaming.prototype.handleSubAdded = function (subscription, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionAddedHandler === \"function\")) {\r\n return;\r\n }\r\n var sub = new ServerSubscription(this.protocol, repoMethod, subscription);\r\n repoMethod.streamCallbacks.subscriptionAddedHandler(sub);\r\n };\r\n ServerStreaming.prototype.handleSubRemoved = function (subscription, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionRemovedHandler === \"function\")) {\r\n return;\r\n }\r\n var sub = new ServerSubscription(this.protocol, repoMethod, subscription);\r\n repoMethod.streamCallbacks.subscriptionRemovedHandler(sub);\r\n };\r\n return ServerStreaming;\r\n}());\n\nvar ServerBranch = (function () {\r\n function ServerBranch(key, protocol, repoMethod) {\r\n this.key = key;\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n }\r\n ServerBranch.prototype.subscriptions = function () {\r\n var _this = this;\r\n var subList = this.protocol.server.getSubscriptionList(this.repoMethod, this.key);\r\n return subList.map(function (sub) {\r\n return new ServerSubscription(_this.protocol, _this.repoMethod, sub);\r\n });\r\n };\r\n ServerBranch.prototype.close = function () {\r\n this.protocol.server.closeAllSubscriptions(this.repoMethod, this.key);\r\n };\r\n ServerBranch.prototype.push = function (data) {\r\n this.protocol.server.pushData(this.repoMethod, data, [this.key]);\r\n };\r\n return ServerBranch;\r\n}());\n\nvar ServerStream = (function () {\r\n function ServerStream(_protocol, _repoMethod, _server) {\r\n this._protocol = _protocol;\r\n this._repoMethod = _repoMethod;\r\n this._server = _server;\r\n this.name = this._repoMethod.definition.name;\r\n }\r\n ServerStream.prototype.branches = function (key) {\r\n var _this = this;\r\n var bList = this._protocol.server.getBranchList(this._repoMethod);\r\n if (key) {\r\n if (bList.indexOf(key) > -1) {\r\n return new ServerBranch(key, this._protocol, this._repoMethod);\r\n }\r\n return undefined;\r\n }\r\n else {\r\n return bList.map(function (branchKey) {\r\n return new ServerBranch(branchKey, _this._protocol, _this._repoMethod);\r\n });\r\n }\r\n };\r\n ServerStream.prototype.branch = function (key) {\r\n return this.branches(key);\r\n };\r\n ServerStream.prototype.subscriptions = function () {\r\n var _this = this;\r\n var subList = this._protocol.server.getSubscriptionList(this._repoMethod);\r\n return subList.map(function (sub) {\r\n return new ServerSubscription(_this._protocol, _this._repoMethod, sub);\r\n });\r\n };\r\n Object.defineProperty(ServerStream.prototype, \"definition\", {\r\n get: function () {\r\n var _a;\r\n var def2 = this._repoMethod.definition;\r\n return {\r\n accepts: def2.accepts,\r\n description: def2.description,\r\n displayName: def2.displayName,\r\n name: def2.name,\r\n objectTypes: def2.objectTypes,\r\n returns: def2.returns,\r\n supportsStreaming: def2.supportsStreaming,\r\n flags: (_a = def2.flags) === null || _a === void 0 ? void 0 : _a.metadata,\r\n };\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ServerStream.prototype.close = function () {\r\n this._protocol.server.closeAllSubscriptions(this._repoMethod);\r\n this._server.unregister(this._repoMethod.definition, true);\r\n };\r\n ServerStream.prototype.push = function (data, branches) {\r\n if (typeof branches !== \"string\" && !Array.isArray(branches) && branches !== undefined) {\r\n throw new Error(\"invalid branches should be string or string array\");\r\n }\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n this._protocol.server.pushData(this._repoMethod, data, branches);\r\n };\r\n ServerStream.prototype.updateRepoMethod = function (repoMethod) {\r\n this._repoMethod = repoMethod;\r\n };\r\n return ServerStream;\r\n}());\n\nvar Server = (function () {\r\n function Server(protocol, serverRepository) {\r\n this.protocol = protocol;\r\n this.serverRepository = serverRepository;\r\n this.invocations = 0;\r\n this.currentlyUnregistering = {};\r\n this.streaming = new ServerStreaming$1(protocol, this);\r\n this.protocol.server.onInvoked(this.onMethodInvoked.bind(this));\r\n }\r\n Server.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback, existingStream) {\r\n var _this = this;\r\n var promise = new Promise(function (resolve, reject) {\r\n if (!streamDef) {\r\n reject(\"The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream.\");\r\n return;\r\n }\r\n var streamMethodDefinition;\r\n if (typeof streamDef === \"string\") {\r\n streamMethodDefinition = { name: \"\" + streamDef };\r\n }\r\n else {\r\n streamMethodDefinition = __assign({}, streamDef);\r\n }\r\n if (!streamMethodDefinition.name) {\r\n return reject(\"The \\u201Cname\\u201D property is required for the \\u201CstreamDefinition\\u201D object and must be unique. Stream definition: \".concat(JSON.stringify(streamMethodDefinition)));\r\n }\r\n var nameAlreadyExists = _this.serverRepository.getList()\r\n .some(function (serverMethod) { return serverMethod.definition.name === streamMethodDefinition.name; });\r\n if (nameAlreadyExists) {\r\n return reject(\"A stream with the name \\\"\".concat(streamMethodDefinition.name, \"\\\" already exists! Please, provide a unique name for the stream.\"));\r\n }\r\n streamMethodDefinition.supportsStreaming = true;\r\n if (!callbacks) {\r\n callbacks = {};\r\n }\r\n if (typeof callbacks.subscriptionRequestHandler !== \"function\") {\r\n callbacks.subscriptionRequestHandler = function (request) {\r\n request.accept();\r\n };\r\n }\r\n var repoMethod = _this.serverRepository.add({\r\n definition: streamMethodDefinition,\r\n streamCallbacks: callbacks,\r\n protocolState: {},\r\n });\r\n _this.protocol.server.createStream(repoMethod)\r\n .then(function () {\r\n var streamUserObject;\r\n if (existingStream) {\r\n streamUserObject = existingStream;\r\n existingStream.updateRepoMethod(repoMethod);\r\n }\r\n else {\r\n streamUserObject = new ServerStream(_this.protocol, repoMethod, _this);\r\n }\r\n repoMethod.stream = streamUserObject;\r\n resolve(streamUserObject);\r\n })\r\n .catch(function (err) {\r\n if (repoMethod.repoId) {\r\n _this.serverRepository.remove(repoMethod.repoId);\r\n }\r\n reject(err);\r\n });\r\n });\r\n return promisify(promise, successCallback, errorCallback);\r\n };\r\n Server.prototype.register = function (methodDefinition, callback) {\r\n var _this = this;\r\n if (!methodDefinition) {\r\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\r\n }\r\n if (typeof callback !== \"function\") {\r\n return Promise.reject(\"The second parameter must be a callback function. Method: \".concat(typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name));\r\n }\r\n var wrappedCallbackFunction = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () {\r\n var result, resultValue, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 4, , 5]);\r\n result = callback(context.args, context.instance);\r\n if (!(result && typeof result.then === \"function\")) return [3, 2];\r\n return [4, result];\r\n case 1:\r\n resultValue = _a.sent();\r\n resultCallback(undefined, resultValue);\r\n return [3, 3];\r\n case 2:\r\n resultCallback(undefined, result);\r\n _a.label = 3;\r\n case 3: return [3, 5];\r\n case 4:\r\n e_1 = _a.sent();\r\n resultCallback(e_1 !== null && e_1 !== void 0 ? e_1 : \"\", e_1 !== null && e_1 !== void 0 ? e_1 : \"\");\r\n return [3, 5];\r\n case 5: return [2];\r\n }\r\n });\r\n }); };\r\n wrappedCallbackFunction.userCallback = callback;\r\n return this.registerCore(methodDefinition, wrappedCallbackFunction);\r\n };\r\n Server.prototype.registerAsync = function (methodDefinition, callback) {\r\n var _this = this;\r\n if (!methodDefinition) {\r\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\r\n }\r\n if (typeof callback !== \"function\") {\r\n return Promise.reject(\"The second parameter must be a callback function. Method: \".concat(typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name));\r\n }\r\n var wrappedCallback = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () {\r\n var resultCalled_1, success, error, methodResult;\r\n return __generator(this, function (_a) {\r\n try {\r\n resultCalled_1 = false;\r\n success = function (result) {\r\n if (!resultCalled_1) {\r\n resultCallback(undefined, result);\r\n }\r\n resultCalled_1 = true;\r\n };\r\n error = function (e) {\r\n if (!resultCalled_1) {\r\n if (!e) {\r\n e = \"\";\r\n }\r\n resultCallback(e, e);\r\n }\r\n resultCalled_1 = true;\r\n };\r\n methodResult = callback(context.args, context.instance, success, error);\r\n if (methodResult && typeof methodResult.then === \"function\") {\r\n methodResult\r\n .then(success)\r\n .catch(error);\r\n }\r\n }\r\n catch (e) {\r\n resultCallback(e, undefined);\r\n }\r\n return [2];\r\n });\r\n }); };\r\n wrappedCallback.userCallbackAsync = callback;\r\n return this.registerCore(methodDefinition, wrappedCallback);\r\n };\r\n Server.prototype.unregister = function (methodFilter, forStream) {\r\n if (forStream === void 0) { forStream = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodDefinition, methodToBeRemoved;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (methodFilter === undefined) {\r\n return [2, Promise.reject(\"Please, provide either a unique string for a name or an object containing a “name” property.\")];\r\n }\r\n if (!(typeof methodFilter === \"function\")) return [3, 2];\r\n return [4, this.unregisterWithPredicate(methodFilter, forStream)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n case 2:\r\n if (typeof methodFilter === \"string\") {\r\n methodDefinition = { name: methodFilter };\r\n }\r\n else {\r\n methodDefinition = methodFilter;\r\n }\r\n if (methodDefinition.name === undefined) {\r\n return [2, Promise.reject(\"Method name is required. Cannot find a method if the method name is undefined!\")];\r\n }\r\n methodToBeRemoved = this.serverRepository.getList().find(function (serverMethod) {\r\n return serverMethod.definition.name === methodDefinition.name\r\n && (serverMethod.definition.supportsStreaming || false) === forStream;\r\n });\r\n if (!methodToBeRemoved) {\r\n return [2, Promise.reject(\"Method with a name \\\"\".concat(methodDefinition.name, \"\\\" does not exist or is not registered by your application!\"))];\r\n }\r\n return [4, this.removeMethodsOrStreams([methodToBeRemoved])];\r\n case 3:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.unregisterWithPredicate = function (filterPredicate, forStream) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodsOrStreamsToRemove;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n methodsOrStreamsToRemove = this.serverRepository.getList()\r\n .filter(function (sm) { return filterPredicate(sm.definition); })\r\n .filter(function (serverMethod) {\r\n return (serverMethod.definition.supportsStreaming || false) === forStream;\r\n });\r\n if (!methodsOrStreamsToRemove || methodsOrStreamsToRemove.length === 0) {\r\n return [2, Promise.reject(\"Could not find a \".concat(forStream ? \"stream\" : \"method\", \" matching the specified condition!\"))];\r\n }\r\n return [4, this.removeMethodsOrStreams(methodsOrStreamsToRemove)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.removeMethodsOrStreams = function (methodsToRemove) {\r\n var _this = this;\r\n var methodUnregPromises = [];\r\n methodsToRemove.forEach(function (method) {\r\n var promise = _this.protocol.server.unregister(method)\r\n .then(function () {\r\n if (method.repoId) {\r\n _this.serverRepository.remove(method.repoId);\r\n }\r\n });\r\n methodUnregPromises.push(promise);\r\n _this.addAsCurrentlyUnregistering(method.definition.name, promise);\r\n });\r\n return Promise.all(methodUnregPromises);\r\n };\r\n Server.prototype.addAsCurrentlyUnregistering = function (methodName, promise) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var timeout;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n timeout = new Promise(function (resolve) { return setTimeout(resolve, 5000); });\r\n this.currentlyUnregistering[methodName] = Promise.race([promise, timeout]).then(function () {\r\n delete _this.currentlyUnregistering[methodName];\r\n });\r\n return [2];\r\n });\r\n });\r\n };\r\n Server.prototype.registerCore = function (method, theFunction) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodDefinition, unregisterInProgress, nameAlreadyExists, repoMethod;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (typeof method === \"string\") {\r\n methodDefinition = { name: \"\" + method };\r\n }\r\n else {\r\n methodDefinition = __assign({}, method);\r\n }\r\n if (!methodDefinition.name) {\r\n return [2, Promise.reject(\"Please, provide a (unique) string value for the \\u201Cname\\u201D property in the \\u201CmethodDefinition\\u201D object: \".concat(JSON.stringify(method)))];\r\n }\r\n unregisterInProgress = this.currentlyUnregistering[methodDefinition.name];\r\n if (!(typeof unregisterInProgress !== \"undefined\")) return [3, 2];\r\n return [4, unregisterInProgress];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n nameAlreadyExists = this.serverRepository.getList()\r\n .some(function (serverMethod) { return serverMethod.definition.name === methodDefinition.name; });\r\n if (nameAlreadyExists) {\r\n return [2, Promise.reject(\"A method with the name \\\"\".concat(methodDefinition.name, \"\\\" already exists! Please, provide a unique name for the method.\"))];\r\n }\r\n if (methodDefinition.supportsStreaming) {\r\n return [2, Promise.reject(\"When you create methods with \\u201Cglue.interop.register()\\u201D or \\u201Cglue.interop.registerAsync()\\u201D the property \\u201CsupportsStreaming\\u201D cannot be \\u201Ctrue\\u201D. If you want \\u201C\".concat(methodDefinition.name, \"\\u201D to be a stream, please use the \\u201Cglue.interop.createStream()\\u201D method.\"))];\r\n }\r\n repoMethod = this.serverRepository.add({\r\n definition: methodDefinition,\r\n theFunction: theFunction,\r\n protocolState: {},\r\n });\r\n return [2, this.protocol.server.register(repoMethod)\r\n .catch(function (err) {\r\n if (repoMethod === null || repoMethod === void 0 ? void 0 : repoMethod.repoId) {\r\n _this.serverRepository.remove(repoMethod.repoId);\r\n }\r\n throw err;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.onMethodInvoked = function (methodToExecute, invocationId, invocationArgs) {\r\n var _this = this;\r\n if (!methodToExecute || !methodToExecute.theFunction) {\r\n return;\r\n }\r\n methodToExecute.theFunction(invocationArgs, function (err, result) {\r\n if (err !== undefined && err !== null) {\r\n if (err.message && typeof err.message === \"string\") {\r\n err = err.message;\r\n }\r\n else if (typeof err !== \"string\") {\r\n try {\r\n err = JSON.stringify(err);\r\n }\r\n catch (unStrException) {\r\n err = \"un-stringifyable error in onMethodInvoked! Top level prop names: \".concat(Object.keys(err));\r\n }\r\n }\r\n }\r\n if (!result) {\r\n result = {};\r\n }\r\n else if (typeof result !== \"object\" || Array.isArray(result)) {\r\n result = { _value: result };\r\n }\r\n _this.protocol.server.methodInvocationResult(methodToExecute, invocationId, err, result);\r\n });\r\n };\r\n return Server;\r\n}());\n\nvar InstanceWrapper = (function () {\r\n function InstanceWrapper(API, instance, connection) {\r\n var _this = this;\r\n this.wrapped = {};\r\n this.wrapped.getMethods = function () {\r\n return API.methodsForInstance(this);\r\n };\r\n this.wrapped.getStreams = function () {\r\n return API.methodsForInstance(this).filter(function (m) { return m.supportsStreaming; });\r\n };\r\n if (instance) {\r\n this.refreshWrappedObject(instance);\r\n }\r\n if (connection) {\r\n connection.loggedIn(function () {\r\n _this.refresh(connection);\r\n });\r\n this.refresh(connection);\r\n }\r\n }\r\n InstanceWrapper.prototype.unwrap = function () {\r\n return this.wrapped;\r\n };\r\n InstanceWrapper.prototype.refresh = function (connection) {\r\n if (!connection) {\r\n return;\r\n }\r\n var resolvedIdentity = connection === null || connection === void 0 ? void 0 : connection.resolvedIdentity;\r\n var instance = Object.assign({}, resolvedIdentity !== null && resolvedIdentity !== void 0 ? resolvedIdentity : {}, { peerId: connection === null || connection === void 0 ? void 0 : connection.peerId });\r\n this.refreshWrappedObject(instance);\r\n };\r\n InstanceWrapper.prototype.refreshWrappedObject = function (resolvedIdentity) {\r\n var _this = this;\r\n var _a, _b, _c, _d;\r\n Object.keys(resolvedIdentity).forEach(function (key) {\r\n _this.wrapped[key] = resolvedIdentity[key];\r\n });\r\n this.wrapped.user = resolvedIdentity.user;\r\n this.wrapped.instance = resolvedIdentity.instance;\r\n this.wrapped.application = (_a = resolvedIdentity.application) !== null && _a !== void 0 ? _a : shortid();\r\n this.wrapped.applicationName = resolvedIdentity.applicationName;\r\n this.wrapped.pid = (_c = (_b = resolvedIdentity.pid) !== null && _b !== void 0 ? _b : resolvedIdentity.process) !== null && _c !== void 0 ? _c : Math.floor(Math.random() * 10000000000);\r\n this.wrapped.machine = resolvedIdentity.machine;\r\n this.wrapped.environment = resolvedIdentity.environment;\r\n this.wrapped.region = resolvedIdentity.region;\r\n this.wrapped.windowId = resolvedIdentity.windowId;\r\n this.wrapped.isLocal = (_d = resolvedIdentity.isLocal) !== null && _d !== void 0 ? _d : true;\r\n this.wrapped.api = resolvedIdentity.api;\r\n this.wrapped.service = resolvedIdentity.service;\r\n this.wrapped.peerId = resolvedIdentity.peerId;\r\n };\r\n return InstanceWrapper;\r\n}());\n\nvar hideMethodSystemFlags = function (method) {\r\n return __assign(__assign({}, method), { flags: method.flags.metadata || {} });\r\n};\r\nvar ClientRepository = (function () {\r\n function ClientRepository(logger, API) {\r\n this.logger = logger;\r\n this.API = API;\r\n this.servers = {};\r\n this.methodsCount = {};\r\n this.callbacks = lib$1();\r\n var peerId = this.API.instance.peerId;\r\n this.myServer = {\r\n id: peerId,\r\n methods: {},\r\n instance: this.API.instance,\r\n wrapper: this.API.unwrappedInstance,\r\n };\r\n this.servers[peerId] = this.myServer;\r\n }\r\n ClientRepository.prototype.addServer = function (info, serverId) {\r\n this.logger.debug(\"adding server \".concat(serverId));\r\n var current = this.servers[serverId];\r\n if (current) {\r\n return current.id;\r\n }\r\n var wrapper = new InstanceWrapper(this.API, info);\r\n var serverEntry = {\r\n id: serverId,\r\n methods: {},\r\n instance: wrapper.unwrap(),\r\n wrapper: wrapper,\r\n };\r\n this.servers[serverId] = serverEntry;\r\n this.callbacks.execute(\"onServerAdded\", serverEntry.instance);\r\n return serverId;\r\n };\r\n ClientRepository.prototype.removeServerById = function (id, reason) {\r\n var _this = this;\r\n var server = this.servers[id];\r\n if (!server) {\r\n this.logger.warn(\"not aware of server \".concat(id, \", my state \").concat(JSON.stringify(Object.keys(this.servers))));\r\n return;\r\n }\r\n else {\r\n this.logger.debug(\"removing server \".concat(id));\r\n }\r\n Object.keys(server.methods).forEach(function (methodId) {\r\n _this.removeServerMethod(id, methodId);\r\n });\r\n delete this.servers[id];\r\n this.callbacks.execute(\"onServerRemoved\", server.instance, reason);\r\n };\r\n ClientRepository.prototype.addServerMethod = function (serverId, method) {\r\n var _a;\r\n var server = this.servers[serverId];\r\n if (!server) {\r\n throw new Error(\"server does not exists\");\r\n }\r\n if (server.methods[method.id]) {\r\n return;\r\n }\r\n var identifier = this.createMethodIdentifier(method);\r\n var that = this;\r\n var methodDefinition = {\r\n identifier: identifier,\r\n gatewayId: method.id,\r\n name: method.name,\r\n displayName: method.display_name,\r\n description: method.description,\r\n version: method.version,\r\n objectTypes: method.object_types || [],\r\n accepts: method.input_signature,\r\n returns: method.result_signature,\r\n supportsStreaming: typeof method.flags !== \"undefined\" ? method.flags.streaming : false,\r\n flags: (_a = method.flags) !== null && _a !== void 0 ? _a : {},\r\n getServers: function () {\r\n return that.getServersByMethod(identifier);\r\n }\r\n };\r\n methodDefinition.object_types = methodDefinition.objectTypes;\r\n methodDefinition.display_name = methodDefinition.displayName;\r\n methodDefinition.version = methodDefinition.version;\r\n server.methods[method.id] = methodDefinition;\r\n var clientMethodDefinition = hideMethodSystemFlags(methodDefinition);\r\n if (!this.methodsCount[identifier]) {\r\n this.methodsCount[identifier] = 0;\r\n this.callbacks.execute(\"onMethodAdded\", clientMethodDefinition);\r\n }\r\n this.methodsCount[identifier] = this.methodsCount[identifier] + 1;\r\n this.callbacks.execute(\"onServerMethodAdded\", server.instance, clientMethodDefinition);\r\n return methodDefinition;\r\n };\r\n ClientRepository.prototype.removeServerMethod = function (serverId, methodId) {\r\n var server = this.servers[serverId];\r\n if (!server) {\r\n throw new Error(\"server does not exists\");\r\n }\r\n var method = server.methods[methodId];\r\n delete server.methods[methodId];\r\n var clientMethodDefinition = hideMethodSystemFlags(method);\r\n this.methodsCount[method.identifier] = this.methodsCount[method.identifier] - 1;\r\n if (this.methodsCount[method.identifier] === 0) {\r\n this.callbacks.execute(\"onMethodRemoved\", clientMethodDefinition);\r\n }\r\n this.callbacks.execute(\"onServerMethodRemoved\", server.instance, clientMethodDefinition);\r\n };\r\n ClientRepository.prototype.getMethods = function () {\r\n return this.extractMethodsFromServers(Object.values(this.servers)).map(hideMethodSystemFlags);\r\n };\r\n ClientRepository.prototype.getServers = function () {\r\n return Object.values(this.servers).map(this.hideServerMethodSystemFlags);\r\n };\r\n ClientRepository.prototype.onServerAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerAdded\", callback);\r\n var serversWithMethodsToReplay = this.getServers().map(function (s) { return s.instance; });\r\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, serversWithMethodsToReplay, callback);\r\n };\r\n ClientRepository.prototype.onMethodAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onMethodAdded\", callback);\r\n var methodsToReplay = this.getMethods();\r\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, methodsToReplay, callback);\r\n };\r\n ClientRepository.prototype.onServerMethodAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerMethodAdded\", callback);\r\n var unsubCalled = false;\r\n var servers = this.getServers();\r\n setTimeout(function () {\r\n servers.forEach(function (server) {\r\n var methods = server.methods;\r\n Object.keys(methods).forEach(function (methodId) {\r\n if (!unsubCalled) {\r\n callback(server.instance, methods[methodId]);\r\n }\r\n });\r\n });\r\n }, 0);\r\n return function () {\r\n unsubCalled = true;\r\n unsubscribeFunc();\r\n };\r\n };\r\n ClientRepository.prototype.onMethodRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onMethodRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.onServerRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.onServerMethodRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerMethodRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.getServerById = function (id) {\r\n return this.hideServerMethodSystemFlags(this.servers[id]);\r\n };\r\n ClientRepository.prototype.reset = function () {\r\n var _a;\r\n var _this = this;\r\n Object.keys(this.servers).forEach(function (key) {\r\n _this.removeServerById(key, \"reset\");\r\n });\r\n this.servers = (_a = {},\r\n _a[this.myServer.id] = this.myServer,\r\n _a);\r\n this.methodsCount = {};\r\n };\r\n ClientRepository.prototype.createMethodIdentifier = function (methodInfo) {\r\n var _a, _b;\r\n var accepts = (_a = methodInfo.input_signature) !== null && _a !== void 0 ? _a : \"\";\r\n var returns = (_b = methodInfo.result_signature) !== null && _b !== void 0 ? _b : \"\";\r\n return (methodInfo.name + accepts + returns).toLowerCase();\r\n };\r\n ClientRepository.prototype.getServersByMethod = function (identifier) {\r\n var allServers = [];\r\n Object.values(this.servers).forEach(function (server) {\r\n Object.values(server.methods).forEach(function (method) {\r\n if (method.identifier === identifier) {\r\n allServers.push(server.instance);\r\n }\r\n });\r\n });\r\n return allServers;\r\n };\r\n ClientRepository.prototype.returnUnsubWithDelayedReplay = function (unsubscribeFunc, collectionToReplay, callback) {\r\n var unsubCalled = false;\r\n setTimeout(function () {\r\n collectionToReplay.forEach(function (item) {\r\n if (!unsubCalled) {\r\n callback(item);\r\n }\r\n });\r\n }, 0);\r\n return function () {\r\n unsubCalled = true;\r\n unsubscribeFunc();\r\n };\r\n };\r\n ClientRepository.prototype.hideServerMethodSystemFlags = function (server) {\r\n var clientMethods = {};\r\n Object.entries(server.methods).forEach(function (_a) {\r\n var name = _a[0], method = _a[1];\r\n clientMethods[name] = hideMethodSystemFlags(method);\r\n });\r\n return __assign(__assign({}, server), { methods: clientMethods });\r\n };\r\n ClientRepository.prototype.extractMethodsFromServers = function (servers) {\r\n var methods = Object.values(servers).reduce(function (clientMethods, server) {\r\n return __spreadArray(__spreadArray([], clientMethods, true), Object.values(server.methods), true);\r\n }, []);\r\n return methods;\r\n };\r\n return ClientRepository;\r\n}());\n\nvar ServerRepository = (function () {\r\n function ServerRepository() {\r\n this.nextId = 0;\r\n this.methods = [];\r\n }\r\n ServerRepository.prototype.add = function (method) {\r\n method.repoId = String(this.nextId);\r\n this.nextId += 1;\r\n this.methods.push(method);\r\n return method;\r\n };\r\n ServerRepository.prototype.remove = function (repoId) {\r\n if (typeof repoId !== \"string\") {\r\n return new TypeError(\"Expecting a string\");\r\n }\r\n this.methods = this.methods.filter(function (m) {\r\n return m.repoId !== repoId;\r\n });\r\n };\r\n ServerRepository.prototype.getById = function (id) {\r\n if (typeof id !== \"string\") {\r\n return undefined;\r\n }\r\n return this.methods.find(function (m) {\r\n return m.repoId === id;\r\n });\r\n };\r\n ServerRepository.prototype.getList = function () {\r\n return this.methods.map(function (m) { return m; });\r\n };\r\n ServerRepository.prototype.length = function () {\r\n return this.methods.length;\r\n };\r\n ServerRepository.prototype.reset = function () {\r\n this.methods = [];\r\n };\r\n return ServerRepository;\r\n}());\n\nvar SUBSCRIPTION_REQUEST = \"onSubscriptionRequest\";\r\nvar SUBSCRIPTION_ADDED = \"onSubscriptionAdded\";\r\nvar SUBSCRIPTION_REMOVED = \"onSubscriptionRemoved\";\r\nvar ServerStreaming = (function () {\r\n function ServerStreaming(session, repository, serverRepository) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.serverRepository = serverRepository;\r\n this.ERR_URI_SUBSCRIPTION_FAILED = \"com.tick42.agm.errors.subscription.failure\";\r\n this.callbacks = lib$1();\r\n this.nextStreamId = 0;\r\n session.on(\"add-interest\", function (msg) {\r\n _this.handleAddInterest(msg);\r\n });\r\n session.on(\"remove-interest\", function (msg) {\r\n _this.handleRemoveInterest(msg);\r\n });\r\n }\r\n ServerStreaming.prototype.acceptRequestOnBranch = function (requestContext, streamingMethod, branch) {\r\n if (typeof branch !== \"string\") {\r\n branch = \"\";\r\n }\r\n if (typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\r\n throw new TypeError(\"The streaming method is missing its subscriptions.\");\r\n }\r\n if (!Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\r\n throw new TypeError(\"The streaming method is missing its branches.\");\r\n }\r\n var streamId = this.getStreamId(streamingMethod, branch);\r\n var key = requestContext.msg.subscription_id;\r\n var subscription = {\r\n id: key,\r\n arguments: requestContext.arguments,\r\n instance: requestContext.instance,\r\n branchKey: branch,\r\n streamId: streamId,\r\n subscribeMsg: requestContext.msg,\r\n };\r\n streamingMethod.protocolState.subscriptionsMap[key] = subscription;\r\n this.session.sendFireAndForget({\r\n type: \"accepted\",\r\n subscription_id: key,\r\n stream_id: streamId,\r\n });\r\n this.callbacks.execute(SUBSCRIPTION_ADDED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.rejectRequest = function (requestContext, streamingMethod, reason) {\r\n if (typeof reason !== \"string\") {\r\n reason = \"\";\r\n }\r\n this.sendSubscriptionFailed(\"Subscription rejected by user. \" + reason, requestContext.msg.subscription_id);\r\n };\r\n ServerStreaming.prototype.pushData = function (streamingMethod, data, branches) {\r\n var _this = this;\r\n if (typeof streamingMethod !== \"object\" || !Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\r\n return;\r\n }\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n if (typeof branches === \"string\") {\r\n branches = [branches];\r\n }\r\n else if (!Array.isArray(branches) || branches.length <= 0) {\r\n branches = [];\r\n }\r\n var streamIdList = streamingMethod.protocolState.branchKeyToStreamIdMap\r\n .filter(function (br) {\r\n if (!branches || branches.length === 0) {\r\n return true;\r\n }\r\n return branches.indexOf(br.key) >= 0;\r\n }).map(function (br) {\r\n return br.streamId;\r\n });\r\n streamIdList.forEach(function (streamId) {\r\n var publishMessage = {\r\n type: \"publish\",\r\n stream_id: streamId,\r\n data: data,\r\n };\r\n _this.session.sendFireAndForget(publishMessage);\r\n });\r\n };\r\n ServerStreaming.prototype.pushDataToSingle = function (method, subscription, data) {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n var postMessage = {\r\n type: \"post\",\r\n subscription_id: subscription.id,\r\n data: data,\r\n };\r\n this.session.sendFireAndForget(postMessage);\r\n };\r\n ServerStreaming.prototype.closeSingleSubscription = function (streamingMethod, subscription) {\r\n if (streamingMethod.protocolState.subscriptionsMap) {\r\n delete streamingMethod.protocolState.subscriptionsMap[subscription.id];\r\n }\r\n var dropSubscriptionMessage = {\r\n type: \"drop-subscription\",\r\n subscription_id: subscription.id,\r\n reason: \"Server dropping a single subscription\",\r\n };\r\n this.session.sendFireAndForget(dropSubscriptionMessage);\r\n subscription.instance;\r\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.closeMultipleSubscriptions = function (streamingMethod, branchKey) {\r\n var _this = this;\r\n if (typeof streamingMethod !== \"object\" || typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\r\n return;\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return;\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var subscriptionsToClose = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n if (typeof branchKey === \"string\") {\r\n subscriptionsToClose = subscriptionsToClose.filter(function (sub) {\r\n return sub.branchKey === branchKey;\r\n });\r\n }\r\n subscriptionsToClose.forEach(function (subscription) {\r\n delete subscriptionsMap[subscription.id];\r\n var drop = {\r\n type: \"drop-subscription\",\r\n subscription_id: subscription.id,\r\n reason: \"Server dropping all subscriptions on stream_id: \" + subscription.streamId,\r\n };\r\n _this.session.sendFireAndForget(drop);\r\n });\r\n };\r\n ServerStreaming.prototype.getSubscriptionList = function (streamingMethod, branchKey) {\r\n if (typeof streamingMethod !== \"object\") {\r\n return [];\r\n }\r\n var subscriptions = [];\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return [];\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var allSubscriptions = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n if (typeof branchKey !== \"string\") {\r\n subscriptions = allSubscriptions;\r\n }\r\n else {\r\n subscriptions = allSubscriptions.filter(function (sub) {\r\n return sub.branchKey === branchKey;\r\n });\r\n }\r\n return subscriptions;\r\n };\r\n ServerStreaming.prototype.getBranchList = function (streamingMethod) {\r\n if (typeof streamingMethod !== \"object\") {\r\n return [];\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return [];\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var allSubscriptions = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n var result = [];\r\n allSubscriptions.forEach(function (sub) {\r\n var branch = \"\";\r\n if (typeof sub === \"object\" && typeof sub.branchKey === \"string\") {\r\n branch = sub.branchKey;\r\n }\r\n if (result.indexOf(branch) === -1) {\r\n result.push(branch);\r\n }\r\n });\r\n return result;\r\n };\r\n ServerStreaming.prototype.onSubAdded = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_ADDED, callback);\r\n };\r\n ServerStreaming.prototype.onSubRequest = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REQUEST, callback);\r\n };\r\n ServerStreaming.prototype.onSubRemoved = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REMOVED, callback);\r\n };\r\n ServerStreaming.prototype.handleRemoveInterest = function (msg) {\r\n var streamingMethod = this.serverRepository.getById(msg.method_id);\r\n if (typeof msg.subscription_id !== \"string\" ||\r\n typeof streamingMethod !== \"object\") {\r\n return;\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return;\r\n }\r\n if (typeof streamingMethod.protocolState.subscriptionsMap[msg.subscription_id] !== \"object\") {\r\n return;\r\n }\r\n var subscription = streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\r\n delete streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\r\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.onSubscriptionLifetimeEvent = function (eventName, handlerFunc) {\r\n this.callbacks.add(eventName, handlerFunc);\r\n };\r\n ServerStreaming.prototype.getNextStreamId = function () {\r\n return this.nextStreamId++ + \"\";\r\n };\r\n ServerStreaming.prototype.handleAddInterest = function (msg) {\r\n var caller = this.repository.getServerById(msg.caller_id);\r\n var instance = caller.instance;\r\n var requestContext = {\r\n msg: msg,\r\n arguments: msg.arguments_kv || {},\r\n instance: instance,\r\n };\r\n var streamingMethod = this.serverRepository.getById(msg.method_id);\r\n if (streamingMethod === undefined) {\r\n var errorMsg = \"No method with id \" + msg.method_id + \" on this server.\";\r\n this.sendSubscriptionFailed(errorMsg, msg.subscription_id);\r\n return;\r\n }\r\n if (streamingMethod.protocolState.subscriptionsMap &&\r\n streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]) {\r\n this.sendSubscriptionFailed(\"A subscription with id \" + msg.subscription_id + \" already exists.\", msg.subscription_id);\r\n return;\r\n }\r\n this.callbacks.execute(SUBSCRIPTION_REQUEST, requestContext, streamingMethod);\r\n };\r\n ServerStreaming.prototype.sendSubscriptionFailed = function (reason, subscriptionId) {\r\n var errorMessage = {\r\n type: \"error\",\r\n reason_uri: this.ERR_URI_SUBSCRIPTION_FAILED,\r\n reason: reason,\r\n request_id: subscriptionId,\r\n };\r\n this.session.sendFireAndForget(errorMessage);\r\n };\r\n ServerStreaming.prototype.getStreamId = function (streamingMethod, branchKey) {\r\n if (typeof branchKey !== \"string\") {\r\n branchKey = \"\";\r\n }\r\n if (!streamingMethod.protocolState.branchKeyToStreamIdMap) {\r\n throw new Error(\"streaming \".concat(streamingMethod.definition.name, \" method without protocol state\"));\r\n }\r\n var needleBranch = streamingMethod.protocolState.branchKeyToStreamIdMap.filter(function (branch) {\r\n return branch.key === branchKey;\r\n })[0];\r\n var streamId = (needleBranch ? needleBranch.streamId : undefined);\r\n if (typeof streamId !== \"string\" || streamId === \"\") {\r\n streamId = this.getNextStreamId();\r\n streamingMethod.protocolState.branchKeyToStreamIdMap.push({ key: branchKey, streamId: streamId });\r\n }\r\n return streamId;\r\n };\r\n return ServerStreaming;\r\n}());\n\nvar ServerProtocol = (function () {\r\n function ServerProtocol(session, clientRepository, serverRepository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.clientRepository = clientRepository;\r\n this.serverRepository = serverRepository;\r\n this.logger = logger;\r\n this.callbacks = lib$1();\r\n this.streaming = new ServerStreaming(session, clientRepository, serverRepository);\r\n this.session.on(\"invoke\", function (msg) { return _this.handleInvokeMessage(msg); });\r\n }\r\n ServerProtocol.prototype.createStream = function (repoMethod) {\r\n repoMethod.protocolState.subscriptionsMap = {};\r\n repoMethod.protocolState.branchKeyToStreamIdMap = [];\r\n return this.register(repoMethod, true);\r\n };\r\n ServerProtocol.prototype.register = function (repoMethod, isStreaming) {\r\n var _this = this;\r\n var _a;\r\n var methodDef = repoMethod.definition;\r\n var flags = Object.assign({}, { metadata: (_a = methodDef.flags) !== null && _a !== void 0 ? _a : {} }, { streaming: isStreaming || false });\r\n var registerMsg = {\r\n type: \"register\",\r\n methods: [{\r\n id: repoMethod.repoId,\r\n name: methodDef.name,\r\n display_name: methodDef.displayName,\r\n description: methodDef.description,\r\n version: methodDef.version,\r\n flags: flags,\r\n object_types: methodDef.objectTypes || methodDef.object_types,\r\n input_signature: methodDef.accepts,\r\n result_signature: methodDef.returns,\r\n restrictions: undefined,\r\n }],\r\n };\r\n return this.session.send(registerMsg, { methodId: repoMethod.repoId })\r\n .then(function () {\r\n _this.logger.debug(\"registered method \" + repoMethod.definition.name + \" with id \" + repoMethod.repoId);\r\n })\r\n .catch(function (msg) {\r\n _this.logger.warn(\"failed to register method \".concat(repoMethod.definition.name, \" with id \").concat(repoMethod.repoId, \" - \").concat(JSON.stringify(msg)));\r\n throw msg;\r\n });\r\n };\r\n ServerProtocol.prototype.onInvoked = function (callback) {\r\n this.callbacks.add(\"onInvoked\", callback);\r\n };\r\n ServerProtocol.prototype.methodInvocationResult = function (method, invocationId, err, result) {\r\n var msg;\r\n if (err || err === \"\") {\r\n msg = {\r\n type: \"error\",\r\n request_id: invocationId,\r\n reason_uri: \"agm.errors.client_error\",\r\n reason: err,\r\n context: result,\r\n peer_id: undefined,\r\n };\r\n }\r\n else {\r\n msg = {\r\n type: \"yield\",\r\n invocation_id: invocationId,\r\n peer_id: this.session.peerId,\r\n result: result,\r\n request_id: undefined,\r\n };\r\n }\r\n this.session.sendFireAndForget(msg);\r\n };\r\n ServerProtocol.prototype.unregister = function (method) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var msg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n msg = {\r\n type: \"unregister\",\r\n methods: [method.repoId],\r\n };\r\n return [4, this.session.send(msg)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n ServerProtocol.prototype.getBranchList = function (method) {\r\n return this.streaming.getBranchList(method);\r\n };\r\n ServerProtocol.prototype.getSubscriptionList = function (method, branchKey) {\r\n return this.streaming.getSubscriptionList(method, branchKey);\r\n };\r\n ServerProtocol.prototype.closeAllSubscriptions = function (method, branchKey) {\r\n this.streaming.closeMultipleSubscriptions(method, branchKey);\r\n };\r\n ServerProtocol.prototype.pushData = function (method, data, branches) {\r\n this.streaming.pushData(method, data, branches);\r\n };\r\n ServerProtocol.prototype.pushDataToSingle = function (method, subscription, data) {\r\n this.streaming.pushDataToSingle(method, subscription, data);\r\n };\r\n ServerProtocol.prototype.closeSingleSubscription = function (method, subscription) {\r\n this.streaming.closeSingleSubscription(method, subscription);\r\n };\r\n ServerProtocol.prototype.acceptRequestOnBranch = function (requestContext, method, branch) {\r\n this.streaming.acceptRequestOnBranch(requestContext, method, branch);\r\n };\r\n ServerProtocol.prototype.rejectRequest = function (requestContext, method, reason) {\r\n this.streaming.rejectRequest(requestContext, method, reason);\r\n };\r\n ServerProtocol.prototype.onSubRequest = function (callback) {\r\n this.streaming.onSubRequest(callback);\r\n };\r\n ServerProtocol.prototype.onSubAdded = function (callback) {\r\n this.streaming.onSubAdded(callback);\r\n };\r\n ServerProtocol.prototype.onSubRemoved = function (callback) {\r\n this.streaming.onSubRemoved(callback);\r\n };\r\n ServerProtocol.prototype.handleInvokeMessage = function (msg) {\r\n var invocationId = msg.invocation_id;\r\n var callerId = msg.caller_id;\r\n var methodId = msg.method_id;\r\n var args = msg.arguments_kv;\r\n var methodList = this.serverRepository.getList();\r\n var method = methodList.filter(function (m) {\r\n return m.repoId === methodId;\r\n })[0];\r\n if (method === undefined) {\r\n return;\r\n }\r\n var client = this.clientRepository.getServerById(callerId).instance;\r\n var invocationArgs = { args: args, instance: client };\r\n this.callbacks.execute(\"onInvoked\", method, invocationId, invocationArgs);\r\n };\r\n return ServerProtocol;\r\n}());\n\nvar UserSubscription = (function () {\r\n function UserSubscription(repository, subscriptionData) {\r\n this.repository = repository;\r\n this.subscriptionData = subscriptionData;\r\n }\r\n Object.defineProperty(UserSubscription.prototype, \"requestArguments\", {\r\n get: function () {\r\n return this.subscriptionData.params.arguments || {};\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"servers\", {\r\n get: function () {\r\n var _this = this;\r\n return this.subscriptionData.trackedServers\r\n .filter(function (pair) { return pair.subscriptionId; })\r\n .map(function (pair) { return _this.repository.getServerById(pair.serverId).instance; });\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"serverInstance\", {\r\n get: function () {\r\n return this.servers[0];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"stream\", {\r\n get: function () {\r\n return this.subscriptionData.method;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n UserSubscription.prototype.onData = function (dataCallback) {\r\n if (typeof dataCallback !== \"function\") {\r\n throw new TypeError(\"The data callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onData.push(dataCallback);\r\n if (this.subscriptionData.handlers.onData.length === 1 && this.subscriptionData.queued.data.length > 0) {\r\n this.subscriptionData.queued.data.forEach(function (dataItem) {\r\n dataCallback(dataItem);\r\n });\r\n }\r\n };\r\n UserSubscription.prototype.onClosed = function (closedCallback) {\r\n if (typeof closedCallback !== \"function\") {\r\n throw new TypeError(\"The callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onClosed.push(closedCallback);\r\n };\r\n UserSubscription.prototype.onFailed = function (callback) {\r\n };\r\n UserSubscription.prototype.onConnected = function (callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new TypeError(\"The callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onConnected.push(callback);\r\n };\r\n UserSubscription.prototype.close = function () {\r\n this.subscriptionData.close();\r\n };\r\n UserSubscription.prototype.setNewSubscription = function (newSub) {\r\n this.subscriptionData = newSub;\r\n };\r\n return UserSubscription;\r\n}());\n\nvar TimedCache = (function () {\r\n function TimedCache(config) {\r\n this.config = config;\r\n this.cache = [];\r\n this.timeoutIds = [];\r\n }\r\n TimedCache.prototype.add = function (element) {\r\n var _this = this;\r\n var id = shortid();\r\n this.cache.push({ id: id, element: element });\r\n var timeoutId = setTimeout(function () {\r\n var elementIdx = _this.cache.findIndex(function (entry) { return entry.id === id; });\r\n if (elementIdx < 0) {\r\n return;\r\n }\r\n _this.cache.splice(elementIdx, 1);\r\n }, this.config.ELEMENT_TTL_MS);\r\n this.timeoutIds.push(timeoutId);\r\n };\r\n TimedCache.prototype.flush = function () {\r\n var elements = this.cache.map(function (entry) { return entry.element; });\r\n this.timeoutIds.forEach(function (id) { return clearInterval(id); });\r\n this.cache = [];\r\n this.timeoutIds = [];\r\n return elements;\r\n };\r\n return TimedCache;\r\n}());\n\nvar STATUS_AWAITING_ACCEPT = \"awaitingAccept\";\r\nvar STATUS_SUBSCRIBED = \"subscribed\";\r\nvar ERR_MSG_SUB_FAILED = \"Subscription failed.\";\r\nvar ERR_MSG_SUB_REJECTED = \"Subscription rejected.\";\r\nvar ON_CLOSE_MSG_SERVER_INIT = \"ServerInitiated\";\r\nvar ON_CLOSE_MSG_CLIENT_INIT = \"ClientInitiated\";\r\nvar ClientStreaming = (function () {\r\n function ClientStreaming(session, repository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.logger = logger;\r\n this.subscriptionsList = {};\r\n this.timedCache = new TimedCache({ ELEMENT_TTL_MS: 10000 });\r\n this.subscriptionIdToLocalKeyMap = {};\r\n this.nextSubLocalKey = 0;\r\n this.handleErrorSubscribing = function (errorResponse) {\r\n var tag = errorResponse._tag;\r\n var subLocalKey = tag.subLocalKey;\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (typeof pendingSub !== \"object\") {\r\n return;\r\n }\r\n pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) {\r\n return server.serverId !== tag.serverId;\r\n });\r\n if (pendingSub.trackedServers.length <= 0) {\r\n clearTimeout(pendingSub.timeoutId);\r\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\r\n var reason = (typeof errorResponse.reason === \"string\" && errorResponse.reason !== \"\") ?\r\n ' Publisher said \"' + errorResponse.reason + '\".' :\r\n \" No reason given.\";\r\n var callArgs = typeof pendingSub.params.arguments === \"object\" ?\r\n JSON.stringify(pendingSub.params.arguments) :\r\n \"{}\";\r\n pendingSub.error({\r\n message: ERR_MSG_SUB_REJECTED + reason + \" Called with:\" + callArgs,\r\n called_with: pendingSub.params.arguments,\r\n method: pendingSub.method,\r\n });\r\n }\r\n else if (pendingSub.status === STATUS_SUBSCRIBED) {\r\n _this.callOnClosedHandlers(pendingSub);\r\n }\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n };\r\n this.handleSubscribed = function (msg) {\r\n var subLocalKey = msg._tag.subLocalKey;\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (typeof pendingSub !== \"object\") {\r\n return;\r\n }\r\n var serverId = msg._tag.serverId;\r\n var acceptingServer = pendingSub.trackedServers\r\n .filter(function (server) {\r\n return server.serverId === serverId;\r\n })[0];\r\n if (typeof acceptingServer !== \"object\") {\r\n return;\r\n }\r\n acceptingServer.subscriptionId = msg.subscription_id;\r\n _this.subscriptionIdToLocalKeyMap[msg.subscription_id] = subLocalKey;\r\n var isFirstResponse = (pendingSub.status === STATUS_AWAITING_ACCEPT);\r\n pendingSub.status = STATUS_SUBSCRIBED;\r\n if (isFirstResponse) {\r\n var reconnect = false;\r\n var sub = pendingSub.subscription;\r\n if (sub) {\r\n sub.setNewSubscription(pendingSub);\r\n pendingSub.success(sub);\r\n reconnect = true;\r\n }\r\n else {\r\n sub = new UserSubscription(_this.repository, pendingSub);\r\n pendingSub.subscription = sub;\r\n pendingSub.success(sub);\r\n }\r\n for (var _i = 0, _a = pendingSub.handlers.onConnected; _i < _a.length; _i++) {\r\n var handler = _a[_i];\r\n try {\r\n handler(sub.serverInstance, reconnect);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n }\r\n };\r\n this.handleEventData = function (msg) {\r\n var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n if (typeof subLocalKey === \"undefined\") {\r\n return;\r\n }\r\n var subscription = _this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n var trackedServersFound = subscription.trackedServers.filter(function (server) {\r\n return server.subscriptionId === msg.subscription_id;\r\n });\r\n if (trackedServersFound.length !== 1) {\r\n return;\r\n }\r\n var isPrivateData = msg.oob;\r\n var sendingServerId = trackedServersFound[0].serverId;\r\n var receivedStreamData = function () {\r\n return {\r\n data: msg.data,\r\n server: _this.repository.getServerById(sendingServerId).instance,\r\n requestArguments: subscription.params.arguments,\r\n message: undefined,\r\n private: isPrivateData,\r\n };\r\n };\r\n var onDataHandlers = subscription.handlers.onData;\r\n var queuedData = subscription.queued.data;\r\n if (onDataHandlers.length > 0) {\r\n onDataHandlers.forEach(function (callback) {\r\n if (typeof callback === \"function\") {\r\n callback(receivedStreamData());\r\n }\r\n });\r\n }\r\n else {\r\n queuedData.push(receivedStreamData());\r\n }\r\n };\r\n this.handleSubscriptionCancelled = function (msg) {\r\n var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n if (typeof subLocalKey === \"undefined\") {\r\n return;\r\n }\r\n var subscription = _this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n var expectedNewLength = subscription.trackedServers.length - 1;\r\n subscription.trackedServers = subscription.trackedServers.filter(function (server) {\r\n if (server.subscriptionId === msg.subscription_id) {\r\n subscription.queued.closers.push(server.serverId);\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n if (subscription.trackedServers.length !== expectedNewLength) {\r\n return;\r\n }\r\n if (subscription.trackedServers.length <= 0) {\r\n _this.timedCache.add(subscription);\r\n clearTimeout(subscription.timeoutId);\r\n _this.callOnClosedHandlers(subscription);\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n delete _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n };\r\n session.on(\"subscribed\", this.handleSubscribed);\r\n session.on(\"event\", this.handleEventData);\r\n session.on(\"subscription-cancelled\", this.handleSubscriptionCancelled);\r\n }\r\n ClientStreaming.prototype.subscribe = function (streamingMethod, params, targetServers, success, error, existingSub) {\r\n var _this = this;\r\n if (targetServers.length === 0) {\r\n error({\r\n method: streamingMethod,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" No available servers matched the target params.\",\r\n });\r\n return;\r\n }\r\n var subLocalKey = this.getNextSubscriptionLocalKey();\r\n var pendingSub = this.registerSubscription(subLocalKey, streamingMethod, params, success, error, params.methodResponseTimeout || 10000, existingSub);\r\n if (typeof pendingSub !== \"object\") {\r\n error({\r\n method: streamingMethod,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" Unable to register the user callbacks.\",\r\n });\r\n return;\r\n }\r\n targetServers.forEach(function (target) {\r\n var serverId = target.server.id;\r\n var method = target.methods.find(function (m) { return m.name === streamingMethod.name; });\r\n if (!method) {\r\n _this.logger.error(\"can not find method \".concat(streamingMethod.name, \" for target \").concat(target.server.id));\r\n return;\r\n }\r\n pendingSub.trackedServers.push({\r\n serverId: serverId,\r\n subscriptionId: undefined,\r\n });\r\n var msg = {\r\n type: \"subscribe\",\r\n server_id: serverId,\r\n method_id: method.gatewayId,\r\n arguments_kv: params.arguments,\r\n };\r\n _this.session.send(msg, { serverId: serverId, subLocalKey: subLocalKey })\r\n .then(function (m) { return _this.handleSubscribed(m); })\r\n .catch(function (err) { return _this.handleErrorSubscribing(err); });\r\n });\r\n };\r\n ClientStreaming.prototype.drainSubscriptions = function () {\r\n var existing = Object.values(this.subscriptionsList);\r\n this.subscriptionsList = {};\r\n this.subscriptionIdToLocalKeyMap = {};\r\n return existing;\r\n };\r\n ClientStreaming.prototype.drainSubscriptionsCache = function () {\r\n return this.timedCache.flush();\r\n };\r\n ClientStreaming.prototype.getNextSubscriptionLocalKey = function () {\r\n var current = this.nextSubLocalKey;\r\n this.nextSubLocalKey += 1;\r\n return current;\r\n };\r\n ClientStreaming.prototype.registerSubscription = function (subLocalKey, method, params, success, error, timeout, existingSub) {\r\n var _this = this;\r\n var subsInfo = {\r\n localKey: subLocalKey,\r\n status: STATUS_AWAITING_ACCEPT,\r\n method: method,\r\n params: params,\r\n success: success,\r\n error: error,\r\n trackedServers: [],\r\n handlers: {\r\n onData: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onData) || [],\r\n onClosed: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onClosed) || [],\r\n onConnected: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onConnected) || [],\r\n },\r\n queued: {\r\n data: [],\r\n closers: [],\r\n },\r\n timeoutId: undefined,\r\n close: function () { return _this.closeSubscription(subLocalKey); },\r\n subscription: existingSub === null || existingSub === void 0 ? void 0 : existingSub.subscription\r\n };\r\n if (!existingSub) {\r\n if (params.onData) {\r\n subsInfo.handlers.onData.push(params.onData);\r\n }\r\n if (params.onClosed) {\r\n subsInfo.handlers.onClosed.push(params.onClosed);\r\n }\r\n if (params.onConnected) {\r\n subsInfo.handlers.onConnected.push(params.onConnected);\r\n }\r\n }\r\n this.subscriptionsList[subLocalKey] = subsInfo;\r\n subsInfo.timeoutId = setTimeout(function () {\r\n if (_this.subscriptionsList[subLocalKey] === undefined) {\r\n return;\r\n }\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\r\n error({\r\n method: method,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" Subscription attempt timed out after \" + timeout + \" ms.\",\r\n });\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n else if (pendingSub.status === STATUS_SUBSCRIBED && pendingSub.trackedServers.length > 0) {\r\n pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) {\r\n return (typeof server.subscriptionId !== \"undefined\");\r\n });\r\n delete pendingSub.timeoutId;\r\n if (pendingSub.trackedServers.length <= 0) {\r\n _this.callOnClosedHandlers(pendingSub);\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n }\r\n }, timeout);\r\n return subsInfo;\r\n };\r\n ClientStreaming.prototype.callOnClosedHandlers = function (subscription, reason) {\r\n var closersCount = subscription.queued.closers.length;\r\n var closingServerId = (closersCount > 0) ? subscription.queued.closers[closersCount - 1] : null;\r\n var closingServer;\r\n if (closingServerId !== undefined && typeof closingServerId === \"string\") {\r\n closingServer = this.repository.getServerById(closingServerId).instance;\r\n }\r\n subscription.handlers.onClosed.forEach(function (callback) {\r\n if (typeof callback !== \"function\") {\r\n return;\r\n }\r\n callback({\r\n message: reason || ON_CLOSE_MSG_SERVER_INIT,\r\n requestArguments: subscription.params.arguments || {},\r\n server: closingServer,\r\n stream: subscription.method,\r\n });\r\n });\r\n };\r\n ClientStreaming.prototype.closeSubscription = function (subLocalKey) {\r\n var _this = this;\r\n var subscription = this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n subscription.trackedServers.forEach(function (server) {\r\n if (typeof server.subscriptionId === \"undefined\") {\r\n return;\r\n }\r\n subscription.queued.closers.push(server.serverId);\r\n _this.session.sendFireAndForget({\r\n type: \"unsubscribe\",\r\n subscription_id: server.subscriptionId,\r\n reason_uri: \"\",\r\n reason: ON_CLOSE_MSG_CLIENT_INIT,\r\n });\r\n delete _this.subscriptionIdToLocalKeyMap[server.subscriptionId];\r\n });\r\n subscription.trackedServers = [];\r\n this.callOnClosedHandlers(subscription, ON_CLOSE_MSG_CLIENT_INIT);\r\n delete this.subscriptionsList[subLocalKey];\r\n };\r\n return ClientStreaming;\r\n}());\n\nvar ClientProtocol = (function () {\r\n function ClientProtocol(session, repository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.logger = logger;\r\n session.on(\"peer-added\", function (msg) { return _this.handlePeerAdded(msg); });\r\n session.on(\"peer-removed\", function (msg) { return _this.handlePeerRemoved(msg); });\r\n session.on(\"methods-added\", function (msg) { return _this.handleMethodsAddedMessage(msg); });\r\n session.on(\"methods-removed\", function (msg) { return _this.handleMethodsRemovedMessage(msg); });\r\n this.streaming = new ClientStreaming(session, repository, logger);\r\n }\r\n ClientProtocol.prototype.subscribe = function (stream, options, targetServers, success, error, existingSub) {\r\n this.streaming.subscribe(stream, options, targetServers, success, error, existingSub);\r\n };\r\n ClientProtocol.prototype.invoke = function (id, method, args, target) {\r\n var _this = this;\r\n var serverId = target.id;\r\n var methodId = method.gatewayId;\r\n var msg = {\r\n type: \"call\",\r\n server_id: serverId,\r\n method_id: methodId,\r\n arguments_kv: args,\r\n };\r\n return this.session.send(msg, { invocationId: id, serverId: serverId })\r\n .then(function (m) { return _this.handleResultMessage(m); })\r\n .catch(function (err) { return _this.handleInvocationError(err); });\r\n };\r\n ClientProtocol.prototype.drainSubscriptions = function () {\r\n return this.streaming.drainSubscriptions();\r\n };\r\n ClientProtocol.prototype.drainSubscriptionsCache = function () {\r\n return this.streaming.drainSubscriptionsCache();\r\n };\r\n ClientProtocol.prototype.handlePeerAdded = function (msg) {\r\n var newPeerId = msg.new_peer_id;\r\n var remoteId = msg.identity;\r\n var isLocal = msg.meta ? msg.meta.local : true;\r\n var pid = Number(remoteId.process);\r\n var serverInfo = {\r\n machine: remoteId.machine,\r\n pid: isNaN(pid) ? remoteId.process : pid,\r\n instance: remoteId.instance,\r\n application: remoteId.application,\r\n applicationName: remoteId.applicationName,\r\n environment: remoteId.environment,\r\n region: remoteId.region,\r\n user: remoteId.user,\r\n windowId: remoteId.windowId,\r\n peerId: newPeerId,\r\n api: remoteId.api,\r\n isLocal: isLocal\r\n };\r\n this.repository.addServer(serverInfo, newPeerId);\r\n };\r\n ClientProtocol.prototype.handlePeerRemoved = function (msg) {\r\n var removedPeerId = msg.removed_id;\r\n var reason = msg.reason;\r\n this.repository.removeServerById(removedPeerId, reason);\r\n };\r\n ClientProtocol.prototype.handleMethodsAddedMessage = function (msg) {\r\n var _this = this;\r\n var serverId = msg.server_id;\r\n var methods = msg.methods;\r\n methods.forEach(function (method) {\r\n _this.repository.addServerMethod(serverId, method);\r\n });\r\n };\r\n ClientProtocol.prototype.handleMethodsRemovedMessage = function (msg) {\r\n var _this = this;\r\n var serverId = msg.server_id;\r\n var methodIdList = msg.methods;\r\n var server = this.repository.getServerById(serverId);\r\n var serverMethodKeys = Object.keys(server.methods);\r\n serverMethodKeys.forEach(function (methodKey) {\r\n var method = server.methods[methodKey];\r\n if (methodIdList.indexOf(method.gatewayId) > -1) {\r\n _this.repository.removeServerMethod(serverId, methodKey);\r\n }\r\n });\r\n };\r\n ClientProtocol.prototype.handleResultMessage = function (msg) {\r\n var invocationId = msg._tag.invocationId;\r\n var result = msg.result;\r\n var serverId = msg._tag.serverId;\r\n var server = this.repository.getServerById(serverId);\r\n return {\r\n invocationId: invocationId,\r\n result: result,\r\n instance: server.instance,\r\n status: InvokeStatus.Success,\r\n message: \"\"\r\n };\r\n };\r\n ClientProtocol.prototype.handleInvocationError = function (msg) {\r\n this.logger.debug(\"handle invocation error \".concat(JSON.stringify(msg)));\r\n if (\"_tag\" in msg) {\r\n var invocationId = msg._tag.invocationId;\r\n var serverId = msg._tag.serverId;\r\n var server = this.repository.getServerById(serverId);\r\n var message = msg.reason;\r\n var context_1 = msg.context;\r\n return {\r\n invocationId: invocationId,\r\n result: context_1,\r\n instance: server.instance,\r\n status: InvokeStatus.Error,\r\n message: message\r\n };\r\n }\r\n else {\r\n return {\r\n invocationId: \"\",\r\n message: msg.message,\r\n status: InvokeStatus.Error,\r\n error: msg\r\n };\r\n }\r\n };\r\n return ClientProtocol;\r\n}());\n\nfunction gW3ProtocolFactory (instance, connection, clientRepository, serverRepository, libConfig, interop) {\r\n var logger = libConfig.logger.subLogger(\"gw3-protocol\");\r\n var resolveReadyPromise;\r\n var readyPromise = new Promise(function (resolve) {\r\n resolveReadyPromise = resolve;\r\n });\r\n var session = connection.domain(\"agm\", [\"subscribed\"]);\r\n var server = new ServerProtocol(session, clientRepository, serverRepository, logger.subLogger(\"server\"));\r\n var client = new ClientProtocol(session, clientRepository, logger.subLogger(\"client\"));\r\n function handleReconnect() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reconnectionPromises, existingSubscriptions, _loop_1, _i, existingSubscriptions_1, sub, registeredMethods, _loop_2, _a, registeredMethods_1, method;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n logger.info(\"reconnected - will replay registered methods and subscriptions\");\r\n client.drainSubscriptionsCache().forEach(function (sub) {\r\n var methodInfo = sub.method;\r\n var params = Object.assign({}, sub.params);\r\n logger.info(\"trying to soft-re-subscribe to method \".concat(methodInfo.name, \", with params: \").concat(JSON.stringify(params)));\r\n interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info(\"soft-subscribing to method \".concat(methodInfo.name, \" DONE\")); }).catch(function (error) { return logger.warn(\"subscribing to method \".concat(methodInfo.name, \" failed: \").concat(JSON.stringify(error), \"}\")); });\r\n });\r\n reconnectionPromises = [];\r\n existingSubscriptions = client.drainSubscriptions();\r\n _loop_1 = function (sub) {\r\n var methodInfo = sub.method;\r\n var params = Object.assign({}, sub.params);\r\n logger.info(\"trying to re-subscribe to method \".concat(methodInfo.name, \", with params: \").concat(JSON.stringify(params)));\r\n reconnectionPromises.push(interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info(\"subscribing to method \".concat(methodInfo.name, \" DONE\")); }));\r\n };\r\n for (_i = 0, existingSubscriptions_1 = existingSubscriptions; _i < existingSubscriptions_1.length; _i++) {\r\n sub = existingSubscriptions_1[_i];\r\n _loop_1(sub);\r\n }\r\n registeredMethods = serverRepository.getList();\r\n serverRepository.reset();\r\n _loop_2 = function (method) {\r\n var def = method.definition;\r\n logger.info(\"re-publishing method \".concat(def.name));\r\n if (method.stream) {\r\n reconnectionPromises.push(interop.server.createStream(def, method.streamCallbacks, undefined, undefined, method.stream).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n else if (method.theFunction && method.theFunction.userCallback) {\r\n reconnectionPromises.push(interop.register(def, method.theFunction.userCallback).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n else if (method.theFunction && method.theFunction.userCallbackAsync) {\r\n reconnectionPromises.push(interop.registerAsync(def, method.theFunction.userCallbackAsync).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n logger.info(\"re-publishing method \".concat(def.name, \" DONE\"));\r\n };\r\n for (_a = 0, registeredMethods_1 = registeredMethods; _a < registeredMethods_1.length; _a++) {\r\n method = registeredMethods_1[_a];\r\n _loop_2(method);\r\n }\r\n return [4, Promise.all(reconnectionPromises)];\r\n case 1:\r\n _b.sent();\r\n logger.info(\"Interop is re-announced\");\r\n return [2];\r\n }\r\n });\r\n });\r\n }\r\n function handleInitialJoin() {\r\n if (resolveReadyPromise) {\r\n resolveReadyPromise({\r\n client: client,\r\n server: server,\r\n });\r\n resolveReadyPromise = undefined;\r\n }\r\n }\r\n session.onJoined(function (reconnect) {\r\n clientRepository.addServer(instance, connection.peerId);\r\n if (reconnect) {\r\n handleReconnect().then(function () { return connection.setLibReAnnounced({ name: \"interop\" }); }).catch(function (error) { return logger.warn(\"Error while re-announcing interop: \".concat(JSON.stringify(error))); });\r\n }\r\n else {\r\n handleInitialJoin();\r\n }\r\n });\r\n session.onLeft(function () {\r\n clientRepository.reset();\r\n });\r\n session.join();\r\n return readyPromise;\r\n}\n\nvar Interop = (function () {\r\n function Interop(configuration) {\r\n var _this = this;\r\n if (typeof configuration === \"undefined\") {\r\n throw new Error(\"configuration is required\");\r\n }\r\n if (typeof configuration.connection === \"undefined\") {\r\n throw new Error(\"configuration.connections is required\");\r\n }\r\n var connection = configuration.connection;\r\n if (typeof configuration.methodResponseTimeout !== \"number\") {\r\n configuration.methodResponseTimeout = 30 * 1000;\r\n }\r\n if (typeof configuration.waitTimeoutMs !== \"number\") {\r\n configuration.waitTimeoutMs = 30 * 1000;\r\n }\r\n this.unwrappedInstance = new InstanceWrapper(this, undefined, connection);\r\n this.instance = this.unwrappedInstance.unwrap();\r\n this.clientRepository = new ClientRepository(configuration.logger.subLogger(\"cRep\"), this);\r\n this.serverRepository = new ServerRepository();\r\n var protocolPromise;\r\n if (connection.protocolVersion === 3) {\r\n protocolPromise = gW3ProtocolFactory(this.instance, connection, this.clientRepository, this.serverRepository, configuration, this);\r\n }\r\n else {\r\n throw new Error(\"protocol \".concat(connection.protocolVersion, \" not supported\"));\r\n }\r\n this.readyPromise = protocolPromise.then(function (protocol) {\r\n _this.protocol = protocol;\r\n _this.client = new Client(_this.protocol, _this.clientRepository, _this.instance, configuration);\r\n _this.server = new Server(_this.protocol, _this.serverRepository);\r\n return _this;\r\n });\r\n }\r\n Interop.prototype.ready = function () {\r\n return this.readyPromise;\r\n };\r\n Interop.prototype.serverRemoved = function (callback) {\r\n return this.client.serverRemoved(callback);\r\n };\r\n Interop.prototype.serverAdded = function (callback) {\r\n return this.client.serverAdded(callback);\r\n };\r\n Interop.prototype.serverMethodRemoved = function (callback) {\r\n return this.client.serverMethodRemoved(callback);\r\n };\r\n Interop.prototype.serverMethodAdded = function (callback) {\r\n return this.client.serverMethodAdded(callback);\r\n };\r\n Interop.prototype.methodRemoved = function (callback) {\r\n return this.client.methodRemoved(callback);\r\n };\r\n Interop.prototype.methodAdded = function (callback) {\r\n return this.client.methodAdded(callback);\r\n };\r\n Interop.prototype.methodsForInstance = function (instance) {\r\n return this.client.methodsForInstance(instance);\r\n };\r\n Interop.prototype.methods = function (methodFilter) {\r\n return this.client.methods(methodFilter);\r\n };\r\n Interop.prototype.servers = function (methodFilter) {\r\n return this.client.servers(methodFilter);\r\n };\r\n Interop.prototype.subscribe = function (method, options, successCallback, errorCallback) {\r\n return this.client.subscribe(method, options, successCallback, errorCallback);\r\n };\r\n Interop.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback) {\r\n return this.server.createStream(streamDef, callbacks, successCallback, errorCallback);\r\n };\r\n Interop.prototype.unregister = function (methodFilter) {\r\n return this.server.unregister(methodFilter);\r\n };\r\n Interop.prototype.registerAsync = function (methodDefinition, callback) {\r\n return this.server.registerAsync(methodDefinition, callback);\r\n };\r\n Interop.prototype.register = function (methodDefinition, callback) {\r\n return this.server.register(methodDefinition, callback);\r\n };\r\n Interop.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) {\r\n return this.client.invoke(methodFilter, argumentObj, target, additionalOptions, success, error);\r\n };\r\n Interop.prototype.waitForMethod = function (name) {\r\n var pw = new PromiseWrapper();\r\n var unsubscribe = this.client.methodAdded(function (m) {\r\n if (m.name === name) {\r\n unsubscribe();\r\n pw.resolve(m);\r\n }\r\n });\r\n return pw.promise;\r\n };\r\n return Interop;\r\n}());\n\nvar successMessages = [\"subscribed\", \"success\"];\r\nvar MessageBus = (function () {\r\n function MessageBus(connection, logger) {\r\n var _this = this;\r\n this.publish = function (topic, data, options) {\r\n var _a = options || {}, routingKey = _a.routingKey, target = _a.target;\r\n var args = _this.removeEmptyValues({\r\n type: \"publish\",\r\n topic: topic,\r\n data: data,\r\n peer_id: _this.peerId,\r\n routing_key: routingKey,\r\n target_identity: target\r\n });\r\n _this.session.send(args);\r\n };\r\n this.subscribe = function (topic, callback, options) {\r\n return new Promise(function (resolve, reject) {\r\n var _a = options || {}, routingKey = _a.routingKey, target = _a.target;\r\n var args = _this.removeEmptyValues({\r\n type: \"subscribe\",\r\n topic: topic,\r\n peer_id: _this.peerId,\r\n routing_key: routingKey,\r\n source: target\r\n });\r\n _this.session.send(args)\r\n .then(function (response) {\r\n var subscription_id = response.subscription_id;\r\n _this.subscriptions.push({ subscription_id: subscription_id, topic: topic, callback: callback, source: target });\r\n resolve({\r\n unsubscribe: function () {\r\n _this.session.send({ type: \"unsubscribe\", subscription_id: subscription_id, peer_id: _this.peerId });\r\n _this.subscriptions = _this.subscriptions.filter(function (s) { return s.subscription_id !== subscription_id; });\r\n return Promise.resolve();\r\n }\r\n });\r\n })\r\n .catch(function (error) { return reject(error); });\r\n });\r\n };\r\n this.watchOnEvent = function () {\r\n _this.session.on(\"event\", function (args) {\r\n var data = args.data, subscription_id = args.subscription_id;\r\n var source = args[\"publisher-identity\"];\r\n var subscription = _this.subscriptions.find(function (s) { return s.subscription_id === subscription_id; });\r\n if (subscription) {\r\n if (!subscription.source) {\r\n subscription.callback(data, subscription.topic, source);\r\n }\r\n else {\r\n if (_this.keysMatch(subscription.source, source)) {\r\n subscription.callback(data, subscription.topic, source);\r\n }\r\n }\r\n }\r\n });\r\n };\r\n this.connection = connection;\r\n this.logger = logger;\r\n this.peerId = connection.peerId;\r\n this.subscriptions = [];\r\n this.session = connection.domain(\"bus\", successMessages);\r\n this.readyPromise = this.session.join();\r\n this.readyPromise.then(function () {\r\n _this.watchOnEvent();\r\n });\r\n }\r\n MessageBus.prototype.ready = function () {\r\n return this.readyPromise;\r\n };\r\n MessageBus.prototype.removeEmptyValues = function (obj) {\r\n var cleaned = {};\r\n Object.keys(obj).forEach(function (key) {\r\n if (obj[key] !== undefined && obj[key] !== null) {\r\n cleaned[key] = obj[key];\r\n }\r\n });\r\n return cleaned;\r\n };\r\n MessageBus.prototype.keysMatch = function (obj1, obj2) {\r\n var keysObj1 = Object.keys(obj1);\r\n var allMatch = true;\r\n keysObj1.forEach(function (key) {\r\n if (obj1[key] !== obj2[key]) {\r\n allMatch = false;\r\n }\r\n });\r\n return allMatch;\r\n };\r\n return MessageBus;\r\n}());\n\nvar IOConnectCoreFactory = function (userConfig, ext) {\r\n var _a, _b;\r\n var iodesktop = typeof window === \"object\" ? ((_a = window.iodesktop) !== null && _a !== void 0 ? _a : window.glue42gd) : undefined;\r\n var preloadPromise = typeof window === \"object\" ? ((_b = window.gdPreloadPromise) !== null && _b !== void 0 ? _b : Promise.resolve()) : Promise.resolve();\r\n var glueInitTimer = timer(\"glue\");\r\n userConfig = userConfig || {};\r\n ext = ext || {};\r\n var internalConfig = prepareConfig(userConfig, ext, iodesktop);\r\n var _connection;\r\n var _interop;\r\n var _logger;\r\n var _metrics;\r\n var _contexts;\r\n var _bus;\r\n var _allowTrace;\r\n var libs = {};\r\n function registerLib(name, inner, t) {\r\n _allowTrace = _logger.canPublish(\"trace\");\r\n if (_allowTrace) {\r\n _logger.trace(\"registering \".concat(name, \" module\"));\r\n }\r\n var done = function () {\r\n inner.initTime = t.stop();\r\n inner.initEndTime = t.endTime;\r\n inner.marks = t.marks;\r\n if (_allowTrace) {\r\n _logger.trace(\"\".concat(name, \" is ready - \").concat(t.endTime - t.startTime));\r\n }\r\n };\r\n inner.initStartTime = t.startTime;\r\n if (inner.ready) {\r\n inner.ready().then(function () {\r\n done();\r\n });\r\n }\r\n else {\r\n done();\r\n }\r\n if (!Array.isArray(name)) {\r\n name = [name];\r\n }\r\n name.forEach(function (n) {\r\n libs[n] = inner;\r\n IOConnectCoreFactory[n] = inner;\r\n });\r\n }\r\n function setupConnection() {\r\n var initTimer = timer(\"connection\");\r\n _connection = new Connection(internalConfig.connection, _logger.subLogger(\"connection\"));\r\n var authPromise = Promise.resolve(internalConfig.auth);\r\n if (internalConfig.connection && !internalConfig.auth) {\r\n if (iodesktop) {\r\n authPromise = iodesktop.getGWToken()\r\n .then(function (token) {\r\n return {\r\n gatewayToken: token\r\n };\r\n });\r\n }\r\n else if (typeof window !== \"undefined\" && (window === null || window === void 0 ? void 0 : window.glue42electron)) {\r\n if (typeof window.glue42electron.gwToken === \"string\") {\r\n authPromise = Promise.resolve({\r\n gatewayToken: window.glue42electron.gwToken\r\n });\r\n }\r\n }\r\n else {\r\n authPromise = Promise.reject(\"You need to provide auth information\");\r\n }\r\n }\r\n return authPromise\r\n .then(function (authConfig) {\r\n initTimer.mark(\"auth-promise-resolved\");\r\n var authRequest;\r\n if (Object.prototype.toString.call(authConfig) === \"[object Object]\") {\r\n authRequest = authConfig;\r\n }\r\n else {\r\n throw new Error(\"Invalid auth object - \" + JSON.stringify(authConfig));\r\n }\r\n return _connection.login(authRequest);\r\n })\r\n .then(function () {\r\n registerLib(\"connection\", _connection, initTimer);\r\n return internalConfig;\r\n })\r\n .catch(function (e) {\r\n if (_connection) {\r\n _connection.logout();\r\n }\r\n throw e;\r\n });\r\n }\r\n function setupLogger() {\r\n var _a;\r\n var initTimer = timer(\"logger\");\r\n _logger = new Logger(\"\".concat((_a = internalConfig.connection.identity) === null || _a === void 0 ? void 0 : _a.application), undefined, internalConfig.customLogger);\r\n _logger.consoleLevel(internalConfig.logger.console);\r\n _logger.publishLevel(internalConfig.logger.publish);\r\n if (_logger.canPublish(\"debug\")) {\r\n _logger.debug(\"initializing glue...\");\r\n }\r\n registerLib(\"logger\", _logger, initTimer);\r\n return Promise.resolve(undefined);\r\n }\r\n function setupMetrics() {\r\n var _a, _b, _c, _d, _e;\r\n var initTimer = timer(\"metrics\");\r\n var config = internalConfig.metrics;\r\n var metricsPublishingEnabledFunc = iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.getMetricsPublishingEnabled;\r\n var identity = internalConfig.connection.identity;\r\n var canUpdateMetric = metricsPublishingEnabledFunc ? metricsPublishingEnabledFunc : function () { return true; };\r\n var disableAutoAppSystem = (_a = (typeof config !== \"boolean\" && config.disableAutoAppSystem)) !== null && _a !== void 0 ? _a : false;\r\n _metrics = metrics({\r\n connection: config ? _connection : undefined,\r\n logger: _logger.subLogger(\"metrics\"),\r\n canUpdateMetric: canUpdateMetric,\r\n system: \"Glue42\",\r\n service: (_c = (_b = identity === null || identity === void 0 ? void 0 : identity.service) !== null && _b !== void 0 ? _b : iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.applicationName) !== null && _c !== void 0 ? _c : internalConfig.application,\r\n instance: (_e = (_d = identity === null || identity === void 0 ? void 0 : identity.instance) !== null && _d !== void 0 ? _d : identity === null || identity === void 0 ? void 0 : identity.windowId) !== null && _e !== void 0 ? _e : shortid(),\r\n disableAutoAppSystem: disableAutoAppSystem,\r\n pagePerformanceMetrics: typeof config !== \"boolean\" ? config === null || config === void 0 ? void 0 : config.pagePerformanceMetrics : undefined\r\n });\r\n registerLib(\"metrics\", _metrics, initTimer);\r\n return Promise.resolve();\r\n }\r\n function setupInterop() {\r\n var initTimer = timer(\"interop\");\r\n var agmConfig = {\r\n connection: _connection,\r\n logger: _logger.subLogger(\"interop\"),\r\n };\r\n _interop = new Interop(agmConfig);\r\n Logger.Interop = _interop;\r\n registerLib([\"interop\", \"agm\"], _interop, initTimer);\r\n return Promise.resolve();\r\n }\r\n function setupContexts() {\r\n var hasActivities = (internalConfig.activities && _connection.protocolVersion === 3);\r\n var needsContexts = internalConfig.contexts || hasActivities;\r\n if (needsContexts) {\r\n var initTimer = timer(\"contexts\");\r\n _contexts = new ContextsModule({\r\n connection: _connection,\r\n logger: _logger.subLogger(\"contexts\"),\r\n trackAllContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.trackAllContexts : false,\r\n reAnnounceKnownContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.reAnnounceKnownContexts : false\r\n });\r\n registerLib(\"contexts\", _contexts, initTimer);\r\n return _contexts;\r\n }\r\n else {\r\n var replayer = _connection.replayer;\r\n if (replayer) {\r\n replayer.drain(ContextMessageReplaySpec.name);\r\n }\r\n }\r\n }\r\n function setupBus() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var initTimer;\r\n return __generator(this, function (_a) {\r\n if (!internalConfig.bus) {\r\n return [2, Promise.resolve()];\r\n }\r\n initTimer = timer(\"bus\");\r\n _bus = new MessageBus(_connection, _logger.subLogger(\"bus\"));\r\n registerLib(\"bus\", _bus, initTimer);\r\n return [2, Promise.resolve()];\r\n });\r\n });\r\n }\r\n function setupExternalLibs(externalLibs) {\r\n try {\r\n externalLibs.forEach(function (lib) {\r\n setupExternalLib(lib.name, lib.create);\r\n });\r\n return Promise.resolve();\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n function setupExternalLib(name, createCallback) {\r\n var initTimer = timer(name);\r\n var lib = createCallback(libs);\r\n if (lib) {\r\n registerLib(name, lib, initTimer);\r\n }\r\n }\r\n function waitForLibs() {\r\n var libsReadyPromises = Object.keys(libs).map(function (key) {\r\n var lib = libs[key];\r\n return lib.ready ?\r\n lib.ready() : Promise.resolve();\r\n });\r\n return Promise.all(libsReadyPromises);\r\n }\r\n function constructGlueObject() {\r\n var feedbackFunc = function (feedbackInfo) {\r\n if (!_interop) {\r\n return;\r\n }\r\n _interop.invoke(\"T42.ACS.Feedback\", feedbackInfo, \"best\");\r\n };\r\n var info = {\r\n coreVersion: version,\r\n version: internalConfig.version\r\n };\r\n glueInitTimer.stop();\r\n var glue = {\r\n feedback: feedbackFunc,\r\n info: info,\r\n logger: _logger,\r\n interop: _interop,\r\n agm: _interop,\r\n connection: _connection,\r\n metrics: _metrics,\r\n contexts: _contexts,\r\n bus: _bus,\r\n version: internalConfig.version,\r\n userConfig: userConfig,\r\n done: function () {\r\n _logger === null || _logger === void 0 ? void 0 : _logger.info(\"done called by user...\");\r\n return _connection.logout();\r\n }\r\n };\r\n glue.performance = {\r\n get glueVer() {\r\n return internalConfig.version;\r\n },\r\n get glueConfig() {\r\n return JSON.stringify(userConfig);\r\n },\r\n get browser() {\r\n return window.performance.timing.toJSON();\r\n },\r\n get memory() {\r\n return window.performance.memory;\r\n },\r\n get initTimes() {\r\n var all = getAllTimers();\r\n return Object.keys(all).map(function (key) {\r\n var t = all[key];\r\n return {\r\n name: key,\r\n duration: t.endTime - t.startTime,\r\n marks: t.marks,\r\n startTime: t.startTime,\r\n endTime: t.endTime\r\n };\r\n });\r\n }\r\n };\r\n Object.keys(libs).forEach(function (key) {\r\n var lib = libs[key];\r\n glue[key] = lib;\r\n });\r\n glue.config = {};\r\n Object.keys(internalConfig).forEach(function (k) {\r\n glue.config[k] = internalConfig[k];\r\n });\r\n if (ext && ext.extOptions) {\r\n Object.keys(ext.extOptions).forEach(function (k) {\r\n glue.config[k] = ext === null || ext === void 0 ? void 0 : ext.extOptions[k];\r\n });\r\n }\r\n if (ext === null || ext === void 0 ? void 0 : ext.enrichGlue) {\r\n ext.enrichGlue(glue);\r\n }\r\n if (iodesktop && iodesktop.updatePerfData) {\r\n iodesktop.updatePerfData(glue.performance);\r\n }\r\n if (glue.agm) {\r\n var deprecatedDecorator = function (fn, wrong, proper) {\r\n return function () {\r\n glue.logger.warn(\"glue.js - 'glue.agm.\".concat(wrong, \"' method is deprecated, use 'glue.interop.\").concat(proper, \"' instead.\"));\r\n return fn.apply(glue.agm, arguments);\r\n };\r\n };\r\n var agmAny = glue.agm;\r\n agmAny.method_added = deprecatedDecorator(glue.agm.methodAdded, \"method_added\", \"methodAdded\");\r\n agmAny.method_removed = deprecatedDecorator(glue.agm.methodRemoved, \"method_removed\", \"methodRemoved\");\r\n agmAny.server_added = deprecatedDecorator(glue.agm.serverAdded, \"server_added\", \"serverAdded\");\r\n agmAny.server_method_aded = deprecatedDecorator(glue.agm.serverMethodAdded, \"server_method_aded\", \"serverMethodAdded\");\r\n agmAny.server_method_removed = deprecatedDecorator(glue.agm.serverMethodRemoved, \"server_method_removed\", \"serverMethodRemoved\");\r\n }\r\n return glue;\r\n }\r\n function registerInstanceIfNeeded() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var RegisterInstanceMethodName, isMethodAvailable, error_1, typedError;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n RegisterInstanceMethodName = \"T42.ACS.RegisterInstance\";\r\n if (!(Utils.isNode() && typeof process.env._GD_STARTING_CONTEXT_ === \"undefined\" && typeof (userConfig === null || userConfig === void 0 ? void 0 : userConfig.application) !== \"undefined\")) return [3, 4];\r\n isMethodAvailable = _interop.methods({ name: RegisterInstanceMethodName }).length > 0;\r\n if (!isMethodAvailable) return [3, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4, _interop.invoke(RegisterInstanceMethodName, { appName: userConfig === null || userConfig === void 0 ? void 0 : userConfig.application, pid: process.pid })];\r\n case 2:\r\n _a.sent();\r\n return [3, 4];\r\n case 3:\r\n error_1 = _a.sent();\r\n typedError = error_1;\r\n _logger.error(\"Cannot register as an instance: \".concat(JSON.stringify(typedError.message)));\r\n return [3, 4];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n }\r\n return preloadPromise\r\n .then(setupLogger)\r\n .then(setupConnection)\r\n .then(function () { return Promise.all([setupMetrics(), setupInterop(), setupContexts(), setupBus()]); })\r\n .then(function () { return _interop.readyPromise; })\r\n .then(function () { return registerInstanceIfNeeded(); })\r\n .then(function () {\r\n return setupExternalLibs(internalConfig.libs || []);\r\n })\r\n .then(waitForLibs)\r\n .then(constructGlueObject)\r\n .catch(function (err) {\r\n return Promise.reject({\r\n err: err,\r\n libs: libs\r\n });\r\n });\r\n};\r\nif (typeof window !== \"undefined\") {\r\n window.IOConnectCore = IOConnectCoreFactory;\r\n}\r\nIOConnectCoreFactory.version = version;\r\nIOConnectCoreFactory.default = IOConnectCoreFactory;\n\nexport { IOConnectCoreFactory as default };\n//# sourceMappingURL=core.es.js.map\n",null,null,null,null,null,null,null,null,null,null,null,null,null,"const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"\nvar navigator = {};\nnavigator.userAgent = false;\n\nvar window = {};\n/*\n * jsrsasign(all) 10.8.6 (2023-04-26) (c) 2010-2023 Kenji Urushima | kjur.github.io/jsrsasign/license\n */\nvar VERSION = \"10.8.6\";\nvar VERSION_FULL = \"jsrsasign(all) 10.8.6 (2023-04-26) (c) 2010-2023 Kenji Urushima | kjur.github.io/jsrsasign/license\";\n\n/*! CryptoJS v3.1.2 core-fix.js\n * code.google.com/p/crypto-js\n * (c) 2009-2013 by Jeff Mott. All rights reserved.\n * code.google.com/p/crypto-js/wiki/License\n * THIS IS FIX of 'core.js' to fix Hmac issue.\n * https://code.google.com/p/crypto-js/issues/detail?id=84\n * https://crypto-js.googlecode.com/svn-history/r667/branches/3.x/src/core.js\n */\nvar CryptoJS=CryptoJS||(function(e,g){var a={};var b=a.lib={};var j=b.Base=(function(){function n(){}return{extend:function(p){n.prototype=this;var o=new n();if(p){o.mixIn(p)}if(!o.hasOwnProperty(\"init\")){o.init=function(){o.$super.init.apply(this,arguments)}}o.init.prototype=o;o.$super=this;return o},create:function(){var o=this.extend();o.init.apply(o,arguments);return o},init:function(){},mixIn:function(p){for(var o in p){if(p.hasOwnProperty(o)){this[o]=p[o]}}if(p.hasOwnProperty(\"toString\")){this.toString=p.toString}},clone:function(){return this.init.prototype.extend(this)}}}());var l=b.WordArray=j.extend({init:function(o,n){o=this.words=o||[];if(n!=g){this.sigBytes=n}else{this.sigBytes=o.length*4}},toString:function(n){return(n||h).stringify(this)},concat:function(t){var q=this.words;var p=t.words;var n=this.sigBytes;var s=t.sigBytes;this.clamp();if(n%4){for(var r=0;r>>2]>>>(24-(r%4)*8))&255;q[(n+r)>>>2]|=o<<(24-((n+r)%4)*8)}}else{for(var r=0;r>>2]=p[r>>>2]}}this.sigBytes+=s;return this},clamp:function(){var o=this.words;var n=this.sigBytes;o[n>>>2]&=4294967295<<(32-(n%4)*8);o.length=e.ceil(n/4)},clone:function(){var n=j.clone.call(this);n.words=this.words.slice(0);return n},random:function(p){var o=[];for(var n=0;n>>2]>>>(24-(n%4)*8))&255;q.push((s>>>4).toString(16));q.push((s&15).toString(16))}return q.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o>>3]|=parseInt(p.substr(o,2),16)<<(24-(o%8)*4)}return new l.init(q,n/2)}};var d=m.Latin1={stringify:function(q){var r=q.words;var p=q.sigBytes;var n=[];for(var o=0;o>>2]>>>(24-(o%4)*8))&255;n.push(String.fromCharCode(s))}return n.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o>>2]|=(p.charCodeAt(o)&255)<<(24-(o%4)*8)}return new l.init(q,n)}};var c=m.Utf8={stringify:function(n){try{return decodeURIComponent(escape(d.stringify(n)))}catch(o){throw new Error(\"Malformed UTF-8 data\")}},parse:function(n){return d.parse(unescape(encodeURIComponent(n)))}};var i=b.BufferedBlockAlgorithm=j.extend({reset:function(){this._data=new l.init();this._nDataBytes=0},_append:function(n){if(typeof n==\"string\"){n=c.parse(n)}this._data.concat(n);this._nDataBytes+=n.sigBytes},_process:function(w){var q=this._data;var x=q.words;var n=q.sigBytes;var t=this.blockSize;var v=t*4;var u=n/v;if(w){u=e.ceil(u)}else{u=e.max((u|0)-this._minBufferSize,0)}var s=u*t;var r=e.min(s*4,n);if(s){for(var p=0;p>>2]&255}};f.BlockCipher=n.extend({cfg:n.cfg.extend({mode:m,padding:h}),reset:function(){n.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor;else c=a.createDecryptor,this._minBufferSize=1;\nthis._mode=c.call(a,this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var p=f.CipherParams=k.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),m=(g.format={}).OpenSSL={stringify:function(a){var b=a.ciphertext;a=a.salt;\nreturn(a?l.create([1398893684,1701076831]).concat(a).concat(b):b).toString(r)},parse:function(a){a=r.parse(a);var b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=l.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return p.create({ciphertext:a,salt:c})}},j=f.SerializableCipher=k.extend({cfg:k.extend({format:m}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);var e=a.createEncryptor(c,d);b=e.finalize(b);e=e.cfg;return p.create({ciphertext:b,key:c,iv:e.iv,algorithm:a,mode:e.mode,padding:e.padding,\nblockSize:a.blockSize,formatter:d.format})},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return\"string\"==typeof a?b.parse(a,this):a}}),g=(g.kdf={}).OpenSSL={execute:function(a,b,c,d){d||(d=l.random(8));a=v.create({keySize:b+c}).compute(a,d);c=l.create(a.words.slice(b),4*c);a.sigBytes=4*b;return p.create({key:a,iv:c,salt:d})}},s=f.PasswordBasedCipher=j.extend({cfg:j.cfg.extend({kdf:g}),encrypt:function(a,\nb,c,d){d=this.cfg.extend(d);c=d.kdf.execute(c,a.keySize,a.ivSize);d.iv=c.iv;a=j.encrypt.call(this,a,b,c.key,d);a.mixIn(c);return a},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);c=d.kdf.execute(c,a.keySize,a.ivSize,b.salt);d.iv=c.iv;return j.decrypt.call(this,a,b,c.key,d)}})}();\n\n/*\nCryptoJS v3.1.2 aes.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){for(var q=CryptoJS,x=q.lib.BlockCipher,r=q.algo,j=[],y=[],z=[],A=[],B=[],C=[],s=[],u=[],v=[],w=[],g=[],k=0;256>k;k++)g[k]=128>k?k<<1:k<<1^283;for(var n=0,l=0,k=0;256>k;k++){var f=l^l<<1^l<<2^l<<3^l<<4,f=f>>>8^f&255^99;j[n]=f;y[f]=n;var t=g[n],D=g[t],E=g[D],b=257*g[f]^16843008*f;z[n]=b<<24|b>>>8;A[n]=b<<16|b>>>16;B[n]=b<<8|b>>>24;C[n]=b;b=16843009*E^65537*D^257*t^16843008*n;s[f]=b<<24|b>>>8;u[f]=b<<16|b>>>16;v[f]=b<<8|b>>>24;w[f]=b;n?(n=t^g[g[g[E^t]]],l^=g[g[l]]):n=l=1}var F=[0,1,2,4,8,\n16,32,64,128,27,54],r=r.AES=x.extend({_doReset:function(){for(var c=this._key,e=c.words,a=c.sigBytes/4,c=4*((this._nRounds=a+6)+1),b=this._keySchedule=[],h=0;h>>24]<<24|j[d>>>16&255]<<16|j[d>>>8&255]<<8|j[d&255]):(d=d<<8|d>>>24,d=j[d>>>24]<<24|j[d>>>16&255]<<16|j[d>>>8&255]<<8|j[d&255],d^=F[h/a|0]<<24);b[h]=b[h-a]^d}e=this._invKeySchedule=[];for(a=0;aa||4>=h?d:s[j[d>>>24]]^u[j[d>>>16&255]]^v[j[d>>>\n8&255]]^w[j[d&255]]},encryptBlock:function(c,e){this._doCryptBlock(c,e,this._keySchedule,z,A,B,C,j)},decryptBlock:function(c,e){var a=c[e+1];c[e+1]=c[e+3];c[e+3]=a;this._doCryptBlock(c,e,this._invKeySchedule,s,u,v,w,y);a=c[e+1];c[e+1]=c[e+3];c[e+3]=a},_doCryptBlock:function(c,e,a,b,h,d,j,m){for(var n=this._nRounds,f=c[e]^a[0],g=c[e+1]^a[1],k=c[e+2]^a[2],p=c[e+3]^a[3],l=4,t=1;t>>24]^h[g>>>16&255]^d[k>>>8&255]^j[p&255]^a[l++],r=b[g>>>24]^h[k>>>16&255]^d[p>>>8&255]^j[f&255]^a[l++],s=\nb[k>>>24]^h[p>>>16&255]^d[f>>>8&255]^j[g&255]^a[l++],p=b[p>>>24]^h[f>>>16&255]^d[g>>>8&255]^j[k&255]^a[l++],f=q,g=r,k=s;q=(m[f>>>24]<<24|m[g>>>16&255]<<16|m[k>>>8&255]<<8|m[p&255])^a[l++];r=(m[g>>>24]<<24|m[k>>>16&255]<<16|m[p>>>8&255]<<8|m[f&255])^a[l++];s=(m[k>>>24]<<24|m[p>>>16&255]<<16|m[f>>>8&255]<<8|m[g&255])^a[l++];p=(m[p>>>24]<<24|m[f>>>16&255]<<16|m[g>>>8&255]<<8|m[k&255])^a[l++];c[e]=q;c[e+1]=r;c[e+2]=s;c[e+3]=p},keySize:8});q.AES=x._createHelper(r)})();\n\n/*\nCryptoJS v3.1.2 tripledes-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){function j(b,c){var a=(this._lBlock>>>b^this._rBlock)&c;this._rBlock^=a;this._lBlock^=a<>>b^this._lBlock)&c;this._lBlock^=a;this._rBlock^=a<a;a++){var f=q[a]-1;c[a]=b[f>>>5]>>>31-f%32&1}b=this._subKeys=[];for(f=0;16>f;f++){for(var d=b[f]=[],e=r[f],a=0;24>a;a++)d[a/6|0]|=c[(p[a]-1+e)%28]<<31-a%6,d[4+(a/6|0)]|=c[28+(p[a+24]-1+e)%28]<<31-a%6;d[0]=d[0]<<1|d[0]>>>31;for(a=1;7>a;a++)d[a]>>>=\n4*(a-1)+3;d[7]=d[7]<<5|d[7]>>>27}c=this._invSubKeys=[];for(a=0;16>a;a++)c[a]=b[15-a]},encryptBlock:function(b,c){this._doCryptBlock(b,c,this._subKeys)},decryptBlock:function(b,c){this._doCryptBlock(b,c,this._invSubKeys)},_doCryptBlock:function(b,c,a){this._lBlock=b[c];this._rBlock=b[c+1];j.call(this,4,252645135);j.call(this,16,65535);l.call(this,2,858993459);l.call(this,8,16711935);j.call(this,1,1431655765);for(var f=0;16>f;f++){for(var d=a[f],e=this._lBlock,h=this._rBlock,g=0,k=0;8>k;k++)g|=s[k][((h^\nd[k])&t[k])>>>0];this._lBlock=h;this._rBlock=e^g}a=this._lBlock;this._lBlock=this._rBlock;this._rBlock=a;j.call(this,1,1431655765);l.call(this,8,16711935);l.call(this,2,858993459);j.call(this,16,65535);j.call(this,4,252645135);b[c]=this._lBlock;b[c+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});h.DES=e._createHelper(m);g=g.TripleDES=e.extend({_doReset:function(){var b=this._key.words;this._des1=m.createEncryptor(n.create(b.slice(0,2)));this._des2=m.createEncryptor(n.create(b.slice(2,4)));this._des3=\nm.createEncryptor(n.create(b.slice(4,6)))},encryptBlock:function(b,c){this._des1.encryptBlock(b,c);this._des2.decryptBlock(b,c);this._des3.encryptBlock(b,c)},decryptBlock:function(b,c){this._des3.decryptBlock(b,c);this._des2.encryptBlock(b,c);this._des1.decryptBlock(b,c)},keySize:6,ivSize:2,blockSize:2});h.TripleDES=e._createHelper(g)})();\n\n/*\nCryptoJS v3.1.2 enc-base64.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var h=CryptoJS,j=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();b=[];for(var a=0;a>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join(\"\")},parse:function(b){var e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));for(var c=[],a=0,d=0;d<\ne;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return j.create(c,a)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"}})();\n\n/*\nCryptoJS v3.1.2 md5.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(E){function h(a,f,g,j,p,h,k){a=a+(f&g|~f&j)+p+k;return(a<>>32-h)+f}function k(a,f,g,j,p,h,k){a=a+(f&j|g&~j)+p+k;return(a<>>32-h)+f}function l(a,f,g,j,h,k,l){a=a+(f^g^j)+h+l;return(a<>>32-k)+f}function n(a,f,g,j,h,k,l){a=a+(g^(f|~j))+h+l;return(a<>>32-k)+f}for(var r=CryptoJS,q=r.lib,F=q.WordArray,s=q.Hasher,q=r.algo,a=[],t=0;64>t;t++)a[t]=4294967296*E.abs(E.sin(t+1))|0;q=q.MD5=s.extend({_doReset:function(){this._hash=new F.init([1732584193,4023233417,2562383102,271733878])},\n_doProcessBlock:function(m,f){for(var g=0;16>g;g++){var j=f+g,p=m[j];m[j]=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360}var g=this._hash.words,j=m[f+0],p=m[f+1],q=m[f+2],r=m[f+3],s=m[f+4],t=m[f+5],u=m[f+6],v=m[f+7],w=m[f+8],x=m[f+9],y=m[f+10],z=m[f+11],A=m[f+12],B=m[f+13],C=m[f+14],D=m[f+15],b=g[0],c=g[1],d=g[2],e=g[3],b=h(b,c,d,e,j,7,a[0]),e=h(e,b,c,d,p,12,a[1]),d=h(d,e,b,c,q,17,a[2]),c=h(c,d,e,b,r,22,a[3]),b=h(b,c,d,e,s,7,a[4]),e=h(e,b,c,d,t,12,a[5]),d=h(d,e,b,c,u,17,a[6]),c=h(c,d,e,b,v,22,a[7]),\nb=h(b,c,d,e,w,7,a[8]),e=h(e,b,c,d,x,12,a[9]),d=h(d,e,b,c,y,17,a[10]),c=h(c,d,e,b,z,22,a[11]),b=h(b,c,d,e,A,7,a[12]),e=h(e,b,c,d,B,12,a[13]),d=h(d,e,b,c,C,17,a[14]),c=h(c,d,e,b,D,22,a[15]),b=k(b,c,d,e,p,5,a[16]),e=k(e,b,c,d,u,9,a[17]),d=k(d,e,b,c,z,14,a[18]),c=k(c,d,e,b,j,20,a[19]),b=k(b,c,d,e,t,5,a[20]),e=k(e,b,c,d,y,9,a[21]),d=k(d,e,b,c,D,14,a[22]),c=k(c,d,e,b,s,20,a[23]),b=k(b,c,d,e,x,5,a[24]),e=k(e,b,c,d,C,9,a[25]),d=k(d,e,b,c,r,14,a[26]),c=k(c,d,e,b,w,20,a[27]),b=k(b,c,d,e,B,5,a[28]),e=k(e,b,\nc,d,q,9,a[29]),d=k(d,e,b,c,v,14,a[30]),c=k(c,d,e,b,A,20,a[31]),b=l(b,c,d,e,t,4,a[32]),e=l(e,b,c,d,w,11,a[33]),d=l(d,e,b,c,z,16,a[34]),c=l(c,d,e,b,C,23,a[35]),b=l(b,c,d,e,p,4,a[36]),e=l(e,b,c,d,s,11,a[37]),d=l(d,e,b,c,v,16,a[38]),c=l(c,d,e,b,y,23,a[39]),b=l(b,c,d,e,B,4,a[40]),e=l(e,b,c,d,j,11,a[41]),d=l(d,e,b,c,r,16,a[42]),c=l(c,d,e,b,u,23,a[43]),b=l(b,c,d,e,x,4,a[44]),e=l(e,b,c,d,A,11,a[45]),d=l(d,e,b,c,D,16,a[46]),c=l(c,d,e,b,q,23,a[47]),b=n(b,c,d,e,j,6,a[48]),e=n(e,b,c,d,v,10,a[49]),d=n(d,e,b,c,\nC,15,a[50]),c=n(c,d,e,b,t,21,a[51]),b=n(b,c,d,e,A,6,a[52]),e=n(e,b,c,d,r,10,a[53]),d=n(d,e,b,c,y,15,a[54]),c=n(c,d,e,b,p,21,a[55]),b=n(b,c,d,e,w,6,a[56]),e=n(e,b,c,d,D,10,a[57]),d=n(d,e,b,c,u,15,a[58]),c=n(c,d,e,b,B,21,a[59]),b=n(b,c,d,e,s,6,a[60]),e=n(e,b,c,d,z,10,a[61]),d=n(d,e,b,c,q,15,a[62]),c=n(c,d,e,b,x,21,a[63]);g[0]=g[0]+b|0;g[1]=g[1]+c|0;g[2]=g[2]+d|0;g[3]=g[3]+e|0},_doFinalize:function(){var a=this._data,f=a.words,g=8*this._nDataBytes,j=8*a.sigBytes;f[j>>>5]|=128<<24-j%32;var h=E.floor(g/\n4294967296);f[(j+64>>>9<<4)+15]=(h<<8|h>>>24)&16711935|(h<<24|h>>>8)&4278255360;f[(j+64>>>9<<4)+14]=(g<<8|g>>>24)&16711935|(g<<24|g>>>8)&4278255360;a.sigBytes=4*(f.length+1);this._process();a=this._hash;f=a.words;for(g=0;4>g;g++)j=f[g],f[g]=(j<<8|j>>>24)&16711935|(j<<24|j>>>8)&4278255360;return a},clone:function(){var a=s.clone.call(this);a._hash=this._hash.clone();return a}});r.MD5=s._createHelper(q);r.HmacMD5=s._createHmacHelper(q)})(Math);\n\n/*\nCryptoJS v3.1.2 sha1-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var k=CryptoJS,b=k.lib,m=b.WordArray,l=b.Hasher,d=[],b=k.algo.SHA1=l.extend({_doReset:function(){this._hash=new m.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(n,p){for(var a=this._hash.words,e=a[0],f=a[1],h=a[2],j=a[3],b=a[4],c=0;80>c;c++){if(16>c)d[c]=n[p+c]|0;else{var g=d[c-3]^d[c-8]^d[c-14]^d[c-16];d[c]=g<<1|g>>>31}g=(e<<5|e>>>27)+b+d[c];g=20>c?g+((f&h|~f&j)+1518500249):40>c?g+((f^h^j)+1859775393):60>c?g+((f&h|f&j|h&j)-1894007588):g+((f^h^\nj)-899497514);b=j;j=h;h=f<<30|f>>>2;f=e;e=g}a[0]=a[0]+e|0;a[1]=a[1]+f|0;a[2]=a[2]+h|0;a[3]=a[3]+j|0;a[4]=a[4]+b|0},_doFinalize:function(){var b=this._data,d=b.words,a=8*this._nDataBytes,e=8*b.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+64>>>9<<4)+14]=Math.floor(a/4294967296);d[(e+64>>>9<<4)+15]=a;b.sigBytes=4*d.length;this._process();return this._hash},clone:function(){var b=l.clone.call(this);b._hash=this._hash.clone();return b}});k.SHA1=l._createHelper(b);k.HmacSHA1=l._createHmacHelper(b)})();\n\n/*\nCryptoJS v3.1.2 sha256-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(k){for(var g=CryptoJS,h=g.lib,v=h.WordArray,j=h.Hasher,h=g.algo,s=[],t=[],u=function(q){return 4294967296*(q-(q|0))|0},l=2,b=0;64>b;){var d;a:{d=l;for(var w=k.sqrt(d),r=2;r<=w;r++)if(!(d%r)){d=!1;break a}d=!0}d&&(8>b&&(s[b]=u(k.pow(l,0.5))),t[b]=u(k.pow(l,1/3)),b++);l++}var n=[],h=h.SHA256=j.extend({_doReset:function(){this._hash=new v.init(s.slice(0))},_doProcessBlock:function(q,h){for(var a=this._hash.words,c=a[0],d=a[1],b=a[2],k=a[3],f=a[4],g=a[5],j=a[6],l=a[7],e=0;64>e;e++){if(16>e)n[e]=\nq[h+e]|0;else{var m=n[e-15],p=n[e-2];n[e]=((m<<25|m>>>7)^(m<<14|m>>>18)^m>>>3)+n[e-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+n[e-16]}m=l+((f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25))+(f&g^~f&j)+t[e]+n[e];p=((c<<30|c>>>2)^(c<<19|c>>>13)^(c<<10|c>>>22))+(c&d^c&b^d&b);l=j;j=g;g=f;f=k+m|0;k=b;b=d;d=c;c=m+p|0}a[0]=a[0]+c|0;a[1]=a[1]+d|0;a[2]=a[2]+b|0;a[3]=a[3]+k|0;a[4]=a[4]+f|0;a[5]=a[5]+g|0;a[6]=a[6]+j|0;a[7]=a[7]+l|0},_doFinalize:function(){var d=this._data,b=d.words,a=8*this._nDataBytes,c=8*d.sigBytes;\nb[c>>>5]|=128<<24-c%32;b[(c+64>>>9<<4)+14]=k.floor(a/4294967296);b[(c+64>>>9<<4)+15]=a;d.sigBytes=4*b.length;this._process();return this._hash},clone:function(){var b=j.clone.call(this);b._hash=this._hash.clone();return b}});g.SHA256=j._createHelper(h);g.HmacSHA256=j._createHmacHelper(h)})(Math);\n\n/*\nCryptoJS v3.1.2 sha224-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var b=CryptoJS,d=b.lib.WordArray,a=b.algo,c=a.SHA256,a=a.SHA224=c.extend({_doReset:function(){this._hash=new d.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var a=c._doFinalize.call(this);a.sigBytes-=4;return a}});b.SHA224=c._createHelper(a);b.HmacSHA224=c._createHmacHelper(a)})();\n\n/*\nCryptoJS v3.1.2 sha512-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){function a(){return d.create.apply(d,arguments)}for(var n=CryptoJS,r=n.lib.Hasher,e=n.x64,d=e.Word,T=e.WordArray,e=n.algo,ea=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),\na(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,\n2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),\na(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,\n3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],v=[],w=0;80>w;w++)v[w]=a();e=e.SHA512=r.extend({_doReset:function(){this._hash=new T.init([new d.init(1779033703,4089235720),new d.init(3144134277,2227873595),new d.init(1013904242,4271175723),new d.init(2773480762,1595750129),new d.init(1359893119,2917565137),new d.init(2600822924,725511199),new d.init(528734635,4215389547),new d.init(1541459225,327033209)])},_doProcessBlock:function(a,d){for(var f=this._hash.words,\nF=f[0],e=f[1],n=f[2],r=f[3],G=f[4],H=f[5],I=f[6],f=f[7],w=F.high,J=F.low,X=e.high,K=e.low,Y=n.high,L=n.low,Z=r.high,M=r.low,$=G.high,N=G.low,aa=H.high,O=H.low,ba=I.high,P=I.low,ca=f.high,Q=f.low,k=w,g=J,z=X,x=K,A=Y,y=L,U=Z,B=M,l=$,h=N,R=aa,C=O,S=ba,D=P,V=ca,E=Q,m=0;80>m;m++){var s=v[m];if(16>m)var j=s.high=a[d+2*m]|0,b=s.low=a[d+2*m+1]|0;else{var j=v[m-15],b=j.high,p=j.low,j=(b>>>1|p<<31)^(b>>>8|p<<24)^b>>>7,p=(p>>>1|b<<31)^(p>>>8|b<<24)^(p>>>7|b<<25),u=v[m-2],b=u.high,c=u.low,u=(b>>>19|c<<13)^(b<<\n3|c>>>29)^b>>>6,c=(c>>>19|b<<13)^(c<<3|b>>>29)^(c>>>6|b<<26),b=v[m-7],W=b.high,t=v[m-16],q=t.high,t=t.low,b=p+b.low,j=j+W+(b>>>0

>>0?1:0),b=b+c,j=j+u+(b>>>0>>0?1:0),b=b+t,j=j+q+(b>>>0>>0?1:0);s.high=j;s.low=b}var W=l&R^~l&S,t=h&C^~h&D,s=k&z^k&A^z&A,T=g&x^g&y^x&y,p=(k>>>28|g<<4)^(k<<30|g>>>2)^(k<<25|g>>>7),u=(g>>>28|k<<4)^(g<<30|k>>>2)^(g<<25|k>>>7),c=ea[m],fa=c.high,da=c.low,c=E+((h>>>14|l<<18)^(h>>>18|l<<14)^(h<<23|l>>>9)),q=V+((l>>>14|h<<18)^(l>>>18|h<<14)^(l<<23|h>>>9))+(c>>>0>>0?1:\n0),c=c+t,q=q+W+(c>>>0>>0?1:0),c=c+da,q=q+fa+(c>>>0>>0?1:0),c=c+b,q=q+j+(c>>>0>>0?1:0),b=u+T,s=p+s+(b>>>0>>0?1:0),V=S,E=D,S=R,D=C,R=l,C=h,h=B+c|0,l=U+q+(h>>>0>>0?1:0)|0,U=A,B=y,A=z,y=x,z=k,x=g,g=c+b|0,k=q+s+(g>>>0>>0?1:0)|0}J=F.low=J+g;F.high=w+k+(J>>>0>>0?1:0);K=e.low=K+x;e.high=X+z+(K>>>0>>0?1:0);L=n.low=L+y;n.high=Y+A+(L>>>0>>0?1:0);M=r.low=M+B;r.high=Z+U+(M>>>0>>0?1:0);N=G.low=N+h;G.high=$+l+(N>>>0>>0?1:0);O=H.low=O+C;H.high=aa+R+(O>>>0>>0?1:0);P=I.low=P+D;\nI.high=ba+S+(P>>>0>>0?1:0);Q=f.low=Q+E;f.high=ca+V+(Q>>>0>>0?1:0)},_doFinalize:function(){var a=this._data,d=a.words,f=8*this._nDataBytes,e=8*a.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+128>>>10<<5)+30]=Math.floor(f/4294967296);d[(e+128>>>10<<5)+31]=f;a.sigBytes=4*d.length;this._process();return this._hash.toX32()},clone:function(){var a=r.clone.call(this);a._hash=this._hash.clone();return a},blockSize:32});n.SHA512=r._createHelper(e);n.HmacSHA512=r._createHmacHelper(e)})();\n\n/*\nCryptoJS v3.1.2 sha384-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var c=CryptoJS,a=c.x64,b=a.Word,e=a.WordArray,a=c.algo,d=a.SHA512,a=a.SHA384=d.extend({_doReset:function(){this._hash=new e.init([new b.init(3418070365,3238371032),new b.init(1654270250,914150663),new b.init(2438529370,812702999),new b.init(355462360,4144912697),new b.init(1731405415,4290775857),new b.init(2394180231,1750603025),new b.init(3675008525,1694076839),new b.init(1203062813,3204075428)])},_doFinalize:function(){var a=d._doFinalize.call(this);a.sigBytes-=16;return a}});c.SHA384=\nd._createHelper(a);c.HmacSHA384=d._createHmacHelper(a)})();\n\n/*\nCryptoJS v3.1.2 ripemd160-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/*\n\n(c) 2012 by Cedric Mesnil. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n(function(){var q=CryptoJS,d=q.lib,n=d.WordArray,p=d.Hasher,d=q.algo,x=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),y=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),z=n.create([11,14,15,12,\n5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),A=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),B=n.create([0,1518500249,1859775393,2400959708,2840853838]),C=n.create([1352829926,1548603684,1836072691,\n2053994217,0]),d=d.RIPEMD160=p.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,v){for(var b=0;16>b;b++){var c=v+b,f=e[c];e[c]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360}var c=this._hash.words,f=B.words,d=C.words,n=x.words,q=y.words,p=z.words,w=A.words,t,g,h,j,r,u,k,l,m,s;u=t=c[0];k=g=c[1];l=h=c[2];m=j=c[3];s=r=c[4];for(var a,b=0;80>b;b+=1)a=t+e[v+n[b]]|0,a=16>b?a+((g^h^j)+f[0]):32>b?a+((g&h|~g&j)+f[1]):48>b?\na+(((g|~h)^j)+f[2]):64>b?a+((g&j|h&~j)+f[3]):a+((g^(h|~j))+f[4]),a|=0,a=a<>>32-p[b],a=a+r|0,t=r,r=j,j=h<<10|h>>>22,h=g,g=a,a=u+e[v+q[b]]|0,a=16>b?a+((k^(l|~m))+d[0]):32>b?a+((k&m|l&~m)+d[1]):48>b?a+(((k|~l)^m)+d[2]):64>b?a+((k&l|~k&m)+d[3]):a+((k^l^m)+d[4]),a|=0,a=a<>>32-w[b],a=a+s|0,u=s,s=m,m=l<<10|l>>>22,l=k,k=a;a=c[1]+h+m|0;c[1]=c[2]+j+s|0;c[2]=c[3]+r+u|0;c[3]=c[4]+t+k|0;c[4]=c[0]+g+l|0;c[0]=a},_doFinalize:function(){var e=this._data,d=e.words,b=8*this._nDataBytes,c=8*e.sigBytes;\nd[c>>>5]|=128<<24-c%32;d[(c+64>>>9<<4)+14]=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360;e.sigBytes=4*(d.length+1);this._process();e=this._hash;d=e.words;for(b=0;5>b;b++)c=d[b],d[b]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360;return e},clone:function(){var d=p.clone.call(this);d._hash=this._hash.clone();return d}});q.RIPEMD160=p._createHelper(d);q.HmacRIPEMD160=p._createHmacHelper(d)})(Math);\n\n/*\nCryptoJS v3.1.2 hmac.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var c=CryptoJS,k=c.enc.Utf8;c.algo.HMAC=c.lib.Base.extend({init:function(a,b){a=this._hasher=new a.init;\"string\"==typeof b&&(b=k.parse(b));var c=a.blockSize,e=4*c;b.sigBytes>e&&(b=a.finalize(b));b.clamp();for(var f=this._oKey=b.clone(),g=this._iKey=b.clone(),h=f.words,j=g.words,d=0;d>6)+b64map.charAt(e&63)}if(b+1==d.length){e=parseInt(d.substring(b,b+1),16);a+=b64map.charAt(e<<2)}else{if(b+2==d.length){e=parseInt(d.substring(b,b+2),16);a+=b64map.charAt(e>>2)+b64map.charAt((e&3)<<4)}}if(b64pad){while((a.length&3)>0){a+=b64pad}}return a}function b64tohex(f){var d=\"\";var e;var b=0;var c;var a;for(e=0;e>2);c=a&3;b=1}else{if(b==1){d+=int2char((c<<2)|(a>>4));c=a&15;b=2}else{if(b==2){d+=int2char(c);d+=int2char(a>>2);c=a&3;b=3}else{d+=int2char((c<<2)|(a>>4));d+=int2char(a&15);b=0}}}}if(b==1){d+=int2char(c<<2)}return d}function b64toBA(e){var d=b64tohex(e);var c;var b=new Array();for(c=0;2*c=0){var d=a*this[f++]+b[e]+h;h=Math.floor(d/67108864);b[e++]=d&67108863}return h}function am2(f,q,r,e,o,a){var k=q&32767,p=q>>15;while(--a>=0){var d=this[f]&32767;var g=this[f++]>>15;var b=p*d+g*k;d=k*d+((b&32767)<<15)+r[e]+(o&1073741823);o=(d>>>30)+(b>>>15)+p*g+(o>>>30);r[e++]=d&1073741823}return o}function am3(f,q,r,e,o,a){var k=q&16383,p=q>>14;while(--a>=0){var d=this[f]&16383;var g=this[f++]>>14;var b=p*d+g*k;d=k*d+((b&16383)<<14)+r[e]+o;o=(d>>28)+(b>>14)+p*g;r[e++]=d&268435455}return o}if(j_lm&&(navigator.appName==\"Microsoft Internet Explorer\")){BigInteger.prototype.am=am2;dbits=30}else{if(j_lm&&(navigator.appName!=\"Netscape\")){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=((1<=0;--a){b[a]=this[a]}b.t=this.t;b.s=this.s}function bnpFromInt(a){this.t=1;this.s=(a<0)?-1:0;if(a>0){this[0]=a}else{if(a<-1){this[0]=a+this.DV}else{this.t=0}}}function nbv(a){var b=nbi();b.fromInt(a);return b}function bnpFromString(h,c){var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==256){e=8}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{this.fromRadix(h,c);return}}}}}}this.t=0;this.s=0;var g=h.length,d=false,f=0;while(--g>=0){var a=(e==8)?h[g]&255:intAt(h,g);if(a<0){if(h.charAt(g)==\"-\"){d=true}continue}d=false;if(f==0){this[this.t++]=a}else{if(f+e>this.DB){this[this.t-1]|=(a&((1<<(this.DB-f))-1))<>(this.DB-f))}else{this[this.t-1]|=a<=this.DB){f-=this.DB}}if(e==8&&(h[0]&128)!=0){this.s=-1;if(f>0){this[this.t-1]|=((1<<(this.DB-f))-1)<0&&this[this.t-1]==a){--this.t}}function bnToString(c){if(this.s<0){return\"-\"+this.negate().toString(c)}var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{return this.toRadix(c)}}}}}var g=(1<0){if(j>j)>0){a=true;h=int2char(l)}while(f>=0){if(j>(j+=this.DB-e)}else{l=(this[f]>>(j-=e))&g;if(j<=0){j+=this.DB;--f}}if(l>0){a=true}if(a){h+=int2char(l)}}}return a?h:\"0\"}function bnNegate(){var a=nbi();BigInteger.ZERO.subTo(this,a);return a}function bnAbs(){return(this.s<0)?this.negate():this}function bnCompareTo(b){var d=this.s-b.s;if(d!=0){return d}var c=this.t;d=c-b.t;if(d!=0){return(this.s<0)?-d:d}while(--c>=0){if((d=this[c]-b[c])!=0){return d}}return 0}function nbits(a){var c=1,b;if((b=a>>>16)!=0){a=b;c+=16}if((b=a>>8)!=0){a=b;c+=8}if((b=a>>4)!=0){a=b;c+=4}if((b=a>>2)!=0){a=b;c+=2}if((b=a>>1)!=0){a=b;c+=1}return c}function bnBitLength(){if(this.t<=0){return 0}return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM))}function bnpDLShiftTo(c,b){var a;for(a=this.t-1;a>=0;--a){b[a+c]=this[a]}for(a=c-1;a>=0;--a){b[a]=0}b.t=this.t+c;b.s=this.s}function bnpDRShiftTo(c,b){for(var a=c;a=0;--d){e[d+f+1]=(this[d]>>a)|h;h=(this[d]&g)<=0;--d){e[d]=0}e[f]=h;e.t=this.t+f+1;e.s=this.s;e.clamp()}function bnpRShiftTo(g,d){d.s=this.s;var e=Math.floor(g/this.DB);if(e>=this.t){d.t=0;return}var b=g%this.DB;var a=this.DB-b;var f=(1<>b;for(var c=e+1;c>b}if(b>0){d[this.t-e-1]|=(this.s&f)<>=this.DB}if(d.t>=this.DB}g+=this.s}else{g+=this.s;while(e>=this.DB}g-=d.s}f.s=(g<0)?-1:0;if(g<-1){f[e++]=this.DV+g}else{if(g>0){f[e++]=g}}f.t=e;f.clamp()}function bnpMultiplyTo(c,e){var b=this.abs(),f=c.abs();var d=b.t;e.t=d+f.t;while(--d>=0){e[d]=0}for(d=0;d=0){d[b]=0}for(b=0;b=a.DV){d[b+a.t]-=a.DV;d[b+a.t+1]=1}}if(d.t>0){d[d.t-1]+=a.am(b,a[b],d,2*b,0,1)}d.s=0;d.clamp()}function bnpDivRemTo(n,h,g){var w=n.abs();if(w.t<=0){return}var k=this.abs();if(k.t0){w.lShiftTo(v,d);k.lShiftTo(v,g)}else{w.copyTo(d);k.copyTo(g)}var p=d.t;var b=d[p-1];if(b==0){return}var o=b*(1<1)?d[p-2]>>this.F2:0);var A=this.FV/o,z=(1<=0){g[g.t++]=1;g.subTo(f,g)}BigInteger.ONE.dlShiftTo(p,f);f.subTo(d,d);while(d.t=0){var c=(g[--u]==b)?this.DM:Math.floor(g[u]*A+(g[u-1]+x)*z);if((g[u]+=d.am(0,c,g,s,0,p))0){g.rShiftTo(v,g)}if(a<0){BigInteger.ZERO.subTo(g,g)}}function bnMod(b){var c=nbi();this.abs().divRemTo(b,null,c);if(this.s<0&&c.compareTo(BigInteger.ZERO)>0){b.subTo(c,c)}return c}function Classic(a){this.m=a}function cConvert(a){if(a.s<0||a.compareTo(this.m)>=0){return a.mod(this.m)}else{return a}}function cRevert(a){return a}function cReduce(a){a.divRemTo(this.m,null,a)}function cMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}function cSqrTo(a,b){a.squareTo(b);this.reduce(b)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1){return 0}var a=this[0];if((a&1)==0){return 0}var b=a&3;b=(b*(2-(a&15)*b))&15;b=(b*(2-(a&255)*b))&255;b=(b*(2-(((a&65535)*b)&65535)))&65535;b=(b*(2-a*b%this.DV))%this.DV;return(b>0)?this.DV-b:-b}function Montgomery(a){this.m=a;this.mp=a.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<(a.DB-15))-1;this.mt2=2*a.t}function montConvert(a){var b=nbi();a.abs().dlShiftTo(this.m.t,b);b.divRemTo(this.m,null,b);if(a.s<0&&b.compareTo(BigInteger.ZERO)>0){this.m.subTo(b,b)}return b}function montRevert(a){var b=nbi();a.copyTo(b);this.reduce(b);return b}function montReduce(a){while(a.t<=this.mt2){a[a.t++]=0}for(var c=0;c>15)*this.mpl)&this.um)<<15))&a.DM;b=c+this.m.t;a[b]+=this.m.am(0,d,a,c,0,this.m.t);while(a[b]>=a.DV){a[b]-=a.DV;a[++b]++}}a.clamp();a.drShiftTo(this.m.t,a);if(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function montSqrTo(a,b){a.squareTo(b);this.reduce(b)}function montMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return((this.t>0)?(this[0]&1):this.s)==0}function bnpExp(h,j){if(h>4294967295||h<1){return BigInteger.ONE}var f=nbi(),a=nbi(),d=j.convert(this),c=nbits(h)-1;d.copyTo(f);while(--c>=0){j.sqrTo(f,a);if((h&(1<0){j.mulTo(a,d,f)}else{var b=f;f=a;a=b}}return j.revert(f)}function bnModPowInt(b,a){var c;if(b<256||a.isEven()){c=new Classic(a)}else{c=new Montgomery(a)}return this.exp(b,c)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction bnClone(){var a=nbi();this.copyTo(a);return a}function bnIntValue(){if(this.s<0){if(this.t==1){return this[0]-this.DV}else{if(this.t==0){return -1}}}else{if(this.t==1){return this[0]}else{if(this.t==0){return 0}}}return((this[1]&((1<<(32-this.DB))-1))<>24}function bnShortValue(){return(this.t==0)?this.s:(this[0]<<16)>>16}function bnpChunkSize(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function bnSigNum(){if(this.s<0){return -1}else{if(this.t<=0||(this.t==1&&this[0]<=0)){return 0}else{return 1}}}function bnpToRadix(c){if(c==null){c=10}if(this.signum()==0||c<2||c>36){return\"0\"}var f=this.chunkSize(c);var e=Math.pow(c,f);var i=nbv(e),j=nbi(),h=nbi(),g=\"\";this.divRemTo(i,j,h);while(j.signum()>0){g=(e+h.intValue()).toString(c).substr(1)+g;j.divRemTo(i,j,h)}return h.intValue().toString(c)+g}function bnpFromRadix(m,h){this.fromInt(0);if(h==null){h=10}var f=this.chunkSize(h);var g=Math.pow(h,f),e=false,a=0,l=0;for(var c=0;c=f){this.dMultiply(g);this.dAddOffset(l,0);a=0;l=0}}if(a>0){this.dMultiply(Math.pow(h,a));this.dAddOffset(l,0)}if(e){BigInteger.ZERO.subTo(this,this)}}function bnpFromNumber(f,e,h){if(\"number\"==typeof e){if(f<2){this.fromInt(1)}else{this.fromNumber(f,h);if(!this.testBit(f-1)){this.bitwiseTo(BigInteger.ONE.shiftLeft(f-1),op_or,this)}if(this.isEven()){this.dAddOffset(1,0)}while(!this.isProbablePrime(e)){this.dAddOffset(2,0);if(this.bitLength()>f){this.subTo(BigInteger.ONE.shiftLeft(f-1),this)}}}}else{var d=new Array(),g=f&7;d.length=(f>>3)+1;e.nextBytes(d);if(g>0){d[0]&=((1<0){if(e>e)!=(this.s&this.DM)>>e){c[a++]=f|(this.s<<(this.DB-e))}while(b>=0){if(e<8){f=(this[b]&((1<>(e+=this.DB-8)}else{f=(this[b]>>(e-=8))&255;if(e<=0){e+=this.DB;--b}}if((f&128)!=0){f|=-256}if(a==0&&(this.s&128)!=(f&128)){++a}if(a>0||f!=this.s){c[a++]=f}}}return c}function bnEquals(b){return(this.compareTo(b)==0)}function bnMin(b){return(this.compareTo(b)<0)?this:b}function bnMax(b){return(this.compareTo(b)>0)?this:b}function bnpBitwiseTo(c,h,e){var d,g,b=Math.min(c.t,this.t);for(d=0;d>=16;b+=16}if((a&255)==0){a>>=8;b+=8}if((a&15)==0){a>>=4;b+=4}if((a&3)==0){a>>=2;b+=2}if((a&1)==0){++b}return b}function bnGetLowestSetBit(){for(var a=0;a=this.t){return(this.s!=0)}return((this[a]&(1<<(b%this.DB)))!=0)}function bnpChangeBit(c,b){var a=BigInteger.ONE.shiftLeft(c);this.bitwiseTo(a,b,a);return a}function bnSetBit(a){return this.changeBit(a,op_or)}function bnClearBit(a){return this.changeBit(a,op_andnot)}function bnFlipBit(a){return this.changeBit(a,op_xor)}function bnpAddTo(d,f){var e=0,g=0,b=Math.min(d.t,this.t);while(e>=this.DB}if(d.t>=this.DB}g+=this.s}else{g+=this.s;while(e>=this.DB}g+=d.s}f.s=(g<0)?-1:0;if(g>0){f[e++]=g}else{if(g<-1){f[e++]=this.DV+g}}f.t=e;f.clamp()}function bnAdd(b){var c=nbi();this.addTo(b,c);return c}function bnSubtract(b){var c=nbi();this.subTo(b,c);return c}function bnMultiply(b){var c=nbi();this.multiplyTo(b,c);return c}function bnSquare(){var a=nbi();this.squareTo(a);return a}function bnDivide(b){var c=nbi();this.divRemTo(b,c,null);return c}function bnRemainder(b){var c=nbi();this.divRemTo(b,null,c);return c}function bnDivideAndRemainder(b){var d=nbi(),c=nbi();this.divRemTo(b,d,c);return new Array(d,c)}function bnpDMultiply(a){this[this.t]=this.am(0,a-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(b,a){if(b==0){return}while(this.t<=a){this[this.t++]=0}this[a]+=b;while(this[a]>=this.DV){this[a]-=this.DV;if(++a>=this.t){this[this.t++]=0}++this[a]}}function NullExp(){}function nNop(a){return a}function nMulTo(a,c,b){a.multiplyTo(c,b)}function nSqrTo(a,b){a.squareTo(b)}NullExp.prototype.convert=nNop;NullExp.prototype.revert=nNop;NullExp.prototype.mulTo=nMulTo;NullExp.prototype.sqrTo=nSqrTo;function bnPow(a){return this.exp(a,new NullExp())}function bnpMultiplyLowerTo(b,f,e){var d=Math.min(this.t+b.t,f);e.s=0;e.t=d;while(d>0){e[--d]=0}var c;for(c=e.t-this.t;d=0){d[c]=0}for(c=Math.max(e-this.t,0);c2*this.m.t){return a.mod(this.m)}else{if(a.compareTo(this.m)<0){return a}else{var b=nbi();a.copyTo(b);this.reduce(b);return b}}}function barrettRevert(a){return a}function barrettReduce(a){a.drShiftTo(this.m.t-1,this.r2);if(a.t>this.m.t+1){a.t=this.m.t+1;a.clamp()}this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);while(a.compareTo(this.r2)<0){a.dAddOffset(1,this.m.t+1)}a.subTo(this.r2,a);while(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function barrettSqrTo(a,b){a.squareTo(b);this.reduce(b)}function barrettMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Barrett.prototype.convert=barrettConvert;Barrett.prototype.revert=barrettRevert;Barrett.prototype.reduce=barrettReduce;Barrett.prototype.mulTo=barrettMulTo;Barrett.prototype.sqrTo=barrettSqrTo;function bnModPow(q,f){var o=q.bitLength(),h,b=nbv(1),v;if(o<=0){return b}else{if(o<18){h=1}else{if(o<48){h=3}else{if(o<144){h=4}else{if(o<768){h=5}else{h=6}}}}}if(o<8){v=new Classic(f)}else{if(f.isEven()){v=new Barrett(f)}else{v=new Montgomery(f)}}var p=new Array(),d=3,s=h-1,a=(1<1){var A=nbi();v.sqrTo(p[1],A);while(d<=a){p[d]=nbi();v.mulTo(A,p[d-2],p[d]);d+=2}}var l=q.t-1,x,u=true,c=nbi(),y;o=nbits(q[l])-1;while(l>=0){if(o>=s){x=(q[l]>>(o-s))&a}else{x=(q[l]&((1<<(o+1))-1))<<(s-o);if(l>0){x|=q[l-1]>>(this.DB+o-s)}}d=h;while((x&1)==0){x>>=1;--d}if((o-=d)<0){o+=this.DB;--l}if(u){p[x].copyTo(b);u=false}else{while(d>1){v.sqrTo(b,c);v.sqrTo(c,b);d-=2}if(d>0){v.sqrTo(b,c)}else{y=b;b=c;c=y}v.mulTo(c,p[x],b)}while(l>=0&&(q[l]&(1<0){b.rShiftTo(f,b);h.rShiftTo(f,h)}while(b.signum()>0){if((d=b.getLowestSetBit())>0){b.rShiftTo(d,b)}if((d=h.getLowestSetBit())>0){h.rShiftTo(d,h)}if(b.compareTo(h)>=0){b.subTo(h,b);b.rShiftTo(1,b)}else{h.subTo(b,h);h.rShiftTo(1,h)}}if(f>0){h.lShiftTo(f,h)}return h}function bnpModInt(e){if(e<=0){return 0}var c=this.DV%e,b=(this.s<0)?e-1:0;if(this.t>0){if(c==0){b=this[0]%e}else{for(var a=this.t-1;a>=0;--a){b=(c*b+this[a])%e}}}return b}function bnModInverse(f){var j=f.isEven();if((this.isEven()&&j)||f.signum()==0){return BigInteger.ZERO}var i=f.clone(),h=this.clone();var g=nbv(1),e=nbv(0),l=nbv(0),k=nbv(1);while(i.signum()!=0){while(i.isEven()){i.rShiftTo(1,i);if(j){if(!g.isEven()||!e.isEven()){g.addTo(this,g);e.subTo(f,e)}g.rShiftTo(1,g)}else{if(!e.isEven()){e.subTo(f,e)}}e.rShiftTo(1,e)}while(h.isEven()){h.rShiftTo(1,h);if(j){if(!l.isEven()||!k.isEven()){l.addTo(this,l);k.subTo(f,k)}l.rShiftTo(1,l)}else{if(!k.isEven()){k.subTo(f,k)}}k.rShiftTo(1,k)}if(i.compareTo(h)>=0){i.subTo(h,i);if(j){g.subTo(l,g)}e.subTo(k,e)}else{h.subTo(i,h);if(j){l.subTo(g,l)}k.subTo(e,k)}}if(h.compareTo(BigInteger.ONE)!=0){return BigInteger.ZERO}if(k.compareTo(f)>=0){return k.subtract(f)}if(k.signum()<0){k.addTo(f,k)}else{return k}if(k.signum()<0){return k.add(f)}else{return k}}var lowprimes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];var lplim=(1<<26)/lowprimes[lowprimes.length-1];function bnIsProbablePrime(e){var d,b=this.abs();if(b.t==1&&b[0]<=lowprimes[lowprimes.length-1]){for(d=0;d>1;if(f>lowprimes.length){f=lowprimes.length}var b=nbi();for(var e=0;e>8)&255;rng_pool[rng_pptr++]^=(a>>16)&255;rng_pool[rng_pptr++]^=(a>>24)&255;if(rng_pptr>=rng_psize){rng_pptr-=rng_psize}}function rng_seed_time(){rng_seed_int(new Date().getTime())}if(rng_pool==null){rng_pool=new Array();rng_pptr=0;var t;if(window!==undefined&&(window.crypto!==undefined||window.msCrypto!==undefined)){var crypto=window.crypto||window.msCrypto;if(crypto.getRandomValues){var ua=new Uint8Array(32);crypto.getRandomValues(ua);for(t=0;t<32;++t){rng_pool[rng_pptr++]=ua[t]}}else{if(navigator.appName==\"Netscape\"&&navigator.appVersion<\"5\"){var z=window.crypto.random(32);for(t=0;t>>8;rng_pool[rng_pptr++]=t&255}rng_pptr=0;rng_seed_time()}function rng_get_byte(){if(rng_state==null){rng_seed_time();rng_state=prng_newstate();rng_state.init(rng_pool);for(rng_pptr=0;rng_pptr=0&&h>0){var f=e.charCodeAt(d--);if(f<128){g[--h]=f}else{if((f>127)&&(f<2048)){g[--h]=(f&63)|128;g[--h]=(f>>6)|192}else{g[--h]=(f&63)|128;g[--h]=((f>>6)&63)|128;g[--h]=(f>>12)|224}}}g[--h]=0;var b=new SecureRandom();var a=new Array();while(h>2){a[0]=0;while(a[0]==0){b.nextBytes(a)}g[--h]=a[0]}g[--h]=2;g[--h]=0;return new BigInteger(g)}function oaep_mgf1_arr(c,a,e){var b=\"\",d=0;while(b.length>24,(d&16711680)>>16,(d&65280)>>8,d&255])));d+=1}return b}function oaep_pad(q,a,f,l){var c=KJUR.crypto.MessageDigest;var o=KJUR.crypto.Util;var b=null;if(!f){f=\"sha1\"}if(typeof f===\"string\"){b=c.getCanonicalAlgName(f);l=c.getHashLength(b);f=function(i){return hextorstr(o.hashHex(rstrtohex(i),b))}}if(q.length+2*l+2>a){throw\"Message too long for RSA\"}var k=\"\",e;for(e=0;e0&&a.length>0){this.n=parseBigInt(b,16);this.e=parseInt(a,16)}else{throw\"Invalid RSA public key\"}}}function RSADoPublic(a){return a.modPowInt(this.e,this.n)}function RSAEncrypt(d){var a=pkcs1pad2(d,(this.n.bitLength()+7)>>3);if(a==null){return null}var e=this.doPublic(a);if(e==null){return null}var b=e.toString(16);if((b.length&1)==0){return b}else{return\"0\"+b}}function RSAEncryptOAEP(f,e,b){var i=(this.n.bitLength()+7)>>3;var a=oaep_pad(f,i,e,b);if(a==null){return null}var g=this.doPublic(a);if(g==null){return null}var d=g.toString(16);while(d.length=a.length){return null}}var e=\"\";while(++f191)&&(h<224)){e+=String.fromCharCode(((h&31)<<6)|(a[f+1]&63));++f}else{e+=String.fromCharCode(((h&15)<<12)|((a[f+1]&63)<<6)|(a[f+2]&63));f+=2}}}return e}function oaep_mgf1_str(c,a,e){var b=\"\",d=0;while(b.length>24,(d&16711680)>>16,(d&65280)>>8,d&255]));d+=1}return b}function oaep_unpad(o,b,g,p){var e=KJUR.crypto.MessageDigest;var r=KJUR.crypto.Util;var c=null;if(!g){g=\"sha1\"}if(typeof g===\"string\"){c=e.getCanonicalAlgName(g);p=e.getHashLength(c);g=function(d){return hextorstr(r.hashHex(rstrtohex(d),c))}}o=o.toByteArray();var h;for(h=0;h0&&a.length>0){this.n=parseBigInt(c,16);this.e=parseInt(a,16);this.d=parseBigInt(b,16)}else{throw\"Invalid RSA private key\"}}}function RSASetPrivateEx(g,d,e,c,b,a,h,f){this.isPrivate=true;this.isPublic=false;if(g==null){throw\"RSASetPrivateEx N == null\"}if(d==null){throw\"RSASetPrivateEx E == null\"}if(g.length==0){throw\"RSASetPrivateEx N.length == 0\"}if(d.length==0){throw\"RSASetPrivateEx E.length == 0\"}if(g!=null&&d!=null&&g.length>0&&d.length>0){this.n=parseBigInt(g,16);this.e=parseInt(d,16);this.d=parseBigInt(e,16);this.p=parseBigInt(c,16);this.q=parseBigInt(b,16);this.dmp1=parseBigInt(a,16);this.dmq1=parseBigInt(h,16);this.coeff=parseBigInt(f,16)}else{throw\"Invalid RSA private key in RSASetPrivateEx\"}}function RSAGenerate(b,l){var a=new SecureRandom();var g=b>>1;this.e=parseInt(l,16);var c=new BigInteger(l,16);var d=(b/2)-100;var k=BigInteger.ONE.shiftLeft(d);for(;;){for(;;){this.p=new BigInteger(b-g,1,a);if(this.p.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE)==0&&this.p.isProbablePrime(10)){break}}for(;;){this.q=new BigInteger(g,1,a);if(this.q.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE)==0&&this.q.isProbablePrime(10)){break}}if(this.p.compareTo(this.q)<=0){var j=this.p;this.p=this.q;this.q=j}var h=this.q.subtract(this.p).abs();if(h.bitLength()>3)}function RSADecryptOAEP(e,d,b){if(e.length!=Math.ceil(this.n.bitLength()/4)){throw new Error(\"wrong ctext length\")}var f=parseBigInt(e,16);var a=this.doPrivate(f);if(a==null){return null}return oaep_unpad(a,(this.n.bitLength()+7)>>3,d,b)}RSAKey.prototype.doPrivate=RSADoPrivate;RSAKey.prototype.setPrivate=RSASetPrivate;RSAKey.prototype.setPrivateEx=RSASetPrivateEx;RSAKey.prototype.generate=RSAGenerate;RSAKey.prototype.decrypt=RSADecrypt;RSAKey.prototype.decryptOAEP=RSADecryptOAEP;\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction ECFieldElementFp(b,a){this.x=a;this.q=b}function feFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.x.equals(a.x))}function feFpToBigInteger(){return this.x}function feFpNegate(){return new ECFieldElementFp(this.q,this.x.negate().mod(this.q))}function feFpAdd(a){return new ECFieldElementFp(this.q,this.x.add(a.toBigInteger()).mod(this.q))}function feFpSubtract(a){return new ECFieldElementFp(this.q,this.x.subtract(a.toBigInteger()).mod(this.q))}function feFpMultiply(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger()).mod(this.q))}function feFpSquare(){return new ECFieldElementFp(this.q,this.x.square().mod(this.q))}function feFpDivide(a){return new ECFieldElementFp(this.q,this.x.multiply(a.toBigInteger().modInverse(this.q)).mod(this.q))}ECFieldElementFp.prototype.equals=feFpEquals;ECFieldElementFp.prototype.toBigInteger=feFpToBigInteger;ECFieldElementFp.prototype.negate=feFpNegate;ECFieldElementFp.prototype.add=feFpAdd;ECFieldElementFp.prototype.subtract=feFpSubtract;ECFieldElementFp.prototype.multiply=feFpMultiply;ECFieldElementFp.prototype.square=feFpSquare;ECFieldElementFp.prototype.divide=feFpDivide;ECFieldElementFp.prototype.sqrt=function(){return new ECFieldElementFp(this.q,this.x.sqrt().mod(this.q))};function ECPointFp(c,a,d,b){this.curve=c;this.x=a;this.y=d;if(b==null){this.z=BigInteger.ONE}else{this.z=b}this.zinv=null}function pointFpGetX(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpGetY(){if(this.zinv==null){this.zinv=this.z.modInverse(this.curve.q)}return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))}function pointFpEquals(a){if(a==this){return true}if(this.isInfinity()){return a.isInfinity()}if(a.isInfinity()){return this.isInfinity()}var c,b;c=a.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(a.z)).mod(this.curve.q);if(!c.equals(BigInteger.ZERO)){return false}b=a.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(a.z)).mod(this.curve.q);return b.equals(BigInteger.ZERO)}function pointFpIsInfinity(){if((this.x==null)&&(this.y==null)){return true}return this.z.equals(BigInteger.ZERO)&&!this.y.toBigInteger().equals(BigInteger.ZERO)}function pointFpNegate(){return new ECPointFp(this.curve,this.x,this.y.negate(),this.z)}function pointFpAdd(l){if(this.isInfinity()){return l}if(l.isInfinity()){return this}var p=l.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(l.z)).mod(this.curve.q);var o=l.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(l.z)).mod(this.curve.q);if(BigInteger.ZERO.equals(o)){if(BigInteger.ZERO.equals(p)){return this.twice()}return this.curve.getInfinity()}var j=new BigInteger(\"3\");var e=this.x.toBigInteger();var n=this.y.toBigInteger();var c=l.x.toBigInteger();var k=l.y.toBigInteger();var m=o.square();var i=m.multiply(o);var d=e.multiply(m);var g=p.square().multiply(this.z);var a=g.subtract(d.shiftLeft(1)).multiply(l.z).subtract(i).multiply(o).mod(this.curve.q);var h=d.multiply(j).multiply(p).subtract(n.multiply(i)).subtract(g.multiply(p)).multiply(l.z).add(p.multiply(i)).mod(this.curve.q);var f=i.multiply(this.z).multiply(l.z).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(h),f)}function pointFpTwice(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var g=new BigInteger(\"3\");var c=this.x.toBigInteger();var h=this.y.toBigInteger();var e=h.multiply(this.z);var j=e.multiply(h).mod(this.curve.q);var i=this.curve.a.toBigInteger();var k=c.square().multiply(g);if(!BigInteger.ZERO.equals(i)){k=k.add(this.z.square().multiply(i))}k=k.mod(this.curve.q);var b=k.square().subtract(c.shiftLeft(3).multiply(j)).shiftLeft(1).multiply(e).mod(this.curve.q);var f=k.multiply(g).multiply(c).subtract(j.shiftLeft(1)).shiftLeft(2).multiply(j).subtract(k.square().multiply(k)).mod(this.curve.q);var d=e.square().multiply(e).shiftLeft(3).mod(this.curve.q);return new ECPointFp(this.curve,this.curve.fromBigInteger(b),this.curve.fromBigInteger(f),d)}function pointFpMultiply(d){if(this.isInfinity()){return this}if(d.signum()==0){return this.curve.getInfinity()}var m=d;var l=m.multiply(new BigInteger(\"3\"));var b=this.negate();var j=this;var q=this.curve.q.subtract(d);var o=q.multiply(new BigInteger(\"3\"));var c=new ECPointFp(this.curve,this.x,this.y);var a=c.negate();var g;for(g=l.bitLength()-2;g>0;--g){j=j.twice();var n=l.testBit(g);var f=m.testBit(g);if(n!=f){j=j.add(n?this:b)}}for(g=o.bitLength()-2;g>0;--g){c=c.twice();var p=o.testBit(g);var r=q.testBit(g);if(p!=r){c=c.add(p?c:a)}}return j}function pointFpMultiplyTwo(c,a,b){var d;if(c.bitLength()>b.bitLength()){d=c.bitLength()-1}else{d=b.bitLength()-1}var f=this.curve.getInfinity();var e=this.add(a);while(d>=0){f=f.twice();if(c.testBit(d)){if(b.testBit(d)){f=f.add(e)}else{f=f.add(this)}}else{if(b.testBit(d)){f=f.add(a)}}--d}return f}ECPointFp.prototype.getX=pointFpGetX;ECPointFp.prototype.getY=pointFpGetY;ECPointFp.prototype.equals=pointFpEquals;ECPointFp.prototype.isInfinity=pointFpIsInfinity;ECPointFp.prototype.negate=pointFpNegate;ECPointFp.prototype.add=pointFpAdd;ECPointFp.prototype.twice=pointFpTwice;ECPointFp.prototype.multiply=pointFpMultiply;ECPointFp.prototype.multiplyTwo=pointFpMultiplyTwo;function ECCurveFp(e,d,c){this.q=e;this.a=this.fromBigInteger(d);this.b=this.fromBigInteger(c);this.infinity=new ECPointFp(this,null,null)}function curveFpGetQ(){return this.q}function curveFpGetA(){return this.a}function curveFpGetB(){return this.b}function curveFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.a.equals(a.a)&&this.b.equals(a.b))}function curveFpGetInfinity(){return this.infinity}function curveFpFromBigInteger(a){return new ECFieldElementFp(this.q,a)}function curveFpDecodePointHex(m){switch(parseInt(m.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:var c=m.substr(0,2);var l=m.substr(2);var j=this.fromBigInteger(new BigInteger(k,16));var i=this.getA();var h=this.getB();var e=j.square().add(i).multiply(j).add(h);var g=e.sqrt();if(c==\"03\"){g=g.negate()}return new ECPointFp(this,j,g);case 4:case 6:case 7:var d=(m.length-2)/2;var k=m.substr(2,d);var f=m.substr(d+2,d);return new ECPointFp(this,this.fromBigInteger(new BigInteger(k,16)),this.fromBigInteger(new BigInteger(f,16)));default:return null}}ECCurveFp.prototype.getQ=curveFpGetQ;ECCurveFp.prototype.getA=curveFpGetA;ECCurveFp.prototype.getB=curveFpGetB;ECCurveFp.prototype.equals=curveFpEquals;ECCurveFp.prototype.getInfinity=curveFpGetInfinity;ECCurveFp.prototype.fromBigInteger=curveFpFromBigInteger;ECCurveFp.prototype.decodePointHex=curveFpDecodePointHex;\n/*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib\n */\nECFieldElementFp.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)};ECPointFp.prototype.getEncoded=function(c){var d=function(h,f){var g=h.toByteArrayUnsigned();if(fg.length){g.unshift(0)}}return g};var a=this.getX().toBigInteger();var e=this.getY().toBigInteger();var b=d(a,32);if(c){if(e.isEven()){b.unshift(2)}else{b.unshift(3)}}else{b.unshift(4);b=b.concat(d(e,32))}return b};ECPointFp.decodeFrom=function(g,c){var f=c[0];var e=c.length-1;var d=c.slice(1,1+e/2);var b=c.slice(1+e/2,1+e);d.unshift(0);b.unshift(0);var a=new BigInteger(d);var h=new BigInteger(b);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.decodeFromHex=function(g,c){var f=c.substr(0,2);var e=c.length-2;var d=c.substr(2,e/2);var b=c.substr(2+e/2,e/2);var a=new BigInteger(d,16);var h=new BigInteger(b,16);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.prototype.add2D=function(c){if(this.isInfinity()){return c}if(c.isInfinity()){return this}if(this.x.equals(c.x)){if(this.y.equals(c.y)){return this.twice()}return this.curve.getInfinity()}var g=c.x.subtract(this.x);var e=c.y.subtract(this.y);var a=e.divide(g);var d=a.square().subtract(this.x).subtract(c.x);var f=a.multiply(this.x.subtract(d)).subtract(this.y);return new ECPointFp(this.curve,d,f)};ECPointFp.prototype.twice2D=function(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var b=this.curve.fromBigInteger(BigInteger.valueOf(2));var e=this.curve.fromBigInteger(BigInteger.valueOf(3));var a=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(b));var c=a.square().subtract(this.x.multiply(b));var d=a.multiply(this.x.subtract(c)).subtract(this.y);return new ECPointFp(this.curve,c,d)};ECPointFp.prototype.multiply2D=function(b){if(this.isInfinity()){return this}if(b.signum()==0){return this.curve.getInfinity()}var g=b;var f=g.multiply(new BigInteger(\"3\"));var l=this.negate();var d=this;var c;for(c=f.bitLength()-2;c>0;--c){d=d.twice();var a=f.testBit(c);var j=g.testBit(c);if(a!=j){d=d.add2D(a?this:l)}}return d};ECPointFp.prototype.isOnCurve=function(){var d=this.getX().toBigInteger();var i=this.getY().toBigInteger();var f=this.curve.getA().toBigInteger();var c=this.curve.getB().toBigInteger();var h=this.curve.getQ();var e=i.multiply(i).mod(h);var g=d.multiply(d).multiply(d).add(f.multiply(d)).add(c).mod(h);return e.equals(g)};ECPointFp.prototype.toString=function(){return\"(\"+this.getX().toBigInteger().toString()+\",\"+this.getY().toBigInteger().toString()+\")\"};ECPointFp.prototype.validate=function(){var c=this.curve.getQ();if(this.isInfinity()){throw new Error(\"Point is at infinity.\")}var a=this.getX().toBigInteger();var b=this.getY().toBigInteger();if(a.compareTo(BigInteger.ONE)<0||a.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error(\"x coordinate out of bounds\")}if(b.compareTo(BigInteger.ONE)<0||b.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error(\"y coordinate out of bounds\")}if(!this.isOnCurve()){throw new Error(\"Point is not on the curve.\")}if(this.multiply(c).isInfinity()){throw new Error(\"Point is not a scalar multiple of G.\")}return true};\n/*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval\n */\nvar jsonParse=(function(){var e=\"(?:-?\\\\b(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\\\b)\";var j='(?:[^\\\\0-\\\\x08\\\\x0a-\\\\x1f\"\\\\\\\\]|\\\\\\\\(?:[\"/\\\\\\\\bfnrt]|u[0-9A-Fa-f]{4}))';var i='(?:\"'+j+'*\")';var d=new RegExp(\"(?:false|true|null|[\\\\{\\\\}\\\\[\\\\]]|\"+e+\"|\"+i+\")\",\"g\");var k=new RegExp(\"\\\\\\\\(?:([^u])|u(.{4}))\",\"g\");var g={'\"':'\"',\"/\":\"/\",\"\\\\\":\"\\\\\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"};function h(l,m,n){return m?g[m]:String.fromCharCode(parseInt(n,16))}var c=new String(\"\");var a=\"\\\\\";var f={\"{\":Object,\"[\":Array};var b=Object.hasOwnProperty;return function(u,q){var p=u.match(d);var x;var v=p[0];var l=false;if(\"{\"===v){x={}}else{if(\"[\"===v){x=[]}else{x=[];l=true}}var t;var r=[x];for(var o=1-l,m=p.length;o=0;){delete D[n[A]]}}}return q.call(C,B,D)};x=s({\"\":x},\"\")}return x}})();\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.asn1==\"undefined\"||!KJUR.asn1){KJUR.asn1={}}KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(a){var b=a.toString(16);if((b.length%2)==1){b=\"0\"+b}return b};this.bigIntToMinTwosComplementsHex=function(j){var f=j.toString(16);if(f.substr(0,1)!=\"-\"){if(f.length%2==1){f=\"0\"+f}else{if(!f.match(/^[0-7]/)){f=\"00\"+f}}}else{var a=f.substr(1);var e=a.length;if(e%2==1){e+=1}else{if(!f.match(/^[0-7]/)){e+=2}}var g=\"\";for(var d=0;d15){throw new Error(\"ASN.1 length too long to represent by 8x: n = \"+j.toString(16))}var g=128+h;return g.toString(16)+i}};this.tohex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false}return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.getValueHex=function(){this.tohex();return this.hV};this.getFreshValueHex=function(){return\"\"};this.setByParam=function(g){this.params=g};if(e!=undefined){if(e.tlv!=undefined){this.hTLV=e.tlv;this.isModified=false}}};KJUR.asn1.DERAbstractString=function(c){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var b=null;var a=null;this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=utf8tohex(this.s).toLowerCase()};this.setStringHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.getFreshValueHex=function(){return this.hV};if(typeof c!=\"undefined\"){if(typeof c==\"string\"){this.setString(c)}else{if(typeof c.str!=\"undefined\"){this.setString(c.str)}else{if(typeof c.hex!=\"undefined\"){this.setStringHex(c.hex)}}}}};extendClass(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(c){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);var b=null;var a=null;this.localDateToUTC=function(g){var e=g.getTime()+(g.getTimezoneOffset()*60000);var f=new Date(e);return f};this.formatDate=function(m,o,e){var g=this.zeroPadding;var n=this.localDateToUTC(m);var p=String(n.getFullYear());if(o==\"utc\"){p=p.substr(2,2)}var l=g(String(n.getMonth()+1),2);var q=g(String(n.getDate()),2);var h=g(String(n.getHours()),2);var i=g(String(n.getMinutes()),2);var j=g(String(n.getSeconds()),2);var r=p+l+q+h+i+j;if(e===true){var f=n.getMilliseconds();if(f!=0){var k=g(String(f),3);k=k.replace(/[0]+$/,\"\");r=r+\".\"+k}}return r+\"Z\"};this.zeroPadding=function(e,d){if(e.length>=d){return e}return new Array(d-e.length+1).join(\"0\")+e};this.setByParam=function(d){this.hV=null;this.hTLV=null;this.params=d};this.getString=function(){return undefined};this.setString=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.str=d};this.setByDate=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.date=d};this.setByDateValue=function(h,j,e,d,f,g){var i=new Date(Date.UTC(h,j-1,e,d,f,g,0));this.setByDate(i)};this.getFreshValueHex=function(){return this.hV}};extendClass(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(b){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var a=null;this.setByASN1ObjectArray=function(c){this.hTLV=null;this.isModified=true;this.asn1Array=c};this.appendASN1Object=function(c){this.hTLV=null;this.isModified=true;this.asn1Array.push(c)};this.asn1Array=new Array();if(typeof b!=\"undefined\"){if(typeof b.array!=\"undefined\"){this.asn1Array=b.array}}};extendClass(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(a){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT=\"01\";if(a==false){this.hTLV=\"010100\"}else{this.hTLV=\"0101ff\"}};extendClass(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(b){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT=\"02\";this.params=null;var a=KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex;this.setByBigInteger=function(c){this.isModified=true;this.params={bigint:c}};this.setByInteger=function(c){this.isModified=true;this.params=c};this.setValueHex=function(c){this.isModified=true;this.params={hex:c}};this.getFreshValueHex=function(){var d=this.params;var c=null;if(d==null){throw new Error(\"value not set\")}if(typeof d==\"object\"&&d.hex!=undefined){this.hV=d.hex;return this.hV}if(typeof d==\"number\"){c=new BigInteger(String(d),10)}else{if(d[\"int\"]!=undefined){c=new BigInteger(String(d[\"int\"]),10)}else{if(d.bigint!=undefined){c=d.bigint}else{throw new Error(\"wrong parameter\")}}}this.hV=a(c);return this.hV};if(b!=undefined){this.params=b}};extendClass(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(b){if(b!==undefined&&typeof b.obj!==\"undefined\"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex=\"00\"+a.tohex()}KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT=\"03\";this.setHexValueIncludingUnusedBits=function(c){this.hTLV=null;this.isModified=true;this.hV=c};this.setUnusedBitsAndHexValue=function(c,e){if(c<0||7=f){break}}return j};ASN1HEX.getNthChildIdx=function(d,b,e){var c=ASN1HEX.getChildIdx(d,b);return c[e]};ASN1HEX.getIdxbyList=function(e,d,c,i){var g=ASN1HEX;var f,b;if(c.length==0){if(i!==undefined){if(e.substr(d,2)!==i){return -1}}return d}f=c.shift();b=g.getChildIdx(e,d);if(f>=b.length){return -1}return g.getIdxbyList(e,b[f],c,i)};ASN1HEX.getIdxbyListEx=function(f,k,b,g){var m=ASN1HEX;var d,l;if(b.length==0){if(g!==undefined){if(f.substr(k,2)!==g){return -1}}return k}d=b.shift();l=m.getChildIdx(f,k);var j=0;for(var e=0;e=d.length){return null}return e.getTLV(d,a)};ASN1HEX.getTLVbyListEx=function(d,c,b,f){var e=ASN1HEX;var a=e.getIdxbyListEx(d,c,b,f);if(a==-1){return null}return e.getTLV(d,a)};ASN1HEX.getVbyList=function(e,c,b,g,i){var f=ASN1HEX;var a,d;a=f.getIdxbyList(e,c,b,g);if(a==-1){return null}if(a>=e.length){return null}d=f.getV(e,a);if(i===true){d=d.substr(2)}return d};ASN1HEX.getVbyListEx=function(b,e,a,d,f){var j=ASN1HEX;var g,c,i;g=j.getIdxbyListEx(b,e,a,d);if(g==-1){return null}i=j.getV(b,g);if(b.substr(g,2)==\"03\"&&f!==false){i=i.substr(2)}return i};ASN1HEX.getInt=function(e,b,f){if(f==undefined){f=-1}try{var c=e.substr(b,2);if(c!=\"02\"&&c!=\"03\"){return f}var a=ASN1HEX.getV(e,b);if(c==\"02\"){return parseInt(a,16)}else{return bitstrtoint(a)}}catch(d){return f}};ASN1HEX.getOID=function(c,a,d){if(d==undefined){d=null}try{if(c.substr(a,2)!=\"06\"){return d}var e=ASN1HEX.getV(c,a);return hextooid(e)}catch(b){return d}};ASN1HEX.getOIDName=function(d,a,f){if(f==undefined){f=null}try{var e=ASN1HEX.getOID(d,a,f);if(e==f){return f}var b=KJUR.asn1.x509.OID.oid2name(e);if(b==\"\"){return e}return b}catch(c){return f}};ASN1HEX.getString=function(d,b,e){if(e==undefined){e=null}try{var a=ASN1HEX.getV(d,b);return hextorstr(a)}catch(c){return e}};ASN1HEX.hextooidstr=function(e){var h=function(b,a){if(b.length>=a){return b}return new Array(a-b.length+1).join(\"0\")+b};var l=[];var o=e.substr(0,2);var f=parseInt(o,16);l[0]=new String(Math.floor(f/40));l[1]=new String(f%40);var m=e.substr(2);var k=[];for(var g=0;g0){n=n+\".\"+j.join(\".\")}return n};ASN1HEX.dump=function(t,c,l,g){var p=ASN1HEX;var j=p.getV;var y=p.dump;var w=p.getChildIdx;var e=t;if(t instanceof KJUR.asn1.ASN1Object){e=t.tohex()}var q=function(A,i){if(A.length<=i*2){return A}else{var v=A.substr(0,i)+\"..(total \"+A.length/2+\"bytes)..\"+A.substr(A.length-i,i);return v}};if(c===undefined){c={ommit_long_octet:32}}if(l===undefined){l=0}if(g===undefined){g=\"\"}var x=c.ommit_long_octet;var z=e.substr(l,2);if(z==\"01\"){var h=j(e,l);if(h==\"00\"){return g+\"BOOLEAN FALSE\\n\"}else{return g+\"BOOLEAN TRUE\\n\"}}if(z==\"02\"){var h=j(e,l);return g+\"INTEGER \"+q(h,x)+\"\\n\"}if(z==\"03\"){var h=j(e,l);if(p.isASN1HEX(h.substr(2))){var k=g+\"BITSTRING, encapsulates\\n\";k=k+y(h.substr(2),c,0,g+\" \");return k}else{return g+\"BITSTRING \"+q(h,x)+\"\\n\"}}if(z==\"04\"){var h=j(e,l);if(p.isASN1HEX(h)){var k=g+\"OCTETSTRING, encapsulates\\n\";k=k+y(h,c,0,g+\" \");return k}else{return g+\"OCTETSTRING \"+q(h,x)+\"\\n\"}}if(z==\"05\"){return g+\"NULL\\n\"}if(z==\"06\"){var m=j(e,l);var b=KJUR.asn1.ASN1Util.oidHexToInt(m);var o=KJUR.asn1.x509.OID.oid2name(b);var a=b.replace(/\\./g,\" \");if(o!=\"\"){return g+\"ObjectIdentifier \"+o+\" (\"+a+\")\\n\"}else{return g+\"ObjectIdentifier (\"+a+\")\\n\"}}if(z==\"0a\"){return g+\"ENUMERATED \"+parseInt(j(e,l))+\"\\n\"}if(z==\"0c\"){return g+\"UTF8String '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"13\"){return g+\"PrintableString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"14\"){return g+\"TeletexString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"16\"){return g+\"IA5String '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"17\"){return g+\"UTCTime \"+hextoutf8(j(e,l))+\"\\n\"}if(z==\"18\"){return g+\"GeneralizedTime \"+hextoutf8(j(e,l))+\"\\n\"}if(z==\"1a\"){return g+\"VisualString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"1e\"){return g+\"BMPString '\"+ucs2hextoutf8(j(e,l))+\"'\\n\"}if(z==\"30\"){if(e.substr(l,4)==\"3000\"){return g+\"SEQUENCE {}\\n\"}var k=g+\"SEQUENCE\\n\";var d=w(e,l);var f=c;if((d.length==2||d.length==3)&&e.substr(d[0],2)==\"06\"&&e.substr(d[d.length-1],2)==\"04\"){var o=p.oidname(j(e,d[0]));var r=JSON.parse(JSON.stringify(c));r.x509ExtName=o;f=r}for(var u=0;u4){return{\"enum\":{hex:p}}}else{return{\"enum\":parseInt(p,16)}}}else{if(C==\"30\"||C==\"31\"){j[c[C]]=u(x);return j}else{if(C==\"14\"){var o=q(p);j[c[C]]={str:o};return j}else{if(C==\"1e\"){var o=n(p);j[c[C]]={str:o};return j}else{if(\":0c:12:13:16:17:18:1a:\".indexOf(C)!=-1){var o=k(p);j[c[C]]={str:o};return j}else{if(C.match(/^8[0-9]$/)){var o=k(p);if(o==null|o==\"\"){return{tag:{tag:C,explicit:false,hex:p}}}else{if(o.match(/[\\x00-\\x1F\\x7F-\\x9F]/)!=null||o.match(/[\\u0000-\\u001F\\u0080–\\u009F]/)!=null){return{tag:{tag:C,explicit:false,hex:p}}}else{return{tag:{tag:C,explicit:false,str:o}}}}}else{if(C.match(/^a[0-9]$/)){try{if(!a(p)){throw new Error(\"not encap\")}return{tag:{tag:C,explicit:true,obj:f(p)}}}catch(z){return{tag:{tag:C,explicit:true,hex:p}}}}else{var A=new KJUR.asn1.ASN1Object();A.hV=p;var w=A.getLengthHexFromValue();return{asn1:{tlv:C+w+p}}}}}}}}}}}}}}}};ASN1HEX.isContextTag=function(c,b){c=c.toLowerCase();var f,e;try{f=parseInt(c,16)}catch(d){return -1}if(b===undefined){if((f&192)==128){return true}else{return false}}try{var a=b.match(/^\\[[0-9]+\\]$/);if(a==null){return false}e=parseInt(b.substr(1,b.length-1),10);if(e>31){return false}if(((f&192)==128)&&((f&31)==e)){return true}return false}catch(d){return false}};ASN1HEX.isASN1HEX=function(e){var d=ASN1HEX;if(e.length%2==1){return false}var c=d.getVblen(e,0);var b=e.substr(0,2);var f=d.getL(e,0);var a=e.length-b.length-f.length;if(a==c*2){return true}return false};ASN1HEX.checkStrictDER=function(g,o,d,c,r){var s=ASN1HEX;if(d===undefined){if(typeof g!=\"string\"){throw new Error(\"not hex string\")}g=g.toLowerCase();if(!KJUR.lang.String.isHex(g)){throw new Error(\"not hex string\")}d=g.length;c=g.length/2;if(c<128){r=1}else{r=Math.ceil(c.toString(16))+1}}var k=s.getL(g,o);if(k.length>r*2){throw new Error(\"L of TLV too long: idx=\"+o)}var n=s.getVblen(g,o);if(n>c){throw new Error(\"value of L too long than hex: idx=\"+o)}var q=s.getTLV(g,o);var f=q.length-2-s.getL(g,o).length;if(f!==(n*2)){throw new Error(\"V string length and L's value not the same:\"+f+\"/\"+(n*2))}if(o===0){if(g.length!=q.length){throw new Error(\"total length and TLV length unmatch:\"+g.length+\"!=\"+q.length)}}var b=g.substr(o,2);if(b===\"02\"){var a=s.getVidx(g,o);if(g.substr(a,2)==\"00\"&&g.charCodeAt(a+2)<56){throw new Error(\"not least zeros for DER INTEGER\")}}if(parseInt(b,16)&32){var p=s.getVblen(g,o);var m=0;var l=s.getChildIdx(g,o);for(var e=0;e0){n.push(new c({tag:\"a3\",obj:new j(q.ext)}))}var o=new KJUR.asn1.DERSequence({array:n});return o.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.TBSCertificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Extensions=function(d){KJUR.asn1.x509.Extensions.superclass.constructor.call(this);var c=KJUR,b=c.asn1,a=b.DERSequence,e=b.x509;this.aParam=[];this.setByParam=function(f){this.aParam=f};this.tohex=function(){var f=[];for(var h=0;h-1){i.push(new f({\"int\":this.pathLen}))}var h=new b({array:i});this.asn1ExtnValue=h;return this.asn1ExtnValue.tohex()};this.oid=\"2.5.29.19\";this.cA=false;this.pathLen=-1;if(g!==undefined){if(g.cA!==undefined){this.cA=g.cA}if(g.pathLen!==undefined){this.pathLen=g.pathLen}}};extendClass(KJUR.asn1.x509.BasicConstraints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.CRLDistributionPoints=function(d){KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,d);var b=KJUR,a=b.asn1,c=a.x509;this.getExtnValueHex=function(){return this.asn1ExtnValue.tohex()};this.setByDPArray=function(e){var f=[];for(var g=0;g0){f.push(new b({array:j}))}}var g=new b({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(d!==undefined){this.params=d}};extendClass(KJUR.asn1.x509.PolicyInformation,KJUR.asn1.ASN1Object);KJUR.asn1.x509.PolicyQualifierInfo=function(e){KJUR.asn1.x509.PolicyQualifierInfo.superclass.constructor.call(this,e);var c=KJUR.asn1,b=c.DERSequence,d=c.DERIA5String,f=c.DERObjectIdentifier,a=c.x509.UserNotice;this.params=null;this.tohex=function(){if(this.params.cps!==undefined){var g=new b({array:[new f({oid:\"1.3.6.1.5.5.7.2.1\"}),new d({str:this.params.cps})]});return g.tohex()}if(this.params.unotice!=undefined){var g=new b({array:[new f({oid:\"1.3.6.1.5.5.7.2.2\"}),new a(this.params.unotice)]});return g.tohex()}};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.PolicyQualifierInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.UserNotice=function(e){KJUR.asn1.x509.UserNotice.superclass.constructor.call(this,e);var a=KJUR.asn1.DERSequence,d=KJUR.asn1.DERInteger,c=KJUR.asn1.x509.DisplayText,b=KJUR.asn1.x509.NoticeReference;this.params=null;this.tohex=function(){var f=[];if(this.params.noticeref!==undefined){f.push(new b(this.params.noticeref))}if(this.params.exptext!==undefined){f.push(new c(this.params.exptext))}var g=new a({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.UserNotice,KJUR.asn1.ASN1Object);KJUR.asn1.x509.NoticeReference=function(d){KJUR.asn1.x509.NoticeReference.superclass.constructor.call(this,d);var a=KJUR.asn1.DERSequence,c=KJUR.asn1.DERInteger,b=KJUR.asn1.x509.DisplayText;this.params=null;this.tohex=function(){var f=[];if(this.params.org!==undefined){f.push(new b(this.params.org))}if(this.params.noticenum!==undefined){var h=[];var e=this.params.noticenum;for(var j=0;j0){for(var g=0;g0;f++){var h=c.shift();if(e===true){var d=b.pop();var j=(d+\",\"+h).replace(/\\\\,/g,\",\");b.push(j);e=false}else{b.push(h)}if(h.substr(-1,1)===\"\\\\\"){e=true}}b=b.map(function(a){return a.replace(\"/\",\"\\\\/\")});b.reverse();return\"/\"+b.join(\"/\")};KJUR.asn1.x509.X500Name.ldapToOneline=function(a){return KJUR.asn1.x509.X500Name.ldapToCompat(a)};KJUR.asn1.x509.RDN=function(b){KJUR.asn1.x509.RDN.superclass.constructor.call(this);this.asn1Array=[];this.paramArray=[];this.sRule=\"utf8\";var a=KJUR.asn1.x509.AttributeTypeAndValue;this.setByParam=function(c){if(c.rule!==undefined){this.sRule=c.rule}if(c.str!==undefined){this.addByMultiValuedString(c.str)}if(c.array!==undefined){this.paramArray=c.array}};this.addByString=function(c){this.asn1Array.push(new KJUR.asn1.x509.AttributeTypeAndValue({str:c,rule:this.sRule}))};this.addByMultiValuedString=function(e){var c=KJUR.asn1.x509.RDN.parseString(e);for(var d=0;d0){for(var d=0;d0;g++){var k=j.shift();if(h===true){var f=c.pop();var d=(f+\"+\"+k).replace(/\\\\\\+/g,\"+\");c.push(d);h=false}else{c.push(k)}if(k.substr(-1,1)===\"\\\\\"){h=true}}var l=false;var b=[];for(var g=0;c.length>0;g++){var k=c.shift();if(l===true){var e=b.pop();if(k.match(/\"$/)){var d=(e+\"+\"+k).replace(/^([^=]+)=\"(.*)\"$/,\"$1=$2\");b.push(d);l=false}else{b.push(e+\"+\"+k)}}else{b.push(k)}if(k.match(/^[^=]+=\"/)){l=true}}return b};KJUR.asn1.x509.AttributeTypeAndValue=function(c){KJUR.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this);this.sRule=\"utf8\";this.sType=null;this.sValue=null;this.dsType=null;var a=KJUR,g=a.asn1,d=g.DERSequence,l=g.DERUTF8String,i=g.DERPrintableString,h=g.DERTeletexString,b=g.DERIA5String,e=g.DERVisibleString,k=g.DERBMPString,f=a.lang.String.isMail,j=a.lang.String.isPrintable;this.setByParam=function(o){if(o.rule!==undefined){this.sRule=o.rule}if(o.ds!==undefined){this.dsType=o.ds}if(o.value===undefined&&o.str!==undefined){var n=o.str;var m=n.match(/^([^=]+)=(.+)$/);if(m){this.sType=m[1];this.sValue=m[2]}else{throw new Error(\"malformed attrTypeAndValueStr: \"+attrTypeAndValueStr)}}else{this.sType=o.type;this.sValue=o.value}};this.setByString=function(n,o){if(o!==undefined){this.sRule=o}var m=n.match(/^([^=]+)=(.+)$/);if(m){this.setByAttrTypeAndValueStr(m[1],m[2])}else{throw new Error(\"malformed attrTypeAndValueStr: \"+attrTypeAndValueStr)}};this._getDsType=function(){var o=this.sType;var n=this.sValue;var m=this.sRule;if(m===\"prn\"){if(o==\"CN\"&&f(n)){return\"ia5\"}if(j(n)){return\"prn\"}return\"utf8\"}else{if(m===\"utf8\"){if(o==\"CN\"&&f(n)){return\"ia5\"}if(o==\"C\"){return\"prn\"}return\"utf8\"}}return\"utf8\"};this.setByAttrTypeAndValueStr=function(o,n,m){if(m!==undefined){this.sRule=m}this.sType=o;this.sValue=n};this.getValueObj=function(n,m){if(n==\"utf8\"){return new l({str:m})}if(n==\"prn\"){return new i({str:m})}if(n==\"tel\"){return new h({str:m})}if(n==\"ia5\"){return new b({str:m})}if(n==\"vis\"){return new e({str:m})}if(n==\"bmp\"){return new k({str:m})}throw new Error(\"unsupported directory string type: type=\"+n+\" value=\"+m)};this.tohex=function(){if(this.dsType==null){this.dsType=this._getDsType()}var n=KJUR.asn1.x509.OID.atype2obj(this.sType);var m=this.getValueObj(this.dsType,this.sValue);var p=new d({array:[n,m]});this.TLV=p.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(c!==undefined){this.setByParam(c)}};extendClass(KJUR.asn1.x509.AttributeTypeAndValue,KJUR.asn1.ASN1Object);KJUR.asn1.x509.SubjectPublicKeyInfo=function(f){KJUR.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);var l=null,k=null,a=KJUR,j=a.asn1,i=j.DERInteger,b=j.DERBitString,m=j.DERObjectIdentifier,e=j.DERSequence,h=j.ASN1Util.newObject,d=j.x509,o=d.AlgorithmIdentifier,g=a.crypto,n=g.ECDSA,c=g.DSA;this.getASN1Object=function(){if(this.asn1AlgId==null||this.asn1SubjPKey==null){throw\"algId and/or subjPubKey not set\"}var p=new e({array:[this.asn1AlgId,this.asn1SubjPKey]});return p};this.tohex=function(){var p=this.getASN1Object();this.hTLV=p.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.setPubKey=function(q){try{if(q instanceof RSAKey){var u=h({seq:[{\"int\":{bigint:q.n}},{\"int\":{\"int\":q.e}}]});var s=u.tohex();this.asn1AlgId=new o({name:\"rsaEncryption\"});this.asn1SubjPKey=new b({hex:\"00\"+s})}}catch(p){}try{if(q instanceof KJUR.crypto.ECDSA){var r=new m({name:q.curveName});this.asn1AlgId=new o({name:\"ecPublicKey\",asn1params:r});this.asn1SubjPKey=new b({hex:\"00\"+q.pubKeyHex})}}catch(p){}try{if(q instanceof KJUR.crypto.DSA){var r=new h({seq:[{\"int\":{bigint:q.p}},{\"int\":{bigint:q.q}},{\"int\":{bigint:q.g}}]});this.asn1AlgId=new o({name:\"dsa\",asn1params:r});var t=new i({bigint:q.y});this.asn1SubjPKey=new b({hex:\"00\"+t.tohex()})}}catch(p){}};if(f!==undefined){this.setPubKey(f)}};extendClass(KJUR.asn1.x509.SubjectPublicKeyInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Time=function(f){KJUR.asn1.x509.Time.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.params=null;this.type=null;this.setTimeParams=function(h){this.timeParams=h};this.setByParam=function(h){this.params=h};this.getType=function(h){if(h.match(/^[0-9]{12}Z$/)){return\"utc\"}if(h.match(/^[0-9]{14}Z$/)){return\"gen\"}if(h.match(/^[0-9]{12}\\.[0-9]+Z$/)){return\"utc\"}if(h.match(/^[0-9]{14}\\.[0-9]+Z$/)){return\"gen\"}return null};this.tohex=function(){var i=this.params;var h=null;if(typeof i==\"string\"){i={str:i}}if(i!=null&&i.str&&(i.type==null||i.type==undefined)){i.type=this.getType(i.str)}if(i!=null&&i.str){if(i.type==\"utc\"){h=new b(i.str)}if(i.type==\"gen\"){h=new g(i.str)}}else{if(this.type==\"gen\"){h=new g()}else{h=new b()}}if(h==null){throw new Error(\"wrong setting for Time\")}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(f!=undefined){this.setByParam(f)}};KJUR.asn1.x509.Time_bak=function(f){KJUR.asn1.x509.Time_bak.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.setTimeParams=function(h){this.timeParams=h};this.tohex=function(){var h=null;if(this.timeParams!=null){if(this.type==\"utc\"){h=new b(this.timeParams)}else{h=new g(this.timeParams)}}else{if(this.type==\"utc\"){h=new b()}else{h=new g()}}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};this.type=\"utc\";if(f!==undefined){if(f.type!==undefined){this.type=f.type}else{if(f.str!==undefined){if(f.str.match(/^[0-9]{12}Z$/)){this.type=\"utc\"}if(f.str.match(/^[0-9]{14}Z$/)){this.type=\"gen\"}}}this.timeParams=f}};extendClass(KJUR.asn1.x509.Time,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier=function(e){KJUR.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this);this.nameAlg=null;this.asn1Alg=null;this.asn1Params=null;this.paramEmpty=false;var b=KJUR,a=b.asn1,c=a.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;this.tohex=function(){if(this.nameAlg===null&&this.asn1Alg===null){throw new Error(\"algorithm not specified\")}if(this.nameAlg!==null){var f=null;for(var h in c){if(h===this.nameAlg){f=c[h]}}if(f!==null){this.hTLV=f;return this.hTLV}}if(this.nameAlg!==null&&this.asn1Alg===null){this.asn1Alg=a.x509.OID.name2obj(this.nameAlg)}var g=[this.asn1Alg];if(this.asn1Params!==null){g.push(this.asn1Params)}var i=new a.DERSequence({array:g});this.hTLV=i.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){if(e.name!==undefined){this.nameAlg=e.name}if(e.asn1params!==undefined){this.asn1Params=e.asn1params}if(e.paramempty!==undefined){this.paramEmpty=e.paramempty}}if(this.asn1Params===null&&this.paramEmpty===false&&this.nameAlg!==null){if(this.nameAlg.name!==undefined){this.nameAlg=this.nameAlg.name}var d=this.nameAlg.toLowerCase();if(d.substr(-7,7)!==\"withdsa\"&&d.substr(-9,9)!==\"withecdsa\"){this.asn1Params=new a.DERNull()}}};extendClass(KJUR.asn1.x509.AlgorithmIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV={SHAwithRSAandMGF1:\"300d06092a864886f70d01010a3000\",SHA256withRSAandMGF1:\"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120\",SHA384withRSAandMGF1:\"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130\",SHA512withRSAandMGF1:\"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140\"};KJUR.asn1.x509.GeneralName=function(f){KJUR.asn1.x509.GeneralName.superclass.constructor.call(this);var l={rfc822:\"81\",dns:\"82\",dn:\"a4\",uri:\"86\",ip:\"87\",otherName:\"a0\"},b=KJUR,h=b.asn1,d=h.x509,a=d.X500Name,g=d.OtherName,e=h.DERIA5String,i=h.DERPrintableString,k=h.DEROctetString,c=h.DERTaggedObject,m=h.ASN1Object,j=Error;this.params=null;this.setByParam=function(n){this.params=n};this.tohex=function(){var p=this.params;var A,y,q;var y=false;if(p.other!==undefined){A=\"a0\",q=new g(p.other)}else{if(p.rfc822!==undefined){A=\"81\";q=new e({str:p.rfc822})}else{if(p.dns!==undefined){A=\"82\";q=new e({str:p.dns})}else{if(p.dn!==undefined){A=\"a4\";y=true;if(typeof p.dn===\"string\"){q=new a({str:p.dn})}else{if(p.dn instanceof KJUR.asn1.x509.X500Name){q=p.dn}else{q=new a(p.dn)}}}else{if(p.ldapdn!==undefined){A=\"a4\";y=true;q=new a({ldapstr:p.ldapdn})}else{if(p.certissuer!==undefined||p.certsubj!==undefined){A=\"a4\";y=true;var n,o;var z=null;if(p.certsubj!==undefined){n=false;o=p.certsubj}else{n=true;o=p.certissuer}if(o.match(/^[0-9A-Fa-f]+$/)){z==o}if(o.indexOf(\"-----BEGIN \")!=-1){z=pemtohex(o)}if(z==null){throw new Error(\"certsubj/certissuer not cert\")}var w=new X509();w.hex=z;var s;if(n){s=w.getIssuerHex()}else{s=w.getSubjectHex()}q=new m();q.hTLV=s}else{if(p.uri!==undefined){A=\"86\";q=new e({str:p.uri})}else{if(p.ip!==undefined){A=\"87\";var v;var t=p.ip;try{if(t.match(/^[0-9a-f]+$/)){var r=t.length;if(r==8||r==16||r==32||r==64){v=t}else{throw\"err\"}}else{v=iptohex(t)}}catch(u){throw new j(\"malformed IP address: \"+p.ip+\":\"+u.message)}q=new k({hex:v})}else{throw new j(\"improper params\")}}}}}}}}var B=new c({tag:A,explicit:y,obj:q});return B.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.GeneralName,KJUR.asn1.ASN1Object);KJUR.asn1.x509.GeneralNames=function(d){KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);var a=null,c=KJUR,b=c.asn1;this.setByParamArray=function(g){for(var e=0;e0){var m=b(n.valhex,q[0]);var p=j(m,0);var t=[];for(var o=0;o1){var r=b(n.valhex,q[1]);n.polhex=r}delete n.valhex};this.setSignaturePolicyIdentifier=function(s){var q=j(s.valhex,0);if(q.length>0){var r=l.getOID(s.valhex,q[0]);s.oid=r}if(q.length>1){var m=new a();var t=j(s.valhex,q[1]);var p=b(s.valhex,t[0]);var o=m.getAlgorithmIdentifierName(p);s.alg=o;var n=i(s.valhex,t[1]);s.hash=n}delete s.valhex};this.setSigningCertificateV2=function(o){var s=j(o.valhex,0);if(s.length>0){var n=b(o.valhex,s[0]);var r=j(n,0);var u=[];for(var q=0;q1){var t=b(o.valhex,s[1]);o.polhex=t}delete o.valhex};this.getESSCertID=function(o){var p={};var n=j(o,0);if(n.length>0){var q=i(o,n[0]);p.hash=q}if(n.length>1){var m=b(o,n[1]);var r=this.getIssuerSerial(m);if(r.serial!=undefined){p.serial=r.serial}if(r.issuer!=undefined){p.issuer=r.issuer}}return p};this.getESSCertIDv2=function(q){var s={};var p=j(q,0);if(p.length<1||3r+1){var m=b(q,p[r+1]);var t=this.getIssuerSerial(m);s.issuer=t.issuer;s.serial=t.serial}return s};this.getIssuerSerial=function(q){var r={};var n=j(q,0);var m=b(q,n[0]);var p=h.getGeneralNames(m);var o=p[0].dn;r.issuer=o;var s=i(q,n[1]);r.serial={hex:s};return r};this.getCertificateSet=function(p){var n=j(p,0);var m=[];for(var o=0;o=0;j--){l+=k[j]}return l}else{if(typeof n==\"string\"&&a[n]!=undefined){return namearraytobinstr([n],a)}else{if(typeof n==\"object\"&&n.length!=undefined){return namearraytobinstr(n,a)}else{throw new f(\"wrong params\")}}}return};this.tohex=function(){var j=this.params;var i=this.getBinValue();return(new g({bin:i})).tohex()};this.getEncodedHex=function(){return this.tohex()};if(h!=undefined){this.setByParam(h)}};extendClass(KJUR.asn1.tsp.PKIFailureInfo,KJUR.asn1.ASN1Object);KJUR.asn1.tsp.AbstractTSAAdapter=function(a){this.getTSTHex=function(c,b){throw\"not implemented yet\"}};KJUR.asn1.tsp.SimpleTSAAdapter=function(e){var d=KJUR,c=d.asn1,a=c.tsp,b=d.crypto.Util.hashHex;a.SimpleTSAAdapter.superclass.constructor.call(this);this.params=null;this.serial=0;this.getTSTHex=function(g,f){var i=b(g,f);this.params.econtent.content.messageImprint={alg:f,hash:i};this.params.econtent.content.serial={\"int\":this.serial++};var h=Math.floor(Math.random()*1000000000);this.params.econtent.content.nonce={\"int\":h};var j=new a.TimeStampToken(this.params);return j.getContentInfoEncodedHex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.tsp.SimpleTSAAdapter,KJUR.asn1.tsp.AbstractTSAAdapter);KJUR.asn1.tsp.FixedTSAAdapter=function(e){var d=KJUR,c=d.asn1,a=c.tsp,b=d.crypto.Util.hashHex;a.FixedTSAAdapter.superclass.constructor.call(this);this.params=null;this.getTSTHex=function(g,f){var h=b(g,f);this.params.econtent.content.messageImprint={alg:f,hash:h};var i=new a.TimeStampToken(this.params);return i.getContentInfoEncodedHex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.tsp.FixedTSAAdapter,KJUR.asn1.tsp.AbstractTSAAdapter);KJUR.asn1.tsp.TSPUtil=new function(){};KJUR.asn1.tsp.TSPUtil.newTimeStampToken=function(a){return new KJUR.asn1.tsp.TimeStampToken(a)};KJUR.asn1.tsp.TSPUtil.parseTimeStampReq=function(a){var b=new KJUR.asn1.tsp.TSPParser();return b.getTimeStampReq(a)};KJUR.asn1.tsp.TSPUtil.parseMessageImprint=function(a){var b=new KJUR.asn1.tsp.TSPParser();return b.getMessageImprint(a)};KJUR.asn1.tsp.TSPParser=function(){var e=Error,a=X509,f=new a(),k=ASN1HEX,g=k.getV,b=k.getTLV,d=k.getIdxbyList,c=k.getTLVbyListEx,i=k.getChildIdx;var j=[\"granted\",\"grantedWithMods\",\"rejection\",\"waiting\",\"revocationWarning\",\"revocationNotification\"];var h={0:\"badAlg\",2:\"badRequest\",5:\"badDataFormat\",14:\"timeNotAvailable\",15:\"unacceptedPolicy\",16:\"unacceptedExtension\",17:\"addInfoNotAvailable\",25:\"systemFailure\"};this.getResponse=function(n){var l=i(n,0);if(l.length==1){return this.getPKIStatusInfo(b(n,l[0]))}else{if(l.length>1){var o=this.getPKIStatusInfo(b(n,l[0]));var m=b(n,l[1]);var p=this.getToken(m);p.statusinfo=o;return p}}};this.getToken=function(m){var l=new KJUR.asn1.cms.CMSParser;var n=l.getCMSSignedData(m);this.setTSTInfo(n);return n};this.setTSTInfo=function(l){var o=l.econtent;if(o.type==\"tstinfo\"){var n=o.content.hex;var m=this.getTSTInfo(n);o.content=m}};this.getTSTInfo=function(r){var x={};var s=i(r,0);var p=g(r,s[1]);x.policy=hextooid(p);var o=b(r,s[2]);x.messageImprint=this.getMessageImprint(o);var u=g(r,s[3]);x.serial={hex:u};var y=g(r,s[4]);x.genTime={str:hextoutf8(y)};var q=0;if(s.length>5&&r.substr(s[5],2)==\"30\"){var v=b(r,s[5]);x.accuracy=this.getAccuracy(v);q++}if(s.length>5+q&&r.substr(s[5+q],2)==\"01\"){var z=g(r,s[5+q]);if(z==\"ff\"){x.ordering=true}q++}if(s.length>5+q&&r.substr(s[5+q],2)==\"02\"){var n=g(r,s[5+q]);x.nonce={hex:n};q++}if(s.length>5+q&&r.substr(s[5+q],2)==\"a0\"){var m=b(r,s[5+q]);m=\"30\"+m.substr(2);pGeneralNames=f.getGeneralNames(m);var t=pGeneralNames[0].dn;x.tsa=t;q++}if(s.length>5+q&&r.substr(s[5+q],2)==\"a1\"){var l=b(r,s[5+q]);l=\"30\"+l.substr(2);var w=f.getExtParamArray(l);x.ext=w;q++}return x};this.getAccuracy=function(q){var r={};var o=i(q,0);for(var p=0;p1&&o.substr(r[1],2)==\"30\"){var m=b(o,r[1]);t.statusstr=this.getPKIFreeText(m);n++}if(r.length>n&&o.substr(r[1+n],2)==\"03\"){var q=b(o,r[1+n]);t.failinfo=this.getPKIFailureInfo(q)}return t};this.getPKIFreeText=function(n){var o=[];var l=i(n,0);for(var m=0;m>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join(\"\")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b=\"\";for(var c=0;c\"7\"){return\"00\"+a}return a}function intarystrtohex(b){b=b.replace(/^\\s*\\[\\s*/,\"\");b=b.replace(/\\s*\\]\\s*$/,\"\");b=b.replace(/\\s*/g,\"\");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+\".\"+k.join(\".\")}return o}catch(j){return null}}var strpad=function(c,b,a){if(a==undefined){a=\"0\"}if(c.length>=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a==\"00\"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d==\"0\"){d=\"00000000\"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!=\"number\"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad(\"\",b,\"0\");var d=parseInt(c,2).toString(16);if(d.length%2==1){d=\"0\"+d}var a=\"0\"+b;return a+d}function bitstrtobinstr(g){if(typeof g!=\"string\"){return null}if(g.length%2!=0){return null}if(!g.match(/^[0-9a-f]+$/)){return null}try{var c=parseInt(g.substr(0,2),16);if(c<0||7=0;a--){c+=b[a]}return c}function aryval(e,c,d){if(typeof e!=\"object\"){return undefined}var c=String(c).split(\".\");for(var b=0;bd){throw\"key is too short for SigAlg: keylen=\"+j+\",\"+a}var b=\"0001\";var k=\"00\"+c;var g=\"\";var l=d-b.length-k.length;for(var f=0;f=0;--u){v=v.twice2D();v.z=f.ONE;if(t.testBit(u)){if(s.testBit(u)){v=v.add2D(y)}else{v=v.add2D(x)}}else{if(s.testBit(u)){v=v.add2D(w)}}}return v}this.getBigRandom=function(r){return new f(r.bitLength(),a).mod(r.subtract(f.ONE)).add(f.ONE)};this.setNamedCurve=function(r){this.ecparams=c.getByName(r);this.prvKeyHex=null;this.pubKeyHex=null;this.curveName=r};this.setPrivateKeyHex=function(r){this.isPrivate=true;this.prvKeyHex=r};this.setPublicKeyHex=function(r){this.isPublic=true;this.pubKeyHex=r};this.getPublicKeyXYHex=function(){var t=this.pubKeyHex;if(t.substr(0,2)!==\"04\"){throw\"this method supports uncompressed format(04) only\"}var s=this.ecparams.keycharlen;if(t.length!==2+s*2){throw\"malformed public key hex length\"}var r={};r.x=t.substr(2,s);r.y=t.substr(2+s);return r};this.getShortNISTPCurveName=function(){var r=this.curveName;if(r===\"secp256r1\"||r===\"NIST P-256\"||r===\"P-256\"||r===\"prime256v1\"){return\"P-256\"}if(r===\"secp384r1\"||r===\"NIST P-384\"||r===\"P-384\"){return\"P-384\"}if(r===\"secp521r1\"||r===\"NIST P-521\"||r===\"P-521\"){return\"P-521\"}return null};this.generateKeyPairHex=function(){var s=this.ecparams.n;var u=this.getBigRandom(s);var r=this.ecparams.keycharlen;var t=(\"0000000000\"+u.toString(16)).slice(-r);this.setPrivateKeyHex(t);var v=this.generatePublicKeyHex();return{ecprvhex:t,ecpubhex:v}};this.generatePublicKeyHex=function(){var u=new f(this.prvKeyHex,16);var w=this.ecparams.G.multiply(u);var t=w.getX().toBigInteger();var s=w.getY().toBigInteger();var r=this.ecparams.keycharlen;var y=(\"0000000000\"+t.toString(16)).slice(-r);var v=(\"0000000000\"+s.toString(16)).slice(-r);var x=\"04\"+y+v;this.setPublicKeyHex(x);return x};this.signWithMessageHash=function(r){return this.signHex(r,this.prvKeyHex)};this.signHex=function(x,u){var A=new f(u,16);var v=this.ecparams.n;var z=new f(x.substring(0,this.ecparams.keycharlen),16);do{var w=this.getBigRandom(v);var B=this.ecparams.G;var y=B.multiply(w);var t=y.getX().toBigInteger().mod(v)}while(t.compareTo(f.ZERO)<=0);var C=w.modInverse(v).multiply(z.add(A.multiply(t))).mod(v);return m.biRSSigToASN1Sig(t,C)};this.sign=function(w,B){var z=B;var u=this.ecparams.n;var y=f.fromByteArrayUnsigned(w);do{var v=this.getBigRandom(u);var A=this.ecparams.G;var x=A.multiply(v);var t=x.getX().toBigInteger().mod(u)}while(t.compareTo(BigInteger.ZERO)<=0);var C=v.modInverse(u).multiply(y.add(z.multiply(t))).mod(u);return this.serializeSig(t,C)};this.verifyWithMessageHash=function(s,r){return this.verifyHex(s,r,this.pubKeyHex)};this.verifyHex=function(v,y,u){try{var t,B;var w=m.parseSigHex(y);t=w.r;B=w.s;var x=h.decodeFromHex(this.ecparams.curve,u);var z=new f(v.substring(0,this.ecparams.keycharlen),16);return this.verifyRaw(z,t,B,x)}catch(A){return false}};this.verify=function(z,A,u){var w,t;if(Bitcoin.Util.isArray(A)){var y=this.parseSig(A);w=y.r;t=y.s}else{if(\"object\"===typeof A&&A.r&&A.s){w=A.r;t=A.s}else{throw\"Invalid value for signature\"}}var v;if(u instanceof ECPointFp){v=u}else{if(Bitcoin.Util.isArray(u)){v=h.decodeFrom(this.ecparams.curve,u)}else{throw\"Invalid format for pubkey value, must be byte array or ECPointFp\"}}var x=f.fromByteArrayUnsigned(z);return this.verifyRaw(x,w,t,v)};this.verifyRaw=function(z,t,E,y){var x=this.ecparams.n;var D=this.ecparams.G;if(t.compareTo(f.ONE)<0||t.compareTo(x)>=0){return false}if(E.compareTo(f.ONE)<0||E.compareTo(x)>=0){return false}var A=E.modInverse(x);var w=z.multiply(A).mod(x);var u=t.multiply(A).mod(x);var B=D.multiply(w).add(y.multiply(u));var C=B.getX().toBigInteger().mod(x);return C.equals(t)};this.serializeSig=function(v,u){var w=v.toByteArraySigned();var t=u.toByteArraySigned();var x=[];x.push(2);x.push(w.length);x=x.concat(w);x.push(2);x.push(t.length);x=x.concat(t);x.unshift(x.length);x.unshift(48);return x};this.parseSig=function(y){var x;if(y[0]!=48){throw new Error(\"Signature not a valid DERSequence\")}x=2;if(y[x]!=2){throw new Error(\"First element in signature must be a DERInteger\")}var w=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];if(y[x]!=2){throw new Error(\"Second element in signature must be a DERInteger\")}var t=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];var v=f.fromByteArrayUnsigned(w);var u=f.fromByteArrayUnsigned(t);return{r:v,s:u}};this.parseSigCompact=function(w){if(w.length!==65){throw\"Signature has the wrong length\"}var t=w[0]-27;if(t<0||t>7){throw\"Invalid signature type\"}var x=this.ecparams.n;var v=f.fromByteArrayUnsigned(w.slice(1,33)).mod(x);var u=f.fromByteArrayUnsigned(w.slice(33,65)).mod(x);return{r:v,s:u,i:t}};this.readPKCS5PrvKeyHex=function(u){if(k(u)===false){throw new Error(\"not ASN.1 hex string\")}var r,t,v;try{r=n(u,0,[\"[0]\",0],\"06\");t=n(u,0,[1],\"04\");try{v=n(u,0,[\"[1]\",0],\"03\")}catch(s){}}catch(s){throw new Error(\"malformed PKCS#1/5 plain ECC private key\")}this.curveName=d(r);if(this.curveName===undefined){throw\"unsupported curve name\"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v);this.setPrivateKeyHex(t);this.isPublic=false};this.readPKCS8PrvKeyHex=function(v){if(k(v)===false){throw new j(\"not ASN.1 hex string\")}var t,r,u,w;try{t=n(v,0,[1,0],\"06\");r=n(v,0,[1,1],\"06\");u=n(v,0,[2,0,1],\"04\");try{w=n(v,0,[2,0,\"[1]\",0],\"03\")}catch(s){}}catch(s){throw new j(\"malformed PKCS#8 plain ECC private key\")}this.curveName=d(r);if(this.curveName===undefined){throw new j(\"unsupported curve name\")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(w);this.setPrivateKeyHex(u);this.isPublic=false};this.readPKCS8PubKeyHex=function(u){if(k(u)===false){throw new j(\"not ASN.1 hex string\")}var t,r,v;try{t=n(u,0,[0,0],\"06\");r=n(u,0,[0,1],\"06\");v=n(u,0,[1],\"03\")}catch(s){throw new j(\"malformed PKCS#8 ECC public key\")}this.curveName=d(r);if(this.curveName===null){throw new j(\"unsupported curve name\")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v)};this.readCertPubKeyHex=function(t,v){if(k(t)===false){throw new j(\"not ASN.1 hex string\")}var r,u;try{r=n(t,0,[0,5,0,1],\"06\");u=n(t,0,[0,5,1],\"03\")}catch(s){throw new j(\"malformed X.509 certificate ECC public key\")}this.curveName=d(r);if(this.curveName===null){throw new j(\"unsupported curve name\")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(u)};if(e!==undefined){if(e.curve!==undefined){this.curveName=e.curve}}if(this.curveName===undefined){this.curveName=g}this.setNamedCurve(this.curveName);if(e!==undefined){if(e.prv!==undefined){this.setPrivateKeyHex(e.prv)}if(e.pub!==undefined){this.setPublicKeyHex(e.pub)}}};KJUR.crypto.ECDSA.parseSigHex=function(a){var b=KJUR.crypto.ECDSA.parseSigHexInHexRS(a);var d=new BigInteger(b.r,16);var c=new BigInteger(b.s,16);return{r:d,s:c}};KJUR.crypto.ECDSA.parseSigHexInHexRS=function(f){var j=ASN1HEX,i=j.getChildIdx,g=j.getV;j.checkStrictDER(f,0);if(f.substr(0,2)!=\"30\"){throw new Error(\"signature is not a ASN.1 sequence\")}var h=i(f,0);if(h.length!=2){throw new Error(\"signature shall have two elements\")}var e=h[0];var d=h[1];if(f.substr(e,2)!=\"02\"){throw new Error(\"1st item not ASN.1 integer\")}if(f.substr(d,2)!=\"02\"){throw new Error(\"2nd item not ASN.1 integer\")}var c=g(f,e);var b=g(f,d);return{r:c,s:b}};KJUR.crypto.ECDSA.asn1SigToConcatSig=function(d){var e=KJUR.crypto.ECDSA.parseSigHexInHexRS(d);var b=e.r;var a=e.s;if(b.length>=130&&b.length<=134){if(b.length%2!=0){throw Error(\"unknown ECDSA sig r length error\")}if(a.length%2!=0){throw Error(\"unknown ECDSA sig s length error\")}if(b.substr(0,2)==\"00\"){b=b.substr(2)}if(a.substr(0,2)==\"00\"){a=a.substr(2)}var c=Math.max(b.length,a.length);b=(\"000000\"+b).slice(-c);a=(\"000000\"+a).slice(-c);return b+a}if(b.substr(0,2)==\"00\"&&(b.length%32)==2){b=b.substr(2)}if(a.substr(0,2)==\"00\"&&(a.length%32)==2){a=a.substr(2)}if((b.length%32)==30){b=\"00\"+b}if((a.length%32)==30){a=\"00\"+a}if(b.length%32!=0){throw Error(\"unknown ECDSA sig r length error\")}if(a.length%32!=0){throw Error(\"unknown ECDSA sig s length error\")}return b+a};KJUR.crypto.ECDSA.concatSigToASN1Sig=function(a){if(a.length%4!=0){throw Error(\"unknown ECDSA concatinated r-s sig length error\")}var c=a.substr(0,a.length/2);var b=a.substr(a.length/2);return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(c,b)};KJUR.crypto.ECDSA.hexRSSigToASN1Sig=function(b,a){var d=new BigInteger(b,16);var c=new BigInteger(a,16);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(d,c)};KJUR.crypto.ECDSA.biRSSigToASN1Sig=function(f,d){var c=KJUR.asn1;var b=new c.DERInteger({bigint:f});var a=new c.DERInteger({bigint:d});var e=new c.DERSequence({array:[b,a]});return e.tohex()};KJUR.crypto.ECDSA.getName=function(a){if(a===\"2b8104001f\"){return\"secp192k1\"}if(a===\"2a8648ce3d030107\"){return\"secp256r1\"}if(a===\"2b8104000a\"){return\"secp256k1\"}if(a===\"2b81040021\"){return\"secp224r1\"}if(a===\"2b81040022\"){return\"secp384r1\"}if(a===\"2b81040023\"){return\"secp521r1\"}if(\"|secp256r1|NIST P-256|P-256|prime256v1|\".indexOf(a)!==-1){return\"secp256r1\"}if(\"|secp256k1|\".indexOf(a)!==-1){return\"secp256k1\"}if(\"|secp224r1|NIST P-224|P-224|\".indexOf(a)!==-1){return\"secp224r1\"}if(\"|secp384r1|NIST P-384|P-384|\".indexOf(a)!==-1){return\"secp384r1\"}if(\"|secp521r1|NIST P-521|P-521|\".indexOf(a)!==-1){return\"secp521r1\"}return null};\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.crypto==\"undefined\"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECParameterDB=new function(){var b={};var c={};function a(d){return new BigInteger(d,16)}this.getByName=function(e){var d=e;if(typeof c[d]!=\"undefined\"){d=c[e]}if(typeof b[d]!=\"undefined\"){return b[d]}throw\"unregistered EC curve name: \"+d};this.regist=function(A,l,o,g,m,e,j,f,k,u,d,x){b[A]={};var s=a(o);var z=a(g);var y=a(m);var t=a(e);var w=a(j);var r=new ECCurveFp(s,z,y);var q=r.decodePointHex(\"04\"+f+k);b[A][\"name\"]=A;b[A][\"keylen\"]=l;b[A][\"keycharlen\"]=Math.ceil(l/8)*2;b[A][\"curve\"]=r;b[A][\"G\"]=q;b[A][\"n\"]=t;b[A][\"h\"]=w;b[A][\"oid\"]=d;b[A][\"info\"]=x;for(var v=0;v1){l=new BigInteger(n,16)}else{l=null}m=new BigInteger(o,16);this.setPrivate(h,f,j,l,m)};this.setPublic=function(i,h,f,j){this.isPublic=true;this.p=i;this.q=h;this.g=f;this.y=j;this.x=null};this.setPublicHex=function(k,j,i,l){var g,f,m,h;g=new BigInteger(k,16);f=new BigInteger(j,16);m=new BigInteger(i,16);h=new BigInteger(l,16);this.setPublic(g,f,m,h)};this.signWithMessageHash=function(j){var i=this.p;var h=this.q;var m=this.g;var o=this.y;var t=this.x;var l=KJUR.crypto.Util.getRandomBigIntegerMinToMax(BigInteger.ONE.add(BigInteger.ONE),h.subtract(BigInteger.ONE));var u=j.substr(0,h.bitLength()/4);var n=new BigInteger(u,16);var f=(m.modPow(l,i)).mod(h);var w=(l.modInverse(h).multiply(n.add(t.multiply(f)))).mod(h);var v=KJUR.asn1.ASN1Util.jsonToASN1HEX({seq:[{\"int\":{bigint:f}},{\"int\":{bigint:w}}]});return v};this.verifyWithMessageHash=function(m,l){var j=this.p;var h=this.q;var o=this.g;var u=this.y;var n=this.parseASN1Signature(l);var f=n[0];var C=n[1];var B=m.substr(0,h.bitLength()/4);var t=new BigInteger(B,16);if(BigInteger.ZERO.compareTo(f)>0||f.compareTo(h)>0){throw\"invalid DSA signature\"}if(BigInteger.ZERO.compareTo(C)>=0||C.compareTo(h)>0){throw\"invalid DSA signature\"}var x=C.modInverse(h);var k=t.multiply(x).mod(h);var i=f.multiply(x).mod(h);var A=o.modPow(k,j).multiply(u.modPow(i,j)).mod(j).mod(h);return A.compareTo(f)==0};this.parseASN1Signature=function(f){try{var i=new c(d(f,0,[0],\"02\"),16);var h=new c(d(f,0,[1],\"02\"),16);return[i,h]}catch(g){throw new Error(\"malformed ASN.1 DSA signature\")}};this.readPKCS5PrvKeyHex=function(j){var k,i,g,l,m;if(a(j)===false){throw new Error(\"not ASN.1 hex string\")}try{k=d(j,0,[1],\"02\");i=d(j,0,[2],\"02\");g=d(j,0,[3],\"02\");l=d(j,0,[4],\"02\");m=d(j,0,[5],\"02\")}catch(f){throw new Error(\"malformed PKCS#1/5 plain DSA private key\")}this.setPrivateHex(k,i,g,l,m)};this.readPKCS8PrvKeyHex=function(j){var k,i,g,l;if(a(j)===false){throw new Error(\"not ASN.1 hex string\")}try{k=d(j,0,[1,1,0],\"02\");i=d(j,0,[1,1,1],\"02\");g=d(j,0,[1,1,2],\"02\");l=d(j,0,[2,0],\"02\")}catch(f){throw new Error(\"malformed PKCS#8 plain DSA private key\")}this.setPrivateHex(k,i,g,null,l)};this.readPKCS8PubKeyHex=function(j){var k,i,g,l;if(a(j)===false){throw new Error(\"not ASN.1 hex string\")}try{k=d(j,0,[0,1,0],\"02\");i=d(j,0,[0,1,1],\"02\");g=d(j,0,[0,1,2],\"02\");l=d(j,0,[1,0],\"02\")}catch(f){throw new Error(\"malformed PKCS#8 DSA public key\")}this.setPublicHex(k,i,g,l)};this.readCertPubKeyHex=function(j,m){var k,i,g,l;if(a(j)===false){throw new Error(\"not ASN.1 hex string\")}try{k=d(j,0,[0,5,0,1,0],\"02\");i=d(j,0,[0,5,0,1,1],\"02\");g=d(j,0,[0,5,0,1,2],\"02\");l=d(j,0,[0,5,1,0],\"02\")}catch(f){throw new Error(\"malformed X.509 certificate DSA public key\")}this.setPublicHex(k,i,g,l)}};\nvar KEYUTIL=function(){var d=function(p,r,q){return k(CryptoJS.AES,p,r,q)};var e=function(p,r,q){return k(CryptoJS.TripleDES,p,r,q)};var a=function(p,r,q){return k(CryptoJS.DES,p,r,q)};var k=function(s,x,u,q){var r=CryptoJS.enc.Hex.parse(x);var w=CryptoJS.enc.Hex.parse(u);var p=CryptoJS.enc.Hex.parse(q);var t={};t.key=w;t.iv=p;t.ciphertext=r;var v=s.decrypt(t,w,{iv:p});return CryptoJS.enc.Hex.stringify(v)};var l=function(p,r,q){return g(CryptoJS.AES,p,r,q)};var o=function(p,r,q){return g(CryptoJS.TripleDES,p,r,q)};var f=function(p,r,q){return g(CryptoJS.DES,p,r,q)};var g=function(t,y,v,q){var s=CryptoJS.enc.Hex.parse(y);var x=CryptoJS.enc.Hex.parse(v);var p=CryptoJS.enc.Hex.parse(q);var w=t.encrypt(s,x,{iv:p});var r=CryptoJS.enc.Hex.parse(w.toString());var u=CryptoJS.enc.Base64.stringify(r);return u};var i={\"AES-256-CBC\":{proc:d,eproc:l,keylen:32,ivlen:16},\"AES-192-CBC\":{proc:d,eproc:l,keylen:24,ivlen:16},\"AES-128-CBC\":{proc:d,eproc:l,keylen:16,ivlen:16},\"DES-EDE3-CBC\":{proc:e,eproc:o,keylen:24,ivlen:8},\"DES-CBC\":{proc:a,eproc:f,keylen:8,ivlen:8}};var c=function(p){return i[p][\"proc\"]};var m=function(p){var r=CryptoJS.lib.WordArray.random(p);var q=CryptoJS.enc.Hex.stringify(r);return q};var n=function(v){var w={};var q=v.match(new RegExp(\"DEK-Info: ([^,]+),([0-9A-Fa-f]+)\",\"m\"));if(q){w.cipher=q[1];w.ivsalt=q[2]}var p=v.match(new RegExp(\"-----BEGIN ([A-Z]+) PRIVATE KEY-----\"));if(p){w.type=p[1]}var u=-1;var x=0;if(v.indexOf(\"\\r\\n\\r\\n\")!=-1){u=v.indexOf(\"\\r\\n\\r\\n\");x=2}if(v.indexOf(\"\\n\\n\")!=-1){u=v.indexOf(\"\\n\\n\");x=1}var t=v.indexOf(\"-----END\");if(u!=-1&&t!=-1){var r=v.substring(u+x*2,t-x);r=r.replace(/\\s+/g,\"\");w.data=r}return w};var j=function(q,y,p){var v=p.substring(0,16);var t=CryptoJS.enc.Hex.parse(v);var r=CryptoJS.enc.Utf8.parse(y);var u=i[q][\"keylen\"]+i[q][\"ivlen\"];var x=\"\";var w=null;for(;;){var s=CryptoJS.algo.MD5.create();if(w!=null){s.update(w)}s.update(r);s.update(t);w=s.finalize();x=x+CryptoJS.enc.Hex.stringify(w);if(x.length>=u*2){break}}var z={};z.keyhex=x.substr(0,i[q][\"keylen\"]*2);z.ivhex=x.substr(i[q][\"keylen\"]*2,i[q][\"ivlen\"]*2);return z};var b=function(p,v,r,w){var s=CryptoJS.enc.Base64.parse(p);var q=CryptoJS.enc.Hex.stringify(s);var u=i[v][\"proc\"];var t=u(q,r,w);return t};var h=function(p,s,q,u){var r=i[s][\"eproc\"];var t=r(p,q,u);return t};return{version:\"1.0.0\",parsePKCS5PEM:function(p){return n(p)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(q,p,r){return j(q,p,r)},decryptKeyB64:function(p,r,q,s){return b(p,r,q,s)},getDecryptedKeyHex:function(y,x){var q=n(y);var t=q.type;var r=q.cipher;var p=q.ivsalt;var s=q.data;var w=j(r,x,p);var v=w.keyhex;var u=b(s,r,v,p);return u},getEncryptedPKCS5PEMFromPrvKeyHex:function(x,s,A,t,r){var p=\"\";if(typeof t==\"undefined\"||t==null){t=\"AES-256-CBC\"}if(typeof i[t]==\"undefined\"){throw new Error(\"KEYUTIL unsupported algorithm: \"+t)}if(typeof r==\"undefined\"||r==null){var v=i[t][\"ivlen\"];var u=m(v);r=u.toUpperCase()}var z=j(t,A,r);var y=z.keyhex;var w=h(s,t,y,r);var q=w.replace(/(.{64})/g,\"$1\\r\\n\");var p=\"-----BEGIN \"+x+\" PRIVATE KEY-----\\r\\n\";p+=\"Proc-Type: 4,ENCRYPTED\\r\\n\";p+=\"DEK-Info: \"+t+\",\"+r+\"\\r\\n\";p+=\"\\r\\n\";p+=q;p+=\"\\r\\n-----END \"+x+\" PRIVATE KEY-----\\r\\n\";return p},parseHexOfEncryptedPKCS8:function(y){var B=ASN1HEX;var z=B.getChildIdx;var w=B.getV;var t={};var r=z(y,0);if(r.length!=2){throw new Error(\"malformed format: SEQUENCE(0).items != 2: \"+r.length)}t.ciphertext=w(y,r[1]);var A=z(y,r[0]);if(A.length!=2){throw new Error(\"malformed format: SEQUENCE(0.0).items != 2: \"+A.length)}if(w(y,A[0])!=\"2a864886f70d01050d\"){throw new Error(\"this only supports pkcs5PBES2\")}var p=z(y,A[1]);if(A.length!=2){throw new Error(\"malformed format: SEQUENCE(0.0.1).items != 2: \"+p.length)}var q=z(y,p[1]);if(q.length!=2){throw new Error(\"malformed format: SEQUENCE(0.0.1.1).items != 2: \"+q.length)}if(w(y,q[0])!=\"2a864886f70d0307\"){throw\"this only supports TripleDES\"}t.encryptionSchemeAlg=\"TripleDES\";t.encryptionSchemeIV=w(y,q[1]);var s=z(y,p[0]);if(s.length!=2){throw new Error(\"malformed format: SEQUENCE(0.0.1.0).items != 2: \"+s.length)}if(w(y,s[0])!=\"2a864886f70d01050c\"){throw new Error(\"this only supports pkcs5PBKDF2\")}var x=z(y,s[1]);if(x.length<2){throw new Error(\"malformed format: SEQUENCE(0.0.1.0.1).items < 2: \"+x.length)}t.pbkdf2Salt=w(y,x[0]);var u=w(y,x[1]);try{t.pbkdf2Iter=parseInt(u,16)}catch(v){throw new Error(\"malformed format pbkdf2Iter: \"+u)}return t},getPBKDF2KeyHexFromParam:function(u,p){var t=CryptoJS.enc.Hex.parse(u.pbkdf2Salt);var q=u.pbkdf2Iter;var s=CryptoJS.PBKDF2(p,t,{keySize:192/32,iterations:q});var r=CryptoJS.enc.Hex.stringify(s);return r},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function(x,y){var r=pemtohex(x,\"ENCRYPTED PRIVATE KEY\");var p=this.parseHexOfEncryptedPKCS8(r);var u=KEYUTIL.getPBKDF2KeyHexFromParam(p,y);var v={};v.ciphertext=CryptoJS.enc.Hex.parse(p.ciphertext);var t=CryptoJS.enc.Hex.parse(u);var s=CryptoJS.enc.Hex.parse(p.encryptionSchemeIV);var w=CryptoJS.TripleDES.decrypt(v,t,{iv:s});var q=CryptoJS.enc.Hex.stringify(w);return q},getKeyFromEncryptedPKCS8PEM:function(s,q){var p=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(s,q);var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},parsePlainPrivatePKCS8Hex:function(s){var v=ASN1HEX;var u=v.getChildIdx;var t=v.getV;var q={};q.algparam=null;if(s.substr(0,2)!=\"30\"){throw new Error(\"malformed plain PKCS8 private key(code:001)\")}var r=u(s,0);if(r.length<3){throw new Error(\"malformed plain PKCS8 private key(code:002)\")}if(s.substr(r[1],2)!=\"30\"){throw new Error(\"malformed PKCS8 private key(code:003)\")}var p=u(s,r[1]);if(p.length!=2){throw new Error(\"malformed PKCS8 private key(code:004)\")}if(s.substr(p[0],2)!=\"06\"){throw new Error(\"malformed PKCS8 private key(code:005)\")}q.algoid=t(s,p[0]);if(s.substr(p[1],2)==\"06\"){q.algparam=t(s,p[1])}if(s.substr(r[2],2)!=\"04\"){throw new Error(\"malformed PKCS8 private key(code:006)\")}q.keyidx=v.getVidx(s,r[2]);return q},getKeyFromPlainPrivatePKCS8PEM:function(q){var p=pemtohex(q,\"PRIVATE KEY\");var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},getKeyFromPlainPrivatePKCS8Hex:function(p){var q=this.parsePlainPrivatePKCS8Hex(p);var r;if(q.algoid==\"2a864886f70d010101\"){r=new RSAKey()}else{if(q.algoid==\"2a8648ce380401\"){r=new KJUR.crypto.DSA()}else{if(q.algoid==\"2a8648ce3d0201\"){r=new KJUR.crypto.ECDSA()}else{throw new Error(\"unsupported private key algorithm\")}}}r.readPKCS8PrvKeyHex(p);return r},_getKeyFromPublicPKCS8Hex:function(q){var p;var r=ASN1HEX.getVbyList(q,0,[0,0],\"06\");if(r===\"2a864886f70d010101\"){p=new RSAKey()}else{if(r===\"2a8648ce380401\"){p=new KJUR.crypto.DSA()}else{if(r===\"2a8648ce3d0201\"){p=new KJUR.crypto.ECDSA()}else{throw new Error(\"unsupported PKCS#8 public key hex\")}}}p.readPKCS8PubKeyHex(q);return p},parsePublicRawRSAKeyHex:function(r){var u=ASN1HEX;var t=u.getChildIdx;var s=u.getV;var p={};if(r.substr(0,2)!=\"30\"){throw new Error(\"malformed RSA key(code:001)\")}var q=t(r,0);if(q.length!=2){throw new Error(\"malformed RSA key(code:002)\")}if(r.substr(q[0],2)!=\"02\"){throw new Error(\"malformed RSA key(code:003)\")}p.n=s(r,q[0]);if(r.substr(q[1],2)!=\"02\"){throw new Error(\"malformed RSA key(code:004)\")}p.e=s(r,q[1]);return p},parsePublicPKCS8Hex:function(t){var v=ASN1HEX;var u=v.getChildIdx;var s=v.getV;var q={};q.algparam=null;var r=u(t,0);if(r.length!=2){throw new Error(\"outer DERSequence shall have 2 elements: \"+r.length)}var w=r[0];if(t.substr(w,2)!=\"30\"){throw new Error(\"malformed PKCS8 public key(code:001)\")}var p=u(t,w);if(p.length!=2){throw new Error(\"malformed PKCS8 public key(code:002)\")}if(t.substr(p[0],2)!=\"06\"){throw new Error(\"malformed PKCS8 public key(code:003)\")}q.algoid=s(t,p[0]);if(t.substr(p[1],2)==\"06\"){q.algparam=s(t,p[1])}else{if(t.substr(p[1],2)==\"30\"){q.algparam={};q.algparam.p=v.getVbyList(t,p[1],[0],\"02\");q.algparam.q=v.getVbyList(t,p[1],[1],\"02\");q.algparam.g=v.getVbyList(t,p[1],[2],\"02\")}}if(t.substr(r[1],2)!=\"03\"){throw new Error(\"malformed PKCS8 public key(code:004)\")}q.key=s(t,r[1]).substr(2);return q},}}();KEYUTIL.getKey=function(l,k,n){var G=ASN1HEX,L=G.getChildIdx,v=G.getV,d=G.getVbyList,c=KJUR.crypto,i=c.ECDSA,C=c.DSA,w=RSAKey,M=pemtohex,F=KEYUTIL;if(typeof w!=\"undefined\"&&l instanceof w){return l}if(typeof i!=\"undefined\"&&l instanceof i){return l}if(typeof C!=\"undefined\"&&l instanceof C){return l}if(l.curve!==undefined&&l.xy!==undefined&&l.d===undefined){return new i({pub:l.xy,curve:l.curve})}if(l.curve!==undefined&&l.d!==undefined){return new i({prv:l.d,curve:l.curve})}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d===undefined){var P=new w();P.setPublic(l.n,l.e);return P}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p!==undefined&&l.q!==undefined&&l.dp!==undefined&&l.dq!==undefined&&l.co!==undefined&&l.qi===undefined){var P=new w();P.setPrivateEx(l.n,l.e,l.d,l.p,l.q,l.dp,l.dq,l.co);return P}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p===undefined){var P=new w();P.setPrivate(l.n,l.e,l.d);return P}if(l.p!==undefined&&l.q!==undefined&&l.g!==undefined&&l.y!==undefined&&l.x===undefined){var P=new C();P.setPublic(l.p,l.q,l.g,l.y);return P}if(l.p!==undefined&&l.q!==undefined&&l.g!==undefined&&l.y!==undefined&&l.x!==undefined){var P=new C();P.setPrivate(l.p,l.q,l.g,l.y,l.x);return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d===undefined){var P=new w();P.setPublic(b64utohex(l.n),b64utohex(l.e));return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p!==undefined&&l.q!==undefined&&l.dp!==undefined&&l.dq!==undefined&&l.qi!==undefined){var P=new w();P.setPrivateEx(b64utohex(l.n),b64utohex(l.e),b64utohex(l.d),b64utohex(l.p),b64utohex(l.q),b64utohex(l.dp),b64utohex(l.dq),b64utohex(l.qi));return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined){var P=new w();P.setPrivate(b64utohex(l.n),b64utohex(l.e),b64utohex(l.d));return P}if(l.kty===\"EC\"&&l.crv!==undefined&&l.x!==undefined&&l.y!==undefined&&l.d===undefined){var j=new i({curve:l.crv});var t=j.ecparams.keycharlen;var B=(\"0000000000\"+b64utohex(l.x)).slice(-t);var z=(\"0000000000\"+b64utohex(l.y)).slice(-t);var u=\"04\"+B+z;j.setPublicKeyHex(u);return j}if(l.kty===\"EC\"&&l.crv!==undefined&&l.x!==undefined&&l.y!==undefined&&l.d!==undefined){var j=new i({curve:l.crv});var t=j.ecparams.keycharlen;var B=(\"0000000000\"+b64utohex(l.x)).slice(-t);var z=(\"0000000000\"+b64utohex(l.y)).slice(-t);var u=\"04\"+B+z;var b=(\"0000000000\"+b64utohex(l.d)).slice(-t);j.setPublicKeyHex(u);j.setPrivateKeyHex(b);return j}if(n===\"pkcs5prv\"){var J=l,G=ASN1HEX,N,P;N=L(J,0);if(N.length===9){P=new w();P.readPKCS5PrvKeyHex(J)}else{if(N.length===6){P=new C();P.readPKCS5PrvKeyHex(J)}else{if(N.length>2&&J.substr(N[1],2)===\"04\"){P=new i();P.readPKCS5PrvKeyHex(J)}else{throw new Error(\"unsupported PKCS#1/5 hexadecimal key\")}}}return P}if(n===\"pkcs8prv\"){var P=F.getKeyFromPlainPrivatePKCS8Hex(l);return P}if(n===\"pkcs8pub\"){return F._getKeyFromPublicPKCS8Hex(l)}if(n===\"x509pub\"){return X509.getPublicKeyFromCertHex(l)}if(l.indexOf(\"-END CERTIFICATE-\",0)!=-1||l.indexOf(\"-END X509 CERTIFICATE-\",0)!=-1||l.indexOf(\"-END TRUSTED CERTIFICATE-\",0)!=-1){return X509.getPublicKeyFromCertPEM(l)}if(l.indexOf(\"-END PUBLIC KEY-\")!=-1){var O=pemtohex(l,\"PUBLIC KEY\");return F._getKeyFromPublicPKCS8Hex(O)}if(l.indexOf(\"-END RSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var m=M(l,\"RSA PRIVATE KEY\");return F.getKey(m,null,\"pkcs5prv\")}if(l.indexOf(\"-END DSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var I=M(l,\"DSA PRIVATE KEY\");var E=d(I,0,[1],\"02\");var D=d(I,0,[2],\"02\");var K=d(I,0,[3],\"02\");var r=d(I,0,[4],\"02\");var s=d(I,0,[5],\"02\");var P=new C();P.setPrivate(new BigInteger(E,16),new BigInteger(D,16),new BigInteger(K,16),new BigInteger(r,16),new BigInteger(s,16));return P}if(l.indexOf(\"-END EC PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var m=M(l,\"EC PRIVATE KEY\");return F.getKey(m,null,\"pkcs5prv\")}if(l.indexOf(\"-END PRIVATE KEY-\")!=-1){return F.getKeyFromPlainPrivatePKCS8PEM(l)}if(l.indexOf(\"-END RSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var o=F.getDecryptedKeyHex(l,k);var H=new RSAKey();H.readPKCS5PrvKeyHex(o);return H}if(l.indexOf(\"-END EC PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var I=F.getDecryptedKeyHex(l,k);var P=d(I,0,[1],\"04\");var f=d(I,0,[2,0],\"06\");var A=d(I,0,[3,0],\"03\").substr(2);var e=\"\";if(KJUR.crypto.OID.oidhex2name[f]!==undefined){e=KJUR.crypto.OID.oidhex2name[f]}else{throw new Error(\"undefined OID(hex) in KJUR.crypto.OID: \"+f)}var j=new i({curve:e});j.setPublicKeyHex(A);j.setPrivateKeyHex(P);j.isPublic=false;return j}if(l.indexOf(\"-END DSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var I=F.getDecryptedKeyHex(l,k);var E=d(I,0,[1],\"02\");var D=d(I,0,[2],\"02\");var K=d(I,0,[3],\"02\");var r=d(I,0,[4],\"02\");var s=d(I,0,[5],\"02\");var P=new C();P.setPrivate(new BigInteger(E,16),new BigInteger(D,16),new BigInteger(K,16),new BigInteger(r,16),new BigInteger(s,16));return P}if(l.indexOf(\"-END ENCRYPTED PRIVATE KEY-\")!=-1){return F.getKeyFromEncryptedPKCS8PEM(l,k)}throw new Error(\"not supported argument\")};KEYUTIL.generateKeypair=function(a,c){if(a==\"RSA\"){var b=c;var h=new RSAKey();h.generate(b,\"10001\");h.isPrivate=true;h.isPublic=true;var f=new RSAKey();var e=h.n.toString(16);var i=h.e.toString(16);f.setPublic(e,i);f.isPrivate=false;f.isPublic=true;var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{if(a==\"EC\"){var d=c;var g=new KJUR.crypto.ECDSA({curve:d});var j=g.generateKeyPairHex();var h=new KJUR.crypto.ECDSA({curve:d});h.setPublicKeyHex(j.ecpubhex);h.setPrivateKeyHex(j.ecprvhex);h.isPrivate=true;h.isPublic=false;var f=new KJUR.crypto.ECDSA({curve:d});f.setPublicKeyHex(j.ecpubhex);f.isPrivate=false;f.isPublic=true;var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{throw new Error(\"unknown algorithm: \"+a)}}};KEYUTIL.getPEM=function(b,D,y,m,q,j){var F=KJUR,k=F.asn1,z=k.DERObjectIdentifier,f=k.DERInteger,l=k.ASN1Util.newObject,a=k.x509,C=a.SubjectPublicKeyInfo,e=F.crypto,u=e.DSA,r=e.ECDSA,n=RSAKey;function A(s){var H=l({seq:[{\"int\":0},{\"int\":{bigint:s.n}},{\"int\":s.e},{\"int\":{bigint:s.d}},{\"int\":{bigint:s.p}},{\"int\":{bigint:s.q}},{\"int\":{bigint:s.dmp1}},{\"int\":{bigint:s.dmq1}},{\"int\":{bigint:s.coeff}}]});return H}function B(H){var s=l({seq:[{\"int\":1},{octstr:{hex:H.prvKeyHex}},{tag:[\"a0\",true,{oid:{name:H.curveName}}]},{tag:[\"a1\",true,{bitstr:{hex:\"00\"+H.pubKeyHex}}]}]});return s}function x(s){var H=l({seq:[{\"int\":0},{\"int\":{bigint:s.p}},{\"int\":{bigint:s.q}},{\"int\":{bigint:s.g}},{\"int\":{bigint:s.y}},{\"int\":{bigint:s.x}}]});return H}if(((n!==undefined&&b instanceof n)||(u!==undefined&&b instanceof u)||(r!==undefined&&b instanceof r))&&b.isPublic==true&&(D===undefined||D==\"PKCS8PUB\")){var E=new C(b);var w=E.tohex();return hextopem(w,\"PUBLIC KEY\")}if(D==\"PKCS1PRV\"&&n!==undefined&&b instanceof n&&(y===undefined||y==null)&&b.isPrivate==true){var E=A(b);var w=E.tohex();return hextopem(w,\"RSA PRIVATE KEY\")}if(D==\"PKCS1PRV\"&&r!==undefined&&b instanceof r&&(y===undefined||y==null)&&b.isPrivate==true){var i=new z({name:b.curveName});var v=i.tohex();var h=B(b);var t=h.tohex();var p=\"\";p+=hextopem(v,\"EC PARAMETERS\");p+=hextopem(t,\"EC PRIVATE KEY\");return p}if(D==\"PKCS1PRV\"&&u!==undefined&&b instanceof u&&(y===undefined||y==null)&&b.isPrivate==true){var E=x(b);var w=E.tohex();return hextopem(w,\"DSA PRIVATE KEY\")}if(D==\"PKCS5PRV\"&&n!==undefined&&b instanceof n&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=A(b);var w=E.tohex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"RSA\",w,y,m,j)}if(D==\"PKCS5PRV\"&&r!==undefined&&b instanceof r&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=B(b);var w=E.tohex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"EC\",w,y,m,j)}if(D==\"PKCS5PRV\"&&u!==undefined&&b instanceof u&&(y!==undefined&&y!=null)&&b.isPrivate==true){var E=x(b);var w=E.tohex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"DSA\",w,y,m,j)}var o=function(H,s){var J=c(H,s);var I=new l({seq:[{seq:[{oid:{name:\"pkcs5PBES2\"}},{seq:[{seq:[{oid:{name:\"pkcs5PBKDF2\"}},{seq:[{octstr:{hex:J.pbkdf2Salt}},{\"int\":J.pbkdf2Iter}]}]},{seq:[{oid:{name:\"des-EDE3-CBC\"}},{octstr:{hex:J.encryptionSchemeIV}}]}]}]},{octstr:{hex:J.ciphertext}}]});return I.tohex()};var c=function(O,P){var I=100;var N=CryptoJS.lib.WordArray.random(8);var M=\"DES-EDE3-CBC\";var s=CryptoJS.lib.WordArray.random(8);var J=CryptoJS.PBKDF2(P,N,{keySize:192/32,iterations:I});var K=CryptoJS.enc.Hex.parse(O);var L=CryptoJS.TripleDES.encrypt(K,J,{iv:s})+\"\";var H={};H.ciphertext=L;H.pbkdf2Salt=CryptoJS.enc.Hex.stringify(N);H.pbkdf2Iter=I;H.encryptionSchemeAlg=M;H.encryptionSchemeIV=CryptoJS.enc.Hex.stringify(s);return H};if(D==\"PKCS8PRV\"&&n!=undefined&&b instanceof n&&b.isPrivate==true){var g=A(b);var d=g.tohex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"rsaEncryption\"}},{\"null\":true}]},{octstr:{hex:d}}]});var w=E.tohex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}if(D==\"PKCS8PRV\"&&r!==undefined&&b instanceof r&&b.isPrivate==true){var G={seq:[{\"int\":1},{octstr:{hex:b.prvKeyHex}}]};if(typeof b.pubKeyHex==\"string\"){G.seq.push({tag:[\"a1\",true,{bitstr:{hex:\"00\"+b.pubKeyHex}}]})}var g=new l(G);var d=g.tohex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"ecPublicKey\"}},{oid:{name:b.curveName}}]},{octstr:{hex:d}}]});var w=E.tohex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}if(D==\"PKCS8PRV\"&&u!==undefined&&b instanceof u&&b.isPrivate==true){var g=new f({bigint:b.x});var d=g.tohex();var E=l({seq:[{\"int\":0},{seq:[{oid:{name:\"dsa\"}},{seq:[{\"int\":{bigint:b.p}},{\"int\":{bigint:b.q}},{\"int\":{bigint:b.g}}]}]},{octstr:{hex:d}}]});var w=E.tohex();if(y===undefined||y==null){return hextopem(w,\"PRIVATE KEY\")}else{var t=o(w,y);return hextopem(t,\"ENCRYPTED PRIVATE KEY\")}}throw new Error(\"unsupported object nor format\")};KEYUTIL.getKeyFromCSRPEM=function(b){var a=pemtohex(b,\"CERTIFICATE REQUEST\");var c=KEYUTIL.getKeyFromCSRHex(a);return c};KEYUTIL.getKeyFromCSRHex=function(a){var c=KEYUTIL.parseCSRHex(a);var b=KEYUTIL.getKey(c.p8pubkeyhex,null,\"pkcs8pub\");return b};KEYUTIL.parseCSRHex=function(d){var i=ASN1HEX;var f=i.getChildIdx;var c=i.getTLV;var b={};var g=d;if(g.substr(0,2)!=\"30\"){throw new Error(\"malformed CSR(code:001)\")}var e=f(g,0);if(e.length<1){throw new Error(\"malformed CSR(code:002)\")}if(g.substr(e[0],2)!=\"30\"){throw new Error(\"malformed CSR(code:003)\")}var a=f(g,e[0]);if(a.length<3){throw new Error(\"malformed CSR(code:004)\")}b.p8pubkeyhex=c(g,a[2]);return b};KEYUTIL.getKeyID=function(f){var c=KEYUTIL;var e=ASN1HEX;if(typeof f===\"string\"&&f.indexOf(\"BEGIN \")!=-1){f=c.getKey(f)}var d=pemtohex(c.getPEM(f));var b=e.getIdxbyList(d,0,[1]);var a=e.getV(d,b).substring(2);return KJUR.crypto.Util.hashHex(a,\"sha1\")};KEYUTIL.getJWK=function(d,h,g,b,f){var i;var k={};var e;var c=KJUR.crypto.Util.hashHex;if(typeof d==\"string\"){i=KEYUTIL.getKey(d);if(d.indexOf(\"CERTIFICATE\")!=-1){e=pemtohex(d)}}else{if(typeof d==\"object\"){if(d instanceof X509){i=d.getPublicKey();e=d.hex}else{i=d}}else{throw new Error(\"unsupported keyinfo type\")}}if(i instanceof RSAKey&&i.isPrivate){k.kty=\"RSA\";k.n=hextob64u(i.n.toString(16));k.e=hextob64u(i.e.toString(16));k.d=hextob64u(i.d.toString(16));k.p=hextob64u(i.p.toString(16));k.q=hextob64u(i.q.toString(16));k.dp=hextob64u(i.dmp1.toString(16));k.dq=hextob64u(i.dmq1.toString(16));k.qi=hextob64u(i.coeff.toString(16))}else{if(i instanceof RSAKey&&i.isPublic){k.kty=\"RSA\";k.n=hextob64u(i.n.toString(16));k.e=hextob64u(i.e.toString(16))}else{if(i instanceof KJUR.crypto.ECDSA&&i.isPrivate){var a=i.getShortNISTPCurveName();if(a!==\"P-256\"&&a!==\"P-384\"&&a!==\"P-521\"){throw new Error(\"unsupported curve name for JWT: \"+a)}var j=i.getPublicKeyXYHex();k.kty=\"EC\";k.crv=a;k.x=hextob64u(j.x);k.y=hextob64u(j.y);k.d=hextob64u(i.prvKeyHex)}else{if(i instanceof KJUR.crypto.ECDSA&&i.isPublic){var a=i.getShortNISTPCurveName();if(a!==\"P-256\"&&a!==\"P-384\"&&a!==\"P-521\"){throw new Error(\"unsupported curve name for JWT: \"+a)}var j=i.getPublicKeyXYHex();k.kty=\"EC\";k.crv=a;k.x=hextob64u(j.x);k.y=hextob64u(j.y)}}}}if(k.kty==undefined){throw new Error(\"unsupported keyinfo\")}if((!i.isPrivate)&&h!=true){k.kid=KJUR.jws.JWS.getJWKthumbprint(k)}if(e!=undefined&&g!=true){k.x5c=[hex2b64(e)]}if(e!=undefined&&b!=true){k.x5t=b64tob64u(hex2b64(c(e,\"sha1\")))}if(e!=undefined&&f!=true){k[\"x5t#S256\"]=b64tob64u(hex2b64(c(e,\"sha256\")))}return k};KEYUTIL.getJWKFromKey=function(a){return KEYUTIL.getJWK(a,true,true,true,true)};\nRSAKey.getPosArrayOfChildrenFromHex=function(a){return ASN1HEX.getChildIdx(a,0)};RSAKey.getHexValueArrayOfChildrenFromHex=function(f){var n=ASN1HEX;var i=n.getV;var k=RSAKey.getPosArrayOfChildrenFromHex(f);var e=i(f,k[0]);var j=i(f,k[1]);var b=i(f,k[2]);var c=i(f,k[3]);var h=i(f,k[4]);var g=i(f,k[5]);var m=i(f,k[6]);var l=i(f,k[7]);var d=i(f,k[8]);var k=new Array();k.push(e,j,b,c,h,g,m,l,d);return k};RSAKey.prototype.readPrivateKeyFromPEMString=function(d){var c=pemtohex(d);var b=RSAKey.getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])};RSAKey.prototype.readPKCS5PrvKeyHex=function(c){var b=RSAKey.getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])};RSAKey.prototype.readPKCS8PrvKeyHex=function(e){var c,i,k,b,a,f,d,j;var m=ASN1HEX;var l=m.getVbyListEx;if(m.isASN1HEX(e)===false){throw new Error(\"not ASN.1 hex string\")}try{c=l(e,0,[2,0,1],\"02\");i=l(e,0,[2,0,2],\"02\");k=l(e,0,[2,0,3],\"02\");b=l(e,0,[2,0,4],\"02\");a=l(e,0,[2,0,5],\"02\");f=l(e,0,[2,0,6],\"02\");d=l(e,0,[2,0,7],\"02\");j=l(e,0,[2,0,8],\"02\")}catch(g){throw new Error(\"malformed PKCS#8 plain RSA private key\")}this.setPrivateEx(c,i,k,b,a,f,d,j)};RSAKey.prototype.readPKCS5PubKeyHex=function(c){var e=ASN1HEX;var b=e.getV;if(e.isASN1HEX(c)===false){throw new Error(\"keyHex is not ASN.1 hex string\")}var a=e.getChildIdx(c,0);if(a.length!==2||c.substr(a[0],2)!==\"02\"||c.substr(a[1],2)!==\"02\"){throw new Error(\"wrong hex for PKCS#5 public key\")}var f=b(c,a[0]);var d=b(c,a[1]);this.setPublic(f,d)};RSAKey.prototype.readPKCS8PubKeyHex=function(b){var c=ASN1HEX;if(c.isASN1HEX(b)===false){throw new Error(\"not ASN.1 hex string\")}if(c.getTLVbyListEx(b,0,[0,0])!==\"06092a864886f70d010101\"){throw new Error(\"not PKCS8 RSA public key\")}var a=c.getTLVbyListEx(b,0,[1,0]);this.readPKCS5PubKeyHex(a)};RSAKey.prototype.readCertPubKeyHex=function(b,d){var a,c;a=new X509();a.readCertHex(b);c=a.getPublicKeyHex();this.readPKCS8PubKeyHex(c)};\nvar _RE_HEXDECONLY=new RegExp(\"[^0-9a-f]\",\"gi\");function _rsasign_getHexPaddedDigestInfoForString(d,e,a){var b=function(f){return KJUR.crypto.Util.hashString(f,a)};var c=b(d);return KJUR.crypto.Util.getPaddedDigestInfoHex(c,a,e)}function _zeroPaddingOfSignature(e,d){var c=\"\";var a=d/4-e.length;for(var b=0;b>24,(d&16711680)>>16,(d&65280)>>8,d&255]))));d+=1}return b}RSAKey.prototype.signPSS=function(e,a,d){var c=function(f){return KJUR.crypto.Util.hashHex(f,a)};var b=c(rstrtohex(e));if(d===undefined){d=-1}return this.signWithMessageHashPSS(b,a,d)};RSAKey.prototype.signWithMessageHashPSS=function(l,a,k){var b=hextorstr(l);var g=b.length;var m=this.n.bitLength()-1;var c=Math.ceil(m/8);var d;var o=function(i){return KJUR.crypto.Util.hashHex(i,a)};if(k===-1||k===undefined){k=g}else{if(k===-2){k=c-g-2}else{if(k<-2){throw new Error(\"invalid salt length\")}}}if(c<(g+k+2)){throw new Error(\"data too long\")}var f=\"\";if(k>0){f=new Array(k);new SecureRandom().nextBytes(f);f=String.fromCharCode.apply(String,f)}var n=hextorstr(o(rstrtohex(\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"+b+f)));var j=[];for(d=0;d>(8*c-m))&255;q[0]&=~p;for(d=0;dk){return false}var j=this.doPublic(b);var i=j.toString(16);if(i.length+3!=k/4){return false}var e=i.replace(/^1f+00/,\"\");var g=_rsasign_getAlgNameAndHashFromHexDisgestInfo(e);if(g.length==0){return false}var d=g[0];var h=g[1];var a=function(m){return KJUR.crypto.Util.hashString(m,d)};var c=a(f);return(h==c)};RSAKey.prototype.verifyWithMessageHash=function(e,a){if(a.length!=Math.ceil(this.n.bitLength()/4)){return false}var b=parseBigInt(a,16);if(b.bitLength()>this.n.bitLength()){return 0}var h=this.doPublic(b);var g=h.toString(16).replace(/^1f+00/,\"\");var c=_rsasign_getAlgNameAndHashFromHexDisgestInfo(g);if(c.length==0){return false}var d=c[0];var f=c[1];return(f==e)};RSAKey.prototype.verifyPSS=function(c,b,a,f){var e=function(g){return KJUR.crypto.Util.hashHex(g,a)};var d=e(rstrtohex(c));if(f===undefined){f=-1}return this.verifyWithMessageHashPSS(d,b,a,f)};RSAKey.prototype.verifyWithMessageHashPSS=function(f,s,l,c){if(s.length!=Math.ceil(this.n.bitLength()/4)){return false}var k=new BigInteger(s,16);var r=function(i){return KJUR.crypto.Util.hashHex(i,l)};var j=hextorstr(f);var h=j.length;var g=this.n.bitLength()-1;var m=Math.ceil(g/8);var q;if(c===-1||c===undefined){c=h}else{if(c===-2){c=m-h-2}else{if(c<-2){throw new Error(\"invalid salt length\")}}}if(m<(h+c+2)){throw new Error(\"data too long\")}var a=this.doPublic(k).toByteArray();for(q=0;q>(8*m-g))&255;if((d.charCodeAt(0)&p)!==0){throw new Error(\"bits beyond keysize not zero\")}var n=pss_mgf1_str(e,d.length,r);var o=[];for(q=0;q0){return z}return undefined}catch(B){return undefined}};this._asn1ToNoticeRef=function(F){try{var A={};var B=aryval(F,\"seq\");for(var D=0;D0){return A}return undefined}catch(C){return undefined}};this._asn1ToNoticeNum=function(E){try{var A=aryval(E,\"seq\");var z=[];for(var C=0;C1){var G=b(C,B[1]);var A=this.getGeneralName(G);if(A.uri!=undefined){z.uri=A.uri}}if(B.length>2){var D=b(C,B[2]);if(D==\"0101ff\"){z.reqauth=true}if(D==\"010100\"){z.reqauth=false}}return z};this.getExtSubjectDirectoryAttributes=function(I,H){if(I===undefined&&H===undefined){var B=this.getExtInfo(\"subjectDirectoryAttributes\");if(B===undefined){return undefined}I=b(this.hex,B.vidx);H=B.critical}var J={extname:\"subjectDirectoryAttributes\"};if(H){J.critical=true}try{var z=j(I);var D=[];for(var E=0;E0){z.ext=this.getExtParamArray()}z.sighex=this.getSignatureValueHex();if(A.tbshex==true){z.tbshex=a(this.hex,0,[0])}if(A.nodnarray==true){delete z.issuer.array;delete z.subject.array}return z};this.getExtParamArray=function(A){if(A==undefined){var C=f(this.hex,0,[0,\"[3]\"]);if(C!=-1){A=q(this.hex,0,[0,\"[3]\",0],\"30\")}}var z=[];var B=s(A,0);for(var D=0;D0){var b=\":\"+n.join(\":\")+\":\";if(b.indexOf(\":\"+k+\":\")==-1){throw\"algorithm '\"+k+\"' not accepted in the list\"}}if(k!=\"none\"&&B===null){throw\"key shall be specified to verify.\"}if(typeof B==\"string\"&&B.indexOf(\"-----BEGIN \")!=-1){B=KEYUTIL.getKey(B)}if(z==\"RS\"||z==\"PS\"){if(!(B instanceof m)){throw\"key shall be a RSAKey obj for RS* and PS* algs\"}}if(z==\"ES\"){if(!(B instanceof p)){throw\"key shall be a ECDSA obj for ES* algs\"}}if(k==\"none\"){}var u=null;if(t.jwsalg2sigalg[l.alg]===undefined){throw\"unsupported alg name: \"+k}else{u=t.jwsalg2sigalg[k]}if(u==\"none\"){throw\"not supported\"}else{if(u.substr(0,4)==\"Hmac\"){var o=null;if(B===undefined){throw\"hexadecimal key shall be specified for HMAC\"}var j=new s({alg:u,pass:B});j.updateString(c);o=j.doFinal();return A==o}else{if(u.indexOf(\"withECDSA\")!=-1){var h=null;try{h=p.concatSigToASN1Sig(A)}catch(v){return false}var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(h)}else{var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(A)}}}};KJUR.jws.JWS.parse=function(g){var c=g.split(\".\");var b={};var f,e,d;if(c.length!=2&&c.length!=3){throw\"malformed sJWS: wrong number of '.' splitted elements\"}f=c[0];e=c[1];if(c.length==3){d=c[2]}b.headerObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(f));b.payloadObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(e));b.headerPP=JSON.stringify(b.headerObj,null,\" \");if(b.payloadObj==null){b.payloadPP=b64utoutf8(e)}else{b.payloadPP=JSON.stringify(b.payloadObj,null,\" \")}if(d!==undefined){b.sigHex=b64utohex(d)}return b};KJUR.jws.JWS.verifyJWT=function(e,l,r){var d=KJUR,j=d.jws,o=j.JWS,n=o.readSafeJSONString,p=o.inArray,f=o.includedArray;if(!isBase64URLDot(e)){return false}var k=e.split(\".\");if(k.length!=3){return false}var c=k[0];var i=k[1];var q=c+\".\"+i;var m=b64utohex(k[2]);var h=n(b64utoutf8(c));var g=n(b64utoutf8(i));if(h.alg===undefined){return false}if(r.alg===undefined){throw\"acceptField.alg shall be specified\"}if(!p(h.alg,r.alg)){return false}if(g.iss!==undefined&&typeof r.iss===\"object\"){if(!p(g.iss,r.iss)){return false}}if(g.sub!==undefined&&typeof r.sub===\"object\"){if(!p(g.sub,r.sub)){return false}}if(g.aud!==undefined&&typeof r.aud===\"object\"){if(typeof g.aud==\"string\"){if(!p(g.aud,r.aud)){return false}}else{if(typeof g.aud==\"object\"){if(!f(g.aud,r.aud)){return false}}}}var b=j.IntDate.getNow();if(r.verifyAt!==undefined&&typeof r.verifyAt===\"number\"){b=r.verifyAt}if(r.gracePeriod===undefined||typeof r.gracePeriod!==\"number\"){r.gracePeriod=0}if(g.exp!==undefined&&typeof g.exp==\"number\"){if(g.exp+r.gracePeriodl){this.aHeader.pop()}if(this.aSignature.length>l){this.aSignature.pop()}throw\"addSignature failed: \"+i}};this.verifyAll=function(h){if(this.aHeader.length!==h.length||this.aSignature.length!==h.length){return false}for(var g=0;g0){this.aHeader=g.headers}else{throw\"malformed header\"}if(typeof g.payload===\"string\"){this.sPayload=g.payload}else{throw\"malformed signatures\"}if(g.signatures.length>0){this.aSignature=g.signatures}else{throw\"malformed signatures\"}}catch(e){throw\"malformed JWS-JS JSON object: \"+e}}};this.getJSON=function(){return{headers:this.aHeader,payload:this.sPayload,signatures:this.aSignature}};this.isEmpty=function(){if(this.aHeader.length==0){return 1}return 0}};\nexports.SecureRandom = SecureRandom;\nexports.rng_seed_time = rng_seed_time;\n\nexports.BigInteger = BigInteger;\nexports.RSAKey = RSAKey;\nexports.ECDSA = KJUR.crypto.ECDSA;\nexports.DSA = KJUR.crypto.DSA;\nexports.Signature = KJUR.crypto.Signature;\nexports.MessageDigest = KJUR.crypto.MessageDigest;\nexports.Mac = KJUR.crypto.Mac;\nexports.Cipher = KJUR.crypto.Cipher;\nexports.KEYUTIL = KEYUTIL;\nexports.ASN1HEX = ASN1HEX;\nexports.X509 = X509;\nexports.X509CRL = X509CRL;\nexports.CryptoJS = CryptoJS;\n\n// ext/base64.js\nexports.b64tohex = b64tohex;\nexports.b64toBA = b64toBA;\n\n// ext/ec*.js\nexports.ECFieldElementFp = ECFieldElementFp;\nexports.ECPointFp = ECPointFp;\nexports.ECCurveFp = ECCurveFp;\n\n// base64x.js\nexports.stoBA = stoBA;\nexports.BAtos = BAtos;\nexports.BAtohex = BAtohex;\nexports.stohex = stohex;\nexports.stob64 = stob64;\nexports.stob64u = stob64u;\nexports.b64utos = b64utos;\nexports.b64tob64u = b64tob64u;\nexports.b64utob64 = b64utob64;\nexports.hex2b64 = hex2b64;\nexports.hextob64u = hextob64u;\nexports.b64utohex = b64utohex;\nexports.utf8tob64u = utf8tob64u;\nexports.b64utoutf8 = b64utoutf8;\nexports.utf8tob64 = utf8tob64;\nexports.b64toutf8 = b64toutf8;\nexports.utf8tohex = utf8tohex;\nexports.hextoutf8 = hextoutf8;\nexports.hextorstr = hextorstr;\nexports.rstrtohex = rstrtohex;\nexports.hextob64 = hextob64;\nexports.hextob64nl = hextob64nl;\nexports.b64nltohex = b64nltohex;\nexports.hextopem = hextopem;\nexports.pemtohex = pemtohex;\nexports.hextoArrayBuffer = hextoArrayBuffer;\nexports.ArrayBuffertohex = ArrayBuffertohex;\nexports.zulutomsec = zulutomsec;\nexports.msectozulu = msectozulu;\nexports.zulutosec = zulutosec;\nexports.zulutodate = zulutodate;\nexports.datetozulu = datetozulu;\nexports.uricmptohex = uricmptohex;\nexports.hextouricmp = hextouricmp;\nexports.ipv6tohex = ipv6tohex;\nexports.hextoipv6 = hextoipv6;\nexports.hextoip = hextoip;\nexports.iptohex = iptohex;\nexports.ucs2hextoutf8 = ucs2hextoutf8;\nexports.encodeURIComponentAll = encodeURIComponentAll;\nexports.newline_toUnix = newline_toUnix;\nexports.newline_toDos = newline_toDos;\nexports.hextoposhex = hextoposhex;\nexports.intarystrtohex = intarystrtohex;\nexports.strdiffidx = strdiffidx;\nexports.oidtohex = oidtohex;\nexports.hextooid = hextooid;\nexports.strpad = strpad;\nexports.bitstrtoint = bitstrtoint;\nexports.inttobitstr = inttobitstr;\nexports.bitstrtobinstr = bitstrtobinstr;\nexports.binstrtobitstr = binstrtobitstr;\nexports.isBase64URLDot = isBase64URLDot;\nexports.namearraytobinstr = namearraytobinstr;\nexports.extendClass = extendClass;\nexports.foldnl = foldnl;\nexports.b64topem = b64topem;\nexports.pemtob64 = pemtob64;\nexports.timeogen = timetogen;\nexports.aryval = aryval;\n\n// name spaces\nexports.KJUR = KJUR;\nexports.crypto = KJUR.crypto;\nexports.asn1 = KJUR.asn1;\nexports.jws = KJUR.jws;\nexports.lang = KJUR.lang;\n\nexports.VERSION = VERSION;\nexports.VERSION_FULL = VERSION_FULL;\n\n\n\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","__rest$2","__awaiter$1","defaultConfig","logger","gateway","webPlatform","libraries","exposeAPI","parseConfig","config","_a","_b","_c","isPlatformInternal","port","combined","assign","systemLogger","level","checkSingleton","ioConnectBrowserNamespace","window","glue42core","iobrowser","webStarted","Error","enterprise","enterpriseConfig","windows","layouts","appManager","channels","IODesktop","Glue","ok$1","ok","err$1","error","asPromise$1","r","withDefault$1","defaultValue","withException$1","map$1","f","map2$1","ar","br","mapError$1","andThen$1","__assign$2","n","arguments","this","__rest$1","isEqual$1","a","b","Array","isArray","keys","isJsonArray$1","json","isJsonObject$1","typeString$1","JSON","stringify","expectedGot$1","expected","got","printPath$1","paths","map","path","join","prependAt$1","newAt","at","rest","Decoder$1","Decoder","decode","_this","run","kind","input","message","runPromise","runWithException","andThen","where","test","errorMessage","succeed","fail","string","number","boolean","constant","object","decoders","obj","key","undefined","array","decoder","reduce","acc","v","arr","concat","err$$1","decodeValue_1","tuple","nth","union","ad","bd","_i","oneOf","intersection","ds","anyJson","unknownJson","dict","optional","errors","errorsList","withDefault","valueAt","jsonAtPath","slice","fixedValue","lazy","mkDecoder","string$1","number$1","boolean$1","anyJson$1","constant$1","object$1","array$1","optional$1","oneOf$1","connectBrowserAppProps","fdc3v2AppProps","err","asPromise","withException","map2","mapError","__assign$1","isEqual","isJsonArray","isJsonObject","typeString","expectedGot","printPath","prependAt","nonEmptyStringDecoder$1","nonNegativeNumberDecoder$1","num","intentDefinitionDecoder$1","name","displayName","contexts","customConfig","v2TypeDecoder","v2DetailsDecoder","url","v2IconDecoder","src","size","type","v2ScreenshotDecoder","label","v2ListensForIntentDecoder","resultType","v2IntentsDecoder","listensFor","raises","v2UserChannelDecoder","broadcasts","v2AppChannelDecoder","description","v2InteropDecoder","intents","userChannels","appChannels","glue42ApplicationDetailsDecoder","top","left","width","height","glue42HostManifestsBrowserDecoder","title","version","customProperties","icon","caption","details","hidden","hostManifestsBrowserDecoder","Glue42","v1DefinitionDecoder","appId","manifest","manifestType","tooltip","contactEmail","supportEmail","publisher","images","icons","v2LocalizedDefinitionDecoder","lang","categories","screenshots","moreInfo","hostManifests","interop","v2DefinitionDecoder","localizedVersions","allDefinitionsDecoder","parseDecoderErrorToStringMessage","FDC3Service$1","constructor","fdc3ToDesktopDefinitionType","web","native","citrix","onlineNative","other","toApi","isFdc3Definition","bind","parseToBrowserBaseAppData","parseToDesktopAppConfig","definition","decodeRes","isFdc3","reason","userProperties","getUserPropertiesFromDefinition","createOptions","getUrl","baseApplicationData","getIntentsFromV2AppDefinition","getIconFromDefinition","fdc3","definitionVersion","mergeBaseAppDataWithGlueManifest","fdc3v1Definition","fdc3v2Definition","desktopDefinition","mergeDesktopConfigWithGlueManifest","fromEntries","entries","filter","includes","parsedManifest","parse","fdc3Intents","fdc3Intent","intentName","intentData","_d","find","iconDef","baseAppData","hostManifestDefinition","baseApplicationDefinition","appConfig","decoders$1","common","nonEmptyStringDecoder","nonNegativeNumberDecoder","INTENTS_ERRORS","IoC$1","_decoders","_errors","_fdc3","FDC3Service","ioc","optionalNonEmptyStringDecoder","libDomainDecoder","windowOperationTypesDecoder","appManagerOperationTypesDecoder","layoutsOperationTypesDecoder","notificationsOperationTypesDecoder","systemOperationTypesDecoder","windowRelativeDirectionDecoder","windowBoundsDecoder","windowOpenSettingsDecoder","context","relativeTo","relativeDirection","windowId","layoutComponentId","openWindowConfigDecoder","options","windowHelloDecoder","coreWindowDataDecoder","simpleWindowDecoder","helloSuccessDecoder","isWorkspaceFrame","windowTitleConfigDecoder","focusEventDataDecoder","hasFocus","windowMoveResizeConfigDecoder","relative","windowBoundsResultDecoder","bounds","frameWindowBoundsResultDecoder","windowUrlResultDecoder","anyDecoder","boundsDecoder","instanceDataDecoder","id","applicationName","applicationDetailsDecoder","intentDefinitionDecoder","applicationDefinitionDecoder","allApplicationDefinitionsDecoder","definitions","mode","appRemoveConfigDecoder","appsExportOperationDecoder","applicationDataDecoder","instances","baseApplicationDataDecoder","appDirectoryStateChangeDecoder","appsAdded","appsChanged","appsRemoved","appHelloSuccessDecoder","apps","initialChannelId","basicInstanceDataDecoder","applicationStartConfigDecoder","waitForAGMReady","forceChromeTab","channelId","layoutTypeDecoder","componentTypeDecoder","windowComponentStateDecoder","createArgs","windowState","restoreState","instanceId","isCollapsed","isSticky","restoreSettings","groupId","groupZOrder","windowLayoutComponentDecoder","componentType","application","state","windowLayoutItemDecoder","appName","allowExtract","allowReorder","showCloseButton","isMaximized","groupLayoutItemDecoder","children","columnLayoutItemDecoder","rowLayoutItemDecoder","workspaceLayoutComponentStateDecoder","workspaceLayoutComponentDecoder","workspaceFrameComponentStateDecoder","selectedWorkspace","workspaces","workspaceFrameComponentDecoder","glueLayoutDecoder","components","metadata","newLayoutOptionsDecoder","ignoreInstances","restoreOptionsDecoder","closeRunningInstance","closeMe","timeout","layoutSummaryDecoder","simpleLayoutConfigDecoder","saveLayoutConfigDecoder","layout","restoreLayoutConfigDecoder","getAllLayoutsConfigDecoder","allLayoutsFullConfigDecoder","importModeDecoder","layoutsImportConfigDecoder","isManagerOperation","allLayoutsSummariesResultDecoder","summaries","simpleLayoutResultDecoder","optionalSimpleLayoutResult","setDefaultGlobalConfigDecoder","intentsOperationTypesDecoder","intentHandlerDecoder","applicationTitle","applicationDescription","applicationIcon","contextTypes","instanceTitle","intentResolverResponseDecoder","intent","handler","intentDecoder","handlers","intentTargetDecoder","app","instance","intentContextDecoder","data","intentsDecoder","wrappedIntentsDecoder","intentFilterDecoder","contextType","findFilterDecoder","wrappedIntentFilterDecoder","intentRequestDecoder","target","waitUserResponseIndefinitely","raiseRequestDecoder","resolverConfigDecoder","enabled","waitResponseTimeout","raiseIntentRequestDecoder","intentRequest","resolverConfig","intentResultDecoder","request","handlersFilterDecoder","openResolver","applicationNames","filterHandlersResultDecoder","filterHandlersWithResolverConfigDecoder","filterHandlersRequest","AddIntentListenerRequestDecoder","AddIntentListenerDecoder","intentInfoDecoder","getIntentsResultDecoder","channelNameDecoder","channelNames","interopActionSettingsDecoder","method","glue42NotificationActionDecoder","action","notificationStateDecoder","activeNotificationsCountChangeDecoder","count","notificationDefinitionDecoder","badge","body","dir","image","renotify","requireInteraction","silent","tag","timestamp","vibrate","glue42NotificationOptionsDecoder","clickInterop","actions","focusPlatformOnDefaultClick","severity","showToast","showInPanel","notificationSetStateRequestDecoder","channelContextDecoder","meta","color","raiseNotificationDecoder","settings","raiseNotificationResultDecoder","permissionRequestResultDecoder","permissionGranted","permissionQueryResultDecoder","permission","notificationEventPayloadDecoder","notificationFilterDecoder","allowed","blocked","notificationsConfigurationDecoder","enable","enableToasts","sourceFilter","notificationsConfigurationProtocolDecoder","configuration","strictNotificationsConfigurationProtocolDecoder","platformSaveRequestConfigDecoder","layoutType","layoutName","saveRequestClientResponseDecoder","windowContext","permissionStateResultDecoder","simpleAvailabilityResultDecoder","isAvailable","simpleItemIdDecoder","itemId","operationCheckResultDecoder","isSupported","operationCheckConfigDecoder","operation","workspaceFrameBoundsResultDecoder","themeDecoder","simpleThemeResponseDecoder","theme","allThemesResponseDecoder","themes","selectThemeConfigDecoder","notificationsDataDecoder","simpleNotificationDataDecoder","notification","allNotificationsDataDecoder","notifications","simpleNotificationSelectDecoder","getWindowIdsOnChannelDataDecoder","channel","getWindowIdsOnChannelResultDecoder","windowIds","channelsOperationTypesDecoder","getMyChanelResultDecoder","windowWithChannelFilterDecoder","wrappedWindowWithChannelFilterDecoder","getWindowIdsWithChannelsResultDecoder","windowIdsWithChannels","startApplicationContextDecoder","startApplicationOptionsDecoder","reuseId","joinChannelDataDecoder","windowChannelResultDecoder","prefsOperationTypesDecoder","appPreferencesDecoder","lastUpdate","basePrefsConfigDecoder","getPrefsResultDecoder","prefs","getAllPrefsResultDecoder","all","changePrefsDataDecoder","prefsHelloSuccessDecoder","platform","operations$9","openWindow","dataDecoder","resultDecoder","windowHello","windowAdded","windowRemoved","getBounds","getFrameBounds","moveResize","focus","close","getTitle","setTitle","focusChange","getChannel","getDefaultExportFromCjs$1","x","__esModule","createRegistry$1","errorHandling","_userErrorHandler","callbacks","_handleError","exceptionArtifact","errParam","msg","stack","console","add","callback","replayArgumentsArr","callbacksForKey","push","setTimeout","forEach","replayArgument","allForKey","element","index","execute","argumentsArr","results","clear","clearKey","default","lib$3","WebWindowModel","_id","_name","_bridge","registry","myCtxKey","clean","ctxUnsubscribe","processSelfFocusEvent","me","isFocused","contextLib","subscribe","getURL","resizeTo","moveTo","getContext","updateContext","setContext","onContextUpdated","onFocusChanged","send","dimension","targetBounds","commandArgs","open","ttl","get","ctx","update","set","includeOperationCheck","systemOperations","operationCheck","getWorkspaceWindowFrameBounds","PromiseWrap","promise","timeoutMilliseconds","timeoutMessage","promiseActive","clearTimeout","catch","PromisePlus$1","executor","WindowsController$1","allWindowProjections","start","coreGlue","subLogger","trace","publicWindowId","addWindowOperationExecutors","bridge","channelsController","platformRegistration","registerWithPlatform","initializeFocusTracking","api","handlePlatformShutdown","focusEventHandler","document","removeEventListener","handleBridgeMessage","args","operationName","operationData","windowSuccess","waitForWindowAdded","list","projection","findById","my","onWindowAdded","onWindowRemoved","onWindowGotFocus","onWindowLostFocus","handleFocusChangeEvent","handleWindowAdded","handleWindowRemoved","handleGetBounds","handleGetTitle","handleGetUrl","handleMoveResize","handleSetTitle","handleGetChannel","sayHello","myWindow","w","myProjection","buildWebWindow","currentWindows","focusData","foundProjection","model","keyToExecute","some","webWindowProjection","removed","screenTop","screenLeft","innerWidth","innerHeight","location","href","targetTop","targetLeft","targetHeight","targetWidth","moveMethod","moveBy","resizeMethod","resizeBy","warn","transmitFocusChange","defineEventListeners","processFocusEvent","foundWindow","unsubscribe","addedWindow","eventData","addEventListener","GlueWebPlatformControlName","GlueWebPlatformStreamName","GlueClientControlName","GlueCorePlusThemesStream","GlueBridge","communicationId","platformMethodTimeoutMs","interopInstance","stop","running","sub","unregister","controllers","checkWaitMethod","systemId","registerAsync","_","success","passMessageController","onData","pkg","getInteropInstance","servers","peerId","domain","webOptions","checkOperationSupported","operationResult","transmitMessage","createNotificationsSteam","methods","nameMatch","serverMatch","getServers","server","unSub","serverMethodAdded","decodeResult","resolutionData","messageData","invocationResult","baseErrorMessage","invoke","all_return_values","all_errors","invocationErrorMessage","returned","operations$8","appHello","appDirectoryStateChange","instanceStarted","instanceStopped","applicationStart","instanceStop","import","remove","export","AppManagerController","baseApplicationsTimeoutMS","appImportTimeoutMS","applications","addOperationsExecutors","sessionController","onInstanceStarted","onInstanceStopped","startApplication","startOptions","forceTab","openResult","buildInstance","getApplication","verifiedName","getInstances","myInstance","inMemory","getApplications","onAppAdded","onAppChanged","onAppRemoved","handleAppDirectoryStateChange","handleInstanceStartedMessage","handleInstanceStoppedMessage","handleApplicationAddedMessage","handleApplicationChangedMessage","handleApplicationRemovedMessage","appData","buildApplication","appIndex","findIndex","splice","instanceData","instIdx","inst","instIdxApps","parseResult","soFar","valid","invalid","responseTimeout","methodResponseTimeoutMs","imported","joinInitialChannel","instancesSoFar","findMyInstance","channelsStorageData","getWindowData","currentName","foundInstance","InstanceModel","agm","freeze","ApplicationModel","controller","verifiedContext","verifiedOptions","operations$7","layoutAdded","layoutChanged","layoutRemoved","getAll","save","restore","clientSaveRequest","getGlobalPermissionState","requestGlobalPermission","checkGlobalActivated","getDefaultGlobal","setDefaultGlobal","clearDefaultGlobal","LayoutsController$1","defaultLayoutRestoreTimeoutMS","windowsController","onAdded","onChanged","onRemoved","onSaveRequested","subscribeOnSaveRequested","getMultiScreenPermissionState","requestMultiScreenPermission","getGlobalTypeState","handleOnAdded","handleOnChanged","handleOnRemoved","handleSaveRequest","layoutsToImport","validLayout","invocationTimeout","response","saveRequestSubscription","onSaveRequestResponse","currentState","amIWorkspaceFrame","isPlatformFrame","activated","operations$6","raiseNotification","requestPermission","notificationShow","notificationClick","getPermission","notificationRaised","notificationClosed","click","clearAll","clearOld","configure","getConfiguration","configurationChanged","setState","activeCountChange","stateChange","shortidExports$1","shortid$3","exports","libExports$1","lib$2","seed$1","getNextValue$1","setSeed$3","_seed_","randomFromSeed$3","nextValue","seed","randomFromSeed$2","ORIGINAL$1","alphabet$5","previousSeed$1","shuffled$1","reset$1","setCharacters$1","_alphabet_","unique","split","item","ind","lastIndexOf","characters$1","setSeed$2","shuffle$1","characterIndex","sourceArray","targetArray","Math","floor","getShuffled$1","lookup$1","get$1","alphabet_1$1","characters","lookup","shuffled","crypto$1","crypto","msCrypto","randomByte$1","getRandomValues","Uint8Array","bytes","random","randomByteBrowser$1","format_browser$1","alphabet","mask","log","LN2","alphabet$4","random$1","format$1","generate$3","loopCounter","str","pow","generate_1$1","generate$2","REDUCE_TIME$1","version$3","counter$1","previousSeconds$1","build$1","clusterWorkerId","seconds","Date","now","build_1$1","alphabet$3","isShortId$1","RegExp","replace","isValid$1","module","build","isValid","generate","seedValue","worker","workerId","newCharacters","shortid$2","NotificationsController$1","notificationsSettings","buildNotificationFunc","buildNotification","addOperationExecutors","raise","onRaised","onClosed","getFilter","setFilter","onConfigurationChanged","onActiveCountChanged","onStateChanged","raiseResult","verifiedConfig","verifiedFilter","handleNotificationShow","handleNotificationClick","handleNotificationRaised","handleNotificationClosed","handleConfigurationChanged","handleActiveCountChanged","handleNotificationStateChanged","onshow","_e","defaultClick","actionClicks","actionDef","onclick","operations$5","getIntents","findIntent","raiseIntent","filterHandlers","getIntentsByHandler","GLUE42_FDC3_INTENTS_METHOD_PREFIX","INTENTS_RESOLVER_INTEROP_PREFIX","INTENTS_RESOLVER_APP_NAME","DEFAULT_RESOLVER_RESPONSE_TIMEOUT","ADDITIONAL_BRIDGE_OPERATION_TIMEOUT","INTENTS_RESOLVER_WIDTH","INTENTS_RESOLVER_HEIGHT","MAX_SET_TIMEOUT_DELAY","DEFAULT_PICK_HANDLER_BY_TIMEOUT","IntentsController$1","myIntents","Set","useIntentsResolverUI","unregisterIntentPromises","legacyIntentsController","legacyIntentsHelper","checkIfIntentsResolverIsEnabled","addIntentListener","register","validatedIntentRequest","requestWithResolverInfo","getResolverConfigByRequest","isRaiseOperationSupported","supported","intentResolverResponseTimeout","waitTimeoutMs","handlerFilter","intentsResolverAppName","registerPromise","methodName","buildInteropMethodName","has","delete","intentFlag","flags","_initialCallerId","caller","unsubscribeIntent","intentFilter","intentFilterObj","enableIntentsResolverUI","clearUnregistrationPromise","promiseToRemove","unregisterPromise","checkIfAtLeastOneFilterIsPresent","filterHandlersRequestWithResolverConfig","errorMsg","existingValidContextTypes","existingValidApplicationNames","Glue42CoreMessageTypes","platformUnload","transportSwitchRequest","transportSwitchResponse","getCurrentTransport","getCurrentTransportResponse","checkPreferredLogic","checkPreferredConnection","checkPreferredLogicResponse","checkPreferredConnectionResponse","webPlatformTransportName","latestFDC3Type","operations$4","addChannel","getMyChannel","getWindowIdsOnChannel","getWindowIdsWithChannels","joinChannel","ChannelsController$1","GlueWebChannelsPrefix","SubsKey","ChangedKey","replaySubscribe","channelContext","contextName","createContextName","__","___","extraData","updaterId","un","handleGetMyChannel","handleJoinChannel","getAllChannelNames","channelName","current","switchToChannel","changed","leave","subscribeFor","publish","getMy","getWindowsOnChannel","getWindowsWithChannels","startsWith","channelContextName","unsubscribeFunc","currentChannelName","setWindowData","updateData","fdc3Type","getFDC3Type","setPathSupported","pathValues","setPaths","fdc3PropsArr","currentChannel","latest_fdc3_type","info","windowsWithChannels","operations$3","getEnvironment","getBase","platformShutdown","SystemController$1","setEnvironment","processPlatformShutdown","values","preferredConnectionController","eventsDispatcher","environment","base","globalNamespace","globalNamespaceName","globalObj","Notification$1","extensionConfigDecoder","widget","inject","operations$2","clientHello","ExtController","unsubFuncs","contentCommands","widgetVisualizationPermission","handle","handleWidgetVisualizationPermission","changeChannel","handleChangeChannel","unsub","unsubDispatcher","onContentMessage","handleContentMessage","unsubChannels","sendContentMessage","command","newChannel","foundHandler","EventsDispatcher","glue42EventName","events","notifyStarted","handleNotifyStarted","contentInc","handleContentInc","requestGlue","handleRequestGlue","_handleMessage","glue","wireCustomEventListener","announceStarted","handleMessage","event","detail","namespace","glue42","glue42Event","eventName","payload","CustomEvent","dispatchEvent","PreferredConnectionController$1","transactionTimeout","transactionLocks","reconnectCounter","webPlatformMessagesUnsubscribe","coreConfig","connection","transport","isPreferredActivated","webPlatformTransport","onMessage","handleWebPlatformMessage","transportState","getCurrentPlatformTransportState","checkSwitchTransport","isConnectedToPlatform","transactionId","handleTransportSwitchRequest","handleGetCurrentTransportResponse","handleCheckPreferredLogic","handleCheckPreferredConnection","handlePlatformUnload","reEstablishPlatformPort","connect","myCurrentTransportName","transportName","switchTransport","setConnected","transaction","setTransaction","sendPlatformMessage","lock","transactionLock","transactionLive","lift","sendObject","switchSettings","ws","WebSocket","onerror","live","onopen","manualSetReadyState","LegacyIntentsHelper","appManagerController","intentsResolverResponsePromises","configureLogger","findIntentFn","checkIfResolverShouldBeOpened","invokeRaiseIntent","raiseIntentWithResolverApp","loggerInst","responseMethodName","registerResponseMethod","resolverInstance","openIntentResolverApplication","handleInstanceResponse","stopResolverInstance","requestObj","resolverResponseHandler","startContext","buildStartContext","buildStartOptions","subscribeOnInstanceStopped","createResponsePromise","cleanUpIntentResolverPromise","intentPromise","callerId","getTargetBounds","tryGetWindowBasedBounds","tryGetWorkspaceBasedBounds","defaultBounds","screen","availTop","availLeft","myWindowBounds","myWorkspaceBounds","res","rej","searchedInstance","checkIfIntentHasMoreThanOneHandler","operations$1","getCurrent","select","ThemesController$1","activeThemeSubs","themesSubscription","subReady","configureThemeSubscription","unsubFunc","themeUnsub","validation","themeChanged","registryUnsub","SessionStorageController$1","sessionStorage","allNamespaces","windowNamespace","getItem","setItem","allData","operations","prefsChanged","prefsHello","PrefsController$1","prefsHelloSuccess","platformAppName","clearFor","setFor","updateFor","getMyAppName","verifiedApp","verifiedData","subscriptionKey","getSubscriptionKey","myAppName","IoC$3","layoutsController","notificationsController","intentsController","system","systemController","extension","extensionController","themesController","prefsController","_communicationId","_publicWindowId","_windowsControllerInstance","WindowsController","_appManagerControllerInstance","_layoutsControllerInstance","LayoutsController","_themesControllerInstance","ThemesController","_notificationsControllerInstance","NotificationsController","_intentsControllerInstance","IntentsController","_legacyIntentsHelperInstance","_coreGlue","_systemControllerInstance","SystemController","_channelsControllerInstance","ChannelsController","_prefsControllerInstance","PrefsController","_extensionController","_eventsDispatcher","_bridgeInstance","_preferredConnectionController","PreferredConnectionController","_sessionController","SessionStorageController","_webConfig","defineGlue","defineConfig","Notification","applicationInstances","version$2","createFactoryFunction","coreFactoryFunction","userConfig","glue42gd","iodesktop","IoC","lib","extendStatics","d","setPrototypeOf","__proto__","__extends","TypeError","String","create","__assign","__generator","y","g","sent","trys","ops","verb","throw","return","Symbol","iterator","op","pop","__spreadArray","to","from","pack","l","MetricTypes","STRING","NUMBER","TIMESTAMP","OBJECT","getMetricTypeByValue","metric","getTypeByValue","serializeMetric","serializedMetrics","memo","innerType","composite","defineNestedComposite","normalizeMetricName","getMetricValueByType","publishNestedComposite","getTime","Boolean","toString","flatten","flat","toFlatten","getHighestState","sort","aggregateDescription","m","idx","composeMsgForRootStateMetric","merged","root","getAggregateState","highestState","gw3","joinPromise","session","replayRepo","repo","replaySystem","createSystem","metrics","createMetric","subSystems","ss","createMetricsMsg","parent","Description","Value","metricClone","cloneMetric","updateMetricCore","canUpdate","publishMetricsMsg","sendFireAndForget","canUpdateMetric","init","resolveReadyPromise","onJoined","reconnect","defineRootMetricsMsg","service","updateSystem","shadowedUpdateMetric","stateObj","rootMetric","peer_id","updateMetric","Helpers","validate","BaseMetric","defineProperty","enumerable","configurable","newValue","NumberMetric","_super","incrementBy","increment","decrement","decrementBy","ObjectMetric","mergeValues","k","StringMetric","TimestampMetric","protocol","separator","_transport","_description","_repo","_parent","_path","_buildPath","shadowedSystem","_state","_subSystems","_metrics","_getOrCreateMetric","metricObject","expectedType","metricDef","matching","shadowedMetric","existing","subSystem","nameSystem","descriptionSystem","match","_system","getState","stateDescription","stringMetric","timestampMetric","objectMetric","numberMetric","aggState","shadowedSubSystem","Repository","addSystemMetrics","clickStream","rootSystem","useClickStream","navigator","userAgent","clickStream_1","documentClickHandler","className","getAttribute","tagName","toLowerCase","page","attachEvent","urlMetric","appNameMetric","startUrl","NullProtocol","PerfTracker","initialPublishTimeout","publishInterval","lastCount","scheduleCollection","collect","setInterval","collectMemory","collectEntries","memory","performance","totalJSHeapSize","usedJSHeapSize","allEntries","getEntries","jsonfiedEntries","toJSON","disableAutoAppSystem","addFAVSupport","initPerf","pagePerformanceMetrics","perfConfig","featureMetric","reportingSystem","def","commonjsGlobal","globalThis","global","self","getDefaultExportFromCjs","createRegistry","lib$1","InProcTransport","gw","facade","_client","messageHandler","client","_msg","onConnectedChanged","SharedWorkerTransport","workerFile","SharedWorker","onmessage","postMessage","Utils","isNode","_isNode","process","PromiseWrapper","resolved","delay","time","timers","getAllTimers","timer","timerName","marks","endTime","period","startTime","mark","currentTime","diff","timerObj","WebSocketConstructor","require","WS","startupTimer","_running","_registry","wsRequests","waitForSocketConnection","pw","failed","readyState","openSocket","retryInterval","retriesLeft","reconnectInterval","reconnectAttempts","notifyForSocketState","debug","initiateSocket","retries","seen_1","WeakSet","notifyStatusChanged","onclose","identity","wsRequest","status","shortidExports","shortid$1","libExports","getNextValue","setSeed$1","randomFromSeed$1","randomFromSeed","ORIGINAL","alphabet$2","previousSeed","reset","setCharacters","setSeed","shuffle","getShuffled","alphabet_1","randomByte","randomByteBrowser","format_browser","alphabet$1","format","generate$1","generate_1","REDUCE_TIME","version$1","counter","previousSeconds","build_1","isShortId","shortid","domainSession","successMessages","errorMessages","_latestOptions","isJoined","tryReconnecting","_connectionOn","disconnected","loggedIn","on","handleSuccessMessage","handleErrorMessage","sm","requestsMap","destination","wasReconnect","handleJoined","requestId","request_id","entry","getNextRequestId","skipPeerId","successMsg","_tag","onLeft","connected","GW3ProtocolImpl","protocolVersion","datePrefix","datePrefixLen","dateMinLen","datePrefixFirstChar","_isLoggedIn","shouldTryLogin","initialLogin","initialLoginAttempts","sessions","handleDisconnected","ping","processStringMessage","substring","milliseconds","parseInt","isNaN","ex","msgType","createStringMessage","oldToJson","datePrefix_1","processObjectMessage","createObjectMessage","login","authentication","e_1","helloMsg","sendOptions","welcomeMsg","token","err_1","loginConfig","username","password","gatewayToken","getNewGWToken","flowName","provider","flowCallback","sessionId","secret","providerContext","globalDomain","maxRetries","Buffer","resolvedIdentity","resolved_identity","availableDomains","available_domains","access_token","setLoggedIn","logout","promises","pingTimer","domainName","domainLogger","authToken","getGWToken","MessageReplayerImpl","specs","specsNames","messages","subs","subsRefCount","specs_1","spec","name_1","_loop_1","refCount","this_1","processMessage","types","isDone","name_2","drain","off","PromisePlus","WebPlatformTransport","iAmConnected","parentReady","extContentAvailable","extContentConnecting","extContentConnected","parentInExtMode","webNamespace","parentPingTimeout","connectionRequestTimeout","defaultTargetString","connectionAccepted","handleConnectionAccepted","connectionRejected","handleConnectionRejected","connectionRequest","handleConnectionRequest","parentPing","handleParentPing","platformPing","handlePlatformPing","platformReady","handlePlatformReady","clientUnload","handleClientUnload","manualUnload","handleManualUnload","extConnectionResponse","handleExtConnectionResponse","extSetupRequest","handleExtSetupRequest","gatewayDisconnect","handleGatewayDisconnect","gatewayInternalConnect","handleGatewayInternalConnect","glue42ext","setUpMessageListener","setUpUnload","setupPlatformUnloadListener","parentType","glue42ExtOut","clientId","myClientId","ownWindowId","initiateInternalConnection","initiateRemoteConnection","connectionResolve","connectionReject","bridgeInstanceId","getMyWindowId","clientType","selfAssignedWindowId","parentWindowId","isParentCheckSuccess","parentCheck","allowedOrigins","origin","checkMessageTypeValid","messageType","parentPingResolve","parentPingInterval","clearInterval","source","handleAcceptanceOfMyRequest","handleAcceptanceOfGrandChildRequest","processExtContentConnection","extData","glue42ExtInc","child","c","grandChildId","rejectConnectionRequest","extMode","typeToValidate","rejection","requestConnectionPermissionFromExt","waitForContentScript","extConnectionResolve","extConnectionReject","approved","content","findParent","connectionNotPossibleMsg","myInsideParents","myOutsideParents","uniqueParents","getPossibleParentsInWindow","getPossibleParentsOutsideWindow","opener","confirmParent","currentWindow","targets","waitForInvocations","invocations","AsyncSequelizer","minSequenceInterval","queue","isExecutingQueue","enqueue","executeQueue","actionResult","error_1","shift","intervalBreak","Connection","messageHandlers","ids","_connected","isTrace","_swapTransport","_switchInProgress","_transportSubscriptions","_sequelizer","inproc","sharedWorker","canPublish","unsubConnectionChanged","handleConnectionChanged","unsubOnMessage","handleTransportMessage","_defaultTransport","switchTargetTransport","verifyPromise","isSwitchSuccess","getNewSecondaryTransport","_targetTransport","_targetAuth","getNewSecondaryAuth","_defaultAuth","verifyConnection","onLibReAnnounced","setLibReAnnounced","isObjectBasedTransport","strMessage","isLoggedIn","currentServer","authRequest","newAuth","error_2","transportSwap","prepareDefaultSwap","distributeMessage","handlerId","loggerError","replaySpecs","replayer","msgObj","ready","transportConfig","auth","order","Logger","logFn","subLoggers","customLogFn","loggerFullName","includeTimeAndLevel","existingSub","publishLevel","_publishLevel","consoleLevel","_consoleLevel","publishMessage","compareWith","loggerName","Interop","InteropMethodName","prefix","date","getHours","getMinutes","getSeconds","getMilliseconds","toPrint","GW_MESSAGE_CREATE_CONTEXT","GW_MESSAGE_ACTIVITY_CREATED","GW_MESSAGE_ACTIVITY_DESTROYED","GW_MESSAGE_CONTEXT_CREATED","GW_MESSAGE_CONTEXT_ADDED","GW_MESSAGE_SUBSCRIBE_CONTEXT","GW_MESSAGE_SUBSCRIBED_CONTEXT","GW_MESSAGE_UNSUBSCRIBE_CONTEXT","GW_MESSAGE_DESTROY_CONTEXT","GW_MESSAGE_CONTEXT_DESTROYED","GW_MESSAGE_UPDATE_CONTEXT","GW_MESSAGE_CONTEXT_UPDATED","GW_MESSAGE_JOINED_ACTIVITY","ContextMessageReplaySpec","prepareConfig","ext","nodeStartingContext","startingContextString","env","_GD_STARTING_CONTEXT_","glue42electron","uid","applicationConfig","_f","pid","region","gwConfig","gwURL","uniqueAppName","appInstanceId","getConnection","windowAsAny","containerApplication","htmlContainer","containerName","bus","gwToken","getAuth","gdConsoleLevel","defaultLevel","consoleLogLevel","getLogger","reAnnounceKnownContexts","libs","customLogger","GW3ContextData","contextId","isAnnounced","activityId","updateCallbacks","hasCallbacks","lodash_clonedeepExports","lodash_clonedeep","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","boolTag","dateTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reFlags","reIsHostCtor","reIsUint","cloneableTags","freeGlobal","freeSelf","Function","freeExports","nodeType","freeModule","moduleExports","addMapEntry","pair","addSetEntry","arrayReduce","iteratee","accumulator","initAccum","isHostObject","mapToArray","overArg","func","transform","arg","setToArray","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","exec","IE_PROTO","funcToString","objectToString","reIsNative","getPrototype","getPrototypeOf","objectCreate","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeKeys","DataView","getNative","Map","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","ListCache","MapCache","Stack","__data__","arrayLikeKeys","inherited","isObjectLike","isArrayLike","isArrayLikeObject","isArguments","baseTimes","skipIndexes","isIndex","assignValue","objValue","eq","assocIndexOf","baseClone","isDeep","isFull","customizer","isObject","isArr","initCloneArray","copyArray","getTag","isFunc","buffer","copy","cloneBuffer","isPrototype","proto","initCloneObject","copyObject","getSymbols","copySymbols","baseAssign","cloneFunc","Ctor","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","typedArray","cloneTypedArray","cloneMap","regexp","lastIndex","cloneRegExp","cloneSet","symbol","initCloneByTag","stacked","props","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getAllKeys","arrayEach","subValue","baseIsNative","isFunction","arrayBuffer","getMapData","getValue","hash","cache","pairs","LARGE_ARRAY_SIZE","ArrayBuffer","ctorString","isLength","baseKeys","cloneDeep","applyContextDelta","delta","deepClone","commands","deletePath","setValueToPath","added_1","added","updated_1","updated","mergeObjectsProperties","what","withWhat","right","deepEqual","pathArr","isSubset","superObj","subObj","every","ele","GW3Bridge","_contextNameToData","_gw3Subscriptions","_nextCallbackSubscriptionNumber","_creationPromises","_contextNameToId","_contextIdToName","_protocolVersion","_contextsTempCache","_contextsSubscriptionsCache","_connection","_logger","_trackAllContexts","trackAllContexts","_reAnnounceKnownContexts","_gw3Session","resetState","reInitiateState","subscribeToContextCreatedMessages","subscribeToContextUpdatedMessages","subscribeToContextDestroyedMessages","handleContextCreatedMessage","handleContextUpdatedMessage","handleContextDestroyedMessage","contextsDomainInfo","uri","dispose","createContext","lifetime","createContextMsg","context_id","contextData","hasReceivedSnapshot","currentContext","calculatedDelta","calculateContextDeltaV2","calculateContextDeltaV1","gwResponse","handleUpdated","setPath","pathValues_1","pathValues_2","pathValue","_r","thisCallbackSubscriptionNumber","hadCallbacks","clone","subscription","subKey","joinedActivity","sentExplicitSubscription","sendSubscribe","sendUnsubscribe","destroy","oldContext","invokeUpdateCallbacks","createdMessageTypes_1","createdMessageType","contextCreatedMsg","activity_id","_systemContextsSubKey","updatedMessageTypes_1","updatedMessageType","contextUpdatedMsg","justSeen","context_snapshot","updater_id","updateCallbackIndex","updateCallback","destroyedMessageTypes_1","destroyedMessageType","destroyedMsg","cacheSoFar","ctxName","lastKnownData","flushQueue","ContextsModule","checkName","checkData","checkPath","paths_1","InvokeStatus","promisify","successCallback","errorCallback","rejectAfter","ms","clearTimeoutIfThere","Client","callProtocolSubscribe","targetServers","stream","successProxy","errorProxy","methodResponseTimeout","methodDef","method_response_timeout","wait_for_method_timeout","delayTillNow","currentServers","getServerMethodsByFilterAndTarget","retry_1","streamInfo","methodFilter","filterCopy","serverMethodMap","getMethods","methodsForInstance","getMethodsForInstance","methodAdded","onMethodAdded","methodRemoved","onMethodRemoved","serverAdded","onServerAdded","serverRemoved","onServerRemoved","onServerMethodAdded","serverMethodRemoved","onServerMethodRemoved","argumentObj","additionalOptions","getInvokePromise","methodDefinition","serversMethodMap","errorObj","additionalOptionsCopy","invokePromises","invocationMessages","tryToAwaitForMethods","supportsStreaming","objectTypes","called_with","executed_by","serversMethodPair","invId","invokePromise","race","invocationId","getInvocationResultObj","invocationResults","calledWith","invokeMessage","Success","allValues","currentValue","allErrors","currError","invResult","interval","filterByTarget","matches","myMatches","serverMethodPair","instanceMatch","localMachine","isLocal","instanceFilter","instanceDefinition","containsProps","methodMatch","repoMethod","prop","isMatch","filterValue","repoMethodValue","filterValueEl","matchingServers","resultMethodsObject","methodKey","identifier","prev","matchingMethods","ServerSubscription","branchKey","closeSingleSubscription","pushDataToSingle","Request","requestContext","accept","acceptRequestOnBranch","acceptOnBranch","branch","rejectRequest","ServerStreaming$1","ServerStreaming","onSubRequest","rc","rm","handleSubRequest","onSubAdded","handleSubAdded","onSubRemoved","handleSubRemoved","streamCallbacks","subscriptionRequestHandler","subscriptionAddedHandler","subscriptionRemovedHandler","ServerBranch","subscriptions","getSubscriptionList","closeAllSubscriptions","pushData","ServerStream","_protocol","_repoMethod","_server","branches","bList","getBranchList","def2","accepts","returns","updateRepoMethod","Server","serverRepository","currentlyUnregistering","streaming","onInvoked","onMethodInvoked","createStream","streamDef","existingStream","streamMethodDefinition","getList","serverMethod","protocolState","streamUserObject","repoId","wrappedCallbackFunction","resultCallback","resultValue","userCallback","registerCore","wrappedCallback","resultCalled_1","methodResult","userCallbackAsync","forStream","methodToBeRemoved","unregisterWithPredicate","removeMethodsOrStreams","filterPredicate","methodsOrStreamsToRemove","methodsToRemove","methodUnregPromises","addAsCurrentlyUnregistering","theFunction","unregisterInProgress","methodToExecute","invocationArgs","unStrException","_value","methodInvocationResult","InstanceWrapper","API","wrapped","getStreams","refreshWrappedObject","refresh","unwrap","user","machine","hideMethodSystemFlags","ClientRepository","methodsCount","myServer","wrapper","unwrappedInstance","addServer","serverId","serverEntry","removeServerById","methodId","removeServerMethod","addServerMethod","createMethodIdentifier","that","gatewayId","display_name","object_types","input_signature","result_signature","getServersByMethod","clientMethodDefinition","extractMethodsFromServers","hideServerMethodSystemFlags","serversWithMethodsToReplay","returnUnsubWithDelayedReplay","methodsToReplay","unsubCalled","getServerById","methodInfo","allServers","collectionToReplay","clientMethods","ServerRepository","nextId","getById","SUBSCRIPTION_REQUEST","SUBSCRIPTION_ADDED","SUBSCRIPTION_REMOVED","repository","ERR_URI_SUBSCRIPTION_FAILED","nextStreamId","handleAddInterest","handleRemoveInterest","streamingMethod","subscriptionsMap","branchKeyToStreamIdMap","streamId","getStreamId","subscription_id","subscribeMsg","stream_id","sendSubscriptionFailed","dropSubscriptionMessage","closeMultipleSubscriptions","subscriptionsToClose","drop","allSubscriptions","onSubscriptionLifetimeEvent","method_id","handlerFunc","getNextStreamId","caller_id","arguments_kv","subscriptionId","reason_uri","needleBranch","ServerProtocol","clientRepository","handleInvokeMessage","isStreaming","registerMsg","restrictions","invocation_id","UserSubscription","subscriptionData","params","trackedServers","dataCallback","queued","dataItem","closedCallback","onFailed","onConnected","setNewSubscription","newSub","TimedCache","timeoutIds","timeoutId","elementIdx","ELEMENT_TTL_MS","flush","elements","STATUS_AWAITING_ACCEPT","STATUS_SUBSCRIBED","ERR_MSG_SUB_FAILED","ERR_MSG_SUB_REJECTED","ON_CLOSE_MSG_SERVER_INIT","ON_CLOSE_MSG_CLIENT_INIT","ClientStreaming","subscriptionsList","timedCache","subscriptionIdToLocalKeyMap","nextSubLocalKey","handleErrorSubscribing","errorResponse","subLocalKey","pendingSub","callArgs","callOnClosedHandlers","handleSubscribed","acceptingServer","isFirstResponse","serverInstance","handleEventData","trackedServersFound","isPrivateData","oob","sendingServerId","receivedStreamData","requestArguments","private","onDataHandlers","queuedData","handleSubscriptionCancelled","expectedNewLength","closers","getNextSubscriptionLocalKey","registerSubscription","server_id","drainSubscriptions","drainSubscriptionsCache","subsInfo","localKey","closeSubscription","closingServer","closersCount","closingServerId","ClientProtocol","handlePeerAdded","handlePeerRemoved","handleMethodsAddedMessage","handleMethodsRemovedMessage","handleResultMessage","handleInvocationError","newPeerId","new_peer_id","remoteId","local","Number","serverInfo","removedPeerId","removed_id","methodIdList","gW3ProtocolFactory","libConfig","readyPromise","reconnectionPromises","existingSubscriptions","existingSubscriptions_1","registeredMethods","_loop_2","registeredMethods_1","handleReconnect","protocolPromise","waitForMethod","MessageBus","topic","routingKey","removeEmptyValues","routing_key","target_identity","watchOnEvent","keysMatch","cleaned","obj1","obj2","keysObj1","allMatch","IOConnectCoreFactory","_interop","_contexts","_bus","_allowTrace","preloadPromise","gdPreloadPromise","glueInitTimer","internalConfig","registerLib","inner","initTime","initEndTime","initStartTime","setupMetrics","initTimer","metricsPublishingEnabledFunc","getMetricsPublishingEnabled","setupContexts","hasActivities","activities","setupBus","setupExternalLibs","externalLibs","createCallback","setupExternalLib","authPromise","authConfig","agmConfig","RegisterInstanceMethodName","typedError","registerInstanceIfNeeded","libsReadyPromises","coreVersion","feedback","feedbackInfo","glueVer","glueConfig","browser","timing","initTimes","duration","extOptions","enrichGlue","updatePerfData","deprecatedDecorator","fn","wrong","proper","agmAny","method_added","method_removed","server_added","server_method_aded","server_method_removed","IOConnectCore","iOConnectBrowserFactory","windowAny","IOBrowser","GlueCore","legacyGlobal","ioGlobal","GlueWebPlatformWorkspacesStreamName","GlueWorkspaceFrameClientControlName","GlueWorkspacesEventsReceiverName","GlueWebIntentsPrefix","ChannelContextPrefix","serviceWorkerBroadcastChannelName","defaultNoAppWindowComponentAppName","defaultPlatformConfig","windowResponseTimeoutMs","defaultWindowOpenBounds","plugins","licenseKey","logging","defaultTheme","workspacesFrameCache","defaultNotificationsConfig","clearNotificationOnClick","defaultFetchTimeoutMs","defaultOpenerTimeoutMs","defaultPreferredDiscoveryIntervalMS","defaultClientPortRequestTimeoutMS","defaultClientPreferredLogicTestTimeoutMS","checkIsOpenerIOConnect","connectionConfig","allowedOrigin","allowedClientFallbackOrigin","pingListener","checkIfPlacedInWorkspace","fallbackToEnterprise","browserFactory","IOConnect","io","atob","o","charAt","fromCharCode","decodeURIComponent","charCodeAt","toUpperCase","header","FormData","kindOf","thing","kindOfTest","typeOfTest","isUndefined","val","isArrayBuffer","isArrayBufferView","isView","isString","isNumber","isBoolean","isPlainObject","toStringTag","isDate","isFile","isBlob","isFileList","isStream","pipe","isFormData","append","isURLSearchParams","trim","allOwnKeys","getOwnPropertyNames","len","findKey","_key","_global","isContextDefined","merge","caseless","targetKey","extend","stripBOM","inherits","superConstructor","descriptors","toFlatObject","sourceObj","destObj","propFilter","endsWith","searchString","position","toArray","isTypedArray","TypedArray","forEachEntry","matchAll","regExp","isHTMLForm","toCamelCase","p1","p2","isRegExp","reduceDescriptors","reducer","getOwnPropertyDescriptors","reducedDescriptors","descriptor","ret","defineProperties","freezeMethods","writable","toObjectSet","arrayOrString","delimiter","define","noop","toFiniteNumber","isFinite","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","generateString","isSpecCompliantForm","toJSONObject","visit","reducedValue","isAsyncFn","isThenable","utils$1","hasOwnProp","AxiosError","code","captureStackTrace","fileName","lineNumber","columnNumber","prototype$1","customProps","axiosError","cause","httpAdapter","isVisitable","removeBrackets","renderKey","dots","isFlatArray","predicates","toFormData","formData","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","el","exposedHelpers","encode$1","charMap","encodeURIComponent","AxiosURLSearchParams","_pairs","encode","buildURL","_encode","serializeFn","serialize","serializedParams","hashmarkIndex","encoder","InterceptorManager","use","synchronous","runWhen","eject","h","InterceptorManager$1","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","URLSearchParams$1","URLSearchParams","FormData$1","Blob$1","platform$1","isBrowser","classes","protocols","hasBrowserEnv","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","utils","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","stringifySafely","rawValue","parser","defaults","transitional","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","formSerializer","_FormData","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","Accept","defaults$1","ignoreDuplicateOf","parseHeaders","rawHeaders","parsed","line","$internals","normalizeHeader","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","char","buildAccessors","accessorName","arg1","arg2","arg3","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","matcher","deleted","deleteHeader","normalize","normalized","asStrings","first","computed","accessor","accessors","defineAccessor","mapped","headerValue","AxiosHeaders$1","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","ERR_BAD_REQUEST","cookies","write","expires","secure","cookie","toGMTString","read","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","isURLSameOrigin","msie","urlParsingNode","createElement","originURL","resolveURL","setAttribute","host","search","hostname","pathname","requestURL","parseProtocol","speedometer","samplesCount","min","timestamps","firstSampleTS","head","tail","chunkLength","startedAt","bytesCount","passed","round","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","isXHRAdapterSupported","XMLHttpRequest","xhrAdapter","requestData","requestHeaders","onCanceled","withXSRFToken","cancelToken","signal","unescape","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","paramsSerializer","onreadystatechange","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","setRequestHeader","withCredentials","onDownloadProgress","onUploadProgress","upload","cancel","abort","aborted","knownAdapters","http","xhr","renderReason","isResolvedHandle","adapters","getAdapter","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","decompress","beforeRedirect","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","VERSION","validators$1","deprecatedWarnings","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","opt","validator","ERR_BAD_OPTION","formatMessage","desc","opts","ERR_DEPRECATED","validators","Axios","instanceConfig","interceptors","configOrUrl","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","Axios$1","CancelToken","resolvePromise","_listeners","onfulfilled","_resolve","CancelToken$1","spread","isAxiosError","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","HttpStatusCode$1","createInstance","axios","Cancel","formToJSON","axios_1","__importDefault","mod","BaseAPI","require$$0","setOptions","currentInterceptorsId","axiosInstance","getHeaders","baseUrl","basic","includeCredentials","intercept","whoAmI","onResponseSuccessCallback","responseSuccessCallback","onResponseErrorCallback","responseErrorCallback","unloadClient","tokenString","authorizationValue","bearer","Headers","Authorization","keepalive","fetch","headerName","interceptId","systemConfig","SystemConfigAPI","getExactEntry","post","exact","getComputed","addOrReplace","removeConfigForIdentifier","PromiseWrapper$1","delayForever","ended","ClientAPI","jwt_decode_1","form_data_1","require$$1","base_1","require$$2","systemConfig_1","require$$3","promise_1","require$$4","super","customRequest","req","unload","sessionToken","sessionTokenString","refreshData","getApps","getLayouts","saveLayout","deleteUserLayout","deleteAllUserLayouts","renameLayout","newName","getDefaultLayout","setDefaultLayout","openSession","updateToken","closeSession","refreshToken","getCommands","setCommandResult","commandId","setCommandFileResult","contentsBase64","contents","getPrefs","latestKnown","getAllPrefs","setPrefs","deletePrefs","deleteAllPrefs","addFeedback","rs","withRequest","extraHeaders","fullUrl","URL","resp","statusCode","client_1","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","enumerize","enums","str1","str2","lowerize","rgxMapper","ua","arrays","j","q","regex","strMapper","windowsVersionMap","ME","XP","Vista","RT","regexes","cpu","device","engine","EDGE","os","UAParser","extensions","getResult","_navigator","_ua","_uach","userAgentData","_rgxmap","mergedRegexes","_isSelfNav","getBrowser","_browser","majorize","brave","isBrave","getCPU","_cpu","getDevice","_device","mobile","standalone","maxTouchPoints","getEngine","_engine","getOS","_os","getUA","setUA","CPU","DEVICE","ENGINE","OS","$","jQuery","Zepto","aa","ba","ea","fa","ha","ia","ja","ka","la","ma","na","execScript","oa","Bi","Wd","pa","qa","ra","ta","va","wa","xa","ya","za","Aa","Ba","Ca","shiftLeft","multiply","compare","max","ceil","isSafeInteger","abs","substr","and","or","xor","Ea","Fa","Ga","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","repeat","Ya","Za","Lc","getLength","$a","ab","bb","cb","db","eb","fb","hb","ib","jb","kb","lb","qb","rb","sb","tb","ub","vb","wb","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Ib","Jb","_RBRACE_","_COLON_","_BANG_","_QMARK_","_BSLASH_","_SLASH_","_PERCENT_","_PLUS_","_SHARP_","_LBRACE_","_BAR_","_LBRACK_","_EQ_","_TILDE_","_RBRACK_","_GT_","_SINGLEQUOTE_","_CIRCA_","_AMPERSAND_","_DOUBLEQUOTE_","_CARET_","_LT_","_STAR_","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Tb","da","Ub","Vb","sa","Wb","Xb","Yb","$b","Zb","ac","bc","cc","dc","fc","gc","I","ic","hc","jc","kc","lc","mc","zc","nc","oc","pc","He","qc","Ie","sc","Cf","tc","uc","vc","wc","xc","yc","R","Ac","Bc","S","Cc","Ec","Dc","Fc","Gc","Hc","Ic","Jc","Kc","ca","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","U","Uc","Vc","Dd","Wc","Le","Xc","gd","Yc","kd","Zc","Ed","$c","jd","Ke","cd","dd","Fe","ed","yd","fd","Ad","hd","Bd","Ng","O","F","ld","md","nd","od","ei","B","M","pd","Og","Pg","Qg","Rg","qd","imul","rd","sd","td","ud","vd","wd","xd","oi","Infinity","zd","u","Cd","pi","z","Bf","Fd","Gd","A","Hd","Id","W","xf","pb","gb","E","H","K","Ha","mb","Ge","Jd","Kd","Ld","Ae","Md","Nd","J","Od","Pd","Qd","Rd","Sd","Td","Ud","Vd","Xd","Yd","Zd","$d","ae","be","Cg","ce","Af","de","C","ee","fe","ge","he","N","D","ie","oe","pe","qe","je","ke","le","ne","re","te","Eg","ue","G","Je","se","Ig","yf","ve","we","xe","Pe","ye","T","ze","Be","Ce","De","Ee","li","xi","ti","Lg","yi","Me","ki","Ne","Oe","Qe","Re","Se","parseFloat","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","df","ef","Mg","ff","gf","hf","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","tf","si","uf","vf","wi","wf","zf","Kg","Df","Ef","Ff","ga","end","Hf","Gf","If","Jf","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","nb","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","Kh","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","Ph","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Dg","Fg","Gg","Hg","Q","Jg","Sg","Tg","yq","dt","Mi","tt","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","ih","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Hb","node","Lh","Mh","Nh","Oh","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","ri","Yh","Zh","$h","ai","ui","bi","ci","di","fi","gi","hi","ii","ji","mi","ni","qi","vi","advance","zi","Ai","ec","Ci","Di","Ei","Hi","Ii","Ji","Ki","Li","Gi","Fi","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","fj","gj","hj","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Yt","Fj","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","Xj","Yj","Zj","ak","bk","POSITIVE_INFINITY","NEGATIVE_INFINITY","ck","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","dk","ek","fk","gk","hk","ik","jk","kk","lk","mk","nk","qk","uk","vk","wk","xk","yk","zk","pk","rk","sk","tk","Ak","Ck","Dk","Ek","Fk","Gk","Hk","Ik","Bk","Jk","Kk","Lk","Mk","Nk","Pk","Qk","Rk","Sk","Tk","Uk","Vk","Wk","V","Xk","Yk","Zk","$k","al","bl","cl","dl","fl","gl","hl","il","jl","kl","ll","ml","nl","ol","pl","ql","rl","sl","tl","ul","vl","wl","xl","yl","zl","Al","Bl","Cl","Dl","El","Fl","form","Gl","Hl","Il","Jl","Kl","Ll","Ml","Nl","Ol","Pl","Ql","Rl","Kv","Sl","Tl","Ul","Vl","Wl","Xl","Yl","Zl","$l","am","bm","cm","dm","em","fm","gm","hm","im","jm","km","lm","mm","nm","om","pm","qm","tm","Hw","um","vm","wm","xm","ym","zm","Am","Bm","Cm","Dm","Em","Fm","Gm","Uy","Hm","Im","Jm","Km","Lm","Mm","Nm","Om","Pm","Qm","Rm","Sm","Tm","Um","Vm","Wm","Xm","Ym","Zm","$m","an","bn","cn","dn","en","gn","hn","jn","kn","ln","mn","nn","pn","qn","rn","sn","tn","vn","wn","xn","yn","zn","An","Bn","Cn","Dn","En","Fn","Gn","Hn","In","Jn","Kn","Ln","Mn","Nn","On","Pn","Qn","Rn","Sn","Tn","Un","Vn","Wn","Xn","Yn","Zn","$n","ao","bo","Tz","co","eo","fo","go","ho","jo","ko","lo","mo","no","oo","po","qo","ro","so","uo","vo","wo","xo","yo","zo","Ao","Bo","Co","Do","Eo","Fo","Go","Ho","Io","Jo","Ko","Lo","Mo","No","Oo","Po","Qo","Ro","So","To","Uo","Vo","Wo","Xo","Yo","Zo","$o","ap","bp","cp","dp","ep","fp","gp","hp","ip","jp","kp","lp","mp","np","pp","qp","rp","sp","tp","up","vp","wp","xp","yp","zp","Ap","Bp","Cp","Dp","Ep","Fp","Gp","Hp","Ip","Jp","Kp","Lp","Mp","Np","Op","Pp","Qp","Rp","Sp","Tp","Up","Vp","Wp","Xp","Yp","Zp","$p","aq","bq","cq","dq","fq","gq","gE","hq","iq","jq","kq","lq","mq","nq","oq","pq","qq","rq","sq","tq","uq","vq","wq","xq","jH","zq","Aq","Bq","Cq","Dq","Eq","Fq","Gq","Hq","Iq","Jq","Kq","Lq","Mq","Nq","Oq","Pq","Qq","Rq","Sq","Tq","Uq","Vq","Wq","Xq","Yq","Zq","$q","cr","dr","er","fr","gr","hr","ir","jr","kr","lr","mr","nr","pr","qr","rr","sr","tr","ur","vr","wr","xr","yr","zr","Ar","Br","Cr","Dr","Er","Fr","Gr","Hr","Ir","Jr","Kr","Lr","Mr","Nr","Or","Pr","Qr","Rr","Sr","Tr","Ur","Vr","Wr","Xr","Yr","Zr","$r","as","bs","cs","es","fs","gs","hs","is","js","ks","ls","AH","ns","ps","qs","ts","us","vs","xs","ys","zs","As","Bs","Cs","Ds","Es","Fs","Gs","DL","Hs","Is","Js","Ks","Ls","Ms","Ns","Os","Ps","Qs","Rs","Ss","Ts","Us","Vs","Ws","Xs","Ys","Zs","$s","bt","ct","EL","et","ft","gt","ht","it","jt","kt","lt","mt","nt","ot","pt","qt","rt","st","FL","ut","vt","wt","xt","yt","zt","At","Bt","Ct","Dt","Et","Ft","Gt","Ht","It","Jt","Kt","Lt","Mt","Nt","Ot","Pt","Qt","Rt","GL","St","Tt","Ut","Vt","Wt","Xt","HL","Zt","$t","au","bu","pQ","cu","du","eu","fu","gu","hu","iu","ju","ku","lu","mu","nu","ou","pu","qu","ru","su","tu","uu","wu","xu","yu","zu","qQ","Au","Bu","Cu","Du","Eu","Fu","Gu","Hu","Iu","Ju","Ku","Lu","Mu","Nu","Ou","Pu","Qu","Ru","Su","Tu","Uu","Vu","Wu","Xu","Yu","Zu","$u","av","bv","rQ","cv","dv","ev","fv","gv","hv","iv","jv","kv","lv","mv","nv","ov","pv","qv","rv","sv","tv","uv","vv","wv","xv","yv","zv","Av","Bv","Cv","Dv","Ev","Fv","Gv","Hv","Iv","Jv","vQ","Lv","wQ","X","Mv","Nv","Ov","sQ","Pv","Qv","Rv","Sv","tQ","Tv","Uv","Vv","Wv","Xv","Yv","Zv","$v","aw","bw","cw","dw","ew","fw","hw","iw","jw","kw","lw","mw","nw","ow","qw","rw","yQ","sw","tw","uw","vw","ww","xw","yw","zw","Aw","Bw","Cw","Dw","Ew","Fw","Gw","zQ","Iw","Jw","Kw","Lw","Mw","Nw","Ow","Pw","Qw","Rw","Sw","Tw","Uw","Vw","Ww","Xw","Yw","Zw","$w","ax","bx","cx","dx","fx","gx","hx","ix","jx","kx","lx","mx","nx","ox","px","qx","rx","sx","tx","ux","vx","wx","xx","yx","zx","Ax","Bx","Cx","Dx","Ex","Fx","Gx","Hx","Ix","Jx","Kx","xQ","Lx","Mx","Nx","Ox","Px","Qx","Rx","Sx","Tx","Ux","Vx","Wx","Xx","Yx","Zx","$x","UR","ay","by","cy","dy","ey","fy","gy","hy","iy","jy","ky","ly","ny","oy","py","qy","ry","sy","ty","uy","vy","wy","xy","yy","zy","VR","WR","Ay","BT","By","Cy","Dy","Ey","Fy","Gy","Hy","Iy","Jy","Ky","Ly","My","Ny","Oy","Py","Qy","Ry","Sy","Ty","DT","Vy","Wy","Xy","Yy","Zy","$y","ET","az","bz","cz","dz","SS","ez","FT","fz","gz","hz","iz","jz","kz","lz","mz","nz","oz","pz","qz","rz","sz","tz","uz","vz","Y","wz","xz","CT","yz","zz","Az","Bz","Cz","Dz","Ez","Fz","Gz","Hz","Iz","Jz","Kz","Lz","Mz","Nz","Oz","Pz","Qz","Rz","Sz","zX","Uz","Vz","Wz","Xz","Yz","Zz","$z","aA","bA","cA","dA","eA","fA","gA","hA","iA","jA","kA","lA","mA","nA","oA","pA","qA","rA","sA","tA","uA","vA","wA","xA","yA","zA","AA","BA","CA","DA","EA","FA","GA","HA","IA","JA","KA","LA","MA","NA","AX","OA","PA","QA","RA","SA","TA","UA","VA","WA","XA","YA","ZA","$A","aB","bB","cB","dB","eB","fB","gB","hB","iB","jB","kB","lB","mB","nB","oB","pB","qB","rB","sB","tB","uB","vB","wB","xB","yB","zB","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","RX","KB","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","$B","aC","bC","cC","dC","eC","fC","gC","hC","iC","jC","kC","lC","mC","nC","oC","pC","qC","rC","sC","tC","uC","vC","wC","xC","yC","zC","AC","BC","CC","DC","EC","FC","GC","HC","IC","JC","KC","LC","MC","NC","OC","PC","QC","RC","SC","TC","UC","VC","WC","XC","YC","ZC","$C","aD","bD","cD","dD","eD","fD","gD","hD","iD","jD","kD","lD","mD","nD","oD","pD","qD","rD","sD","tD","uD","vD","wD","xD","yD","SX","zD","AD","BD","CD","DD","ED","FD","GD","HD","ID","JD","KD","LD","MD","ND","OD","PD","QD","RD","UD","SD","TD","YD","VD","WD","XD","$D","ZD","cE","aE","bE","fE","dE","eE","eY","iE","hE","kE","jE","BX","nE","lE","mE","oE","qE","CX","pE","sE","rE","tE","vE","DX","uE","wE","zE","xE","yE","BE","AE","CE","FE","DE","EE","GE","HE","LE","IE","JE","KE","OE","P2","NE","TE","PE","QE","RE","SE","UE","VE","eF","WE","XE","YE","ZE","$E","aF","bF","cF","dF","Q2","iF","fF","gF","hF","kF","jF","nF","lF","mF","oF","pF","qF","sF","rF","vF","tF","uF","TX","wF","xF","AF","yF","zF","BF","DF","CF","GF","EF","FF","HF","IF","KF","JF","MF","LF","OF","NF","SF","R2","PF","QF","RF","XF","WF","bG","YF","ZF","$F","aG","cG","eG","dG","fG","jG","gG","hG","iG","kG","mG","fY","lG","qG","nG","oG","pG","sG","rG","vG","tG","uG","xG","wG","yG","zG","AG","CG","BG","DG","EG","HG","FG","GG","JG","IG","NG","KG","MG","OG","PG","TR","QG","RG","SG","aZ","bZ","TG","cZ","UG","WG","XG","YG","ZG","$G","aH","bH","cH","dH","eH","dZ","fH","unbounded_unshift","resize","cleanup","gH","hH","iH","eZ","lH","kH","mH","MessageChannel","style","display","documentElement","appendChild","contentWindow","port1","port2","appVersion","nH","oH","pH","qH","rH","setImmediate","Window","sH","k2","tH","uH","vH","wH","xH","yH","closed","zH","BH","CH","DH","EH","forward","FH","GH","HH","put","ceilingEntry","floorEntry","r2","s2","IH","JH","KH","LH","MH","t2","NH","OH","VG","PH","u2","v2","w2","x2","QH","y2","z2","RH","SH","TH","UH","VH","WH","XH","YH","ZH","$H","aI","bI","cI","dI","eI","fI","gI","hI","iI","jI","kI","lI","mI","nI","oI","pI","qI","rI","sI","tI","uI","vI","wI","xI","yI","zI","AI","BI","CI","DI","EI","FI","GI","II","JI","HI","KI","LI","MI","NI","OI","ignoreCase","multiline","unicode","PI","QI","RI","SI","TI","UI","VI","WI","XI","YI","ZI","$I","aJ","bJ","cJ","dJ","eJ","fJ","gJ","hJ","iJ","jJ","kJ","lJ","mJ","nJ","oJ","pJ","qJ","rJ","sJ","tJ","uJ","vJ","wJ","xJ","yJ","zJ","AJ","BJ","CJ","DJ","EJ","FJ","GJ","HJ","IJ","JJ","KJ","LJ","MJ","NJ","OJ","PJ","QJ","RJ","SJ","TJ","UJ","VJ","WJ","XJ","YJ","ZJ","$J","aK","bK","cK","dK","eK","fK","gK","hK","iK","jK","kK","lK","mK","nK","oK","pK","qK","rK","sK","tK","text","uK","vK","wK","xK","yK","zK","AK","BK","CK","DK","EK","FK","GK","HK","IK","JK","KK","LK","MK","NK","OK","PK","QK","RK","SK","TK","UK","VK","WK","XK","YK","ZK","$K","aL","bL","cL","dL","eL","fL","gL","hL","iL","jL","kL","lL","mL","nL","oL","pL","qL","rL","sL","tL","uL","vL","wL","xL","yL","Sb","zL","AL","BL","CL","A2","B2","C2","D2","E2","IL","JL","KL","LL","ML","NL","OL","PL","QL","RL","SL","TL","UL","VL","WL","XL","YL","ZL","$L","aM","bM","cM","dM","eM","fM","gM","hM","iM","jM","kM","lM","mM","nM","oM","pM","qM","rM","sM","tM","uM","vM","wM","xM","yM","zM","AM","BM","CM","DM","EM","FM","GM","HM","IM","JM","KM","LM","MM","NM","OM","PM","QM","RM","SM","TM","UM","VM","WM","XM","YM","ZM","$M","aN","bN","NaN","cN","dN","eN","fN","gN","hN","iN","jN","kN","lN","mN","nN","oN","pN","qN","rN","sN","tN","uN","vN","wN","xN","yN","zN","AN","BN","CN","DN","EN","FN","GN","HN","IN","JN","KN","LN","MN","NN","ON","PN","QN","RN","SN","toFixed","TN","UN","VN","WN","XN","YN","ZN","$N","aO","bO","cO","dO","eO","fO","gO","hO","iO","jO","kO","lO","mO","nO","pO","qO","rO","sO","tO","oO","uO","vO","wO","xO","yO","zO","AO","BO","CO","DO","EO","FO","GO","HO","IO","JO","KO","LO","MO","NO","OO","PO","QO","RO","SO","TO","UO","VO","WO","XO","YO","ZO","$O","aP","bP","cP","dP","UTC","eP","fP","gP","hP","iP","jP","kP","lP","mP","nP","oP","pP","qP","rP","sP","tP","uP","vP","wP","xP","yP","zP","AP","BP","CP","DP","EP","FP","GP","IP","HP","JP","KP","LP","MP","NP","Z","OP","PP","QP","Da","Rb","ob","vu","TF","UF","VF","RP","SP","TP","UP","forms","VP","WP","YP","ZP","$P","aQ","UX","VX","WX","XX","YX","ZX","$X","aY","bY","cY","dY","bQ","cQ","dQ","eQ","fQ","gQ","hQ","iQ","jQ","kQ","lQ","mQ","nQ","oQ","F2","G2","H2","I2","J2","uQ","K2","L2","M2","N2","O2","AQ","BQ","CQ","DQ","EQ","FQ","GQ","HQ","IQ","JQ","KQ","LQ","MQ","NQ","OQ","PQ","QQ","RQ","SQ","TQ","UQ","VQ","WQ","XQ","YQ","getDay","ZQ","$Q","aR","std_offset","names","names_ext","transitions","bR","cR","dR","eR","fR","gR","jR","getTimezoneOffset","iR","hR","kR","getFullYear","getMonth","getDate","DST_GENERIC_LOCATION","STD_GENERIC_LOCATION","lR","mR","nR","oR","eval","pR","qR","rR","sR","tR","uR","vR","wR","xR","yR","zR","AR","BR","CR","DR","ER","FR","GR","HR","IR","JR","KR","LR","MR","NR","OR","PR","QR","RR","SR","S2","P3","Q3","R3","YR","ZR","$R","aS","bS","cS","dS","eS","fS","gS","hS","iS","jS","kS","lS","mS","nS","oS","pS","qS","rS","sS","tS","uS","vS","wS","xS","yS","zS","AS","BS","CS","DS","ES","FS","GS","HS","IS","JS","KS","LS","MS","NS","PS","QS","RS","q2","TS","US","VS","disconnect","YS","XS","$S","ZS","bT","aT","cT","dT","eT","fT","gT","iT","hT","jT","kT","lT","mT","cancelled","nT","oT","pT","qT","rT","sT","tT","uT","vT","wT","xT","yT","zT","AT","T2","U2","V2","W2","X2","GT","HT","IT","JT","KT","LT","MT","NT","OT","PT","QT","$T","ST","TT","UT","VT","WT","XT","blockSize","YT","ZT","Int32Array","aU","bU","digest","cU","dU","eU","fU","gU","hU","iU","jU","kU","lU","mU","getHmac","nU","oU","pU","qU","rU","sU","tU","uU","alg","vU","wU","xU","yU","zU","AU","BU","CU","DU","EU","FU","GU","HU","IU","JU","KU","LU","MU","NU","OU","PU","QU","RU","SU","TU","UU","VU","WU","XU","YU","ZU","$U","aV","bV","cV","dV","eV","fV","gV","iV","jV","kV","lV","hV","mV","nV","oV","pV","qV","rV","sV","tV","uV","vV","wV","xV","yV","zV","AV","BV","CV","DV","EV","FV","GV","HV","IV","JV","KV","LV","MV","NV","OV","PV","QV","RV","SV","TV","UV","VV","WV","XV","YV","ZV","$V","aW","bW","cW","dW","eW","fW","gW","hW","iW","jW","kW","lW","mW","nW","oW","pW","qW","rW","sW","tW","uW","vW","wW","xW","yW","zW","AW","BW","CW","DW","EW","FW","GW","HW","IW","JW","KW","LW","MW","NW","OW","PW","QW","RW","SW","TW","UW","VW","WW","XW","YW","ZW","$W","aX","bX","cX","dX","eX","fX","gX","hX","iX","jX","kX","lX","mX","nX","oX","pX","qX","rX","sX","tX","uX","vX","wX","xX","yX","Y2","Z2","$2","a3","b3","EX","FX","GX","HX","IX","JX","KX","LX","MX","NX","OX","PX","QX","c3","d3","e3","f3","g3","gY","hY","iY","jY","kY","lY","mY","nY","oY","pY","qY","rY","sY","tY","uY","vY","wY","xY","yY","zY","AY","BY","CY","DY","EY","FY","GY","HY","IY","JY","KY","LY","MY","NY","OY","PY","QY","RY","SY","TY","UY","VY","WY","XY","YY","ZY","$Y","h3","i3","j3","k3","l3","fZ","gZ","hZ","iZ","jZ","kZ","lZ","mZ","nZ","oZ","pZ","qZ","rZ","sZ","tZ","uZ","vZ","wZ","xZ","yZ","zZ","AZ","BZ","CZ","DZ","EZ","FZ","GZ","HZ","IZ","JZ","KZ","LZ","MZ","NZ","OZ","PZ","QZ","RZ","SZ","TZ","UZ","VZ","WZ","XZ","YZ","ZZ","$Z","a_","b_","c_","d_","e_","f_","g_","h_","i_","j_","k_","l_","m_","n_","o_","p_","q_","r_","s_","t_","u_","v_","w_","x_","y_","z_","A_","B_","C_","D_","E_","F_","G_","H_","I_","J_","K_","L_","M_","N_","O_","P_","Q_","R_","S_","T_","U_","V_","W_","X_","Y_","Z_","$_","a0","b0","c0","d0","e0","f0","g0","h0","i0","j0","k0","l0","m0","n0","o0","p0","q0","r0","s0","t0","u0","v0","w0","x0","y0","z0","A0","B0","C0","D0","E0","F0","G0","H0","I0","J0","K0","L0","M0","N0","O0","P0","Q0","R0","S0","T0","U0","V0","W0","X0","Y0","Z0","$0","a1","b1","c1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","q1","T3","r1","s1","t1","u1","v1","w1","x1","y1","z1","A1","B1","C1","filters","D1","E1","F1","G1","H1","I1","J1","K1","L1","M1","N1","O1","P1","Q1","R1","S1","T1","U1","V1","W1","X1","Y1","Z1","$1","a2","b2","c2","d2","e2","f2","g2","h2","n3","o3","p3","q3","r3","s3","t3","u3","v3","w3","m3","x3","y3","z3","finally","A3","B3","C3","D3","E3","F3","H3","G3","I3","J3","K3","L3","M3","N3","O3","S3","W3","X3","Y3","Z3","U3","i2","j2","V3","l2","file","stacktrace","output","m2","n2","o2","Gateway","configureLogging","gateway_web","core","configure_logging","appender","buffer_size","clients","_gatewayWebInstance","inactive_seconds","connectClient","clientPort","connectExtClient","removeFromPlatform","addListener","coreData","setupInternalClient","handleInternalGatewayConnectionRequest","stringError","PlatformLogger","setLogger","toStr","isArgs","callee","keysShim","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","implementation","origKeys","originalKeys","shim","keysWorksWithArguments","objectKeys","shams","sym","symObj","syms","getOwnPropertyDescriptor","origSymbol","hasSymbolSham","hasSymbols","foo","$Object","hasProto","ERROR_MESSAGE","funcType","bound","boundLength","boundArgs","Empty","functionBind","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","getProto","needsEval","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","decodeURI","encodeURI","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Proxy","RangeError","ReferenceError","Reflect","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakRef","errorProto","doEval","gen","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","last","quote","subString","getBaseIntrinsic","allowMissing","alias","intrinsicName","getIntrinsic","parts","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","GetIntrinsic","$defineProperty","hasPropertyDescriptors","hasArrayLengthDefineBug","hasPropertyDescriptors_1","origDefineProperty","supportsDescriptors","predicate","defineProperties_1","$apply","$call","$reflectApply","$max","originalFunction","applyBind","callBind","$indexOf","callBound","toObject","$push","$propIsEnumerable","originalGetSymbols","source1","nextKey","propValue","lacksProperEnumerationOrder","letters","actual","assignHasPendingExceptions","preventExtensions","thrower","polyfill","getPolyfill","object_assign","functionsHaveNames","gOPD","functionsHaveConfigurableNames","$bind","boundFunctionsHaveNames","functionsHaveNames_1","hasIndices","dotAll","unicodeSets","sticky","calls","TypeErr","flagsBound","regexp_prototype_flags","hasToStringTag","$toString","isStandardArguments","isLegacyArguments","supportsStandardArguments","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","hasWeakMap","weakMapHas","hasWeakSet","weakSetHas","hasWeakRef","weakRefDeref","deref","booleanValueOf","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","gPO","addNumericSeparator","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","objectInspect","inspect_","depth","seen","quoteStyle","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","getIndent","inspect","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","isElement","nodeName","attrs","attributes","wrapQuotes","childNodes","singleLineValues","indentedJoin","isError","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isBigInt","protoTag","defaultStyle","quoteChar","HTMLElement","remaining","trailer","lowbyte","baseIndent","lineJoiner","symMap","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","curr","listGet","objects","listSet","listHas","sideChannel","$wm","assert","SLOT","slot","slots","internalSlot","$StopIteration","StopIteration","stopIterationIterator","origIterator","siIterator","isarray","strValue","tryStringObject","strClass","$Set","exported","$setHas","getStopIterationIterator","$iterator","esGetIteratorModule","iterable","require$$5","require$$6","require$$7","$arrayPush","$charCodeAt","$stringSlice","advanceStringIndex","second","getArrayIterator","arraylike","getNonCollectionIterator","noPrimordialCollections","nextIndex","require$$8","require$$9","$mapForEach","$setForEach","versions","$mapIterator","$setIterator","$mapAtAtIterator","$setAtAtIterator","getCollectionIterator","numberIsNaN","objectIs","fnToStr","reflectApply","badArrayLike","isCallableMarker","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","objectClass","fnClass","genClass","ddaClass","ddaClass2","ddaClass3","isIE68","isDDA","isCallable","forEachArray","receiver","forEachString","forEachObject","forEach_1","possibleNames","availableTypedArrays","out","gopd","typedArrays","superProto","tryTypedArrays","found","getter","trySlices","whichTypedArray","$ArrayBuffer","$Float32Array","$byteLength","abSlice","$abSlice","tryDateObject","dateClass","isDateObject","isRegexMarker","badStringifier","throwRegexMarker","toPrimitive","regexClass","isRegex","isSharedArrayBuffer","numToStr","tryNumberObject","numClass","isNumberObject","$boolToStr","tryBooleanObject","boolClass","isBooleanObject","symToStr","symStringRegex","isSymbolObject","isSymbolModule","$BigInt","hasBigints","hasBigInts","tryBigInt","isBigintModule","whichBoxedPrimitive","$WeakSet","isWeakmap","isWeaksetModule","whichCollection","arrayBufferByteLength","getIterator","getSideChannel","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","sabByteLength","$getTime","$objToString","$mapSize","$setAdd","$setDelete","$setSize","setHasEqualElement","val1","internalDeepEqual","findLooseMatchingPrimitives","prim","mapMightHaveLoosePrim","altValue","curB","looseOpts","strict","setMightHaveLoosePrim","mapHasEqualEntry","key1","item1","key2","sentinel","hasActual","hasExpected","objEquiv","setEquiv","resultA","resultB","mapEquiv","item2","aIsError","bIsError","aIsRegex","bIsRegex","aIsDate","bIsDate","aWhich","bWhich","aIsBuffer","bIsBuffer","aIsArrayBuffer","bIsArrayBuffer","aIsSAB","bIsSAB","aCollection","bCollection","fastDeepEqual","equal","getRelativeBounds","rect","objEqual","objOne","objTwo","objEqualFast","waitFor","wait","extractErrorMsg","checkMatch","allowedResultsTracker","clearNullUndefined","PlatformController","domainsController","glueController","portsBridge","stateController","serviceWorkerController","interceptionController","pluginsController","licenseController","localStorageController","idbController","ctxTrackingGlue","contextsTrackingGlue","systemGlue","platformApi","_platformApi","verifyLicense","onClientUnloaded","handleClientUnloaded","createPlatformSystemMethod","handleClientMessage","createPlatformSystemStream","startAllDomains","buildPlatformApi","initClientGlue","isFrame","configurePostStartAllDomains","platformConfig","handlePluginMessage","notifyReady","getClientGlue","clientGlue","processControllerCommand","pluginName","callerType","validateDomain","errString","controlMessage","executeCommand","notifyDomainsClientUnloaded","getOperationInterceptor","skipInterception","executeControlMessage","platformVersion","contextTrackGlue","onSystemReconnect","shutdown","shutDown","switchGW","connectPreferred","switchToInternal","revertToDefault","handleExtConnectionRequest","onReconnect","sendShutDownSignals","logExpirationErrors","licensePayload","getLicensePayload","checkExpired","expiration","IoC$2","logLevelDecoder","channelMetaDecoder","functionCheck","propDescription","providedType","workspacesSandboxDecoder","workspacesSandbox","glueCoreAppDefinitionDecoder","remoteStoreDecoder","pollingInterval","requestTimeout","customHeaders","channelDefinitionDecoder","pluginDefinitionDecoder","critical","applicationsConfigDecoder","remote","layoutsConfigDecoder","channelsConfigDecoder","pluginsConfigDecoder","gatewayConfigDecoder","glueConfigDecoder","maximumActiveWorkspacesDecoder","threshold","idleWorkspacesDecoder","idleMSThreshold","hibernationConfigDecoder","maximumActiveWorkspaces","idleWorkspaces","loadingConfigDecoder","delayed","batch","initialOffsetInterval","defaultStrategy","showDelayedIndicator","iframeSandBoxConfigDecoder","workspacesConfigDecoder","hibernation","loadingStrategy","initAsEmpty","frameCache","iframeSandbox","preferredConnectionSettingsDecoder","forceIncompleteSwitch","discoveryIntervalMS","connectionConfigDecoder","preferred","enableManualSwitching","alwaysPlatform","windowsConfigDecoder","serviceWorkerConfigDecoder","registrationPromise","notificationsConfigDecoder","themesConfigDecoder","userConfigDecoder","managerAuthConfig","managerConfigDecoder","fetchIntervalMS","tokenRefreshIntervalMS","responseTimeoutMS","applicationPreferencesStoreDecoder","applicationPreferencesConfigDecoder","store","platformConfigDecoder","serviceWorker","manager","applicationPreferences","interceptorRegistrationRequestDecoder","callInterceptor","interceptions","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","for","REACT_ELEMENT_TYPE","$$typeof","emptyTarget","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","getKeys","propertyIsOnObject","property","propertyIsUnsafe","mergeObject","arrayMerge","sourceIsArray","deepmerge_1","cjs","nanoid","byte","SEARCH_QUERY_STATUSES","inProgress","CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS","searchTypeDecoder","providerData","interopId","providerLimitsDecoder","maxResults","maxResultsPerType","queryConfigDecoder","providers","providerLimits","providerRegistrationConfig","operationDecoder","queryStatusDecoder","searchCancelRequestDecoder","mainActionDecoder","secondaryActionDecoder","queryResultDecoder","iconURL","secondaryActions","legacySearchResultItemDecoder","category","protocolSearchResultsBatchDecoder","items","queryId","protocolSearchCompletedDecoder","protocolProviderErrorDecoder","ClientController","modelFactory","activeQueryLookup","queryIdToMasterIdLookup","pendingDebounce","debounceMS","setDebounceMS","getDebounceMS","query","skipDebounce","debounceQuery","registerMainClientMethod","handleProviderCall","queryConfig","allProvidersInfo","getAllProvidersInfo","filterProvidersByAllowList","filterProvidersByAllowedTypes","allQueryResponses","sendQueryRequest","masterQueryId","generateMasterQueryId","queryModel","buildClientQueryModel","cleanUpQuery","exposeFacade","cancelQuery","activeQuery","interopIds","sendQueryCancelRequest","processClientOnResults","processClientOnCompleted","processClientOnError","validatedOperation","handleQueryCompleted","completedConfig","handleQueryResults","resultsBatch","handleQueryError","verifiedResultsBatch","translatedResults","checkTransformLegacyResults","verifiedCompleteConfig","validatedError","queryError","allowedLookup","allowedEntry","allTypes","supportedTypes","searchType","supportedType","debounceTimer","currentPending","sampleItem","MAIN_PROVIDER_METHOD_NAME","MAIN_CLIENT_METHOD_NAME","SEQUELIZER_INTERVAL_MS","FLUSH_SEQUELIZER_INTERVAL_MS","FLUSH_TIMEOUT_MS","STALE_QUERY_TIMEOUT_MS","GlueController$1","myInteropId","registerMainProviderMethod","checkMyMethodExists","exists","clearMainProviderMethod","sendClientResultsBatch","clientInstanceId","interopArguments","sendClientQueueCompleted","sendClientErrorMessage","invokeArgs","apiVersion","returnValue","MainController","clientController","providerController","registerProvider","processRegisterProvider","allProvidersData","flatMap","provInfo","allSupportedTypes","provData","uniqueSupportedTypes","ProviderController","sequelizer","limitsTracker","modelsFactory","providersModels","activeQueries","handleSearchQueryRequest","modelData","buildProviderModel","processProviderOnQuery","processProviderOnQueryCancel","processProviderUnregister","cleanUpProvider","processProviderQueryDone","identification","syncSuspendProvider","providerId","cleanUpProviderQuery","providersAtWork","processProviderQueryError","markProviderError","processProviderQueryResult","checkProviderSuspended","requestedTypes","testResult","testResultLimit","maxLimitHit","maxLimitPerTypeHit","queueResult","handleInfoOperation","handleSearchOperation","handleCancelOperation","providerModel","myProviderData","generateQueryId","isLegacyRequest","checkRequestLegacy","validatedRequest","prepareRequest","callerInstanceId","buildPublisher","staleTimer","setClearStaleQueryTimer","enableTracking","callProviders","translateLegacySearchRequest","legacyRequest","limit","categoryLimit","searchRequest","getFilteredProviderModels","getFilteredProvidersBySearchTypes","configureProviders","callProvider","queryFacade","buildProviderQueryModel","filtered","searchTypes","providerSearchType","parsedRequest","cleanPublisher","cleanTracking","markProviderDone","SearchFacade","main","exposeApi","listProviders","listTypes","AsyncSequelizer$2","LimitsTracker","limitsLookup","limitsData","limits","foundLookup","limitData","providerStateLookup","resultTypeName","ClientQuery","providerQueryFacade","onResults","onCompleted","onError","ProviderModel","myData","providerFacade","onQuery","onQueryCancel","ProviderQueryModel","myQueryData","sendResult","QueryResultsPublisher","isLegacy","queues","suspended","providerQueue","pendingResults","translateLegacySearchItem","flushTimer","flushProviderQueue","resultBatch","searchResult","ModelFactory","flushSequelizer","_glueController","GlueController","_mainController","_clientController","_providerController","_facade","_asyncSequelizer","_flushSequelizer","_limitsTracker","_modelFactory","factoryFunction","IOSearch","Platform","localStorage","processConfig","getPlatformApi","platformStarted","addSearch","validatePlugins","deepMerge","newNotificationsConfig","systemSettings","getSystemSettings","systemInstanceId","ctxTrackInstanceId","setSystemSettings","notificationsConfig","getNotificationsConfig","setNotificationsConfig","transferPromiseObjects","initAsEmptyFrame","isPlatform","savedDef","badDefinitions","startType","stopType","errorStack","_clientGlue","isWorkspacesEnabled","_contextsTrackingGlue","_systemGlue","platformWindowId","_platformClientWindowId","_config","_systemSettings","initSystemGlue","setUpCtxTracking","factory","createInternalClient","registerClientWindow","webConfig","createMethodAsync","_systemStream","createSystemStream","createWorkspacesStream","_workspacesStream","createWorkspacesEventsReceiver","pushSystemMessage","pushWorkspacesMessage","callFrame","operationDefinition","operationArguments","isValidWindowId","allNonMeWindows","webWindow","callWindow","setStartContext","waitContextDestroy","contextChecks","contextExists","clearContext","preserveAllWorkspaceWindowsContext","workspaceId","allWorkspaceClients","pickWorkspaceClients","workspaceClient","clientCtx","pullHibernatedContext","subscribeForServerAdded","subscribeForMethodAdded","invokeMethod","onDisconnected","getSystemGlueTransportName","importLayout","getLayout","openConfig","startApp","getOrCreateWorkspaceFrame","frameId","getFrame","frame","createEmptyFrame","frameConfig","getAppNameByInstanceId","getAllWindowNames","getAllOpenedIds","getAllOtherNonPlatformWindows","excludeId","getAllOpenedFrameIds","getAllFrames","getAllApplicationNames","getAllApplications","getAllLayoutsSummaries","getAllWorkspacesSummaries","getWorkspaceWindowById","targetId","getWindow","workspaceWindow","getWindowById","getAllWorkspacesFrames","getWorkspacesByFrameId","getAllWorkspaces","workspace","processServerApplicationsData","importResult","logLevel","initContextsTrackingGlue","contextsSettings","platformFrame","getPlatformFrame","platformFrameData","active","saveFrameData","platformWindowData","getWindowDataByName","saveWindowData","PortsBridge","CallbackRegistryFactory","allPorts","allClients","unLoadStarted","transactionsController","_genericMessageHandler","_unloaderHandler","startUpPromise","startupResolve","setupListeners","createMessageChannel","clientData","windowData","processNewWindow","removeClient","myWindowId","setActivePreferredTransportConfig","activePreferredTransportConfig","setPreferredActivated","switchAllClientsTransport","transactions","sendClientPortRequest","checkClientsPreferredLogic","checkClientsPreferredConnection","removeGwClient","foundClient","unloader","genericMessageHandler","handleRemoteConnectionRequest","win","setupGwClientPort","foundData","getBridgeInstanceData","registerSelfAssignedWindow","announce","preservePort","completeTransaction","failTransaction","getCurrentTransportState","createTransaction","windowOperationDecoder","workspacesOperationDecoder","frameHelloDecoder","workspaceWindowDataDecoder","isWindowInSwimlaneResultDecoder","inWorkspace","allParentDecoder","subParentDecoder","frameStateDecoder","deleteLayoutConfigDecoder","swimlaneWindowDefinitionDecoder","strictSwimlaneWindowDefinitionDecoder","parentDefinitionDecoder","groupDefinitionConfigDecoder","minWidth","maxWidth","minHeight","maxHeight","allowDrop","allowDropHeader","allowDropLeft","allowDropTop","allowDropRight","allowDropBottom","showMaximizeButton","showEjectButton","showAddWindowButton","rowDefinitionConfigDecoder","allowSplitters","isPinned","maximizationBoundary","columnDefinitionConfigDecoder","strictColumnDefinitionDecoder","strictParentDefinitionDecoder","strictRowDefinitionDecoder","strictGroupDefinitionDecoder","newFrameConfigDecoder","loadStrategyDecoder","restoreWorkspaceConfigDecoder","loadStrategy","reuseWorkspaceId","lockdown","activateFrame","newFrame","noTabHeader","inMemoryLayout","isSelected","positionIndex","openWorkspaceConfigDecoder","restoreOptions","workspaceDefinitionDecoder","allowWindowReorder","allowSystemHibernation","showSaveButton","allowWorkspaceTabReorder","allowWorkspaceTabExtract","reuseFrameId","workspaceCreateConfigDecoder","saveConfig","getFrameSummaryConfigDecoder","frameSummaryDecoder","isInitialized","initializationContext","focused","eventTypeDecoder","workspaceConfigResultDecoder","isHibernated","lastActive","showAddWindowButtons","showEjectButtons","showWindowCloseButtons","widthInPx","heightInPx","baseChildSnapshotConfigDecoder","parentSnapshotConfigDecoder","swimlaneWindowSnapshotConfigDecoder","childSnapshotResultDecoder","workspaceSnapshotResultDecoder","frameSummary","customWorkspaceChildSnapshotDecoder","workspaceLayoutDecoder","workspacesLayoutImportConfigDecoder","exportedLayoutsResultDecoder","frameSummaryResultDecoder","frameSummariesResultDecoder","workspaceSummaryResultDecoder","workspaceSummariesResultDecoder","frameSnapshotResultDecoder","layoutSummariesDecoder","simpleWindowOperationSuccessResultDecoder","voidResultDecoder","frameStateResultDecoder","frameBoundsDecoder","frameBoundsResultDecoder","resizeConfigDecoder","moveConfigDecoder","simpleItemConfigDecoder","frameSnapshotConfigDecoder","excludeIds","frameStateConfigDecoder","requestedState","setItemTitleConfigDecoder","moveWindowConfigDecoder","containerId","resizeItemConfigDecoder","moveFrameConfigDecoder","addWindowConfigDecoder","parentId","addContainerConfigDecoder","addItemResultDecoder","bundleWorkspaceConfigDecoder","bundleItemConfigDecoder","workspaceSelectorDecoder","containerSummaryResultDecoder","frameBounds","workspaceSummary","containerSummary","windowSummary","workspaceLayoutSaveConfigDecoder","saveContext","lockWorkspaceDecoder","lockWindowDecoder","windowPlacementId","lockRowDecoder","lockColumnDecoder","lockGroupDecoder","lockContainerDecoder","pinWorkspaceDecoder","setWorkspaceIconDecoder","workspaceIconDecoder","restoreWorkspaceDefinitionDecoder","getWorkspaceWindowsOnLayoutSaveContextConfigDecoder","setMaximizationBoundaryConfigDecoder","workspaceWindowOnSaveDataDecoder","getWorkspaceWindowsOnLayoutSaveContextResult","windowsOnSaveData","getWorkspacesLayoutsConfigDecoder","getWorkspacesLayoutsResponseDecoder","started","handleWindowHello","handleFocus","handleClose","registerWorkspaceWindow","unregisterWorkspaceWindow","handleWorkspaceClientRemoval","handleOperationCheck","handleFocusEvent","moveResizeOperation","getFrameBoundsOperation","setTitleOperation","getBoundsOperation","clientResponseTimeoutMs","onWindowDisappeared","cleanUpWindow","handleControl","windowsData","operationValidation","incomingValidation","resultValidation","getWindowTitle","getWindowBounds","childWindow","emitStreamData","fullWindowClean","selfAssigned","saveNonGlue","saveWorkspaceClient","initialTitle","hibernatedContext","openBounds","getStartingBounds","initialBounds","initialUrl","initialContext","_g","_h","removeNonGlue","getWorkspaceClientById","getFrameData","allWindows","getAllWindowsData","getWindowDataById","workspacesController","setItemTitle","pause","closeItem","getInstanceData","applicationsController","handleInstanceStop","_j","relativeWindowId","relativeWindowBounds","relativeDir","_k","windowsNamespace","instancesNamespace","bridgeInstancesNamespace","nonGlueNamespace","workspaceWindowsNamespace","workspaceFramesNamespace","workspaceHibernationNamespace","globalLayoutsNamespace","workspaceLayoutsNamespace","appDefsNamespace","appDefsInmemoryNamespace","notificationsNamespace","systemNamespace","workspaceFrameCache","removeItem","settingsAsString","getTimeout","removeTimeout","saveTimeout","exportClearTimeouts","getAllApps","overwriteApps","removeApp","getLayoutSnapshot","saveLayoutSnapshot","snapshot","frameData","setFrameActive","removeFrameData","doRemove","removeWorkspaceClient","getAllNonGlue","saveBridgeInstanceData","removeBridgeInstanceData","saveInstanceData","removeInstance","getAllInstancesData","removeNotification","allNotifications","saveNewNotification","updateNotification","getAllNotifications","notificationIndex","getNotification","removeWindowData","nonGlueRemoved","workspaceClientRemoved","newData","WindowsStateController","checkIntervalMs","childrenToCheck","checkerCancelled","nativeWindow","checkWindows","currentTimeout","appHelloDecoder","appsImportOperationDecoder","appsRemoteRegistrationDecoder","ApplicationsController","appDirectory","applicationStartTimeoutMs","locks","handleAppHello","handleApplicationStart","registerWorkspaceApp","unregisterWorkspaceApp","handleImport","handleRemove","handleExport","handleClear","registerRemoteApps","handleRegisterRemoteApps","appsStateChange","createSequelizer","processInstanceClosed","applicationData","appDefinition","processNewInstance","setLock","notifyWindows","keyOne","openKeyTwo","selfWindowId","openKeyOne","keyTwo","allInstances","allAppsFull","appInstances","foundApp","helloSuccessMessage","processAppDefinitions","removeInMemory","exportInMemory","allAppDefinitions","appDefOptions","openOptions","fullSaveRequestResponseDecoder","defaultPermissionTimeoutMS","sessionStore","localStore","globalBuilder","globalRestorer","getManager","handleGetLayout","handleGetAll","handleSave","handleRestore","handleGetGlobalPermissionState","handleRequestGlobalPermission","handleCheckGlobalActivated","handleGetDefaultGlobal","handleSetDefaultGlobal","handleClearDefaultGlobal","clearLayouts","localGlobalLayouts","localWorkspaceLayouts","mergeImport","layoutsData","checkRequestPermission","saveGlobalLayout","restoreGlobalLayout","importExecution","replaceImport","workspaceLayouts","globalLayouts","operationMessage","onUserLayoutEvent","permissions","getScreenDetails","createGetDefaultGlobalLogMessage","layoutNameFromStorage","getDefaultGlobalLayoutName","allGlobalLayouts","isStarted","layoutNameFromManager","saveDefaultGlobalLayout","isCritical","requestCompletedMessage","getLayoutId","clearDefaultGlobalLayout","currentLayouts","pendingEvents","defCurrentIdx","cleanSave","announceEvents","batchCount","waitEventFlush","getAllLayouts","storeLayout","deleteLayout","idxToRemove","timeoutMS","gtf","instanceOfAny","constructors","idbProxyableTypes","cursorAdvanceMethods","getIdbProxyableTypes","IDBDatabase","IDBObjectStore","IDBIndex","IDBCursor","IDBTransaction","getCursorAdvanceMethods","continue","continuePrimaryKey","cursorRequestMap","transactionDoneMap","transactionStoreNamesMap","transformCache","reverseTransformCache","promisifyRequest","unlisten","wrap","cacheDonePromiseForTransaction","complete","DOMException","idbProxyTraps","objectStoreNames","objectStore","replaceTraps","wrapFunction","storeNames","transformCachableValue","IDBRequest","openDB","upgrade","blocking","terminated","indexedDB","openPromise","oldVersion","newVersion","readMethods","writeMethods","cachedMethods","getMethod","targetFuncName","useIndex","isWrite","async","storeName","oldTraps","IDBController","defaultDBName","dbName","dbVersion","globalLayoutsObjectStoreName","prefsObjectStoreName","serviceWorkerObjectStoreName","workspaceLayoutsObjectStoreName","database","_database","setUpDB","clearServiceWorker","storeServiceWorker","clearAllPrefs","allUpdatedPrefs","replaceAllPrefs","replacements","updatePrefs","foundPrefs","updatedPrefs","contains","createObjectStore","defaultLoadingConfig","WorkspacesController","framesController","hibernationWatcher","frameHello","handleFrameHello","isWindowInWorkspace","createWorkspace","createFrame","initFrame","getAllFramesSummaries","getFrameSummary","getWorkspaceSnapshot","openWorkspace","exportAllLayouts","restoreItem","maximizeItem","focusItem","resizeItem","changeFrameState","getFrameState","moveFrame","getFrameSnapshot","forceLoadWindow","ejectWindow","moveWindowTo","addWindow","addContainer","bundleWorkspace","bundleItem","hibernateWorkspace","resumeWorkspace","getWorkspacesConfig","getWorkspacesConfiguration","lockWorkspace","lockWindow","lockContainer","pinWorkspace","unpinWorkspace","getWorkspaceIcon","setWorkspaceIcon","checkStarted","handleCheckStarted","getPlatformFrameId","handleGetPlatformFrameId","getWorkspacesLayouts","handleGetWorkspacesLayouts","getWorkspaceWindowsOnLayoutSaveContext","handleGetWorkspaceWindowsOnLayoutSaveContext","setMaximizationBoundary","handleSetMaximizationBoundary","applyDefaults","bridgeWorkspaceEvent","handleFrameDisappeared","workspacesData","notifyEvent","frameToFocus","getFrameInstance","frameWindowBounds","allFrames","verifiedSummaries","sum","processNewHello","frameInstanceConfig","openFrame","summary","getPlatformFrameSessionData","getFrameSessionData","getFrameConfig","frameQueryConfig","targetedFrame","resizeConfig","getWorkspaceWindowOnLayoutSaveData","eventPayload","moveConfig","providedHibernationConfig","providedLoadingConfig","loadingConfig","requestConfig","nonGlueWindow","saveRequestResponse","raiseIntentResolverResponseDecoder","filterHandlersResolverResponseDecoder","DEFAULT_METHOD_RESPONSE_TIMEOUT_MS","DEFAULT_RAISE_TIMEOUT_MS","DEFAULT_PICK_HANDLER_BY_TIMEOUT_MS","ERRORS","resolverHelper","getWrappedIntents","handleRaiseIntent","intentsData","extractAppIntents","appsWithIntents","intentDef","getInstanceIntents","serverIntentsMethods","appDef","appIntent","appDefIntent","mergeIntentStores","storeOne","storeTwo","wrapIntents","appIntentsStore","instanceIntentsStore","allIntentsStore","wrappedIntentFilter","ctToLower","resultTypeToLower","getIntent","registeredIntent","firstFoundAppHandler","findHandlerByFilter","firstFoundInstanceHandler","raiseIntentToTargetHandler","instanceIdPromise","reasonMsg","TARGET_INSTANCE_UNAVAILABLE","invokeOptions","resultPromise","INTENT_HANDLER_REJECTION","CALLER_NOT_DEFINED","coreRaiseIntentFn","coreRaiseIntent","TIMEOUT_HIT","handleRaiseOnError","INTENT_NOT_FOUND","checkIfResolverShouldBeOpenedForRaise","resolverHandler","startResolverApp","checkOpenByResolverConfig","checkIfResolverShouldBeOpenByResolverConfig","checkIfResolverShouldBeOpenedForFilterHandlers","requestWithResolverConfig","filteredHandlers","filterHandlersBy","allHandlers","passedHandler","intentsWithInfo","extractIntentsWithInfoByHandler","validIntentsWithInfo","currentHandler","intentWithInfo","channelOperationDecoder","handleGetWindowIdsOnChannel","handleGetWindowIdsWithChannels","channelDefinitions","setupChannels","channelsData","getWindowChannel","allWindowIds","windowIdsOnChannel","serversWithWindowIds","FramesController","defaultFrameHelloTimeoutMs","_handleUnload","frameSummaryOperation","myFrameId","handleUnload","newFrameConfig","providedBounds","frameWindowId","frameUrl","getWorkspacesUrls","workspacesUrl","waitHello","closeFrame","clearAllWorkspaceWindows","foundFrame","getFrameByItemId","getLastOpenedFrame","workspaceWindows","frames","chrome","storage","WorkspaceHibernationWatcher","allTimeoutData","timeoutData","buildTimer","handleWorkspaceWindowEvent","handleWorkspaceEvent","checkMaximumAmountCore","addTimersForWorkspacesInFrame","isWorkspaceSelected","isLockConfigurationChanged","workspaceData","isSystemHibernationAllowed","ws1","ws2","snapshotsPromises","activeWorkspaces","isWorkspaceHibernated","isWorkspaceEmpty","eligibleForHibernation","hibernationPromises","tryHibernateWorkspace","canBeHibernated","workspaceSnapshot","getWorkspacesInFrame","snapshotPromises","platformOperations","handleGetEnvironment","handleGetBase","isSupportedByController","isSupportedByPlatform","AppDirectory","remoteWatcher","maxAllowedApplicationsInStore","baseEventFlushDurationMs","setup","parsedDefinitions","parseDefinition","currentApps","mergeResult","readyApps","announceApps","reverseParseDefinition","addedApps","changedApps","removedApps","currentAppsTable","isChecked","definitionDetails","removedDetails","glue42CoreAppProps","baseDefinition","fetchTimeout","timeoutHit","defaultRemoteWatcherHeaders","defaultRemoteWatcherRequestTimeoutMS","RemoteWatcher","handleApps","setRequest","poll","responseJson","validatedApps","waitInterval","ServiceWorkerController","serviceWorkerRegistration","_serviceWorkerRegistration","_broadcastMessageHandler","prepareSwDb","registerWorker","waitRegistration","setUpBroadcastChannelConnection","showNotification","glueData","onNotificationClick","onNotificationClose","BroadcastChannel","broadcastMessageHandler","pong","workerUrl","registration","platformUrl","setNotificationDefaults","notificationsOperationDecoder","glue42NotificationOptionsWithDefaultsDecoder","notificationClickConfigDecoder","isInExtension","systemUnsubFuncs","handleRaiseNotification","handleRequestPermission","handleGetPermission","handleList","handleClick","handleClearAll","handleConfigure","handleGetConfiguration","handleSetState","handleClearOld","currentActiveCount","removeExtensionNotificationsListeners","setupExtensionNotifications","listenForServiceWorkerNotificationEvents","notificationsData","validateServiceAccess","updateNotificationsConfig","syncActiveCount","processNewNotification","notificationEventPayload","raiseExtensionToast","raiseActionsToast","raiseSimpleToast","permissionValue","allowPlatform","callerApp","allIsAllowed","callerExistsInAllowed","notificationData","extNotificationConfig","buttons","iconUrl","chromeOptions","defaultIcon","defaultMessage","imageUrl","getExtNotificationsConfig","listenForExtensionNotificationsEvents","_chromeClickedHandler","chromeClickedHandler","onClicked","_chromeButtonClickedHandler","chromeButtonClickedHandler","onButtonClicked","_chromeClosedHandler","chromeClosedHandler","removeListener","notificationId","buttonIndex","unsubNotificationClick","clickData","unsubNotificationClose","callDefinedInterop","foundNotificationInteropAction","interopConfig","previousCount","updatedActiveCount","extensionOperationTypesDecoder","clientHelloResponseDecoder","clientHelloDecoder","ExtensionController","handleClientHello","widgetConfig","getWidgetConfig","stopped","preferredUrl","preferredAuth","shouldForceTransfer","discoveryInterval","manual","check","checkPreFlight","transportSwitchConfig","changeClientsConnection","fullDefaultRevert","logicTestResult","connectionTest","TransactionsController","transactionData","foundTransaction","InterceptionController","registerInterceptor","registrantName","collisions","interception","registeredInterception","collisionsAsString","collision","inquiry","foundEntry","PluginsController","registeredPlugins","allPlugins","plugin","criticalPlugins","startPromise","startPlugin","platformControls","buildPlatformControls","registerPlugin","control","sendControl","DomainsController","searchController","managerController","defaultDomainNames","domains","libController","domainNameDecoder","configurePostStart","controllerName","registerDynamicDomain","registeredDomain","unregisterDynamicDomain","defaultDomainName","IntentsResolverHelper","instancePromise","RESOLVER_UNAVAILABLE","handlerTypeErrorMessage","RESOLVER_TIMEOUT","traceHandlerDetailsMessage","responseHandler","baseStartContext","getServerInstanceByWindowId","getWindowBoundsByServerInstance","operationErrorMessage","USER_CANCELLED","CryptoJS","Base","mixIn","$super","WordArray","words","sigBytes","clamp","enc","Hex","Latin1","Utf8","escape","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","_minBufferSize","_doProcessBlock","Hasher","cfg","_doReset","finalize","_doFinalize","_createHelper","_createHmacHelper","HMAC","algo","x64","Word","high","low","toX32","Cipher","Base64","EvpKDF","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","_xformMode","keySize","ivSize","encrypt","decrypt","StreamCipher","_iv","_prevBlock","BlockCipherMode","Encryptor","Decryptor","_cipher","processBlock","encryptBlock","decryptBlock","CBC","pad","Pkcs7","unpad","BlockCipher","padding","_mode","CipherParams","formatter","OpenSSL","ciphertext","salt","SerializableCipher","algorithm","_parse","kdf","compute","PasswordBasedCipher","AES","_nRounds","_keySchedule","_invKeySchedule","_doCryptBlock","_lBlock","_rBlock","DES","_subKeys","_invSubKeys","TripleDES","_des1","_des2","_des3","_map","sin","MD5","_hash","HmacMD5","SHA1","HmacSHA1","sqrt","SHA256","HmacSHA256","SHA224","HmacSHA224","SHA512","L","HmacSHA512","SHA384","HmacSHA384","RIPEMD160","HmacRIPEMD160","_hasher","_oKey","_iKey","PBKDF2","hasher","iterations","b64map","b64pad","dbits","hex2b64","b64tohex","int2char","BigInteger","fromNumber","fromString","nbi","am1","am2","am3","BI_FP","BI_RM","BI_RC","intAt","bnpCopyTo","bnpFromInt","nbv","fromInt","bnpFromString","fromRadix","ZERO","subTo","bnpClamp","bnToString","negate","toRadix","bnNegate","bnAbs","bnCompareTo","nbits","bnBitLength","bnpDLShiftTo","bnpDRShiftTo","bnpLShiftTo","bnpRShiftTo","bnpSubTo","bnpMultiplyTo","bnpSquareTo","bnpDivRemTo","copyTo","lShiftTo","dlShiftTo","compareTo","ONE","drShiftTo","rShiftTo","bnMod","divRemTo","Classic","cConvert","cRevert","cReduce","cMulTo","multiplyTo","cSqrTo","squareTo","bnpInvDigit","Montgomery","invDigit","mpl","mph","mt2","montConvert","montRevert","montReduce","montSqrTo","montMulTo","bnpIsEven","bnpExp","convert","sqrTo","mulTo","revert","bnModPowInt","isEven","exp","bnClone","bnIntValue","bnByteValue","bnShortValue","bnpChunkSize","bnSigNum","bnpToRadix","signum","chunkSize","intValue","bnpFromRadix","dMultiply","dAddOffset","bnpFromNumber","testBit","bitwiseTo","op_or","isProbablePrime","bitLength","nextBytes","bnToByteArray","bnEquals","bnMin","bnMax","bnpBitwiseTo","op_and","bnAnd","bnOr","op_xor","bnXor","op_andnot","bnAndNot","bnNot","bnShiftLeft","bnShiftRight","lbit","bnGetLowestSetBit","cbit","bnBitCount","bnTestBit","bnpChangeBit","bnSetBit","changeBit","bnClearBit","bnFlipBit","bnpAddTo","bnAdd","addTo","bnSubtract","bnMultiply","bnSquare","bnDivide","bnRemainder","bnDivideAndRemainder","bnpDMultiply","bnpDAddOffset","NullExp","nNop","nMulTo","nSqrTo","bnPow","bnpMultiplyLowerTo","bnpMultiplyUpperTo","Barrett","divide","barrettConvert","barrettRevert","barrettReduce","multiplyUpperTo","multiplyLowerTo","barrettSqrTo","barrettMulTo","bnModPow","bnGCD","getLowestSetBit","bnpModInt","bnModInverse","subtract","modPowInt","lowprimes","lplim","bnIsProbablePrime","modInt","millerRabin","bnpMillerRabin","shiftRight","modPow","Arcfour","ARC4init","ARC4next","prng_newstate","byteValue","shortValue","toByteArray","equals","andNot","not","bitCount","setBit","clearBit","flipBit","remainder","divideAndRemainder","modInverse","gcd","square","rng_psize","rng_state","rng_pool","rng_pptr","rng_seed_int","rng_seed_time","rng_get_byte","rng_get_bytes","SecureRandom","parseBigInt","pkcs1pad2","oaep_mgf1_arr","oaep_pad","KJUR","MessageDigest","Util","getCanonicalAlgName","getHashLength","hextorstr","hashHex","rstrtohex","RSAKey","dmp1","dmq1","coeff","RSASetPublic","isPublic","isPrivate","RSADoPublic","RSAEncrypt","doPublic","RSAEncryptOAEP","pkcs1unpad2","oaep_mgf1_str","oaep_unpad","RSASetPrivate","RSASetPrivateEx","RSAGenerate","RSADoPrivate","RSADecrypt","doPrivate","RSADecryptOAEP","ECFieldElementFp","feFpEquals","feFpToBigInteger","feFpNegate","feFpAdd","toBigInteger","feFpSubtract","feFpMultiply","feFpSquare","feFpDivide","ECPointFp","curve","zinv","pointFpGetX","fromBigInteger","pointFpGetY","pointFpEquals","isInfinity","pointFpIsInfinity","pointFpNegate","pointFpAdd","twice","getInfinity","pointFpTwice","pointFpMultiply","pointFpMultiplyTwo","ECCurveFp","infinity","curveFpGetQ","curveFpGetA","curveFpGetB","curveFpEquals","curveFpGetInfinity","curveFpFromBigInteger","curveFpDecodePointHex","getA","getB","setPublic","encryptOAEP","setPrivate","setPrivateEx","decryptOAEP","getX","getY","multiplyTwo","getQ","decodePointHex","getByteLength","getEncoded","toByteArrayUnsigned","decodeFrom","decodeFromHex","add2D","twice2D","multiply2D","isOnCurve","jsonParse","asn1","ASN1Util","integerToByteHex","bigIntToMinTwosComplementsHex","getPEMStringFromHex","hextopem","newObject","ASN1Object","DERBoolean","DERInteger","DERBitString","DEROctetString","DERNull","DERObjectIdentifier","DEREnumerated","DERUTF8String","DERNumericString","DERPrintableString","DERTeletexString","DERIA5String","DERUTCTime","DERGeneralizedTime","DERVisibleString","DERBMPString","DERSequence","DERSet","DERTaggedObject","explicit","jsonToASN1HEX","tohex","oidHexToInt","oidIntToHex","getLengthHexFromValue","hTLV","isModified","getFreshValueHex","getEncodedHex","getValueHex","setByParam","tlv","DERAbstractString","superclass","getString","setString","utf8tohex","setStringHex","hex","extendClass","DERAbstractTime","localDateToUTC","formatDate","zeroPadding","setByDate","setByDateValue","DERAbstractStructured","setByASN1ObjectArray","asn1Array","appendASN1Object","setByBigInteger","bigint","setByInteger","setValueHex","setHexValueIncludingUnusedBits","setUnusedBitsAndHexValue","setByBinaryString","setByBooleanArray","newFalseArray","bin","setValueOidString","oidtohex","setValueName","x509","OID","name2oid","setValueNameOrOid","oid","stohex","millis","sortFlag","sortflag","ASN1HEX","getV","isASN1HEX","isExplicit","asn1Object","setASN1Object","tage","tagi","utf8tob64u","b64utoutf8","stoBA","BAtohex","b64tob64u","b64utob64","hextob64u","b64utohex","uricmptohex","encodeURIComponentAll","hextoutf8","hextouricmp","iso88591hextoutf8","iso88591hextoutf8hex","hextob64","foldnl","b64nltohex","pemtohex","zulutomsec","timetogen","zulutosec","ipv6tohex","hextoipv6","hextoip","ipprefixlen","iptohex","ipnetmask","ucs2hextoutf8","ishex","isBase64URLDot","hextoposhex","hextooid","strpad","getLblen","getL","getVblen","getVidx","getTLV","getTLVblen","getNextSiblingIdx","getChildIdx","getNthChildIdx","getIdxbyList","getIdxbyListEx","isContextTag","getTLVbyList","getTLVbyListEx","getVbyList","getVbyListEx","getInt","bitstrtoint","getOID","getOIDName","oid2name","hextooidstr","dump","ommit_long_octet","oidname","x509ExtName","bool","bitstr","bitstrtobinstr","octstr","null","enum","checkStrictDER","isHex","Certificate","TBSCertificate","AlgorithmIdentifier","sign","sigalg","tbsobj","Signature","cakey","updateHex","sighex","getPEM","Time","X500Name","Extensions","SubjectPublicKeyInfo","serial","issuer","notbefore","notafter","subject","KEYUTIL","getKey","sbjpubkey","aParam","extname","extn","PrivateExtension","SubjectKeyIdentifier","KeyUsage","SubjectAltName","IssuerAltName","BasicConstraints","NameConstraints","CRLDistributionPoints","CertificatePolicies","PolicyMappings","PolicyConstraints","InhibitAnyPolicy","AuthorityKeyIdentifier","ExtKeyUsage","AuthorityInfoAccess","CRLNumber","CRLReason","OCSPNonce","OCSPNoCheck","AdobeTimeStamp","SubjectDirectoryAttributes","Extension","getExtnValueHex","digitalSignature","nonRepudiation","keyEncipherment","dataEncipherment","keyAgreement","keyCertSign","cRLSign","encipherOnly","decipherOnly","getBinValue","asn1ExtnValue","namearraytobinstr","pathLen","setByDPArray","DistributionPoint","setByOneURI","fulluri","DistributionPointName","asn1DP","dpobj","dpname","full","asn1Obj","asn1V","GeneralNames","isPrototypeOf","PolicyInformation","PolicyQualifierInfo","policyoid","UserNotice","cps","unotice","DisplayText","NoticeReference","noticeref","exptext","org","noticenum","seq","reqexp","inhibit","skip","GeneralSubtree","permit","exclude","GeneralName","setPurposeArray","isKey","asn1KID","asn1CertIssuer","asn1CertSN","setKIDByParam","getKeyID","setCertIssuerByParam","ldapstr","certsubject","certissuer","setCertSNByParam","X509","readCertPEM","getSerialNumberHex","kid","issuersn","setAccessDescriptionArray","ocsp","caissuer","setNameArray","attr","utf8str","gentime","prnstr","CRL","TBSCertList","getRevCertSequence","revcert","thisupdate","nextupdate","CRLEntry","setCertSerial","setRevocationDate","TLV","reqauth","paramArray","sRule","RDN","setByString","rule","setByLdapString","ldapToCompat","setByObject","getIssuerHex","getSubjectHex","compatToLDAP","reverse","onelineToLDAP","ldapToOneline","AttributeTypeAndValue","addByMultiValuedString","addByString","parseString","sType","sValue","dsType","isMail","isPrintable","attrTypeAndValueStr","setByAttrTypeAndValueStr","_getDsType","getValueObj","atype2obj","ECDSA","DSA","getASN1Object","asn1AlgId","asn1SubjPKey","setPubKey","curveName","asn1params","pubKeyHex","setTimeParams","timeParams","getType","Time_bak","nameAlg","asn1Alg","asn1Params","paramEmpty","PSSNAME2ASN1TLV","name2obj","paramempty","SHAwithRSAandMGF1","SHA256withRSAandMGF1","SHA384withRSAandMGF1","SHA512withRSAandMGF1","OtherName","rfc822","dns","ldapdn","certsubj","setByParamArray","name2oidList","sha1","sha256","sha384","sha512","sha224","md5","md2","ripemd160","MD2withRSA","MD4withRSA","MD5withRSA","SHA1withRSA","rsaPSS","SHA224withRSA","SHA256withRSA","SHA384withRSA","SHA512withRSA","SHA1withECDSA","SHA224withECDSA","SHA256withECDSA","SHA384withECDSA","SHA512withECDSA","dsa","SHA1withDSA","SHA224withDSA","SHA256withDSA","rsaEncryption","commonName","countryName","localityName","stateOrProvinceName","streetAddress","organizationName","organizationalUnitName","domainComponent","userId","surname","givenName","distinguishedName","emailAddress","businessCategory","postalCode","uniqueIdentifier","organizationIdentifier","jurisdictionOfIncorporationL","jurisdictionOfIncorporationSP","jurisdictionOfIncorporationC","subjectDirectoryAttributes","subjectKeyIdentifier","keyUsage","subjectAltName","issuerAltName","basicConstraints","cRLNumber","cRLReason","nameConstraints","cRLDistributionPoints","certificatePolicies","anyPolicy","policyMappings","authorityKeyIdentifier","policyConstraints","extKeyUsage","inhibitAnyPolicy","authorityInfoAccess","ocspBasic","ocspNonce","ocspNoCheck","caIssuers","anyExtendedKeyUsage","serverAuth","clientAuth","codeSigning","emailProtection","timeStamping","ocspSigning","smtpUTF8Mailbox","dateOfBirth","placeOfBirth","gender","countryOfCitizenship","countryOfResidence","ecPublicKey","secp256r1","secp256k1","secp384r1","secp521r1","pkcs5PBES2","pkcs5PBKDF2","tstinfo","signingCertificate","timeStampToken","signaturePolicyIdentifier","etsArchiveTimeStamp","signingCertificateV2","etsArchiveTimeStampV2","extensionRequest","messageDigest","signingTime","counterSignature","archiveTimeStampV3","pdfRevocationInfoArchival","adobeTimeStamp","smimeMailboxLegacy","smimeMailboxMulti","smimeMailboxStrict","smimeOrganizationLegacy","smimeOrganizationMulti","smimeOrganizationStrict","smimeSponsorLegacy","smimeSponsorMulti","smimeSponsorStrict","smimeIndividualLegacy","smimeIndividualMulti","smimeIndividualStrict","atype2oidList","STREET","UID","serialNumber","objCache","registerOIDs","checkOIDs","oid2atype","X509Util","newCertPEM","cms","Attribute","typeOid","getValueArray","ContentType","SigningTime","SigningCertificate","ESSCertID","hasis","cert","IssuerSerial","getCertHash","SigningCertificateV2","ESSCertIDv2","getIssuer","SignerIdentifier","IssuerAndSerialNumber","IssuerAndSerialName","skid","getExtSubjectKeyIdentifier","AttributeList","cades","SignaturePolicyIdentifier","SignatureTimeStamp","SignerInfo","EncapsulatedContentInfo","SignedData","sattrs","signkey","hashalg","sigalgfield","uattrs","isDetached","ContentInfo","CertificateSet","RevocationInfoChoices","checkAndFixParam","_setDigestAlgs","_setContentTypeByEContent","_setMessageDigestByEContent","_setSignerInfoVersion","_setSignedDataVersion","sinfos","hashalgs","econtent","_getAttrParamByName","_getSignedDataVersion","revinfos","getEncodedHexPrepare","fixed","certs","getContentInfo","getContentInfoEncodedHex","RevocationInfoChoice","crl","OtherRevocationFormat","CMSUtil","newSignedData","verifySignedData","signerid_issuer1","signerid_serial1","idxSignedAttrs","sigval","signedAttrIdxList","saSigningTime","saMessageDigest","verifyDetail","validMessageDigest","certsIdx","certkeys","readCertHex","getPublicKey","cccc","cccci","certkey_idx","validSignatureValue","signedattrshex","verify","validSignatureValue_isValid","cmsType","revinfosIdx","signerinfosIdx","signerInfos","signerInfoIdxList","CMSParser","getCMSSignedData","getSignedData","getHashAlgArray","getEContent","getCertificateSet","getSignerInfos","getAlgorithmIdentifierName","getSignerInfo","getIssuerAndSerialNumber","getAttributeList","getSignerIdentifier","getX500Name","valhex","setMessageDigest","setSigningTime","setSigningCertificate","setSigningCertificateV2","setSignaturePolicyIdentifier","getESSCertID","polhex","getESSCertIDv2","getIssuerSerial","getGeneralNames","tsp","TimeStampToken","TSTInfo","MessageImprint","Accuracy","dVersion","dPolicy","dMessageImprint","dSerial","dGenTime","dAccuracy","dOrdering","dNonce","dTsa","policy","messageImprint","genTime","accuracy","ordering","nonce","tsa","micros","TimeStampReq","certreq","TimeStampResp","PKIStatusInfo","tst","statusinfo","PKIStatus","PKIFreeText","PKIFailureInfo","statusstr","failinfo","granted","grantedWithMods","waiting","revocationWarning","revocationNotification","badAlg","badRequest","badDataFormat","timeNotAvailable","unacceptedPolicy","unacceptedExtension","addInfoNotAvailable","systemFailure","AbstractTSAAdapter","getTSTHex","SimpleTSAAdapter","FixedTSAAdapter","TSPUtil","newTimeStampToken","parseTimeStampReq","TSPParser","getTimeStampReq","parseMessageImprint","getMessageImprint","getResponse","getPKIStatusInfo","getToken","setTSTInfo","getTSTInfo","getAccuracy","pGeneralNames","getExtParamArray","getPKIFreeText","getPKIFailureInfo","SignaturePolicyId","OtherHashAlgAndValue","OtherHashValue","CompleteCertificateRefs","OtherCertID","_isHex","OtherHash","CAdESUtil","parseSignedDataForAddingUnsigned","parseSignerInfoForAddingUnsigned","digalg","sig","dCMSVersion","dSignerIdentifier","dDigestAlgorithm","dSignedAttrs","dSigAlg","dSig","dUnsignedAttrs","csr","CertificationRequest","CertificationRequestInfo","sbjprvkey","extreq","CSRUtil","newCSRPEM","getParam","tbs","verifySignature","alert","DEFAULT_HASH","OCSPResponse","ResponseBytes","_getStatusCode","resstatus","BasicOCSPResponse","restype","ResponderID","_SingleResponseList","SingleResponseList","_ResponseData","ResponseData","tbsresp","reskey","respid","prodat","getSubject","SingleResponse","CertID","CertStatus","certid","setByValue","issname","isskey","sbjsn","setByCert","issuerCert","subjectCert","getParamByCerts","getPublicKeyHex","dReqCert","dExt","TBSRequest","dRequestorName","dRequestList","dRequestExt","setRequestListByParam","reqList","OCSPRequest","dTbsRequest","dOptionalSignature","OCSPUtil","getRequestHex","getOCSPResponseInfo","responseStatus","certStatus","revocationTime","thisUpdate","nextUpdate","OCSPParser","getOCSPRequest","getTBSRequest","getRequestList","getRequest","getCertID","getOCSPResponse","getResponseBytes","getBasicOCSPResponse","getResponseData","getResponderID","getSingleResponseList","getSingleResponse","getCertStatus","isInteger","isBase64","isBase64URL","isIntegerArray","isIA5","aryval","DIGESTINFOHEAD","DEFAULTPROVIDER","hmacmd5","hmacsha1","hmacsha224","hmacsha256","hmacsha384","hmacsha512","hmacripemd160","RIPEMD160withRSA","MD5withECDSA","RIPEMD160withECDSA","MD5withRSAandMGF1","SHA1withRSAandMGF1","SHA224withRSAandMGF1","RIPEMD160withRSAandMGF1","CRYPTOJSMESSAGEDIGESTNAME","getDigestInfoHex","getPaddedDigestInfoHex","hashString","digestString","digestHex","sha256Hex","sha512Hex","prov","SECURERANDOMGEN","getRandomHexOfNbytes","getRandomBigIntegerOfNbytes","getRandomHexOfNbits","getRandomBigIntegerOfNbits","getRandomBigIntegerZeroToMax","getRandomBigIntegerMinToMax","setAlgAndProvider","updateString","sjcl","codec","toBits","fromBits","algName","provName","HASHLENGTH","Mac","algProv","mac","pass","doFinal","doFinalString","doFinalHex","setPassword","utf8","rstr","b64","b64u","_setAlgNames","mdAlgName","pubkeyAlgName","_zeroPaddingOfSignature","prvKey","pubKey","sHashHex","ecprvhex","eccurvename","prv","hSign","signWithMessageHashPSS","pssSaltLen","signWithMessageHash","signString","signHex","ecpubhex","pub","verifyWithMessageHashPSS","verifyWithMessageHash","algProvName","initParams","psssaltlen","prvkeypem","prvkeypas","getAlgByKeyAndName","oidhex2name","ECParameterDB","getName","getBigRandom","setNamedCurve","ecparams","getByName","prvKeyHex","setPrivateKeyHex","setPublicKeyHex","getPublicKeyXYHex","keycharlen","getShortNISTPCurveName","generateKeyPairHex","generatePublicKeyHex","biRSSigToASN1Sig","fromByteArrayUnsigned","serializeSig","verifyHex","parseSigHex","verifyRaw","Bitcoin","parseSig","toByteArraySigned","parseSigCompact","readPKCS5PrvKeyHex","readPKCS8PrvKeyHex","readPKCS8PubKeyHex","readCertPubKeyHex","parseSigHexInHexRS","asn1SigToConcatSig","concatSigToASN1Sig","hexRSSigToASN1Sig","regist","setPrivateHex","setPublicHex","parseASN1Signature","proc","eproc","keylen","ivlen","cipher","ivsalt","keyhex","ivhex","parsePKCS5PEM","getKeyAndUnusedIvByPasscodeAndIvsalt","decryptKeyB64","getDecryptedKeyHex","getEncryptedPKCS5PEMFromPrvKeyHex","parseHexOfEncryptedPKCS8","encryptionSchemeAlg","encryptionSchemeIV","pbkdf2Salt","pbkdf2Iter","getPBKDF2KeyHexFromParam","_getPlainPKCS8HexFromEncryptedPKCS8PEM","getKeyFromEncryptedPKCS8PEM","getKeyFromPlainPrivatePKCS8Hex","parsePlainPrivatePKCS8Hex","algoid","algparam","keyidx","getKeyFromPlainPrivatePKCS8PEM","_getKeyFromPublicPKCS8Hex","parsePublicRawRSAKeyHex","parsePublicPKCS8Hex","pss_mgf1_str","_rsasign_getAlgNameAndHashFromHexDisgestInfo","HEX2STAG","foffset","aExtInfo","getVersion","getSignatureAlgorithmField","getIssuerString","getSubjectString","getNotBefore","getNotAfter","getSPKI","getSPKIValue","getPublicKeyIdx","getPublicKeyContentIdx","getSignatureAlgorithmName","getSignatureValueHex","parseExt","vidx","getExtInfo","getCriticalExtV","getExtBasicConstraints","getExtNameConstraints","getGeneralSubtree","getGeneralName","getExtKeyUsage","getExtKeyUsageString","getExtKeyUsageBin","KEYUSAGE_NAME","getExtAuthorityKeyIdentifier","getExtExtKeyUsage","getExtExtKeyUsageName","getExtSubjectAltName","getExtIssuerAltName","getOtherName","getExtSubjectAltName2","hex2dn","getExtCRLDistributionPoints","getDistributionPoint","getDistributionPointName","getExtCRLDistributionPointsURI","getExtAIAInfo","getExtAuthorityInfoAccess","getExtCertificatePolicies","getPolicyInformation","getPolicyQualifierInfo","getUserNotice","_asn1ToUnotice","_asn1ToNoticeRef","asn1ToDisplayText","_asn1ToNoticeNum","getDisplayText","ia5str","visstr","bmpstr","getExtPolicyMappings","getExtPolicyConstraints","getExtInhibitAnyPolicy","getExtCRLNumber","getExtCRLReason","getExtOcspNonce","getExtOcspNoCheck","getExtAdobeTimeStamp","getExtSubjectDirectoryAttributes","numstr","telstr","Erorr","getX500NameRule","getAttrTypeAndValue","getRDN","getX500NameArray","dnarraytostr","canon","c14nRDNArray","dncanon","dnhex","tbshex","nodnarray","getExtParam","EXT_PARSER","findExt","updateExtCDPFullURI","updateExtAIAOCSP","updateExtAIACAIssuer","setCanonicalizedDN","getInfo","dname","kty","crv","getPublicKeyFromCertHex","getPublicKeyFromCertPEM","generateKeypair","prvKeyObj","pubKeyObj","getKeyFromCSRPEM","getKeyFromCSRHex","parseCSRHex","p8pubkeyhex","getJWK","jws","JWS","getJWKthumbprint","x5c","x5t","getJWKFromKey","getPosArrayOfChildrenFromHex","getHexValueArrayOfChildrenFromHex","readPrivateKeyFromPEMString","readPKCS5PubKeyHex","signPSS","verifyPSS","SALT_LEN_HLEN","SALT_LEN_MAX","SALT_LEN_RECOVER","registExtParser","hex2rdn","hex2attrTypeValue","getPublicKeyInfoPropOfCertPEM","isSafeJSONString","parseJWS","parsedJWS","sigvalH","headB64U","payloadB64U","sigvalB64U","sigvalBI","headS","payloadS","readSafeJSONString","jwsalg2sigalg","headerObj","payloadObj","headerPP","payloadPP","sigHex","verifyJWT","inArray","includedArray","iss","aud","IntDate","getNow","verifyAt","gracePeriod","nbf","iat","jti","HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","ES512","PS256","PS384","PS512","none","getEncodedSignatureValueFromJWS","getZulu","intDate2UTCString","toUTCString","intDate2Zulu","JWSJS","aHeader","sPayload","aSignature","initWithJWS","addSignature","verifyAll","verifyNth","readJWSJS","signatures","getJSON","isEmpty","b64utoutf8_1","KJUR_1","LicenseController","Builder","saveResponses","getRawWindowsLayoutData","existingLayout","updateLayout","buildNewLayout","existingLayoutComponentIds","layoutIdOccurrenceMap","getLayoutIdOccurrenceMap","windowComponents","generateWindowComponent","workspacesSaveRequest","preExistingFrameComponents","component","workspaceFrameComponents","compileWorkspacesFrameComponents","windowResponses","buildNewWindowComponent","getEligibleGlueWindows","glueWindow","buildRawGlueWindowData","getEligibleNonGlueWindows","buildRawNonGlueWindowData","requestedInstances","allEligibleWindows","getAllEligibleWindows","allNonGlueWindows","eligibleWindow","nonGlueWebWindow","allNonPlatformWindows","requestedServers","ignoredServers","updateExistingWindowComponent","allFramesData","getAllFramesSnapshotsWithBounds","generateFrameComponent","layoutComponentIds","duplications","softUpdateFrameComponent","preExistingComponent","selectedWspIndex","createNewFrameComponent","existingComponent","layoutComponentIdDuplications","wsp","allFramesSummaries","Restorer","resetter","doInitialValidation","closeInstances","closeRunningInstances","closeCaller","closeAll","closeAllExceptCaller","componentForPlatformFrame","canPlatformFrameAcceptComponent","pickComponentForPlatformFrame","restorePromise","restoreWindowComponent","placeInPlatform","restoreWorkspaceFrameComponent","layoutContext","restoreContext","boundsCheck","checkTargetBoundsPossible","isPossible","boundsToUse","readyFrame","createFrameWithWorkspaceComponents","frameWorkspaces","componentContext","myFrame","getAllWindows","screens","leftFit","topFit","platformFrameId","targetFrame","keepWorkspaces","LayoutValidator","validateRequiredApplicationsExistence","validateWorkspaceConfigurationInPlatform","validateNoAppNameAndUrl","doFinalValidation","validateWindowNamesCollision","validateInstanceIdCollision","validateWorkspaceFramesIdCollisions","requestedWindowNames","allOpenedWindowNames","nameCollisions","existingName","requestedInstanceIds","allOpenedInstanceIds","idCollisions","existingInstanceId","allOpenedFrameIds","corruptedWindowComponents","noAppComponent","printableCorruptedComponents","allAvailableAppNames","requiredAppsNames","windowComponent","getRequiredAppNamesFromWorkspaceFrameComponents","missingAppNames","availableApp","requiredApps","workspaceAppNames","getAllAppNamesFromChildren","requiredAppNames","windowChild","Resetter","closeNecessaryWorkspacesFrames","cleanupWorkspaceCaller","foundCaller","cleanUpFrameExceptCaller","callerWorkspaceWindow","targetWorkspaces","workspacesWithoutCaller","callerWorkspace","allRemainingWindows","searchOperationDecoder","SearchController","appsRepo","layoutsRepo","workspacesRepo","repos","providerName","myTypes","displayType","myProviderRegistrationConfig","unsubOnQuery","processQuery","markQueryDone","markQueryError","unsubOnQueryCancel","processQueryCancel","allowedResultsCount","reposToCall","queryType","callRepo","repoResults","getRepoResults","sendResults","getResults","ApplicationsRepository","eligibleApps","allApps","filteredByDisplayName","transformApps","filteredByCaption","LayoutsRepository","eligibleLayouts","transformLayouts","WorkspacesRepository","eligibleWorkspaces","transformWorkspaces","LocalStoreController","defaultGlobalLayoutNamespace","themesNamespace","initialValue","saveThemeIfMissing","themeData","getData","saveData","getAllThemes","markThemeSelected","isUserSelected","foundTheme","selected","currentConfig","destinationArray","userData","parsedUserData","themesOperationDecoder","lightTheme","darkTheme","handleGetCurrent","handleSelect","themesStream","themeName","getOsTheme","selectedTheme","matchMedia","managerOperationDecoder","DEFAULT_RESPONSE_TIMEOUT_MS","ManagerController","buildClient","unloadCallback","callManager","unsubLayouts","clientOptions","getMachineInfo","glueInfo","getGlueInfo","handleLayoutEvent","defaultGlobalLayout","defaultLayout","layoutId","saveRequest","transformPrefs","allPrefsResponse","handleLayoutRemoved","handleLayoutAdded","Identity","uaParser","workspacesFrameUrl","arch","architecture","mobileDevice","vendor","displays","getDisplays","plus","workingArea","availWidth","availHeight","dpi","devicePixelRatio","isPrimary","defaultDataRefreshIntervalMS","defaultTokenRefreshIntervalMS","Session","sessionInitiated","serverConfig","updateApplications","updateLayouts","include","latestDataInfo","lastApps","lastLayouts","waitMS","hasChanges","processServerLayoutsData","extractedLayouts","userLayoutDef","sanitizesLayouts","sanitizeLayouts","shouldUseManager","prefsData","validatedApp","validateApp","getLastUpdateTimestamp","callManagerIfApplicable","allPrefs","nonExistentPrefs","_gatewayInstance","_platformInstance","_domainsController","_systemController","_searchController","appsSearchRepo","layoutsSearchRepo","workspacesSearchRepo","_themesController","_localStorageController","_stateChecker","_windowsController","_applicationsController","_appDirectory","_remoteWatcher","_licenseController","_layoutsController","layoutsBuilder","layoutsRestorer","_workspacesController","_hibernationWatcher","_intentsController","intentsResolverHelper","_intentsResolverController","_channelsController","_layoutsBuilder","_layoutsRestorer","layoutsValidator","layoutsResetter","_layoutsValidator","_layoutsResetter","_notificationsController","_framesController","_idbController","_portsBridge","_serviceWorkerController","_transactionsController","_interceptionController","_pluginsController","_appsSearchRepo","_managerController","managerIdentity","managerSession","_managerIdentity","_managerSession","_layoutsSearchRepo","_workspacesSearchRepo","_prefsController","looseInterval","ioConnectBrowserPlatformFactory","isOpenerGlue","isPlacedInWorkspace","clientOnly","IOBrowserPlatform"],"mappings":"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EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,UAAU,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,UAAU,YAAYA,EAAE,UAAU,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,WAAWA,EAAE,WAAW,WAChfA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,WAAWA,EAAE,UAAU,YAAYA,EAAE,UAAU,YAAYA,EAAE,UAAU,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,WAAWA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,UAAU,YAAYA,EAAE,UAAU,WAAWA,EAAE,UAAU,YAAYA,EAAE,UAAU,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAC5e,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,WAAWA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,WAAWA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,UAAU,WAAWA,EAAE,UAAU,YAAYA,EAAE,UAAU,YAAYA,EAAE,UAAU,YAAYA,EAAE,UAAU,YAAYA,EAAE,UAAU,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAC3eA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,WAAWA,EAAE,WAAW,WAAWA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,WAAW,WAAWA,EAAE,WAAW,YAAYA,EAAE,WAAW,YAAYA,EAAE,UAAU,YAAYA,EAAE,UAAU,YAAYA,EAAE,UAAU,YAAYA,EAAE,UAAU,WAAWA,EAAE,UAAU,WAAWA,EAAE,UAAU,YAAYA,EAAE,WAAW,WAAWA,EAAE,WAAW,YAAYA,EAAE,WAC1e,YA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","x_google_ignoreList":[0,6,7,8,9,10,11,12,13,14,15,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,91,93,95,111,112,141]} \ No newline at end of file +{"version":3,"file":"browser.platform.es.js","sources":["../../browser/dist/browser.es.js","../src/common/constants.ts","../src/common/defaultConfig.ts","../../../node_modules/jwt-decode/build/jwt-decode.esm.js","../../../node_modules/form-data/lib/browser.js","../../../node_modules/axios/dist/browser/axios.cjs","../../../node_modules/@glue42/server-api/dist/client-api/base.js","../../../node_modules/@glue42/server-api/dist/client-api/sub/systemConfig.js","../../../node_modules/@glue42/server-api/dist/client-api/promise.js","../../../node_modules/@glue42/server-api/dist/client-api/client.js","../../../node_modules/@glue42/server-api/dist/client.js","../../../node_modules/ua-parser-js/src/ua-parser.js","../../../node_modules/immer/dist/immer.mjs","../../../node_modules/jsrsasign/lib/jsrsasign.js","../../../node_modules/@interopio/gateway/browser.js","../src/connection/gateway.ts","../src/shared/logger.ts","../../../node_modules/nanoid/index.browser.js","../../../node_modules/nanoid/url-alphabet/index.js","../../../node_modules/object-keys/isArguments.js","../../../node_modules/object-keys/index.js","../../../node_modules/object-keys/implementation.js","../../../node_modules/es-errors/index.js","../../../node_modules/es-errors/eval.js","../../../node_modules/es-errors/range.js","../../../node_modules/es-errors/ref.js","../../../node_modules/es-errors/syntax.js","../../../node_modules/es-errors/type.js","../../../node_modules/es-errors/uri.js","../../../node_modules/has-symbols/shams.js","../../../node_modules/has-symbols/index.js","../../../node_modules/get-intrinsic/index.js","../../../node_modules/has-proto/index.js","../../../node_modules/function-bind/implementation.js","../../../node_modules/function-bind/index.js","../../../node_modules/hasown/index.js","../../../node_modules/es-define-property/index.js","../../../node_modules/gopd/index.js","../../../node_modules/define-data-property/index.js","../../../node_modules/has-property-descriptors/index.js","../../../node_modules/define-properties/index.js","../../../node_modules/set-function-length/index.js","../../../node_modules/call-bind/index.js","../../../node_modules/call-bind/callBound.js","../../../node_modules/object.assign/implementation.js","../../../node_modules/object.assign/polyfill.js","../../../node_modules/object.assign/shim.js","../../../node_modules/object.assign/index.js","../../../node_modules/functions-have-names/index.js","../../../node_modules/set-function-name/index.js","../../../node_modules/regexp.prototype.flags/implementation.js","../../../node_modules/regexp.prototype.flags/polyfill.js","../../../node_modules/regexp.prototype.flags/shim.js","../../../node_modules/regexp.prototype.flags/index.js","../../../node_modules/has-tostringtag/shams.js","../../../node_modules/is-arguments/index.js","../../../node_modules/object-inspect/index.js","../../../node_modules/side-channel/index.js","../../../node_modules/internal-slot/index.js","../../../node_modules/is-map/index.js","../../../node_modules/stop-iteration-iterator/index.js","../../../node_modules/isarray/index.js","../../../node_modules/is-string/index.js","../../../node_modules/is-set/index.js","../../../node_modules/es-get-iterator/index.js","../../../node_modules/object-is/implementation.js","../../../node_modules/object-is/polyfill.js","../../../node_modules/object-is/shim.js","../../../node_modules/object-is/index.js","../../../node_modules/is-regex/index.js","../../../node_modules/is-array-buffer/index.js","../../../node_modules/is-date-object/index.js","../../../node_modules/is-shared-array-buffer/index.js","../../../node_modules/is-number-object/index.js","../../../node_modules/is-boolean-object/index.js","../../../node_modules/is-symbol/index.js","../../../node_modules/has-bigints/index.js","../../../node_modules/is-bigint/index.js","../../../node_modules/is-weakmap/index.js","../../../node_modules/which-boxed-primitive/index.js","../../../node_modules/is-weakset/index.js","../../../node_modules/is-callable/index.js","../../../node_modules/which-collection/index.js","../../../node_modules/for-each/index.js","../../../node_modules/available-typed-arrays/index.js","../../../node_modules/possible-typed-array-names/index.js","../../../node_modules/which-typed-array/index.js","../../../node_modules/array-buffer-byte-length/index.js","../../../node_modules/deep-equal/index.js","../../../node_modules/fast-deep-equal/index.js","../src/shared/utils.ts","../src/controllers/main.ts","../../utils/dist/utils.es.js","../../../node_modules/decoder-validate/dist/index.es5.js","../src/shared/decoders.ts","../../../node_modules/deepmerge/dist/cjs.js","../../search-api/dist/search-api.es.js","../src/platform.ts","../../core/dist/core.es.js","../src/shared/promisePlus.ts","../src/controllers/glue.ts","../../../node_modules/callback-registry/lib/index.js","../src/connection/portsBridge.ts","../src/libs/windows/decoders.ts","../src/libs/workspaces/decoders.ts","../src/libs/windows/controller.ts","../src/storage/session.ts","../src/controllers/state.ts","../src/libs/applications/decoders.ts","../src/libs/applications/controller.ts","../src/libs/layouts/decoders.ts","../src/libs/layouts/constants.ts","../src/shared/getWindowManagementPermissionStatus.ts","../src/libs/layouts/controller.ts","../../../node_modules/idb/build/wrap-idb-value.js","../../../node_modules/idb/build/index.js","../src/storage/idb.ts","../src/libs/workspaces/defaultConfig.ts","../src/libs/workspaces/controller.ts","../src/libs/intents/decoders.ts","../src/libs/intents/constants.ts","../src/libs/intents/controller.ts","../src/libs/channels/decoders.ts","../src/libs/channels/controller.ts","../src/libs/workspaces/frames.ts","../src/libs/workspaces/hibernationWatcher.ts","../src/controllers/system.ts","../src/libs/applications/appStore/directory.ts","../src/shared/fetchTimeout.ts","../src/libs/applications/defaults.ts","../src/libs/applications/appStore/remoteWatcher.ts","../src/controllers/serviceWorker.ts","../src/libs/notifications/utils.ts","../src/libs/notifications/decoders.ts","../src/libs/notifications/controller.ts","../src/libs/extension/decoders.ts","../src/libs/extension/controller.ts","../src/shared/sequelizer.ts","../src/connection/preferred.ts","../src/controllers/transactions.ts","../src/controllers/interception.ts","../src/controllers/plugins.ts","../src/controllers/domains.ts","../src/libs/intents/resolverHelper.ts","../src/controllers/license.ts","../src/libs/layouts/global/builder.ts","../src/libs/layouts/global/restorer.ts","../src/libs/layouts/global/validator.ts","../src/libs/layouts/global/resetter.ts","../src/libs/search/decoders.ts","../src/libs/search/controller.ts","../src/libs/search/repositories/applications.ts","../src/libs/search/repositories/layouts.ts","../src/libs/search/repositories/workspaces.ts","../src/storage/local.ts","../src/libs/themes/decoders.ts","../src/libs/themes/constants.ts","../src/libs/themes/controller.ts","../src/libs/manager/decoders.ts","../src/libs/manager/controller.ts","../src/libs/manager/constants.ts","../src/libs/manager/identity.ts","../src/libs/manager/session.ts","../src/libs/manager/defaults.ts","../src/libs/prefs/decoders.ts","../src/libs/prefs/controller.ts","../src/shared/ioc.ts","../src/factory.ts","../src/fallbacks/dekstop.ts","../src/fallbacks/browser.ts","../src/index.ts"],"sourcesContent":["const defaultConfig = {\n logger: \"info\",\n gateway: { webPlatform: {} },\n libraries: [],\n exposeAPI: true\n};\nconst parseConfig = (config) => {\n const isPlatformInternal = !!config?.gateway?.webPlatform?.port;\n const combined = Object.assign({}, defaultConfig, config, { isPlatformInternal });\n if (combined.systemLogger) {\n combined.logger = combined.systemLogger.level ?? \"info\";\n }\n return combined;\n};\n\nconst checkSingleton = () => {\n const ioConnectBrowserNamespace = window.glue42core || window.iobrowser;\n if (ioConnectBrowserNamespace && ioConnectBrowserNamespace.webStarted) {\n throw new Error(\"IoConnect Browser has already been started for this application.\");\n }\n if (!ioConnectBrowserNamespace) {\n window.iobrowser = { webStarted: true };\n return;\n }\n ioConnectBrowserNamespace.webStarted = true;\n};\n\nconst enterprise = (config) => {\n const enterpriseConfig = {\n windows: true,\n layouts: \"full\",\n appManager: \"full\",\n channels: true,\n libraries: config?.libraries ?? [],\n logger: config?.systemLogger?.level ?? \"warn\"\n };\n const injectedFactory = window.IODesktop || window.Glue;\n return injectedFactory(enterpriseConfig);\n};\n\n/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok$1 = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err$1 = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise$1 = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault$1 = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException$1 = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map$1 = function (f, r) {\r\n return r.ok === true ? ok$1(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2$1 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok$1(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError$1 = function (f, r) {\r\n return r.ok === true ? r : err$1(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen$1 = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign$1 = function() {\r\n __assign$1 = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign$1.apply(this, arguments);\r\n};\r\n\r\nfunction __rest$1(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual$1(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual$1(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual$1(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray$1 = function (json) { return Array.isArray(json); };\r\nvar isJsonObject$1 = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray$1(json);\r\n};\r\nvar typeString$1 = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot$1 = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString$1(got);\r\n};\r\nvar printPath$1 = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt$1 = function (newAt, _a) {\r\n var at = _a.at, rest = __rest$1(_a, [\"at\"]);\r\n return (__assign$1({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder$1 = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError$1(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise$1(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException$1(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map$1(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen$1(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok$1(json)\r\n : err$1({ message: expectedGot$1('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok$1(json)\r\n : err$1({ message: expectedGot$1('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok$1(json)\r\n : err$1({ message: expectedGot$1('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual$1(json, value)\r\n ? ok$1(value)\r\n : err$1({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject$1(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err$1({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err$1(prependAt$1(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok$1(obj);\r\n }\r\n else if (isJsonObject$1(json)) {\r\n return ok$1(json);\r\n }\r\n else {\r\n return err$1({ message: expectedGot$1('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray$1(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError$1(function (err$$1) { return prependAt$1(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2$1(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok$1([]));\r\n }\r\n else if (isJsonArray$1(json)) {\r\n return ok$1(json);\r\n }\r\n else {\r\n return err$1({ message: expectedGot$1('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray$1(json)) {\r\n if (json.length !== decoders.length) {\r\n return err$1({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err$1(prependAt$1(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok$1(result);\r\n }\r\n else {\r\n return err$1({ message: expectedGot$1(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2$1(Object.assign, acc, decoder.decode(json)); }, ok$1({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok$1(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok$1(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject$1(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err$1(prependAt$1(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok$1(obj);\r\n }\r\n else {\r\n return err$1({ message: expectedGot$1('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok$1(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err$1({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok$1(withDefault$1(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err$1({\r\n at: printPath$1(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject$1(jsonAtPath)) {\r\n return err$1({\r\n at: printPath$1(paths.slice(0, i + 1)),\r\n message: expectedGot$1('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray$1(jsonAtPath)) {\r\n return err$1({\r\n at: printPath$1(paths.slice(0, i + 1)),\r\n message: expectedGot$1('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError$1(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath$1(paths), message: 'path does not exist' }\r\n : prependAt$1(printPath$1(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok$1(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err$1({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string$1 = Decoder$1.string;\r\n/** See `Decoder.number` */\r\nvar number$1 = Decoder$1.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean$1 = Decoder$1.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson$1 = Decoder$1.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nDecoder$1.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant$1 = Decoder$1.constant;\r\n/** See `Decoder.object` */\r\nvar object$1 = Decoder$1.object;\r\n/** See `Decoder.array` */\r\nvar array$1 = Decoder$1.array;\r\n/** See `Decoder.tuple` */\r\nDecoder$1.tuple;\r\n/** See `Decoder.dict` */\r\nDecoder$1.dict;\r\n/** See `Decoder.optional` */\r\nvar optional$1 = Decoder$1.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf$1 = Decoder$1.oneOf;\r\n/** See `Decoder.union` */\r\nDecoder$1.union;\r\n/** See `Decoder.intersection` */\r\nDecoder$1.intersection;\r\n/** See `Decoder.withDefault` */\r\nDecoder$1.withDefault;\r\n/** See `Decoder.valueAt` */\r\nDecoder$1.valueAt;\r\n/** See `Decoder.succeed` */\r\nDecoder$1.succeed;\r\n/** See `Decoder.fail` */\r\nDecoder$1.fail;\r\n/** See `Decoder.lazy` */\r\nvar lazy = Decoder$1.lazy;\n\nconst connectBrowserAppProps = [\"name\", \"title\", \"version\", \"customProperties\", \"icon\", \"caption\", \"type\"];\nconst fdc3v2AppProps = [\"appId\", \"name\", \"type\", \"details\", \"version\", \"title\", \"tooltip\", \"lang\", \"description\", \"categories\", \"icons\", \"screenshots\", \"contactEmail\", \"moreInfo\", \"publisher\", \"customConfig\", \"hostManifests\", \"interop\", \"localizedVersions\"];\n\n/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nDecoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nDecoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nDecoder.union;\r\n/** See `Decoder.intersection` */\r\nDecoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nDecoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nDecoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nDecoder.succeed;\r\n/** See `Decoder.fail` */\r\nDecoder.fail;\r\n/** See `Decoder.lazy` */\r\nDecoder.lazy;\n\nconst nonEmptyStringDecoder$1 = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nconst nonNegativeNumberDecoder$1 = number().where((num) => num >= 0, \"Expected a non-negative number\");\n\nconst intentDefinitionDecoder$1 = object({\n name: nonEmptyStringDecoder$1,\n displayName: optional(string()),\n contexts: optional(array(string())),\n customConfig: optional(object())\n});\nconst v2TypeDecoder = oneOf(constant(\"web\"), constant(\"native\"), constant(\"citrix\"), constant(\"onlineNative\"), constant(\"other\"));\nconst v2DetailsDecoder = object({\n url: nonEmptyStringDecoder$1\n});\nconst v2IconDecoder = object({\n src: nonEmptyStringDecoder$1,\n size: optional(nonEmptyStringDecoder$1),\n type: optional(nonEmptyStringDecoder$1)\n});\nconst v2ScreenshotDecoder = object({\n src: nonEmptyStringDecoder$1,\n size: optional(nonEmptyStringDecoder$1),\n type: optional(nonEmptyStringDecoder$1),\n label: optional(nonEmptyStringDecoder$1)\n});\nconst v2ListensForIntentDecoder = object({\n contexts: array(nonEmptyStringDecoder$1),\n displayName: optional(nonEmptyStringDecoder$1),\n resultType: optional(nonEmptyStringDecoder$1),\n customConfig: optional(anyJson())\n});\nconst v2IntentsDecoder = object({\n listensFor: optional(dict(v2ListensForIntentDecoder)),\n raises: optional(dict(array(nonEmptyStringDecoder$1)))\n});\nconst v2UserChannelDecoder = object({\n broadcasts: optional(array(nonEmptyStringDecoder$1)),\n listensFor: optional(array(nonEmptyStringDecoder$1))\n});\nconst v2AppChannelDecoder = object({\n name: nonEmptyStringDecoder$1,\n description: optional(nonEmptyStringDecoder$1),\n broadcasts: optional(array(nonEmptyStringDecoder$1)),\n listensFor: optional(array(nonEmptyStringDecoder$1))\n});\nconst v2InteropDecoder = object({\n intents: optional(v2IntentsDecoder),\n userChannels: optional(v2UserChannelDecoder),\n appChannels: optional(array(v2AppChannelDecoder))\n});\nconst glue42ApplicationDetailsDecoder = object({\n url: nonEmptyStringDecoder$1,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder$1),\n height: optional(nonNegativeNumberDecoder$1)\n});\nconst glue42HostManifestsBrowserDecoder = object({\n name: optional(nonEmptyStringDecoder$1),\n type: optional(nonEmptyStringDecoder$1.where((s) => s === \"window\", \"Expected a value of window\")),\n title: optional(nonEmptyStringDecoder$1),\n version: optional(nonEmptyStringDecoder$1),\n customProperties: optional(anyJson()),\n icon: optional(string()),\n caption: optional(string()),\n details: optional(glue42ApplicationDetailsDecoder),\n intents: optional(array(intentDefinitionDecoder$1)),\n hidden: optional(boolean())\n});\nconst hostManifestsBrowserDecoder = oneOf(object({\n \"ioConnect\": optional(oneOf(glue42HostManifestsBrowserDecoder, anyJson())),\n \"Glue42\": optional(oneOf(glue42HostManifestsBrowserDecoder, anyJson()))\n}), anyJson());\nconst v1DefinitionDecoder = object({\n name: nonEmptyStringDecoder$1,\n appId: nonEmptyStringDecoder$1,\n title: optional(nonEmptyStringDecoder$1),\n version: optional(nonEmptyStringDecoder$1),\n manifest: nonEmptyStringDecoder$1,\n manifestType: nonEmptyStringDecoder$1,\n tooltip: optional(nonEmptyStringDecoder$1),\n description: optional(nonEmptyStringDecoder$1),\n contactEmail: optional(nonEmptyStringDecoder$1),\n supportEmail: optional(nonEmptyStringDecoder$1),\n publisher: optional(nonEmptyStringDecoder$1),\n images: optional(array(object({ url: optional(nonEmptyStringDecoder$1) }))),\n icons: optional(array(object({ icon: optional(nonEmptyStringDecoder$1) }))),\n customConfig: anyJson(),\n intents: optional(array(intentDefinitionDecoder$1))\n});\nconst v2LocalizedDefinitionDecoder = object({\n appId: optional(nonEmptyStringDecoder$1),\n name: optional(nonEmptyStringDecoder$1),\n details: optional(v2DetailsDecoder),\n version: optional(nonEmptyStringDecoder$1),\n title: optional(nonEmptyStringDecoder$1),\n tooltip: optional(nonEmptyStringDecoder$1),\n lang: optional(nonEmptyStringDecoder$1),\n description: optional(nonEmptyStringDecoder$1),\n categories: optional(array(nonEmptyStringDecoder$1)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder$1),\n supportEmail: optional(nonEmptyStringDecoder$1),\n moreInfo: optional(nonEmptyStringDecoder$1),\n publisher: optional(nonEmptyStringDecoder$1),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder)\n});\nconst v2DefinitionDecoder = object({\n appId: nonEmptyStringDecoder$1,\n name: nonEmptyStringDecoder$1,\n type: v2TypeDecoder,\n details: v2DetailsDecoder,\n version: optional(nonEmptyStringDecoder$1),\n title: optional(nonEmptyStringDecoder$1),\n tooltip: optional(nonEmptyStringDecoder$1),\n lang: optional(nonEmptyStringDecoder$1),\n description: optional(nonEmptyStringDecoder$1),\n categories: optional(array(nonEmptyStringDecoder$1)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder$1),\n supportEmail: optional(nonEmptyStringDecoder$1),\n moreInfo: optional(nonEmptyStringDecoder$1),\n publisher: optional(nonEmptyStringDecoder$1),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder),\n localizedVersions: optional(dict(v2LocalizedDefinitionDecoder))\n});\nconst allDefinitionsDecoder = oneOf(v1DefinitionDecoder, v2DefinitionDecoder);\n\nconst parseDecoderErrorToStringMessage = (error) => {\n return `${error.kind} at ${error.at}: ${JSON.stringify(error.input)}. Reason - ${error.message}`;\n};\n\nclass FDC3Service {\n fdc3ToDesktopDefinitionType = {\n web: \"window\",\n native: \"exe\",\n citrix: \"citrix\",\n onlineNative: \"clickonce\",\n other: \"window\"\n };\n toApi() {\n return {\n isFdc3Definition: this.isFdc3Definition.bind(this),\n parseToBrowserBaseAppData: this.parseToBrowserBaseAppData.bind(this),\n parseToDesktopAppConfig: this.parseToDesktopAppConfig.bind(this)\n };\n }\n isFdc3Definition(definition) {\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n return { isFdc3: false, reason: parseDecoderErrorToStringMessage(decodeRes.error) };\n }\n if (definition.appId && definition.details) {\n return { isFdc3: true, version: \"2.0\" };\n }\n if (definition.manifest) {\n return { isFdc3: true, version: \"1.2\" };\n }\n return { isFdc3: false, reason: \"The passed definition is not FDC3\" };\n }\n parseToBrowserBaseAppData(definition) {\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n const userProperties = this.getUserPropertiesFromDefinition(definition, version);\n const createOptions = { url: this.getUrl(definition, version) };\n const baseApplicationData = {\n name: definition.appId,\n type: \"window\",\n createOptions,\n userProperties: {\n ...userProperties,\n intents: version === \"1.2\"\n ? userProperties.intents\n : this.getIntentsFromV2AppDefinition(definition),\n details: createOptions\n },\n title: definition.title,\n version: definition.version,\n icon: this.getIconFromDefinition(definition, version),\n caption: definition.description,\n fdc3: version === \"2.0\" ? { ...definition, definitionVersion: \"2.0\" } : undefined,\n };\n const ioConnectDefinition = definition.hostManifests?.ioConnect || definition.hostManifests?.[\"Glue42\"];\n if (!ioConnectDefinition) {\n return baseApplicationData;\n }\n const ioDefinitionDecodeRes = glue42HostManifestsBrowserDecoder.run(ioConnectDefinition);\n if (!ioDefinitionDecodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(ioDefinitionDecodeRes.error)}`);\n }\n if (!Object.keys(ioDefinitionDecodeRes.result).length) {\n return baseApplicationData;\n }\n return this.mergeBaseAppDataWithGlueManifest(baseApplicationData, ioDefinitionDecodeRes.result);\n }\n parseToDesktopAppConfig(definition) {\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (version === \"1.2\") {\n const fdc3v1Definition = definition;\n return {\n name: fdc3v1Definition.appId,\n type: \"window\",\n details: {\n url: this.getUrl(definition, version)\n },\n version: fdc3v1Definition.version,\n title: fdc3v1Definition.title,\n tooltip: fdc3v1Definition.tooltip,\n caption: fdc3v1Definition.description,\n icon: fdc3v1Definition.icons?.[0].icon,\n intents: fdc3v1Definition.intents,\n customProperties: {\n manifestType: fdc3v1Definition.manifestType,\n images: fdc3v1Definition.images,\n contactEmail: fdc3v1Definition.contactEmail,\n supportEmail: fdc3v1Definition.supportEmail,\n publisher: fdc3v1Definition.publisher,\n icons: fdc3v1Definition.icons,\n customConfig: fdc3v1Definition.customConfig\n }\n };\n }\n const fdc3v2Definition = definition;\n const desktopDefinition = {\n name: fdc3v2Definition.appId,\n type: this.fdc3ToDesktopDefinitionType[fdc3v2Definition.type],\n details: fdc3v2Definition.details,\n version: fdc3v2Definition.version,\n title: fdc3v2Definition.title,\n tooltip: fdc3v2Definition.tooltip,\n caption: fdc3v2Definition.description,\n icon: this.getIconFromDefinition(fdc3v2Definition, \"2.0\"),\n intents: this.getIntentsFromV2AppDefinition(fdc3v2Definition),\n fdc3: { ...fdc3v2Definition, definitionVersion: \"2.0\" }\n };\n const ioConnectDefinition = definition.hostManifests?.ioConnect || definition.hostManifests?.[\"Glue42\"];\n if (!ioConnectDefinition) {\n return desktopDefinition;\n }\n if (typeof ioConnectDefinition !== \"object\" || Array.isArray(ioConnectDefinition)) {\n throw new Error(`Invalid '${definition.hostManifests.ioConnect ? \"hostManifests.ioConnect\" : \"hostManifests['Glue42']\"}' key`);\n }\n return this.mergeDesktopConfigWithGlueManifest(desktopDefinition, ioConnectDefinition);\n }\n getUserPropertiesFromDefinition(definition, version) {\n if (version === \"1.2\") {\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key)));\n }\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key) && !fdc3v2AppProps.includes(key)));\n }\n getUrl(definition, version) {\n let url;\n if (version === \"1.2\") {\n const parsedManifest = JSON.parse(definition.manifest);\n url = parsedManifest.details?.url || parsedManifest.url;\n }\n else {\n url = definition.details?.url;\n }\n if (!url || typeof url !== \"string\") {\n throw new Error(`Invalid FDC3 ${version} definition. Provide valid 'url' under '${version === \"1.2\" ? \"manifest\" : \"details\"}' key`);\n }\n return url;\n }\n getIntentsFromV2AppDefinition(definition) {\n const fdc3Intents = definition.interop?.intents?.listensFor;\n if (!fdc3Intents) {\n return;\n }\n const intents = Object.entries(fdc3Intents).map((fdc3Intent) => {\n const [intentName, intentData] = fdc3Intent;\n return {\n name: intentName,\n ...intentData\n };\n });\n return intents;\n }\n getIconFromDefinition(definition, version) {\n if (version === \"1.2\") {\n return definition.icons?.find((iconDef) => iconDef.icon)?.icon || undefined;\n }\n return definition.icons?.find((iconDef) => iconDef.src)?.src || undefined;\n }\n mergeBaseAppDataWithGlueManifest(baseAppData, hostManifestDefinition) {\n let baseApplicationDefinition = baseAppData;\n if (hostManifestDefinition.details) {\n const details = { ...baseAppData.createOptions, ...hostManifestDefinition.details };\n baseApplicationDefinition.createOptions = details;\n baseApplicationDefinition.userProperties.details = details;\n }\n if (Array.isArray(hostManifestDefinition.intents)) {\n baseApplicationDefinition.userProperties.intents = (baseApplicationDefinition.userProperties.intents || []).concat(hostManifestDefinition.intents);\n }\n baseApplicationDefinition = { ...baseApplicationDefinition, ...hostManifestDefinition };\n delete baseApplicationDefinition.details;\n delete baseApplicationDefinition.intents;\n return baseApplicationDefinition;\n }\n mergeDesktopConfigWithGlueManifest(config, desktopDefinition) {\n const appConfig = Object.assign({}, config, desktopDefinition, { details: { ...config.details, ...desktopDefinition.details } });\n if (Array.isArray(desktopDefinition.intents)) {\n appConfig.intents = (config.intents || []).concat(desktopDefinition.intents);\n }\n return appConfig;\n }\n}\n\nconst decoders$1 = {\n common: {\n nonEmptyStringDecoder: nonEmptyStringDecoder$1,\n nonNegativeNumberDecoder: nonNegativeNumberDecoder$1\n },\n fdc3: {\n allDefinitionsDecoder,\n v1DefinitionDecoder,\n v2DefinitionDecoder\n }\n};\n\nvar INTENTS_ERRORS;\n(function (INTENTS_ERRORS) {\n INTENTS_ERRORS[\"USER_CANCELLED\"] = \"User Closed Intents Resolver UI without choosing a handler\";\n INTENTS_ERRORS[\"CALLER_NOT_DEFINED\"] = \"Caller Id is not defined\";\n INTENTS_ERRORS[\"TIMEOUT_HIT\"] = \"Timeout hit\";\n INTENTS_ERRORS[\"INTENT_NOT_FOUND\"] = \"Cannot find Intent\";\n INTENTS_ERRORS[\"HANDLER_NOT_FOUND\"] = \"Cannot find Intent Handler\";\n INTENTS_ERRORS[\"TARGET_INSTANCE_UNAVAILABLE\"] = \"Cannot start Target Instance\";\n INTENTS_ERRORS[\"INTENT_DELIVERY_FAILED\"] = \"Target Instance did not add a listener\";\n INTENTS_ERRORS[\"RESOLVER_UNAVAILABLE\"] = \"Intents Resolver UI unavailable\";\n INTENTS_ERRORS[\"RESOLVER_TIMEOUT\"] = \"User did not choose a handler\";\n INTENTS_ERRORS[\"INVALID_RESOLVER_RESPONSE\"] = \"Intents Resolver UI returned invalid response\";\n INTENTS_ERRORS[\"INTENT_HANDLER_REJECTION\"] = \"Intent Handler function processing the raised intent threw an error or rejected the promise it returned\";\n})(INTENTS_ERRORS || (INTENTS_ERRORS = {}));\n\nlet IoC$1 = class IoC {\n _fdc3;\n _decoders = decoders$1;\n _errors = {\n intents: INTENTS_ERRORS\n };\n get fdc3() {\n if (!this._fdc3) {\n this._fdc3 = new FDC3Service().toApi();\n }\n return this._fdc3;\n }\n get decoders() {\n return this._decoders;\n }\n get errors() {\n return this._errors;\n }\n};\n\nconst ioc = new IoC$1();\nioc.fdc3;\nconst decoders = ioc.decoders;\nioc.errors;\n\nconst nonEmptyStringDecoder = string$1().where((s) => s.length > 0, \"Expected a non-empty string\");\nconst nonNegativeNumberDecoder = number$1().where((num) => num >= 0, \"Expected a non-negative number\");\nconst optionalNonEmptyStringDecoder = optional$1(nonEmptyStringDecoder);\nconst libDomainDecoder = oneOf$1(constant$1(\"system\"), constant$1(\"windows\"), constant$1(\"appManager\"), constant$1(\"layouts\"), constant$1(\"intents\"), constant$1(\"notifications\"), constant$1(\"channels\"), constant$1(\"extension\"), constant$1(\"themes\"), constant$1(\"prefs\"));\nconst windowOperationTypesDecoder = oneOf$1(constant$1(\"openWindow\"), constant$1(\"windowHello\"), constant$1(\"windowAdded\"), constant$1(\"windowRemoved\"), constant$1(\"getBounds\"), constant$1(\"getFrameBounds\"), constant$1(\"getUrl\"), constant$1(\"moveResize\"), constant$1(\"focus\"), constant$1(\"close\"), constant$1(\"getTitle\"), constant$1(\"setTitle\"), constant$1(\"focusChange\"), constant$1(\"getChannel\"));\nconst appManagerOperationTypesDecoder = oneOf$1(constant$1(\"appHello\"), constant$1(\"appDirectoryStateChange\"), constant$1(\"instanceStarted\"), constant$1(\"instanceStopped\"), constant$1(\"applicationStart\"), constant$1(\"instanceStop\"), constant$1(\"clear\"));\nconst layoutsOperationTypesDecoder = oneOf$1(constant$1(\"layoutAdded\"), constant$1(\"layoutChanged\"), constant$1(\"layoutRemoved\"), constant$1(\"layoutRenamed\"), constant$1(\"get\"), constant$1(\"getAll\"), constant$1(\"export\"), constant$1(\"import\"), constant$1(\"remove\"), constant$1(\"rename\"), constant$1(\"clientSaveRequest\"), constant$1(\"getGlobalPermissionState\"), constant$1(\"checkGlobalActivated\"), constant$1(\"requestGlobalPermission\"), constant$1(\"getDefaultGlobal\"), constant$1(\"setDefaultGlobal\"), constant$1(\"clearDefaultGlobal\"), constant$1(\"updateMetadata\"));\nconst notificationsOperationTypesDecoder = oneOf$1(constant$1(\"raiseNotification\"), constant$1(\"requestPermission\"), constant$1(\"notificationShow\"), constant$1(\"notificationClick\"), constant$1(\"getPermission\"), constant$1(\"list\"), constant$1(\"notificationRaised\"), constant$1(\"notificationClosed\"), constant$1(\"click\"), constant$1(\"clear\"), constant$1(\"clearAll\"), constant$1(\"configure\"), constant$1(\"getConfiguration\"), constant$1(\"configurationChanged\"), constant$1(\"setState\"), constant$1(\"clearOld\"), constant$1(\"activeCountChange\"), constant$1(\"stateChange\"));\nconst systemOperationTypesDecoder = oneOf$1(constant$1(\"getEnvironment\"), constant$1(\"getBase\"), constant$1(\"platformShutdown\"));\nconst windowRelativeDirectionDecoder = oneOf$1(constant$1(\"top\"), constant$1(\"left\"), constant$1(\"right\"), constant$1(\"bottom\"));\nconst windowBoundsDecoder = object$1({\n top: number$1(),\n left: number$1(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n});\nconst windowOpenSettingsDecoder = optional$1(object$1({\n top: optional$1(number$1()),\n left: optional$1(number$1()),\n width: optional$1(nonNegativeNumberDecoder),\n height: optional$1(nonNegativeNumberDecoder),\n context: optional$1(anyJson$1()),\n relativeTo: optional$1(nonEmptyStringDecoder),\n relativeDirection: optional$1(windowRelativeDirectionDecoder),\n windowId: optional$1(nonEmptyStringDecoder),\n layoutComponentId: optional$1(nonEmptyStringDecoder)\n}));\nconst openWindowConfigDecoder = object$1({\n name: nonEmptyStringDecoder,\n url: nonEmptyStringDecoder,\n options: windowOpenSettingsDecoder\n});\nconst windowHelloDecoder = object$1({\n windowId: optional$1(nonEmptyStringDecoder)\n});\nconst coreWindowDataDecoder = object$1({\n windowId: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder\n});\nconst simpleWindowDecoder = object$1({\n windowId: nonEmptyStringDecoder\n});\nconst helloSuccessDecoder = object$1({\n windows: array$1(coreWindowDataDecoder),\n isWorkspaceFrame: boolean$1()\n});\nconst windowTitleConfigDecoder = object$1({\n windowId: nonEmptyStringDecoder,\n title: string$1()\n});\nconst focusEventDataDecoder = object$1({\n windowId: nonEmptyStringDecoder,\n hasFocus: boolean$1()\n});\nconst windowMoveResizeConfigDecoder = object$1({\n windowId: nonEmptyStringDecoder,\n top: optional$1(number$1()),\n left: optional$1(number$1()),\n width: optional$1(nonNegativeNumberDecoder),\n height: optional$1(nonNegativeNumberDecoder),\n relative: optional$1(boolean$1())\n});\nconst windowBoundsResultDecoder = object$1({\n windowId: nonEmptyStringDecoder,\n bounds: object$1({\n top: number$1(),\n left: number$1(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n })\n});\nconst frameWindowBoundsResultDecoder = object$1({\n bounds: object$1({\n top: number$1(),\n left: number$1(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n })\n});\nconst windowUrlResultDecoder = object$1({\n windowId: nonEmptyStringDecoder,\n url: nonEmptyStringDecoder\n});\nconst anyDecoder = anyJson$1();\nconst boundsDecoder = object$1({\n top: optional$1(number$1()),\n left: optional$1(number$1()),\n width: optional$1(nonNegativeNumberDecoder),\n height: optional$1(nonNegativeNumberDecoder)\n});\nconst instanceDataDecoder = object$1({\n id: nonEmptyStringDecoder,\n applicationName: nonEmptyStringDecoder\n});\nconst applicationDetailsDecoder = object$1({\n url: nonEmptyStringDecoder,\n top: optional$1(number$1()),\n left: optional$1(number$1()),\n width: optional$1(nonNegativeNumberDecoder),\n height: optional$1(nonNegativeNumberDecoder)\n});\nconst intentDefinitionDecoder = object$1({\n name: nonEmptyStringDecoder,\n displayName: optional$1(string$1()),\n contexts: optional$1(array$1(string$1())),\n customConfig: optional$1(object$1())\n});\nobject$1({\n name: nonEmptyStringDecoder,\n title: optional$1(nonEmptyStringDecoder),\n version: optional$1(nonEmptyStringDecoder),\n appId: optional$1(nonEmptyStringDecoder),\n manifest: nonEmptyStringDecoder,\n manifestType: nonEmptyStringDecoder,\n tooltip: optional$1(nonEmptyStringDecoder),\n description: optional$1(nonEmptyStringDecoder),\n contactEmail: optional$1(nonEmptyStringDecoder),\n supportEmail: optional$1(nonEmptyStringDecoder),\n publisher: optional$1(nonEmptyStringDecoder),\n images: optional$1(array$1(object$1({ url: optional$1(nonEmptyStringDecoder) }))),\n icons: optional$1(array$1(object$1({ icon: optional$1(nonEmptyStringDecoder) }))),\n customConfig: anyJson$1(),\n intents: optional$1(array$1(intentDefinitionDecoder))\n});\nconst applicationDefinitionDecoder = object$1({\n name: nonEmptyStringDecoder,\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\n title: optional$1(nonEmptyStringDecoder),\n version: optional$1(nonEmptyStringDecoder),\n customProperties: optional$1(anyJson$1()),\n icon: optional$1(string$1()),\n caption: optional$1(string$1()),\n details: applicationDetailsDecoder,\n intents: optional$1(array$1(intentDefinitionDecoder)),\n hidden: optional$1(boolean$1()),\n fdc3: optional$1(decoders.fdc3.v2DefinitionDecoder)\n});\nconst allApplicationDefinitionsDecoder = oneOf$1(applicationDefinitionDecoder, decoders.fdc3.v2DefinitionDecoder, decoders.fdc3.v1DefinitionDecoder);\nobject$1({\n definitions: array$1(allApplicationDefinitionsDecoder),\n mode: oneOf$1(constant$1(\"replace\"), constant$1(\"merge\"))\n});\nconst appRemoveConfigDecoder = object$1({\n name: nonEmptyStringDecoder\n});\nconst appsExportOperationDecoder = object$1({\n definitions: array$1(applicationDefinitionDecoder)\n});\nconst applicationDataDecoder = object$1({\n name: nonEmptyStringDecoder,\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\n instances: array$1(instanceDataDecoder),\n userProperties: optional$1(anyJson$1()),\n title: optional$1(nonEmptyStringDecoder),\n version: optional$1(nonEmptyStringDecoder),\n icon: optional$1(nonEmptyStringDecoder),\n caption: optional$1(nonEmptyStringDecoder)\n});\nconst baseApplicationDataDecoder = object$1({\n name: nonEmptyStringDecoder,\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\n userProperties: anyJson$1(),\n title: optional$1(nonEmptyStringDecoder),\n version: optional$1(nonEmptyStringDecoder),\n icon: optional$1(nonEmptyStringDecoder),\n caption: optional$1(nonEmptyStringDecoder)\n});\nconst appDirectoryStateChangeDecoder = object$1({\n appsAdded: array$1(baseApplicationDataDecoder),\n appsChanged: array$1(baseApplicationDataDecoder),\n appsRemoved: array$1(baseApplicationDataDecoder)\n});\nconst appHelloSuccessDecoder = object$1({\n apps: array$1(applicationDataDecoder),\n initialChannelId: optional$1(nonEmptyStringDecoder)\n});\nconst basicInstanceDataDecoder = object$1({\n id: nonEmptyStringDecoder\n});\nconst applicationStartConfigDecoder = object$1({\n name: nonEmptyStringDecoder,\n waitForAGMReady: boolean$1(),\n id: optional$1(nonEmptyStringDecoder),\n context: optional$1(anyJson$1()),\n top: optional$1(number$1()),\n left: optional$1(number$1()),\n width: optional$1(nonNegativeNumberDecoder),\n height: optional$1(nonNegativeNumberDecoder),\n relativeTo: optional$1(nonEmptyStringDecoder),\n relativeDirection: optional$1(windowRelativeDirectionDecoder),\n forceChromeTab: optional$1(boolean$1()),\n layoutComponentId: optional$1(nonEmptyStringDecoder),\n channelId: optional$1(nonEmptyStringDecoder)\n});\nconst layoutTypeDecoder = oneOf$1(constant$1(\"Global\"), constant$1(\"Activity\"), constant$1(\"ApplicationDefault\"), constant$1(\"Swimlane\"), constant$1(\"Workspace\"));\nconst componentTypeDecoder = oneOf$1(constant$1(\"application\"), constant$1(\"activity\"));\nconst windowComponentStateDecoder = object$1({\n context: optional$1(anyJson$1()),\n bounds: windowBoundsDecoder,\n createArgs: object$1({\n name: optional$1(nonEmptyStringDecoder),\n url: optional$1(nonEmptyStringDecoder),\n context: optional$1(anyJson$1())\n }),\n windowState: optional$1(nonEmptyStringDecoder),\n restoreState: optional$1(nonEmptyStringDecoder),\n instanceId: nonEmptyStringDecoder,\n isCollapsed: optional$1(boolean$1()),\n isSticky: optional$1(boolean$1()),\n restoreSettings: object$1({\n groupId: optional$1(nonEmptyStringDecoder),\n groupZOrder: optional$1(number$1())\n })\n});\nconst windowLayoutComponentDecoder = object$1({\n type: constant$1(\"window\"),\n componentType: optional$1(componentTypeDecoder),\n application: nonEmptyStringDecoder,\n state: windowComponentStateDecoder\n});\nconst windowLayoutItemDecoder = object$1({\n type: constant$1(\"window\"),\n config: object$1({\n appName: nonEmptyStringDecoder,\n url: optional$1(nonEmptyStringDecoder),\n title: optional$1(string$1()),\n allowExtract: optional$1(boolean$1()),\n allowReorder: optional$1(boolean$1()),\n showCloseButton: optional$1(boolean$1()),\n isMaximized: optional$1(boolean$1())\n })\n});\nconst groupLayoutItemDecoder = object$1({\n type: constant$1(\"group\"),\n config: anyJson$1(),\n children: array$1(oneOf$1(windowLayoutItemDecoder))\n});\nconst columnLayoutItemDecoder = object$1({\n type: constant$1(\"column\"),\n config: anyJson$1(),\n children: array$1(oneOf$1(groupLayoutItemDecoder, windowLayoutItemDecoder, lazy(() => columnLayoutItemDecoder), lazy(() => rowLayoutItemDecoder)))\n});\nconst rowLayoutItemDecoder = object$1({\n type: constant$1(\"row\"),\n config: anyJson$1(),\n children: array$1(oneOf$1(columnLayoutItemDecoder, groupLayoutItemDecoder, windowLayoutItemDecoder, lazy(() => rowLayoutItemDecoder)))\n});\nconst workspaceLayoutComponentStateDecoder = object$1({\n config: anyJson$1(),\n context: anyJson$1(),\n children: array$1(oneOf$1(rowLayoutItemDecoder, columnLayoutItemDecoder, groupLayoutItemDecoder, windowLayoutItemDecoder))\n});\nconst workspaceLayoutComponentDecoder = object$1({\n type: constant$1(\"Workspace\"),\n application: optional$1(nonEmptyStringDecoder),\n state: workspaceLayoutComponentStateDecoder\n});\nconst workspaceFrameComponentStateDecoder = object$1({\n bounds: windowBoundsDecoder,\n instanceId: nonEmptyStringDecoder,\n selectedWorkspace: nonNegativeNumberDecoder,\n workspaces: array$1(workspaceLayoutComponentStateDecoder),\n windowState: optional$1(nonEmptyStringDecoder),\n restoreState: optional$1(nonEmptyStringDecoder),\n context: optional$1(anyJson$1())\n});\nconst workspaceFrameComponentDecoder = object$1({\n type: constant$1(\"workspaceFrame\"),\n application: nonEmptyStringDecoder,\n componentType: optional$1(componentTypeDecoder),\n state: workspaceFrameComponentStateDecoder\n});\nconst glueLayoutDecoder = object$1({\n name: nonEmptyStringDecoder,\n type: layoutTypeDecoder,\n components: array$1(oneOf$1(windowLayoutComponentDecoder, workspaceLayoutComponentDecoder, workspaceFrameComponentDecoder)),\n context: optional$1(anyJson$1()),\n metadata: optional$1(anyJson$1()),\n version: optional$1(number$1())\n});\nconst newLayoutOptionsDecoder = object$1({\n name: nonEmptyStringDecoder,\n context: optional$1(anyJson$1()),\n metadata: optional$1(anyJson$1()),\n instances: optional$1(array$1(nonEmptyStringDecoder)),\n ignoreInstances: optional$1(array$1(nonEmptyStringDecoder))\n});\nconst restoreOptionsDecoder = object$1({\n name: nonEmptyStringDecoder,\n context: optional$1(anyJson$1()),\n closeRunningInstance: optional$1(boolean$1()),\n closeMe: optional$1(boolean$1()),\n timeout: optional$1(nonNegativeNumberDecoder)\n});\nconst layoutSummaryDecoder = object$1({\n name: nonEmptyStringDecoder,\n type: layoutTypeDecoder,\n context: optional$1(anyJson$1()),\n metadata: optional$1(anyJson$1())\n});\nconst simpleLayoutConfigDecoder = object$1({\n name: nonEmptyStringDecoder,\n type: layoutTypeDecoder\n});\nconst saveLayoutConfigDecoder = object$1({\n layout: newLayoutOptionsDecoder\n});\nconst renameLayoutConfigDecoder = object$1({\n layout: glueLayoutDecoder,\n newName: nonEmptyStringDecoder\n});\nconst layoutResultDecoder = object$1({\n status: nonEmptyStringDecoder\n});\nconst updateLayoutMetadataConfigDecoder = object$1({\n layout: glueLayoutDecoder,\n});\nconst restoreLayoutConfigDecoder = object$1({\n layout: restoreOptionsDecoder\n});\nconst getAllLayoutsConfigDecoder = object$1({\n type: layoutTypeDecoder\n});\nconst allLayoutsFullConfigDecoder = object$1({\n layouts: array$1(glueLayoutDecoder)\n});\nconst importModeDecoder = oneOf$1(constant$1(\"replace\"), constant$1(\"merge\"));\nconst layoutsImportConfigDecoder = object$1({\n layouts: array$1(glueLayoutDecoder),\n mode: importModeDecoder,\n skipManagerRequest: optional$1(boolean$1())\n});\nconst allLayoutsSummariesResultDecoder = object$1({\n summaries: array$1(layoutSummaryDecoder)\n});\nconst simpleLayoutResultDecoder = object$1({\n layout: glueLayoutDecoder\n});\nconst optionalSimpleLayoutResult = object$1({\n layout: optional$1(glueLayoutDecoder)\n});\nconst setDefaultGlobalConfigDecoder = object$1({\n name: nonEmptyStringDecoder\n});\nconst intentsOperationTypesDecoder = oneOf$1(constant$1(\"findIntent\"), constant$1(\"getIntents\"), constant$1(\"raiseIntent\"), constant$1(\"raise\"), constant$1(\"filterHandlers\"));\nconst intentHandlerDecoder = object$1({\n applicationName: nonEmptyStringDecoder,\n applicationTitle: optional$1(string$1()),\n applicationDescription: optional$1(string$1()),\n applicationIcon: optional$1(string$1()),\n type: oneOf$1(constant$1(\"app\"), constant$1(\"instance\")),\n displayName: optional$1(string$1()),\n contextTypes: optional$1(array$1(nonEmptyStringDecoder)),\n instanceId: optional$1(string$1()),\n instanceTitle: optional$1(string$1()),\n resultType: optional$1(string$1())\n});\nobject$1({\n applicationName: string$1(),\n applicationIcon: optional$1(string$1()),\n instanceId: optional$1(string$1()),\n});\nconst intentResolverResponseDecoder = object$1({\n intent: nonEmptyStringDecoder,\n handler: intentHandlerDecoder\n});\nconst intentDecoder = object$1({\n name: nonEmptyStringDecoder,\n handlers: array$1(intentHandlerDecoder)\n});\nconst intentTargetDecoder = oneOf$1(constant$1(\"startNew\"), constant$1(\"reuse\"), object$1({\n app: optional$1(nonEmptyStringDecoder),\n instance: optional$1(nonEmptyStringDecoder)\n}));\nconst intentContextDecoder = object$1({\n type: optional$1(nonEmptyStringDecoder),\n data: optional$1(anyJson$1())\n});\nconst intentsDecoder = array$1(intentDecoder);\nconst wrappedIntentsDecoder = object$1({\n intents: intentsDecoder\n});\nconst intentFilterDecoder = object$1({\n name: optional$1(nonEmptyStringDecoder),\n contextType: optional$1(nonEmptyStringDecoder),\n resultType: optional$1(nonEmptyStringDecoder)\n});\nconst findFilterDecoder = oneOf$1(nonEmptyStringDecoder, intentFilterDecoder);\nconst wrappedIntentFilterDecoder = object$1({\n filter: optional$1(intentFilterDecoder)\n});\nconst intentRequestDecoder = object$1({\n intent: nonEmptyStringDecoder,\n target: optional$1(intentTargetDecoder),\n context: optional$1(intentContextDecoder),\n options: optional$1(windowOpenSettingsDecoder),\n handlers: optional$1(array$1(intentHandlerDecoder)),\n timeout: optional$1(nonNegativeNumberDecoder),\n waitUserResponseIndefinitely: optional$1(boolean$1())\n});\nconst raiseRequestDecoder = oneOf$1(nonEmptyStringDecoder, intentRequestDecoder);\nconst resolverConfigDecoder = object$1({\n enabled: boolean$1(),\n appName: nonEmptyStringDecoder,\n waitResponseTimeout: number$1()\n});\nconst raiseIntentRequestDecoder = object$1({\n intentRequest: intentRequestDecoder,\n resolverConfig: resolverConfigDecoder\n});\nconst intentResultDecoder = object$1({\n request: intentRequestDecoder,\n handler: intentHandlerDecoder,\n result: anyJson$1()\n});\nconst handlersFilterDecoder = object$1({\n title: optional$1(nonEmptyStringDecoder),\n openResolver: optional$1(boolean$1()),\n timeout: optional$1(nonNegativeNumberDecoder),\n intent: optional$1(nonEmptyStringDecoder),\n contextTypes: optional$1(array$1(nonEmptyStringDecoder)),\n resultType: optional$1(nonEmptyStringDecoder),\n applicationNames: optional$1(array$1(nonEmptyStringDecoder))\n});\nconst filterHandlersResultDecoder = object$1({\n handlers: array$1(intentHandlerDecoder)\n});\nconst filterHandlersWithResolverConfigDecoder = object$1({\n filterHandlersRequest: handlersFilterDecoder,\n resolverConfig: resolverConfigDecoder\n});\nconst AddIntentListenerRequestDecoder = object$1({\n intent: nonEmptyStringDecoder,\n contextTypes: optional$1(array$1(nonEmptyStringDecoder)),\n displayName: optional$1(string$1()),\n icon: optional$1(string$1()),\n description: optional$1(string$1()),\n resultType: optional$1(string$1())\n});\nconst AddIntentListenerDecoder = oneOf$1(nonEmptyStringDecoder, AddIntentListenerRequestDecoder);\nconst intentInfoDecoder = object$1({\n intent: nonEmptyStringDecoder,\n contextTypes: optional$1(array$1(nonEmptyStringDecoder)),\n description: optional$1(nonEmptyStringDecoder),\n displayName: optional$1(nonEmptyStringDecoder),\n icon: optional$1(nonEmptyStringDecoder),\n resultType: optional$1(nonEmptyStringDecoder)\n});\nconst getIntentsResultDecoder = object$1({\n intents: array$1(intentInfoDecoder)\n});\nconst channelNameDecoder = (channelNames) => {\n return nonEmptyStringDecoder.where(s => channelNames.includes(s), \"Expected a valid channel name\");\n};\nconst interopActionSettingsDecoder = object$1({\n method: nonEmptyStringDecoder,\n arguments: optional$1(anyJson$1()),\n target: optional$1(oneOf$1(constant$1(\"all\"), constant$1(\"best\")))\n});\nconst glue42NotificationActionDecoder = object$1({\n action: string$1(),\n title: nonEmptyStringDecoder,\n icon: optional$1(string$1()),\n interop: optional$1(interopActionSettingsDecoder)\n});\nconst notificationStateDecoder = oneOf$1(constant$1(\"Active\"), constant$1(\"Acknowledged\"), constant$1(\"Seen\"), constant$1(\"Closed\"), constant$1(\"Stale\"), constant$1(\"Snoozed\"), constant$1(\"Processing\"));\nconst activeNotificationsCountChangeDecoder = object$1({\n count: number$1()\n});\nconst notificationDefinitionDecoder = object$1({\n badge: optional$1(string$1()),\n body: optional$1(string$1()),\n data: optional$1(anyJson$1()),\n dir: optional$1(oneOf$1(constant$1(\"auto\"), constant$1(\"ltr\"), constant$1(\"rtl\"))),\n icon: optional$1(string$1()),\n image: optional$1(string$1()),\n lang: optional$1(string$1()),\n renotify: optional$1(boolean$1()),\n requireInteraction: optional$1(boolean$1()),\n silent: optional$1(boolean$1()),\n tag: optional$1(string$1()),\n timestamp: optional$1(nonNegativeNumberDecoder),\n vibrate: optional$1(array$1(number$1()))\n});\nconst glue42NotificationOptionsDecoder = object$1({\n title: nonEmptyStringDecoder,\n clickInterop: optional$1(interopActionSettingsDecoder),\n actions: optional$1(array$1(glue42NotificationActionDecoder)),\n focusPlatformOnDefaultClick: optional$1(boolean$1()),\n badge: optional$1(string$1()),\n body: optional$1(string$1()),\n data: optional$1(anyJson$1()),\n dir: optional$1(oneOf$1(constant$1(\"auto\"), constant$1(\"ltr\"), constant$1(\"rtl\"))),\n icon: optional$1(string$1()),\n image: optional$1(string$1()),\n lang: optional$1(string$1()),\n renotify: optional$1(boolean$1()),\n requireInteraction: optional$1(boolean$1()),\n silent: optional$1(boolean$1()),\n tag: optional$1(string$1()),\n timestamp: optional$1(nonNegativeNumberDecoder),\n vibrate: optional$1(array$1(number$1())),\n severity: optional$1(oneOf$1(constant$1(\"Low\"), constant$1(\"None\"), constant$1(\"Medium\"), constant$1(\"High\"), constant$1(\"Critical\"))),\n showToast: optional$1(boolean$1()),\n showInPanel: optional$1(boolean$1()),\n state: optional$1(notificationStateDecoder)\n});\nconst notificationSetStateRequestDecoder = object$1({\n id: nonEmptyStringDecoder,\n state: notificationStateDecoder\n});\nconst channelContextDecoder = object$1({\n name: nonEmptyStringDecoder,\n meta: object$1({\n color: nonEmptyStringDecoder\n }),\n data: optional$1(object$1()),\n});\nconst removeChannelDataDecoder = object$1({\n name: nonEmptyStringDecoder\n});\nconst channelRestrictionsDecoder = object$1({\n name: nonEmptyStringDecoder,\n read: boolean$1(),\n write: boolean$1(),\n windowId: optional$1(nonEmptyStringDecoder)\n});\nconst channelRestrictionConfigWithWindowIdDecoder = object$1({\n name: nonEmptyStringDecoder,\n read: boolean$1(),\n write: boolean$1(),\n windowId: nonEmptyStringDecoder\n});\nconst restrictionConfigDataDecoder = object$1({\n config: channelRestrictionConfigWithWindowIdDecoder\n});\nconst restrictionsDecoder = object$1({\n channels: array$1(channelRestrictionsDecoder)\n});\nconst getRestrictionsDataDecoder = object$1({\n windowId: nonEmptyStringDecoder\n});\nconst restrictionsConfigDecoder = object$1({\n read: boolean$1(),\n write: boolean$1(),\n windowId: optional$1(nonEmptyStringDecoder)\n});\nconst restrictAllDataDecoder = object$1({\n restrictions: restrictionsConfigDecoder\n});\nconst raiseNotificationDecoder = object$1({\n settings: glue42NotificationOptionsDecoder,\n id: nonEmptyStringDecoder\n});\nconst raiseNotificationResultDecoder = object$1({\n settings: glue42NotificationOptionsDecoder\n});\nconst permissionRequestResultDecoder = object$1({\n permissionGranted: boolean$1()\n});\nconst permissionQueryResultDecoder = object$1({\n permission: oneOf$1(constant$1(\"default\"), constant$1(\"granted\"), constant$1(\"denied\"))\n});\nconst notificationEventPayloadDecoder = object$1({\n definition: notificationDefinitionDecoder,\n action: optional$1(string$1()),\n id: optional$1(nonEmptyStringDecoder)\n});\nconst notificationFilterDecoder = object$1({\n allowed: optional$1(array$1(nonEmptyStringDecoder)),\n blocked: optional$1(array$1(nonEmptyStringDecoder))\n});\nconst notificationsConfigurationDecoder = object$1({\n enable: optional$1(boolean$1()),\n enableToasts: optional$1(boolean$1()),\n sourceFilter: optional$1(notificationFilterDecoder),\n});\nconst notificationsConfigurationProtocolDecoder = object$1({\n configuration: notificationsConfigurationDecoder\n});\nconst strictNotificationsConfigurationProtocolDecoder = object$1({\n configuration: object$1({\n enable: boolean$1(),\n enableToasts: boolean$1(),\n sourceFilter: object$1({\n allowed: array$1(nonEmptyStringDecoder),\n blocked: array$1(nonEmptyStringDecoder)\n })\n })\n});\nconst platformSaveRequestConfigDecoder = object$1({\n layoutType: oneOf$1(constant$1(\"Global\"), constant$1(\"Workspace\")),\n layoutName: nonEmptyStringDecoder,\n context: optional$1(anyJson$1())\n});\nconst saveRequestClientResponseDecoder = object$1({\n windowContext: optional$1(anyJson$1()),\n});\nconst permissionStateResultDecoder = object$1({\n state: oneOf$1(constant$1(\"prompt\"), constant$1(\"denied\"), constant$1(\"granted\"))\n});\nconst simpleAvailabilityResultDecoder = object$1({\n isAvailable: boolean$1()\n});\nconst simpleItemIdDecoder = object$1({\n itemId: nonEmptyStringDecoder\n});\nconst operationCheckResultDecoder = object$1({\n isSupported: boolean$1()\n});\nconst operationCheckConfigDecoder = object$1({\n operation: nonEmptyStringDecoder\n});\nconst workspaceFrameBoundsResultDecoder = object$1({\n bounds: windowBoundsDecoder\n});\nconst themeDecoder = object$1({\n displayName: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder\n});\nconst simpleThemeResponseDecoder = object$1({\n theme: themeDecoder\n});\nconst allThemesResponseDecoder = object$1({\n themes: array$1(themeDecoder)\n});\nconst selectThemeConfigDecoder = object$1({\n name: nonEmptyStringDecoder\n});\nconst notificationsDataDecoder = object$1({\n id: nonEmptyStringDecoder,\n title: nonEmptyStringDecoder,\n clickInterop: optional$1(interopActionSettingsDecoder),\n actions: optional$1(array$1(glue42NotificationActionDecoder)),\n focusPlatformOnDefaultClick: optional$1(boolean$1()),\n badge: optional$1(string$1()),\n body: optional$1(string$1()),\n data: optional$1(anyJson$1()),\n dir: optional$1(oneOf$1(constant$1(\"auto\"), constant$1(\"ltr\"), constant$1(\"rtl\"))),\n icon: optional$1(string$1()),\n image: optional$1(string$1()),\n lang: optional$1(string$1()),\n renotify: optional$1(boolean$1()),\n requireInteraction: optional$1(boolean$1()),\n silent: optional$1(boolean$1()),\n tag: optional$1(string$1()),\n timestamp: optional$1(nonNegativeNumberDecoder),\n vibrate: optional$1(array$1(number$1())),\n severity: optional$1(oneOf$1(constant$1(\"Low\"), constant$1(\"None\"), constant$1(\"Medium\"), constant$1(\"High\"), constant$1(\"Critical\"))),\n showToast: optional$1(boolean$1()),\n showInPanel: optional$1(boolean$1()),\n state: optional$1(notificationStateDecoder)\n});\nconst simpleNotificationDataDecoder = object$1({\n notification: notificationsDataDecoder\n});\nconst allNotificationsDataDecoder = object$1({\n notifications: array$1(notificationsDataDecoder)\n});\nconst simpleNotificationSelectDecoder = object$1({\n id: nonEmptyStringDecoder\n});\nconst getWindowIdsOnChannelDataDecoder = object$1({\n channel: nonEmptyStringDecoder\n});\nconst getWindowIdsOnChannelResultDecoder = object$1({\n windowIds: array$1(nonEmptyStringDecoder)\n});\nconst channelsOperationTypesDecoder = oneOf$1(constant$1(\"addChannel\"), constant$1(\"getMyChannel\"), constant$1(\"getWindowIdsOnChannel\"), constant$1(\"getWindowIdsWithChannels\"), constant$1(\"joinChannel\"), constant$1(\"restrict\"), constant$1(\"getRestrictions\"), constant$1(\"restrictAll\"));\nconst getMyChanelResultDecoder = object$1({\n channel: optional$1(nonEmptyStringDecoder)\n});\nconst windowWithChannelFilterDecoder = object$1({\n application: optional$1(nonEmptyStringDecoder),\n channels: optional$1(array$1(nonEmptyStringDecoder)),\n windowIds: optional$1(array$1(nonEmptyStringDecoder))\n});\nconst wrappedWindowWithChannelFilterDecoder = object$1({\n filter: optional$1(windowWithChannelFilterDecoder)\n});\nconst getWindowIdsWithChannelsResultDecoder = object$1({\n windowIdsWithChannels: array$1(object$1({\n application: nonEmptyStringDecoder,\n channel: optional$1(nonEmptyStringDecoder),\n windowId: nonEmptyStringDecoder\n }))\n});\nconst startApplicationContextDecoder = optional$1(anyJson$1());\nconst startApplicationOptionsDecoder = optional$1(object$1({\n top: optional$1(number$1()),\n left: optional$1(number$1()),\n width: optional$1(nonNegativeNumberDecoder),\n height: optional$1(nonNegativeNumberDecoder),\n relativeTo: optional$1(nonEmptyStringDecoder),\n relativeDirection: optional$1(windowRelativeDirectionDecoder),\n waitForAGMReady: optional$1(boolean$1()),\n channelId: optional$1(nonEmptyStringDecoder),\n reuseId: optional$1(nonEmptyStringDecoder),\n}));\nconst joinChannelDataDecoder = object$1({\n channel: nonEmptyStringDecoder,\n windowId: nonEmptyStringDecoder\n});\nconst windowChannelResultDecoder = object$1({\n channel: optional$1(nonEmptyStringDecoder),\n});\nconst prefsOperationTypesDecoder = oneOf$1(constant$1(\"clear\"), constant$1(\"clearAll\"), constant$1(\"get\"), constant$1(\"getAll\"), constant$1(\"set\"), constant$1(\"update\"), constant$1(\"prefsChanged\"), constant$1(\"prefsHello\"));\nconst appPreferencesDecoder = object$1({\n app: nonEmptyStringDecoder,\n data: object$1(),\n lastUpdate: optional$1(nonEmptyStringDecoder),\n});\nconst basePrefsConfigDecoder = object$1({\n app: nonEmptyStringDecoder,\n});\nconst getPrefsResultDecoder = object$1({\n prefs: appPreferencesDecoder,\n});\nconst getAllPrefsResultDecoder = object$1({\n all: array$1(appPreferencesDecoder),\n});\nconst changePrefsDataDecoder = object$1({\n app: nonEmptyStringDecoder,\n data: object$1(),\n});\nconst prefsHelloSuccessDecoder = object$1({\n platform: object$1({\n app: nonEmptyStringDecoder,\n }),\n});\n\nconst operations$9 = {\n openWindow: { name: \"openWindow\", dataDecoder: openWindowConfigDecoder, resultDecoder: coreWindowDataDecoder },\n windowHello: { name: \"windowHello\", dataDecoder: windowHelloDecoder, resultDecoder: helloSuccessDecoder },\n windowAdded: { name: \"windowAdded\", dataDecoder: coreWindowDataDecoder },\n windowRemoved: { name: \"windowRemoved\", dataDecoder: simpleWindowDecoder },\n getBounds: { name: \"getBounds\", dataDecoder: simpleWindowDecoder, resultDecoder: windowBoundsResultDecoder },\n getFrameBounds: { name: \"getFrameBounds\", dataDecoder: simpleWindowDecoder, resultDecoder: frameWindowBoundsResultDecoder },\n getUrl: { name: \"getUrl\", dataDecoder: simpleWindowDecoder, resultDecoder: windowUrlResultDecoder },\n moveResize: { name: \"moveResize\", dataDecoder: windowMoveResizeConfigDecoder },\n focus: { name: \"focus\", dataDecoder: simpleWindowDecoder },\n close: { name: \"close\", dataDecoder: simpleWindowDecoder },\n getTitle: { name: \"getTitle\", dataDecoder: simpleWindowDecoder, resultDecoder: windowTitleConfigDecoder },\n setTitle: { name: \"setTitle\", dataDecoder: windowTitleConfigDecoder },\n focusChange: { name: \"focusChange\", dataDecoder: focusEventDataDecoder },\n getChannel: { name: \"getChannel\", dataDecoder: simpleWindowDecoder, resultDecoder: windowChannelResultDecoder },\n};\n\nfunction getDefaultExportFromCjs$1 (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createRegistry$1(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\ncreateRegistry$1.default = createRegistry$1;\nvar lib$1 = createRegistry$1;\n\n\nvar CallbackRegistryFactory$1 = /*@__PURE__*/getDefaultExportFromCjs$1(lib$1);\n\nclass WebWindowModel {\n _id;\n _name;\n _bridge;\n registry = CallbackRegistryFactory$1();\n myCtxKey;\n ctxUnsubscribe;\n me;\n constructor(_id, _name, _bridge) {\n this._id = _id;\n this._name = _name;\n this._bridge = _bridge;\n this.myCtxKey = `___window___${this.id}`;\n }\n get id() {\n return this._id.slice();\n }\n get name() {\n return this._name.slice();\n }\n clean() {\n if (this.ctxUnsubscribe) {\n this.ctxUnsubscribe();\n }\n }\n processSelfFocusEvent(hasFocus) {\n this.me.isFocused = hasFocus;\n this.registry.execute(\"focus-change\", this.me);\n }\n async toApi() {\n this.ctxUnsubscribe = await this._bridge.contextLib.subscribe(this.myCtxKey, (data) => this.registry.execute(\"context-updated\", data));\n this.me = {\n id: this.id,\n name: this.name,\n isFocused: false,\n getURL: this.getURL.bind(this),\n moveResize: this.moveResize.bind(this),\n resizeTo: this.resizeTo.bind(this),\n moveTo: this.moveTo.bind(this),\n focus: this.focus.bind(this),\n close: this.close.bind(this),\n getTitle: this.getTitle.bind(this),\n setTitle: this.setTitle.bind(this),\n getBounds: this.getBounds.bind(this),\n getContext: this.getContext.bind(this),\n updateContext: this.updateContext.bind(this),\n setContext: this.setContext.bind(this),\n onContextUpdated: this.onContextUpdated.bind(this),\n onFocusChanged: this.onFocusChanged.bind(this),\n getChannel: this.getChannel.bind(this),\n };\n return this.me;\n }\n async getURL() {\n const result = await this._bridge.send(\"windows\", operations$9.getUrl, { windowId: this.id });\n return result.url;\n }\n onFocusChanged(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to context changes, because the provided callback is not a function!\");\n }\n return this.registry.add(\"focus-change\", callback);\n }\n async moveResize(dimension) {\n const targetBounds = boundsDecoder.runWithException(dimension);\n const commandArgs = Object.assign({}, targetBounds, { windowId: this.id, relative: false });\n await this._bridge.send(\"windows\", operations$9.moveResize, commandArgs);\n return this.me;\n }\n async resizeTo(width, height) {\n if (typeof width === \"undefined\" && typeof height === \"undefined\") {\n return this.me;\n }\n if (typeof width !== \"undefined\") {\n nonNegativeNumberDecoder.runWithException(width);\n }\n if (typeof height !== \"undefined\") {\n nonNegativeNumberDecoder.runWithException(height);\n }\n const commandArgs = Object.assign({}, { width, height }, { windowId: this.id, relative: true });\n await this._bridge.send(\"windows\", operations$9.moveResize, commandArgs);\n return this.me;\n }\n async moveTo(top, left) {\n if (typeof top === \"undefined\" && typeof left === \"undefined\") {\n return this.me;\n }\n if (typeof top !== \"undefined\") {\n number$1().runWithException(top);\n }\n if (typeof left !== \"undefined\") {\n number$1().runWithException(left);\n }\n const commandArgs = Object.assign({}, { top, left }, { windowId: this.id, relative: true });\n await this._bridge.send(\"windows\", operations$9.moveResize, commandArgs);\n return this.me;\n }\n async focus() {\n if (this.name === \"Platform\") {\n window.open(undefined, this.id);\n }\n else {\n await this._bridge.send(\"windows\", operations$9.focus, { windowId: this.id });\n }\n return this.me;\n }\n async close() {\n await this._bridge.send(\"windows\", operations$9.close, { windowId: this.id });\n return this.me;\n }\n async getTitle() {\n const result = await this._bridge.send(\"windows\", operations$9.getTitle, { windowId: this.id });\n return result.title;\n }\n async setTitle(title) {\n const ttl = nonEmptyStringDecoder.runWithException(title);\n await this._bridge.send(\"windows\", operations$9.setTitle, { windowId: this.id, title: ttl });\n return this.me;\n }\n async getBounds() {\n const result = await this._bridge.send(\"windows\", operations$9.getBounds, { windowId: this.id });\n return result.bounds;\n }\n async getContext() {\n const ctx = await this._bridge.contextLib.get(this.myCtxKey);\n const { ___io___, ...rest } = ctx;\n return rest;\n }\n async updateContext(context) {\n const ctx = anyDecoder.runWithException(context);\n await this._bridge.contextLib.update(this.myCtxKey, ctx);\n return this.me;\n }\n async setContext(context) {\n const ctx = anyDecoder.runWithException(context);\n const current = await this._bridge.contextLib.get(this.myCtxKey);\n const newCtx = current.___io___ ? { ...ctx, ___io___: current.___io___ } : ctx;\n await this._bridge.contextLib.set(this.myCtxKey, newCtx);\n return this.me;\n }\n onContextUpdated(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to context changes, because the provided callback is not a function!\");\n }\n const wrappedCallback = (data) => {\n const { ___io___, ...rest } = data;\n callback(rest, this.me);\n };\n return this.registry.add(\"context-updated\", wrappedCallback);\n }\n async getChannel() {\n const result = await this._bridge.send(\"windows\", operations$9.getChannel, { windowId: this.id }, undefined, { includeOperationCheck: true });\n return result.channel;\n }\n}\n\nconst systemOperations = {\n operationCheck: { name: \"operationCheck\", dataDecoder: operationCheckConfigDecoder, resultDecoder: operationCheckResultDecoder },\n getWorkspaceWindowFrameBounds: { name: \"getWorkspaceWindowFrameBounds\", resultDecoder: workspaceFrameBoundsResultDecoder, dataDecoder: simpleItemIdDecoder }\n};\n\nconst PromiseWrap = (promise, timeoutMilliseconds, timeoutMessage) => {\n return new Promise((resolve, reject) => {\n let promiseActive = true;\n const timeout = setTimeout(() => {\n if (!promiseActive) {\n return;\n }\n promiseActive = false;\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\n reject(message);\n }, timeoutMilliseconds);\n promise()\n .then((result) => {\n if (!promiseActive) {\n return;\n }\n promiseActive = false;\n clearTimeout(timeout);\n resolve(result);\n })\n .catch((error) => {\n if (!promiseActive) {\n return;\n }\n promiseActive = false;\n clearTimeout(timeout);\n reject(error);\n });\n });\n};\nconst PromisePlus$1 = (executor, timeoutMilliseconds, timeoutMessage) => {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\n reject(message);\n }, timeoutMilliseconds);\n const providedPromise = new Promise(executor);\n providedPromise\n .then((result) => {\n clearTimeout(timeout);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timeout);\n reject(error);\n });\n });\n};\n\nclass WindowsController {\n focusEventHandler;\n registry = CallbackRegistryFactory$1();\n platformRegistration;\n ioc;\n bridge;\n publicWindowId;\n allWindowProjections = [];\n me;\n logger;\n isWorkspaceFrame;\n instanceId;\n channelsController;\n async start(coreGlue, ioc) {\n this.logger = coreGlue.logger.subLogger(\"windows.controller.web\");\n this.logger.trace(\"starting the web windows controller\");\n this.publicWindowId = ioc.publicWindowId;\n this.addWindowOperationExecutors();\n this.ioc = ioc;\n this.bridge = ioc.bridge;\n this.instanceId = coreGlue.interop.instance.instance;\n this.channelsController = ioc.channelsController;\n this.logger.trace(`set the public window id: ${this.publicWindowId}, set the bridge operations and ioc, registering with the platform now`);\n this.platformRegistration = this.registerWithPlatform();\n await this.platformRegistration;\n await this.initializeFocusTracking();\n this.logger.trace(\"registration with the platform successful, attaching the windows property to glue and returning\");\n const api = this.toApi();\n coreGlue.windows = api;\n }\n handlePlatformShutdown() {\n this.registry.clear();\n this.allWindowProjections = [];\n if (!this.focusEventHandler) {\n return;\n }\n document.removeEventListener(\"visibilityChange\", this.focusEventHandler);\n window.removeEventListener(\"focus\", this.focusEventHandler);\n window.removeEventListener(\"blur\", this.focusEventHandler);\n }\n async handleBridgeMessage(args) {\n await this.platformRegistration;\n const operationName = windowOperationTypesDecoder.runWithException(args.operation);\n const operation = operations$9[operationName];\n if (!operation.execute) {\n return;\n }\n let operationData = args.data;\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n return await operation.execute(operationData);\n }\n async open(name, url, options) {\n nonEmptyStringDecoder.runWithException(name);\n nonEmptyStringDecoder.runWithException(url);\n const settings = windowOpenSettingsDecoder.runWithException(options);\n const windowSuccess = await this.bridge.send(\"windows\", operations$9.openWindow, { name, url, options: settings });\n return this.waitForWindowAdded(windowSuccess.windowId);\n }\n list() {\n return this.allWindowProjections.map((projection) => projection.api);\n }\n findById(id) {\n nonEmptyStringDecoder.runWithException(id);\n return this.allWindowProjections.find((projection) => projection.id === id)?.api;\n }\n toApi() {\n return {\n open: this.open.bind(this),\n my: this.my.bind(this),\n list: this.list.bind(this),\n findById: this.findById.bind(this),\n onWindowAdded: this.onWindowAdded.bind(this),\n onWindowRemoved: this.onWindowRemoved.bind(this),\n onWindowGotFocus: this.onWindowGotFocus.bind(this),\n onWindowLostFocus: this.onWindowLostFocus.bind(this)\n };\n }\n addWindowOperationExecutors() {\n operations$9.focusChange.execute = this.handleFocusChangeEvent.bind(this);\n operations$9.windowAdded.execute = this.handleWindowAdded.bind(this);\n operations$9.windowRemoved.execute = this.handleWindowRemoved.bind(this);\n operations$9.getBounds.execute = this.handleGetBounds.bind(this);\n operations$9.getFrameBounds.execute = this.handleGetBounds.bind(this);\n operations$9.getTitle.execute = this.handleGetTitle.bind(this);\n operations$9.getUrl.execute = this.handleGetUrl.bind(this);\n operations$9.moveResize.execute = this.handleMoveResize.bind(this);\n operations$9.setTitle.execute = this.handleSetTitle.bind(this);\n operations$9.getChannel.execute = this.handleGetChannel.bind(this);\n }\n my() {\n return Object.assign({}, this.me);\n }\n onWindowAdded(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to window added, because the provided callback is not a function!\");\n }\n return this.registry.add(\"window-added\", callback);\n }\n onWindowRemoved(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to window removed, because the provided callback is not a function!\");\n }\n return this.registry.add(\"window-removed\", callback);\n }\n onWindowGotFocus(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onWindowGotFocus, because the provided callback is not a function!\");\n }\n return this.registry.add(\"window-got-focus\", callback);\n }\n onWindowLostFocus(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onWindowLostFocus, because the provided callback is not a function!\");\n }\n return this.registry.add(\"window-lost-focus\", callback);\n }\n async sayHello() {\n const helloSuccess = await this.bridge.send(\"windows\", operations$9.windowHello, { windowId: this.publicWindowId });\n return helloSuccess;\n }\n async registerWithPlatform() {\n const { windows, isWorkspaceFrame } = await this.sayHello();\n this.isWorkspaceFrame = isWorkspaceFrame;\n this.logger.trace(\"the platform responded to the hello message\");\n if (!this.isWorkspaceFrame && this.publicWindowId) {\n this.logger.trace(\"i am not treated as a workspace frame, setting my window\");\n const myWindow = windows.find((w) => w.windowId === this.publicWindowId);\n if (!myWindow) {\n throw new Error(\"Cannot initialize the window library, because I received no information about me from the platform\");\n }\n const myProjection = await this.ioc.buildWebWindow(this.publicWindowId, myWindow.name);\n this.me = myProjection.api;\n this.allWindowProjections.push(myProjection);\n }\n const currentWindows = await Promise.all(windows\n .filter((w) => w.windowId !== this.publicWindowId)\n .map((w) => this.ioc.buildWebWindow(w.windowId, w.name)));\n this.logger.trace(\"all windows projections are completed, building the list collection\");\n this.allWindowProjections.push(...currentWindows);\n }\n async handleFocusChangeEvent(focusData) {\n const foundProjection = this.allWindowProjections.find((projection) => projection.id === focusData.windowId);\n if (!foundProjection) {\n return;\n }\n foundProjection.model.processSelfFocusEvent(focusData.hasFocus);\n const keyToExecute = focusData.hasFocus ? \"window-got-focus\" : \"window-lost-focus\";\n this.registry.execute(keyToExecute, foundProjection.api);\n }\n async handleWindowAdded(data) {\n if (this.allWindowProjections.some((projection) => projection.id === data.windowId)) {\n return;\n }\n const webWindowProjection = await this.ioc.buildWebWindow(data.windowId, data.name);\n this.allWindowProjections.push(webWindowProjection);\n this.registry.execute(\"window-added\", webWindowProjection.api);\n }\n async handleWindowRemoved(data) {\n const removed = this.allWindowProjections.find((w) => w.id === data.windowId);\n if (!removed) {\n return;\n }\n this.allWindowProjections = this.allWindowProjections.filter((w) => w.id !== data.windowId);\n removed.model.clean();\n this.registry.execute(\"window-removed\", removed.api);\n }\n async handleGetBounds() {\n if (!this.me && !this.isWorkspaceFrame) {\n throw new Error(\"This window cannot report it's bounds, because it is not a Glue Window, most likely because it is an iframe\");\n }\n return {\n windowId: this.isWorkspaceFrame ? \"noop\" : this.me.id,\n bounds: {\n top: window.screenTop,\n left: window.screenLeft,\n width: window.innerWidth,\n height: window.innerHeight\n }\n };\n }\n async handleGetTitle() {\n if (!this.me) {\n throw new Error(\"This window cannot report it's title, because it is not a Glue Window, most likely because it is an iframe\");\n }\n return {\n windowId: this.me.id,\n title: document.title\n };\n }\n async handleGetUrl() {\n if (!this.me) {\n throw new Error(\"This window cannot report it's url, because it is not a Glue Window, most likely because it is an iframe\");\n }\n return {\n windowId: this.me.id,\n url: window.location.href\n };\n }\n async handleMoveResize(config) {\n const targetTop = typeof config.top === \"number\" ? config.top :\n config.relative ? 0 : window.screenTop;\n const targetLeft = typeof config.left === \"number\" ? config.left :\n config.relative ? 0 : window.screenLeft;\n const targetHeight = typeof config.height === \"number\" ? config.height :\n config.relative ? 0 : window.innerHeight;\n const targetWidth = typeof config.width === \"number\" ? config.width :\n config.relative ? 0 : window.innerWidth;\n const moveMethod = config.relative ? window.moveBy : window.moveTo;\n const resizeMethod = config.relative ? window.resizeBy : window.resizeTo;\n moveMethod(targetLeft, targetTop);\n resizeMethod(targetWidth, targetHeight);\n }\n async handleSetTitle(config) {\n document.title = config.title;\n }\n async initializeFocusTracking() {\n if (this.isWorkspaceFrame) {\n this.logger.trace(\"Ignoring the focus tracking, because this client is a workspace frame\");\n return;\n }\n try {\n await this.bridge.send(\"windows\", systemOperations.operationCheck, { operation: \"focusChange\" });\n }\n catch (error) {\n this.logger.warn(\"The platform of this client is outdated and does not support focus tracking, disabling focus events for this client.\");\n return;\n }\n const hasFocus = document.hasFocus();\n await this.transmitFocusChange(true);\n if (!hasFocus) {\n await this.transmitFocusChange(false);\n }\n this.defineEventListeners();\n }\n processFocusEvent() {\n const hasFocus = document.hasFocus();\n this.transmitFocusChange(hasFocus);\n }\n waitForWindowAdded(windowId) {\n const foundWindow = this.allWindowProjections.find((projection) => projection.id === windowId);\n if (foundWindow) {\n return Promise.resolve(foundWindow.api);\n }\n return PromisePlus$1((resolve) => {\n const unsubscribe = this.onWindowAdded((addedWindow) => {\n if (addedWindow.id === windowId) {\n unsubscribe();\n resolve(addedWindow);\n }\n });\n }, 30000, `Timed out waiting for ${windowId} to be announced`);\n }\n async transmitFocusChange(hasFocus) {\n const eventData = {\n windowId: this.me?.id || `iframe-${this.instanceId}`,\n hasFocus\n };\n if (this.me) {\n this.me.isFocused = hasFocus;\n }\n await this.bridge.send(\"windows\", operations$9.focusChange, eventData);\n }\n defineEventListeners() {\n this.focusEventHandler = this.processFocusEvent.bind(this);\n document.addEventListener(\"visibilityChange\", this.focusEventHandler);\n window.addEventListener(\"focus\", this.focusEventHandler);\n window.addEventListener(\"blur\", this.focusEventHandler);\n }\n async handleGetChannel() {\n if (!this.me) {\n throw new Error(\"This window cannot report it's channel, because it is not a Glue Window, most likely because it is an iframe\");\n }\n const channel = this.channelsController.my();\n return {\n ...(channel ? { channel } : {}),\n };\n }\n}\n\nconst GlueWebPlatformControlName = \"T42.Web.Platform.Control\";\nconst GlueWebPlatformStreamName = \"T42.Web.Platform.Stream\";\nconst GlueClientControlName = \"T42.Web.Client.Control\";\nconst GlueCorePlusThemesStream = \"T42.Core.Plus.Themes.Stream\";\n\nclass GlueBridge {\n coreGlue;\n communicationId;\n platformMethodTimeoutMs = 10000;\n controllers;\n sub;\n running;\n constructor(coreGlue, communicationId) {\n this.coreGlue = coreGlue;\n this.communicationId = communicationId;\n }\n get contextLib() {\n return this.coreGlue.contexts;\n }\n get interopInstance() {\n return this.coreGlue.interop.instance.instance;\n }\n async stop() {\n this.running = false;\n this.sub.close();\n await this.coreGlue.interop.unregister(GlueClientControlName);\n }\n async start(controllers) {\n this.running = true;\n this.controllers = controllers;\n await Promise.all([\n this.checkWaitMethod(GlueWebPlatformControlName),\n this.checkWaitMethod(GlueWebPlatformStreamName)\n ]);\n const systemId = this.communicationId;\n const [sub] = await Promise.all([\n this.coreGlue.interop.subscribe(GlueWebPlatformStreamName, systemId ? { target: { instance: this.communicationId } } : undefined),\n this.coreGlue.interop.registerAsync(GlueClientControlName, (args, _, success, error) => this.passMessageController(args, success, error))\n ]);\n this.sub = sub;\n this.sub.onData((pkg) => this.passMessageController(pkg.data));\n }\n getInteropInstance(windowId) {\n const result = this.coreGlue.interop.servers().find((s) => s.windowId && s.windowId === windowId);\n return {\n application: result?.application,\n applicationName: result?.applicationName,\n peerId: result?.peerId,\n instance: result?.instance,\n windowId: result?.windowId\n };\n }\n async send(domain, operation, operationData, options, webOptions) {\n if (operation.dataDecoder) {\n try {\n operation.dataDecoder.runWithException(operationData);\n }\n catch (error) {\n throw new Error(`Unexpected Web->Platform outgoing validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`);\n }\n }\n const operationSupported = webOptions?.includeOperationCheck ?\n (await this.checkOperationSupported(domain, operation)).isSupported :\n true;\n if (!operationSupported) {\n throw new Error(`Cannot complete operation: ${operation.name} for domain: ${domain} because this client is connected to a platform which does not support it`);\n }\n try {\n const operationResult = await this.transmitMessage(domain, operation, operationData, options);\n if (operation.resultDecoder) {\n operation.resultDecoder.runWithException(operationResult);\n }\n return operationResult;\n }\n catch (error) {\n if (error.kind) {\n throw new Error(`Unexpected Web<-Platform incoming validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`);\n }\n throw new Error(error.message);\n }\n }\n async createNotificationsSteam() {\n const streamExists = this.coreGlue.interop.methods().some((method) => method.name === GlueCorePlusThemesStream);\n if (!streamExists) {\n throw new Error(\"Cannot subscribe to theme changes, because the underlying interop stream does not exist. Most likely this is the case when this client is not connected to Core Plus.\");\n }\n return this.coreGlue.interop.subscribe(GlueCorePlusThemesStream, this.communicationId ? { target: { instance: this.communicationId } } : undefined);\n }\n async checkOperationSupported(domain, operation) {\n try {\n const result = await this.send(domain, systemOperations.operationCheck, { operation: operation.name });\n return result;\n }\n catch (error) {\n return { isSupported: false };\n }\n }\n checkWaitMethod(name) {\n return PromisePlus$1((resolve) => {\n const hasMethod = this.coreGlue.interop.methods().some((method) => {\n const nameMatch = method.name === name;\n const serverMatch = this.communicationId ?\n method.getServers().some((server) => server.instance === this.communicationId) :\n true;\n return nameMatch && serverMatch;\n });\n if (hasMethod) {\n return resolve();\n }\n const unSub = this.coreGlue.interop.serverMethodAdded((data) => {\n const method = data.method;\n const server = data.server;\n const serverMatch = this.communicationId ?\n server.instance === this.communicationId :\n true;\n if (method.name === name && serverMatch) {\n unSub();\n resolve();\n }\n });\n }, this.platformMethodTimeoutMs, `Cannot initiate Glue Web, because a system method's discovery timed out: ${name}`);\n }\n passMessageController(args, success, error) {\n const decodeResult = libDomainDecoder.run(args.domain);\n if (!decodeResult.ok) {\n if (error) {\n error(`Cannot execute this client control, because of domain validation error: ${JSON.stringify(decodeResult.error)}`);\n }\n return;\n }\n const domain = decodeResult.result;\n this.controllers[domain]\n .handleBridgeMessage(args)\n .then((resolutionData) => {\n if (success) {\n success(resolutionData);\n }\n })\n .catch((err) => {\n if (error) {\n error(err);\n }\n console.warn(err);\n });\n }\n async transmitMessage(domain, operation, data, options) {\n const messageData = { domain, data, operation: operation.name };\n let invocationResult;\n const baseErrorMessage = `Internal Platform Communication Error. Attempted operation: ${JSON.stringify(operation.name)} with data: ${JSON.stringify(data)}. `;\n const systemId = this.communicationId;\n try {\n if (!this.running) {\n throw new Error(\"Cannot send a control message, because the platform shut down\");\n }\n invocationResult = await this.coreGlue.interop.invoke(GlueWebPlatformControlName, messageData, systemId ? { instance: this.communicationId } : undefined, options);\n if (!invocationResult) {\n throw new Error(\"Received unsupported result from the platform - empty result\");\n }\n if (!Array.isArray(invocationResult.all_return_values) || invocationResult.all_return_values.length === 0) {\n throw new Error(\"Received unsupported result from the platform - empty values collection\");\n }\n }\n catch (error) {\n if (error && error.all_errors && error.all_errors.length) {\n const invocationErrorMessage = error.all_errors[0].message;\n throw new Error(`${baseErrorMessage} -> Inner message: ${invocationErrorMessage}`);\n }\n throw new Error(`${baseErrorMessage} -> Inner message: ${error.message}`);\n }\n return invocationResult.all_return_values[0].returned;\n }\n}\n\nconst operations$8 = {\n appHello: { name: \"appHello\", dataDecoder: windowHelloDecoder, resultDecoder: appHelloSuccessDecoder },\n appDirectoryStateChange: { name: \"appDirectoryStateChange\", dataDecoder: appDirectoryStateChangeDecoder },\n instanceStarted: { name: \"instanceStarted\", dataDecoder: instanceDataDecoder },\n instanceStopped: { name: \"instanceStopped\", dataDecoder: instanceDataDecoder },\n applicationStart: { name: \"applicationStart\", dataDecoder: applicationStartConfigDecoder, resultDecoder: instanceDataDecoder },\n instanceStop: { name: \"instanceStop\", dataDecoder: basicInstanceDataDecoder },\n import: { name: \"import\" },\n remove: { name: \"remove\", dataDecoder: appRemoveConfigDecoder },\n export: { name: \"export\", resultDecoder: appsExportOperationDecoder },\n clear: { name: \"clear\" }\n};\n\nclass AppManagerController {\n me;\n baseApplicationsTimeoutMS = 60000;\n appImportTimeoutMS = 20;\n registry = CallbackRegistryFactory$1();\n ioc;\n bridge;\n publicWindowId;\n applications = [];\n instances = [];\n platformRegistration;\n logger;\n channelsController;\n sessionController;\n handlePlatformShutdown() {\n this.registry.clear();\n this.applications = [];\n this.instances = [];\n delete this.me;\n }\n async start(coreGlue, ioc) {\n this.logger = coreGlue.logger.subLogger(\"appManger.controller.web\");\n this.logger.trace(\"starting the web appManager controller\");\n this.publicWindowId = ioc.publicWindowId;\n this.addOperationsExecutors();\n this.ioc = ioc;\n this.bridge = ioc.bridge;\n this.channelsController = ioc.channelsController;\n this.sessionController = ioc.sessionController;\n this.platformRegistration = this.registerWithPlatform();\n await this.platformRegistration;\n this.logger.trace(\"registration with the platform successful, attaching the appManager property to glue and returning\");\n const api = this.toApi();\n coreGlue.appManager = api;\n }\n async handleBridgeMessage(args) {\n await this.platformRegistration;\n const operationName = appManagerOperationTypesDecoder.runWithException(args.operation);\n const operation = operations$8[operationName];\n if (!operation.execute) {\n return;\n }\n let operationData = args.data;\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n return await operation.execute(operationData);\n }\n onInstanceStarted(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"onInstanceStarted requires a single argument of type function\");\n }\n return this.registry.add(\"instance-started\", callback, this.instances);\n }\n onInstanceStopped(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"onInstanceStopped requires a single argument of type function\");\n }\n return this.registry.add(\"instance-stopped\", callback);\n }\n async startApplication(appName, context, options) {\n const channels = await this.channelsController.all();\n if (options?.channelId && !channels.includes(options.channelId)) {\n throw new Error(`The channel with name \"${options.channelId}\" doesn't exist!`);\n }\n const startOptions = {\n name: appName,\n waitForAGMReady: options?.waitForAGMReady ?? true,\n context,\n top: options?.top,\n left: options?.left,\n width: options?.width,\n height: options?.height,\n relativeTo: options?.relativeTo,\n relativeDirection: options?.relativeDirection,\n id: options?.reuseId,\n forceChromeTab: options?.forceTab,\n layoutComponentId: options?.layoutComponentId,\n channelId: options?.channelId\n };\n const openResult = await this.bridge.send(\"appManager\", operations$8.applicationStart, startOptions);\n const app = this.applications.find((a) => a.name === openResult.applicationName);\n return this.ioc.buildInstance(openResult, app);\n }\n getApplication(name) {\n const verifiedName = nonEmptyStringDecoder.runWithException(name);\n return this.applications.find((app) => app.name === verifiedName);\n }\n getInstances() {\n return this.instances.slice();\n }\n toApi() {\n const api = {\n myInstance: this.me,\n inMemory: {\n import: this.import.bind(this),\n remove: this.remove.bind(this),\n export: this.export.bind(this),\n clear: this.clear.bind(this)\n },\n application: this.getApplication.bind(this),\n applications: this.getApplications.bind(this),\n instances: this.getInstances.bind(this),\n onAppAdded: this.onAppAdded.bind(this),\n onAppChanged: this.onAppChanged.bind(this),\n onAppRemoved: this.onAppRemoved.bind(this),\n onInstanceStarted: this.onInstanceStarted.bind(this),\n onInstanceStopped: this.onInstanceStopped.bind(this)\n };\n return api;\n }\n addOperationsExecutors() {\n operations$8.appDirectoryStateChange.execute = this.handleAppDirectoryStateChange.bind(this);\n operations$8.instanceStarted.execute = this.handleInstanceStartedMessage.bind(this);\n operations$8.instanceStopped.execute = this.handleInstanceStoppedMessage.bind(this);\n }\n async handleAppDirectoryStateChange(data) {\n data.appsAdded.forEach(this.handleApplicationAddedMessage.bind(this));\n data.appsChanged.forEach(this.handleApplicationChangedMessage.bind(this));\n data.appsRemoved.forEach(this.handleApplicationRemovedMessage.bind(this));\n }\n onAppAdded(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"onAppAdded requires a single argument of type function\");\n }\n return this.registry.add(\"application-added\", callback, this.applications);\n }\n onAppRemoved(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"onAppRemoved requires a single argument of type function\");\n }\n return this.registry.add(\"application-removed\", callback);\n }\n onAppChanged(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"onAppChanged requires a single argument of type function\");\n }\n return this.registry.add(\"application-changed\", callback);\n }\n async handleApplicationAddedMessage(appData) {\n if (this.applications.some((app) => app.name === appData.name)) {\n return;\n }\n const app = await this.ioc.buildApplication(appData, []);\n const instances = this.instances.filter((instance) => instance.application.name === app.name);\n app.instances.push(...instances);\n this.applications.push(app);\n this.registry.execute(\"application-added\", app);\n }\n async handleApplicationRemovedMessage(appData) {\n const appIndex = this.applications.findIndex((app) => app.name === appData.name);\n if (appIndex < 0) {\n return;\n }\n const app = this.applications[appIndex];\n this.applications.splice(appIndex, 1);\n this.registry.execute(\"application-removed\", app);\n }\n async handleApplicationChangedMessage(appData) {\n const app = this.applications.find((app) => app.name === appData.name);\n if (!app) {\n return this.handleApplicationAddedMessage(appData);\n }\n app.title = appData.title;\n app.version = appData.version;\n app.icon = appData.icon;\n app.caption = appData.caption;\n app.userProperties = appData.userProperties;\n this.registry.execute(\"application-changed\", app);\n }\n async handleInstanceStartedMessage(instanceData) {\n if (this.instances.some((instance) => instance.id === instanceData.id)) {\n return;\n }\n const application = this.applications.find((app) => app.name === instanceData.applicationName);\n if (!application) {\n throw new Error(`Cannot add instance: ${instanceData.id}, because there is no application definition associated with it`);\n }\n const instance = this.ioc.buildInstance(instanceData, application);\n this.instances.push(instance);\n application.instances.push(instance);\n this.registry.execute(\"instance-started\", instance);\n }\n async handleInstanceStoppedMessage(instanceData) {\n const instance = this.instances.find((i) => i.id === instanceData.id);\n if (instance) {\n const instIdx = this.instances.findIndex((inst) => inst.id === instanceData.id);\n this.instances.splice(instIdx, 1);\n }\n const application = this.applications.find((app) => app.instances.some((inst) => inst.id === instanceData.id));\n if (application) {\n const instIdxApps = application.instances.findIndex((inst) => inst.id === instanceData.id);\n application.instances.splice(instIdxApps, 1);\n }\n if (!instance) {\n return;\n }\n this.registry.execute(\"instance-stopped\", instance);\n }\n async import(definitions, mode = \"replace\") {\n importModeDecoder.runWithException(mode);\n if (!Array.isArray(definitions)) {\n throw new Error(\"Import must be called with an array of definitions\");\n }\n if (definitions.length > 10000) {\n throw new Error(\"Cannot import more than 10000 app definitions in Glue42 Core.\");\n }\n const parseResult = definitions.reduce((soFar, definition) => {\n const decodeResult = allApplicationDefinitionsDecoder.run(definition);\n if (!decodeResult.ok) {\n soFar.invalid.push({ app: definition?.name, error: JSON.stringify(decodeResult.error) });\n }\n else {\n soFar.valid.push(definition);\n }\n return soFar;\n }, { valid: [], invalid: [] });\n const responseTimeout = this.baseApplicationsTimeoutMS + this.appImportTimeoutMS * parseResult.valid.length;\n await this.bridge.send(\"appManager\", operations$8.import, { definitions: parseResult.valid, mode }, { methodResponseTimeoutMs: responseTimeout });\n return {\n imported: parseResult.valid.map((valid) => valid.name),\n errors: parseResult.invalid\n };\n }\n async remove(name) {\n nonEmptyStringDecoder.runWithException(name);\n await this.bridge.send(\"appManager\", operations$8.remove, { name }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n }\n async clear() {\n await this.bridge.send(\"appManager\", operations$8.clear, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n }\n async export() {\n const response = await this.bridge.send(\"appManager\", operations$8.export, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n return response.definitions;\n }\n getApplications() {\n return this.applications.slice();\n }\n async joinInitialChannel(initialChannelId) {\n try {\n await this.channelsController.join(initialChannelId);\n }\n catch (error) {\n this.logger.warn(`Application instance ${this.me} was unable to join the ${initialChannelId} channel. Reason: ${JSON.stringify(error)}`);\n }\n }\n async registerWithPlatform() {\n const result = await this.bridge.send(\"appManager\", operations$8.appHello, { windowId: this.publicWindowId }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n this.logger.trace(\"the platform responded to the hello message with a full list of apps\");\n this.applications = await Promise.all(result.apps.map((app) => this.ioc.buildApplication(app, app.instances)));\n this.instances = this.applications.reduce((instancesSoFar, app) => {\n instancesSoFar.push(...app.instances);\n return instancesSoFar;\n }, []);\n this.me = this.findMyInstance();\n this.logger.trace(`all applications were parsed and saved. I am ${this.me ? \"NOT a\" : \"a\"} valid instance`);\n const { channels: channelsStorageData } = this.sessionController.getWindowData();\n const channel = channelsStorageData ? channelsStorageData.currentName : result.initialChannelId;\n if (channel) {\n await this.joinInitialChannel(channel);\n }\n }\n findMyInstance() {\n for (const app of this.applications) {\n const foundInstance = app.instances.find((instance) => instance.id === this.publicWindowId);\n if (foundInstance) {\n return foundInstance;\n }\n }\n return undefined;\n }\n}\n\nclass InstanceModel {\n data;\n bridge;\n application;\n me;\n myCtxKey;\n constructor(data, bridge, application) {\n this.data = data;\n this.bridge = bridge;\n this.application = application;\n this.myCtxKey = `___instance___${this.data.id}`;\n }\n toApi() {\n const agm = this.bridge.getInteropInstance(this.data.id);\n const api = {\n id: this.data.id,\n agm,\n application: this.application,\n stop: this.stop.bind(this),\n getContext: this.getContext.bind(this)\n };\n this.me = Object.freeze(api);\n return this.me;\n }\n async getContext() {\n return this.bridge.contextLib.get(this.myCtxKey);\n }\n async stop() {\n await this.bridge.send(\"appManager\", operations$8.instanceStop, { id: this.data.id });\n }\n}\n\nclass ApplicationModel {\n data;\n instances;\n controller;\n me;\n constructor(data, instances, controller) {\n this.data = data;\n this.instances = instances;\n this.controller = controller;\n }\n toApi() {\n const api = {\n name: this.data.name,\n title: this.data.title,\n version: this.data.version,\n icon: this.data.icon,\n caption: this.data.caption,\n userProperties: this.data.userProperties,\n instances: this.instances,\n start: this.start.bind(this),\n onInstanceStarted: this.onInstanceStarted.bind(this),\n onInstanceStopped: this.onInstanceStopped.bind(this)\n };\n this.me = api;\n return this.me;\n }\n onInstanceStarted(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"OnInstanceStarted requires a single argument of type function\");\n }\n return this.controller.onInstanceStarted((instance) => {\n if (instance.application.name === this.data.name) {\n callback(instance);\n }\n });\n }\n onInstanceStopped(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"OnInstanceStarted requires a single argument of type function\");\n }\n return this.controller.onInstanceStopped((instance) => {\n if (instance.application.name === this.data.name) {\n callback(instance);\n }\n });\n }\n async start(context, options) {\n const verifiedContext = startApplicationContextDecoder.runWithException(context);\n const verifiedOptions = startApplicationOptionsDecoder.runWithException(options);\n return this.controller.startApplication(this.data.name, verifiedContext, verifiedOptions);\n }\n}\n\nconst operations$7 = {\n layoutAdded: { name: \"layoutAdded\", dataDecoder: glueLayoutDecoder },\n layoutChanged: { name: \"layoutChanged\", dataDecoder: glueLayoutDecoder },\n layoutRemoved: { name: \"layoutRemoved\", dataDecoder: glueLayoutDecoder },\n layoutRenamed: { name: \"layoutRenamed\", dataDecoder: glueLayoutDecoder },\n get: { name: \"get\", dataDecoder: simpleLayoutConfigDecoder, resultDecoder: optionalSimpleLayoutResult },\n getAll: { name: \"getAll\", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsSummariesResultDecoder },\n export: { name: \"export\", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsFullConfigDecoder },\n import: { name: \"import\", dataDecoder: layoutsImportConfigDecoder },\n remove: { name: \"remove\", dataDecoder: simpleLayoutConfigDecoder },\n rename: { name: \"rename\", dataDecoder: renameLayoutConfigDecoder, resultDecoder: layoutResultDecoder },\n save: { name: \"save\", dataDecoder: saveLayoutConfigDecoder, resultDecoder: simpleLayoutResultDecoder },\n restore: { name: \"restore\", dataDecoder: restoreLayoutConfigDecoder },\n clientSaveRequest: { name: \"clientSaveRequest\", dataDecoder: platformSaveRequestConfigDecoder, resultDecoder: saveRequestClientResponseDecoder },\n getGlobalPermissionState: { name: \"getGlobalPermissionState\", resultDecoder: permissionStateResultDecoder },\n requestGlobalPermission: { name: \"requestGlobalPermission\", resultDecoder: simpleAvailabilityResultDecoder },\n checkGlobalActivated: { name: \"checkGlobalActivated\", resultDecoder: simpleAvailabilityResultDecoder },\n getDefaultGlobal: { name: \"getDefaultGlobal\", resultDecoder: optionalSimpleLayoutResult },\n setDefaultGlobal: { name: \"setDefaultGlobal\", dataDecoder: setDefaultGlobalConfigDecoder },\n clearDefaultGlobal: { name: \"clearDefaultGlobal\" },\n updateMetadata: { name: \"updateMetadata\", dataDecoder: updateLayoutMetadataConfigDecoder }\n};\n\nclass LayoutsController {\n defaultLayoutRestoreTimeoutMS = 120000;\n registry = CallbackRegistryFactory$1();\n bridge;\n logger;\n windowsController;\n saveRequestSubscription;\n handlePlatformShutdown() {\n this.registry.clear();\n }\n async start(coreGlue, ioc) {\n this.logger = coreGlue.logger.subLogger(\"layouts.controller.web\");\n this.logger.trace(\"starting the web layouts controller\");\n this.bridge = ioc.bridge;\n this.windowsController = ioc.windowsController;\n this.addOperationsExecutors();\n const api = this.toApi();\n this.logger.trace(\"no need for platform registration, attaching the layouts property to glue and returning\");\n coreGlue.layouts = api;\n }\n async handleBridgeMessage(args) {\n const operationName = layoutsOperationTypesDecoder.runWithException(args.operation);\n const operation = operations$7[operationName];\n if (!operation.execute) {\n return;\n }\n let operationData = args.data;\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n return await operation.execute(operationData);\n }\n toApi() {\n const api = {\n get: this.get.bind(this),\n getAll: this.getAll.bind(this),\n export: this.export.bind(this),\n import: this.import.bind(this),\n save: this.save.bind(this),\n restore: this.restore.bind(this),\n remove: this.remove.bind(this),\n onAdded: this.onAdded.bind(this),\n onChanged: this.onChanged.bind(this),\n onRemoved: this.onRemoved.bind(this),\n onSaveRequested: this.subscribeOnSaveRequested.bind(this),\n getMultiScreenPermissionState: this.getGlobalPermissionState.bind(this),\n requestMultiScreenPermission: this.requestGlobalPermission.bind(this),\n getGlobalTypeState: this.checkGlobalActivated.bind(this),\n getDefaultGlobal: this.getDefaultGlobal.bind(this),\n setDefaultGlobal: this.setDefaultGlobal.bind(this),\n clearDefaultGlobal: this.clearDefaultGlobal.bind(this),\n rename: this.rename.bind(this),\n onRenamed: this.onRenamed.bind(this),\n updateMetadata: this.updateMetadata.bind(this)\n };\n return Object.freeze(api);\n }\n addOperationsExecutors() {\n operations$7.layoutAdded.execute = this.handleOnAdded.bind(this);\n operations$7.layoutChanged.execute = this.handleOnChanged.bind(this);\n operations$7.layoutRemoved.execute = this.handleOnRemoved.bind(this);\n operations$7.layoutRenamed.execute = this.handleOnRenamed.bind(this);\n operations$7.clientSaveRequest.execute = this.handleSaveRequest.bind(this);\n }\n async get(name, type) {\n nonEmptyStringDecoder.runWithException(name);\n layoutTypeDecoder.runWithException(type);\n const result = await this.bridge.send(\"layouts\", operations$7.get, { name, type });\n return result.layout;\n }\n async getAll(type) {\n layoutTypeDecoder.runWithException(type);\n const result = await this.bridge.send(\"layouts\", operations$7.getAll, { type });\n return result.summaries;\n }\n async export(type) {\n layoutTypeDecoder.runWithException(type);\n const result = await this.bridge.send(\"layouts\", operations$7.export, { type });\n return result.layouts;\n }\n async import(layouts, mode = \"replace\") {\n importModeDecoder.runWithException(mode);\n if (!Array.isArray(layouts)) {\n throw new Error(\"Import must be called with an array of layouts\");\n }\n if (layouts.length > 1000) {\n throw new Error(\"Cannot import more than 1000 layouts at once in Glue42 Core.\");\n }\n const parseResult = layouts.reduce((soFar, layout) => {\n const decodeResult = glueLayoutDecoder.run(layout);\n if (decodeResult.ok) {\n soFar.valid.push(layout);\n }\n else {\n this.logger.warn(`A layout with name: ${layout.name} was not imported, because of error: ${JSON.stringify(decodeResult.error)}`);\n }\n return soFar;\n }, { valid: [] });\n const layoutsToImport = layouts.filter((layout) => parseResult.valid.some((validLayout) => validLayout.name === layout.name));\n await this.bridge.send(\"layouts\", operations$7.import, { layouts: layoutsToImport, mode });\n }\n async save(layout) {\n newLayoutOptionsDecoder.runWithException(layout);\n const saveResult = await this.bridge.send(\"layouts\", operations$7.save, { layout });\n return saveResult.layout;\n }\n async restore(options) {\n restoreOptionsDecoder.runWithException(options);\n const invocationTimeout = options.timeout ? options.timeout * 2 : this.defaultLayoutRestoreTimeoutMS;\n await this.bridge.send(\"layouts\", operations$7.restore, { layout: options }, { methodResponseTimeoutMs: invocationTimeout });\n }\n async remove(type, name) {\n layoutTypeDecoder.runWithException(type);\n nonEmptyStringDecoder.runWithException(name);\n await this.bridge.send(\"layouts\", operations$7.remove, { type, name });\n }\n async handleSaveRequest(config) {\n const response = {};\n if (this.saveRequestSubscription) {\n try {\n const onSaveRequestResponse = this.saveRequestSubscription(config);\n response.windowContext = onSaveRequestResponse?.windowContext;\n }\n catch (error) {\n this.logger.warn(`An error was thrown by the onSaveRequested callback, ignoring the callback: ${JSON.stringify(error)}`);\n }\n }\n return response;\n }\n async getGlobalPermissionState() {\n const requestResult = await this.bridge.send(\"layouts\", operations$7.getGlobalPermissionState, undefined);\n return requestResult;\n }\n async requestGlobalPermission() {\n const currentState = (await this.getGlobalPermissionState()).state;\n if (currentState === \"denied\") {\n return { permissionGranted: false };\n }\n if (currentState === \"granted\") {\n return { permissionGranted: true };\n }\n const myWindow = this.windowsController.my();\n const globalNamespace = window.glue42core || window.iobrowser;\n const amIWorkspaceFrame = globalNamespace.isPlatformFrame;\n if (myWindow.name !== \"Platform\" && !amIWorkspaceFrame) {\n throw new Error(\"Cannot request permission for multi-window placement from any app other than the Platform.\");\n }\n const requestResult = await this.bridge.send(\"layouts\", operations$7.requestGlobalPermission, undefined, { methodResponseTimeoutMs: 180000 });\n return { permissionGranted: requestResult.isAvailable };\n }\n async checkGlobalActivated() {\n const requestResult = await this.bridge.send(\"layouts\", operations$7.checkGlobalActivated, undefined);\n return { activated: requestResult.isAvailable };\n }\n async getDefaultGlobal() {\n const requestResult = await this.bridge.send(\"layouts\", operations$7.getDefaultGlobal, undefined, undefined, { includeOperationCheck: true });\n return requestResult.layout;\n }\n async setDefaultGlobal(name) {\n nonEmptyStringDecoder.runWithException(name);\n await this.bridge.send(\"layouts\", operations$7.setDefaultGlobal, { name }, undefined, { includeOperationCheck: true });\n }\n async clearDefaultGlobal() {\n await this.bridge.send(\"layouts\", operations$7.clearDefaultGlobal, undefined, undefined, { includeOperationCheck: true });\n }\n async rename(layout, newName) {\n glueLayoutDecoder.runWithException(layout);\n nonEmptyStringDecoder.runWithException(newName);\n const result = await this.bridge.send(\"layouts\", operations$7.rename, { layout, newName }, undefined, { includeOperationCheck: true });\n return result;\n }\n async updateMetadata(layout) {\n glueLayoutDecoder.runWithException(layout);\n await this.bridge.send(\"layouts\", operations$7.updateMetadata, { layout }, undefined, { includeOperationCheck: true });\n }\n onAdded(callback) {\n this.export(\"Global\").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => { });\n this.export(\"Workspace\").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => { });\n return this.registry.add(operations$7.layoutAdded.name, callback);\n }\n onChanged(callback) {\n return this.registry.add(operations$7.layoutChanged.name, callback);\n }\n onRemoved(callback) {\n return this.registry.add(operations$7.layoutRemoved.name, callback);\n }\n onRenamed(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onRenamed, because the provided callback is not a function!\");\n }\n return this.registry.add(operations$7.layoutRenamed.name, callback);\n }\n subscribeOnSaveRequested(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onSaveRequested, because the provided argument is not a valid callback function.\");\n }\n if (this.saveRequestSubscription) {\n throw new Error(\"Cannot subscribe to onSaveRequested, because this client has already subscribed and only one subscription is supported. Consider unsubscribing from the initial one.\");\n }\n this.saveRequestSubscription = callback;\n return () => {\n delete this.saveRequestSubscription;\n };\n }\n async handleOnAdded(layout) {\n this.registry.execute(operations$7.layoutAdded.name, layout);\n }\n async handleOnChanged(layout) {\n this.registry.execute(operations$7.layoutChanged.name, layout);\n }\n async handleOnRemoved(layout) {\n this.registry.execute(operations$7.layoutRemoved.name, layout);\n }\n async handleOnRenamed(layout) {\n this.registry.execute(operations$7.layoutRenamed.name, layout);\n }\n}\n\nconst operations$6 = {\n raiseNotification: { name: \"raiseNotification\", dataDecoder: raiseNotificationDecoder, resultDecoder: raiseNotificationResultDecoder },\n requestPermission: { name: \"requestPermission\", resultDecoder: permissionRequestResultDecoder },\n notificationShow: { name: \"notificationShow\", dataDecoder: notificationEventPayloadDecoder },\n notificationClick: { name: \"notificationClick\", dataDecoder: notificationEventPayloadDecoder },\n getPermission: { name: \"getPermission\", resultDecoder: permissionQueryResultDecoder },\n list: { name: \"list\", resultDecoder: allNotificationsDataDecoder },\n notificationRaised: { name: \"notificationRaised\", dataDecoder: simpleNotificationDataDecoder },\n notificationClosed: { name: \"notificationClosed\", dataDecoder: simpleNotificationSelectDecoder },\n click: { name: \"click\" },\n clear: { name: \"clear\" },\n clearAll: { name: \"clearAll\" },\n clearOld: { name: \"clearOld\" },\n configure: { name: \"configure\", dataDecoder: notificationsConfigurationProtocolDecoder },\n getConfiguration: { name: \"getConfiguration\", resultDecoder: strictNotificationsConfigurationProtocolDecoder },\n configurationChanged: { name: \"configurationChanged\", resultDecoder: strictNotificationsConfigurationProtocolDecoder },\n setState: { name: \"setState\", dataDecoder: notificationSetStateRequestDecoder },\n activeCountChange: { name: \"activeCountChange\", resultDecoder: activeNotificationsCountChangeDecoder },\n stateChange: { name: \"stateChange\", resultDecoder: notificationSetStateRequestDecoder }\n};\n\nconst urlAlphabet$1 =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict';\n\nlet nanoid$1 = (size = 21) => {\n let id = '';\n let bytes = crypto.getRandomValues(new Uint8Array(size));\n while (size--) {\n id += urlAlphabet$1[bytes[size] & 63];\n }\n return id\n};\n\nclass NotificationsController {\n registry = CallbackRegistryFactory$1();\n logger;\n bridge;\n notificationsSettings;\n notifications = {};\n coreGlue;\n buildNotificationFunc;\n handlePlatformShutdown() {\n this.notifications = {};\n this.registry.clear();\n }\n async start(coreGlue, ioc) {\n this.logger = coreGlue.logger.subLogger(\"notifications.controller.web\");\n this.logger.trace(\"starting the web notifications controller\");\n this.bridge = ioc.bridge;\n this.coreGlue = coreGlue;\n this.notificationsSettings = ioc.config.notifications;\n this.buildNotificationFunc = ioc.buildNotification;\n const api = this.toApi();\n this.addOperationExecutors();\n coreGlue.notifications = api;\n this.logger.trace(\"notifications are ready\");\n }\n async handleBridgeMessage(args) {\n const operationName = notificationsOperationTypesDecoder.runWithException(args.operation);\n const operation = operations$6[operationName];\n if (!operation.execute) {\n return;\n }\n let operationData = args.data;\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n return await operation.execute(operationData);\n }\n toApi() {\n const api = {\n raise: this.raise.bind(this),\n requestPermission: this.requestPermission.bind(this),\n getPermission: this.getPermission.bind(this),\n list: this.list.bind(this),\n onRaised: this.onRaised.bind(this),\n onClosed: this.onClosed.bind(this),\n click: this.click.bind(this),\n clear: this.clear.bind(this),\n clearAll: this.clearAll.bind(this),\n clearOld: this.clearOld.bind(this),\n configure: this.configure.bind(this),\n getConfiguration: this.getConfiguration.bind(this),\n getFilter: this.getFilter.bind(this),\n setFilter: this.setFilter.bind(this),\n setState: this.setState.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\n onActiveCountChanged: this.onActiveCountChanged.bind(this),\n onStateChanged: this.onStateChanged.bind(this)\n };\n return Object.freeze(api);\n }\n async getPermission() {\n const queryResult = await this.bridge.send(\"notifications\", operations$6.getPermission, undefined);\n return queryResult.permission;\n }\n async requestPermission() {\n const permissionResult = await this.bridge.send(\"notifications\", operations$6.requestPermission, undefined);\n return permissionResult.permissionGranted;\n }\n async raise(options) {\n const settings = glue42NotificationOptionsDecoder.runWithException(options);\n settings.showToast = typeof settings.showToast === \"boolean\" ? settings.showToast : true;\n settings.showInPanel = typeof settings.showInPanel === \"boolean\" ? settings.showInPanel : true;\n const permissionGranted = await this.requestPermission();\n if (!permissionGranted) {\n throw new Error(\"Cannot raise the notification, because the user has declined the permission request\");\n }\n const id = nanoid$1(10);\n const raiseResult = await this.bridge.send(\"notifications\", operations$6.raiseNotification, { settings, id });\n const notification = this.buildNotificationFunc(raiseResult.settings, id);\n this.notifications[id] = notification;\n return notification;\n }\n async list() {\n const bridgeResponse = await this.bridge.send(\"notifications\", operations$6.list, undefined, undefined, { includeOperationCheck: true });\n return bridgeResponse.notifications;\n }\n onRaised(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"onRaised expects a callback of type function\");\n }\n return this.registry.add(\"notification-raised\", callback);\n }\n onClosed(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"onRaised expects a callback of type function\");\n }\n return this.registry.add(\"notification-closed\", callback);\n }\n async click(id, action) {\n nonEmptyStringDecoder.runWithException(id);\n if (action) {\n nonEmptyStringDecoder.runWithException(action);\n }\n await this.bridge.send(\"notifications\", operations$6.click, { id, action }, undefined, { includeOperationCheck: true });\n }\n async clear(id) {\n nonEmptyStringDecoder.runWithException(id);\n await this.bridge.send(\"notifications\", operations$6.clear, { id }, undefined, { includeOperationCheck: true });\n }\n async clearAll() {\n await this.bridge.send(\"notifications\", operations$6.clearAll, undefined, undefined, { includeOperationCheck: true });\n }\n async clearOld() {\n await this.bridge.send(\"notifications\", operations$6.clearOld, undefined, undefined, { includeOperationCheck: true });\n }\n async configure(config) {\n const verifiedConfig = notificationsConfigurationDecoder.runWithException(config);\n await this.bridge.send(\"notifications\", operations$6.configure, { configuration: verifiedConfig }, undefined, { includeOperationCheck: true });\n }\n async getConfiguration() {\n const response = await this.bridge.send(\"notifications\", operations$6.getConfiguration, undefined, undefined, { includeOperationCheck: true });\n return response.configuration;\n }\n async getFilter() {\n const response = await this.bridge.send(\"notifications\", operations$6.getConfiguration, undefined, undefined, { includeOperationCheck: true });\n return response.configuration.sourceFilter;\n }\n async setFilter(filter) {\n const verifiedFilter = notificationFilterDecoder.runWithException(filter);\n await this.bridge.send(\"notifications\", operations$6.configure, { configuration: { sourceFilter: verifiedFilter } }, undefined, { includeOperationCheck: true });\n return verifiedFilter;\n }\n async setState(id, state) {\n nonEmptyStringDecoder.runWithException(id);\n notificationStateDecoder.runWithException(state);\n await this.bridge.send(\"notifications\", operations$6.setState, { id, state }, undefined, { includeOperationCheck: true });\n }\n onConfigurationChanged(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to configuration changed, because the provided callback is not a function!\");\n }\n return this.registry.add(\"notifications-config-changed\", callback);\n }\n onActiveCountChanged(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onActiveCountChanged changed, because the provided callback is not a function!\");\n }\n return this.registry.add(\"notifications-active-count-changed\", callback);\n }\n onStateChanged(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onStateChanged changed, because the provided callback is not a function!\");\n }\n return this.registry.add(\"notification-state-changed\", callback);\n }\n addOperationExecutors() {\n operations$6.notificationShow.execute = this.handleNotificationShow.bind(this);\n operations$6.notificationClick.execute = this.handleNotificationClick.bind(this);\n operations$6.notificationRaised.execute = this.handleNotificationRaised.bind(this);\n operations$6.notificationClosed.execute = this.handleNotificationClosed.bind(this);\n operations$6.configurationChanged.execute = this.handleConfigurationChanged.bind(this);\n operations$6.activeCountChange.execute = this.handleActiveCountChanged.bind(this);\n operations$6.stateChange.execute = this.handleNotificationStateChanged.bind(this);\n }\n async handleConfigurationChanged(data) {\n this.registry.execute(\"notifications-config-changed\", data.configuration);\n }\n async handleActiveCountChanged(data) {\n this.registry.execute(\"notifications-active-count-changed\", data);\n }\n async handleNotificationStateChanged(data) {\n this.registry.execute(\"notification-state-changed\", { id: data.id }, data.state);\n }\n async handleNotificationShow(data) {\n if (!data.id) {\n return;\n }\n const notification = this.notifications[data.id];\n if (notification && notification.onshow) {\n notification.onshow();\n }\n }\n async handleNotificationClick(data) {\n if (!data.action && this.notificationsSettings?.defaultClick) {\n this.notificationsSettings.defaultClick(this.coreGlue, data.definition);\n }\n if (data.action && this.notificationsSettings?.actionClicks?.some((actionDef) => actionDef.action === data.action)) {\n const foundHandler = this.notificationsSettings?.actionClicks?.find((actionDef) => actionDef.action === data.action);\n foundHandler.handler(this.coreGlue, data.definition);\n }\n if (!data.id) {\n return;\n }\n const notification = this.notifications[data.id];\n if (notification && notification.onclick) {\n notification.onclick();\n delete this.notifications[data.id];\n }\n }\n async handleNotificationRaised(data) {\n this.registry.execute(\"notification-raised\", data.notification);\n }\n async handleNotificationClosed(data) {\n this.registry.execute(\"notification-closed\", data);\n }\n}\n\nconst operations$5 = {\n getIntents: { name: \"getIntents\", resultDecoder: wrappedIntentsDecoder },\n findIntent: { name: \"findIntent\", dataDecoder: wrappedIntentFilterDecoder, resultDecoder: wrappedIntentsDecoder },\n raiseIntent: { name: \"raiseIntent\", dataDecoder: intentRequestDecoder, resultDecoder: intentResultDecoder },\n raise: { name: \"raise\", dataDecoder: raiseIntentRequestDecoder, resultDecoder: intentResultDecoder },\n filterHandlers: { name: \"filterHandlers\", dataDecoder: filterHandlersWithResolverConfigDecoder, resultDecoder: filterHandlersResultDecoder },\n getIntentsByHandler: { name: \"getIntentsByHandler\", dataDecoder: intentHandlerDecoder, resultDecoder: getIntentsResultDecoder }\n};\n\nconst GLUE42_FDC3_INTENTS_METHOD_PREFIX = \"Tick42.FDC3.Intents.\";\nconst INTENTS_RESOLVER_INTEROP_PREFIX = \"T42.Intents.Resolver.Control.\";\nconst INTENTS_RESOLVER_APP_NAME = \"intentsResolver\";\nconst DEFAULT_RESOLVER_RESPONSE_TIMEOUT = 60 * 1000;\nconst ADDITIONAL_BRIDGE_OPERATION_TIMEOUT = 30 * 1000;\nconst INTENTS_RESOLVER_WIDTH = 400;\nconst INTENTS_RESOLVER_HEIGHT = 440;\nconst MAX_SET_TIMEOUT_DELAY = 2147483647;\nconst DEFAULT_PICK_HANDLER_BY_TIMEOUT = 90 * 1000;\n\nclass IntentsController {\n bridge;\n logger;\n interop;\n legacyIntentsController;\n myIntents = new Set();\n useIntentsResolverUI = true;\n intentsResolverAppName;\n intentResolverResponseTimeout;\n unregisterIntentPromises = [];\n async start(coreGlue, ioc) {\n this.logger = coreGlue.logger.subLogger(\"intents.controller.web\");\n this.logger.trace(\"starting the web intents controller\");\n this.bridge = ioc.bridge;\n this.interop = coreGlue.interop;\n this.legacyIntentsController = ioc.legacyIntentsHelper;\n this.checkIfIntentsResolverIsEnabled(ioc.config);\n const api = this.toApi();\n this.logger.trace(\"no need for platform registration, attaching the intents property to glue and returning\");\n coreGlue.intents = api;\n }\n handlePlatformShutdown() {\n this.myIntents = new Set();\n this.unregisterIntentPromises = [];\n }\n async handleBridgeMessage(args) {\n const operationName = intentsOperationTypesDecoder.runWithException(args.operation);\n const operation = operations$5[operationName];\n if (!operation.execute) {\n return;\n }\n let operationData = args.data;\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n return await operation.execute(operationData);\n }\n toApi() {\n const api = {\n raise: this.raise.bind(this),\n all: this.all.bind(this),\n addIntentListener: this.addIntentListener.bind(this),\n register: this.register.bind(this),\n find: this.find.bind(this),\n filterHandlers: this.filterHandlers.bind(this),\n getIntents: this.getIntentsByHandler.bind(this)\n };\n return api;\n }\n async raise(request) {\n const validatedIntentRequest = raiseRequestDecoder.runWithException(request);\n const intentRequest = typeof validatedIntentRequest === \"string\"\n ? { intent: validatedIntentRequest }\n : validatedIntentRequest;\n await Promise.all(this.unregisterIntentPromises);\n const requestWithResolverInfo = { intentRequest, resolverConfig: this.getResolverConfigByRequest({ intentRequest }) };\n const isRaiseOperationSupported = await this.isRaiseOperationSupported();\n if (!isRaiseOperationSupported.supported) {\n this.logger.warn(`${isRaiseOperationSupported.reason}. Invoking legacy raise method`);\n return this.legacyIntentsController.raise(requestWithResolverInfo, this.find.bind(this));\n }\n this.logger.trace(`Sending raise request to the platform: ${JSON.stringify(request)} and method response timeout of ${this.intentResolverResponseTimeout}ms`);\n const methodResponseTimeoutMs = intentRequest.waitUserResponseIndefinitely\n ? MAX_SET_TIMEOUT_DELAY\n : (intentRequest.timeout || this.intentResolverResponseTimeout) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT;\n const response = await this.bridge.send(\"intents\", operations$5.raise, requestWithResolverInfo, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs });\n return response;\n }\n getResolverConfigByRequest(filter) {\n if (filter.handlerFilter) {\n return {\n enabled: typeof filter.handlerFilter?.openResolver === \"boolean\" ? filter.handlerFilter?.openResolver : this.useIntentsResolverUI,\n appName: this.intentsResolverAppName,\n waitResponseTimeout: filter.handlerFilter?.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT\n };\n }\n const waitResponseTimeout = filter.intentRequest?.waitUserResponseIndefinitely ? MAX_SET_TIMEOUT_DELAY : this.intentResolverResponseTimeout;\n return {\n enabled: this.useIntentsResolverUI,\n appName: this.intentsResolverAppName,\n waitResponseTimeout\n };\n }\n async isRaiseOperationSupported() {\n try {\n const { isSupported } = await this.bridge.send(\"intents\", systemOperations.operationCheck, { operation: \"raise\" });\n return {\n supported: isSupported,\n reason: isSupported ? \"\" : \"The platform of this client is outdated and does not support \\\"raise\\\" operation\"\n };\n }\n catch (error) {\n return {\n supported: false,\n reason: \"The platform of this client is outdated and does not support \\\"operationCheck\\\" command\"\n };\n }\n }\n async all() {\n await Promise.all(this.unregisterIntentPromises);\n const result = await this.bridge.send(\"intents\", operations$5.getIntents, undefined);\n return result.intents;\n }\n addIntentListener(intent, handler) {\n AddIntentListenerDecoder.runWithException(intent);\n if (typeof handler !== \"function\") {\n throw new Error(\"Cannot add intent listener, because the provided handler is not a function!\");\n }\n let registerPromise;\n const intentName = typeof intent === \"string\" ? intent : intent.intent;\n const methodName = this.buildInteropMethodName(intentName);\n const alreadyRegistered = this.myIntents.has(intentName);\n if (alreadyRegistered) {\n throw new Error(`Intent listener for intent ${intentName} already registered!`);\n }\n this.myIntents.add(intentName);\n const result = {\n unsubscribe: () => {\n this.myIntents.delete(intentName);\n registerPromise\n .then(() => this.interop.unregister(methodName))\n .catch((err) => this.logger.trace(`Unregistration of a method with name ${methodName} failed with reason: ${err}`));\n }\n };\n let intentFlag = {};\n if (typeof intent === \"object\") {\n const { intent: removed, ...rest } = intent;\n intentFlag = rest;\n }\n registerPromise = this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args) => {\n if (this.myIntents.has(intentName)) {\n const { _initialCallerId, ...rest } = args;\n return handler(rest);\n }\n });\n registerPromise.catch(err => {\n this.myIntents.delete(intentName);\n this.logger.warn(`Registration of a method with name ${methodName} failed with reason: ${err}`);\n });\n return result;\n }\n async register(intent, handler) {\n AddIntentListenerDecoder.runWithException(intent);\n if (typeof handler !== \"function\") {\n throw new Error(\"Cannot add intent listener, because the provided handler is not a function!\");\n }\n await Promise.all(this.unregisterIntentPromises);\n const intentName = typeof intent === \"string\" ? intent : intent.intent;\n const methodName = this.buildInteropMethodName(intentName);\n const alreadyRegistered = this.myIntents.has(intentName);\n if (alreadyRegistered) {\n throw new Error(`Intent listener for intent ${intentName} already registered!`);\n }\n this.myIntents.add(intentName);\n let intentFlag = {};\n if (typeof intent === \"object\") {\n const { intent: removed, ...rest } = intent;\n intentFlag = rest;\n }\n try {\n await this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args) => {\n if (this.myIntents.has(intentName)) {\n const { _initialCallerId, ...rest } = args;\n const caller = this.interop.servers().find((server) => server.instance === _initialCallerId);\n return handler(rest, caller);\n }\n });\n }\n catch (err) {\n this.myIntents.delete(intentName);\n throw new Error(`Registration of a method with name ${methodName} failed with reason: ${JSON.stringify(err)}`);\n }\n return {\n unsubscribe: () => this.unsubscribeIntent(intentName)\n };\n }\n async find(intentFilter) {\n let data = undefined;\n if (typeof intentFilter !== \"undefined\") {\n const intentFilterObj = findFilterDecoder.runWithException(intentFilter);\n if (typeof intentFilterObj === \"string\") {\n data = {\n filter: {\n name: intentFilterObj\n }\n };\n }\n else if (typeof intentFilterObj === \"object\") {\n data = {\n filter: intentFilterObj\n };\n }\n }\n await Promise.all(this.unregisterIntentPromises);\n const result = await this.bridge.send(\"intents\", operations$5.findIntent, data);\n return result.intents;\n }\n checkIfIntentsResolverIsEnabled(options) {\n this.useIntentsResolverUI = typeof options.intents?.enableIntentsResolverUI === \"boolean\"\n ? options.intents.enableIntentsResolverUI\n : true;\n this.intentsResolverAppName = options.intents?.intentsResolverAppName ?? INTENTS_RESOLVER_APP_NAME;\n this.intentResolverResponseTimeout = options.intents?.methodResponseTimeoutMs ?? DEFAULT_RESOLVER_RESPONSE_TIMEOUT;\n }\n clearUnregistrationPromise(promiseToRemove) {\n this.unregisterIntentPromises = this.unregisterIntentPromises.filter(promise => promise !== promiseToRemove);\n }\n buildInteropMethodName(intentName) {\n return `${GLUE42_FDC3_INTENTS_METHOD_PREFIX}${intentName}`;\n }\n unsubscribeIntent(intentName) {\n this.myIntents.delete(intentName);\n const methodName = this.buildInteropMethodName(intentName);\n const unregisterPromise = this.interop.unregister(methodName);\n this.unregisterIntentPromises.push(unregisterPromise);\n unregisterPromise\n .then(() => {\n this.clearUnregistrationPromise(unregisterPromise);\n })\n .catch((err) => {\n this.logger.error(`Unregistration of a method with name ${methodName} failed with reason: ${err}`);\n this.clearUnregistrationPromise(unregisterPromise);\n });\n }\n async filterHandlers(handlerFilter) {\n handlersFilterDecoder.runWithException(handlerFilter);\n this.checkIfAtLeastOneFilterIsPresent(handlerFilter);\n if (handlerFilter.openResolver && !this.useIntentsResolverUI) {\n throw new Error(\"Cannot resolve 'filterHandlers' request using Intents Resolver UI because it's globally disabled\");\n }\n const methodResponseTimeoutMs = (handlerFilter.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT;\n const filterHandlersRequestWithResolverConfig = { filterHandlersRequest: handlerFilter, resolverConfig: this.getResolverConfigByRequest({ handlerFilter }) };\n const result = await this.bridge.send(\"intents\", operations$5.filterHandlers, filterHandlersRequestWithResolverConfig, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }, { includeOperationCheck: true });\n return result;\n }\n checkIfAtLeastOneFilterIsPresent(filter) {\n const errorMsg = \"Provide at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'\";\n if (!Object.keys(filter).length) {\n throw new Error(errorMsg);\n }\n const { intent, resultType, contextTypes, applicationNames } = filter;\n const existingValidContextTypes = contextTypes?.length;\n const existingValidApplicationNames = applicationNames?.length;\n if (!intent && !resultType && !existingValidContextTypes && !existingValidApplicationNames) {\n throw new Error(errorMsg);\n }\n }\n async getIntentsByHandler(handler) {\n intentHandlerDecoder.runWithException(handler);\n const result = await this.bridge.send(\"intents\", operations$5.getIntentsByHandler, handler, undefined, { includeOperationCheck: true });\n return result;\n }\n}\n\nconst Glue42CoreMessageTypes = {\n platformUnload: { name: \"platformUnload\" },\n transportSwitchRequest: { name: \"transportSwitchRequest\" },\n transportSwitchResponse: { name: \"transportSwitchResponse\" },\n getCurrentTransport: { name: \"getCurrentTransport\" },\n getCurrentTransportResponse: { name: \"getCurrentTransportResponse\" },\n checkPreferredLogic: { name: \"checkPreferredLogic\" },\n checkPreferredConnection: { name: \"checkPreferredConnection\" },\n checkPreferredLogicResponse: { name: \"checkPreferredLogicResponse\" },\n checkPreferredConnectionResponse: { name: \"checkPreferredConnectionResponse\" }\n};\nconst webPlatformTransportName = \"web-platform\";\nconst latestFDC3Type = \"latest_fdc3_type\";\n\nconst operations$4 = {\n addChannel: { name: \"addChannel\", dataDecoder: channelContextDecoder },\n removeChannel: { name: \"removeChannel\", dataDecoder: removeChannelDataDecoder },\n getMyChannel: { name: \"getMyChannel\", resultDecoder: getMyChanelResultDecoder },\n getWindowIdsOnChannel: { name: \"getWindowIdsOnChannel\", dataDecoder: getWindowIdsOnChannelDataDecoder, resultDecoder: getWindowIdsOnChannelResultDecoder },\n getWindowIdsWithChannels: { name: \"getWindowIdsWithChannels\", dataDecoder: wrappedWindowWithChannelFilterDecoder, resultDecoder: getWindowIdsWithChannelsResultDecoder },\n joinChannel: { name: \"joinChannel\", dataDecoder: joinChannelDataDecoder },\n restrict: { name: \"restrict\", dataDecoder: restrictionConfigDataDecoder },\n getRestrictions: { name: \"getRestrictions\", dataDecoder: getRestrictionsDataDecoder, resultDecoder: restrictionsDecoder },\n restrictAll: { name: \"restrictAll\", dataDecoder: restrictAllDataDecoder }\n};\n\nclass ChannelsController {\n registry = CallbackRegistryFactory$1();\n logger;\n contexts;\n bridge;\n currentChannelName;\n windowsController;\n sessionController;\n unsubscribeFunc;\n GlueWebChannelsPrefix = \"___channel___\";\n SubsKey = \"subs\";\n ChangedKey = \"changed\";\n handlePlatformShutdown() {\n this.registry.clear();\n }\n addOperationsExecutors() {\n operations$4.getMyChannel.execute = this.handleGetMyChannel.bind(this);\n operations$4.joinChannel.execute = this.handleJoinChannel.bind(this);\n operations$4.restrict.execute = ({ config }) => this.restrict(config);\n operations$4.getRestrictions.execute = ({ windowId }) => this.getRestrictions(windowId);\n operations$4.restrictAll.execute = ({ restrictions }) => this.restrictAll(restrictions);\n }\n async start(coreGlue, ioc) {\n this.logger = coreGlue.logger.subLogger(\"channels.controller.web\");\n this.logger.trace(\"starting the web channels controller\");\n this.contexts = coreGlue.contexts;\n this.addOperationsExecutors();\n this.bridge = ioc.bridge;\n this.windowsController = ioc.windowsController;\n this.sessionController = ioc.sessionController;\n this.logger.trace(\"no need for platform registration, attaching the channels property to glue and returning\");\n const api = this.toApi();\n coreGlue.channels = api;\n }\n async handleBridgeMessage(args) {\n const operationName = channelsOperationTypesDecoder.runWithException(args.operation);\n const operation = operations$4[operationName];\n if (!operation.execute) {\n return;\n }\n let operationData = args.data;\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n return await operation.execute(operationData);\n }\n async list() {\n const channelNames = this.getAllChannelNames();\n const channelContexts = await Promise.all(channelNames.map((channelName) => this.get(channelName)));\n return channelContexts;\n }\n my() {\n return this.current();\n }\n async handleGetMyChannel() {\n const channel = this.my();\n return channel ? { channel } : {};\n }\n async join(name, windowId) {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n optionalNonEmptyStringDecoder.runWithException(windowId);\n if (!windowId || windowId === this.windowsController.my().id) {\n await this.switchToChannel(name);\n }\n else {\n await this.bridge.send(\"channels\", operations$4.joinChannel, { channel: name, windowId }, undefined, { includeOperationCheck: true });\n }\n }\n handleJoinChannel({ channel, windowId }) {\n return this.join(channel, windowId);\n }\n onChanged(callback) {\n return this.changed(callback);\n }\n async leave() {\n await this.switchToChannel();\n }\n toApi() {\n const api = {\n subscribe: this.subscribe.bind(this),\n subscribeFor: this.subscribeFor.bind(this),\n publish: this.publish.bind(this),\n all: this.all.bind(this),\n list: this.list.bind(this),\n get: this.get.bind(this),\n join: this.join.bind(this),\n leave: this.leave.bind(this),\n current: this.current.bind(this),\n my: this.my.bind(this),\n changed: this.changed.bind(this),\n onChanged: this.onChanged.bind(this),\n add: this.add.bind(this),\n remove: this.remove.bind(this),\n getMy: this.getMy.bind(this),\n getWindowsOnChannel: this.getWindowsOnChannel.bind(this),\n getWindowsWithChannels: this.getWindowsWithChannels.bind(this),\n restrict: this.restrict.bind(this),\n getRestrictions: this.getRestrictions.bind(this),\n restrictAll: this.restrictAll.bind(this)\n };\n return Object.freeze(api);\n }\n createContextName(channelName) {\n return `${this.GlueWebChannelsPrefix}${channelName}`;\n }\n getAllChannelNames() {\n const contextNames = this.contexts.all();\n const channelContextNames = contextNames.filter((contextName) => contextName.startsWith(this.GlueWebChannelsPrefix));\n const channelNames = channelContextNames.map((channelContextName) => channelContextName.replace(this.GlueWebChannelsPrefix, \"\"));\n return channelNames;\n }\n unsubscribe() {\n if (this.unsubscribeFunc) {\n this.unsubscribeFunc();\n this.unsubscribeFunc = undefined;\n }\n }\n async switchToChannel(name) {\n this.unsubscribe();\n this.currentChannelName = name;\n if (typeof name !== \"undefined\") {\n const contextName = this.createContextName(name);\n this.unsubscribeFunc = await this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\n this.registry.execute(this.SubsKey, context.data, context, extraData?.updaterId);\n });\n }\n this.registry.execute(this.ChangedKey, name);\n this.sessionController.setWindowData({ currentName: name }, \"channels\");\n }\n async updateData(name, data) {\n const contextName = this.createContextName(name);\n const fdc3Type = this.getFDC3Type(data);\n if (this.contexts.setPathSupported) {\n const pathValues = Object.keys(data).map((key) => {\n return {\n path: `data.${key}`,\n value: data[key]\n };\n });\n if (fdc3Type) {\n pathValues.push({ path: latestFDC3Type, value: fdc3Type });\n }\n await this.contexts.setPaths(contextName, pathValues);\n }\n else {\n if (fdc3Type) {\n data[latestFDC3Type] = fdc3Type;\n }\n await this.contexts.update(contextName, { data });\n }\n }\n getFDC3Type(data) {\n const fdc3PropsArr = Object.keys(data).filter((key) => key.indexOf(\"fdc3_\") === 0);\n if (fdc3PropsArr.length === 0) {\n return;\n }\n if (fdc3PropsArr.length > 1) {\n throw new Error(\"FDC3 does not support updating of multiple context keys\");\n }\n return fdc3PropsArr[0].split(\"_\").slice(1).join(\"_\");\n }\n subscribe(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to channels, because the provided callback is not a function!\");\n }\n const currentChannel = this.current();\n const wrappedCallback = this.getWrappedCallbackWithPermissionCheck(callback);\n if (currentChannel) {\n this.replaySubscribe(wrappedCallback, currentChannel);\n }\n return this.registry.add(this.SubsKey, wrappedCallback);\n }\n async subscribeFor(name, callback) {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n if (typeof callback !== \"function\") {\n throw new Error(`Cannot subscribe to channel ${name}, because the provided callback is not a function!`);\n }\n const contextName = this.createContextName(name);\n const wrappedCallback = this.getWrappedCallbackWithPermissionCheck(callback);\n return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\n wrappedCallback(context.data, context, extraData?.updaterId);\n });\n }\n publish(data, name) {\n if (typeof data !== \"object\") {\n throw new Error(\"Cannot publish to channel, because the provided data is not an object!\");\n }\n if (typeof name !== \"undefined\") {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n }\n const channelName = name || this.currentChannelName;\n if (!channelName) {\n throw new Error(\"Cannot publish to channel, because not joined to a channel!\");\n }\n const canPublish = this.isAllowedByRestrictions(channelName, \"write\");\n if (!canPublish) {\n throw new Error(`Cannot publish on channel ${channelName} due to restrictions`);\n }\n return this.updateData(channelName, data);\n }\n async all() {\n const channelNames = this.getAllChannelNames();\n return channelNames;\n }\n async get(name) {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n const contextName = this.createContextName(name);\n const channelContext = await this.contexts.get(contextName);\n if (channelContext.latest_fdc3_type) {\n const { latest_fdc3_type, ...rest } = channelContext;\n return { ...rest };\n }\n return channelContext;\n }\n current() {\n return this.currentChannelName;\n }\n changed(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to channel changed, because the provided callback is not a function!\");\n }\n return this.registry.add(this.ChangedKey, callback);\n }\n async add(info) {\n const channelContext = channelContextDecoder.runWithException(info);\n const channelWithSuchNameExists = this.getAllChannelNames().includes(channelContext.name);\n if (channelWithSuchNameExists) {\n throw new Error(\"There's an already existing channel with such name\");\n }\n await this.bridge.send(\"channels\", operations$4.addChannel, channelContext);\n return channelContext;\n }\n async remove(name) {\n nonEmptyStringDecoder.runWithException(name);\n const channelWithSuchNameExists = this.getAllChannelNames().includes(name);\n if (!channelWithSuchNameExists) {\n throw new Error(\"There's no channel with such name\");\n }\n await this.bridge.send(\"channels\", operations$4.removeChannel, { name }, undefined, { includeOperationCheck: true });\n }\n replaySubscribe = (callback, channelId) => {\n this.get(channelId)\n .then((channelContext) => {\n if (typeof channelContext.data === \"object\" && Object.keys(channelContext.data).length) {\n const contextName = this.createContextName(channelContext.name);\n return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\n callback(context.data, context, extraData?.updaterId);\n });\n }\n return undefined;\n })\n .then((un) => {\n if (un && typeof un === \"function\") {\n un();\n }\n })\n .catch(err => this.logger.trace(err));\n };\n async getMy() {\n if (!this.currentChannelName) {\n return;\n }\n return this.get(this.currentChannelName);\n }\n async getWindowsOnChannel(channel) {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(channel);\n const { windowIds } = await this.bridge.send(\"channels\", operations$4.getWindowIdsOnChannel, { channel }, undefined, { includeOperationCheck: true });\n const result = windowIds.reduce((windows, windowId) => {\n const window = this.windowsController.findById(windowId);\n return window ? [...windows, window] : windows;\n }, []);\n return result;\n }\n async getWindowsWithChannels(filter) {\n const operationData = filter !== undefined\n ? { filter: windowWithChannelFilterDecoder.runWithException(filter) }\n : {};\n const { windowIdsWithChannels } = await this.bridge.send(\"channels\", operations$4.getWindowIdsWithChannels, operationData, undefined, { includeOperationCheck: true });\n const result = windowIdsWithChannels.reduce((windowsWithChannels, { application, channel, windowId }) => {\n const window = this.windowsController.findById(windowId);\n return window ? [...windowsWithChannels, { application, channel, window }] : windowsWithChannels;\n }, []);\n return result;\n }\n async restrict(config) {\n channelRestrictionsDecoder.runWithException(config);\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(config.name);\n const forAnotherClient = config.windowId && config.windowId !== this.windowsController.my().id;\n if (forAnotherClient) {\n return this.bridge.send(\"channels\", operations$4.restrict, { config }, undefined, { includeOperationCheck: true });\n }\n const sessionStorageData = this.sessionController.getWindowData();\n const restrictions = sessionStorageData?.restrictions ? { ...sessionStorageData.restrictions, [config.name]: config } : { [config.name]: config };\n const currentChannel = await this.getMy();\n const prevReadAllowed = this.checkPreviousReadAllowed(currentChannel?.name);\n this.sessionController.setWindowData(restrictions, \"restrictions\");\n if (!currentChannel || prevReadAllowed || !config.read || currentChannel.name !== config.name) {\n return;\n }\n this.replaySubscribeCallback(config.name);\n }\n async getRestrictions(windowId) {\n optionalNonEmptyStringDecoder.runWithException(windowId);\n if (!windowId || windowId === this.windowsController.my().id) {\n return this.getMyRestrictions();\n }\n return this.bridge.send(\"channels\", operations$4.getRestrictions, { windowId }, undefined, { includeOperationCheck: true });\n }\n async restrictAll(restrictions) {\n restrictionsConfigDecoder.runWithException(restrictions);\n const allChannelNames = this.getAllChannelNames();\n const forAnotherClient = restrictions.windowId && restrictions.windowId !== this.windowsController.my().id;\n if (forAnotherClient) {\n return this.bridge.send(\"channels\", operations$4.restrictAll, { restrictions }, undefined, { includeOperationCheck: true });\n }\n const allRestrictions = {};\n allChannelNames.forEach((name) => {\n allRestrictions[name] = { ...restrictions, name };\n });\n const currentChannel = await this.getMy();\n const prevReadAllowed = this.checkPreviousReadAllowed(currentChannel?.name);\n this.sessionController.setWindowData(allRestrictions, \"restrictions\");\n if (!currentChannel || prevReadAllowed || !restrictions.read) {\n return;\n }\n this.replaySubscribeCallback(currentChannel.name);\n }\n isAllowedByRestrictions(channelName, action) {\n const { channels } = this.getMyRestrictions();\n if (!channels?.length) {\n return true;\n }\n const restriction = channels.find((restriction) => restriction.name === channelName);\n return restriction ? restriction[action] : true;\n }\n getMyRestrictions() {\n const sessionStorageData = this.sessionController.getWindowData();\n const restrictions = Object.values(sessionStorageData?.restrictions || {});\n return { channels: restrictions };\n }\n getWrappedCallbackWithPermissionCheck(callback) {\n const wrappedCallback = (data, context, updaterId) => {\n const canRead = this.isAllowedByRestrictions(context.name, \"read\");\n if (!canRead) {\n return;\n }\n callback(data, context, updaterId);\n };\n return wrappedCallback;\n }\n replaySubscribeCallback(channelName) {\n const contextName = this.createContextName(channelName);\n this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\n this.registry.execute(this.SubsKey, context.data, context, extraData?.updaterId);\n }).then((unsub) => {\n if (unsub && typeof unsub === \"function\") {\n unsub();\n }\n }).catch(err => this.logger.error(err));\n }\n checkPreviousReadAllowed(channelName) {\n if (!channelName) {\n return true;\n }\n const prevRestrictions = this.sessionController.getWindowData().restrictions;\n if (!prevRestrictions?.[channelName]) {\n return true;\n }\n return prevRestrictions[channelName].read;\n }\n}\n\nconst operations$3 = {\n getEnvironment: { name: \"getEnvironment\", resultDecoder: anyDecoder },\n getBase: { name: \"getBase\", resultDecoder: anyDecoder },\n platformShutdown: { name: \"platformShutdown\" }\n};\n\nclass SystemController {\n bridge;\n ioc;\n async start(coreGlue, ioc) {\n this.bridge = ioc.bridge;\n this.ioc = ioc;\n this.addOperationsExecutors();\n await this.setEnvironment();\n }\n async handleBridgeMessage(args) {\n const operationName = systemOperationTypesDecoder.runWithException(args.operation);\n const operation = operations$3[operationName];\n if (!operation.execute) {\n return;\n }\n let operationData = args.data;\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n return await operation.execute(operationData);\n }\n async processPlatformShutdown() {\n Object.values(this.ioc.controllers).forEach((controller) => controller.handlePlatformShutdown ? controller.handlePlatformShutdown() : null);\n this.ioc.preferredConnectionController.stop();\n this.ioc.eventsDispatcher.stop();\n await this.bridge.stop();\n }\n async setEnvironment() {\n const environment = await this.bridge.send(\"system\", operations$3.getEnvironment, undefined);\n const base = await this.bridge.send(\"system\", operations$3.getBase, undefined);\n const globalNamespace = window.glue42core || window.iobrowser;\n const globalNamespaceName = window.glue42core ? \"glue42core\" : \"iobrowser\";\n const globalObj = Object.assign({}, globalNamespace, base, { environment });\n window[globalNamespaceName] = Object.freeze(globalObj);\n }\n addOperationsExecutors() {\n operations$3.platformShutdown.execute = this.processPlatformShutdown.bind(this);\n }\n}\n\nclass Notification {\n onclick = () => { };\n onshow = () => { };\n id;\n title;\n badge;\n body;\n data;\n dir;\n icon;\n image;\n lang;\n renotify;\n requireInteraction;\n silent;\n tag;\n timestamp;\n vibrate;\n clickInterop;\n actions;\n focusPlatformOnDefaultClick;\n severity;\n showToast;\n showInPanel;\n state;\n constructor(config, id) {\n this.id = id;\n this.badge = config.badge;\n this.body = config.body;\n this.data = config.data;\n this.dir = config.dir;\n this.icon = config.icon;\n this.image = config.image;\n this.lang = config.lang;\n this.renotify = config.renotify;\n this.requireInteraction = config.requireInteraction;\n this.silent = config.silent;\n this.tag = config.tag;\n this.timestamp = config.timestamp;\n this.vibrate = config.vibrate;\n this.title = config.title;\n this.clickInterop = config.clickInterop;\n this.actions = config.actions;\n this.focusPlatformOnDefaultClick = config.focusPlatformOnDefaultClick;\n this.severity = config.severity;\n this.showToast = config.showToast;\n this.showInPanel = config.showInPanel;\n this.state = config.state;\n }\n}\n\noneOf$1(constant$1(\"clientHello\"));\nconst extensionConfigDecoder = object$1({\n widget: object$1({\n inject: boolean$1()\n })\n});\n\nconst operations$2 = {\n clientHello: { name: \"clientHello\", resultDecoder: extensionConfigDecoder }\n};\n\nclass ExtController {\n windowId;\n logger;\n bridge;\n eventsDispatcher;\n channelsController;\n config;\n channels = [];\n unsubFuncs = [];\n contentCommands = {\n widgetVisualizationPermission: { name: \"widgetVisualizationPermission\", handle: this.handleWidgetVisualizationPermission.bind(this) },\n changeChannel: { name: \"changeChannel\", handle: this.handleChangeChannel.bind(this) }\n };\n handlePlatformShutdown() {\n this.unsubFuncs.forEach((unsub) => unsub());\n this.channels = [];\n this.unsubFuncs = [];\n }\n async start(coreGlue, ioc) {\n this.logger = coreGlue.logger.subLogger(\"extension.controller.web\");\n this.windowId = ioc.publicWindowId;\n this.logger.trace(\"starting the extension web controller\");\n this.bridge = ioc.bridge;\n this.channelsController = ioc.channelsController;\n this.eventsDispatcher = ioc.eventsDispatcher;\n try {\n await this.registerWithPlatform();\n }\n catch (error) {\n return;\n }\n this.channels = await this.channelsController.list();\n const unsubDispatcher = this.eventsDispatcher.onContentMessage(this.handleContentMessage.bind(this));\n const unsubChannels = this.channelsController.onChanged((channel) => {\n this.eventsDispatcher.sendContentMessage({ command: \"channelChange\", newChannel: channel });\n });\n this.unsubFuncs.push(unsubDispatcher);\n this.unsubFuncs.push(unsubChannels);\n }\n async handleBridgeMessage(_) {\n }\n handleContentMessage(message) {\n if (!message || typeof message.command !== \"string\") {\n return;\n }\n const foundHandler = this.contentCommands[message.command];\n if (!foundHandler) {\n return;\n }\n foundHandler.handle(message);\n }\n async registerWithPlatform() {\n this.logger.trace(\"registering with the platform\");\n this.config = await this.bridge.send(\"extension\", operations$2.clientHello, { windowId: this.windowId });\n this.logger.trace(\"the platform responded to the hello message with a valid extension config\");\n }\n async handleWidgetVisualizationPermission() {\n if (!this.config?.widget.inject) {\n return this.eventsDispatcher.sendContentMessage({ command: \"permissionResponse\", allowed: false });\n }\n const currentChannel = this.channels.find((channel) => channel.name === this.channelsController.my());\n this.eventsDispatcher.sendContentMessage({ command: \"permissionResponse\", allowed: true, channels: this.channels, currentChannel });\n }\n async handleChangeChannel(message) {\n if (message.name === \"no-channel\") {\n await this.channelsController.leave();\n return;\n }\n await this.channelsController.join(message.name);\n }\n}\n\nclass EventsDispatcher {\n config;\n glue;\n registry = CallbackRegistryFactory$1();\n glue42EventName = \"Glue42\";\n _handleMessage;\n constructor(config) {\n this.config = config;\n }\n events = {\n notifyStarted: { name: \"notifyStarted\", handle: this.handleNotifyStarted.bind(this) },\n contentInc: { name: \"contentInc\", handle: this.handleContentInc.bind(this) },\n requestGlue: { name: \"requestGlue\", handle: this.handleRequestGlue.bind(this) }\n };\n stop() {\n window.removeEventListener(this.glue42EventName, this._handleMessage);\n }\n start(glue) {\n this.glue = glue;\n this.wireCustomEventListener();\n this.announceStarted();\n }\n sendContentMessage(message) {\n this.send(\"contentOut\", \"glue42core\", message);\n }\n onContentMessage(callback) {\n return this.registry.add(\"content-inc\", callback);\n }\n wireCustomEventListener() {\n this._handleMessage = this.handleMessage.bind(this);\n window.addEventListener(this.glue42EventName, this._handleMessage);\n }\n handleMessage(event) {\n const data = event.detail;\n const namespace = data?.glue42 ?? data?.glue42core;\n if (!namespace) {\n return;\n }\n const glue42Event = namespace.event;\n const foundHandler = this.events[glue42Event];\n if (!foundHandler) {\n return;\n }\n foundHandler.handle(namespace.message);\n }\n announceStarted() {\n this.send(\"start\", \"glue42\");\n }\n handleRequestGlue() {\n if (!this.config.exposeAPI) {\n this.send(\"requestGlueResponse\", \"glue42\", { error: \"Will not give access to the underlying Glue API, because it was explicitly denied upon initialization.\" });\n return;\n }\n this.send(\"requestGlueResponse\", \"glue42\", { glue: this.glue });\n }\n handleNotifyStarted() {\n this.announceStarted();\n }\n handleContentInc(message) {\n this.registry.execute(\"content-inc\", message);\n }\n send(eventName, namespace, message) {\n const payload = {};\n payload[namespace] = { event: eventName, message };\n const event = new CustomEvent(this.glue42EventName, { detail: payload });\n window.dispatchEvent(event);\n }\n}\n\nclass PreferredConnectionController {\n coreGlue;\n transactionTimeout = 15000;\n transactionLocks = {};\n webPlatformTransport;\n webPlatformMessagesUnsubscribe;\n reconnectCounter = 0;\n logger;\n constructor(coreGlue) {\n this.coreGlue = coreGlue;\n this.logger = this.coreGlue.logger.subLogger(\"web.preferred.connection.controller\");\n }\n stop() {\n if (!this.webPlatformMessagesUnsubscribe) {\n return;\n }\n this.webPlatformMessagesUnsubscribe();\n }\n async start(coreConfig) {\n if (coreConfig.isPlatformInternal) {\n this.logger.trace(\"This is an internal client to the platform, skipping all client preferred communication logic.\");\n return;\n }\n const isConnectedToPlatform = this.coreGlue.connection.transport.name() === webPlatformTransportName;\n if (!isConnectedToPlatform) {\n throw new Error(\"Cannot initiate the Glue Web Bridge, because the initial connection was not handled by a Web Platform transport.\");\n }\n if (!this.coreGlue.connection.transport.isPreferredActivated) {\n this.logger.trace(\"The platform of this client was configured without a preferred connection, skipping the rest of the initialization.\");\n return;\n }\n this.webPlatformTransport = this.coreGlue.connection.transport;\n this.webPlatformMessagesUnsubscribe = this.webPlatformTransport.onMessage(this.handleWebPlatformMessage.bind(this));\n const transportState = await this.getCurrentPlatformTransportState();\n await this.checkSwitchTransport(transportState);\n }\n handleWebPlatformMessage(msg) {\n if (typeof msg === \"string\") {\n return;\n }\n const isConnectedToPlatform = this.coreGlue.connection.transport.name() === webPlatformTransportName;\n const type = msg.type;\n const args = msg.args;\n const transactionId = msg.transactionId;\n if (type === Glue42CoreMessageTypes.transportSwitchRequest.name) {\n return this.handleTransportSwitchRequest(args, transactionId);\n }\n if (type === Glue42CoreMessageTypes.platformUnload.name && !isConnectedToPlatform) {\n return this.handlePlatformUnload();\n }\n if (type === Glue42CoreMessageTypes.getCurrentTransportResponse.name) {\n return this.handleGetCurrentTransportResponse(args, transactionId);\n }\n if (type === Glue42CoreMessageTypes.checkPreferredLogic.name) {\n return this.handleCheckPreferredLogic(transactionId);\n }\n if (type === Glue42CoreMessageTypes.checkPreferredConnection.name) {\n return this.handleCheckPreferredConnection(args, transactionId);\n }\n }\n async reEstablishPlatformPort() {\n try {\n await this.webPlatformTransport.connect();\n }\n catch (error) {\n this.logger.trace(`Error when re-establishing port connection to the platform: ${JSON.stringify(error)}`);\n --this.reconnectCounter;\n if (this.reconnectCounter > 0) {\n return this.reEstablishPlatformPort();\n }\n this.logger.warn(\"This client lost connection to the platform while connected to a preferred GW and was not able to re-connect to the platform.\");\n }\n this.logger.trace(\"The connection to the platform was re-established, closing the connection to the web gateway.\");\n this.reconnectCounter = 0;\n this.webPlatformTransport.close();\n const transportState = await this.getCurrentPlatformTransportState();\n await this.checkSwitchTransport(transportState);\n }\n async checkSwitchTransport(config) {\n const myCurrentTransportName = this.coreGlue.connection.transport.name();\n if (myCurrentTransportName === config.transportName) {\n this.logger.trace(\"A check switch was requested, but the platform transport and my transport are identical, no switch is necessary\");\n return;\n }\n this.logger.trace(`A check switch was requested and a transport switch is necessary, because this client is now on ${myCurrentTransportName}, but it should reconnect to ${JSON.stringify(config)}`);\n const result = await this.coreGlue.connection.switchTransport(config);\n this.setConnected();\n this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`);\n }\n async getCurrentPlatformTransportState() {\n this.logger.trace(\"Requesting the current transport state of the platform.\");\n const transaction = this.setTransaction(Glue42CoreMessageTypes.getCurrentTransport.name);\n this.sendPlatformMessage(Glue42CoreMessageTypes.getCurrentTransport.name, transaction.id);\n const transportState = await transaction.lock;\n this.logger.trace(`The platform responded with transport state: ${JSON.stringify(transportState)}`);\n return transportState;\n }\n setTransaction(operation) {\n const transaction = {};\n const transactionId = nanoid$1(10);\n const transactionLock = new Promise((resolve, reject) => {\n let transactionLive = true;\n transaction.lift = (args) => {\n transactionLive = false;\n delete this.transactionLocks[transactionId];\n resolve(args);\n };\n transaction.fail = (reason) => {\n transactionLive = false;\n delete this.transactionLocks[transactionId];\n reject(reason);\n };\n setTimeout(() => {\n if (!transactionLive) {\n return;\n }\n transactionLive = false;\n this.logger.warn(`Transaction for operation: ${operation} timed out.`);\n delete this.transactionLocks[transactionId];\n reject(`Transaction for operation: ${operation} timed out.`);\n }, this.transactionTimeout);\n });\n transaction.lock = transactionLock;\n transaction.id = transactionId;\n this.transactionLocks[transactionId] = transaction;\n return transaction;\n }\n sendPlatformMessage(type, transactionId, args) {\n this.logger.trace(`Sending a platform message of type: ${type}, id: ${transactionId} and args: ${JSON.stringify(args)}`);\n this.webPlatformTransport.sendObject({\n glue42core: { type, args, transactionId }\n });\n }\n handleTransportSwitchRequest(args, transactionId) {\n this.logger.trace(`Received a transport switch request with id: ${transactionId} and data: ${JSON.stringify(args)}`);\n this.coreGlue.connection.switchTransport(args.switchSettings)\n .then((result) => {\n this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`);\n this.setConnected();\n this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: result.success });\n })\n .catch((error) => {\n this.logger.error(error);\n this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: false });\n });\n }\n handlePlatformUnload() {\n this.reconnectCounter = 5;\n this.logger.trace(\"The platform was unloaded while I am connected to a preferred connection, re-establishing the port connection.\");\n this.reEstablishPlatformPort();\n }\n handleGetCurrentTransportResponse(args, transactionId) {\n this.logger.trace(`Got a current transport response from the platform with id: ${transactionId} and data: ${JSON.stringify(args)}`);\n const transportState = args.transportState;\n const transaction = this.transactionLocks[transactionId];\n transaction?.lift(transportState);\n }\n handleCheckPreferredLogic(transactionId) {\n setTimeout(() => this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredLogicResponse.name, transactionId), 0);\n }\n handleCheckPreferredConnection(args, transactionId) {\n const url = args.url;\n this.logger.trace(`Testing the possible connection to: ${url}`);\n this.checkPreferredConnection(url)\n .then((result) => {\n this.logger.trace(`The connection to ${url} is possible`);\n this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, result);\n })\n .catch((error) => {\n this.logger.trace(`The connection to ${url} is not possible`);\n this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, { error });\n });\n }\n checkPreferredConnection(url) {\n return new Promise((resolve) => {\n const ws = new WebSocket(url);\n ws.onerror = () => resolve({ live: false });\n ws.onopen = () => {\n ws.close();\n resolve({ live: true });\n };\n });\n }\n setConnected() {\n this.webPlatformTransport.manualSetReadyState();\n }\n}\n\nclass LegacyIntentsHelper {\n bridge;\n interop;\n appManagerController;\n windowsController;\n logger;\n intentsResolverResponsePromises = {};\n constructor(logger, bridge, interop, appManagerController, windowsController) {\n this.bridge = bridge;\n this.interop = interop;\n this.appManagerController = appManagerController;\n this.windowsController = windowsController;\n this.logger = this.configureLogger(logger);\n }\n async raise(requestWithResolverInfo, findIntentFn) {\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\n const intent = (await findIntentFn(intentRequest.intent)).find(intent => intent.name === intentRequest.intent);\n if (!intent) {\n throw new Error(`Intent with name ${intentRequest.intent} not found`);\n }\n const { open, reason } = this.checkIfResolverShouldBeOpened(intent, intentRequest, resolverConfig);\n if (!open) {\n this.logger?.trace(`Intent Resolver UI won't be used. Reason: ${reason}`);\n return this.invokeRaiseIntent(intentRequest);\n }\n const intentResult = await this.raiseIntentWithResolverApp(requestWithResolverInfo);\n return intentResult;\n }\n configureLogger(loggerInst) {\n return loggerInst.subLogger(\"intents.legacy.helper.web\");\n }\n async raiseIntentWithResolverApp(requestWithResolverInfo) {\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\n this.logger.trace(`Intents Resolver UI with app name ${resolverConfig.appName} will be used`);\n const responseMethodName = await this.registerResponseMethod();\n this.logger.trace(`Registered interop method ${responseMethodName}`);\n const resolverInstance = await this.openIntentResolverApplication(requestWithResolverInfo, responseMethodName);\n this.logger.trace(`Intents Resolver Instance with id ${resolverInstance.id} opened`);\n const handler = await this.handleInstanceResponse(resolverInstance.id);\n const target = handler.type === \"app\"\n ? { app: handler.applicationName }\n : { instance: handler.instanceId };\n this.logger.trace(`Intent handler chosen by the user: ${JSON.stringify(target)}`);\n const intentResult = await this.invokeRaiseIntent({ ...intentRequest, target });\n return intentResult;\n }\n async handleInstanceResponse(instanceId) {\n try {\n const { handler, intent } = await this.intentsResolverResponsePromises[instanceId].promise;\n this.logger?.trace(`Intent handler chosen for intent ${intent}: ${JSON.stringify(handler)}`);\n this.stopResolverInstance(instanceId);\n return handler;\n }\n catch (error) {\n this.stopResolverInstance(instanceId);\n throw new Error(error);\n }\n }\n invokeRaiseIntent(requestObj) {\n return this.bridge.send(\"intents\", operations$5.raiseIntent, requestObj);\n }\n async registerResponseMethod() {\n const methodName = INTENTS_RESOLVER_INTEROP_PREFIX + nanoid$1(10);\n await this.interop.register(methodName, this.resolverResponseHandler.bind(this));\n return methodName;\n }\n async openIntentResolverApplication(requestWithResolverInfo, methodName) {\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\n const startContext = this.buildStartContext(intentRequest, methodName);\n const startOptions = await this.buildStartOptions();\n this.logger.trace(`Starting Intents Resolver UI with context: ${JSON.stringify(startContext)} and options: ${startOptions}`);\n const instance = await this.appManagerController.getApplication(resolverConfig.appName).start(startContext, startOptions);\n this.logger.trace(`Intents Resolver instance with id ${instance.id} opened`);\n this.subscribeOnInstanceStopped(instance);\n this.createResponsePromise(intentRequest.intent, instance.id, methodName, resolverConfig.waitResponseTimeout);\n return instance;\n }\n async cleanUpIntentResolverPromise(instanceId) {\n const intentPromise = this.intentsResolverResponsePromises[instanceId];\n if (!intentPromise) {\n return;\n }\n const unregisterPromise = this.interop.unregister(intentPromise.methodName);\n unregisterPromise.catch((error) => this.logger.warn(error));\n delete this.intentsResolverResponsePromises[instanceId];\n }\n buildStartContext(requestObj, methodName) {\n return {\n intent: requestObj,\n callerId: this.interop.instance.instance,\n methodName\n };\n }\n async buildStartOptions() {\n const bounds = await this.getTargetBounds();\n return {\n top: (bounds.height - INTENTS_RESOLVER_HEIGHT) / 2 + bounds.top,\n left: (bounds.width - INTENTS_RESOLVER_WIDTH) / 2 + bounds.left,\n width: INTENTS_RESOLVER_WIDTH,\n height: INTENTS_RESOLVER_HEIGHT\n };\n }\n async getTargetBounds() {\n const bounds = await this.tryGetWindowBasedBounds() || await this.tryGetWorkspaceBasedBounds();\n if (bounds) {\n this.logger.trace(`Opening Intents Resolver UI with bounds: ${JSON.stringify(bounds)}`);\n return bounds;\n }\n const defaultBounds = {\n top: window.screen.availTop || 0,\n left: window.screen.availLeft || 0,\n width: window.screen.width,\n height: window.screen.height\n };\n this.logger.trace(`Opening Intents Resolver UI relative to my screen bounds: ${JSON.stringify(defaultBounds)}`);\n return defaultBounds;\n }\n async tryGetWindowBasedBounds() {\n try {\n const myWindowBounds = await this.windowsController.my().getBounds();\n this.logger.trace(`Opening the resolver UI relative to my window bounds: ${JSON.stringify(myWindowBounds)}`);\n return myWindowBounds;\n }\n catch (error) {\n this.logger.trace(`Failure to get my window bounds: ${JSON.stringify(error)}`);\n }\n return undefined;\n }\n async tryGetWorkspaceBasedBounds() {\n try {\n await this.bridge.send(\"workspaces\", systemOperations.operationCheck, { operation: \"getWorkspaceWindowFrameBounds\" });\n const bridgeResponse = await this.bridge.send(\"workspaces\", systemOperations.getWorkspaceWindowFrameBounds, { itemId: this.windowsController.my().id });\n const myWorkspaceBounds = bridgeResponse.bounds;\n this.logger.trace(`Opening the resolver UI relative to my workspace frame window bounds: ${JSON.stringify(myWorkspaceBounds)}`);\n return myWorkspaceBounds;\n }\n catch (error) {\n this.logger.trace(`Failure to get my workspace frame window bounds: ${JSON.stringify(error)}`);\n }\n return undefined;\n }\n subscribeOnInstanceStopped(instance) {\n const { application } = instance;\n const unsub = application.onInstanceStopped((inst) => {\n if (inst.id !== instance.id) {\n return;\n }\n const intentPromise = this.intentsResolverResponsePromises[inst.id];\n if (!intentPromise) {\n return unsub();\n }\n intentPromise.reject(`Cannot resolve raised intent \"${intentPromise.intent}\" - User closed ${application.name} app without choosing an intent handler`);\n this.cleanUpIntentResolverPromise(inst.id);\n unsub();\n });\n }\n createResponsePromise(intent, instanceId, methodName, timeout) {\n let resolve = () => { };\n let reject = () => { };\n const promise = PromisePlus$1((res, rej) => {\n resolve = res;\n reject = rej;\n }, timeout, `Timeout of ${timeout}ms hit waiting for the user to choose a handler for intent ${intent}`);\n this.intentsResolverResponsePromises[instanceId] = { intent, resolve, reject, promise, methodName };\n }\n resolverResponseHandler(args, callerId) {\n const response = intentResolverResponseDecoder.run(args);\n const instanceId = callerId.instance;\n if (response.ok) {\n this.logger.trace(`Intent Resolver instance with id ${instanceId} send a valid response: ${JSON.stringify(response.result)}`);\n return this.intentsResolverResponsePromises[instanceId].resolve(response.result);\n }\n this.logger.trace(`Intent Resolver instance with id ${instanceId} sent an invalid response. Error: ${JSON.stringify(response.error)}`);\n this.intentsResolverResponsePromises[instanceId].reject(response.error.message);\n this.stopResolverInstance(instanceId);\n }\n stopResolverInstance(instanceId) {\n const searchedInstance = this.appManagerController.getInstances().find((inst) => inst.id === instanceId);\n if (!searchedInstance) {\n return;\n }\n searchedInstance.stop().catch(err => this.logger.error(err));\n }\n checkIfIntentHasMoreThanOneHandler(intent, request) {\n if (typeof request.target === \"object\") {\n return false;\n }\n return request.handlers ? request.handlers.length > 1 : intent.handlers.length > 1;\n }\n checkIfResolverShouldBeOpened(intent, intentRequest, resolverConfig) {\n if (!resolverConfig.enabled) {\n return { open: false, reason: \"Intent Resolver is disabled. Raising intent to first found handler\" };\n }\n const intentsResolverApp = this.appManagerController.getApplication(resolverConfig.appName);\n if (!intentsResolverApp) {\n return { open: false, reason: `Application with name ${resolverConfig.appName} not found` };\n }\n const hasMoreThanOneHandler = this.checkIfIntentHasMoreThanOneHandler(intent, intentRequest);\n if (!hasMoreThanOneHandler) {\n return { open: false, reason: \"Raised intent has only one handler\" };\n }\n return { open: true };\n }\n}\n\nconst operations$1 = {\n getCurrent: { name: \"getCurrent\", resultDecoder: simpleThemeResponseDecoder },\n list: { name: \"list\", resultDecoder: allThemesResponseDecoder },\n select: { name: \"select\", dataDecoder: selectThemeConfigDecoder }\n};\n\nclass ThemesController {\n logger;\n bridge;\n registry = CallbackRegistryFactory$1();\n themesSubscription;\n activeThemeSubs = 0;\n async start(coreGlue, ioc) {\n this.logger = coreGlue.logger.subLogger(\"themes.controller.web\");\n this.logger.trace(\"starting the web themes controller\");\n this.bridge = ioc.bridge;\n const api = this.toApi();\n coreGlue.themes = api;\n this.logger.trace(\"themes are ready\");\n }\n handlePlatformShutdown() {\n this.registry.clear();\n this.activeThemeSubs = 0;\n this.themesSubscription?.close();\n delete this.themesSubscription;\n }\n async handleBridgeMessage() {\n }\n toApi() {\n const api = {\n getCurrent: this.getCurrent.bind(this),\n list: this.list.bind(this),\n select: this.select.bind(this),\n onChanged: this.onChanged.bind(this)\n };\n return Object.freeze(api);\n }\n async getCurrent() {\n const bridgeResponse = await this.bridge.send(\"themes\", operations$1.getCurrent, undefined, undefined, { includeOperationCheck: true });\n return bridgeResponse.theme;\n }\n async list() {\n const bridgeResponse = await this.bridge.send(\"themes\", operations$1.list, undefined, undefined, { includeOperationCheck: true });\n return bridgeResponse.themes;\n }\n async select(name) {\n nonEmptyStringDecoder.runWithException(name);\n await this.bridge.send(\"themes\", operations$1.select, { name }, undefined, { includeOperationCheck: true });\n }\n async onChanged(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"onChanged requires a callback of type function\");\n }\n const subReady = this.themesSubscription ?\n Promise.resolve() :\n this.configureThemeSubscription();\n await subReady;\n ++this.activeThemeSubs;\n const unsubFunc = this.registry.add(\"on-theme-change\", callback);\n return () => this.themeUnsub(unsubFunc);\n }\n async configureThemeSubscription() {\n if (this.themesSubscription) {\n return;\n }\n this.themesSubscription = await this.bridge.createNotificationsSteam();\n this.themesSubscription.onData((data) => {\n const eventData = data.data;\n const validation = simpleThemeResponseDecoder.run(eventData);\n if (!validation.ok) {\n this.logger.warn(`Received invalid theme data on the theme event stream: ${JSON.stringify(validation.error)}`);\n return;\n }\n const themeChanged = validation.result;\n this.registry.execute(\"on-theme-change\", themeChanged.theme);\n });\n this.themesSubscription.onClosed(() => {\n this.logger.warn(\"The Themes interop stream was closed, no theme changes notifications will be received\");\n this.registry.clear();\n this.activeThemeSubs = 0;\n delete this.themesSubscription;\n });\n }\n themeUnsub(registryUnsub) {\n registryUnsub();\n --this.activeThemeSubs;\n if (this.activeThemeSubs) {\n return;\n }\n this.themesSubscription?.close();\n delete this.themesSubscription;\n }\n}\n\nclass SessionStorageController {\n sessionStorage = window.sessionStorage;\n windowId;\n get allNamespaces() {\n return [{ namespace: this.windowNamespace, defaultValue: {} }];\n }\n configure(config) {\n this.windowId = config.windowId;\n this.allNamespaces.forEach(({ namespace, defaultValue }) => {\n const data = this.sessionStorage.getItem(namespace);\n if (!data) {\n this.sessionStorage.setItem(namespace, JSON.stringify(defaultValue));\n }\n });\n }\n get windowNamespace() {\n return `io_connect_window_${this.windowId}`;\n }\n getWindowData() {\n return JSON.parse(this.sessionStorage.getItem(this.windowNamespace));\n }\n setWindowData(data, key) {\n const allData = this.getWindowData();\n allData[key] = data;\n this.sessionStorage.setItem(this.windowNamespace, JSON.stringify(allData));\n }\n}\n\nconst operations = {\n clear: { name: \"clear\", dataDecoder: basePrefsConfigDecoder },\n clearAll: { name: \"clearAll\" },\n get: { name: \"get\", dataDecoder: basePrefsConfigDecoder, resultDecoder: getPrefsResultDecoder },\n getAll: { name: \"getAll\", resultDecoder: getAllPrefsResultDecoder },\n set: { name: \"set\", dataDecoder: changePrefsDataDecoder },\n update: { name: \"update\", dataDecoder: changePrefsDataDecoder },\n prefsChanged: { name: \"prefsChanged\", dataDecoder: getPrefsResultDecoder },\n prefsHello: { name: \"prefsHello\", resultDecoder: prefsHelloSuccessDecoder },\n};\n\nclass PrefsController {\n bridge;\n config;\n logger;\n appManagerController;\n platformAppName;\n registry = CallbackRegistryFactory$1();\n handlePlatformShutdown() {\n this.registry.clear();\n }\n async start(coreGlue, ioc) {\n this.logger = coreGlue.logger.subLogger(\"prefs.controller.web\");\n this.logger.trace(\"starting the web prefs controller\");\n this.addOperationsExecutors();\n this.bridge = ioc.bridge;\n this.config = ioc.config;\n this.appManagerController = ioc.appManagerController;\n try {\n const prefsHelloSuccess = await this.bridge.send(\"prefs\", operations.prefsHello, undefined, undefined, { includeOperationCheck: true });\n this.platformAppName = prefsHelloSuccess.platform.app;\n }\n catch (error) {\n this.logger.warn(\"The platform of this client is outdated and does not support Prefs API.\");\n return;\n }\n this.logger.trace(\"no need for platform registration, attaching the prefs property to glue and returning\");\n const api = this.toApi();\n coreGlue.prefs = api;\n }\n async handleBridgeMessage(args) {\n const operationName = prefsOperationTypesDecoder.runWithException(args.operation);\n const operation = operations[operationName];\n if (!operation.execute) {\n return;\n }\n let operationData = args.data;\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n return await operation.execute(operationData);\n }\n addOperationsExecutors() {\n operations.prefsChanged.execute = this.handleOnChanged.bind(this);\n }\n toApi() {\n const api = {\n clear: this.clear.bind(this),\n clearAll: this.clearAll.bind(this),\n clearFor: this.clearFor.bind(this),\n get: this.get.bind(this),\n getAll: this.getAll.bind(this),\n set: this.set.bind(this),\n setFor: this.setFor.bind(this),\n subscribe: this.subscribe.bind(this),\n subscribeFor: this.subscribeFor.bind(this),\n update: this.update.bind(this),\n updateFor: this.updateFor.bind(this),\n };\n return api;\n }\n async clear() {\n const app = this.getMyAppName();\n await this.clearFor(app);\n }\n async clearAll() {\n await this.bridge.send(\"prefs\", operations.clearAll, undefined, undefined, { includeOperationCheck: true });\n }\n async clearFor(app) {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n await this.bridge.send(\"prefs\", operations.clear, { app: verifiedApp }, undefined, { includeOperationCheck: true });\n }\n async get(app) {\n const verifiedApp = app === undefined || app === null ? this.getMyAppName() : nonEmptyStringDecoder.runWithException(app);\n const { prefs } = await this.bridge.send(\"prefs\", operations.get, { app: verifiedApp }, undefined, { includeOperationCheck: true });\n return prefs;\n }\n async getAll() {\n const result = await this.bridge.send(\"prefs\", operations.getAll, undefined, undefined, { includeOperationCheck: true });\n return result;\n }\n async set(data, options) {\n const verifiedOptions = optional$1(basePrefsConfigDecoder).runWithException(options);\n const app = verifiedOptions?.app ?? this.getMyAppName();\n await this.setFor(app, data);\n }\n async setFor(app, data) {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n const verifiedData = object$1().runWithException(data);\n await this.bridge.send(\"prefs\", operations.set, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true });\n }\n subscribe(callback) {\n const app = this.getMyAppName();\n return this.subscribeFor(app, callback);\n }\n subscribeFor(app, callback) {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n const applications = this.appManagerController.getApplications();\n const isValidApp = verifiedApp === this.platformAppName || applications.some((application) => application.name === verifiedApp);\n if (!isValidApp) {\n throw new Error(`The provided app name \"${app}\" is not valid.`);\n }\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to prefs, because the provided callback is not a function!\");\n }\n const subscriptionKey = this.getSubscriptionKey(verifiedApp);\n this.get(verifiedApp).then(callback);\n return this.registry.add(subscriptionKey, callback);\n }\n async update(data, options) {\n const verifiedOptions = optional$1(basePrefsConfigDecoder).runWithException(options);\n const app = verifiedOptions?.app ?? this.getMyAppName();\n await this.updateFor(app, data);\n }\n async updateFor(app, data) {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n const verifiedData = object$1().runWithException(data);\n await this.bridge.send(\"prefs\", operations.update, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true });\n }\n getMyAppName() {\n const myAppName = this.config.isPlatformInternal ? this.platformAppName : this.appManagerController.me?.application.name;\n if (!myAppName) {\n throw new Error(\"App Preferences operations can not be executed for windows that do not have app!\");\n }\n return myAppName;\n }\n getSubscriptionKey(app) {\n return `prefs-changed-${app}`;\n }\n async handleOnChanged({ prefs }) {\n const subscriptionKey = this.getSubscriptionKey(prefs.app);\n this.registry.execute(subscriptionKey, prefs);\n }\n}\n\nclass IoC {\n _coreGlue;\n _communicationId;\n _publicWindowId;\n _webConfig;\n _windowsControllerInstance;\n _appManagerControllerInstance;\n _layoutsControllerInstance;\n _notificationsControllerInstance;\n _intentsControllerInstance;\n _legacyIntentsHelperInstance;\n _channelsControllerInstance;\n _themesControllerInstance;\n _extensionController;\n _systemControllerInstance;\n _bridgeInstance;\n _eventsDispatcher;\n _preferredConnectionController;\n _sessionController;\n _prefsControllerInstance;\n controllers = {\n windows: this.windowsController,\n appManager: this.appManagerController,\n layouts: this.layoutsController,\n notifications: this.notificationsController,\n intents: this.intentsController,\n channels: this.channelsController,\n system: this.systemController,\n extension: this.extensionController,\n themes: this.themesController,\n prefs: this.prefsController\n };\n get communicationId() {\n return this._communicationId;\n }\n get publicWindowId() {\n return this._publicWindowId;\n }\n get windowsController() {\n if (!this._windowsControllerInstance) {\n this._windowsControllerInstance = new WindowsController();\n }\n return this._windowsControllerInstance;\n }\n get appManagerController() {\n if (!this._appManagerControllerInstance) {\n this._appManagerControllerInstance = new AppManagerController();\n }\n return this._appManagerControllerInstance;\n }\n get layoutsController() {\n if (!this._layoutsControllerInstance) {\n this._layoutsControllerInstance = new LayoutsController();\n }\n return this._layoutsControllerInstance;\n }\n get themesController() {\n if (!this._themesControllerInstance) {\n this._themesControllerInstance = new ThemesController();\n }\n return this._themesControllerInstance;\n }\n get notificationsController() {\n if (!this._notificationsControllerInstance) {\n this._notificationsControllerInstance = new NotificationsController();\n }\n return this._notificationsControllerInstance;\n }\n get intentsController() {\n if (!this._intentsControllerInstance) {\n this._intentsControllerInstance = new IntentsController();\n }\n return this._intentsControllerInstance;\n }\n get legacyIntentsHelper() {\n if (!this._legacyIntentsHelperInstance) {\n this._legacyIntentsHelperInstance = new LegacyIntentsHelper(this._coreGlue.logger, this.bridge, this._coreGlue.interop, this.appManagerController, this.windowsController);\n }\n return this._legacyIntentsHelperInstance;\n }\n get systemController() {\n if (!this._systemControllerInstance) {\n this._systemControllerInstance = new SystemController();\n }\n return this._systemControllerInstance;\n }\n get channelsController() {\n if (!this._channelsControllerInstance) {\n this._channelsControllerInstance = new ChannelsController();\n }\n return this._channelsControllerInstance;\n }\n get prefsController() {\n if (!this._prefsControllerInstance) {\n this._prefsControllerInstance = new PrefsController();\n }\n return this._prefsControllerInstance;\n }\n get extensionController() {\n if (!this._extensionController) {\n this._extensionController = new ExtController();\n }\n return this._extensionController;\n }\n get eventsDispatcher() {\n if (!this._eventsDispatcher) {\n this._eventsDispatcher = new EventsDispatcher(this.config);\n }\n return this._eventsDispatcher;\n }\n get bridge() {\n if (!this._bridgeInstance) {\n this._bridgeInstance = new GlueBridge(this._coreGlue, this.communicationId);\n }\n return this._bridgeInstance;\n }\n get preferredConnectionController() {\n if (!this._preferredConnectionController) {\n this._preferredConnectionController = new PreferredConnectionController(this._coreGlue);\n }\n return this._preferredConnectionController;\n }\n get sessionController() {\n if (!this._sessionController) {\n this._sessionController = new SessionStorageController();\n }\n return this._sessionController;\n }\n get config() {\n return this._webConfig;\n }\n defineGlue(coreGlue) {\n this._coreGlue = coreGlue;\n this._publicWindowId = coreGlue.connection.transport.publicWindowId;\n const globalNamespace = window.glue42core || window.iobrowser;\n this._communicationId = coreGlue.connection.transport.communicationId || globalNamespace.communicationId;\n }\n defineConfig(config) {\n this._webConfig = config;\n }\n async buildWebWindow(id, name) {\n const model = new WebWindowModel(id, name, this.bridge);\n const api = await model.toApi();\n return { id, model, api };\n }\n buildNotification(config, id) {\n return new Notification(config, id);\n }\n async buildApplication(app, applicationInstances) {\n const application = (new ApplicationModel(app, [], this.appManagerController)).toApi();\n const instances = applicationInstances.map((instanceData) => this.buildInstance(instanceData, application));\n application.instances.push(...instances);\n return application;\n }\n buildInstance(instanceData, app) {\n return (new InstanceModel(instanceData, this.bridge, app)).toApi();\n }\n}\n\nvar version$1 = \"3.3.1\";\n\nconst createFactoryFunction = (coreFactoryFunction) => {\n return async (userConfig) => {\n if (window.glue42gd || window.iodesktop) {\n return enterprise(userConfig);\n }\n const ioc = new IoC();\n const config = parseConfig(userConfig);\n checkSingleton();\n const glue = await PromiseWrap(() => coreFactoryFunction(config, { version: version$1 }), 30000, \"Glue Web initialization timed out, because core didn't resolve\");\n const logger = glue.logger.subLogger(\"web.main.controller\");\n ioc.defineGlue(glue);\n ioc.sessionController.configure({ windowId: glue.interop.instance.instance });\n await ioc.preferredConnectionController.start(config);\n await ioc.bridge.start(ioc.controllers);\n ioc.defineConfig(config);\n logger.trace(\"the bridge has been started, initializing all controllers\");\n await Promise.all(Object.values(ioc.controllers).map((controller) => controller.start(glue, ioc)));\n logger.trace(\"all controllers reported started, starting all additional libraries\");\n await Promise.all(config.libraries.map((lib) => lib(glue, config)));\n logger.trace(\"all libraries were started\");\n ioc.eventsDispatcher.start(glue);\n logger.trace(\"start event dispatched, glue is ready, returning it\");\n return glue;\n };\n};\n\nvar MetricTypes = {\n STRING: 1,\n NUMBER: 2,\n TIMESTAMP: 3,\n OBJECT: 4\n};\n\nfunction getMetricTypeByValue(metric) {\n if (metric.type === MetricTypes.TIMESTAMP) {\n return \"timestamp\";\n }\n else if (metric.type === MetricTypes.NUMBER) {\n return \"number\";\n }\n else if (metric.type === MetricTypes.STRING) {\n return \"string\";\n }\n else if (metric.type === MetricTypes.OBJECT) {\n return \"object\";\n }\n return \"unknown\";\n}\nfunction getTypeByValue(value) {\n if (value.constructor === Date) {\n return \"timestamp\";\n }\n else if (typeof value === \"number\") {\n return \"number\";\n }\n else if (typeof value === \"string\") {\n return \"string\";\n }\n else if (typeof value === \"object\") {\n return \"object\";\n }\n else {\n return \"string\";\n }\n}\nfunction serializeMetric(metric) {\n const serializedMetrics = {};\n const type = getMetricTypeByValue(metric);\n if (type === \"object\") {\n const values = Object.keys(metric.value).reduce((memo, key) => {\n const innerType = getTypeByValue(metric.value[key]);\n if (innerType === \"object\") {\n const composite = defineNestedComposite(metric.value[key]);\n memo[key] = {\n type: \"object\",\n description: \"\",\n context: {},\n composite,\n };\n }\n else {\n memo[key] = {\n type: innerType,\n description: \"\",\n context: {},\n };\n }\n return memo;\n }, {});\n serializedMetrics.composite = values;\n }\n serializedMetrics.name = normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name);\n serializedMetrics.type = type;\n serializedMetrics.description = metric.description;\n serializedMetrics.context = {};\n return serializedMetrics;\n}\nfunction defineNestedComposite(values) {\n return Object.keys(values).reduce((memo, key) => {\n const type = getTypeByValue(values[key]);\n if (type === \"object\") {\n memo[key] = {\n type: \"object\",\n description: \"\",\n context: {},\n composite: defineNestedComposite(values[key]),\n };\n }\n else {\n memo[key] = {\n type,\n description: \"\",\n context: {},\n };\n }\n return memo;\n }, {});\n}\nfunction normalizeMetricName(name) {\n if (typeof name !== \"undefined\" && name.length > 0 && name[0] !== \"/\") {\n return \"/\" + name;\n }\n else {\n return name;\n }\n}\nfunction getMetricValueByType(metric) {\n const type = getMetricTypeByValue(metric);\n if (type === \"timestamp\") {\n return Date.now();\n }\n else {\n return publishNestedComposite(metric.value);\n }\n}\nfunction publishNestedComposite(values) {\n if (typeof values !== \"object\") {\n return values;\n }\n return Object.keys(values).reduce((memo, key) => {\n const value = values[key];\n if (typeof value === \"object\" && value.constructor !== Date) {\n memo[key] = publishNestedComposite(value);\n }\n else if (value.constructor === Date) {\n memo[key] = new Date(value).getTime();\n }\n else if (value.constructor === Boolean) {\n memo[key] = value.toString();\n }\n else {\n memo[key] = value;\n }\n return memo;\n }, {});\n}\nfunction flatten(arr) {\n return arr.reduce((flat, toFlatten) => {\n return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);\n }, []);\n}\nfunction getHighestState(arr) {\n return arr.sort((a, b) => {\n if (!a.state) {\n return 1;\n }\n if (!b.state) {\n return -1;\n }\n return b.state - a.state;\n })[0];\n}\nfunction aggregateDescription(arr) {\n let msg = \"\";\n arr.forEach((m, idx, a) => {\n const path = m.path.join(\".\");\n if (idx === a.length - 1) {\n msg += path + \".\" + m.name + \": \" + m.description;\n }\n else {\n msg += path + \".\" + m.name + \": \" + m.description + \",\";\n }\n });\n if (msg.length > 100) {\n return msg.slice(0, 100) + \"...\";\n }\n else {\n return msg;\n }\n}\nfunction composeMsgForRootStateMetric(system) {\n const aggregatedState = system.root.getAggregateState();\n const merged = flatten(aggregatedState);\n const highestState = getHighestState(merged);\n const aggregateDesc = aggregateDescription(merged);\n return {\n description: aggregateDesc,\n value: highestState.state,\n };\n}\n\nfunction gw3 (connection, config) {\n if (!connection || typeof connection !== \"object\") {\n throw new Error(\"Connection is required parameter\");\n }\n let joinPromise;\n let session;\n const init = (repo) => {\n let resolveReadyPromise;\n joinPromise = new Promise((resolve) => {\n resolveReadyPromise = resolve;\n });\n session = connection.domain(\"metrics\");\n session.onJoined((reconnect) => {\n if (!reconnect && resolveReadyPromise) {\n resolveReadyPromise();\n resolveReadyPromise = undefined;\n }\n const rootStateMetric = {\n name: \"/State\",\n type: \"object\",\n composite: {\n Description: {\n type: \"string\",\n description: \"\",\n },\n Value: {\n type: \"number\",\n description: \"\",\n },\n },\n description: \"System state\",\n context: {},\n };\n const defineRootMetricsMsg = {\n type: \"define\",\n metrics: [rootStateMetric],\n };\n session.send(defineRootMetricsMsg);\n if (reconnect) {\n replayRepo(repo);\n }\n });\n session.join({\n system: config.system,\n service: config.service,\n instance: config.instance\n });\n };\n const replayRepo = (repo) => {\n replaySystem(repo.root);\n };\n const replaySystem = (system) => {\n createSystem(system);\n system.metrics.forEach((m) => {\n createMetric(m);\n });\n system.subSystems.forEach((ss) => {\n replaySystem(ss);\n });\n };\n const createSystem = async (system) => {\n if (system.parent === undefined) {\n return;\n }\n await joinPromise;\n const metric = {\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\n type: \"object\",\n composite: {\n Description: {\n type: \"string\",\n description: \"\",\n },\n Value: {\n type: \"number\",\n description: \"\",\n },\n },\n description: \"System state\",\n context: {},\n };\n const createMetricsMsg = {\n type: \"define\",\n metrics: [metric],\n };\n session.send(createMetricsMsg);\n };\n const updateSystem = async (system, state) => {\n await joinPromise;\n const shadowedUpdateMetric = {\n type: \"publish\",\n values: [{\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\n value: {\n Description: state.description,\n Value: state.state,\n },\n timestamp: Date.now(),\n }],\n };\n session.send(shadowedUpdateMetric);\n const stateObj = composeMsgForRootStateMetric(system);\n const rootMetric = {\n type: \"publish\",\n peer_id: connection.peerId,\n values: [{\n name: \"/State\",\n value: {\n Description: stateObj.description,\n Value: stateObj.value,\n },\n timestamp: Date.now(),\n }],\n };\n session.send(rootMetric);\n };\n const createMetric = async (metric) => {\n const metricClone = cloneMetric(metric);\n await joinPromise;\n const m = serializeMetric(metricClone);\n const createMetricsMsg = {\n type: \"define\",\n metrics: [m],\n };\n session.send(createMetricsMsg);\n if (typeof metricClone.value !== \"undefined\") {\n updateMetricCore(metricClone);\n }\n };\n const updateMetric = async (metric) => {\n const metricClone = cloneMetric(metric);\n await joinPromise;\n updateMetricCore(metricClone);\n };\n const updateMetricCore = (metric) => {\n if (canUpdate()) {\n const value = getMetricValueByType(metric);\n const publishMetricsMsg = {\n type: \"publish\",\n values: [{\n name: normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name),\n value,\n timestamp: Date.now(),\n }],\n };\n return session.sendFireAndForget(publishMetricsMsg);\n }\n return Promise.resolve();\n };\n const cloneMetric = (metric) => {\n const metricClone = { ...metric };\n if (typeof metric.value === \"object\" && metric.value !== null) {\n metricClone.value = { ...metric.value };\n }\n return metricClone;\n };\n const canUpdate = () => {\n try {\n const func = config.canUpdateMetric ?? (() => true);\n return func();\n }\n catch {\n return true;\n }\n };\n return {\n init,\n createSystem,\n updateSystem,\n createMetric,\n updateMetric,\n };\n}\n\nvar Helpers = {\n validate: (definition, parent, transport) => {\n if (definition === null || typeof definition !== \"object\") {\n throw new Error(\"Missing definition\");\n }\n if (parent === null || typeof parent !== \"object\") {\n throw new Error(\"Missing parent\");\n }\n if (transport === null || typeof transport !== \"object\") {\n throw new Error(\"Missing transport\");\n }\n },\n};\n\nclass BaseMetric {\n definition;\n system;\n transport;\n value;\n type;\n path = [];\n name;\n description;\n get repo() {\n return this.system?.repo;\n }\n get id() { return `${this.system.path}/${name}`; }\n constructor(definition, system, transport, value, type) {\n this.definition = definition;\n this.system = system;\n this.transport = transport;\n this.value = value;\n this.type = type;\n Helpers.validate(definition, system, transport);\n this.path = system.path.slice(0);\n this.path.push(system.name);\n this.name = definition.name;\n this.description = definition.description;\n transport.createMetric(this);\n }\n update(newValue) {\n this.value = newValue;\n return this.transport.updateMetric(this);\n }\n}\n\nclass NumberMetric extends BaseMetric {\n constructor(definition, system, transport, value) {\n super(definition, system, transport, value, MetricTypes.NUMBER);\n }\n incrementBy(num) {\n this.update(this.value + num);\n }\n increment() {\n this.incrementBy(1);\n }\n decrement() {\n this.incrementBy(-1);\n }\n decrementBy(num) {\n this.incrementBy(num * -1);\n }\n}\n\nclass ObjectMetric extends BaseMetric {\n constructor(definition, system, transport, value) {\n super(definition, system, transport, value, MetricTypes.OBJECT);\n }\n update(newValue) {\n this.mergeValues(newValue);\n return this.transport.updateMetric(this);\n }\n mergeValues(values) {\n return Object.keys(this.value).forEach((k) => {\n if (typeof values[k] !== \"undefined\") {\n this.value[k] = values[k];\n }\n });\n }\n}\n\nclass StringMetric extends BaseMetric {\n constructor(definition, system, transport, value) {\n super(definition, system, transport, value, MetricTypes.STRING);\n }\n}\n\nclass TimestampMetric extends BaseMetric {\n constructor(definition, system, transport, value) {\n super(definition, system, transport, value, MetricTypes.TIMESTAMP);\n }\n now() {\n this.update(new Date());\n }\n}\n\nfunction system(name, repo, protocol, parent, description) {\n if (!repo) {\n throw new Error(\"Repository is required\");\n }\n if (!protocol) {\n throw new Error(\"Transport is required\");\n }\n const _transport = protocol;\n const _name = name;\n const _description = description || \"\";\n const _repo = repo;\n const _parent = parent;\n const _path = _buildPath(parent);\n let _state = {};\n const id = _arrayToString(_path, \"/\") + name;\n const root = repo.root;\n const _subSystems = [];\n const _metrics = [];\n function subSystem(nameSystem, descriptionSystem) {\n if (!nameSystem || nameSystem.length === 0) {\n throw new Error(\"name is required\");\n }\n const match = _subSystems.filter((s) => s.name === nameSystem);\n if (match.length > 0) {\n return match[0];\n }\n const _system = system(nameSystem, _repo, _transport, me, descriptionSystem);\n _subSystems.push(_system);\n return _system;\n }\n function setState(state, stateDescription) {\n _state = { state, description: stateDescription };\n _transport.updateSystem(me, _state);\n }\n function stringMetric(definition, value) {\n return _getOrCreateMetric(definition, MetricTypes.STRING, value, (metricDef) => new StringMetric(metricDef, me, _transport, value));\n }\n function numberMetric(definition, value) {\n return _getOrCreateMetric(definition, MetricTypes.NUMBER, value, (metricDef) => new NumberMetric(metricDef, me, _transport, value));\n }\n function objectMetric(definition, value) {\n return _getOrCreateMetric(definition, MetricTypes.OBJECT, value, (metricDef) => new ObjectMetric(metricDef, me, _transport, value));\n }\n function timestampMetric(definition, value) {\n return _getOrCreateMetric(definition, MetricTypes.TIMESTAMP, value, (metricDef) => new TimestampMetric(metricDef, me, _transport, value));\n }\n function _getOrCreateMetric(metricObject, expectedType, value, createMetric) {\n let metricDef = { name: \"\" };\n if (typeof metricObject === \"string\") {\n metricDef = { name: metricObject };\n }\n else {\n metricDef = metricObject;\n }\n const matching = _metrics.filter((shadowedMetric) => shadowedMetric.name === metricDef.name);\n if (matching.length > 0) {\n const existing = matching[0];\n if (existing.type !== expectedType) {\n throw new Error(`A metric named ${metricDef.name} is already defined with different type.`);\n }\n if (typeof value !== \"undefined\") {\n existing\n .update(value)\n .catch(() => { });\n }\n return existing;\n }\n const metric = createMetric(metricDef);\n _metrics.push(metric);\n return metric;\n }\n function _buildPath(shadowedSystem) {\n if (!shadowedSystem || !shadowedSystem.parent) {\n return [];\n }\n const path = _buildPath(shadowedSystem.parent);\n path.push(shadowedSystem.name);\n return path;\n }\n function _arrayToString(path, separator) {\n return ((path && path.length > 0) ? path.join(separator) : \"\");\n }\n function getAggregateState() {\n const aggState = [];\n if (Object.keys(_state).length > 0) {\n aggState.push({\n name: _name,\n path: _path,\n state: _state.state,\n description: _state.description,\n });\n }\n _subSystems.forEach((shadowedSubSystem) => {\n const result = shadowedSubSystem.getAggregateState();\n if (result.length > 0) {\n aggState.push(...result);\n }\n });\n return aggState;\n }\n const me = {\n get name() {\n return _name;\n },\n get description() {\n return _description;\n },\n get repo() {\n return _repo;\n },\n get parent() {\n return _parent;\n },\n path: _path,\n id,\n root,\n get subSystems() {\n return _subSystems;\n },\n get metrics() {\n return _metrics;\n },\n subSystem,\n getState: () => {\n return _state;\n },\n setState,\n stringMetric,\n timestampMetric,\n objectMetric,\n numberMetric,\n getAggregateState,\n };\n _transport.createSystem(me);\n return me;\n}\n\nclass Repository {\n root;\n constructor(options, protocol) {\n protocol.init(this);\n this.root = system(\"\", this, protocol);\n this.addSystemMetrics(this.root, options.clickStream || options.clickStream === undefined);\n }\n addSystemMetrics(rootSystem, useClickStream) {\n if (typeof navigator !== \"undefined\") {\n rootSystem.stringMetric(\"UserAgent\", navigator.userAgent);\n }\n if (useClickStream && typeof document !== \"undefined\") {\n const clickStream = rootSystem.subSystem(\"ClickStream\");\n const documentClickHandler = (e) => {\n if (!e.target) {\n return;\n }\n const target = e.target;\n const className = target ? target.getAttribute(\"class\") ?? \"\" : \"\";\n clickStream.objectMetric(\"LastBrowserEvent\", {\n type: \"click\",\n timestamp: new Date(),\n target: {\n className,\n id: target.id,\n type: \"<\" + target.tagName.toLowerCase() + \">\",\n href: target.href || \"\",\n },\n });\n };\n clickStream.objectMetric(\"Page\", {\n title: document.title,\n page: window.location.href,\n });\n if (document.addEventListener) {\n document.addEventListener(\"click\", documentClickHandler);\n }\n else {\n document.attachEvent(\"onclick\", documentClickHandler);\n }\n }\n rootSystem.stringMetric(\"StartTime\", (new Date()).toString());\n const urlMetric = rootSystem.stringMetric(\"StartURL\", \"\");\n const appNameMetric = rootSystem.stringMetric(\"AppName\", \"\");\n if (typeof window !== \"undefined\") {\n if (typeof window.location !== \"undefined\") {\n const startUrl = window.location.href;\n urlMetric.update(startUrl);\n }\n if (typeof window.glue42gd !== \"undefined\") {\n appNameMetric.update(window.glue42gd.appName);\n }\n }\n }\n}\n\nclass NullProtocol {\n init(repo) {\n }\n createSystem(system) {\n return Promise.resolve();\n }\n updateSystem(metric, state) {\n return Promise.resolve();\n }\n createMetric(metric) {\n return Promise.resolve();\n }\n updateMetric(metric) {\n return Promise.resolve();\n }\n}\n\nclass PerfTracker {\n api;\n lastCount = 0;\n initialPublishTimeout = 10 * 1000;\n publishInterval = 60 * 1000;\n system;\n constructor(api, initialPublishTimeout, publishInterval) {\n this.api = api;\n this.initialPublishTimeout = initialPublishTimeout ?? this.initialPublishTimeout;\n this.publishInterval = publishInterval ?? this.publishInterval;\n this.scheduleCollection();\n this.system = this.api.subSystem(\"performance\", \"Performance data published by the web application\");\n }\n scheduleCollection() {\n setTimeout(() => {\n this.collect();\n setInterval(() => {\n this.collect();\n }, this.publishInterval);\n }, this.initialPublishTimeout);\n }\n collect() {\n try {\n this.collectMemory();\n this.collectEntries();\n }\n catch {\n }\n }\n collectMemory() {\n const memory = window.performance.memory;\n this.system.stringMetric(\"memory\", JSON.stringify({\n totalJSHeapSize: memory.totalJSHeapSize,\n usedJSHeapSize: memory.usedJSHeapSize\n }));\n }\n collectEntries() {\n const allEntries = window.performance.getEntries();\n if (allEntries.length <= this.lastCount) {\n return;\n }\n this.lastCount = allEntries.length;\n const jsonfiedEntries = allEntries.map((i) => i.toJSON());\n this.system.stringMetric(\"entries\", JSON.stringify(jsonfiedEntries));\n }\n}\n\nvar metrics = (options) => {\n let protocol;\n if (!options.connection || typeof options.connection !== \"object\") {\n protocol = new NullProtocol();\n }\n else {\n protocol = gw3(options.connection, options);\n }\n const repo = new Repository(options, protocol);\n let rootSystem = repo.root;\n if (!options.disableAutoAppSystem) {\n rootSystem = rootSystem.subSystem(\"App\");\n }\n const api = addFAVSupport(rootSystem);\n initPerf(api, options.pagePerformanceMetrics);\n return api;\n};\nfunction initPerf(api, config) {\n if (typeof window === \"undefined\") {\n return;\n }\n const perfConfig = window?.glue42gd?.metrics?.pagePerformanceMetrics;\n if (perfConfig) {\n config = perfConfig;\n }\n if (config?.enabled) {\n new PerfTracker(api, config.initialPublishTimeout, config.publishInterval);\n }\n}\nfunction addFAVSupport(system) {\n const reportingSystem = system.subSystem(\"reporting\");\n const def = {\n name: \"features\"\n };\n let featureMetric;\n const featureMetricFunc = (name, action, payload) => {\n if (typeof name === \"undefined\" || name === \"\") {\n throw new Error(\"name is mandatory\");\n }\n else if (typeof action === \"undefined\" || action === \"\") {\n throw new Error(\"action is mandatory\");\n }\n else if (typeof payload === \"undefined\" || payload === \"\") {\n throw new Error(\"payload is mandatory\");\n }\n if (!featureMetric) {\n featureMetric = reportingSystem.objectMetric(def, { name, action, payload });\n }\n else {\n featureMetric.update({\n name,\n action,\n payload\n });\n }\n };\n system.featureMetric = featureMetricFunc;\n return system;\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\ncreateRegistry.default = createRegistry;\nvar lib = createRegistry;\n\n\nvar CallbackRegistryFactory = /*@__PURE__*/getDefaultExportFromCjs(lib);\n\nclass InProcTransport {\n gw;\n registry = CallbackRegistryFactory();\n client;\n constructor(settings, logger) {\n this.gw = settings.facade;\n this.gw.connect((_client, message) => {\n this.messageHandler(message);\n }).then((client) => {\n this.client = client;\n });\n }\n get isObjectBasedTransport() {\n return true;\n }\n sendObject(msg) {\n if (this.client) {\n this.client.send(msg);\n return Promise.resolve(undefined);\n }\n else {\n return Promise.reject(`not connected`);\n }\n }\n send(_msg) {\n return Promise.reject(\"not supported\");\n }\n onMessage(callback) {\n return this.registry.add(\"onMessage\", callback);\n }\n onConnectedChanged(callback) {\n callback(true);\n return () => { };\n }\n close() {\n return Promise.resolve();\n }\n open() {\n return Promise.resolve();\n }\n name() {\n return \"in-memory\";\n }\n reconnect() {\n return Promise.resolve();\n }\n messageHandler(msg) {\n this.registry.execute(\"onMessage\", msg);\n }\n}\n\nclass SharedWorkerTransport {\n logger;\n worker;\n registry = CallbackRegistryFactory();\n constructor(workerFile, logger) {\n this.logger = logger;\n this.worker = new SharedWorker(workerFile);\n this.worker.port.onmessage = (e) => {\n this.messageHandler(e.data);\n };\n }\n get isObjectBasedTransport() {\n return true;\n }\n sendObject(msg) {\n this.worker.port.postMessage(msg);\n return Promise.resolve();\n }\n send(_msg) {\n return Promise.reject(\"not supported\");\n }\n onMessage(callback) {\n return this.registry.add(\"onMessage\", callback);\n }\n onConnectedChanged(callback) {\n callback(true);\n return () => { };\n }\n close() {\n return Promise.resolve();\n }\n open() {\n return Promise.resolve();\n }\n name() {\n return \"shared-worker\";\n }\n reconnect() {\n return Promise.resolve();\n }\n messageHandler(msg) {\n this.registry.execute(\"onMessage\", msg);\n }\n}\n\nclass Utils {\n static isNode() {\n if (typeof Utils._isNode !== \"undefined\") {\n return Utils._isNode;\n }\n if (typeof window !== \"undefined\") {\n Utils._isNode = false;\n return false;\n }\n try {\n Utils._isNode = Object.prototype.toString.call(global.process) === \"[object process]\";\n }\n catch (e) {\n Utils._isNode = false;\n }\n return Utils._isNode;\n }\n static _isNode;\n}\n\nclass PromiseWrapper {\n static delay(time) {\n return new Promise((resolve) => setTimeout(resolve, time));\n }\n resolve;\n reject;\n promise;\n rejected = false;\n resolved = false;\n get ended() {\n return this.rejected || this.resolved;\n }\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = (t) => {\n this.resolved = true;\n resolve(t);\n };\n this.reject = (err) => {\n this.rejected = true;\n reject(err);\n };\n });\n }\n}\n\nconst timers = {};\nfunction getAllTimers() {\n return timers;\n}\nfunction timer (timerName) {\n const existing = timers[timerName];\n if (existing) {\n return existing;\n }\n const marks = [];\n function now() {\n return new Date().getTime();\n }\n const startTime = now();\n mark(\"start\", startTime);\n let endTime;\n let period;\n function stop() {\n endTime = now();\n mark(\"end\", endTime);\n period = endTime - startTime;\n return period;\n }\n function mark(name, time) {\n const currentTime = time ?? now();\n let diff = 0;\n if (marks.length > 0) {\n diff = currentTime - marks[marks.length - 1].time;\n }\n marks.push({ name, time: currentTime, diff });\n }\n const timerObj = {\n get startTime() {\n return startTime;\n },\n get endTime() {\n return endTime;\n },\n get period() {\n return period;\n },\n stop,\n mark,\n marks\n };\n timers[timerName] = timerObj;\n return timerObj;\n}\n\nconst WebSocketConstructor = Utils.isNode() ? require(\"ws\") : window.WebSocket;\nclass WS {\n ws;\n logger;\n settings;\n startupTimer = timer(\"connection\");\n _running = true;\n _registry = CallbackRegistryFactory();\n wsRequests = [];\n constructor(settings, logger) {\n this.settings = settings;\n this.logger = logger;\n if (!this.settings.ws) {\n throw new Error(\"ws is missing\");\n }\n }\n onMessage(callback) {\n return this._registry.add(\"onMessage\", callback);\n }\n send(msg, options) {\n return new Promise((resolve, reject) => {\n this.waitForSocketConnection(() => {\n try {\n this.ws?.send(msg);\n resolve();\n }\n catch (e) {\n reject(e);\n }\n }, reject);\n });\n }\n open() {\n this.logger.info(\"opening ws...\");\n this._running = true;\n return new Promise((resolve, reject) => {\n this.waitForSocketConnection(resolve, reject);\n });\n }\n close() {\n this._running = false;\n if (this.ws) {\n this.ws.close();\n }\n return Promise.resolve();\n }\n onConnectedChanged(callback) {\n return this._registry.add(\"onConnectedChanged\", callback);\n }\n name() {\n return this.settings.ws;\n }\n reconnect() {\n this.ws?.close();\n const pw = new PromiseWrapper();\n this.waitForSocketConnection(() => {\n pw.resolve();\n });\n return pw.promise;\n }\n waitForSocketConnection(callback, failed) {\n failed = failed ?? (() => { });\n if (!this._running) {\n failed(`wait for socket on ${this.settings.ws} failed - socket closed by user`);\n return;\n }\n if (this.ws?.readyState === 1) {\n callback();\n return;\n }\n this.wsRequests.push({ callback, failed });\n if (this.wsRequests.length > 1) {\n return;\n }\n this.openSocket();\n }\n async openSocket(retryInterval, retriesLeft) {\n this.logger.info(`opening ws to ${this.settings.ws}, retryInterval: ${retryInterval}, retriesLeft: ${retriesLeft}...`);\n this.startupTimer.mark(\"opening-socket\");\n if (retryInterval === undefined) {\n retryInterval = this.settings.reconnectInterval;\n }\n if (typeof retriesLeft === \"undefined\") {\n retriesLeft = this.settings.reconnectAttempts;\n }\n if (retriesLeft !== undefined) {\n if (retriesLeft === 0) {\n this.notifyForSocketState(`wait for socket on ${this.settings.ws} failed - no more retries left`);\n return;\n }\n this.logger.debug(`will retry ${retriesLeft} more times (every ${retryInterval} ms)`);\n }\n try {\n await this.initiateSocket();\n this.startupTimer.mark(\"socket-initiated\");\n this.notifyForSocketState();\n }\n catch {\n setTimeout(() => {\n const retries = retriesLeft === undefined ? undefined : retriesLeft - 1;\n this.openSocket(retryInterval, retries);\n }, retryInterval);\n }\n }\n initiateSocket() {\n const pw = new PromiseWrapper();\n this.logger.debug(`initiating ws to ${this.settings.ws}...`);\n this.ws = new WebSocketConstructor(this.settings.ws ?? \"\");\n this.ws.onerror = (err) => {\n let reason = \"\";\n try {\n reason = JSON.stringify(err);\n }\n catch (error) {\n const seen = new WeakSet();\n const replacer = (key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) {\n return;\n }\n seen.add(value);\n }\n return value;\n };\n reason = JSON.stringify(err, replacer);\n }\n this.logger.info(`ws error - reason: ${reason}`);\n pw.reject(\"error\");\n this.notifyStatusChanged(false, reason);\n };\n this.ws.onclose = (err) => {\n this.logger.info(`ws closed - code: ${err?.code} reason: ${err?.reason}`);\n pw.reject(\"closed\");\n this.notifyStatusChanged(false);\n };\n this.ws.onopen = () => {\n this.startupTimer.mark(\"ws-opened\");\n this.logger.info(`ws opened ${this.settings.identity?.application}`);\n pw.resolve();\n this.notifyStatusChanged(true);\n };\n this.ws.onmessage = (message) => {\n this._registry.execute(\"onMessage\", message.data);\n };\n return pw.promise;\n }\n notifyForSocketState(error) {\n this.wsRequests.forEach((wsRequest) => {\n if (error) {\n if (wsRequest.failed) {\n wsRequest.failed(error);\n }\n }\n else {\n wsRequest.callback();\n }\n });\n this.wsRequests = [];\n }\n notifyStatusChanged(status, reason) {\n this._registry.execute(\"onConnectedChanged\", status, reason);\n }\n}\n\nclass MessageReplayerImpl {\n specs;\n specsNames = [];\n messages = {};\n isDone;\n subs = {};\n subsRefCount = {};\n connection;\n constructor(specs) {\n this.specs = {};\n for (const spec of specs) {\n this.specs[spec.name] = spec;\n this.specsNames.push(spec.name);\n }\n }\n init(connection) {\n this.connection = connection;\n for (const name of this.specsNames) {\n for (const type of this.specs[name].types) {\n let refCount = this.subsRefCount[type];\n if (!refCount) {\n refCount = 0;\n }\n refCount += 1;\n this.subsRefCount[type] = refCount;\n if (refCount > 1) {\n continue;\n }\n const sub = connection.on(type, (msg) => this.processMessage(type, msg));\n this.subs[type] = sub;\n }\n }\n }\n processMessage(type, msg) {\n if (this.isDone || !msg) {\n return;\n }\n for (const name of this.specsNames) {\n if (this.specs[name].types.indexOf(type) !== -1) {\n const messages = this.messages[name] || [];\n this.messages[name] = messages;\n messages.push(msg);\n }\n }\n }\n drain(name, callback) {\n if (callback) {\n (this.messages[name] || []).forEach(callback);\n }\n delete this.messages[name];\n for (const type of this.specs[name].types) {\n this.subsRefCount[type] -= 1;\n if (this.subsRefCount[type] <= 0) {\n this.connection?.off(this.subs[type]);\n delete this.subs[type];\n delete this.subsRefCount[type];\n }\n }\n delete this.specs[name];\n if (!this.specs.length) {\n this.isDone = true;\n }\n }\n}\n\nconst urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict';\n\nlet nanoid = (size = 21) => {\n let id = '';\n let bytes = crypto.getRandomValues(new Uint8Array(size));\n while (size--) {\n id += urlAlphabet[bytes[size] & 63];\n }\n return id\n};\n\nconst PromisePlus = (executor, timeoutMilliseconds, timeoutMessage) => {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\n reject(message);\n }, timeoutMilliseconds);\n const providedPromise = new Promise(executor);\n providedPromise\n .then((result) => {\n clearTimeout(timeout);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timeout);\n reject(error);\n });\n });\n};\n\nclass WebPlatformTransport {\n settings;\n logger;\n identity;\n isPreferredActivated;\n _communicationId;\n publicWindowId;\n selfAssignedWindowId;\n iAmConnected = false;\n parentReady = false;\n rejected = false;\n parentPingResolve;\n parentPingInterval;\n connectionResolve;\n extConnectionResolve;\n extConnectionReject;\n connectionReject;\n port;\n myClientId;\n children = [];\n extContentAvailable = false;\n extContentConnecting = false;\n extContentConnected = false;\n parentWindowId;\n parentInExtMode = false;\n webNamespace = \"g42_core_web\";\n parent;\n parentType;\n parentPingTimeout = 5000;\n connectionRequestTimeout = 7000;\n defaultTargetString = \"*\";\n registry = CallbackRegistryFactory();\n messages = {\n connectionAccepted: { name: \"connectionAccepted\", handle: this.handleConnectionAccepted.bind(this) },\n connectionRejected: { name: \"connectionRejected\", handle: this.handleConnectionRejected.bind(this) },\n connectionRequest: { name: \"connectionRequest\", handle: this.handleConnectionRequest.bind(this) },\n parentReady: {\n name: \"parentReady\", handle: () => {\n }\n },\n parentPing: { name: \"parentPing\", handle: this.handleParentPing.bind(this) },\n platformPing: { name: \"platformPing\", handle: this.handlePlatformPing.bind(this) },\n platformReady: { name: \"platformReady\", handle: this.handlePlatformReady.bind(this) },\n clientUnload: { name: \"clientUnload\", handle: this.handleClientUnload.bind(this) },\n manualUnload: { name: \"manualUnload\", handle: this.handleManualUnload.bind(this) },\n extConnectionResponse: { name: \"extConnectionResponse\", handle: this.handleExtConnectionResponse.bind(this) },\n extSetupRequest: { name: \"extSetupRequest\", handle: this.handleExtSetupRequest.bind(this) },\n gatewayDisconnect: { name: \"gatewayDisconnect\", handle: this.handleGatewayDisconnect.bind(this) },\n gatewayInternalConnect: { name: \"gatewayInternalConnect\", handle: this.handleGatewayInternalConnect.bind(this) }\n };\n constructor(settings, logger, identity) {\n this.settings = settings;\n this.logger = logger;\n this.identity = identity;\n this.extContentAvailable = !!window.glue42ext;\n this.setUpMessageListener();\n this.setUpUnload();\n this.setupPlatformUnloadListener();\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : undefined;\n }\n manualSetReadyState() {\n this.iAmConnected = true;\n this.parentReady = true;\n }\n get transportWindowId() {\n return this.publicWindowId;\n }\n get communicationId() {\n return this._communicationId;\n }\n async sendObject(msg) {\n if (this.extContentConnected) {\n return window.postMessage({ glue42ExtOut: msg }, this.defaultTargetString);\n }\n if (!this.port) {\n throw new Error(\"Cannot send message, because the port was not opened yet\");\n }\n this.port.postMessage(msg);\n }\n get isObjectBasedTransport() {\n return true;\n }\n onMessage(callback) {\n return this.registry.add(\"onMessage\", callback);\n }\n send() {\n return Promise.reject(\"not supported\");\n }\n onConnectedChanged(callback) {\n return this.registry.add(\"onConnectedChanged\", callback);\n }\n async open() {\n this.logger.debug(\"opening a connection to the web platform gateway.\");\n await this.connect();\n this.notifyStatusChanged(true);\n }\n close() {\n const message = {\n glue42core: {\n type: this.messages.gatewayDisconnect.name,\n data: {\n clientId: this.myClientId,\n ownWindowId: this.identity?.windowId\n }\n }\n };\n this.port?.postMessage(message);\n this.parentReady = false;\n this.notifyStatusChanged(false, \"manual reconnection\");\n return Promise.resolve();\n }\n name() {\n return \"web-platform\";\n }\n async reconnect() {\n await this.close();\n return Promise.resolve();\n }\n initiateInternalConnection() {\n return new Promise((resolve, reject) => {\n this.logger.debug(\"opening an internal web platform connection\");\n this.port = this.settings.port;\n if (this.iAmConnected) {\n this.logger.warn(\"cannot open a new connection, because this client is currently connected\");\n return;\n }\n this.port.onmessage = (event) => {\n if (this.iAmConnected && !event.data?.glue42core) {\n this.registry.execute(\"onMessage\", event.data);\n return;\n }\n const data = event.data?.glue42core;\n if (!data) {\n return;\n }\n if (data.type === this.messages.gatewayInternalConnect.name && data.success) {\n this.publicWindowId = this.settings.windowId;\n if (this.identity && this.publicWindowId) {\n this.identity.windowId = this.publicWindowId;\n this.identity.instance = this.publicWindowId;\n }\n resolve();\n }\n if (data.type === this.messages.gatewayInternalConnect.name && data.error) {\n reject(data.error);\n }\n };\n this.port.postMessage({\n glue42core: {\n type: this.messages.gatewayInternalConnect.name\n }\n });\n });\n }\n initiateRemoteConnection(target) {\n return PromisePlus((resolve, reject) => {\n this.connectionResolve = resolve;\n this.connectionReject = reject;\n this.myClientId = this.myClientId ?? nanoid(10);\n const bridgeInstanceId = this.getMyWindowId() || nanoid(10);\n const request = {\n glue42core: {\n type: this.messages.connectionRequest.name,\n clientId: this.myClientId,\n clientType: \"child\",\n bridgeInstanceId,\n selfAssignedWindowId: this.selfAssignedWindowId\n }\n };\n this.logger.debug(\"sending connection request\");\n if (this.extContentConnecting) {\n request.glue42core.clientType = \"child\";\n request.glue42core.bridgeInstanceId = this.myClientId;\n request.glue42core.parentWindowId = this.parentWindowId;\n return window.postMessage(request, this.defaultTargetString);\n }\n if (!target) {\n throw new Error(\"Cannot send a connection request, because no glue target was specified!\");\n }\n target.postMessage(request, this.defaultTargetString);\n }, this.connectionRequestTimeout, \"The connection to the target glue window timed out\");\n }\n async isParentCheckSuccess(parentCheck) {\n try {\n await parentCheck;\n return { success: true };\n }\n catch (error) {\n return { success: false };\n }\n }\n setUpMessageListener() {\n if (this.settings.port) {\n this.logger.debug(\"skipping generic message listener, because this is an internal client\");\n return;\n }\n window.addEventListener(\"message\", (event) => {\n const data = event.data?.glue42core;\n if (!data || this.rejected) {\n return;\n }\n const allowedOrigins = this.settings.allowedOrigins || [];\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\n this.logger.warn(`received a message from an origin which is not in the allowed list: ${event.origin}`);\n return;\n }\n if (!this.checkMessageTypeValid(data.type)) {\n this.logger.error(`cannot handle the incoming glue42 core message, because the type is invalid: ${data.type}`);\n return;\n }\n const messageType = data.type;\n this.logger.debug(`received valid glue42core message of type: ${messageType}`);\n this.messages[messageType].handle(event);\n });\n }\n setUpUnload() {\n if (this.settings.port) {\n this.logger.debug(\"skipping unload event listener, because this is an internal client\");\n return;\n }\n window.addEventListener(\"beforeunload\", () => {\n if (this.extContentConnected) {\n return;\n }\n const message = {\n glue42core: {\n type: this.messages.clientUnload.name,\n data: {\n clientId: this.myClientId,\n ownWindowId: this.identity?.windowId\n }\n }\n };\n if (this.parent) {\n this.parent.postMessage(message, this.defaultTargetString);\n }\n this.port?.postMessage(message);\n });\n }\n handlePlatformReady(event) {\n this.logger.debug(\"the web platform gave the ready signal\");\n this.parentReady = true;\n if (this.parentPingResolve) {\n this.parentPingResolve();\n delete this.parentPingResolve;\n }\n if (this.parentPingInterval) {\n clearInterval(this.parentPingInterval);\n delete this.parentPingInterval;\n }\n this.parent = event.source;\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : \"window\";\n }\n handleConnectionAccepted(event) {\n const data = event.data?.glue42core;\n if (this.myClientId === data.clientId) {\n return this.handleAcceptanceOfMyRequest(data);\n }\n return this.handleAcceptanceOfGrandChildRequest(data, event);\n }\n handleAcceptanceOfMyRequest(data) {\n this.logger.debug(\"handling a connection accepted signal targeted at me.\");\n this.isPreferredActivated = data.isPreferredActivated;\n if (this.extContentConnecting) {\n return this.processExtContentConnection(data);\n }\n if (!data.port) {\n this.logger.error(\"cannot set up my connection, because I was not provided with a port\");\n return;\n }\n this.publicWindowId = this.getMyWindowId();\n if (this.identity) {\n this.identity.windowId = this.publicWindowId;\n this.identity.instance = this.identity.instance ? this.identity.instance : this.publicWindowId || nanoid(10);\n }\n if (this.identity && data.appName) {\n this.identity.application = data.appName;\n this.identity.applicationName = data.appName;\n }\n this._communicationId = data.communicationId;\n this.port = data.port;\n this.port.onmessage = (e) => this.registry.execute(\"onMessage\", e.data);\n if (this.connectionResolve) {\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\n this.connectionResolve();\n delete this.connectionResolve;\n return;\n }\n this.logger.error(\"unable to call the connection resolve, because no connection promise was found\");\n }\n processExtContentConnection(data) {\n this.logger.debug(\"handling a connection accepted signal targeted at me for extension content connection.\");\n this.extContentConnecting = false;\n this.extContentConnected = true;\n this.publicWindowId = this.parentWindowId || this.myClientId;\n if (this.extContentConnecting && this.identity) {\n this.identity.windowId = this.publicWindowId;\n }\n if (this.identity && data.appName) {\n this.identity.application = data.appName;\n this.identity.applicationName = data.appName;\n }\n window.addEventListener(\"message\", (event) => {\n const extData = event.data?.glue42ExtInc;\n if (!extData) {\n return;\n }\n const allowedOrigins = this.settings.allowedOrigins || [];\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\n this.logger.warn(`received a message from an origin which is not in the allowed list: ${event.origin}`);\n return;\n }\n this.registry.execute(\"onMessage\", extData);\n });\n if (this.connectionResolve) {\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\n this.connectionResolve();\n delete this.connectionResolve;\n return;\n }\n }\n handleAcceptanceOfGrandChildRequest(data, event) {\n if (this.extContentConnecting || this.extContentConnected) {\n this.logger.debug(\"cannot process acceptance of a grandchild, because I am connected to a content script\");\n return;\n }\n this.logger.debug(`handling a connection accepted signal targeted at a grandchild: ${data.clientId}`);\n const child = this.children.find((c) => c.grandChildId === data.clientId);\n if (!child) {\n this.logger.error(`cannot handle connection accepted for grandchild: ${data.clientId}, because there is no grandchild with this id`);\n return;\n }\n child.connected = true;\n this.logger.debug(`the grandchild connection for ${data.clientId} is set up, forwarding the success message and the gateway port`);\n data.parentWindowId = this.publicWindowId;\n child.source.postMessage(event.data, child.origin, [data.port]);\n return;\n }\n handleConnectionRejected() {\n this.logger.debug(\"handling a connection rejection. Most likely the reason is that this window was not created by a glue API call\");\n if (this.connectionReject) {\n this.connectionReject(\"The platform connection was rejected. Most likely because this window was not created by a glue API call\");\n delete this.connectionReject;\n }\n }\n handleConnectionRequest(event) {\n if (this.extContentConnecting) {\n this.logger.debug(\"This connection request event is targeted at the extension content\");\n return;\n }\n const source = event.source;\n const data = event.data.glue42core;\n if (!data.clientType || data.clientType !== \"grandChild\") {\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source was not opened by a glue API call\");\n }\n if (!data.clientId) {\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source did not provide a valid id\");\n }\n if (!this.parent) {\n return this.rejectConnectionRequest(source, event.origin, \"Cannot forward the connection request, because no direct connection to the platform was found\");\n }\n this.logger.debug(`handling a connection request for a grandchild: ${data.clientId}`);\n this.children.push({ grandChildId: data.clientId, source, connected: false, origin: event.origin });\n this.logger.debug(`grandchild: ${data.clientId} is prepared, forwarding connection request to the platform`);\n this.parent.postMessage(event.data, this.defaultTargetString);\n }\n handleParentPing(event) {\n if (!this.parentReady) {\n this.logger.debug(\"my parent is not ready, I am ignoring the parent ping\");\n return;\n }\n if (!this.iAmConnected) {\n this.logger.debug(\"i am not fully connected yet, I am ignoring the parent ping\");\n return;\n }\n const message = {\n glue42core: {\n type: this.messages.parentReady.name\n }\n };\n if (this.extContentConnected) {\n message.glue42core.extMode = { windowId: this.myClientId };\n }\n const source = event.source;\n this.logger.debug(\"responding to a parent ping with a ready message\");\n source.postMessage(message, event.origin);\n }\n setupPlatformUnloadListener() {\n this.onMessage((msg) => {\n if (msg.type === \"platformUnload\") {\n this.logger.debug(\"detected a web platform unload\");\n this.parentReady = false;\n this.notifyStatusChanged(false, \"Gateway unloaded\");\n }\n });\n }\n handleManualUnload() {\n const message = {\n glue42core: {\n type: this.messages.clientUnload.name,\n data: {\n clientId: this.myClientId,\n ownWindowId: this.identity?.windowId\n }\n }\n };\n if (this.extContentConnected) {\n return window.postMessage({ glue42ExtOut: message }, this.defaultTargetString);\n }\n this.port?.postMessage(message);\n }\n handleClientUnload(event) {\n const data = event.data.glue42core;\n const clientId = data?.data.clientId;\n if (!clientId) {\n this.logger.warn(\"cannot process grand child unload, because the provided id was not valid\");\n return;\n }\n const foundChild = this.children.find((child) => child.grandChildId === clientId);\n if (!foundChild) {\n this.logger.warn(\"cannot process grand child unload, because this client is unaware of this grandchild\");\n return;\n }\n this.logger.debug(`handling grandchild unload for id: ${clientId}`);\n this.children = this.children.filter((child) => child.grandChildId !== clientId);\n }\n handlePlatformPing() {\n return;\n }\n notifyStatusChanged(status, reason) {\n this.iAmConnected = status;\n this.registry.execute(\"onConnectedChanged\", status, reason);\n }\n checkMessageTypeValid(typeToValidate) {\n return typeof typeToValidate === \"string\" && !!this.messages[typeToValidate];\n }\n rejectConnectionRequest(source, origin, reason) {\n this.rejected = true;\n this.logger.error(reason);\n const rejection = {\n glue42core: {\n type: this.messages.connectionRejected.name\n }\n };\n source.postMessage(rejection, origin);\n }\n requestConnectionPermissionFromExt() {\n return this.waitForContentScript()\n .then(() => PromisePlus((resolve, reject) => {\n this.extConnectionResolve = resolve;\n this.extConnectionReject = reject;\n const message = {\n glue42core: {\n type: \"extSetupRequest\"\n }\n };\n this.logger.debug(\"permission request to the extension content script was sent\");\n window.postMessage(message, this.defaultTargetString);\n }, this.parentPingTimeout, \"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out\"));\n }\n handleExtConnectionResponse(event) {\n const data = event.data?.glue42core;\n if (!data.approved) {\n return this.extConnectionReject ? this.extConnectionReject(\"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection was rejected\") : undefined;\n }\n if (this.extConnectionResolve) {\n this.extConnectionResolve();\n delete this.extConnectionResolve;\n }\n this.extContentConnecting = true;\n this.parentType = \"extension\";\n this.logger.debug(\"The extension connection was approved, proceeding.\");\n }\n handleExtSetupRequest() {\n return;\n }\n handleGatewayDisconnect() {\n return;\n }\n handleGatewayInternalConnect() {\n return;\n }\n waitForContentScript() {\n const contentReady = !!window.glue42ext?.content;\n if (contentReady) {\n return Promise.resolve();\n }\n return PromisePlus((resolve) => {\n window.addEventListener(\"Glue42EXTReady\", () => {\n resolve();\n });\n }, this.connectionRequestTimeout, \"The content script was available, but was never heard to be ready\");\n }\n async connect() {\n if (this.settings.port) {\n await this.initiateInternalConnection();\n this.logger.debug(\"internal web platform connection completed\");\n return;\n }\n this.logger.debug(\"opening a client web platform connection\");\n await this.findParent();\n await this.initiateRemoteConnection(this.parent);\n this.logger.debug(\"the client is connected\");\n }\n async findParent() {\n const connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\n const myInsideParents = this.getPossibleParentsInWindow(window);\n const myOutsideParents = this.getPossibleParentsOutsideWindow(window.top?.opener, window.top);\n const uniqueParents = new Set([...myInsideParents, ...myOutsideParents]);\n if (!uniqueParents.size && !this.extContentAvailable) {\n throw new Error(connectionNotPossibleMsg);\n }\n if (!uniqueParents.size && this.extContentAvailable) {\n await this.requestConnectionPermissionFromExt();\n return;\n }\n const defaultParentCheck = await this.isParentCheckSuccess(this.confirmParent(Array.from(uniqueParents)));\n if (defaultParentCheck.success) {\n this.logger.debug(\"The default parent was found!\");\n return;\n }\n if (!this.extContentAvailable) {\n throw new Error(connectionNotPossibleMsg);\n }\n await this.requestConnectionPermissionFromExt();\n }\n getPossibleParentsInWindow(currentWindow) {\n return (!currentWindow || currentWindow === currentWindow.top) ? [] : [currentWindow.parent, ...this.getPossibleParentsInWindow(currentWindow.parent)];\n }\n getPossibleParentsOutsideWindow(opener, current) {\n return (!opener || !current || opener === current) ? [] : [opener, ...this.getPossibleParentsInWindow(opener), ...this.getPossibleParentsOutsideWindow(opener.opener, opener)];\n }\n confirmParent(targets) {\n const connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\n const parentCheck = PromisePlus((resolve) => {\n this.parentPingResolve = resolve;\n const message = {\n glue42core: {\n type: this.messages.platformPing.name\n }\n };\n this.parentPingInterval = setInterval(() => {\n targets.forEach((target) => {\n target.postMessage(message, this.defaultTargetString);\n });\n }, 1000);\n }, this.parentPingTimeout, connectionNotPossibleMsg);\n parentCheck.catch(() => {\n if (this.parentPingInterval) {\n clearInterval(this.parentPingInterval);\n delete this.parentPingInterval;\n }\n });\n return parentCheck;\n }\n getMyWindowId() {\n if (this.parentType === \"workspace\") {\n return window.name.substring(0, window.name.indexOf(\"#wsp\"));\n }\n if (window !== window.top) {\n return;\n }\n if (window.name?.includes(\"g42\")) {\n return window.name;\n }\n this.selfAssignedWindowId = this.selfAssignedWindowId || `g42-${nanoid(10)}`;\n return this.selfAssignedWindowId;\n }\n}\n\nconst waitForInvocations = (invocations, callback) => {\n let left = invocations;\n return () => {\n left--;\n if (left === 0) {\n callback();\n }\n };\n};\n\nclass AsyncSequelizer {\n minSequenceInterval;\n queue = [];\n isExecutingQueue = false;\n constructor(minSequenceInterval = 0) {\n this.minSequenceInterval = minSequenceInterval;\n }\n enqueue(action) {\n return new Promise((resolve, reject) => {\n this.queue.push({ action, resolve, reject });\n this.executeQueue();\n });\n }\n async executeQueue() {\n if (this.isExecutingQueue) {\n return;\n }\n this.isExecutingQueue = true;\n while (this.queue.length) {\n const operation = this.queue.shift();\n if (!operation) {\n this.isExecutingQueue = false;\n return;\n }\n try {\n const actionResult = await operation.action();\n operation.resolve(actionResult);\n }\n catch (error) {\n operation.reject(error);\n }\n await this.intervalBreak();\n }\n this.isExecutingQueue = false;\n }\n intervalBreak() {\n return new Promise((res) => setTimeout(res, this.minSequenceInterval));\n }\n}\n\nfunction domainSession (domain, connection, logger, successMessages, errorMessages) {\n if (domain == null) {\n domain = \"global\";\n }\n successMessages = successMessages ?? [\"success\"];\n errorMessages = errorMessages ?? [\"error\"];\n let isJoined = domain === \"global\";\n let tryReconnecting = false;\n let _latestOptions;\n let _connectionOn = false;\n const callbacks = CallbackRegistryFactory();\n connection.disconnected(handleConnectionDisconnected);\n connection.loggedIn(handleConnectionLoggedIn);\n connection.on(\"success\", (msg) => handleSuccessMessage(msg));\n connection.on(\"error\", (msg) => handleErrorMessage(msg));\n connection.on(\"result\", (msg) => handleSuccessMessage(msg));\n if (successMessages) {\n successMessages.forEach((sm) => {\n connection.on(sm, (msg) => handleSuccessMessage(msg));\n });\n }\n if (errorMessages) {\n errorMessages.forEach((sm) => {\n connection.on(sm, (msg) => handleErrorMessage(msg));\n });\n }\n const requestsMap = {};\n function join(options) {\n _latestOptions = options;\n return new Promise((resolve, reject) => {\n if (isJoined) {\n resolve({});\n return;\n }\n let joinPromise;\n if (domain === \"global\") {\n joinPromise = _connectionOn ? Promise.resolve({}) : Promise.reject(\"not connected to gateway\");\n }\n else {\n logger.debug(`joining domain ${domain}`);\n const joinMsg = {\n type: \"join\",\n destination: domain,\n domain: \"global\",\n options,\n };\n joinPromise = send(joinMsg);\n }\n joinPromise\n .then(() => {\n handleJoined();\n resolve({});\n })\n .catch((err) => {\n logger.debug(\"error joining \" + domain + \" domain: \" + JSON.stringify(err));\n reject(err);\n });\n });\n }\n function leave() {\n if (domain === \"global\") {\n return Promise.resolve();\n }\n logger.debug(\"stopping session \" + domain + \"...\");\n const leaveMsg = {\n type: \"leave\",\n destination: domain,\n domain: \"global\",\n };\n tryReconnecting = false;\n return send(leaveMsg)\n .then(() => {\n isJoined = false;\n callbacks.execute(\"onLeft\");\n })\n .catch(() => {\n isJoined = false;\n callbacks.execute(\"onLeft\");\n });\n }\n function handleJoined() {\n logger.debug(\"did join \" + domain);\n isJoined = true;\n const wasReconnect = tryReconnecting;\n tryReconnecting = false;\n callbacks.execute(\"onJoined\", wasReconnect);\n }\n function handleConnectionDisconnected() {\n _connectionOn = false;\n logger.debug(\"connection is down\");\n isJoined = false;\n tryReconnecting = true;\n callbacks.execute(\"onLeft\", { disconnected: true });\n }\n function handleConnectionLoggedIn() {\n _connectionOn = true;\n if (tryReconnecting) {\n logger.debug(\"connection is now up - trying to reconnect...\");\n join(_latestOptions);\n }\n }\n function onJoined(callback) {\n if (isJoined) {\n callback(false);\n }\n return callbacks.add(\"onJoined\", callback);\n }\n function onLeft(callback) {\n if (!isJoined) {\n callback();\n }\n return callbacks.add(\"onLeft\", callback);\n }\n function handleErrorMessage(msg) {\n if (domain !== msg.domain) {\n return;\n }\n const requestId = msg.request_id;\n if (!requestId) {\n return;\n }\n const entry = requestsMap[requestId];\n if (!entry) {\n return;\n }\n entry.error(msg);\n }\n function handleSuccessMessage(msg) {\n if (msg.domain !== domain) {\n return;\n }\n const requestId = msg.request_id;\n if (!requestId) {\n return;\n }\n const entry = requestsMap[requestId];\n if (!entry) {\n return;\n }\n entry.success(msg);\n }\n function getNextRequestId() {\n return nanoid(10);\n }\n let queuedCalls = [];\n function send(msg, tag, options) {\n const ignore = [\"hello\", \"join\"];\n if (msg.type && ignore.indexOf(msg.type) === -1) {\n if (!isJoined) {\n console.warn(`trying to send a message (${msg.domain} ${msg.type}) but not connected, will queue`);\n const pw = new PromiseWrapper();\n queuedCalls.push({ msg, tag, options, pw });\n if (queuedCalls.length === 1) {\n const unsubscribe = onJoined(() => {\n logger.info(`joined - will now send queued messages (${queuedCalls.length} -> [${queuedCalls.map((m) => m.msg.type)}])`);\n queuedCalls.forEach((qm) => {\n send(qm.msg, qm.tag, qm.options)\n .then((t) => qm.pw.resolve(t))\n .catch((e) => qm.pw.reject(e));\n });\n queuedCalls = [];\n unsubscribe();\n });\n }\n return pw.promise;\n }\n }\n options = options ?? {};\n msg.request_id = msg.request_id ?? getNextRequestId();\n msg.domain = msg.domain ?? domain;\n if (!options.skipPeerId) {\n msg.peer_id = connection.peerId;\n }\n const requestId = msg.request_id;\n return new Promise((resolve, reject) => {\n requestsMap[requestId] = {\n success: (successMsg) => {\n delete requestsMap[requestId];\n successMsg._tag = tag;\n resolve(successMsg);\n },\n error: (errorMsg) => {\n logger.warn(`Gateway error - ${JSON.stringify(errorMsg)}`);\n delete requestsMap[requestId];\n errorMsg._tag = tag;\n reject(errorMsg);\n },\n };\n connection\n .send(msg, options)\n .catch((err) => {\n requestsMap[requestId].error({ err });\n });\n });\n }\n function sendFireAndForget(msg) {\n msg.request_id = msg.request_id ? msg.request_id : getNextRequestId();\n msg.domain = msg.domain ?? domain;\n msg.peer_id = connection.peerId;\n return connection.send(msg);\n }\n return {\n join,\n leave,\n onJoined,\n onLeft,\n send,\n sendFireAndForget,\n on: (type, callback) => {\n connection.on(type, (msg) => {\n if (msg.domain !== domain) {\n return;\n }\n try {\n callback(msg);\n }\n catch (e) {\n logger.error(`Callback failed: ${e} \\n ${e.stack} \\n msg was: ${JSON.stringify(msg)}`, e);\n }\n });\n },\n loggedIn: (callback) => connection.loggedIn(callback),\n connected: (callback) => connection.connected(callback),\n disconnected: (callback) => connection.disconnected(callback),\n get peerId() {\n return connection.peerId;\n },\n get domain() {\n return domain;\n },\n };\n}\n\nclass Connection {\n settings;\n logger;\n protocolVersion = 3;\n peerId;\n token;\n info;\n resolvedIdentity;\n availableDomains;\n gatewayToken;\n replayer;\n messageHandlers = {};\n ids = 1;\n registry = CallbackRegistryFactory();\n _connected = false;\n isTrace = false;\n transport;\n _defaultTransport;\n _defaultAuth;\n _targetTransport;\n _targetAuth;\n _swapTransport = false;\n _switchInProgress = false;\n _transportSubscriptions = [];\n datePrefix = \"#T42_DATE#\";\n datePrefixLen = this.datePrefix.length;\n dateMinLen = this.datePrefixLen + 1;\n datePrefixFirstChar = this.datePrefix[0];\n _sequelizer = new AsyncSequelizer();\n _isLoggedIn = false;\n shouldTryLogin = true;\n pingTimer;\n sessions = [];\n globalDomain;\n initialLogin = true;\n initialLoginAttempts = 3;\n loginConfig;\n constructor(settings, logger) {\n this.settings = settings;\n this.logger = logger;\n settings = settings || {};\n settings.reconnectAttempts = settings.reconnectAttempts ?? 10;\n settings.reconnectInterval = settings.reconnectInterval ?? 1000;\n if (settings.inproc) {\n this.transport = new InProcTransport(settings.inproc, logger.subLogger(\"inMemory\"));\n }\n else if (settings.sharedWorker) {\n this.transport = new SharedWorkerTransport(settings.sharedWorker, logger.subLogger(\"shared-worker\"));\n }\n else if (settings.webPlatform) {\n this.transport = new WebPlatformTransport(settings.webPlatform, logger.subLogger(\"web-platform\"), settings.identity);\n }\n else if (settings.ws !== undefined) {\n this.transport = new WS(settings, logger.subLogger(\"ws\"));\n }\n else {\n throw new Error(\"No connection information specified\");\n }\n this.isTrace = logger.canPublish(\"trace\");\n logger.debug(`starting with ${this.transport.name()} transport`);\n const unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\n const unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\n this._transportSubscriptions.push(unsubConnectionChanged);\n this._transportSubscriptions.push(unsubOnMessage);\n this._defaultTransport = this.transport;\n this.ping();\n }\n async switchTransport(settings) {\n return this._sequelizer.enqueue(async () => {\n if (!settings || typeof settings !== \"object\") {\n throw new Error(\"Cannot switch transports, because the settings are missing or invalid.\");\n }\n if (typeof settings.type === \"undefined\") {\n throw new Error(\"Cannot switch the transport, because the type is not defined\");\n }\n this.logger.trace(`Starting transport switch with settings: ${JSON.stringify(settings)}`);\n const switchTargetTransport = settings.type === \"secondary\" ? this.getNewSecondaryTransport(settings) : this._defaultTransport;\n this._targetTransport = switchTargetTransport;\n this._targetAuth = settings.type === \"secondary\" ? this.getNewSecondaryAuth(settings) : this._defaultAuth;\n const verifyPromise = this.verifyConnection();\n this._swapTransport = true;\n this._switchInProgress = true;\n this.logger.trace(\"The new transport has been set, closing the current transport\");\n await this.transport.close();\n try {\n await verifyPromise;\n const isSwitchSuccess = this.transport === switchTargetTransport;\n this.logger.info(`The reconnection after the switch was completed. Was the switch a success: ${isSwitchSuccess}`);\n this._switchInProgress = false;\n return { success: isSwitchSuccess };\n }\n catch (error) {\n this.logger.info(\"The reconnection after the switch timed out, reverting back to the default transport.\");\n this.switchTransport({ type: \"default\" });\n this._switchInProgress = false;\n return { success: false };\n }\n });\n }\n onLibReAnnounced(callback) {\n return this.registry.add(\"libReAnnounced\", callback);\n }\n setLibReAnnounced(lib) {\n this.registry.execute(\"libReAnnounced\", lib);\n }\n send(message, options) {\n if (this.transport.sendObject &&\n this.transport.isObjectBasedTransport) {\n const msg = this.createObjectMessage(message);\n if (this.isTrace) {\n this.logger.trace(`>> ${JSON.stringify(msg)}`);\n }\n return this.transport.sendObject(msg, options);\n }\n else {\n const strMessage = this.createStringMessage(message);\n if (this.isTrace) {\n this.logger.trace(`>> ${strMessage}`);\n }\n return this.transport.send(strMessage, options);\n }\n }\n on(type, messageHandler) {\n type = type.toLowerCase();\n if (this.messageHandlers[type] === undefined) {\n this.messageHandlers[type] = {};\n }\n const id = this.ids++;\n this.messageHandlers[type][id] = messageHandler;\n return {\n type,\n id,\n };\n }\n off(info) {\n delete this.messageHandlers[info.type.toLowerCase()][info.id];\n }\n get isConnected() {\n return this._isLoggedIn;\n }\n connected(callback) {\n return this.loggedIn(() => {\n const currentServer = this.transport.name();\n callback(currentServer);\n });\n }\n disconnected(callback) {\n return this.registry.add(\"disconnected\", callback);\n }\n async login(authRequest, reconnect) {\n if (!this._defaultAuth) {\n this._defaultAuth = authRequest;\n }\n if (this._swapTransport) {\n this.logger.trace(\"Detected a transport swap, swapping transports\");\n const newAuth = this.transportSwap();\n authRequest = newAuth ?? authRequest;\n }\n this.logger.trace(`Starting login for transport: ${this.transport.name()} and auth ${JSON.stringify(authRequest)}`);\n try {\n await this.transport.open();\n this.logger.trace(`Transport: ${this.transport.name()} opened, logging in`);\n timer(\"connection\").mark(\"transport-opened\");\n const identity = await this.loginCore(authRequest, reconnect);\n this.logger.trace(`Logged in with identity: ${JSON.stringify(identity)}`);\n timer(\"connection\").mark(\"protocol-logged-in\");\n return identity;\n }\n catch (error) {\n if (this._switchInProgress) {\n this.logger.trace(\"An error while logging in after a transport swap, preparing a default swap.\");\n this.prepareDefaultSwap();\n }\n throw new Error(error);\n }\n }\n async logout() {\n await this.logoutCore();\n await this.transport.close();\n }\n loggedIn(callback) {\n if (this._isLoggedIn) {\n callback();\n }\n return this.registry.add(\"onLoggedIn\", callback);\n }\n domain(domain, successMessages, errorMessages) {\n let session = this.sessions.find((s) => s.domain === domain);\n if (!session) {\n session = domainSession(domain, this, this.logger.subLogger(`domain=${domain}`), successMessages, errorMessages);\n this.sessions.push(session);\n }\n return session;\n }\n authToken() {\n const createTokenReq = {\n domain: \"global\",\n type: \"create-token\"\n };\n if (!this.globalDomain) {\n return Promise.reject(new Error(\"no global domain session\"));\n }\n return this.globalDomain.send(createTokenReq)\n .then((res) => {\n return res.token;\n });\n }\n reconnect() {\n return this.transport.reconnect();\n }\n setLoggedIn(value) {\n this._isLoggedIn = value;\n if (this._isLoggedIn) {\n this.registry.execute(\"onLoggedIn\");\n }\n }\n distributeMessage(message, type) {\n const handlers = this.messageHandlers[type.toLowerCase()];\n if (handlers !== undefined) {\n Object.keys(handlers).forEach((handlerId) => {\n const handler = handlers[handlerId];\n if (handler !== undefined) {\n try {\n handler(message);\n }\n catch (error) {\n try {\n this.logger.error(`Message handler failed with ${error.stack}`, error);\n }\n catch (loggerError) {\n console.log(\"Message handler failed\", error);\n }\n }\n }\n });\n }\n }\n handleConnectionChanged(connected) {\n if (this._connected === connected) {\n return;\n }\n this._connected = connected;\n if (connected) {\n if (this.settings?.replaySpecs?.length) {\n this.replayer = new MessageReplayerImpl(this.settings.replaySpecs);\n this.replayer.init(this);\n }\n this.registry.execute(\"connected\");\n }\n else {\n this.handleDisconnected();\n this.registry.execute(\"disconnected\");\n }\n }\n handleDisconnected() {\n this.setLoggedIn(false);\n const tryToLogin = this.shouldTryLogin;\n if (tryToLogin && this.initialLogin) {\n if (this.initialLoginAttempts <= 0) {\n return;\n }\n this.initialLoginAttempts--;\n }\n this.logger.debug(\"disconnected - will try new login?\" + this.shouldTryLogin);\n if (this.shouldTryLogin) {\n if (!this.loginConfig) {\n throw new Error(\"no login info\");\n }\n this.login(this.loginConfig, true)\n .catch(() => {\n setTimeout(this.handleDisconnected.bind(this), this.settings.reconnectInterval || 1000);\n });\n }\n }\n handleTransportMessage(msg) {\n let msgObj;\n if (typeof msg === \"string\") {\n msgObj = this.processStringMessage(msg);\n }\n else {\n msgObj = this.processObjectMessage(msg);\n }\n if (this.isTrace) {\n this.logger.trace(`<< ${JSON.stringify(msgObj)}`);\n }\n this.distributeMessage(msgObj.msg, msgObj.msgType);\n }\n verifyConnection() {\n return PromisePlus((resolve) => {\n let unsub;\n const ready = waitForInvocations(2, () => {\n if (unsub) {\n unsub();\n }\n resolve();\n });\n unsub = this.onLibReAnnounced((lib) => {\n if (lib.name === \"interop\") {\n return ready();\n }\n if (lib.name === \"contexts\") {\n return ready();\n }\n });\n }, 10000, \"Transport switch timed out waiting for all libraries to be re-announced\");\n }\n getNewSecondaryTransport(settings) {\n if (!settings.transportConfig?.url) {\n throw new Error(\"Missing secondary transport URL.\");\n }\n return new WS(Object.assign({}, this.settings, { ws: settings.transportConfig.url, reconnectAttempts: 1 }), this.logger.subLogger(\"ws-secondary\"));\n }\n getNewSecondaryAuth(settings) {\n if (!settings.transportConfig?.auth) {\n throw new Error(\"Missing secondary transport auth information.\");\n }\n return settings.transportConfig.auth;\n }\n transportSwap() {\n this._swapTransport = false;\n if (!this._targetTransport || !this._targetAuth) {\n this.logger.warn(`Error while switching transports - either the target transport or auth is not defined: transport defined -> ${!!this._defaultTransport}, auth defined -> ${!!this._targetAuth}. Staying on the current one.`);\n return;\n }\n this._transportSubscriptions.forEach((unsub) => unsub());\n this._transportSubscriptions = [];\n this.transport = this._targetTransport;\n const unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\n const unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\n this._transportSubscriptions.push(unsubConnectionChanged);\n this._transportSubscriptions.push(unsubOnMessage);\n return this._targetAuth;\n }\n prepareDefaultSwap() {\n this._transportSubscriptions.forEach((unsub) => unsub());\n this._transportSubscriptions = [];\n this.transport.close().catch((error) => this.logger.warn(`Error closing the ${this.transport.name()} transport after a failed connection attempt: ${JSON.stringify(error)}`));\n this._targetTransport = this._defaultTransport;\n this._targetAuth = this._defaultAuth;\n this._swapTransport = true;\n }\n processStringMessage(message) {\n const msg = JSON.parse(message, (key, value) => {\n if (typeof value !== \"string\") {\n return value;\n }\n if (value.length < this.dateMinLen) {\n return value;\n }\n if (!value.startsWith(this.datePrefixFirstChar)) {\n return value;\n }\n if (value.substring(0, this.datePrefixLen) !== this.datePrefix) {\n return value;\n }\n try {\n const milliseconds = parseInt(value.substring(this.datePrefixLen, value.length), 10);\n if (isNaN(milliseconds)) {\n return value;\n }\n return new Date(milliseconds);\n }\n catch (ex) {\n return value;\n }\n });\n return {\n msg,\n msgType: msg.type,\n };\n }\n createStringMessage(message) {\n const oldToJson = Date.prototype.toJSON;\n try {\n const datePrefix = this.datePrefix;\n Date.prototype.toJSON = function () {\n return datePrefix + this.getTime();\n };\n const result = JSON.stringify(message);\n return result;\n }\n finally {\n Date.prototype.toJSON = oldToJson;\n }\n }\n processObjectMessage(message) {\n if (!message.type) {\n throw new Error(\"Object should have type property\");\n }\n return {\n msg: message,\n msgType: message.type,\n };\n }\n createObjectMessage(message) {\n return message;\n }\n async loginCore(config, reconnect) {\n this.logger.info(\"logging in...\");\n this.loginConfig = config;\n if (!this.loginConfig) {\n this.loginConfig = { username: \"\", password: \"\" };\n }\n this.shouldTryLogin = true;\n const authentication = await this.setupAuthConfig(config, reconnect);\n const helloMsg = {\n type: \"hello\",\n identity: this.settings.identity,\n authentication\n };\n if (config.sessionId) {\n helloMsg.request_id = config.sessionId;\n }\n this.globalDomain = domainSession(\"global\", this, this.logger.subLogger(\"global-domain\"), [\n \"welcome\",\n \"token\",\n \"authentication-request\"\n ]);\n const sendOptions = { skipPeerId: true };\n if (this.initialLogin) {\n sendOptions.retryInterval = this.settings.reconnectInterval;\n sendOptions.maxRetries = this.settings.reconnectAttempts;\n }\n try {\n const welcomeMsg = await this.tryAuthenticate(this.globalDomain, helloMsg, sendOptions, config);\n this.initialLogin = false;\n this.logger.info(\"login successful with peerId \" + welcomeMsg.peer_id);\n this.peerId = welcomeMsg.peer_id;\n this.resolvedIdentity = welcomeMsg.resolved_identity;\n this.availableDomains = welcomeMsg.available_domains;\n if (welcomeMsg.options) {\n this.token = welcomeMsg.options.access_token;\n this.info = welcomeMsg.options.info;\n }\n this.setLoggedIn(true);\n return welcomeMsg.resolved_identity;\n }\n catch (err) {\n this.logger.error(\"error sending hello message - \" + (err.message || err.msg || err.reason || err), err);\n throw err;\n }\n finally {\n if (config?.flowCallback && config.sessionId) {\n config.flowCallback(config.sessionId, null);\n }\n }\n }\n async tryAuthenticate(globalDomain, helloMsg, sendOptions, config) {\n let welcomeMsg;\n while (true) {\n const msg = await globalDomain.send(helloMsg, undefined, sendOptions);\n if (msg.type === \"authentication-request\") {\n const token = Buffer.from(msg.authentication.token, \"base64\");\n if (config.flowCallback && config.sessionId) {\n helloMsg.authentication.token =\n (await config.flowCallback(config.sessionId, token))\n .data\n .toString(\"base64\");\n }\n helloMsg.request_id = config.sessionId;\n }\n else if (msg.type === \"welcome\") {\n welcomeMsg = msg;\n break;\n }\n else if (msg.type === \"error\") {\n throw new Error(\"Authentication failed: \" + msg.reason);\n }\n else {\n throw new Error(\"Unexpected message type during authentication: \" + msg.type);\n }\n }\n return welcomeMsg;\n }\n async setupAuthConfig(config, reconnect) {\n const authentication = {};\n this.gatewayToken = config.gatewayToken;\n if (config.gatewayToken) {\n if (reconnect) {\n try {\n config.gatewayToken = await this.getNewGWToken();\n }\n catch (e) {\n this.logger.warn(`failed to get GW token when reconnecting ${e?.message || e}`);\n }\n }\n authentication.method = \"gateway-token\";\n authentication.token = config.gatewayToken;\n this.gatewayToken = config.gatewayToken;\n }\n else if (config.flowName === \"sspi\") {\n authentication.provider = \"win\";\n authentication.method = \"access-token\";\n if (config.flowCallback && config.sessionId) {\n authentication.token =\n (await config.flowCallback(config.sessionId, null))\n .data\n .toString(\"base64\");\n }\n else {\n throw new Error(\"Invalid SSPI config\");\n }\n }\n else if (config.token) {\n authentication.method = \"access-token\";\n authentication.token = config.token;\n }\n else if (config.username) {\n authentication.method = \"secret\";\n authentication.login = config.username;\n authentication.secret = config.password;\n }\n else if (config.provider) {\n authentication.provider = config.provider;\n authentication.providerContext = config.providerContext;\n }\n else {\n throw new Error(\"invalid auth message\" + JSON.stringify(config));\n }\n return authentication;\n }\n async logoutCore() {\n this.logger.debug(\"logging out...\");\n this.shouldTryLogin = false;\n if (this.pingTimer) {\n clearTimeout(this.pingTimer);\n }\n const promises = this.sessions.map((session) => {\n session.leave();\n });\n await Promise.all(promises);\n }\n getNewGWToken() {\n if (typeof window !== \"undefined\") {\n const glue42gd = window.glue42gd;\n if (glue42gd) {\n return glue42gd.getGWToken();\n }\n }\n return Promise.reject(new Error(\"not running in GD\"));\n }\n ping() {\n if (!this.shouldTryLogin) {\n return;\n }\n if (this._isLoggedIn) {\n this.send({ type: \"ping\" });\n }\n this.pingTimer = setTimeout(() => {\n this.ping();\n }, 30 * 1000);\n }\n}\n\nconst order = [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"off\"];\nclass Logger {\n name;\n parent;\n static Interop;\n static InteropMethodName = \"T42.AppLogger.Log\";\n static Instance;\n path;\n subLoggers = [];\n _consoleLevel;\n _publishLevel;\n loggerFullName;\n includeTimeAndLevel;\n logFn = console;\n customLogFn = false;\n constructor(name, parent, logFn) {\n this.name = name;\n this.parent = parent;\n this.name = name;\n if (parent) {\n this.path = `${parent.path}.${name}`;\n }\n else {\n this.path = name;\n }\n this.loggerFullName = `[${this.path}]`;\n this.includeTimeAndLevel = !logFn;\n if (logFn) {\n this.logFn = logFn;\n this.customLogFn = true;\n }\n }\n subLogger(name) {\n const existingSub = this.subLoggers.filter((subLogger) => {\n return subLogger.name === name;\n })[0];\n if (existingSub !== undefined) {\n return existingSub;\n }\n Object.keys(this).forEach((key) => {\n if (key === name) {\n throw new Error(\"This sub logger name is not allowed.\");\n }\n });\n const sub = new Logger(name, this, this.customLogFn ? this.logFn : undefined);\n this.subLoggers.push(sub);\n return sub;\n }\n publishLevel(level) {\n if (level) {\n this._publishLevel = level;\n }\n return this._publishLevel || this.parent?.publishLevel();\n }\n consoleLevel(level) {\n if (level) {\n this._consoleLevel = level;\n }\n return this._consoleLevel || this.parent?.consoleLevel();\n }\n log(message, level, error) {\n this.publishMessage(level || \"info\", message, error);\n }\n trace(message) {\n this.log(message, \"trace\");\n }\n debug(message) {\n this.log(message, \"debug\");\n }\n info(message) {\n this.log(message, \"info\");\n }\n warn(message) {\n this.log(message, \"warn\");\n }\n error(message, err) {\n this.log(message, \"error\");\n }\n canPublish(level, compareWith) {\n const levelIdx = order.indexOf(level);\n const restrictionIdx = order.indexOf(compareWith || this.consoleLevel() || \"trace\");\n return levelIdx >= restrictionIdx;\n }\n publishMessage(level, message, error) {\n const loggerName = this.loggerFullName;\n if (level === \"error\" && !error) {\n const e = new Error();\n if (e.stack) {\n message =\n message +\n \"\\n\" +\n e.stack\n .split(\"\\n\")\n .slice(3)\n .join(\"\\n\");\n }\n }\n if (this.canPublish(level, this.publishLevel())) {\n const interop = Logger.Interop;\n if (interop) {\n try {\n if (interop.methods({ name: Logger.InteropMethodName }).length > 0) {\n interop.invoke(Logger.InteropMethodName, {\n msg: `${message}`,\n logger: loggerName,\n level\n });\n }\n }\n catch {\n }\n }\n }\n if (this.canPublish(level)) {\n let prefix = \"\";\n if (this.includeTimeAndLevel) {\n const date = new Date();\n const time = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}:${date.getMilliseconds()}`;\n prefix = `[${time}] [${level}] `;\n }\n const toPrint = `${prefix}${loggerName}: ${message}`;\n switch (level) {\n case \"trace\":\n this.logFn.debug(toPrint);\n break;\n case \"debug\":\n if (this.logFn.debug) {\n this.logFn.debug(toPrint);\n }\n else {\n this.logFn.log(toPrint);\n }\n break;\n case \"info\":\n this.logFn.info(toPrint);\n break;\n case \"warn\":\n this.logFn.warn(toPrint);\n break;\n case \"error\":\n this.logFn.error(toPrint, error);\n break;\n }\n }\n }\n}\n\nconst GW_MESSAGE_CREATE_CONTEXT = \"create-context\";\nconst GW_MESSAGE_ACTIVITY_CREATED = \"created\";\nconst GW_MESSAGE_ACTIVITY_DESTROYED = \"destroyed\";\nconst GW_MESSAGE_CONTEXT_CREATED = \"context-created\";\nconst GW_MESSAGE_CONTEXT_ADDED = \"context-added\";\nconst GW_MESSAGE_SUBSCRIBE_CONTEXT = \"subscribe-context\";\nconst GW_MESSAGE_SUBSCRIBED_CONTEXT = \"subscribed-context\";\nconst GW_MESSAGE_UNSUBSCRIBE_CONTEXT = \"unsubscribe-context\";\nconst GW_MESSAGE_DESTROY_CONTEXT = \"destroy-context\";\nconst GW_MESSAGE_CONTEXT_DESTROYED = \"context-destroyed\";\nconst GW_MESSAGE_UPDATE_CONTEXT = \"update-context\";\nconst GW_MESSAGE_CONTEXT_UPDATED = \"context-updated\";\nconst GW_MESSAGE_JOINED_ACTIVITY = \"joined\";\n\nconst ContextMessageReplaySpec = {\n get name() {\n return \"context\";\n },\n get types() {\n return [\n GW_MESSAGE_CREATE_CONTEXT,\n GW_MESSAGE_ACTIVITY_CREATED,\n GW_MESSAGE_ACTIVITY_DESTROYED,\n GW_MESSAGE_CONTEXT_CREATED,\n GW_MESSAGE_CONTEXT_ADDED,\n GW_MESSAGE_SUBSCRIBE_CONTEXT,\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\n GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\n GW_MESSAGE_DESTROY_CONTEXT,\n GW_MESSAGE_CONTEXT_DESTROYED,\n GW_MESSAGE_UPDATE_CONTEXT,\n GW_MESSAGE_CONTEXT_UPDATED,\n GW_MESSAGE_JOINED_ACTIVITY\n ];\n }\n};\n\nvar version = \"6.3.1\";\n\nfunction prepareConfig (configuration, ext, glue42gd) {\n let nodeStartingContext;\n if (Utils.isNode()) {\n const startingContextString = process.env._GD_STARTING_CONTEXT_;\n if (startingContextString) {\n try {\n nodeStartingContext = JSON.parse(startingContextString);\n }\n catch {\n }\n }\n }\n function getConnection() {\n const gwConfig = configuration.gateway;\n const protocolVersion = gwConfig?.protocolVersion ?? 3;\n const reconnectInterval = gwConfig?.reconnectInterval;\n const reconnectAttempts = gwConfig?.reconnectAttempts;\n const defaultWs = \"ws://localhost:8385\";\n let ws = gwConfig?.ws;\n const sharedWorker = gwConfig?.sharedWorker;\n const inproc = gwConfig?.inproc;\n const webPlatform = gwConfig?.webPlatform ?? undefined;\n if (glue42gd) {\n ws = glue42gd.gwURL;\n }\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwURL) {\n ws = nodeStartingContext.gwURL;\n }\n if (!ws && !sharedWorker && !inproc) {\n ws = defaultWs;\n }\n let instanceId;\n let windowId;\n let pid;\n let environment;\n let region;\n const appName = getApplication();\n let uniqueAppName = appName;\n if (typeof glue42gd !== \"undefined\") {\n windowId = glue42gd.windowId;\n pid = glue42gd.pid;\n if (glue42gd.env) {\n environment = glue42gd.env.env;\n region = glue42gd.env.region;\n }\n uniqueAppName = glue42gd.application ?? \"glue-app\";\n instanceId = glue42gd.appInstanceId;\n }\n else if (Utils.isNode()) {\n pid = process.pid;\n if (nodeStartingContext) {\n environment = nodeStartingContext.env;\n region = nodeStartingContext.region;\n instanceId = nodeStartingContext.instanceId;\n }\n }\n else if (typeof window?.glue42electron !== \"undefined\") {\n windowId = window?.glue42electron.instanceId;\n pid = window?.glue42electron.pid;\n environment = window?.glue42electron.env;\n region = window?.glue42electron.region;\n uniqueAppName = window?.glue42electron.application ?? \"glue-app\";\n instanceId = window?.glue42electron.instanceId;\n }\n else ;\n const replaySpecs = configuration.gateway?.replaySpecs ?? [];\n replaySpecs.push(ContextMessageReplaySpec);\n let identity = {\n application: uniqueAppName,\n applicationName: appName,\n windowId,\n instance: instanceId,\n process: pid,\n region,\n environment,\n api: ext.version || version\n };\n if (configuration.identity) {\n identity = Object.assign(identity, configuration.identity);\n }\n return {\n identity,\n reconnectInterval,\n ws,\n sharedWorker,\n webPlatform,\n inproc,\n protocolVersion,\n reconnectAttempts,\n replaySpecs,\n };\n }\n function getContexts() {\n if (typeof configuration.contexts === \"undefined\") {\n return { reAnnounceKnownContexts: true };\n }\n if (typeof configuration.contexts === \"boolean\" && configuration.contexts) {\n return { reAnnounceKnownContexts: true };\n }\n if (typeof configuration.contexts === \"object\") {\n return Object.assign({}, { reAnnounceKnownContexts: true }, configuration.contexts);\n }\n return false;\n }\n function getApplication() {\n if (configuration.application) {\n return configuration.application;\n }\n if (glue42gd) {\n return glue42gd.applicationName;\n }\n if (typeof window !== \"undefined\" && typeof window.glue42electron !== \"undefined\") {\n return window.glue42electron.application;\n }\n const uid = nanoid(10);\n if (Utils.isNode()) {\n if (nodeStartingContext) {\n return nodeStartingContext.applicationConfig.name;\n }\n return \"NodeJS\" + uid;\n }\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n return document.title + ` (${uid})`;\n }\n return uid;\n }\n function getAuth() {\n if (typeof configuration.auth === \"string\") {\n return {\n token: configuration.auth\n };\n }\n if (configuration.auth) {\n return configuration.auth;\n }\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwToken) {\n return {\n gatewayToken: nodeStartingContext.gwToken\n };\n }\n if (configuration.gateway?.webPlatform || configuration.gateway?.inproc || configuration.gateway?.sharedWorker) {\n return {\n username: \"glue42\", password: \"glue42\"\n };\n }\n }\n function getLogger() {\n let config = configuration.logger;\n const defaultLevel = \"warn\";\n if (!config) {\n config = defaultLevel;\n }\n let gdConsoleLevel;\n if (glue42gd) {\n gdConsoleLevel = glue42gd.consoleLogLevel;\n }\n if (typeof config === \"string\") {\n return { console: gdConsoleLevel ?? config, publish: defaultLevel };\n }\n return {\n console: gdConsoleLevel ?? config.console ?? defaultLevel,\n publish: config.publish ?? defaultLevel\n };\n }\n const connection = getConnection();\n let application = getApplication();\n if (typeof window !== \"undefined\") {\n const windowAsAny = window;\n const containerApplication = windowAsAny.htmlContainer ?\n `${windowAsAny.htmlContainer.containerName}.${windowAsAny.htmlContainer.application}` :\n windowAsAny?.glue42gd?.application;\n if (containerApplication) {\n application = containerApplication;\n }\n }\n return {\n bus: configuration.bus ?? false,\n application,\n auth: getAuth(),\n logger: getLogger(),\n connection,\n metrics: configuration.metrics ?? true,\n contexts: getContexts(),\n version: ext.version || version,\n libs: ext.libs ?? [],\n customLogger: configuration.customLogger\n };\n}\n\nclass GW3ContextData {\n name;\n contextId;\n context;\n isAnnounced;\n joinedActivity;\n updateCallbacks = {};\n activityId;\n sentExplicitSubscription;\n hasReceivedSnapshot;\n constructor(contextId, name, isAnnounced, activityId) {\n this.contextId = contextId;\n this.name = name;\n this.isAnnounced = isAnnounced;\n this.activityId = activityId;\n this.context = {};\n }\n hasCallbacks() {\n return Object.keys(this.updateCallbacks).length > 0;\n }\n getState() {\n if (this.isAnnounced && this.hasCallbacks()) {\n return 3;\n }\n if (this.isAnnounced) {\n return 2;\n }\n if (this.hasCallbacks()) {\n return 1;\n }\n return 0;\n }\n}\n\nvar lodash_clonedeep = {exports: {}};\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nlodash_clonedeep.exports;\n\n(function (module, exports) {\n\t/** Used as the size to enable large array optimizations. */\n\tvar LARGE_ARRAY_SIZE = 200;\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t promiseTag = '[object Promise]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t symbolTag = '[object Symbol]',\n\t weakMapTag = '[object WeakMap]';\n\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t dataViewTag = '[object DataView]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n\t/** Used to match `RegExp` flags from their coerced string values. */\n\tvar reFlags = /\\w*$/;\n\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n\t/** Used to identify `toStringTag` values supported by `_.clone`. */\n\tvar cloneableTags = {};\n\tcloneableTags[argsTag] = cloneableTags[arrayTag] =\n\tcloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n\tcloneableTags[boolTag] = cloneableTags[dateTag] =\n\tcloneableTags[float32Tag] = cloneableTags[float64Tag] =\n\tcloneableTags[int8Tag] = cloneableTags[int16Tag] =\n\tcloneableTags[int32Tag] = cloneableTags[mapTag] =\n\tcloneableTags[numberTag] = cloneableTags[objectTag] =\n\tcloneableTags[regexpTag] = cloneableTags[setTag] =\n\tcloneableTags[stringTag] = cloneableTags[symbolTag] =\n\tcloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n\tcloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n\tcloneableTags[errorTag] = cloneableTags[funcTag] =\n\tcloneableTags[weakMapTag] = false;\n\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n\t/** Detect free variable `self`. */\n\tvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n\t/** Used as a reference to the global object. */\n\tvar root = freeGlobal || freeSelf || Function('return this')();\n\n\t/** Detect free variable `exports`. */\n\tvar freeExports = exports && !exports.nodeType && exports;\n\n\t/** Detect free variable `module`. */\n\tvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n\t/** Detect the popular CommonJS extension `module.exports`. */\n\tvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n\t/**\n\t * Adds the key-value `pair` to `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to modify.\n\t * @param {Array} pair The key-value pair to add.\n\t * @returns {Object} Returns `map`.\n\t */\n\tfunction addMapEntry(map, pair) {\n\t // Don't return `map.set` because it's not chainable in IE 11.\n\t map.set(pair[0], pair[1]);\n\t return map;\n\t}\n\n\t/**\n\t * Adds `value` to `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to modify.\n\t * @param {*} value The value to add.\n\t * @returns {Object} Returns `set`.\n\t */\n\tfunction addSetEntry(set, value) {\n\t // Don't return `set.add` because it's not chainable in IE 11.\n\t set.add(value);\n\t return set;\n\t}\n\n\t/**\n\t * A specialized version of `_.forEach` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayEach(array, iteratee) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t while (++index < length) {\n\t if (iteratee(array[index], index, array) === false) {\n\t break;\n\t }\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Appends the elements of `values` to `array`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {Array} values The values to append.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayPush(array, values) {\n\t var index = -1,\n\t length = values.length,\n\t offset = array.length;\n\n\t while (++index < length) {\n\t array[offset + index] = values[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * A specialized version of `_.reduce` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {boolean} [initAccum] Specify using the first element of `array` as\n\t * the initial value.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\tfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t if (initAccum && length) {\n\t accumulator = array[++index];\n\t }\n\t while (++index < length) {\n\t accumulator = iteratee(accumulator, array[index], index, array);\n\t }\n\t return accumulator;\n\t}\n\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Gets the value at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} [object] The object to query.\n\t * @param {string} key The key of the property to get.\n\t * @returns {*} Returns the property value.\n\t */\n\tfunction getValue(object, key) {\n\t return object == null ? undefined : object[key];\n\t}\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Converts `map` to its key-value pairs.\n\t *\n\t * @private\n\t * @param {Object} map The map to convert.\n\t * @returns {Array} Returns the key-value pairs.\n\t */\n\tfunction mapToArray(map) {\n\t var index = -1,\n\t result = Array(map.size);\n\n\t map.forEach(function(value, key) {\n\t result[++index] = [key, value];\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\n\t/**\n\t * Converts `set` to an array of its values.\n\t *\n\t * @private\n\t * @param {Object} set The set to convert.\n\t * @returns {Array} Returns the values.\n\t */\n\tfunction setToArray(set) {\n\t var index = -1,\n\t result = Array(set.size);\n\n\t set.forEach(function(value) {\n\t result[++index] = value;\n\t });\n\t return result;\n\t}\n\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype,\n\t funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\n\t/** Used to detect overreaching core-js shims. */\n\tvar coreJsData = root['__core-js_shared__'];\n\n\t/** Used to detect methods masquerading as native. */\n\tvar maskSrcKey = (function() {\n\t var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n\t return uid ? ('Symbol(src)_1.' + uid) : '';\n\t}());\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\n\t/** Built-in value references. */\n\tvar Buffer = moduleExports ? root.Buffer : undefined,\n\t Symbol = root.Symbol,\n\t Uint8Array = root.Uint8Array,\n\t getPrototype = overArg(Object.getPrototypeOf, Object),\n\t objectCreate = Object.create,\n\t propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t splice = arrayProto.splice;\n\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetSymbols = Object.getOwnPropertySymbols,\n\t nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n\t nativeKeys = overArg(Object.keys, Object);\n\n\t/* Built-in method references that are verified to be native. */\n\tvar DataView = getNative(root, 'DataView'),\n\t Map = getNative(root, 'Map'),\n\t Promise = getNative(root, 'Promise'),\n\t Set = getNative(root, 'Set'),\n\t WeakMap = getNative(root, 'WeakMap'),\n\t nativeCreate = getNative(Object, 'create');\n\n\t/** Used to detect maps, sets, and weakmaps. */\n\tvar dataViewCtorString = toSource(DataView),\n\t mapCtorString = toSource(Map),\n\t promiseCtorString = toSource(Promise),\n\t setCtorString = toSource(Set),\n\t weakMapCtorString = toSource(WeakMap);\n\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Hash(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the hash.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Hash\n\t */\n\tfunction hashClear() {\n\t this.__data__ = nativeCreate ? nativeCreate(null) : {};\n\t}\n\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Hash\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(key) {\n\t return this.has(key) && delete this.__data__[key];\n\t}\n\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(key) {\n\t var data = this.__data__;\n\t if (nativeCreate) {\n\t var result = data[key];\n\t return result === HASH_UNDEFINED ? undefined : result;\n\t }\n\t return hasOwnProperty.call(data, key) ? data[key] : undefined;\n\t}\n\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Hash\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(key) {\n\t var data = this.__data__;\n\t return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n\t}\n\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the hash instance.\n\t */\n\tfunction hashSet(key, value) {\n\t var data = this.__data__;\n\t data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t return this;\n\t}\n\n\t// Add methods to `Hash`.\n\tHash.prototype.clear = hashClear;\n\tHash.prototype['delete'] = hashDelete;\n\tHash.prototype.get = hashGet;\n\tHash.prototype.has = hashHas;\n\tHash.prototype.set = hashSet;\n\n\t/**\n\t * Creates an list cache object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction ListCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the list cache.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf ListCache\n\t */\n\tfunction listCacheClear() {\n\t this.__data__ = [];\n\t}\n\n\t/**\n\t * Removes `key` and its value from the list cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction listCacheDelete(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t return false;\n\t }\n\t var lastIndex = data.length - 1;\n\t if (index == lastIndex) {\n\t data.pop();\n\t } else {\n\t splice.call(data, index, 1);\n\t }\n\t return true;\n\t}\n\n\t/**\n\t * Gets the list cache value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction listCacheGet(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t return index < 0 ? undefined : data[index][1];\n\t}\n\n\t/**\n\t * Checks if a list cache value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf ListCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction listCacheHas(key) {\n\t return assocIndexOf(this.__data__, key) > -1;\n\t}\n\n\t/**\n\t * Sets the list cache `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the list cache instance.\n\t */\n\tfunction listCacheSet(key, value) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t data.push([key, value]);\n\t } else {\n\t data[index][1] = value;\n\t }\n\t return this;\n\t}\n\n\t// Add methods to `ListCache`.\n\tListCache.prototype.clear = listCacheClear;\n\tListCache.prototype['delete'] = listCacheDelete;\n\tListCache.prototype.get = listCacheGet;\n\tListCache.prototype.has = listCacheHas;\n\tListCache.prototype.set = listCacheSet;\n\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction MapCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapCacheClear() {\n\t this.__data__ = {\n\t 'hash': new Hash,\n\t 'map': new (Map || ListCache),\n\t 'string': new Hash\n\t };\n\t}\n\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapCacheDelete(key) {\n\t return getMapData(this, key)['delete'](key);\n\t}\n\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapCacheGet(key) {\n\t return getMapData(this, key).get(key);\n\t}\n\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapCacheHas(key) {\n\t return getMapData(this, key).has(key);\n\t}\n\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapCacheSet(key, value) {\n\t getMapData(this, key).set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapCacheClear;\n\tMapCache.prototype['delete'] = mapCacheDelete;\n\tMapCache.prototype.get = mapCacheGet;\n\tMapCache.prototype.has = mapCacheHas;\n\tMapCache.prototype.set = mapCacheSet;\n\n\t/**\n\t * Creates a stack cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Stack(entries) {\n\t this.__data__ = new ListCache(entries);\n\t}\n\n\t/**\n\t * Removes all key-value entries from the stack.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Stack\n\t */\n\tfunction stackClear() {\n\t this.__data__ = new ListCache;\n\t}\n\n\t/**\n\t * Removes `key` and its value from the stack.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction stackDelete(key) {\n\t return this.__data__['delete'](key);\n\t}\n\n\t/**\n\t * Gets the stack value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction stackGet(key) {\n\t return this.__data__.get(key);\n\t}\n\n\t/**\n\t * Checks if a stack value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Stack\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction stackHas(key) {\n\t return this.__data__.has(key);\n\t}\n\n\t/**\n\t * Sets the stack `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the stack cache instance.\n\t */\n\tfunction stackSet(key, value) {\n\t var cache = this.__data__;\n\t if (cache instanceof ListCache) {\n\t var pairs = cache.__data__;\n\t if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n\t pairs.push([key, value]);\n\t return this;\n\t }\n\t cache = this.__data__ = new MapCache(pairs);\n\t }\n\t cache.set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `Stack`.\n\tStack.prototype.clear = stackClear;\n\tStack.prototype['delete'] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\n\t/**\n\t * Creates an array of the enumerable property names of the array-like `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @param {boolean} inherited Specify returning inherited property names.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction arrayLikeKeys(value, inherited) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t // Safari 9 makes `arguments.length` enumerable in strict mode.\n\t var result = (isArray(value) || isArguments(value))\n\t ? baseTimes(value.length, String)\n\t : [];\n\n\t var length = result.length,\n\t skipIndexes = !!length;\n\n\t for (var key in value) {\n\t if ((inherited || hasOwnProperty.call(value, key)) &&\n\t !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Assigns `value` to `key` of `object` if the existing value is not equivalent\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {string} key The key of the property to assign.\n\t * @param {*} value The value to assign.\n\t */\n\tfunction assignValue(object, key, value) {\n\t var objValue = object[key];\n\t if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n\t (value === undefined && !(key in object))) {\n\t object[key] = value;\n\t }\n\t}\n\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t var length = array.length;\n\t while (length--) {\n\t if (eq(array[length][0], key)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t}\n\n\t/**\n\t * The base implementation of `_.assign` without support for multiple sources\n\t * or `customizer` functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction baseAssign(object, source) {\n\t return object && copyObject(source, keys(source), object);\n\t}\n\n\t/**\n\t * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n\t * traversed objects.\n\t *\n\t * @private\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @param {boolean} [isFull] Specify a clone including symbols.\n\t * @param {Function} [customizer] The function to customize cloning.\n\t * @param {string} [key] The key of `value`.\n\t * @param {Object} [object] The parent object of `value`.\n\t * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n\t * @returns {*} Returns the cloned value.\n\t */\n\tfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n\t var result;\n\t if (customizer) {\n\t result = object ? customizer(value, key, object, stack) : customizer(value);\n\t }\n\t if (result !== undefined) {\n\t return result;\n\t }\n\t if (!isObject(value)) {\n\t return value;\n\t }\n\t var isArr = isArray(value);\n\t if (isArr) {\n\t result = initCloneArray(value);\n\t if (!isDeep) {\n\t return copyArray(value, result);\n\t }\n\t } else {\n\t var tag = getTag(value),\n\t isFunc = tag == funcTag || tag == genTag;\n\n\t if (isBuffer(value)) {\n\t return cloneBuffer(value, isDeep);\n\t }\n\t if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n\t if (isHostObject(value)) {\n\t return object ? value : {};\n\t }\n\t result = initCloneObject(isFunc ? {} : value);\n\t if (!isDeep) {\n\t return copySymbols(value, baseAssign(result, value));\n\t }\n\t } else {\n\t if (!cloneableTags[tag]) {\n\t return object ? value : {};\n\t }\n\t result = initCloneByTag(value, tag, baseClone, isDeep);\n\t }\n\t }\n\t // Check for circular references and return its corresponding clone.\n\t stack || (stack = new Stack);\n\t var stacked = stack.get(value);\n\t if (stacked) {\n\t return stacked;\n\t }\n\t stack.set(value, result);\n\n\t if (!isArr) {\n\t var props = isFull ? getAllKeys(value) : keys(value);\n\t }\n\t arrayEach(props || value, function(subValue, key) {\n\t if (props) {\n\t key = subValue;\n\t subValue = value[key];\n\t }\n\t // Recursively populate clone (susceptible to call stack limits).\n\t assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * The base implementation of `_.create` without support for assigning\n\t * properties to the created object.\n\t *\n\t * @private\n\t * @param {Object} prototype The object to inherit from.\n\t * @returns {Object} Returns the new object.\n\t */\n\tfunction baseCreate(proto) {\n\t return isObject(proto) ? objectCreate(proto) : {};\n\t}\n\n\t/**\n\t * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n\t * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n\t * symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @param {Function} symbolsFunc The function to get the symbols of `object`.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n\t var result = keysFunc(object);\n\t return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n\t}\n\n\t/**\n\t * The base implementation of `getTag`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction baseGetTag(value) {\n\t return objectToString.call(value);\n\t}\n\n\t/**\n\t * The base implementation of `_.isNative` without bad shim checks.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t * else `false`.\n\t */\n\tfunction baseIsNative(value) {\n\t if (!isObject(value) || isMasked(value)) {\n\t return false;\n\t }\n\t var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t return pattern.test(toSource(value));\n\t}\n\n\t/**\n\t * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t if (!isPrototype(object)) {\n\t return nativeKeys(object);\n\t }\n\t var result = [];\n\t for (var key in Object(object)) {\n\t if (hasOwnProperty.call(object, key) && key != 'constructor') {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `buffer`.\n\t *\n\t * @private\n\t * @param {Buffer} buffer The buffer to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Buffer} Returns the cloned buffer.\n\t */\n\tfunction cloneBuffer(buffer, isDeep) {\n\t if (isDeep) {\n\t return buffer.slice();\n\t }\n\t var result = new buffer.constructor(buffer.length);\n\t buffer.copy(result);\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `arrayBuffer`.\n\t *\n\t * @private\n\t * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n\t * @returns {ArrayBuffer} Returns the cloned array buffer.\n\t */\n\tfunction cloneArrayBuffer(arrayBuffer) {\n\t var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n\t new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `dataView`.\n\t *\n\t * @private\n\t * @param {Object} dataView The data view to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned data view.\n\t */\n\tfunction cloneDataView(dataView, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n\t return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n\t}\n\n\t/**\n\t * Creates a clone of `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned map.\n\t */\n\tfunction cloneMap(map, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n\t return arrayReduce(array, addMapEntry, new map.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of `regexp`.\n\t *\n\t * @private\n\t * @param {Object} regexp The regexp to clone.\n\t * @returns {Object} Returns the cloned regexp.\n\t */\n\tfunction cloneRegExp(regexp) {\n\t var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n\t result.lastIndex = regexp.lastIndex;\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned set.\n\t */\n\tfunction cloneSet(set, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n\t return arrayReduce(array, addSetEntry, new set.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of the `symbol` object.\n\t *\n\t * @private\n\t * @param {Object} symbol The symbol object to clone.\n\t * @returns {Object} Returns the cloned symbol object.\n\t */\n\tfunction cloneSymbol(symbol) {\n\t return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n\t}\n\n\t/**\n\t * Creates a clone of `typedArray`.\n\t *\n\t * @private\n\t * @param {Object} typedArray The typed array to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned typed array.\n\t */\n\tfunction cloneTypedArray(typedArray, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n\t return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n\t}\n\n\t/**\n\t * Copies the values of `source` to `array`.\n\t *\n\t * @private\n\t * @param {Array} source The array to copy values from.\n\t * @param {Array} [array=[]] The array to copy values to.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction copyArray(source, array) {\n\t var index = -1,\n\t length = source.length;\n\n\t array || (array = Array(length));\n\t while (++index < length) {\n\t array[index] = source[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Copies properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy properties from.\n\t * @param {Array} props The property identifiers to copy.\n\t * @param {Object} [object={}] The object to copy properties to.\n\t * @param {Function} [customizer] The function to customize copied values.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copyObject(source, props, object, customizer) {\n\t object || (object = {});\n\n\t var index = -1,\n\t length = props.length;\n\n\t while (++index < length) {\n\t var key = props[index];\n\n\t var newValue = customizer\n\t ? customizer(object[key], source[key], key, object, source)\n\t : undefined;\n\n\t assignValue(object, key, newValue === undefined ? source[key] : newValue);\n\t }\n\t return object;\n\t}\n\n\t/**\n\t * Copies own symbol properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy symbols from.\n\t * @param {Object} [object={}] The object to copy symbols to.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copySymbols(source, object) {\n\t return copyObject(source, getSymbols(source), object);\n\t}\n\n\t/**\n\t * Creates an array of own enumerable property names and symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction getAllKeys(object) {\n\t return baseGetAllKeys(object, keys, getSymbols);\n\t}\n\n\t/**\n\t * Gets the data for `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to query.\n\t * @param {string} key The reference key.\n\t * @returns {*} Returns the map data.\n\t */\n\tfunction getMapData(map, key) {\n\t var data = map.__data__;\n\t return isKeyable(key)\n\t ? data[typeof key == 'string' ? 'string' : 'hash']\n\t : data.map;\n\t}\n\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = getValue(object, key);\n\t return baseIsNative(value) ? value : undefined;\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable symbol properties of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of symbols.\n\t */\n\tvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n\t/**\n\t * Gets the `toStringTag` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tvar getTag = baseGetTag;\n\n\t// Fallback for data views, maps, sets, and weak maps in IE 11,\n\t// for data views in Edge < 14, and promises in Node.js.\n\tif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n\t (Map && getTag(new Map) != mapTag) ||\n\t (Promise && getTag(Promise.resolve()) != promiseTag) ||\n\t (Set && getTag(new Set) != setTag) ||\n\t (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n\t getTag = function(value) {\n\t var result = objectToString.call(value),\n\t Ctor = result == objectTag ? value.constructor : undefined,\n\t ctorString = Ctor ? toSource(Ctor) : undefined;\n\n\t if (ctorString) {\n\t switch (ctorString) {\n\t case dataViewCtorString: return dataViewTag;\n\t case mapCtorString: return mapTag;\n\t case promiseCtorString: return promiseTag;\n\t case setCtorString: return setTag;\n\t case weakMapCtorString: return weakMapTag;\n\t }\n\t }\n\t return result;\n\t };\n\t}\n\n\t/**\n\t * Initializes an array clone.\n\t *\n\t * @private\n\t * @param {Array} array The array to clone.\n\t * @returns {Array} Returns the initialized clone.\n\t */\n\tfunction initCloneArray(array) {\n\t var length = array.length,\n\t result = array.constructor(length);\n\n\t // Add properties assigned by `RegExp#exec`.\n\t if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n\t result.index = array.index;\n\t result.input = array.input;\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Initializes an object clone.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneObject(object) {\n\t return (typeof object.constructor == 'function' && !isPrototype(object))\n\t ? baseCreate(getPrototype(object))\n\t : {};\n\t}\n\n\t/**\n\t * Initializes an object clone based on its `toStringTag`.\n\t *\n\t * **Note:** This function only supports cloning values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @param {string} tag The `toStringTag` of the object to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n\t var Ctor = object.constructor;\n\t switch (tag) {\n\t case arrayBufferTag:\n\t return cloneArrayBuffer(object);\n\n\t case boolTag:\n\t case dateTag:\n\t return new Ctor(+object);\n\n\t case dataViewTag:\n\t return cloneDataView(object, isDeep);\n\n\t case float32Tag: case float64Tag:\n\t case int8Tag: case int16Tag: case int32Tag:\n\t case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n\t return cloneTypedArray(object, isDeep);\n\n\t case mapTag:\n\t return cloneMap(object, isDeep, cloneFunc);\n\n\t case numberTag:\n\t case stringTag:\n\t return new Ctor(object);\n\n\t case regexpTag:\n\t return cloneRegExp(object);\n\n\t case setTag:\n\t return cloneSet(object, isDeep, cloneFunc);\n\n\t case symbolTag:\n\t return cloneSymbol(object);\n\t }\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return !!length &&\n\t (typeof value == 'number' || reIsUint.test(value)) &&\n\t (value > -1 && value % 1 == 0 && value < length);\n\t}\n\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t var type = typeof value;\n\t return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n\t ? (value !== '__proto__')\n\t : (value === null);\n\t}\n\n\t/**\n\t * Checks if `func` has its source masked.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n\t */\n\tfunction isMasked(func) {\n\t return !!maskSrcKey && (maskSrcKey in func);\n\t}\n\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n\t return value === proto;\n\t}\n\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t if (func != null) {\n\t try {\n\t return funcToString.call(func);\n\t } catch (e) {}\n\t try {\n\t return (func + '');\n\t } catch (e) {}\n\t }\n\t return '';\n\t}\n\n\t/**\n\t * This method is like `_.clone` except that it recursively clones `value`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 1.0.0\n\t * @category Lang\n\t * @param {*} value The value to recursively clone.\n\t * @returns {*} Returns the deep cloned value.\n\t * @see _.clone\n\t * @example\n\t *\n\t * var objects = [{ 'a': 1 }, { 'b': 2 }];\n\t *\n\t * var deep = _.cloneDeep(objects);\n\t * console.log(deep[0] === objects[0]);\n\t * // => false\n\t */\n\tfunction cloneDeep(value) {\n\t return baseClone(value, true, true);\n\t}\n\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(value.length) && !isFunction(value);\n\t}\n\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t return isObjectLike(value) && isArrayLike(value);\n\t}\n\n\t/**\n\t * Checks if `value` is a buffer.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.3.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n\t * @example\n\t *\n\t * _.isBuffer(new Buffer(2));\n\t * // => true\n\t *\n\t * _.isBuffer(new Uint8Array(2));\n\t * // => false\n\t */\n\tvar isBuffer = nativeIsBuffer || stubFalse;\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8-9 which returns 'object' for typed array and other constructors.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n\t}\n\n\t/**\n\t * This method returns a new empty array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {Array} Returns the new empty array.\n\t * @example\n\t *\n\t * var arrays = _.times(2, _.stubArray);\n\t *\n\t * console.log(arrays);\n\t * // => [[], []]\n\t *\n\t * console.log(arrays[0] === arrays[1]);\n\t * // => false\n\t */\n\tfunction stubArray() {\n\t return [];\n\t}\n\n\t/**\n\t * This method returns `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {boolean} Returns `false`.\n\t * @example\n\t *\n\t * _.times(2, _.stubFalse);\n\t * // => [false, false]\n\t */\n\tfunction stubFalse() {\n\t return false;\n\t}\n\n\tmodule.exports = cloneDeep; \n} (lodash_clonedeep, lodash_clonedeep.exports));\n\nvar lodash_clonedeepExports = lodash_clonedeep.exports;\nvar cloneDeep = /*@__PURE__*/getDefaultExportFromCjs(lodash_clonedeepExports);\n\nfunction applyContextDelta(context, delta, logger) {\n try {\n if (logger?.canPublish(\"trace\")) {\n logger?.trace(`applying context delta ${JSON.stringify(delta)} on context ${JSON.stringify(context)}`);\n }\n if (!delta) {\n return context;\n }\n if (delta.reset) {\n context = { ...delta.reset };\n return context;\n }\n context = deepClone(context, undefined);\n if (delta.commands) {\n for (const command of delta.commands) {\n if (command.type === \"remove\") {\n deletePath(context, command.path);\n }\n else if (command.type === \"set\") {\n setValueToPath(context, command.value, command.path);\n }\n }\n return context;\n }\n const added = delta.added;\n const updated = delta.updated;\n const removed = delta.removed;\n if (added) {\n Object.keys(added).forEach((key) => {\n context[key] = added[key];\n });\n }\n if (updated) {\n Object.keys(updated).forEach((key) => {\n mergeObjectsProperties(key, context, updated);\n });\n }\n if (removed) {\n removed.forEach((key) => {\n delete context[key];\n });\n }\n return context;\n }\n catch (e) {\n logger?.error(`error applying context delta ${JSON.stringify(delta)} on context ${JSON.stringify(context)}`, e);\n return context;\n }\n}\nfunction deepClone(obj, hash) {\n return cloneDeep(obj);\n}\nconst mergeObjectsProperties = (key, what, withWhat) => {\n const right = withWhat[key];\n if (right === undefined) {\n return what;\n }\n const left = what[key];\n if (!left || !right) {\n what[key] = right;\n return what;\n }\n if (typeof left === \"string\" ||\n typeof left === \"number\" ||\n typeof left === \"boolean\" ||\n typeof right === \"string\" ||\n typeof right === \"number\" ||\n typeof right === \"boolean\" ||\n Array.isArray(left) ||\n Array.isArray(right)) {\n what[key] = right;\n return what;\n }\n what[key] = Object.assign({}, left, right);\n return what;\n};\nfunction deepEqual(x, y) {\n if (x === y) {\n return true;\n }\n if (!(x instanceof Object) || !(y instanceof Object)) {\n return false;\n }\n if (x.constructor !== y.constructor) {\n return false;\n }\n for (const p in x) {\n if (!x.hasOwnProperty(p)) {\n continue;\n }\n if (!y.hasOwnProperty(p)) {\n return false;\n }\n if (x[p] === y[p]) {\n continue;\n }\n if (typeof (x[p]) !== \"object\") {\n return false;\n }\n if (!deepEqual(x[p], y[p])) {\n return false;\n }\n }\n for (const p in y) {\n if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) {\n return false;\n }\n }\n return true;\n}\nfunction setValueToPath(obj, value, path) {\n const pathArr = path.split(\".\");\n let i;\n for (i = 0; i < pathArr.length - 1; i++) {\n if (!obj[pathArr[i]]) {\n obj[pathArr[i]] = {};\n }\n if (typeof obj[pathArr[i]] !== \"object\") {\n obj[pathArr[i]] = {};\n }\n obj = obj[pathArr[i]];\n }\n obj[pathArr[i]] = value;\n}\nfunction isSubset(superObj, subObj) {\n return Object.keys(subObj).every((ele) => {\n if (typeof subObj[ele] === \"object\") {\n return isSubset(superObj?.[ele] || {}, subObj[ele] || {});\n }\n return subObj[ele] === superObj?.[ele];\n });\n}\nfunction deletePath(obj, path) {\n const pathArr = path.split(\".\");\n let i;\n for (i = 0; i < pathArr.length - 1; i++) {\n if (!obj[pathArr[i]]) {\n return;\n }\n obj = obj[pathArr[i]];\n }\n delete obj[pathArr[i]];\n}\n\nclass GW3Bridge {\n _logger;\n _connection;\n _trackAllContexts;\n _reAnnounceKnownContexts;\n _gw3Session;\n _contextNameToData = {};\n _gw3Subscriptions = [];\n _nextCallbackSubscriptionNumber = 0;\n _creationPromises = {};\n _contextNameToId = {};\n _contextIdToName = {};\n _protocolVersion = undefined;\n _contextsTempCache = {};\n _contextsSubscriptionsCache = [];\n _systemContextsSubKey;\n get protocolVersion() {\n if (!this._protocolVersion) {\n const contextsDomainInfo = this._connection.availableDomains.find((d) => d.uri === \"context\");\n this._protocolVersion = contextsDomainInfo?.version ?? 1;\n }\n return this._protocolVersion;\n }\n get setPathSupported() {\n return this.protocolVersion >= 2;\n }\n constructor(config) {\n this._connection = config.connection;\n this._logger = config.logger;\n this._trackAllContexts = config.trackAllContexts;\n this._reAnnounceKnownContexts = config.reAnnounceKnownContexts;\n this._gw3Session = this._connection.domain(\"global\", [\n GW_MESSAGE_CONTEXT_CREATED,\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\n GW_MESSAGE_CONTEXT_DESTROYED,\n GW_MESSAGE_CONTEXT_UPDATED,\n ]);\n this._gw3Session.disconnected(this.resetState.bind(this));\n this._gw3Session.onJoined((wasReconnect) => {\n if (!wasReconnect) {\n return;\n }\n if (!this._reAnnounceKnownContexts) {\n return this._connection.setLibReAnnounced({ name: \"contexts\" });\n }\n this.reInitiateState().then(() => this._connection.setLibReAnnounced({ name: \"contexts\" }));\n });\n this.subscribeToContextCreatedMessages();\n this.subscribeToContextUpdatedMessages();\n this.subscribeToContextDestroyedMessages();\n this._connection.replayer?.drain(ContextMessageReplaySpec.name, (message) => {\n const type = message.type;\n if (!type) {\n return;\n }\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\n type === GW_MESSAGE_CONTEXT_ADDED ||\n type === GW_MESSAGE_ACTIVITY_CREATED) {\n this.handleContextCreatedMessage(message);\n }\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\n type === GW_MESSAGE_CONTEXT_UPDATED ||\n type === GW_MESSAGE_JOINED_ACTIVITY) {\n this.handleContextUpdatedMessage(message);\n }\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\n this.handleContextDestroyedMessage(message);\n }\n });\n }\n dispose() {\n for (const sub of this._gw3Subscriptions) {\n this._connection.off(sub);\n }\n this._gw3Subscriptions.length = 0;\n for (const contextName in this._contextNameToData) {\n if (this._contextNameToId.hasOwnProperty(contextName)) {\n delete this._contextNameToData[contextName];\n }\n }\n }\n createContext(name, data) {\n if (name in this._creationPromises) {\n return this._creationPromises[name];\n }\n this._creationPromises[name] =\n this._gw3Session\n .send({\n type: GW_MESSAGE_CREATE_CONTEXT,\n domain: \"global\",\n name,\n data,\n lifetime: \"retained\",\n })\n .then((createContextMsg) => {\n this._contextNameToId[name] = createContextMsg.context_id;\n this._contextIdToName[createContextMsg.context_id] = name;\n const contextData = this._contextNameToData[name] || new GW3ContextData(createContextMsg.context_id, name, true, undefined);\n contextData.isAnnounced = true;\n contextData.name = name;\n contextData.contextId = createContextMsg.context_id;\n contextData.context = createContextMsg.data || deepClone(data);\n contextData.hasReceivedSnapshot = true;\n this._contextNameToData[name] = contextData;\n delete this._creationPromises[name];\n return createContextMsg.context_id;\n });\n return this._creationPromises[name];\n }\n all() {\n return Object.keys(this._contextNameToData)\n .filter((name) => this._contextNameToData[name].isAnnounced);\n }\n async update(name, delta) {\n if (delta) {\n delta = deepClone(delta);\n }\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n return this.createContext(name, delta);\n }\n let currentContext = contextData.context;\n if (!contextData.hasCallbacks()) {\n currentContext = await this.get(contextData.name);\n }\n const calculatedDelta = this.setPathSupported ?\n this.calculateContextDeltaV2(currentContext, delta) :\n this.calculateContextDeltaV1(currentContext, delta);\n if (!Object.keys(calculatedDelta.added).length\n && !Object.keys(calculatedDelta.updated).length\n && !calculatedDelta.removed.length\n && !calculatedDelta.commands?.length) {\n return Promise.resolve();\n }\n return this._gw3Session\n .send({\n type: GW_MESSAGE_UPDATE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n delta: calculatedDelta,\n }, {}, { skipPeerId: false })\n .then((gwResponse) => {\n this.handleUpdated(contextData, calculatedDelta, {\n updaterId: gwResponse.peer_id\n });\n });\n }\n async set(name, data) {\n if (data) {\n data = deepClone(data);\n }\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n return this.createContext(name, data);\n }\n return this._gw3Session\n .send({\n type: GW_MESSAGE_UPDATE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n delta: { reset: data },\n }, {}, { skipPeerId: false })\n .then((gwResponse) => {\n this.handleUpdated(contextData, {\n reset: data,\n added: {},\n removed: [],\n updated: {}\n }, {\n updaterId: gwResponse.peer_id\n });\n });\n }\n setPath(name, path, value) {\n if (!this.setPathSupported) {\n return Promise.reject(\"glue.contexts.setPath operation is not supported, use Glue42 3.10 or later\");\n }\n return this.setPaths(name, [{ path, value }]);\n }\n async setPaths(name, pathValues) {\n if (!this.setPathSupported) {\n return Promise.reject(\"glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later\");\n }\n if (pathValues) {\n pathValues = deepClone(pathValues);\n }\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n const obj = {};\n for (const pathValue of pathValues) {\n setValueToPath(obj, pathValue.value, pathValue.path);\n }\n return this.createContext(name, obj);\n }\n const commands = [];\n for (const pathValue of pathValues) {\n if (pathValue.value === null) {\n commands.push({ type: \"remove\", path: pathValue.path });\n }\n else {\n commands.push({ type: \"set\", path: pathValue.path, value: pathValue.value });\n }\n }\n return this._gw3Session\n .send({\n type: GW_MESSAGE_UPDATE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n delta: { commands }\n }, {}, { skipPeerId: false })\n .then((gwResponse) => {\n this.handleUpdated(contextData, {\n added: {},\n removed: [],\n updated: {},\n commands\n }, {\n updaterId: gwResponse.peer_id\n });\n });\n }\n async get(name) {\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n return Promise.resolve({});\n }\n if (contextData && (!contextData.hasCallbacks() || !contextData.hasReceivedSnapshot)) {\n return new Promise((resolve) => {\n this.subscribe(name, (data, _d, _r, un) => {\n this.unsubscribe(un);\n resolve(data);\n });\n });\n }\n const context = contextData?.context ?? {};\n return Promise.resolve(deepClone(context));\n }\n async subscribe(name, callback, subscriptionKey) {\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const thisCallbackSubscriptionNumber = typeof subscriptionKey === \"undefined\" ? this._nextCallbackSubscriptionNumber : subscriptionKey;\n if (typeof subscriptionKey === \"undefined\") {\n this._nextCallbackSubscriptionNumber += 1;\n }\n if (this._contextsSubscriptionsCache.every((subscription) => subscription.subKey !== this._nextCallbackSubscriptionNumber)) {\n this._contextsSubscriptionsCache.push({ contextName: name, subKey: thisCallbackSubscriptionNumber, callback });\n }\n let contextData = this._contextNameToData[name];\n if (!contextData ||\n !contextData.isAnnounced) {\n contextData = contextData || new GW3ContextData(undefined, name, false, undefined);\n this._contextNameToData[name] = contextData;\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\n return Promise.resolve(thisCallbackSubscriptionNumber);\n }\n const hadCallbacks = contextData.hasCallbacks();\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\n if (!hadCallbacks) {\n if (!contextData.joinedActivity) {\n if (contextData.context && contextData.sentExplicitSubscription) {\n if (contextData.hasReceivedSnapshot) {\n const clone = deepClone(contextData.context);\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\n }\n return Promise.resolve(thisCallbackSubscriptionNumber);\n }\n return this.sendSubscribe(contextData)\n .then(() => thisCallbackSubscriptionNumber);\n }\n else {\n if (contextData.hasReceivedSnapshot) {\n const clone = deepClone(contextData.context);\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\n }\n return Promise.resolve(thisCallbackSubscriptionNumber);\n }\n }\n else {\n if (contextData.hasReceivedSnapshot) {\n const clone = deepClone(contextData.context);\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\n }\n return Promise.resolve(thisCallbackSubscriptionNumber);\n }\n }\n unsubscribe(subscriptionKey) {\n this._contextsSubscriptionsCache = this._contextsSubscriptionsCache.filter((subscription) => subscription.subKey !== subscriptionKey);\n for (const name of Object.keys(this._contextNameToData)) {\n const contextData = this._contextNameToData[name];\n if (!contextData) {\n return;\n }\n const hadCallbacks = contextData.hasCallbacks();\n delete contextData.updateCallbacks[subscriptionKey];\n if (contextData.isAnnounced &&\n hadCallbacks &&\n !contextData.hasCallbacks() &&\n contextData.sentExplicitSubscription) {\n this.sendUnsubscribe(contextData).catch(() => { });\n }\n if (!contextData.isAnnounced &&\n !contextData.hasCallbacks()) {\n delete this._contextNameToData[name];\n }\n }\n }\n async destroy(name) {\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData) {\n return Promise.reject(`context with ${name} does not exist`);\n }\n return this._gw3Session\n .send({\n type: GW_MESSAGE_DESTROY_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n }).then((_) => undefined);\n }\n handleUpdated(contextData, delta, extraData) {\n const oldContext = contextData.context;\n contextData.context = applyContextDelta(contextData.context, delta, this._logger);\n contextData.hasReceivedSnapshot = true;\n if (this._contextNameToData[contextData.name] === contextData &&\n !deepEqual(oldContext, contextData.context)) {\n this.invokeUpdateCallbacks(contextData, delta, extraData);\n }\n }\n subscribeToContextCreatedMessages() {\n const createdMessageTypes = [\n GW_MESSAGE_CONTEXT_ADDED,\n GW_MESSAGE_CONTEXT_CREATED,\n GW_MESSAGE_ACTIVITY_CREATED,\n ];\n for (const createdMessageType of createdMessageTypes) {\n const sub = this._connection.on(createdMessageType, this.handleContextCreatedMessage.bind(this));\n this._gw3Subscriptions.push(sub);\n }\n }\n handleContextCreatedMessage(contextCreatedMsg) {\n const createdMessageType = contextCreatedMsg.type;\n if (createdMessageType === GW_MESSAGE_ACTIVITY_CREATED) {\n this._contextNameToId[contextCreatedMsg.activity_id] = contextCreatedMsg.context_id;\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.activity_id;\n }\n else if (createdMessageType === GW_MESSAGE_CONTEXT_ADDED) {\n this._contextNameToId[contextCreatedMsg.name] = contextCreatedMsg.context_id;\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.name;\n }\n else ;\n const name = this._contextIdToName[contextCreatedMsg.context_id];\n if (!name) {\n throw new Error(\"Received created event for context with unknown name: \" + contextCreatedMsg.context_id);\n }\n if (!this._contextNameToId[name]) {\n throw new Error(\"Received created event for context with unknown id: \" + contextCreatedMsg.context_id);\n }\n let contextData = this._contextNameToData[name];\n if (contextData) {\n if (contextData.isAnnounced) {\n return;\n }\n else {\n if (!contextData.hasCallbacks()) {\n throw new Error(\"Assertion failure: contextData.hasCallbacks()\");\n }\n contextData.isAnnounced = true;\n contextData.contextId = contextCreatedMsg.context_id;\n contextData.activityId = contextCreatedMsg.activity_id;\n if (!contextData.sentExplicitSubscription) {\n this.sendSubscribe(contextData);\n }\n }\n }\n else {\n this._contextNameToData[name] = contextData =\n new GW3ContextData(contextCreatedMsg.context_id, name, true, contextCreatedMsg.activity_id);\n if (this._trackAllContexts) {\n this.subscribe(name, () => { }).then((subKey) => this._systemContextsSubKey = subKey);\n }\n }\n }\n subscribeToContextUpdatedMessages() {\n const updatedMessageTypes = [\n GW_MESSAGE_CONTEXT_UPDATED,\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\n GW_MESSAGE_JOINED_ACTIVITY,\n ];\n for (const updatedMessageType of updatedMessageTypes) {\n const sub = this._connection.on(updatedMessageType, this.handleContextUpdatedMessage.bind(this));\n this._gw3Subscriptions.push(sub);\n }\n }\n handleContextUpdatedMessage(contextUpdatedMsg) {\n const updatedMessageType = contextUpdatedMsg.type;\n const contextId = contextUpdatedMsg.context_id;\n let contextData = this._contextNameToData[this._contextIdToName[contextId]];\n const justSeen = !contextData || !contextData.isAnnounced;\n if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\n if (!contextData) {\n contextData =\n this._contextNameToData[contextUpdatedMsg.activity_id] ||\n new GW3ContextData(contextId, contextUpdatedMsg.activity_id, true, contextUpdatedMsg.activity_id);\n }\n this._contextNameToData[contextUpdatedMsg.activity_id] = contextData;\n this._contextIdToName[contextId] = contextUpdatedMsg.activity_id;\n this._contextNameToId[contextUpdatedMsg.activity_id] = contextId;\n contextData.contextId = contextId;\n contextData.isAnnounced = true;\n contextData.activityId = contextUpdatedMsg.activity_id;\n contextData.joinedActivity = true;\n }\n else {\n if (!contextData || !contextData.isAnnounced) {\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\n contextData = contextData || new GW3ContextData(contextId, contextUpdatedMsg.name, true, undefined);\n contextData.sentExplicitSubscription = true;\n this._contextNameToData[contextUpdatedMsg.name] = contextData;\n this._contextIdToName[contextId] = contextUpdatedMsg.name;\n this._contextNameToId[contextUpdatedMsg.name] = contextId;\n }\n else {\n this._logger.error(`Received 'update' for unknown context: ${contextId}`);\n }\n return;\n }\n }\n const oldContext = contextData.context;\n contextData.hasReceivedSnapshot = true;\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\n contextData.context = contextUpdatedMsg.data || {};\n }\n else if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\n contextData.context = contextUpdatedMsg.context_snapshot || {};\n }\n else if (updatedMessageType === GW_MESSAGE_CONTEXT_UPDATED) {\n contextData.context = applyContextDelta(contextData.context, contextUpdatedMsg.delta, this._logger);\n }\n else {\n throw new Error(\"Unrecognized context update message \" + updatedMessageType);\n }\n if (justSeen ||\n !deepEqual(contextData.context, oldContext) ||\n updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\n this.invokeUpdateCallbacks(contextData, contextUpdatedMsg.delta, { updaterId: contextUpdatedMsg.updater_id });\n }\n }\n invokeUpdateCallbacks(contextData, delta, extraData) {\n delta = delta || { added: {}, updated: {}, reset: {}, removed: [] };\n if (delta.commands) {\n delta.added = delta.updated = delta.reset = {};\n delta.removed = [];\n for (const command of delta.commands) {\n if (command.type === \"remove\") {\n if (command.path.indexOf(\".\") === -1) {\n delta.removed.push(command.path);\n }\n setValueToPath(delta.updated, null, command.path);\n }\n else if (command.type === \"set\") {\n setValueToPath(delta.updated, command.value, command.path);\n }\n }\n }\n for (const updateCallbackIndex in contextData.updateCallbacks) {\n if (contextData.updateCallbacks.hasOwnProperty(updateCallbackIndex)) {\n try {\n const updateCallback = contextData.updateCallbacks[updateCallbackIndex];\n updateCallback(deepClone(contextData.context), deepClone(Object.assign({}, delta.added || {}, delta.updated || {}, delta.reset || {})), delta.removed, parseInt(updateCallbackIndex, 10), extraData);\n }\n catch (err) {\n this._logger.debug(\"callback error: \" + JSON.stringify(err));\n }\n }\n }\n }\n subscribeToContextDestroyedMessages() {\n const destroyedMessageTypes = [\n GW_MESSAGE_CONTEXT_DESTROYED,\n GW_MESSAGE_ACTIVITY_DESTROYED,\n ];\n for (const destroyedMessageType of destroyedMessageTypes) {\n const sub = this._connection.on(destroyedMessageType, this.handleContextDestroyedMessage.bind(this));\n this._gw3Subscriptions.push(sub);\n }\n }\n handleContextDestroyedMessage(destroyedMsg) {\n const destroyedMessageType = destroyedMsg.type;\n let contextId;\n let name;\n if (destroyedMessageType === GW_MESSAGE_ACTIVITY_DESTROYED) {\n name = destroyedMsg.activity_id;\n contextId = this._contextNameToId[name];\n if (!contextId) {\n this._logger.error(`Received 'destroyed' for unknown activity: ${destroyedMsg.activity_id}`);\n return;\n }\n }\n else {\n contextId = destroyedMsg.context_id;\n name = this._contextIdToName[contextId];\n if (!name) {\n this._logger.error(`Received 'destroyed' for unknown context: ${destroyedMsg.context_id}`);\n return;\n }\n }\n delete this._contextIdToName[contextId];\n delete this._contextNameToId[name];\n const contextData = this._contextNameToData[name];\n delete this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n this._logger.error(`Received 'destroyed' for unknown context: ${contextId}`);\n return;\n }\n }\n sendSubscribe(contextData) {\n contextData.sentExplicitSubscription = true;\n return this._gw3Session\n .send({\n type: GW_MESSAGE_SUBSCRIBE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n }).then((_) => undefined);\n }\n sendUnsubscribe(contextData) {\n contextData.sentExplicitSubscription = false;\n return this._gw3Session\n .send({\n type: GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n }).then((_) => undefined);\n }\n calculateContextDeltaV1(from, to) {\n const delta = { added: {}, updated: {}, removed: [], reset: undefined };\n if (from) {\n for (const x of Object.keys(from)) {\n if (Object.keys(to).indexOf(x) !== -1\n && to[x] !== null\n && !deepEqual(from[x], to[x])) {\n delta.updated[x] = to[x];\n }\n }\n }\n for (const x of Object.keys(to)) {\n if (!from || (Object.keys(from).indexOf(x) === -1)) {\n if (to[x] !== null) {\n delta.added[x] = to[x];\n }\n }\n else if (to[x] === null) {\n delta.removed.push(x);\n }\n }\n return delta;\n }\n calculateContextDeltaV2(from, to) {\n const delta = { added: {}, updated: {}, removed: [], reset: undefined, commands: [] };\n for (const x of Object.keys(to)) {\n if (to[x] !== null) {\n const fromX = from ? from[x] : null;\n if (!deepEqual(fromX, to[x])) {\n delta.commands?.push({ type: \"set\", path: x, value: to[x] });\n }\n }\n else {\n delta.commands?.push({ type: \"remove\", path: x });\n }\n }\n return delta;\n }\n resetState() {\n for (const sub of this._gw3Subscriptions) {\n this._connection.off(sub);\n }\n if (this._systemContextsSubKey) {\n this.unsubscribe(this._systemContextsSubKey);\n delete this._systemContextsSubKey;\n }\n this._gw3Subscriptions = [];\n this._contextNameToId = {};\n this._contextIdToName = {};\n delete this._protocolVersion;\n this._contextsTempCache = Object.keys(this._contextNameToData).reduce((cacheSoFar, ctxName) => {\n cacheSoFar[ctxName] = this._contextNameToData[ctxName].context;\n return cacheSoFar;\n }, {});\n this._contextNameToData = {};\n }\n async reInitiateState() {\n this.subscribeToContextCreatedMessages();\n this.subscribeToContextUpdatedMessages();\n this.subscribeToContextDestroyedMessages();\n this._connection.replayer?.drain(ContextMessageReplaySpec.name, (message) => {\n const type = message.type;\n if (!type) {\n return;\n }\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\n type === GW_MESSAGE_CONTEXT_ADDED ||\n type === GW_MESSAGE_ACTIVITY_CREATED) {\n this.handleContextCreatedMessage(message);\n }\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\n type === GW_MESSAGE_CONTEXT_UPDATED ||\n type === GW_MESSAGE_JOINED_ACTIVITY) {\n this.handleContextUpdatedMessage(message);\n }\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\n this.handleContextDestroyedMessage(message);\n }\n });\n await Promise.all(this._contextsSubscriptionsCache.map((subscription) => this.subscribe(subscription.contextName, subscription.callback, subscription.subKey)));\n await this.flushQueue();\n for (const ctxName in this._contextsTempCache) {\n if (typeof this._contextsTempCache[ctxName] !== \"object\" || Object.keys(this._contextsTempCache[ctxName]).length === 0) {\n continue;\n }\n const lastKnownData = this._contextsTempCache[ctxName];\n this._logger.info(`Re-announcing known context: ${ctxName}`);\n await this.flushQueue();\n await this.update(ctxName, lastKnownData);\n }\n this._contextsTempCache = {};\n this._logger.info(\"Contexts are re-announced\");\n }\n flushQueue() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0));\n }\n}\n\nclass ContextsModule {\n initTime;\n initStartTime;\n initEndTime;\n _bridge;\n constructor(config) {\n this._bridge = new GW3Bridge(config);\n }\n all() {\n return this._bridge.all();\n }\n update(name, data) {\n this.checkName(name);\n this.checkData(data);\n return this._bridge.update(name, data);\n }\n set(name, data) {\n this.checkName(name);\n this.checkData(data);\n return this._bridge.set(name, data);\n }\n setPath(name, path, data) {\n this.checkName(name);\n this.checkPath(path);\n const isTopLevelPath = path === \"\";\n if (isTopLevelPath) {\n this.checkData(data);\n return this.set(name, data);\n }\n return this._bridge.setPath(name, path, data);\n }\n setPaths(name, paths) {\n this.checkName(name);\n if (!Array.isArray(paths)) {\n throw new Error(\"Please provide the paths as an array of PathValues!\");\n }\n for (const { path, value } of paths) {\n this.checkPath(path);\n const isTopLevelPath = path === \"\";\n if (isTopLevelPath) {\n this.checkData(value);\n }\n }\n return this._bridge.setPaths(name, paths);\n }\n subscribe(name, callback) {\n this.checkName(name);\n if (typeof callback !== \"function\") {\n throw new Error(\"Please provide the callback as a function!\");\n }\n return this._bridge\n .subscribe(name, (data, delta, removed, key, extraData) => callback(data, delta, removed, () => this._bridge.unsubscribe(key), extraData))\n .then((key) => () => {\n this._bridge.unsubscribe(key);\n });\n }\n get(name) {\n this.checkName(name);\n return this._bridge.get(name);\n }\n ready() {\n return Promise.resolve(this);\n }\n destroy(name) {\n this.checkName(name);\n return this._bridge.destroy(name);\n }\n get setPathSupported() {\n return this._bridge.setPathSupported;\n }\n checkName(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new Error(\"Please provide the name as a non-empty string!\");\n }\n }\n checkPath(path) {\n if (typeof path !== \"string\") {\n throw new Error(\"Please provide the path as a dot delimited string!\");\n }\n }\n checkData(data) {\n if (typeof data !== \"object\") {\n throw new Error(\"Please provide the data as an object!\");\n }\n }\n}\n\nfunction promisify (promise, successCallback, errorCallback) {\n if (typeof successCallback !== \"function\" && typeof errorCallback !== \"function\") {\n return promise;\n }\n if (typeof successCallback !== \"function\") {\n successCallback = () => { };\n }\n else if (typeof errorCallback !== \"function\") {\n errorCallback = () => { };\n }\n return promise.then(successCallback, errorCallback);\n}\n\nfunction rejectAfter(ms = 0, promise, error) {\n let timeout;\n const clearTimeoutIfThere = () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n };\n promise\n .then(() => {\n clearTimeoutIfThere();\n })\n .catch(() => {\n clearTimeoutIfThere();\n });\n return new Promise((resolve, reject) => {\n timeout = setTimeout(() => reject(error), ms);\n });\n}\n\nvar InvokeStatus;\n(function (InvokeStatus) {\n InvokeStatus[InvokeStatus[\"Success\"] = 0] = \"Success\";\n InvokeStatus[InvokeStatus[\"Error\"] = 1] = \"Error\";\n})(InvokeStatus || (InvokeStatus = {}));\nclass Client {\n protocol;\n repo;\n instance;\n configuration;\n constructor(protocol, repo, instance, configuration) {\n this.protocol = protocol;\n this.repo = repo;\n this.instance = instance;\n this.configuration = configuration;\n }\n subscribe(method, options, successCallback, errorCallback, existingSub) {\n const callProtocolSubscribe = (targetServers, stream, successProxy, errorProxy) => {\n options.methodResponseTimeout = options.methodResponseTimeout ?? options.waitTimeoutMs;\n this.protocol.client.subscribe(stream, options, targetServers, successProxy, errorProxy, existingSub);\n };\n const promise = new Promise((resolve, reject) => {\n const successProxy = (sub) => {\n resolve(sub);\n };\n const errorProxy = (err) => {\n reject(err);\n };\n if (!method) {\n reject(`Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.`);\n return;\n }\n let methodDef;\n if (typeof method === \"string\") {\n methodDef = { name: method };\n }\n else {\n methodDef = method;\n }\n if (!methodDef.name) {\n reject(`Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.`);\n return;\n }\n if (options === undefined) {\n options = {};\n }\n let target = options.target;\n if (target === undefined) {\n target = \"best\";\n }\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\") {\n reject(new Error(`\"${target}\" is not a valid target. Valid targets are \"all\", \"best\", or an instance.`));\n return;\n }\n if (options.methodResponseTimeout === undefined) {\n options.methodResponseTimeout = options.method_response_timeout;\n if (options.methodResponseTimeout === undefined) {\n options.methodResponseTimeout = this.configuration.methodResponseTimeout;\n }\n }\n if (options.waitTimeoutMs === undefined) {\n options.waitTimeoutMs = options.wait_for_method_timeout;\n if (options.waitTimeoutMs === undefined) {\n options.waitTimeoutMs = this.configuration.waitTimeoutMs;\n }\n }\n const delayStep = 500;\n let delayTillNow = 0;\n let currentServers = this.getServerMethodsByFilterAndTarget(methodDef, target);\n if (currentServers.length > 0) {\n callProtocolSubscribe(currentServers, currentServers[0].methods[0], successProxy, errorProxy);\n }\n else {\n const retry = () => {\n if (!target || !(options.waitTimeoutMs)) {\n return;\n }\n delayTillNow += delayStep;\n currentServers = this.getServerMethodsByFilterAndTarget(methodDef, target);\n if (currentServers.length > 0) {\n const streamInfo = currentServers[0].methods[0];\n callProtocolSubscribe(currentServers, streamInfo, successProxy, errorProxy);\n }\n else if (delayTillNow >= options.waitTimeoutMs) {\n const def = typeof method === \"string\" ? { name: method } : method;\n callProtocolSubscribe(currentServers, def, successProxy, errorProxy);\n }\n else {\n setTimeout(retry, delayStep);\n }\n };\n setTimeout(retry, delayStep);\n }\n });\n return promisify(promise, successCallback, errorCallback);\n }\n servers(methodFilter) {\n const filterCopy = methodFilter === undefined\n ? undefined\n : { ...methodFilter };\n return this.getServers(filterCopy).map((serverMethodMap) => {\n return serverMethodMap.server.instance;\n });\n }\n methods(methodFilter) {\n if (typeof methodFilter === \"string\") {\n methodFilter = { name: methodFilter };\n }\n else {\n methodFilter = { ...methodFilter };\n }\n return this.getMethods(methodFilter);\n }\n methodsForInstance(instance) {\n return this.getMethodsForInstance(instance);\n }\n methodAdded(callback) {\n return this.repo.onMethodAdded(callback);\n }\n methodRemoved(callback) {\n return this.repo.onMethodRemoved(callback);\n }\n serverAdded(callback) {\n return this.repo.onServerAdded(callback);\n }\n serverRemoved(callback) {\n return this.repo.onServerRemoved((server, reason) => {\n callback(server, reason);\n });\n }\n serverMethodAdded(callback) {\n return this.repo.onServerMethodAdded((server, method) => {\n callback({ server, method });\n });\n }\n serverMethodRemoved(callback) {\n return this.repo.onServerMethodRemoved((server, method) => {\n callback({ server, method });\n });\n }\n async invoke(methodFilter, argumentObj, target, additionalOptions, success, error) {\n const getInvokePromise = async () => {\n let methodDefinition;\n if (typeof methodFilter === \"string\") {\n methodDefinition = { name: methodFilter };\n }\n else {\n methodDefinition = { ...methodFilter };\n }\n if (!methodDefinition.name) {\n return Promise.reject(`Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.`);\n }\n if (!argumentObj) {\n argumentObj = {};\n }\n if (!target) {\n target = \"best\";\n }\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\" && target !== \"skipMine\") {\n return Promise.reject(new Error(`\"${target}\" is not a valid target. Valid targets are \"all\" and \"best\".`));\n }\n if (!additionalOptions) {\n additionalOptions = {};\n }\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\n additionalOptions.methodResponseTimeoutMs = additionalOptions.method_response_timeout;\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\n additionalOptions.methodResponseTimeoutMs = this.configuration.methodResponseTimeout;\n }\n }\n if (additionalOptions.waitTimeoutMs === undefined) {\n additionalOptions.waitTimeoutMs = additionalOptions.wait_for_method_timeout;\n if (additionalOptions.waitTimeoutMs === undefined) {\n additionalOptions.waitTimeoutMs = this.configuration.waitTimeoutMs;\n }\n }\n if (additionalOptions.waitTimeoutMs !== undefined && typeof additionalOptions.waitTimeoutMs !== \"number\") {\n return Promise.reject(new Error(`\"${additionalOptions.waitTimeoutMs}\" is not a valid number for \"waitTimeoutMs\" `));\n }\n if (typeof argumentObj !== \"object\") {\n return Promise.reject(new Error(`The method arguments must be an object. method: ${methodDefinition.name}`));\n }\n let serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target);\n if (serversMethodMap.length === 0) {\n try {\n serversMethodMap = await this.tryToAwaitForMethods(methodDefinition, target, additionalOptions);\n }\n catch (err) {\n const method = {\n ...methodDefinition,\n getServers: () => [],\n supportsStreaming: false,\n objectTypes: methodDefinition.objectTypes ?? [],\n flags: methodDefinition.flags?.metadata ?? {}\n };\n const errorObj = {\n method,\n called_with: argumentObj,\n message: `Can not find a method matching ${JSON.stringify(methodFilter)} with server filter ${JSON.stringify(target)}`,\n executed_by: undefined,\n returned: undefined,\n status: undefined,\n };\n return Promise.reject(errorObj);\n }\n }\n const timeout = additionalOptions.methodResponseTimeoutMs;\n const additionalOptionsCopy = additionalOptions;\n const invokePromises = serversMethodMap.map((serversMethodPair) => {\n const invId = nanoid(10);\n const method = serversMethodPair.methods[0];\n const server = serversMethodPair.server;\n const invokePromise = this.protocol.client.invoke(invId, method, argumentObj, server, additionalOptionsCopy);\n return Promise.race([\n invokePromise,\n rejectAfter(timeout, invokePromise, {\n invocationId: invId,\n message: `Invocation timeout (${timeout} ms) reached for method name: ${method?.name}, target instance: ${JSON.stringify(server.instance)}, options: ${JSON.stringify(additionalOptionsCopy)}`,\n status: InvokeStatus.Error,\n })\n ]);\n });\n const invocationMessages = await Promise.all(invokePromises);\n const results = this.getInvocationResultObj(invocationMessages, methodDefinition, argumentObj);\n const allRejected = invocationMessages.every((result) => result.status === InvokeStatus.Error);\n if (allRejected) {\n return Promise.reject(results);\n }\n return results;\n };\n return promisify(getInvokePromise(), success, error);\n }\n getInvocationResultObj(invocationResults, method, calledWith) {\n const all_return_values = invocationResults\n .filter((invokeMessage) => invokeMessage.status === InvokeStatus.Success)\n .reduce((allValues, currentValue) => {\n allValues = [\n ...allValues,\n {\n executed_by: currentValue.instance,\n returned: currentValue.result,\n called_with: calledWith,\n method,\n message: currentValue.message,\n status: currentValue.status,\n }\n ];\n return allValues;\n }, []);\n const all_errors = invocationResults\n .filter((invokeMessage) => invokeMessage.status === InvokeStatus.Error)\n .reduce((allErrors, currError) => {\n allErrors = [\n ...allErrors,\n {\n executed_by: currError.instance,\n called_with: calledWith,\n name: method.name,\n message: currError.message,\n }\n ];\n return allErrors;\n }, []);\n const invResult = invocationResults[0];\n const result = {\n method,\n called_with: calledWith,\n returned: invResult.result,\n executed_by: invResult.instance,\n all_return_values,\n all_errors,\n message: invResult.message,\n status: invResult.status\n };\n return result;\n }\n tryToAwaitForMethods(methodDefinition, target, additionalOptions) {\n return new Promise((resolve, reject) => {\n if (additionalOptions.waitTimeoutMs === 0) {\n reject();\n return;\n }\n const delayStep = 500;\n let delayTillNow = 0;\n const retry = () => {\n delayTillNow += delayStep;\n const serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target);\n if (serversMethodMap.length > 0) {\n clearInterval(interval);\n resolve(serversMethodMap);\n }\n else if (delayTillNow >= (additionalOptions.waitTimeoutMs || 10000)) {\n clearInterval(interval);\n reject();\n return;\n }\n };\n const interval = setInterval(retry, delayStep);\n });\n }\n filterByTarget(target, serverMethodMap) {\n if (typeof target === \"string\") {\n if (target === \"all\") {\n return [...serverMethodMap];\n }\n else if (target === \"best\") {\n const localMachine = serverMethodMap\n .find((s) => s.server.instance.isLocal);\n if (localMachine) {\n return [localMachine];\n }\n if (serverMethodMap[0] !== undefined) {\n return [serverMethodMap[0]];\n }\n }\n else if (target === \"skipMine\") {\n return serverMethodMap.filter(({ server }) => server.instance.peerId !== this.instance.peerId);\n }\n }\n else {\n let targetArray;\n if (!Array.isArray(target)) {\n targetArray = [target];\n }\n else {\n targetArray = target;\n }\n const allServersMatching = targetArray.reduce((matches, filter) => {\n const myMatches = serverMethodMap.filter((serverMethodPair) => {\n return this.instanceMatch(filter, serverMethodPair.server.instance);\n });\n return matches.concat(myMatches);\n }, []);\n return allServersMatching;\n }\n return [];\n }\n instanceMatch(instanceFilter, instanceDefinition) {\n return this.containsProps(instanceFilter, instanceDefinition);\n }\n methodMatch(methodFilter, methodDefinition) {\n return this.containsProps(methodFilter, methodDefinition);\n }\n containsProps(filter, repoMethod) {\n const filterProps = Object.keys(filter)\n .filter((prop) => {\n return filter[prop] !== undefined\n && filter[prop] !== null\n && typeof filter[prop] !== \"function\"\n && prop !== \"object_types\"\n && prop !== \"display_name\"\n && prop !== \"id\"\n && prop !== \"gatewayId\"\n && prop !== \"identifier\"\n && prop[0] !== \"_\";\n });\n return filterProps.every((prop) => {\n let isMatch;\n const filterValue = filter[prop];\n const repoMethodValue = repoMethod[prop];\n switch (prop) {\n case \"objectTypes\":\n isMatch = (filterValue || []).every((filterValueEl) => {\n return (repoMethodValue || []).includes(filterValueEl);\n });\n break;\n case \"flags\":\n isMatch = isSubset(repoMethodValue || {}, filterValue || {});\n break;\n default:\n isMatch = String(filterValue).toLowerCase() === String(repoMethodValue).toLowerCase();\n }\n return isMatch;\n });\n }\n getMethods(methodFilter) {\n if (methodFilter === undefined) {\n return this.repo.getMethods();\n }\n const methods = this.repo.getMethods().filter((method) => {\n return this.methodMatch(methodFilter, method);\n });\n return methods;\n }\n getMethodsForInstance(instanceFilter) {\n const allServers = this.repo.getServers();\n const matchingServers = allServers.filter((server) => {\n return this.instanceMatch(instanceFilter, server.instance);\n });\n if (matchingServers.length === 0) {\n return [];\n }\n let resultMethodsObject = {};\n if (matchingServers.length === 1) {\n resultMethodsObject = matchingServers[0].methods;\n }\n else {\n matchingServers.forEach((server) => {\n Object.keys(server.methods).forEach((methodKey) => {\n const method = server.methods[methodKey];\n resultMethodsObject[method.identifier] = method;\n });\n });\n }\n return Object.keys(resultMethodsObject)\n .map((key) => {\n return resultMethodsObject[key];\n });\n }\n getServers(methodFilter) {\n const servers = this.repo.getServers();\n if (methodFilter === undefined) {\n return servers.map((server) => {\n return { server, methods: [] };\n });\n }\n return servers.reduce((prev, current) => {\n const methodsForServer = Object.values(current.methods);\n const matchingMethods = methodsForServer.filter((method) => {\n return this.methodMatch(methodFilter, method);\n });\n if (matchingMethods.length > 0) {\n prev.push({ server: current, methods: matchingMethods });\n }\n return prev;\n }, []);\n }\n getServerMethodsByFilterAndTarget(methodFilter, target) {\n const serversMethodMap = this.getServers(methodFilter);\n return this.filterByTarget(target, serversMethodMap);\n }\n}\n\nclass ServerSubscription {\n protocol;\n repoMethod;\n subscription;\n constructor(protocol, repoMethod, subscription) {\n this.protocol = protocol;\n this.repoMethod = repoMethod;\n this.subscription = subscription;\n }\n get stream() {\n if (!this.repoMethod.stream) {\n throw new Error(\"no stream\");\n }\n return this.repoMethod.stream;\n }\n get arguments() { return this.subscription.arguments || {}; }\n get branchKey() { return this.subscription.branchKey; }\n get instance() {\n if (!this.subscription.instance) {\n throw new Error(\"no instance\");\n }\n return this.subscription.instance;\n }\n close() {\n this.protocol.server.closeSingleSubscription(this.repoMethod, this.subscription);\n }\n push(data) {\n this.protocol.server.pushDataToSingle(this.repoMethod, this.subscription, data);\n }\n}\n\nclass Request {\n protocol;\n repoMethod;\n requestContext;\n arguments;\n instance;\n constructor(protocol, repoMethod, requestContext) {\n this.protocol = protocol;\n this.repoMethod = repoMethod;\n this.requestContext = requestContext;\n this.arguments = requestContext.arguments;\n this.instance = requestContext.instance;\n }\n accept() {\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, \"\");\n }\n acceptOnBranch(branch) {\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, branch);\n }\n reject(reason) {\n this.protocol.server.rejectRequest(this.requestContext, this.repoMethod, reason);\n }\n}\n\nlet ServerStreaming$1 = class ServerStreaming {\n protocol;\n server;\n constructor(protocol, server) {\n this.protocol = protocol;\n this.server = server;\n protocol.server.onSubRequest((rc, rm) => this.handleSubRequest(rc, rm));\n protocol.server.onSubAdded((sub, rm) => this.handleSubAdded(sub, rm));\n protocol.server.onSubRemoved((sub, rm) => this.handleSubRemoved(sub, rm));\n }\n handleSubRequest(requestContext, repoMethod) {\n if (!(repoMethod &&\n repoMethod.streamCallbacks &&\n typeof repoMethod.streamCallbacks.subscriptionRequestHandler === \"function\")) {\n return;\n }\n const request = new Request(this.protocol, repoMethod, requestContext);\n repoMethod.streamCallbacks.subscriptionRequestHandler(request);\n }\n handleSubAdded(subscription, repoMethod) {\n if (!(repoMethod &&\n repoMethod.streamCallbacks &&\n typeof repoMethod.streamCallbacks.subscriptionAddedHandler === \"function\")) {\n return;\n }\n const sub = new ServerSubscription(this.protocol, repoMethod, subscription);\n repoMethod.streamCallbacks.subscriptionAddedHandler(sub);\n }\n handleSubRemoved(subscription, repoMethod) {\n if (!(repoMethod &&\n repoMethod.streamCallbacks &&\n typeof repoMethod.streamCallbacks.subscriptionRemovedHandler === \"function\")) {\n return;\n }\n const sub = new ServerSubscription(this.protocol, repoMethod, subscription);\n repoMethod.streamCallbacks.subscriptionRemovedHandler(sub);\n }\n};\n\nclass ServerBranch {\n key;\n protocol;\n repoMethod;\n constructor(key, protocol, repoMethod) {\n this.key = key;\n this.protocol = protocol;\n this.repoMethod = repoMethod;\n }\n subscriptions() {\n const subList = this.protocol.server.getSubscriptionList(this.repoMethod, this.key);\n return subList.map((sub) => {\n return new ServerSubscription(this.protocol, this.repoMethod, sub);\n });\n }\n close() {\n this.protocol.server.closeAllSubscriptions(this.repoMethod, this.key);\n }\n push(data) {\n this.protocol.server.pushData(this.repoMethod, data, [this.key]);\n }\n}\n\nclass ServerStream {\n _protocol;\n _repoMethod;\n _server;\n name;\n constructor(_protocol, _repoMethod, _server) {\n this._protocol = _protocol;\n this._repoMethod = _repoMethod;\n this._server = _server;\n this.name = this._repoMethod.definition.name;\n }\n branches(key) {\n const bList = this._protocol.server.getBranchList(this._repoMethod);\n if (key) {\n if (bList.indexOf(key) > -1) {\n return new ServerBranch(key, this._protocol, this._repoMethod);\n }\n return undefined;\n }\n else {\n return bList.map((branchKey) => {\n return new ServerBranch(branchKey, this._protocol, this._repoMethod);\n });\n }\n }\n branch(key) {\n return this.branches(key);\n }\n subscriptions() {\n const subList = this._protocol.server.getSubscriptionList(this._repoMethod);\n return subList.map((sub) => {\n return new ServerSubscription(this._protocol, this._repoMethod, sub);\n });\n }\n get definition() {\n const def2 = this._repoMethod.definition;\n return {\n accepts: def2.accepts,\n description: def2.description,\n displayName: def2.displayName,\n name: def2.name,\n objectTypes: def2.objectTypes,\n returns: def2.returns,\n supportsStreaming: def2.supportsStreaming,\n flags: def2.flags?.metadata,\n };\n }\n close() {\n this._protocol.server.closeAllSubscriptions(this._repoMethod);\n this._server.unregister(this._repoMethod.definition, true);\n }\n push(data, branches) {\n if (typeof branches !== \"string\" && !Array.isArray(branches) && branches !== undefined) {\n throw new Error(\"invalid branches should be string or string array\");\n }\n if (typeof data !== \"object\") {\n throw new Error(\"Invalid arguments. Data must be an object.\");\n }\n this._protocol.server.pushData(this._repoMethod, data, branches);\n }\n updateRepoMethod(repoMethod) {\n this._repoMethod = repoMethod;\n }\n}\n\nclass Server {\n protocol;\n serverRepository;\n streaming;\n invocations = 0;\n currentlyUnregistering = {};\n constructor(protocol, serverRepository) {\n this.protocol = protocol;\n this.serverRepository = serverRepository;\n this.streaming = new ServerStreaming$1(protocol, this);\n this.protocol.server.onInvoked(this.onMethodInvoked.bind(this));\n }\n createStream(streamDef, callbacks, successCallback, errorCallback, existingStream) {\n const promise = new Promise((resolve, reject) => {\n if (!streamDef) {\n reject(\"The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream.\");\n return;\n }\n let streamMethodDefinition;\n if (typeof streamDef === \"string\") {\n streamMethodDefinition = { name: \"\" + streamDef };\n }\n else {\n streamMethodDefinition = { ...streamDef };\n }\n if (!streamMethodDefinition.name) {\n return reject(`The “name” property is required for the “streamDefinition” object and must be unique. Stream definition: ${JSON.stringify(streamMethodDefinition)}`);\n }\n const nameAlreadyExists = this.serverRepository.getList()\n .some((serverMethod) => serverMethod.definition.name === streamMethodDefinition.name);\n if (nameAlreadyExists) {\n return reject(`A stream with the name \"${streamMethodDefinition.name}\" already exists! Please, provide a unique name for the stream.`);\n }\n streamMethodDefinition.supportsStreaming = true;\n if (!callbacks) {\n callbacks = {};\n }\n if (typeof callbacks.subscriptionRequestHandler !== \"function\") {\n callbacks.subscriptionRequestHandler = (request) => {\n request.accept();\n };\n }\n const repoMethod = this.serverRepository.add({\n definition: streamMethodDefinition,\n streamCallbacks: callbacks,\n protocolState: {},\n });\n this.protocol.server.createStream(repoMethod)\n .then(() => {\n let streamUserObject;\n if (existingStream) {\n streamUserObject = existingStream;\n existingStream.updateRepoMethod(repoMethod);\n }\n else {\n streamUserObject = new ServerStream(this.protocol, repoMethod, this);\n }\n repoMethod.stream = streamUserObject;\n resolve(streamUserObject);\n })\n .catch((err) => {\n if (repoMethod.repoId) {\n this.serverRepository.remove(repoMethod.repoId);\n }\n reject(err);\n });\n });\n return promisify(promise, successCallback, errorCallback);\n }\n register(methodDefinition, callback) {\n if (!methodDefinition) {\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\n }\n if (typeof callback !== \"function\") {\n return Promise.reject(`The second parameter must be a callback function. Method: ${typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name}`);\n }\n const wrappedCallbackFunction = async (context, resultCallback) => {\n try {\n const result = callback(context.args, context.instance);\n if (result && typeof result.then === \"function\") {\n const resultValue = await result;\n resultCallback(undefined, resultValue);\n }\n else {\n resultCallback(undefined, result);\n }\n }\n catch (e) {\n resultCallback(e ?? \"\", e ?? \"\");\n }\n };\n wrappedCallbackFunction.userCallback = callback;\n return this.registerCore(methodDefinition, wrappedCallbackFunction);\n }\n registerAsync(methodDefinition, callback) {\n if (!methodDefinition) {\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\n }\n if (typeof callback !== \"function\") {\n return Promise.reject(`The second parameter must be a callback function. Method: ${typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name}`);\n }\n const wrappedCallback = async (context, resultCallback) => {\n try {\n let resultCalled = false;\n const success = (result) => {\n if (!resultCalled) {\n resultCallback(undefined, result);\n }\n resultCalled = true;\n };\n const error = (e) => {\n if (!resultCalled) {\n if (!e) {\n e = \"\";\n }\n resultCallback(e, e);\n }\n resultCalled = true;\n };\n const methodResult = callback(context.args, context.instance, success, error);\n if (methodResult && typeof methodResult.then === \"function\") {\n methodResult\n .then(success)\n .catch(error);\n }\n }\n catch (e) {\n resultCallback(e, undefined);\n }\n };\n wrappedCallback.userCallbackAsync = callback;\n return this.registerCore(methodDefinition, wrappedCallback);\n }\n async unregister(methodFilter, forStream = false) {\n if (methodFilter === undefined) {\n return Promise.reject(\"Please, provide either a unique string for a name or an object containing a “name” property.\");\n }\n if (typeof methodFilter === \"function\") {\n await this.unregisterWithPredicate(methodFilter, forStream);\n return;\n }\n let methodDefinition;\n if (typeof methodFilter === \"string\") {\n methodDefinition = { name: methodFilter };\n }\n else {\n methodDefinition = methodFilter;\n }\n if (methodDefinition.name === undefined) {\n return Promise.reject(\"Method name is required. Cannot find a method if the method name is undefined!\");\n }\n const methodToBeRemoved = this.serverRepository.getList().find((serverMethod) => {\n return serverMethod.definition.name === methodDefinition.name\n && (serverMethod.definition.supportsStreaming || false) === forStream;\n });\n if (!methodToBeRemoved) {\n return Promise.reject(`Method with a name \"${methodDefinition.name}\" does not exist or is not registered by your application!`);\n }\n await this.removeMethodsOrStreams([methodToBeRemoved]);\n }\n async unregisterWithPredicate(filterPredicate, forStream) {\n const methodsOrStreamsToRemove = this.serverRepository.getList()\n .filter((sm) => filterPredicate(sm.definition))\n .filter((serverMethod) => (serverMethod.definition.supportsStreaming || false) === forStream);\n if (!methodsOrStreamsToRemove || methodsOrStreamsToRemove.length === 0) {\n return Promise.reject(`Could not find a ${forStream ? \"stream\" : \"method\"} matching the specified condition!`);\n }\n await this.removeMethodsOrStreams(methodsOrStreamsToRemove);\n }\n removeMethodsOrStreams(methodsToRemove) {\n const methodUnregPromises = [];\n methodsToRemove.forEach((method) => {\n const promise = this.protocol.server.unregister(method)\n .then(() => {\n if (method.repoId) {\n this.serverRepository.remove(method.repoId);\n }\n });\n methodUnregPromises.push(promise);\n this.addAsCurrentlyUnregistering(method.definition.name, promise);\n });\n return Promise.all(methodUnregPromises);\n }\n async addAsCurrentlyUnregistering(methodName, promise) {\n const timeout = new Promise((resolve) => setTimeout(resolve, 5000));\n this.currentlyUnregistering[methodName] = Promise.race([promise, timeout]).then(() => {\n delete this.currentlyUnregistering[methodName];\n });\n }\n async registerCore(method, theFunction) {\n let methodDefinition;\n if (typeof method === \"string\") {\n methodDefinition = { name: \"\" + method };\n }\n else {\n methodDefinition = { ...method };\n }\n if (!methodDefinition.name) {\n return Promise.reject(`Please, provide a (unique) string value for the “name” property in the “methodDefinition” object: ${JSON.stringify(method)}`);\n }\n const unregisterInProgress = this.currentlyUnregistering[methodDefinition.name];\n if (typeof unregisterInProgress !== \"undefined\") {\n await unregisterInProgress;\n }\n const nameAlreadyExists = this.serverRepository.getList()\n .some((serverMethod) => serverMethod.definition.name === methodDefinition.name);\n if (nameAlreadyExists) {\n return Promise.reject(`A method with the name \"${methodDefinition.name}\" already exists! Please, provide a unique name for the method.`);\n }\n if (methodDefinition.supportsStreaming) {\n return Promise.reject(`When you create methods with “glue.interop.register()” or “glue.interop.registerAsync()” the property “supportsStreaming” cannot be “true”. If you want “${methodDefinition.name}” to be a stream, please use the “glue.interop.createStream()” method.`);\n }\n const repoMethod = this.serverRepository.add({\n definition: methodDefinition,\n theFunction,\n protocolState: {},\n });\n return this.protocol.server.register(repoMethod)\n .catch((err) => {\n if (repoMethod?.repoId) {\n this.serverRepository.remove(repoMethod.repoId);\n }\n throw err;\n });\n }\n onMethodInvoked(methodToExecute, invocationId, invocationArgs) {\n if (!methodToExecute || !methodToExecute.theFunction) {\n return;\n }\n methodToExecute.theFunction(invocationArgs, (err, result) => {\n if (err !== undefined && err !== null) {\n if (err.message && typeof err.message === \"string\") {\n err = err.message;\n }\n else if (typeof err !== \"string\") {\n try {\n err = JSON.stringify(err);\n }\n catch (unStrException) {\n err = `un-stringifyable error in onMethodInvoked! Top level prop names: ${Object.keys(err)}`;\n }\n }\n }\n if (!result) {\n result = {};\n }\n else if (typeof result !== \"object\" || Array.isArray(result)) {\n result = { _value: result };\n }\n this.protocol.server.methodInvocationResult(methodToExecute, invocationId, err, result);\n });\n }\n}\n\nclass InstanceWrapper {\n wrapped = {};\n constructor(API, instance, connection) {\n this.wrapped.getMethods = function () {\n return API.methodsForInstance(this);\n };\n this.wrapped.getStreams = function () {\n return API.methodsForInstance(this).filter((m) => m.supportsStreaming);\n };\n if (instance) {\n this.refreshWrappedObject(instance);\n }\n if (connection) {\n connection.loggedIn(() => {\n this.refresh(connection);\n });\n this.refresh(connection);\n }\n }\n unwrap() {\n return this.wrapped;\n }\n refresh(connection) {\n if (!connection) {\n return;\n }\n const resolvedIdentity = connection?.resolvedIdentity;\n const instance = Object.assign({}, resolvedIdentity ?? {}, { peerId: connection?.peerId });\n this.refreshWrappedObject(instance);\n }\n refreshWrappedObject(resolvedIdentity) {\n Object.keys(resolvedIdentity).forEach((key) => {\n this.wrapped[key] = resolvedIdentity[key];\n });\n this.wrapped.user = resolvedIdentity.user;\n this.wrapped.instance = resolvedIdentity.instance;\n this.wrapped.application = resolvedIdentity.application ?? nanoid(10);\n this.wrapped.applicationName = resolvedIdentity.applicationName;\n this.wrapped.pid = resolvedIdentity.pid ?? resolvedIdentity.process ?? Math.floor(Math.random() * 10000000000);\n this.wrapped.machine = resolvedIdentity.machine;\n this.wrapped.environment = resolvedIdentity.environment;\n this.wrapped.region = resolvedIdentity.region;\n this.wrapped.windowId = resolvedIdentity.windowId;\n this.wrapped.isLocal = resolvedIdentity.isLocal ?? true;\n this.wrapped.api = resolvedIdentity.api;\n this.wrapped.service = resolvedIdentity.service;\n this.wrapped.peerId = resolvedIdentity.peerId;\n }\n}\n\nconst hideMethodSystemFlags = (method) => {\n return {\n ...method,\n flags: method.flags.metadata || {}\n };\n};\nclass ClientRepository {\n logger;\n API;\n servers = {};\n myServer;\n methodsCount = {};\n callbacks = CallbackRegistryFactory();\n constructor(logger, API) {\n this.logger = logger;\n this.API = API;\n const peerId = this.API.instance.peerId;\n this.myServer = {\n id: peerId,\n methods: {},\n instance: this.API.instance,\n wrapper: this.API.unwrappedInstance,\n };\n this.servers[peerId] = this.myServer;\n }\n addServer(info, serverId) {\n this.logger.debug(`adding server ${serverId}`);\n const current = this.servers[serverId];\n if (current) {\n return current.id;\n }\n const wrapper = new InstanceWrapper(this.API, info);\n const serverEntry = {\n id: serverId,\n methods: {},\n instance: wrapper.unwrap(),\n wrapper,\n };\n this.servers[serverId] = serverEntry;\n this.callbacks.execute(\"onServerAdded\", serverEntry.instance);\n return serverId;\n }\n removeServerById(id, reason) {\n const server = this.servers[id];\n if (!server) {\n this.logger.warn(`not aware of server ${id}, my state ${JSON.stringify(Object.keys(this.servers))}`);\n return;\n }\n else {\n this.logger.debug(`removing server ${id}`);\n }\n Object.keys(server.methods).forEach((methodId) => {\n this.removeServerMethod(id, methodId);\n });\n delete this.servers[id];\n this.callbacks.execute(\"onServerRemoved\", server.instance, reason);\n }\n addServerMethod(serverId, method) {\n const server = this.servers[serverId];\n if (!server) {\n throw new Error(\"server does not exists\");\n }\n if (server.methods[method.id]) {\n return;\n }\n const identifier = this.createMethodIdentifier(method);\n const that = this;\n const methodDefinition = {\n identifier,\n gatewayId: method.id,\n name: method.name,\n displayName: method.display_name,\n description: method.description,\n version: method.version,\n objectTypes: method.object_types || [],\n accepts: method.input_signature,\n returns: method.result_signature,\n supportsStreaming: typeof method.flags !== \"undefined\" ? method.flags.streaming : false,\n flags: method.flags ?? {},\n getServers: () => {\n return that.getServersByMethod(identifier);\n }\n };\n methodDefinition.object_types = methodDefinition.objectTypes;\n methodDefinition.display_name = methodDefinition.displayName;\n methodDefinition.version = methodDefinition.version;\n server.methods[method.id] = methodDefinition;\n const clientMethodDefinition = hideMethodSystemFlags(methodDefinition);\n if (!this.methodsCount[identifier]) {\n this.methodsCount[identifier] = 0;\n this.callbacks.execute(\"onMethodAdded\", clientMethodDefinition);\n }\n this.methodsCount[identifier] = this.methodsCount[identifier] + 1;\n this.callbacks.execute(\"onServerMethodAdded\", server.instance, clientMethodDefinition);\n return methodDefinition;\n }\n removeServerMethod(serverId, methodId) {\n const server = this.servers[serverId];\n if (!server) {\n throw new Error(\"server does not exists\");\n }\n const method = server.methods[methodId];\n delete server.methods[methodId];\n const clientMethodDefinition = hideMethodSystemFlags(method);\n this.methodsCount[method.identifier] = this.methodsCount[method.identifier] - 1;\n if (this.methodsCount[method.identifier] === 0) {\n this.callbacks.execute(\"onMethodRemoved\", clientMethodDefinition);\n }\n this.callbacks.execute(\"onServerMethodRemoved\", server.instance, clientMethodDefinition);\n }\n getMethods() {\n return this.extractMethodsFromServers(Object.values(this.servers)).map(hideMethodSystemFlags);\n }\n getServers() {\n return Object.values(this.servers).map(this.hideServerMethodSystemFlags);\n }\n onServerAdded(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onServerAdded\", callback);\n const serversWithMethodsToReplay = this.getServers().map((s) => s.instance);\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, serversWithMethodsToReplay, callback);\n }\n onMethodAdded(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onMethodAdded\", callback);\n const methodsToReplay = this.getMethods();\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, methodsToReplay, callback);\n }\n onServerMethodAdded(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onServerMethodAdded\", callback);\n let unsubCalled = false;\n const servers = this.getServers();\n setTimeout(() => {\n servers.forEach((server) => {\n const methods = server.methods;\n Object.keys(methods).forEach((methodId) => {\n if (!unsubCalled) {\n callback(server.instance, methods[methodId]);\n }\n });\n });\n }, 0);\n return () => {\n unsubCalled = true;\n unsubscribeFunc();\n };\n }\n onMethodRemoved(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onMethodRemoved\", callback);\n return unsubscribeFunc;\n }\n onServerRemoved(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onServerRemoved\", callback);\n return unsubscribeFunc;\n }\n onServerMethodRemoved(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onServerMethodRemoved\", callback);\n return unsubscribeFunc;\n }\n getServerById(id) {\n return this.hideServerMethodSystemFlags(this.servers[id]);\n }\n reset() {\n Object.keys(this.servers).forEach((key) => {\n this.removeServerById(key, \"reset\");\n });\n this.servers = {\n [this.myServer.id]: this.myServer\n };\n this.methodsCount = {};\n }\n createMethodIdentifier(methodInfo) {\n const accepts = methodInfo.input_signature ?? \"\";\n const returns = methodInfo.result_signature ?? \"\";\n return (methodInfo.name + accepts + returns).toLowerCase();\n }\n getServersByMethod(identifier) {\n const allServers = [];\n Object.values(this.servers).forEach((server) => {\n Object.values(server.methods).forEach((method) => {\n if (method.identifier === identifier) {\n allServers.push(server.instance);\n }\n });\n });\n return allServers;\n }\n returnUnsubWithDelayedReplay(unsubscribeFunc, collectionToReplay, callback) {\n let unsubCalled = false;\n setTimeout(() => {\n collectionToReplay.forEach((item) => {\n if (!unsubCalled) {\n callback(item);\n }\n });\n }, 0);\n return () => {\n unsubCalled = true;\n unsubscribeFunc();\n };\n }\n hideServerMethodSystemFlags(server) {\n const clientMethods = {};\n Object.entries(server.methods).forEach(([name, method]) => {\n clientMethods[name] = hideMethodSystemFlags(method);\n });\n return {\n ...server,\n methods: clientMethods\n };\n }\n extractMethodsFromServers(servers) {\n const methods = Object.values(servers).reduce((clientMethods, server) => {\n return [...clientMethods, ...Object.values(server.methods)];\n }, []);\n return methods;\n }\n}\n\nclass ServerRepository {\n nextId = 0;\n methods = [];\n add(method) {\n method.repoId = String(this.nextId);\n this.nextId += 1;\n this.methods.push(method);\n return method;\n }\n remove(repoId) {\n if (typeof repoId !== \"string\") {\n return new TypeError(\"Expecting a string\");\n }\n this.methods = this.methods.filter((m) => {\n return m.repoId !== repoId;\n });\n }\n getById(id) {\n if (typeof id !== \"string\") {\n return undefined;\n }\n return this.methods.find((m) => {\n return m.repoId === id;\n });\n }\n getList() {\n return this.methods.map((m) => m);\n }\n length() {\n return this.methods.length;\n }\n reset() {\n this.methods = [];\n }\n}\n\nconst SUBSCRIPTION_REQUEST = \"onSubscriptionRequest\";\nconst SUBSCRIPTION_ADDED = \"onSubscriptionAdded\";\nconst SUBSCRIPTION_REMOVED = \"onSubscriptionRemoved\";\nclass ServerStreaming {\n session;\n repository;\n serverRepository;\n ERR_URI_SUBSCRIPTION_FAILED = \"com.tick42.agm.errors.subscription.failure\";\n callbacks = CallbackRegistryFactory();\n nextStreamId = 0;\n constructor(session, repository, serverRepository) {\n this.session = session;\n this.repository = repository;\n this.serverRepository = serverRepository;\n session.on(\"add-interest\", (msg) => {\n this.handleAddInterest(msg);\n });\n session.on(\"remove-interest\", (msg) => {\n this.handleRemoveInterest(msg);\n });\n }\n acceptRequestOnBranch(requestContext, streamingMethod, branch) {\n if (typeof branch !== \"string\") {\n branch = \"\";\n }\n if (typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\n throw new TypeError(\"The streaming method is missing its subscriptions.\");\n }\n if (!Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\n throw new TypeError(\"The streaming method is missing its branches.\");\n }\n const streamId = this.getStreamId(streamingMethod, branch);\n const key = requestContext.msg.subscription_id;\n const subscription = {\n id: key,\n arguments: requestContext.arguments,\n instance: requestContext.instance,\n branchKey: branch,\n streamId,\n subscribeMsg: requestContext.msg,\n };\n streamingMethod.protocolState.subscriptionsMap[key] = subscription;\n this.session.sendFireAndForget({\n type: \"accepted\",\n subscription_id: key,\n stream_id: streamId,\n });\n this.callbacks.execute(SUBSCRIPTION_ADDED, subscription, streamingMethod);\n }\n rejectRequest(requestContext, streamingMethod, reason) {\n if (typeof reason !== \"string\") {\n reason = \"\";\n }\n this.sendSubscriptionFailed(\"Subscription rejected by user. \" + reason, requestContext.msg.subscription_id);\n }\n pushData(streamingMethod, data, branches) {\n if (typeof streamingMethod !== \"object\" || !Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\n return;\n }\n if (typeof data !== \"object\") {\n throw new Error(\"Invalid arguments. Data must be an object.\");\n }\n if (typeof branches === \"string\") {\n branches = [branches];\n }\n else if (!Array.isArray(branches) || branches.length <= 0) {\n branches = [];\n }\n const streamIdList = streamingMethod.protocolState.branchKeyToStreamIdMap\n .filter((br) => {\n if (!branches || branches.length === 0) {\n return true;\n }\n return branches.indexOf(br.key) >= 0;\n }).map((br) => {\n return br.streamId;\n });\n streamIdList.forEach((streamId) => {\n const publishMessage = {\n type: \"publish\",\n stream_id: streamId,\n data,\n };\n this.session.sendFireAndForget(publishMessage);\n });\n }\n pushDataToSingle(method, subscription, data) {\n if (typeof data !== \"object\") {\n throw new Error(\"Invalid arguments. Data must be an object.\");\n }\n const postMessage = {\n type: \"post\",\n subscription_id: subscription.id,\n data,\n };\n this.session.sendFireAndForget(postMessage);\n }\n closeSingleSubscription(streamingMethod, subscription) {\n if (streamingMethod.protocolState.subscriptionsMap) {\n delete streamingMethod.protocolState.subscriptionsMap[subscription.id];\n }\n const dropSubscriptionMessage = {\n type: \"drop-subscription\",\n subscription_id: subscription.id,\n reason: \"Server dropping a single subscription\",\n };\n this.session.sendFireAndForget(dropSubscriptionMessage);\n subscription.instance;\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\n }\n closeMultipleSubscriptions(streamingMethod, branchKey) {\n if (typeof streamingMethod !== \"object\" || typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\n return;\n }\n if (!streamingMethod.protocolState.subscriptionsMap) {\n return;\n }\n const subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\n let subscriptionsToClose = Object.keys(subscriptionsMap)\n .map((key) => {\n return subscriptionsMap[key];\n });\n if (typeof branchKey === \"string\") {\n subscriptionsToClose = subscriptionsToClose.filter((sub) => {\n return sub.branchKey === branchKey;\n });\n }\n subscriptionsToClose.forEach((subscription) => {\n delete subscriptionsMap[subscription.id];\n const drop = {\n type: \"drop-subscription\",\n subscription_id: subscription.id,\n reason: \"Server dropping all subscriptions on stream_id: \" + subscription.streamId,\n };\n this.session.sendFireAndForget(drop);\n });\n }\n getSubscriptionList(streamingMethod, branchKey) {\n if (typeof streamingMethod !== \"object\") {\n return [];\n }\n let subscriptions = [];\n if (!streamingMethod.protocolState.subscriptionsMap) {\n return [];\n }\n const subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\n const allSubscriptions = Object.keys(subscriptionsMap)\n .map((key) => {\n return subscriptionsMap[key];\n });\n if (typeof branchKey !== \"string\") {\n subscriptions = allSubscriptions;\n }\n else {\n subscriptions = allSubscriptions.filter((sub) => {\n return sub.branchKey === branchKey;\n });\n }\n return subscriptions;\n }\n getBranchList(streamingMethod) {\n if (typeof streamingMethod !== \"object\") {\n return [];\n }\n if (!streamingMethod.protocolState.subscriptionsMap) {\n return [];\n }\n const subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\n const allSubscriptions = Object.keys(subscriptionsMap)\n .map((key) => {\n return subscriptionsMap[key];\n });\n const result = [];\n allSubscriptions.forEach((sub) => {\n let branch = \"\";\n if (typeof sub === \"object\" && typeof sub.branchKey === \"string\") {\n branch = sub.branchKey;\n }\n if (result.indexOf(branch) === -1) {\n result.push(branch);\n }\n });\n return result;\n }\n onSubAdded(callback) {\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_ADDED, callback);\n }\n onSubRequest(callback) {\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REQUEST, callback);\n }\n onSubRemoved(callback) {\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REMOVED, callback);\n }\n handleRemoveInterest(msg) {\n const streamingMethod = this.serverRepository.getById(msg.method_id);\n if (typeof msg.subscription_id !== \"string\" ||\n typeof streamingMethod !== \"object\") {\n return;\n }\n if (!streamingMethod.protocolState.subscriptionsMap) {\n return;\n }\n if (typeof streamingMethod.protocolState.subscriptionsMap[msg.subscription_id] !== \"object\") {\n return;\n }\n const subscription = streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\n delete streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\n }\n onSubscriptionLifetimeEvent(eventName, handlerFunc) {\n this.callbacks.add(eventName, handlerFunc);\n }\n getNextStreamId() {\n return this.nextStreamId++ + \"\";\n }\n handleAddInterest(msg) {\n const caller = this.repository.getServerById(msg.caller_id);\n const instance = caller.instance;\n const requestContext = {\n msg,\n arguments: msg.arguments_kv || {},\n instance,\n };\n const streamingMethod = this.serverRepository.getById(msg.method_id);\n if (streamingMethod === undefined) {\n const errorMsg = \"No method with id \" + msg.method_id + \" on this server.\";\n this.sendSubscriptionFailed(errorMsg, msg.subscription_id);\n return;\n }\n if (streamingMethod.protocolState.subscriptionsMap &&\n streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]) {\n this.sendSubscriptionFailed(\"A subscription with id \" + msg.subscription_id + \" already exists.\", msg.subscription_id);\n return;\n }\n this.callbacks.execute(SUBSCRIPTION_REQUEST, requestContext, streamingMethod);\n }\n sendSubscriptionFailed(reason, subscriptionId) {\n const errorMessage = {\n type: \"error\",\n reason_uri: this.ERR_URI_SUBSCRIPTION_FAILED,\n reason,\n request_id: subscriptionId,\n };\n this.session.sendFireAndForget(errorMessage);\n }\n getStreamId(streamingMethod, branchKey) {\n if (typeof branchKey !== \"string\") {\n branchKey = \"\";\n }\n if (!streamingMethod.protocolState.branchKeyToStreamIdMap) {\n throw new Error(`streaming ${streamingMethod.definition.name} method without protocol state`);\n }\n const needleBranch = streamingMethod.protocolState.branchKeyToStreamIdMap.filter((branch) => {\n return branch.key === branchKey;\n })[0];\n let streamId = (needleBranch ? needleBranch.streamId : undefined);\n if (typeof streamId !== \"string\" || streamId === \"\") {\n streamId = this.getNextStreamId();\n streamingMethod.protocolState.branchKeyToStreamIdMap.push({ key: branchKey, streamId });\n }\n return streamId;\n }\n}\n\nclass ServerProtocol {\n session;\n clientRepository;\n serverRepository;\n logger;\n callbacks = CallbackRegistryFactory();\n streaming;\n constructor(session, clientRepository, serverRepository, logger) {\n this.session = session;\n this.clientRepository = clientRepository;\n this.serverRepository = serverRepository;\n this.logger = logger;\n this.streaming = new ServerStreaming(session, clientRepository, serverRepository);\n this.session.on(\"invoke\", (msg) => this.handleInvokeMessage(msg));\n }\n createStream(repoMethod) {\n repoMethod.protocolState.subscriptionsMap = {};\n repoMethod.protocolState.branchKeyToStreamIdMap = [];\n return this.register(repoMethod, true);\n }\n register(repoMethod, isStreaming) {\n const methodDef = repoMethod.definition;\n const flags = Object.assign({}, { metadata: methodDef.flags ?? {} }, { streaming: isStreaming || false });\n const registerMsg = {\n type: \"register\",\n methods: [{\n id: repoMethod.repoId,\n name: methodDef.name,\n display_name: methodDef.displayName,\n description: methodDef.description,\n version: methodDef.version,\n flags,\n object_types: methodDef.objectTypes || methodDef.object_types,\n input_signature: methodDef.accepts,\n result_signature: methodDef.returns,\n restrictions: undefined,\n }],\n };\n return this.session.send(registerMsg, { methodId: repoMethod.repoId })\n .then(() => {\n this.logger.debug(\"registered method \" + repoMethod.definition.name + \" with id \" + repoMethod.repoId);\n })\n .catch((msg) => {\n this.logger.warn(`failed to register method ${repoMethod.definition.name} with id ${repoMethod.repoId} - ${JSON.stringify(msg)}`);\n throw msg;\n });\n }\n onInvoked(callback) {\n this.callbacks.add(\"onInvoked\", callback);\n }\n methodInvocationResult(method, invocationId, err, result) {\n let msg;\n if (err || err === \"\") {\n msg = {\n type: \"error\",\n request_id: invocationId,\n reason_uri: \"agm.errors.client_error\",\n reason: err,\n context: result,\n peer_id: undefined,\n };\n }\n else {\n msg = {\n type: \"yield\",\n invocation_id: invocationId,\n peer_id: this.session.peerId,\n result,\n request_id: undefined,\n };\n }\n this.session.sendFireAndForget(msg);\n }\n async unregister(method) {\n const msg = {\n type: \"unregister\",\n methods: [method.repoId],\n };\n await this.session.send(msg);\n }\n getBranchList(method) {\n return this.streaming.getBranchList(method);\n }\n getSubscriptionList(method, branchKey) {\n return this.streaming.getSubscriptionList(method, branchKey);\n }\n closeAllSubscriptions(method, branchKey) {\n this.streaming.closeMultipleSubscriptions(method, branchKey);\n }\n pushData(method, data, branches) {\n this.streaming.pushData(method, data, branches);\n }\n pushDataToSingle(method, subscription, data) {\n this.streaming.pushDataToSingle(method, subscription, data);\n }\n closeSingleSubscription(method, subscription) {\n this.streaming.closeSingleSubscription(method, subscription);\n }\n acceptRequestOnBranch(requestContext, method, branch) {\n this.streaming.acceptRequestOnBranch(requestContext, method, branch);\n }\n rejectRequest(requestContext, method, reason) {\n this.streaming.rejectRequest(requestContext, method, reason);\n }\n onSubRequest(callback) {\n this.streaming.onSubRequest(callback);\n }\n onSubAdded(callback) {\n this.streaming.onSubAdded(callback);\n }\n onSubRemoved(callback) {\n this.streaming.onSubRemoved(callback);\n }\n handleInvokeMessage(msg) {\n const invocationId = msg.invocation_id;\n const callerId = msg.caller_id;\n const methodId = msg.method_id;\n const args = msg.arguments_kv;\n const methodList = this.serverRepository.getList();\n const method = methodList.filter((m) => {\n return m.repoId === methodId;\n })[0];\n if (method === undefined) {\n return;\n }\n const client = this.clientRepository.getServerById(callerId).instance;\n const invocationArgs = { args, instance: client };\n this.callbacks.execute(\"onInvoked\", method, invocationId, invocationArgs);\n }\n}\n\nclass UserSubscription {\n repository;\n subscriptionData;\n get requestArguments() {\n return this.subscriptionData.params.arguments || {};\n }\n get servers() {\n return this.subscriptionData.trackedServers\n .filter((pair) => pair.subscriptionId)\n .map((pair) => this.repository.getServerById(pair.serverId).instance);\n }\n get serverInstance() {\n return this.servers[0];\n }\n get stream() {\n return this.subscriptionData.method;\n }\n constructor(repository, subscriptionData) {\n this.repository = repository;\n this.subscriptionData = subscriptionData;\n }\n onData(dataCallback) {\n if (typeof dataCallback !== \"function\") {\n throw new TypeError(\"The data callback must be a function.\");\n }\n this.subscriptionData.handlers.onData.push(dataCallback);\n if (this.subscriptionData.handlers.onData.length === 1 && this.subscriptionData.queued.data.length > 0) {\n this.subscriptionData.queued.data.forEach((dataItem) => {\n dataCallback(dataItem);\n });\n }\n }\n onClosed(closedCallback) {\n if (typeof closedCallback !== \"function\") {\n throw new TypeError(\"The callback must be a function.\");\n }\n this.subscriptionData.handlers.onClosed.push(closedCallback);\n }\n onFailed(callback) {\n }\n onConnected(callback) {\n if (typeof callback !== \"function\") {\n throw new TypeError(\"The callback must be a function.\");\n }\n this.subscriptionData.handlers.onConnected.push(callback);\n }\n close() {\n this.subscriptionData.close();\n }\n setNewSubscription(newSub) {\n this.subscriptionData = newSub;\n }\n}\n\nclass TimedCache {\n config;\n cache = [];\n timeoutIds = [];\n constructor(config) {\n this.config = config;\n }\n add(element) {\n const id = nanoid(10);\n this.cache.push({ id, element });\n const timeoutId = setTimeout(() => {\n const elementIdx = this.cache.findIndex((entry) => entry.id === id);\n if (elementIdx < 0) {\n return;\n }\n this.cache.splice(elementIdx, 1);\n }, this.config.ELEMENT_TTL_MS);\n this.timeoutIds.push(timeoutId);\n }\n flush() {\n const elements = this.cache.map((entry) => entry.element);\n this.timeoutIds.forEach((id) => clearInterval(id));\n this.cache = [];\n this.timeoutIds = [];\n return elements;\n }\n}\n\nconst STATUS_AWAITING_ACCEPT = \"awaitingAccept\";\nconst STATUS_SUBSCRIBED = \"subscribed\";\nconst ERR_MSG_SUB_FAILED = \"Subscription failed.\";\nconst ERR_MSG_SUB_REJECTED = \"Subscription rejected.\";\nconst ON_CLOSE_MSG_SERVER_INIT = \"ServerInitiated\";\nconst ON_CLOSE_MSG_CLIENT_INIT = \"ClientInitiated\";\nclass ClientStreaming {\n session;\n repository;\n logger;\n subscriptionsList = {};\n timedCache = new TimedCache({ ELEMENT_TTL_MS: 10000 });\n subscriptionIdToLocalKeyMap = {};\n nextSubLocalKey = 0;\n constructor(session, repository, logger) {\n this.session = session;\n this.repository = repository;\n this.logger = logger;\n session.on(\"subscribed\", this.handleSubscribed);\n session.on(\"event\", this.handleEventData);\n session.on(\"subscription-cancelled\", this.handleSubscriptionCancelled);\n }\n subscribe(streamingMethod, params, targetServers, success, error, existingSub) {\n if (targetServers.length === 0) {\n error({\n method: streamingMethod,\n called_with: params.arguments,\n message: ERR_MSG_SUB_FAILED + \" No available servers matched the target params.\",\n });\n return;\n }\n const subLocalKey = this.getNextSubscriptionLocalKey();\n const pendingSub = this.registerSubscription(subLocalKey, streamingMethod, params, success, error, params.methodResponseTimeout || 10000, existingSub);\n if (typeof pendingSub !== \"object\") {\n error({\n method: streamingMethod,\n called_with: params.arguments,\n message: ERR_MSG_SUB_FAILED + \" Unable to register the user callbacks.\",\n });\n return;\n }\n targetServers.forEach((target) => {\n const serverId = target.server.id;\n const method = target.methods.find((m) => m.name === streamingMethod.name);\n if (!method) {\n this.logger.error(`can not find method ${streamingMethod.name} for target ${target.server.id}`);\n return;\n }\n pendingSub.trackedServers.push({\n serverId,\n subscriptionId: undefined,\n });\n const msg = {\n type: \"subscribe\",\n server_id: serverId,\n method_id: method.gatewayId,\n arguments_kv: params.arguments,\n };\n this.session.send(msg, { serverId, subLocalKey })\n .then((m) => this.handleSubscribed(m))\n .catch((err) => this.handleErrorSubscribing(err));\n });\n }\n drainSubscriptions() {\n const existing = Object.values(this.subscriptionsList);\n this.subscriptionsList = {};\n this.subscriptionIdToLocalKeyMap = {};\n return existing;\n }\n drainSubscriptionsCache() {\n return this.timedCache.flush();\n }\n getNextSubscriptionLocalKey() {\n const current = this.nextSubLocalKey;\n this.nextSubLocalKey += 1;\n return current;\n }\n registerSubscription(subLocalKey, method, params, success, error, timeout, existingSub) {\n const subsInfo = {\n localKey: subLocalKey,\n status: STATUS_AWAITING_ACCEPT,\n method,\n params,\n success,\n error,\n trackedServers: [],\n handlers: {\n onData: existingSub?.handlers.onData || [],\n onClosed: existingSub?.handlers.onClosed || [],\n onConnected: existingSub?.handlers.onConnected || [],\n },\n queued: {\n data: [],\n closers: [],\n },\n timeoutId: undefined,\n close: () => this.closeSubscription(subLocalKey),\n subscription: existingSub?.subscription\n };\n if (!existingSub) {\n if (params.onData) {\n subsInfo.handlers.onData.push(params.onData);\n }\n if (params.onClosed) {\n subsInfo.handlers.onClosed.push(params.onClosed);\n }\n if (params.onConnected) {\n subsInfo.handlers.onConnected.push(params.onConnected);\n }\n }\n this.subscriptionsList[subLocalKey] = subsInfo;\n subsInfo.timeoutId = setTimeout(() => {\n if (this.subscriptionsList[subLocalKey] === undefined) {\n return;\n }\n const pendingSub = this.subscriptionsList[subLocalKey];\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\n error({\n method,\n called_with: params.arguments,\n message: ERR_MSG_SUB_FAILED + \" Subscription attempt timed out after \" + timeout + \" ms.\",\n });\n delete this.subscriptionsList[subLocalKey];\n }\n else if (pendingSub.status === STATUS_SUBSCRIBED && pendingSub.trackedServers.length > 0) {\n pendingSub.trackedServers = pendingSub.trackedServers.filter((server) => {\n return (typeof server.subscriptionId !== \"undefined\");\n });\n delete pendingSub.timeoutId;\n if (pendingSub.trackedServers.length <= 0) {\n this.callOnClosedHandlers(pendingSub);\n delete this.subscriptionsList[subLocalKey];\n }\n }\n }, timeout);\n return subsInfo;\n }\n handleErrorSubscribing = (errorResponse) => {\n const tag = errorResponse._tag;\n const subLocalKey = tag.subLocalKey;\n const pendingSub = this.subscriptionsList[subLocalKey];\n if (typeof pendingSub !== \"object\") {\n return;\n }\n pendingSub.trackedServers = pendingSub.trackedServers.filter((server) => {\n return server.serverId !== tag.serverId;\n });\n if (pendingSub.trackedServers.length <= 0) {\n clearTimeout(pendingSub.timeoutId);\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\n const reason = (typeof errorResponse.reason === \"string\" && errorResponse.reason !== \"\") ?\n ' Publisher said \"' + errorResponse.reason + '\".' :\n \" No reason given.\";\n const callArgs = typeof pendingSub.params.arguments === \"object\" ?\n JSON.stringify(pendingSub.params.arguments) :\n \"{}\";\n pendingSub.error({\n message: ERR_MSG_SUB_REJECTED + reason + \" Called with:\" + callArgs,\n called_with: pendingSub.params.arguments,\n method: pendingSub.method,\n });\n }\n else if (pendingSub.status === STATUS_SUBSCRIBED) {\n this.callOnClosedHandlers(pendingSub);\n }\n delete this.subscriptionsList[subLocalKey];\n }\n };\n handleSubscribed = (msg) => {\n const subLocalKey = msg._tag.subLocalKey;\n const pendingSub = this.subscriptionsList[subLocalKey];\n if (typeof pendingSub !== \"object\") {\n return;\n }\n const serverId = msg._tag.serverId;\n const acceptingServer = pendingSub.trackedServers\n .filter((server) => {\n return server.serverId === serverId;\n })[0];\n if (typeof acceptingServer !== \"object\") {\n return;\n }\n acceptingServer.subscriptionId = msg.subscription_id;\n this.subscriptionIdToLocalKeyMap[msg.subscription_id] = subLocalKey;\n const isFirstResponse = (pendingSub.status === STATUS_AWAITING_ACCEPT);\n pendingSub.status = STATUS_SUBSCRIBED;\n if (isFirstResponse) {\n let reconnect = false;\n let sub = pendingSub.subscription;\n if (sub) {\n sub.setNewSubscription(pendingSub);\n pendingSub.success(sub);\n reconnect = true;\n }\n else {\n sub = new UserSubscription(this.repository, pendingSub);\n pendingSub.subscription = sub;\n pendingSub.success(sub);\n }\n for (const handler of pendingSub.handlers.onConnected) {\n try {\n handler(sub.serverInstance, reconnect);\n }\n catch (e) {\n }\n }\n }\n };\n handleEventData = (msg) => {\n const subLocalKey = this.subscriptionIdToLocalKeyMap[msg.subscription_id];\n if (typeof subLocalKey === \"undefined\") {\n return;\n }\n const subscription = this.subscriptionsList[subLocalKey];\n if (typeof subscription !== \"object\") {\n return;\n }\n const trackedServersFound = subscription.trackedServers.filter((server) => {\n return server.subscriptionId === msg.subscription_id;\n });\n if (trackedServersFound.length !== 1) {\n return;\n }\n const isPrivateData = msg.oob;\n const sendingServerId = trackedServersFound[0].serverId;\n const receivedStreamData = () => {\n return {\n data: msg.data,\n server: this.repository.getServerById(sendingServerId).instance,\n requestArguments: subscription.params.arguments,\n message: undefined,\n private: isPrivateData,\n };\n };\n const onDataHandlers = subscription.handlers.onData;\n const queuedData = subscription.queued.data;\n if (onDataHandlers.length > 0) {\n onDataHandlers.forEach((callback) => {\n if (typeof callback === \"function\") {\n callback(receivedStreamData());\n }\n });\n }\n else {\n queuedData.push(receivedStreamData());\n }\n };\n handleSubscriptionCancelled = (msg) => {\n const subLocalKey = this.subscriptionIdToLocalKeyMap[msg.subscription_id];\n if (typeof subLocalKey === \"undefined\") {\n return;\n }\n const subscription = this.subscriptionsList[subLocalKey];\n if (typeof subscription !== \"object\") {\n return;\n }\n const expectedNewLength = subscription.trackedServers.length - 1;\n subscription.trackedServers = subscription.trackedServers.filter((server) => {\n if (server.subscriptionId === msg.subscription_id) {\n subscription.queued.closers.push(server.serverId);\n return false;\n }\n else {\n return true;\n }\n });\n if (subscription.trackedServers.length !== expectedNewLength) {\n return;\n }\n if (subscription.trackedServers.length <= 0) {\n this.timedCache.add(subscription);\n clearTimeout(subscription.timeoutId);\n this.callOnClosedHandlers(subscription);\n delete this.subscriptionsList[subLocalKey];\n }\n delete this.subscriptionIdToLocalKeyMap[msg.subscription_id];\n };\n callOnClosedHandlers(subscription, reason) {\n const closersCount = subscription.queued.closers.length;\n const closingServerId = (closersCount > 0) ? subscription.queued.closers[closersCount - 1] : null;\n let closingServer;\n if (closingServerId !== undefined && typeof closingServerId === \"string\") {\n closingServer = this.repository.getServerById(closingServerId).instance;\n }\n subscription.handlers.onClosed.forEach((callback) => {\n if (typeof callback !== \"function\") {\n return;\n }\n callback({\n message: reason || ON_CLOSE_MSG_SERVER_INIT,\n requestArguments: subscription.params.arguments || {},\n server: closingServer,\n stream: subscription.method,\n });\n });\n }\n closeSubscription(subLocalKey) {\n const subscription = this.subscriptionsList[subLocalKey];\n if (typeof subscription !== \"object\") {\n return;\n }\n subscription.trackedServers.forEach((server) => {\n if (typeof server.subscriptionId === \"undefined\") {\n return;\n }\n subscription.queued.closers.push(server.serverId);\n this.session.sendFireAndForget({\n type: \"unsubscribe\",\n subscription_id: server.subscriptionId,\n reason_uri: \"\",\n reason: ON_CLOSE_MSG_CLIENT_INIT,\n });\n delete this.subscriptionIdToLocalKeyMap[server.subscriptionId];\n });\n subscription.trackedServers = [];\n this.callOnClosedHandlers(subscription, ON_CLOSE_MSG_CLIENT_INIT);\n delete this.subscriptionsList[subLocalKey];\n }\n}\n\nclass ClientProtocol {\n session;\n repository;\n logger;\n streaming;\n constructor(session, repository, logger) {\n this.session = session;\n this.repository = repository;\n this.logger = logger;\n session.on(\"peer-added\", (msg) => this.handlePeerAdded(msg));\n session.on(\"peer-removed\", (msg) => this.handlePeerRemoved(msg));\n session.on(\"methods-added\", (msg) => this.handleMethodsAddedMessage(msg));\n session.on(\"methods-removed\", (msg) => this.handleMethodsRemovedMessage(msg));\n this.streaming = new ClientStreaming(session, repository, logger);\n }\n subscribe(stream, options, targetServers, success, error, existingSub) {\n this.streaming.subscribe(stream, options, targetServers, success, error, existingSub);\n }\n invoke(id, method, args, target) {\n const serverId = target.id;\n const methodId = method.gatewayId;\n const msg = {\n type: \"call\",\n server_id: serverId,\n method_id: methodId,\n arguments_kv: args,\n };\n return this.session.send(msg, { invocationId: id, serverId })\n .then((m) => this.handleResultMessage(m))\n .catch((err) => this.handleInvocationError(err));\n }\n drainSubscriptions() {\n return this.streaming.drainSubscriptions();\n }\n drainSubscriptionsCache() {\n return this.streaming.drainSubscriptionsCache();\n }\n handlePeerAdded(msg) {\n const newPeerId = msg.new_peer_id;\n const remoteId = msg.identity;\n const isLocal = msg.meta ? msg.meta.local : true;\n const pid = Number(remoteId.process);\n const serverInfo = {\n machine: remoteId.machine,\n pid: isNaN(pid) ? remoteId.process : pid,\n instance: remoteId.instance,\n application: remoteId.application,\n applicationName: remoteId.applicationName,\n environment: remoteId.environment,\n region: remoteId.region,\n user: remoteId.user,\n windowId: remoteId.windowId,\n peerId: newPeerId,\n api: remoteId.api,\n isLocal\n };\n this.repository.addServer(serverInfo, newPeerId);\n }\n handlePeerRemoved(msg) {\n const removedPeerId = msg.removed_id;\n const reason = msg.reason;\n this.repository.removeServerById(removedPeerId, reason);\n }\n handleMethodsAddedMessage(msg) {\n const serverId = msg.server_id;\n const methods = msg.methods;\n methods.forEach((method) => {\n this.repository.addServerMethod(serverId, method);\n });\n }\n handleMethodsRemovedMessage(msg) {\n const serverId = msg.server_id;\n const methodIdList = msg.methods;\n const server = this.repository.getServerById(serverId);\n const serverMethodKeys = Object.keys(server.methods);\n serverMethodKeys.forEach((methodKey) => {\n const method = server.methods[methodKey];\n if (methodIdList.indexOf(method.gatewayId) > -1) {\n this.repository.removeServerMethod(serverId, methodKey);\n }\n });\n }\n handleResultMessage(msg) {\n const invocationId = msg._tag.invocationId;\n const result = msg.result;\n const serverId = msg._tag.serverId;\n const server = this.repository.getServerById(serverId);\n return {\n invocationId,\n result,\n instance: server.instance,\n status: InvokeStatus.Success,\n message: \"\"\n };\n }\n handleInvocationError(msg) {\n this.logger.debug(`handle invocation error ${JSON.stringify(msg)}`);\n if (\"_tag\" in msg) {\n const invocationId = msg._tag.invocationId;\n const serverId = msg._tag.serverId;\n const server = this.repository.getServerById(serverId);\n const message = msg.reason;\n const context = msg.context;\n return {\n invocationId,\n result: context,\n instance: server.instance,\n status: InvokeStatus.Error,\n message\n };\n }\n else {\n return {\n invocationId: \"\",\n message: msg.message,\n status: InvokeStatus.Error,\n error: msg\n };\n }\n }\n}\n\nfunction gW3ProtocolFactory (instance, connection, clientRepository, serverRepository, libConfig, interop) {\n const logger = libConfig.logger.subLogger(\"gw3-protocol\");\n let resolveReadyPromise;\n const readyPromise = new Promise((resolve) => {\n resolveReadyPromise = resolve;\n });\n const session = connection.domain(\"agm\", [\"subscribed\"]);\n const server = new ServerProtocol(session, clientRepository, serverRepository, logger.subLogger(\"server\"));\n const client = new ClientProtocol(session, clientRepository, logger.subLogger(\"client\"));\n async function handleReconnect() {\n logger.info(\"reconnected - will replay registered methods and subscriptions\");\n client.drainSubscriptionsCache().forEach((sub) => {\n const methodInfo = sub.method;\n const params = Object.assign({}, sub.params);\n logger.info(`trying to soft-re-subscribe to method ${methodInfo.name}, with params: ${JSON.stringify(params)}`);\n interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(() => logger.info(`soft-subscribing to method ${methodInfo.name} DONE`)).catch((error) => logger.warn(`subscribing to method ${methodInfo.name} failed: ${JSON.stringify(error)}}`));\n });\n const reconnectionPromises = [];\n const existingSubscriptions = client.drainSubscriptions();\n for (const sub of existingSubscriptions) {\n const methodInfo = sub.method;\n const params = Object.assign({}, sub.params);\n logger.info(`trying to re-subscribe to method ${methodInfo.name}, with params: ${JSON.stringify(params)}`);\n reconnectionPromises.push(interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(() => logger.info(`subscribing to method ${methodInfo.name} DONE`)));\n }\n const registeredMethods = serverRepository.getList();\n serverRepository.reset();\n for (const method of registeredMethods) {\n const def = method.definition;\n if (method.stream) {\n reconnectionPromises.push(interop.server.createStream(def, method.streamCallbacks, undefined, undefined, method.stream)\n .then(() => logger.info(`subscribing to method ${def.name} DONE`))\n .catch(() => logger.warn(`subscribing to method ${def.name} FAILED`)));\n }\n else if (method?.theFunction?.userCallback) {\n reconnectionPromises.push(interop.register(def, method.theFunction.userCallback)\n .then(() => logger.info(`registering method ${def.name} DONE`))\n .catch(() => logger.warn(`registering method ${def.name} FAILED`)));\n }\n else if (method?.theFunction?.userCallbackAsync) {\n reconnectionPromises.push(interop.registerAsync(def, method.theFunction.userCallbackAsync)\n .then(() => logger.info(`registering method ${def.name} DONE`))\n .catch(() => logger.warn(`registering method ${def.name} FAILED`)));\n }\n }\n await Promise.all(reconnectionPromises);\n logger.info(\"Interop is re-announced\");\n }\n function handleInitialJoin() {\n if (resolveReadyPromise) {\n resolveReadyPromise({\n client,\n server,\n });\n resolveReadyPromise = undefined;\n }\n }\n session.onJoined((reconnect) => {\n clientRepository.addServer(instance, connection.peerId);\n if (reconnect) {\n handleReconnect().then(() => connection.setLibReAnnounced({ name: \"interop\" })).catch((error) => logger.warn(`Error while re-announcing interop: ${JSON.stringify(error)}`));\n }\n else {\n handleInitialJoin();\n }\n });\n session.onLeft(() => {\n clientRepository.reset();\n });\n session.join();\n return readyPromise;\n}\n\nclass Interop {\n instance;\n readyPromise;\n client;\n server;\n unwrappedInstance;\n protocol;\n clientRepository;\n serverRepository;\n constructor(configuration) {\n if (typeof configuration === \"undefined\") {\n throw new Error(\"configuration is required\");\n }\n if (typeof configuration.connection === \"undefined\") {\n throw new Error(\"configuration.connections is required\");\n }\n const connection = configuration.connection;\n if (typeof configuration.methodResponseTimeout !== \"number\") {\n configuration.methodResponseTimeout = 30 * 1000;\n }\n if (typeof configuration.waitTimeoutMs !== \"number\") {\n configuration.waitTimeoutMs = 30 * 1000;\n }\n this.unwrappedInstance = new InstanceWrapper(this, undefined, connection);\n this.instance = this.unwrappedInstance.unwrap();\n this.clientRepository = new ClientRepository(configuration.logger.subLogger(\"cRep\"), this);\n this.serverRepository = new ServerRepository();\n let protocolPromise;\n if (connection.protocolVersion === 3) {\n protocolPromise = gW3ProtocolFactory(this.instance, connection, this.clientRepository, this.serverRepository, configuration, this);\n }\n else {\n throw new Error(`protocol ${connection.protocolVersion} not supported`);\n }\n this.readyPromise = protocolPromise.then((protocol) => {\n this.protocol = protocol;\n this.client = new Client(this.protocol, this.clientRepository, this.instance, configuration);\n this.server = new Server(this.protocol, this.serverRepository);\n return this;\n });\n }\n ready() {\n return this.readyPromise;\n }\n serverRemoved(callback) {\n return this.client.serverRemoved(callback);\n }\n serverAdded(callback) {\n return this.client.serverAdded(callback);\n }\n serverMethodRemoved(callback) {\n return this.client.serverMethodRemoved(callback);\n }\n serverMethodAdded(callback) {\n return this.client.serverMethodAdded(callback);\n }\n methodRemoved(callback) {\n return this.client.methodRemoved(callback);\n }\n methodAdded(callback) {\n return this.client.methodAdded(callback);\n }\n methodsForInstance(instance) {\n return this.client.methodsForInstance(instance);\n }\n methods(methodFilter) {\n return this.client.methods(methodFilter);\n }\n servers(methodFilter) {\n return this.client.servers(methodFilter);\n }\n subscribe(method, options, successCallback, errorCallback) {\n return this.client.subscribe(method, options, successCallback, errorCallback);\n }\n createStream(streamDef, callbacks, successCallback, errorCallback) {\n return this.server.createStream(streamDef, callbacks, successCallback, errorCallback);\n }\n unregister(methodFilter) {\n return this.server.unregister(methodFilter);\n }\n registerAsync(methodDefinition, callback) {\n return this.server.registerAsync(methodDefinition, callback);\n }\n register(methodDefinition, callback) {\n return this.server.register(methodDefinition, callback);\n }\n invoke(methodFilter, argumentObj, target, additionalOptions, success, error) {\n return this.client.invoke(methodFilter, argumentObj, target, additionalOptions, success, error);\n }\n waitForMethod(name) {\n const pw = new PromiseWrapper();\n const unsubscribe = this.client.methodAdded((m) => {\n if (m.name === name) {\n unsubscribe();\n pw.resolve(m);\n }\n });\n return pw.promise;\n }\n}\n\nconst successMessages = [\"subscribed\", \"success\"];\nclass MessageBus {\n connection;\n logger;\n peerId;\n session;\n subscriptions;\n readyPromise;\n constructor(connection, logger) {\n this.connection = connection;\n this.logger = logger;\n this.peerId = connection.peerId;\n this.subscriptions = [];\n this.session = connection.domain(\"bus\", successMessages);\n this.readyPromise = this.session.join();\n this.readyPromise.then(() => {\n this.watchOnEvent();\n });\n }\n ready() {\n return this.readyPromise;\n }\n publish = (topic, data, options) => {\n const { routingKey, target } = options || {};\n const args = this.removeEmptyValues({\n type: \"publish\",\n topic,\n data,\n peer_id: this.peerId,\n routing_key: routingKey,\n target_identity: target\n });\n this.session.send(args);\n };\n subscribe = (topic, callback, options) => {\n return new Promise((resolve, reject) => {\n const { routingKey, target } = options || {};\n const args = this.removeEmptyValues({\n type: \"subscribe\",\n topic,\n peer_id: this.peerId,\n routing_key: routingKey,\n source: target\n });\n this.session.send(args)\n .then((response) => {\n const { subscription_id } = response;\n this.subscriptions.push({ subscription_id, topic, callback, source: target });\n resolve({\n unsubscribe: () => {\n this.session.send({ type: \"unsubscribe\", subscription_id, peer_id: this.peerId });\n this.subscriptions = this.subscriptions.filter((s) => s.subscription_id !== subscription_id);\n return Promise.resolve();\n }\n });\n })\n .catch((error) => reject(error));\n });\n };\n watchOnEvent = () => {\n this.session.on(\"event\", (args) => {\n const { data, subscription_id } = args;\n const source = args[\"publisher-identity\"];\n const subscription = this.subscriptions.find((s) => s.subscription_id === subscription_id);\n if (subscription) {\n if (!subscription.source) {\n subscription.callback(data, subscription.topic, source);\n }\n else {\n if (this.keysMatch(subscription.source, source)) {\n subscription.callback(data, subscription.topic, source);\n }\n }\n }\n });\n };\n removeEmptyValues(obj) {\n const cleaned = {};\n Object.keys(obj).forEach((key) => {\n if (obj[key] !== undefined && obj[key] !== null) {\n cleaned[key] = obj[key];\n }\n });\n return cleaned;\n }\n keysMatch(obj1, obj2) {\n const keysObj1 = Object.keys(obj1);\n let allMatch = true;\n keysObj1.forEach((key) => {\n if (obj1[key] !== obj2[key]) {\n allMatch = false;\n }\n });\n return allMatch;\n }\n}\n\nconst IOConnectCoreFactory = (userConfig, ext) => {\n const iodesktop = typeof window === \"object\" ? (window.iodesktop ?? window.glue42gd) : undefined;\n const preloadPromise = typeof window === \"object\" ? (window.gdPreloadPromise ?? Promise.resolve()) : Promise.resolve();\n const glueInitTimer = timer(\"glue\");\n userConfig = userConfig || {};\n ext = ext || {};\n const internalConfig = prepareConfig(userConfig, ext, iodesktop);\n let _connection;\n let _interop;\n let _logger;\n let _metrics;\n let _contexts;\n let _bus;\n let _allowTrace;\n const libs = {};\n function registerLib(name, inner, t) {\n _allowTrace = _logger.canPublish(\"trace\");\n if (_allowTrace) {\n _logger.trace(`registering ${name} module`);\n }\n const done = () => {\n inner.initTime = t.stop();\n inner.initEndTime = t.endTime;\n inner.marks = t.marks;\n if (_allowTrace) {\n _logger.trace(`${name} is ready - ${t.endTime - t.startTime}`);\n }\n };\n inner.initStartTime = t.startTime;\n if (inner.ready) {\n inner.ready().then(() => {\n done();\n });\n }\n else {\n done();\n }\n if (!Array.isArray(name)) {\n name = [name];\n }\n name.forEach((n) => {\n libs[n] = inner;\n IOConnectCoreFactory[n] = inner;\n });\n }\n function setupConnection() {\n const initTimer = timer(\"connection\");\n _connection = new Connection(internalConfig.connection, _logger.subLogger(\"connection\"));\n let authPromise = Promise.resolve(internalConfig.auth);\n if (internalConfig.connection && !internalConfig.auth) {\n if (iodesktop) {\n authPromise = iodesktop.getGWToken()\n .then((token) => {\n return {\n gatewayToken: token\n };\n });\n }\n else if (typeof window !== \"undefined\" && window?.glue42electron) {\n if (typeof window.glue42electron.gwToken === \"string\") {\n authPromise = Promise.resolve({\n gatewayToken: window.glue42electron.gwToken\n });\n }\n }\n else {\n authPromise = Promise.reject(\"You need to provide auth information\");\n }\n }\n return authPromise\n .then((authConfig) => {\n initTimer.mark(\"auth-promise-resolved\");\n let authRequest;\n if (Object.prototype.toString.call(authConfig) === \"[object Object]\") {\n authRequest = authConfig;\n }\n else {\n throw new Error(\"Invalid auth object - \" + JSON.stringify(authConfig));\n }\n return _connection.login(authRequest);\n })\n .then(() => {\n registerLib(\"connection\", _connection, initTimer);\n return internalConfig;\n })\n .catch((e) => {\n if (_connection) {\n _connection.logout();\n }\n throw e;\n });\n }\n function setupLogger() {\n const initTimer = timer(\"logger\");\n _logger = new Logger(`${internalConfig.connection.identity?.application}`, undefined, internalConfig.customLogger);\n _logger.consoleLevel(internalConfig.logger.console);\n _logger.publishLevel(internalConfig.logger.publish);\n if (_logger.canPublish(\"debug\")) {\n _logger.debug(\"initializing glue...\");\n }\n registerLib(\"logger\", _logger, initTimer);\n return Promise.resolve(undefined);\n }\n function setupMetrics() {\n const initTimer = timer(\"metrics\");\n const config = internalConfig.metrics;\n const metricsPublishingEnabledFunc = iodesktop?.getMetricsPublishingEnabled;\n const identity = internalConfig.connection.identity;\n const canUpdateMetric = metricsPublishingEnabledFunc ? metricsPublishingEnabledFunc : () => true;\n const disableAutoAppSystem = (typeof config !== \"boolean\" && config.disableAutoAppSystem) ?? false;\n _metrics = metrics({\n connection: config ? _connection : undefined,\n logger: _logger.subLogger(\"metrics\"),\n canUpdateMetric,\n system: \"Glue42\",\n service: identity?.service ?? iodesktop?.applicationName ?? internalConfig.application,\n instance: identity?.instance ?? identity?.windowId ?? nanoid(10),\n disableAutoAppSystem,\n pagePerformanceMetrics: typeof config !== \"boolean\" ? config?.pagePerformanceMetrics : undefined\n });\n registerLib(\"metrics\", _metrics, initTimer);\n return Promise.resolve();\n }\n function setupInterop() {\n const initTimer = timer(\"interop\");\n const agmConfig = {\n connection: _connection,\n logger: _logger.subLogger(\"interop\"),\n };\n _interop = new Interop(agmConfig);\n Logger.Interop = _interop;\n registerLib([\"interop\", \"agm\"], _interop, initTimer);\n return Promise.resolve();\n }\n function setupContexts() {\n const hasActivities = (internalConfig.activities && _connection.protocolVersion === 3);\n const needsContexts = internalConfig.contexts || hasActivities;\n if (needsContexts) {\n const initTimer = timer(\"contexts\");\n _contexts = new ContextsModule({\n connection: _connection,\n logger: _logger.subLogger(\"contexts\"),\n trackAllContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.trackAllContexts : false,\n reAnnounceKnownContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.reAnnounceKnownContexts : false\n });\n registerLib(\"contexts\", _contexts, initTimer);\n return _contexts;\n }\n else {\n const replayer = _connection.replayer;\n if (replayer) {\n replayer.drain(ContextMessageReplaySpec.name);\n }\n }\n }\n async function setupBus() {\n if (!internalConfig.bus) {\n return Promise.resolve();\n }\n const initTimer = timer(\"bus\");\n _bus = new MessageBus(_connection, _logger.subLogger(\"bus\"));\n registerLib(\"bus\", _bus, initTimer);\n return Promise.resolve();\n }\n function setupExternalLibs(externalLibs) {\n try {\n externalLibs.forEach((lib) => {\n setupExternalLib(lib.name, lib.create);\n });\n return Promise.resolve();\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n function setupExternalLib(name, createCallback) {\n const initTimer = timer(name);\n const lib = createCallback(libs);\n if (lib) {\n registerLib(name, lib, initTimer);\n }\n }\n function waitForLibs() {\n const libsReadyPromises = Object.keys(libs).map((key) => {\n const lib = libs[key];\n return lib.ready ?\n lib.ready() : Promise.resolve();\n });\n return Promise.all(libsReadyPromises);\n }\n function constructGlueObject() {\n const feedbackFunc = (feedbackInfo) => {\n if (!_interop) {\n return;\n }\n _interop.invoke(\"T42.ACS.Feedback\", feedbackInfo, \"best\");\n };\n const info = {\n coreVersion: version,\n version: internalConfig.version\n };\n glueInitTimer.stop();\n const glue = {\n feedback: feedbackFunc,\n info,\n logger: _logger,\n interop: _interop,\n agm: _interop,\n connection: _connection,\n metrics: _metrics,\n contexts: _contexts,\n bus: _bus,\n version: internalConfig.version,\n userConfig,\n done: () => {\n _logger?.info(\"done called by user...\");\n return _connection.logout();\n }\n };\n glue.performance = {\n get glueVer() {\n return internalConfig.version;\n },\n get glueConfig() {\n return JSON.stringify(userConfig);\n },\n get browser() {\n return window.performance.timing.toJSON();\n },\n get memory() {\n return window.performance.memory;\n },\n get initTimes() {\n const all = getAllTimers();\n return Object.keys(all).map((key) => {\n const t = all[key];\n return {\n name: key,\n duration: t.endTime - t.startTime,\n marks: t.marks,\n startTime: t.startTime,\n endTime: t.endTime\n };\n });\n }\n };\n Object.keys(libs).forEach((key) => {\n const lib = libs[key];\n glue[key] = lib;\n });\n glue.config = {};\n Object.keys(internalConfig).forEach((k) => {\n glue.config[k] = internalConfig[k];\n });\n if (ext && ext.extOptions) {\n Object.keys(ext.extOptions).forEach((k) => {\n glue.config[k] = ext?.extOptions[k];\n });\n }\n if (ext?.enrichGlue) {\n ext.enrichGlue(glue);\n }\n if (iodesktop && iodesktop.updatePerfData) {\n iodesktop.updatePerfData(glue.performance);\n }\n if (glue.agm) {\n const deprecatedDecorator = (fn, wrong, proper) => {\n return function () {\n glue.logger.warn(`glue.js - 'glue.agm.${wrong}' method is deprecated, use 'glue.interop.${proper}' instead.`);\n return fn.apply(glue.agm, arguments);\n };\n };\n const agmAny = glue.agm;\n agmAny.method_added = deprecatedDecorator(glue.agm.methodAdded, \"method_added\", \"methodAdded\");\n agmAny.method_removed = deprecatedDecorator(glue.agm.methodRemoved, \"method_removed\", \"methodRemoved\");\n agmAny.server_added = deprecatedDecorator(glue.agm.serverAdded, \"server_added\", \"serverAdded\");\n agmAny.server_method_aded = deprecatedDecorator(glue.agm.serverMethodAdded, \"server_method_aded\", \"serverMethodAdded\");\n agmAny.server_method_removed = deprecatedDecorator(glue.agm.serverMethodRemoved, \"server_method_removed\", \"serverMethodRemoved\");\n }\n return glue;\n }\n async function registerInstanceIfNeeded() {\n const RegisterInstanceMethodName = \"T42.ACS.RegisterInstance\";\n if (Utils.isNode() && typeof process.env._GD_STARTING_CONTEXT_ === \"undefined\" && typeof userConfig?.application !== \"undefined\") {\n const isMethodAvailable = _interop.methods({ name: RegisterInstanceMethodName }).length > 0;\n if (isMethodAvailable) {\n try {\n await _interop.invoke(RegisterInstanceMethodName, { appName: userConfig?.application, pid: process.pid });\n }\n catch (error) {\n const typedError = error;\n _logger.error(`Cannot register as an instance: ${JSON.stringify(typedError.message)}`);\n }\n }\n }\n }\n return preloadPromise\n .then(setupLogger)\n .then(setupConnection)\n .then(() => Promise.all([setupMetrics(), setupInterop(), setupContexts(), setupBus()]))\n .then(() => _interop.readyPromise)\n .then(() => registerInstanceIfNeeded())\n .then(() => {\n return setupExternalLibs(internalConfig.libs || []);\n })\n .then(waitForLibs)\n .then(constructGlueObject)\n .catch((err) => {\n return Promise.reject({\n err,\n libs\n });\n });\n};\nif (typeof window !== \"undefined\") {\n window.IOConnectCore = IOConnectCoreFactory;\n}\nIOConnectCoreFactory.version = version;\nIOConnectCoreFactory.default = IOConnectCoreFactory;\n\nconst iOConnectBrowserFactory = createFactoryFunction(IOConnectCoreFactory);\nif (typeof window !== \"undefined\") {\n const windowAny = window;\n windowAny.IOBrowser = iOConnectBrowserFactory;\n delete windowAny.GlueCore;\n delete windowAny.IOConnectCore;\n}\nconst legacyGlobal = window.glue42gd || window.glue42core;\nconst ioGlobal = window.iodesktop || window.iobrowser;\nif (!legacyGlobal && !ioGlobal) {\n window.iobrowser = { webStarted: false };\n}\niOConnectBrowserFactory.version = version$1;\n\nexport { iOConnectBrowserFactory as default };\n//# sourceMappingURL=browser.es.js.map\n",null,null,"function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","// Axios v1.7.2 Copyright (c) 2024 Matt Zabriskie and contributors\n'use strict';\n\nfunction bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n};\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n};\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n};\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz';\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n};\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0];\n }\n\n return str;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nvar utils$1 = {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils$1.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils$1.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype$1 = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype$1, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype$1);\n\n utils$1.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\n// eslint-disable-next-line strict\nvar httpAdapter = null;\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils$1.isPlainObject(thing) || utils$1.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils$1.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils$1.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils$1.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils$1.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);\n\n if (!utils$1.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils$1.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils$1.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils$1.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils$1.isArray(value) && isFlatArray(value)) ||\n ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils$1.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils$1.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils$1.forEach(value, function each(el, key) {\n const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils$1.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode$1(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode$1);\n } : encode$1;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nfunction buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils$1.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils$1.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nvar InterceptorManager$1 = InterceptorManager;\n\nvar transitionalDefaults = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n\nvar URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n\nvar FormData$1 = typeof FormData !== 'undefined' ? FormData : null;\n\nvar Blob$1 = typeof Blob !== 'undefined' ? Blob : null;\n\nvar platform$1 = {\n isBrowser: true,\n classes: {\n URLSearchParams: URLSearchParams$1,\n FormData: FormData$1,\n Blob: Blob$1\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n\nconst hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nvar utils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n hasBrowserEnv: hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv: hasStandardBrowserEnv,\n origin: origin\n});\n\nvar platform = {\n ...utils,\n ...platform$1\n};\n\nfunction toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils$1.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils$1.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils$1.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils$1.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils$1.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils$1.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {\n const obj = {};\n\n utils$1.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils$1.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils$1.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils$1.isObject(data);\n\n if (isObjectPayload && utils$1.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils$1.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils$1.isArrayBuffer(data) ||\n utils$1.isBuffer(data) ||\n utils$1.isStream(data) ||\n utils$1.isFile(data) ||\n utils$1.isBlob(data) ||\n utils$1.isReadableStream(data)\n ) {\n return data;\n }\n if (utils$1.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils$1.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nvar defaults$1 = defaults;\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils$1.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nvar parseHeaders = rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils$1.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils$1.isString(value)) return;\n\n if (utils$1.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils$1.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils$1.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils$1.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils$1.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils$1.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils$1.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils$1.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils$1.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils$1.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils$1.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils$1.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils$1.forEach(this, (value, header) => {\n const key = utils$1.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils$1.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils$1.freezeMethods(AxiosHeaders);\n\nvar AxiosHeaders$1 = AxiosHeaders;\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nfunction transformData(fns, response) {\n const config = this || defaults$1;\n const context = response || config;\n const headers = AxiosHeaders$1.from(context.headers);\n let data = context.data;\n\n utils$1.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n\nfunction isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils$1.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nfunction settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n\nfunction parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled() {\n const force = this === true;\n\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, arguments);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, arguments);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nvar progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n }, freq);\n};\n\nvar isURLSameOrigin = platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n\nvar cookies = platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils$1.isString(path) && cookie.push('path=' + path);\n\n utils$1.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nfunction isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nfunction combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nfunction buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nfunction mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {\n return utils$1.merge.call({caseless}, target, source);\n } else if (utils$1.isPlainObject(source)) {\n return utils$1.merge({}, source);\n } else if (utils$1.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils$1.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils$1.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n\nvar resolveConfig = (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders$1.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils$1.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nvar xhrAdapter = isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize();\n let {responseType} = _config;\n let onCanceled;\n function done() {\n if (_config.cancelToken) {\n _config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (_config.signal) {\n _config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders$1.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n _config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils$1.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (typeof _config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof _config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n};\n\nconst composeSignals = (signals, timeout) => {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (cancel) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = cancel instanceof Error ? cancel : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n };\n\n let timer = timeout && setTimeout(() => {\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal &&\n (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = unsubscribe;\n\n return [signal, () => {\n timer && clearTimeout(timer);\n timer = null;\n }];\n};\n\nvar composeSignals$1 = composeSignals;\n\nconst streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nconst readBytes = async function* (iterable, chunkSize, encode) {\n for await (const chunk of iterable) {\n yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n }\n};\n\nconst trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n const iterator = readBytes(stream, chunkSize, encode);\n\n let bytes = 0;\n\n return new ReadableStream({\n type: 'bytes',\n\n async pull(controller) {\n const {done, value} = await iterator.next();\n\n if (done) {\n controller.close();\n onFinish();\n return;\n }\n\n let len = value.byteLength;\n onProgress && onProgress(bytes += len);\n controller.enqueue(new Uint8Array(value));\n },\n cancel(reason) {\n onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n};\n\nconst fetchProgressDecorator = (total, fn) => {\n const lengthComputable = total != null;\n return (loaded) => setTimeout(() => fn({\n lengthComputable,\n total,\n loaded\n }));\n};\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst supportsRequestStream = isReadableStreamSupported && (() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n})();\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported && !!(()=> {\n try {\n return utils$1.isReadableStream(new Response('').body);\n } catch(err) {\n // return undefined\n }\n})();\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils$1.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n });\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils$1.isBlob(body)) {\n return body.size;\n }\n\n if(utils$1.isSpecCompliantForm(body)) {\n return (await new Request(body).arrayBuffer()).byteLength;\n }\n\n if(utils$1.isArrayBufferView(body)) {\n return body.byteLength;\n }\n\n if(utils$1.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils$1.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n};\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils$1.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n};\n\nvar fetchAdapter = isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n composeSignals$1([signal, cancelToken], timeout) : [];\n\n let finished, request;\n\n const onFinish = () => {\n !finished && setTimeout(() => {\n composedSignal && composedSignal.unsubscribe();\n });\n\n finished = true;\n };\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(\n requestContentLength,\n progressEventReducer(onUploadProgress)\n ), null, encodeText);\n }\n }\n\n if (!utils$1.isString(withCredentials)) {\n withCredentials = withCredentials ? 'cors' : 'omit';\n }\n\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n withCredentials\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(\n responseContentLength,\n progressEventReducer(onDownloadProgress, true)\n ), isStreamResponse && onFinish, encodeText),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && onFinish();\n\n stopTimeout && stopTimeout();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders$1.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n });\n })\n } catch (err) {\n onFinish();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n};\n\nutils$1.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;\n\nvar adapters = {\n getAdapter: (adapters) => {\n adapters = utils$1.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n};\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nfunction dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders$1.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders$1.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders$1.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n\nconst VERSION = \"1.7.2\";\n\nconst validators$1 = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators$1[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators$1.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nvar validator = {\n assertOptions,\n validators: validators$1\n};\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager$1(),\n response: new InterceptorManager$1()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils$1.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n };\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils$1.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils$1.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders$1.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nvar Axios$1 = Axios;\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nvar CancelToken$1 = CancelToken;\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nfunction spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nfunction isAxiosError(payload) {\n return utils$1.isObject(payload) && (payload.isAxiosError === true);\n}\n\nconst HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nvar HttpStatusCode$1 = HttpStatusCode;\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios$1(defaultConfig);\n const instance = bind(Axios$1.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils$1.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults$1);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios$1;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken$1;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders$1;\n\naxios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode$1;\n\naxios.default = axios;\n\nmodule.exports = axios;\n//# sourceMappingURL=axios.cjs.map\n","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.BaseAPI = void 0;\r\nconst axios_1 = __importDefault(require(\"axios\"));\r\nclass BaseAPI {\r\n constructor(options) {\r\n this.options = options;\r\n this.setOptions(options);\r\n }\r\n setOptions(options) {\r\n var _a, _b;\r\n this.options = options;\r\n if (!options.auth) {\r\n throw new Error(\"please provide auth info\");\r\n }\r\n this.eject(this.currentInterceptorsId, this.axiosInstance);\r\n const headers = this.getHeaders(options);\r\n this.axiosInstance = axios_1.default.create({\r\n transformResponse: options.transformResponse,\r\n baseURL: options.baseUrl,\r\n headers,\r\n auth: ((_a = options.auth) === null || _a === void 0 ? void 0 : _a.basic) ? options.auth.basic : undefined,\r\n withCredentials: (_b = options === null || options === void 0 ? void 0 : options.auth) === null || _b === void 0 ? void 0 : _b.includeCredentials\r\n });\r\n this.currentInterceptorsId = this.intercept(this.axiosInstance);\r\n }\r\n whoAmI() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.axiosInstance.get(`/whoami`);\r\n return result.data;\r\n });\r\n }\r\n onResponseSuccessCallback(callback) {\r\n this.responseSuccessCallback = callback;\r\n }\r\n onResponseErrorCallback(callback) {\r\n this.responseErrorCallback = callback;\r\n }\r\n unloadClient(session, tokenString) {\r\n var _a;\r\n if (!session || !tokenString) {\r\n return;\r\n }\r\n const authorizationValue = this.options.auth.basic ?\r\n `Basic ${window.btoa(this.options.auth.basic.username + \":\" + this.options.auth.basic.password)}` :\r\n `Bearer ${(_a = this.options.auth.token) === null || _a === void 0 ? void 0 : _a.bearer}`;\r\n const requestHeaders = new Headers(Object.assign({ \"Content-Type\": \"application/json\", \"serverx-token\": tokenString, \"Authorization\": authorizationValue }, this.options.headers));\r\n const request = new Request(`${this.options.baseUrl}/user/goodbye`, {\r\n method: \"POST\",\r\n headers: requestHeaders,\r\n mode: \"cors\",\r\n cache: \"default\",\r\n keepalive: true,\r\n body: JSON.stringify({ session })\r\n });\r\n // it is pointless to handle this promise, because the page will be closed long before it resolves or rejects\r\n window.fetch(request);\r\n }\r\n getHeaders(options) {\r\n const headers = {};\r\n if (options.auth.username) {\r\n headers.user = options.auth.username;\r\n }\r\n if (options.auth.token) {\r\n if (options.auth.token.bearer) {\r\n headers.Authorization = `Bearer ${options.auth.token.bearer}`;\r\n }\r\n }\r\n if (options.headers) {\r\n for (const headerName of Object.keys(options.headers)) {\r\n headers[headerName] = options.headers[headerName];\r\n }\r\n }\r\n return headers;\r\n }\r\n intercept(axiosInstance) {\r\n var _a, _b;\r\n try {\r\n const interceptorsId = (_b = (_a = axiosInstance === null || axiosInstance === void 0 ? void 0 : axiosInstance.interceptors) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.use((data) => {\r\n var _a;\r\n try {\r\n (_a = this.responseSuccessCallback) === null || _a === void 0 ? void 0 : _a.call(this, data);\r\n }\r\n catch (_b) { }\r\n return data;\r\n }, (error) => {\r\n var _a;\r\n try {\r\n (_a = this.responseErrorCallback) === null || _a === void 0 ? void 0 : _a.call(this, error);\r\n }\r\n catch (_b) { }\r\n return Promise.reject(error);\r\n });\r\n return interceptorsId;\r\n }\r\n catch (_c) {\r\n return undefined;\r\n }\r\n }\r\n eject(interceptId, axiosInstance) {\r\n var _a, _b;\r\n try {\r\n if (interceptId) {\r\n (_b = (_a = axiosInstance === null || axiosInstance === void 0 ? void 0 : axiosInstance.interceptors) === null || _a === void 0 ? void 0 : _a.response) === null || _b === void 0 ? void 0 : _b.eject(interceptId);\r\n }\r\n }\r\n catch (_c) {\r\n }\r\n }\r\n}\r\nexports.BaseAPI = BaseAPI;\r\n//# sourceMappingURL=base.js.map","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.SystemConfigAPI = void 0;\r\nclass SystemConfigAPI {\r\n constructor(axios) {\r\n this.axios = axios;\r\n }\r\n getAll(request) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let url = \"/systemConfig\";\r\n if (request) {\r\n const params = encodeURIComponent(JSON.stringify(request));\r\n url += `?params=${params}`;\r\n }\r\n const result = yield this.axios.get(url);\r\n return result.data;\r\n });\r\n }\r\n getExactEntry(identifier) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.axios.post(`/systemConfig/get`, { identifier, exact: true });\r\n return result.data;\r\n });\r\n }\r\n getComputed(identifier) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.axios.post(`/systemConfig/get`, { identifier, exact: false });\r\n return result.data;\r\n });\r\n }\r\n addOrReplace(definition) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.axios.post(`/systemConfig/`, definition);\r\n });\r\n }\r\n remove(identifier) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.axios.post(`/systemConfig/delete`, identifier);\r\n });\r\n }\r\n removeConfigForIdentifier(identifier, config) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.axios.post(`/systemConfig/deleteConfig`, { identifier, config });\r\n });\r\n }\r\n}\r\nexports.SystemConfigAPI = SystemConfigAPI;\r\n//# sourceMappingURL=systemConfig.js.map","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.PromiseWrapper = void 0;\r\nclass PromiseWrapper {\r\n constructor() {\r\n this.resolve = () => { };\r\n this.reject = () => { };\r\n this.rejected = false;\r\n this.resolved = false;\r\n this.promise = new Promise((resolve, reject) => {\r\n this.resolve = (t) => {\r\n this.resolved = true;\r\n resolve(t);\r\n };\r\n this.reject = (err) => {\r\n this.rejected = true;\r\n reject(err);\r\n };\r\n });\r\n }\r\n static delay(time) {\r\n return new Promise((resolve) => setTimeout(resolve, time));\r\n }\r\n static delayForever() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const biggestPossibleDelay = 2147483647; // ~25 days\r\n while (true) {\r\n yield this.delay(biggestPossibleDelay);\r\n }\r\n });\r\n }\r\n get ended() {\r\n return this.rejected || this.resolved;\r\n }\r\n}\r\nexports.PromiseWrapper = PromiseWrapper;\r\n//# sourceMappingURL=promise.js.map","\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ClientAPI = void 0;\r\nconst jwt_decode_1 = __importDefault(require(\"jwt-decode\"));\r\nconst form_data_1 = __importDefault(require(\"form-data\"));\r\nconst base_1 = require(\"./base\");\r\nconst systemConfig_1 = require(\"./sub/systemConfig\");\r\nconst promise_1 = require(\"./promise\");\r\nclass ClientAPI extends base_1.BaseAPI {\r\n constructor(options) {\r\n super(options);\r\n this.customRequest = options.req;\r\n this.systemConfig = new systemConfig_1.SystemConfigAPI(this.axiosInstance);\r\n }\r\n unload() {\r\n // this request is a keepalive fire and forget, so that it can completed successfully even after the page has been closed\r\n this.unloadClient(this.sessionToken.session, this.sessionTokenString);\r\n }\r\n refreshData(req) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const response = yield this.post(`/user`, req);\r\n return response.data;\r\n });\r\n }\r\n getApps() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const response = yield this.get(`/user/apps`);\r\n return response.data;\r\n });\r\n }\r\n getLayouts() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const response = yield this.get(`/user/layouts`);\r\n return response.data;\r\n });\r\n }\r\n saveLayout(data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.post(`/user/layouts`, data);\r\n return result.data;\r\n });\r\n }\r\n /**\r\n * This might fail if the layout is common\r\n * @param id Id of the layout\r\n */\r\n deleteUserLayout(id) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.delete(`/user/layouts/${id}`);\r\n });\r\n }\r\n /**\r\n * Removes all user layouts.\r\n * @returns all user layout definitions that the user must see after the\r\n */\r\n deleteAllUserLayouts() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.delete(`/user/layouts/`);\r\n return result.data;\r\n });\r\n }\r\n renameLayout(id, newName) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.post(`/user/layouts/${id}/rename`, { newName });\r\n return result.data;\r\n });\r\n }\r\n getDefaultLayout() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.get(`/user/layouts/default`);\r\n if (result.status === 204) {\r\n return undefined;\r\n }\r\n return result.data;\r\n });\r\n }\r\n setDefaultLayout(id) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.post(`/user/layouts/default`, { id });\r\n if (result.status === 204) {\r\n return undefined;\r\n }\r\n return result.data;\r\n });\r\n }\r\n openSession(machine, glue) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const response = yield this.post(\"/user/hello\", {\r\n machine,\r\n glue\r\n });\r\n const token = this.updateToken(response.data.token);\r\n const data = response.data.data;\r\n return {\r\n token,\r\n data\r\n };\r\n });\r\n }\r\n closeSession(session) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n session = session !== null && session !== void 0 ? session : this.sessionToken.session;\r\n if (!session) {\r\n throw new Error(\"no active session\");\r\n }\r\n const request = {\r\n session\r\n };\r\n yield this.post(\"/user/goodbye\", request);\r\n });\r\n }\r\n refreshToken() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const request = {\r\n token: this.sessionTokenString\r\n };\r\n const response = yield this.post(\"/user/refresh\", request);\r\n return this.updateToken(response.data.token);\r\n });\r\n }\r\n getCommands() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.get(`/user/commands/${this.sessionToken.session}`);\r\n return result.data;\r\n });\r\n }\r\n setCommandResult(commandId, result) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.post(`/user/commands/${commandId}`, result);\r\n });\r\n }\r\n setCommandFileResult(commandId, fileName, contentsBase64) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const request = {\r\n fileName,\r\n contents: contentsBase64\r\n };\r\n yield this.post(`/user/commands/${commandId}/file`, request);\r\n });\r\n }\r\n getPrefs(app, latestKnown) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n let path = `/user/prefs/${app}`;\r\n if (latestKnown) {\r\n const timestamp = latestKnown.getTime();\r\n path += `?last=${timestamp}`;\r\n }\r\n const result = yield this.get(path);\r\n return result.data;\r\n }\r\n catch (err) {\r\n return undefined;\r\n }\r\n });\r\n }\r\n getAllPrefs() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.get(`/user/prefs/`);\r\n return result.data;\r\n });\r\n }\r\n setPrefs(req) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.post(`/user/prefs/`, req);\r\n return result.data;\r\n });\r\n }\r\n deletePrefs(app) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.delete(`/user/prefs/${app}`);\r\n });\r\n }\r\n deleteAllPrefs() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.delete(`/user/prefs/`);\r\n });\r\n }\r\n addFeedback(description, rs) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const formData = new form_data_1.default();\r\n formData.append(\"description\", description);\r\n formData.append(\"attachment\", rs);\r\n try {\r\n const result = yield this.post(\"/user/feedbacks\", formData, formData.getHeaders());\r\n return result.data;\r\n }\r\n catch (err) {\r\n throw err;\r\n }\r\n });\r\n }\r\n setOptions(options) {\r\n super.setOptions(options);\r\n if (this.sessionTokenString) {\r\n this.updateToken(this.sessionTokenString);\r\n }\r\n }\r\n updateToken(tokenString) {\r\n var _a;\r\n this.sessionTokenString = tokenString;\r\n this.axiosInstance.defaults.headers.common[\"serverx-token\"] = tokenString;\r\n this.options.headers = (_a = this.options.headers) !== null && _a !== void 0 ? _a : {};\r\n this.options.headers[\"serverx-token\"] = tokenString;\r\n this.sessionToken = jwt_decode_1.default(tokenString);\r\n return this.sessionToken;\r\n }\r\n get(url, data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.customRequest) {\r\n return this.withRequest(url, \"GET\", data);\r\n }\r\n return this.axiosInstance.get(url, data);\r\n });\r\n }\r\n post(url, data, extraHeaders) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.customRequest) {\r\n return this.withRequest(url, \"POST\", data, extraHeaders);\r\n }\r\n return this.axiosInstance.post(url, data, { headers: extraHeaders });\r\n });\r\n }\r\n delete(url, data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.customRequest) {\r\n return this.withRequest(url, \"DELETE\", data);\r\n }\r\n return this.axiosInstance.delete(url, data);\r\n });\r\n }\r\n withRequest(url, method, body, extraHeaders) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this.customRequest) {\r\n throw new Error(`invalid call`);\r\n }\r\n const pw = new promise_1.PromiseWrapper();\r\n let headers = this.getHeaders(this.options);\r\n if (extraHeaders) {\r\n headers = Object.assign(Object.assign({}, headers), { extraHeaders });\r\n }\r\n // create full url\r\n // clean up\r\n // 1. remove the staring / , as it will strip baseUrl to the domain part\r\n if (url.startsWith(\"/\")) {\r\n url = url.substring(1);\r\n }\r\n // 2. add / at the ned of base\r\n let base = this.options.baseUrl;\r\n if (!base.endsWith(\"/\")) {\r\n base += \"/\";\r\n }\r\n const fullUrl = new URL(url, base).href;\r\n const opts = {\r\n method,\r\n url: fullUrl,\r\n headers,\r\n json: body !== null && body !== void 0 ? body : true\r\n };\r\n this.customRequest(opts, (error, resp) => {\r\n if (error) {\r\n pw.reject(error);\r\n return;\r\n }\r\n if (resp.statusCode >= 400) {\r\n pw.reject(`received error with code ${resp.statusCode}`);\r\n return;\r\n }\r\n let result = {};\r\n if (resp.body) {\r\n try {\r\n result = resp.body;\r\n }\r\n catch (_a) {\r\n // swallow exception\r\n }\r\n }\r\n pw.resolve({ data: result, status: resp.statusCode });\r\n });\r\n return pw.promise;\r\n });\r\n }\r\n}\r\nexports.ClientAPI = ClientAPI;\r\n//# sourceMappingURL=client.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.ClientAPI = void 0;\r\nvar client_1 = require(\"./client-api/client\");\r\nObject.defineProperty(exports, \"ClientAPI\", { enumerable: true, get: function () { return client_1.ClientAPI; } });\r\n//# sourceMappingURL=client.js.map","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.38\n Copyright © 2012-2021 Faisal Salman \n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.38',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 500;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook',\n CHROMIUM_OS = 'Chromium OS',\n MAC_OS = 'Mac OS';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant|iemobile|slim)\\s?(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(heytap|ovi)browser\\/([\\d\\.]+)/i, // Heytap/Ovi\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 ' + BROWSER]], [\n /(oculus|sailfish|huawei|vivo)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 ' + BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, 'Sogou Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, 'Sogou Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/2345 Browser\n ], [NAME, VERSION], [\n /(lbbrowser)/i, // LieBao Browser\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram/Snapchat\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i, // Links\n /panasonic;(viera)/i // Panasonic Viera\n ], [NAME, VERSION], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /master.|lts./, \"\"]]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i, // Redmi Pad\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n /\\b(opd2\\d{3}a?) bui/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, TABLET]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mitv-\\w{5}) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( \\d| pro)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n /\\b(libweb)/i\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, CHROMIUM_OS], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser[MAJOR] = majorize(_browser[VERSION]);\n // Brave-specific detection\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n _browser[NAME] = 'Brave';\n }\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n _device[TYPE] = MOBILE;\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n _device[MODEL] = 'iPad';\n _device[TYPE] = TABLET;\n }\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {\n _os[NAME] = _uach.platform \n .replace(/chrome os/i, CHROMIUM_OS)\n .replace(/macos/i, MAC_OS); // backward compatibility\n }\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","// src/utils/env.ts\nvar NOTHING = Symbol.for(\"immer-nothing\");\nvar DRAFTABLE = Symbol.for(\"immer-draftable\");\nvar DRAFT_STATE = Symbol.for(\"immer-state\");\n\n// src/utils/errors.ts\nvar errors = process.env.NODE_ENV !== \"production\" ? [\n // All error codes, starting by 0:\n function(plugin) {\n return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`;\n },\n function(thing) {\n return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`;\n },\n \"This object has been frozen and should not be mutated\",\n function(data) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + data;\n },\n \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n \"Immer forbids circular references\",\n \"The first or second argument to `produce` must be a function\",\n \"The third argument to `produce` must be a function or undefined\",\n \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n function(thing) {\n return `'current' expects a draft, got: ${thing}`;\n },\n \"Object.defineProperty() cannot be used on an Immer draft\",\n \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n \"Immer only supports deleting array indices\",\n \"Immer only supports setting array indices and the 'length' property\",\n function(thing) {\n return `'original' expects a draft, got: ${thing}`;\n }\n // Note: if more errors are added, the errorOffset in Patches.ts should be increased\n // See Patches.ts for additional errors\n] : [];\nfunction die(error, ...args) {\n if (process.env.NODE_ENV !== \"production\") {\n const e = errors[error];\n const msg = typeof e === \"function\" ? e.apply(null, args) : e;\n throw new Error(`[Immer] ${msg}`);\n }\n throw new Error(\n `[Immer] minified error nr: ${error}. Full error at: https://bit.ly/3cXEKWf`\n );\n}\n\n// src/utils/common.ts\nvar getPrototypeOf = Object.getPrototypeOf;\nfunction isDraft(value) {\n return !!value && !!value[DRAFT_STATE];\n}\nfunction isDraftable(value) {\n if (!value)\n return false;\n return isPlainObject(value) || Array.isArray(value) || !!value[DRAFTABLE] || !!value.constructor?.[DRAFTABLE] || isMap(value) || isSet(value);\n}\nvar objectCtorString = Object.prototype.constructor.toString();\nfunction isPlainObject(value) {\n if (!value || typeof value !== \"object\")\n return false;\n const proto = getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const Ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n if (Ctor === Object)\n return true;\n return typeof Ctor == \"function\" && Function.toString.call(Ctor) === objectCtorString;\n}\nfunction original(value) {\n if (!isDraft(value))\n die(15, value);\n return value[DRAFT_STATE].base_;\n}\nfunction each(obj, iter) {\n if (getArchtype(obj) === 0 /* Object */) {\n Reflect.ownKeys(obj).forEach((key) => {\n iter(key, obj[key], obj);\n });\n } else {\n obj.forEach((entry, index) => iter(index, entry, obj));\n }\n}\nfunction getArchtype(thing) {\n const state = thing[DRAFT_STATE];\n return state ? state.type_ : Array.isArray(thing) ? 1 /* Array */ : isMap(thing) ? 2 /* Map */ : isSet(thing) ? 3 /* Set */ : 0 /* Object */;\n}\nfunction has(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.has(prop) : Object.prototype.hasOwnProperty.call(thing, prop);\n}\nfunction get(thing, prop) {\n return getArchtype(thing) === 2 /* Map */ ? thing.get(prop) : thing[prop];\n}\nfunction set(thing, propOrOldValue, value) {\n const t = getArchtype(thing);\n if (t === 2 /* Map */)\n thing.set(propOrOldValue, value);\n else if (t === 3 /* Set */) {\n thing.add(value);\n } else\n thing[propOrOldValue] = value;\n}\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction isMap(target) {\n return target instanceof Map;\n}\nfunction isSet(target) {\n return target instanceof Set;\n}\nfunction latest(state) {\n return state.copy_ || state.base_;\n}\nfunction shallowCopy(base, strict) {\n if (isMap(base)) {\n return new Map(base);\n }\n if (isSet(base)) {\n return new Set(base);\n }\n if (Array.isArray(base))\n return Array.prototype.slice.call(base);\n const isPlain = isPlainObject(base);\n if (strict === true || strict === \"class_only\" && !isPlain) {\n const descriptors = Object.getOwnPropertyDescriptors(base);\n delete descriptors[DRAFT_STATE];\n let keys = Reflect.ownKeys(descriptors);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const desc = descriptors[key];\n if (desc.writable === false) {\n desc.writable = true;\n desc.configurable = true;\n }\n if (desc.get || desc.set)\n descriptors[key] = {\n configurable: true,\n writable: true,\n // could live with !!desc.set as well here...\n enumerable: desc.enumerable,\n value: base[key]\n };\n }\n return Object.create(getPrototypeOf(base), descriptors);\n } else {\n const proto = getPrototypeOf(base);\n if (proto !== null && isPlain) {\n return { ...base };\n }\n const obj = Object.create(proto);\n return Object.assign(obj, base);\n }\n}\nfunction freeze(obj, deep = false) {\n if (isFrozen(obj) || isDraft(obj) || !isDraftable(obj))\n return obj;\n if (getArchtype(obj) > 1) {\n obj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections;\n }\n Object.freeze(obj);\n if (deep)\n Object.entries(obj).forEach(([key, value]) => freeze(value, true));\n return obj;\n}\nfunction dontMutateFrozenCollections() {\n die(2);\n}\nfunction isFrozen(obj) {\n return Object.isFrozen(obj);\n}\n\n// src/utils/plugins.ts\nvar plugins = {};\nfunction getPlugin(pluginKey) {\n const plugin = plugins[pluginKey];\n if (!plugin) {\n die(0, pluginKey);\n }\n return plugin;\n}\nfunction loadPlugin(pluginKey, implementation) {\n if (!plugins[pluginKey])\n plugins[pluginKey] = implementation;\n}\n\n// src/core/scope.ts\nvar currentScope;\nfunction getCurrentScope() {\n return currentScope;\n}\nfunction createScope(parent_, immer_) {\n return {\n drafts_: [],\n parent_,\n immer_,\n // Whenever the modified draft contains a draft from another scope, we\n // need to prevent auto-freezing so the unowned draft can be finalized.\n canAutoFreeze_: true,\n unfinalizedDrafts_: 0\n };\n}\nfunction usePatchesInScope(scope, patchListener) {\n if (patchListener) {\n getPlugin(\"Patches\");\n scope.patches_ = [];\n scope.inversePatches_ = [];\n scope.patchListener_ = patchListener;\n }\n}\nfunction revokeScope(scope) {\n leaveScope(scope);\n scope.drafts_.forEach(revokeDraft);\n scope.drafts_ = null;\n}\nfunction leaveScope(scope) {\n if (scope === currentScope) {\n currentScope = scope.parent_;\n }\n}\nfunction enterScope(immer2) {\n return currentScope = createScope(currentScope, immer2);\n}\nfunction revokeDraft(draft) {\n const state = draft[DRAFT_STATE];\n if (state.type_ === 0 /* Object */ || state.type_ === 1 /* Array */)\n state.revoke_();\n else\n state.revoked_ = true;\n}\n\n// src/core/finalize.ts\nfunction processResult(result, scope) {\n scope.unfinalizedDrafts_ = scope.drafts_.length;\n const baseDraft = scope.drafts_[0];\n const isReplaced = result !== void 0 && result !== baseDraft;\n if (isReplaced) {\n if (baseDraft[DRAFT_STATE].modified_) {\n revokeScope(scope);\n die(4);\n }\n if (isDraftable(result)) {\n result = finalize(scope, result);\n if (!scope.parent_)\n maybeFreeze(scope, result);\n }\n if (scope.patches_) {\n getPlugin(\"Patches\").generateReplacementPatches_(\n baseDraft[DRAFT_STATE].base_,\n result,\n scope.patches_,\n scope.inversePatches_\n );\n }\n } else {\n result = finalize(scope, baseDraft, []);\n }\n revokeScope(scope);\n if (scope.patches_) {\n scope.patchListener_(scope.patches_, scope.inversePatches_);\n }\n return result !== NOTHING ? result : void 0;\n}\nfunction finalize(rootScope, value, path) {\n if (isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n if (!state) {\n each(\n value,\n (key, childValue) => finalizeProperty(rootScope, state, value, key, childValue, path)\n );\n return value;\n }\n if (state.scope_ !== rootScope)\n return value;\n if (!state.modified_) {\n maybeFreeze(rootScope, state.base_, true);\n return state.base_;\n }\n if (!state.finalized_) {\n state.finalized_ = true;\n state.scope_.unfinalizedDrafts_--;\n const result = state.copy_;\n let resultEach = result;\n let isSet2 = false;\n if (state.type_ === 3 /* Set */) {\n resultEach = new Set(result);\n result.clear();\n isSet2 = true;\n }\n each(\n resultEach,\n (key, childValue) => finalizeProperty(rootScope, state, result, key, childValue, path, isSet2)\n );\n maybeFreeze(rootScope, result, false);\n if (path && rootScope.patches_) {\n getPlugin(\"Patches\").generatePatches_(\n state,\n path,\n rootScope.patches_,\n rootScope.inversePatches_\n );\n }\n }\n return state.copy_;\n}\nfunction finalizeProperty(rootScope, parentState, targetObject, prop, childValue, rootPath, targetIsSet) {\n if (process.env.NODE_ENV !== \"production\" && childValue === targetObject)\n die(5);\n if (isDraft(childValue)) {\n const path = rootPath && parentState && parentState.type_ !== 3 /* Set */ && // Set objects are atomic since they have no keys.\n !has(parentState.assigned_, prop) ? rootPath.concat(prop) : void 0;\n const res = finalize(rootScope, childValue, path);\n set(targetObject, prop, res);\n if (isDraft(res)) {\n rootScope.canAutoFreeze_ = false;\n } else\n return;\n } else if (targetIsSet) {\n targetObject.add(childValue);\n }\n if (isDraftable(childValue) && !isFrozen(childValue)) {\n if (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n return;\n }\n finalize(rootScope, childValue);\n if ((!parentState || !parentState.scope_.parent_) && typeof prop !== \"symbol\" && Object.prototype.propertyIsEnumerable.call(targetObject, prop))\n maybeFreeze(rootScope, childValue);\n }\n}\nfunction maybeFreeze(scope, value, deep = false) {\n if (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n freeze(value, deep);\n }\n}\n\n// src/core/proxy.ts\nfunction createProxyProxy(base, parent) {\n const isArray = Array.isArray(base);\n const state = {\n type_: isArray ? 1 /* Array */ : 0 /* Object */,\n // Track which produce call this is associated with.\n scope_: parent ? parent.scope_ : getCurrentScope(),\n // True for both shallow and deep changes.\n modified_: false,\n // Used during finalization.\n finalized_: false,\n // Track which properties have been assigned (true) or deleted (false).\n assigned_: {},\n // The parent draft state.\n parent_: parent,\n // The base state.\n base_: base,\n // The base proxy.\n draft_: null,\n // set below\n // The base copy with any updated values.\n copy_: null,\n // Called by the `produce` function.\n revoke_: null,\n isManual_: false\n };\n let target = state;\n let traps = objectTraps;\n if (isArray) {\n target = [state];\n traps = arrayTraps;\n }\n const { revoke, proxy } = Proxy.revocable(target, traps);\n state.draft_ = proxy;\n state.revoke_ = revoke;\n return proxy;\n}\nvar objectTraps = {\n get(state, prop) {\n if (prop === DRAFT_STATE)\n return state;\n const source = latest(state);\n if (!has(source, prop)) {\n return readPropFromProto(state, source, prop);\n }\n const value = source[prop];\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value === peek(state.base_, prop)) {\n prepareCopy(state);\n return state.copy_[prop] = createProxy(value, state);\n }\n return value;\n },\n has(state, prop) {\n return prop in latest(state);\n },\n ownKeys(state) {\n return Reflect.ownKeys(latest(state));\n },\n set(state, prop, value) {\n const desc = getDescriptorFromProto(latest(state), prop);\n if (desc?.set) {\n desc.set.call(state.draft_, value);\n return true;\n }\n if (!state.modified_) {\n const current2 = peek(latest(state), prop);\n const currentState = current2?.[DRAFT_STATE];\n if (currentState && currentState.base_ === value) {\n state.copy_[prop] = value;\n state.assigned_[prop] = false;\n return true;\n }\n if (is(value, current2) && (value !== void 0 || has(state.base_, prop)))\n return true;\n prepareCopy(state);\n markChanged(state);\n }\n if (state.copy_[prop] === value && // special case: handle new props with value 'undefined'\n (value !== void 0 || prop in state.copy_) || // special case: NaN\n Number.isNaN(value) && Number.isNaN(state.copy_[prop]))\n return true;\n state.copy_[prop] = value;\n state.assigned_[prop] = true;\n return true;\n },\n deleteProperty(state, prop) {\n if (peek(state.base_, prop) !== void 0 || prop in state.base_) {\n state.assigned_[prop] = false;\n prepareCopy(state);\n markChanged(state);\n } else {\n delete state.assigned_[prop];\n }\n if (state.copy_) {\n delete state.copy_[prop];\n }\n return true;\n },\n // Note: We never coerce `desc.value` into an Immer draft, because we can't make\n // the same guarantee in ES5 mode.\n getOwnPropertyDescriptor(state, prop) {\n const owner = latest(state);\n const desc = Reflect.getOwnPropertyDescriptor(owner, prop);\n if (!desc)\n return desc;\n return {\n writable: true,\n configurable: state.type_ !== 1 /* Array */ || prop !== \"length\",\n enumerable: desc.enumerable,\n value: owner[prop]\n };\n },\n defineProperty() {\n die(11);\n },\n getPrototypeOf(state) {\n return getPrototypeOf(state.base_);\n },\n setPrototypeOf() {\n die(12);\n }\n};\nvar arrayTraps = {};\neach(objectTraps, (key, fn) => {\n arrayTraps[key] = function() {\n arguments[0] = arguments[0][0];\n return fn.apply(this, arguments);\n };\n});\narrayTraps.deleteProperty = function(state, prop) {\n if (process.env.NODE_ENV !== \"production\" && isNaN(parseInt(prop)))\n die(13);\n return arrayTraps.set.call(this, state, prop, void 0);\n};\narrayTraps.set = function(state, prop, value) {\n if (process.env.NODE_ENV !== \"production\" && prop !== \"length\" && isNaN(parseInt(prop)))\n die(14);\n return objectTraps.set.call(this, state[0], prop, value, state[0]);\n};\nfunction peek(draft, prop) {\n const state = draft[DRAFT_STATE];\n const source = state ? latest(state) : draft;\n return source[prop];\n}\nfunction readPropFromProto(state, source, prop) {\n const desc = getDescriptorFromProto(source, prop);\n return desc ? `value` in desc ? desc.value : (\n // This is a very special case, if the prop is a getter defined by the\n // prototype, we should invoke it with the draft as context!\n desc.get?.call(state.draft_)\n ) : void 0;\n}\nfunction getDescriptorFromProto(source, prop) {\n if (!(prop in source))\n return void 0;\n let proto = getPrototypeOf(source);\n while (proto) {\n const desc = Object.getOwnPropertyDescriptor(proto, prop);\n if (desc)\n return desc;\n proto = getPrototypeOf(proto);\n }\n return void 0;\n}\nfunction markChanged(state) {\n if (!state.modified_) {\n state.modified_ = true;\n if (state.parent_) {\n markChanged(state.parent_);\n }\n }\n}\nfunction prepareCopy(state) {\n if (!state.copy_) {\n state.copy_ = shallowCopy(\n state.base_,\n state.scope_.immer_.useStrictShallowCopy_\n );\n }\n}\n\n// src/core/immerClass.ts\nvar Immer2 = class {\n constructor(config) {\n this.autoFreeze_ = true;\n this.useStrictShallowCopy_ = false;\n /**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\n this.produce = (base, recipe, patchListener) => {\n if (typeof base === \"function\" && typeof recipe !== \"function\") {\n const defaultBase = recipe;\n recipe = base;\n const self = this;\n return function curriedProduce(base2 = defaultBase, ...args) {\n return self.produce(base2, (draft) => recipe.call(this, draft, ...args));\n };\n }\n if (typeof recipe !== \"function\")\n die(6);\n if (patchListener !== void 0 && typeof patchListener !== \"function\")\n die(7);\n let result;\n if (isDraftable(base)) {\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n let hasError = true;\n try {\n result = recipe(proxy);\n hasError = false;\n } finally {\n if (hasError)\n revokeScope(scope);\n else\n leaveScope(scope);\n }\n usePatchesInScope(scope, patchListener);\n return processResult(result, scope);\n } else if (!base || typeof base !== \"object\") {\n result = recipe(base);\n if (result === void 0)\n result = base;\n if (result === NOTHING)\n result = void 0;\n if (this.autoFreeze_)\n freeze(result, true);\n if (patchListener) {\n const p = [];\n const ip = [];\n getPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip);\n patchListener(p, ip);\n }\n return result;\n } else\n die(1, base);\n };\n this.produceWithPatches = (base, recipe) => {\n if (typeof base === \"function\") {\n return (state, ...args) => this.produceWithPatches(state, (draft) => base(draft, ...args));\n }\n let patches, inversePatches;\n const result = this.produce(base, recipe, (p, ip) => {\n patches = p;\n inversePatches = ip;\n });\n return [result, patches, inversePatches];\n };\n if (typeof config?.autoFreeze === \"boolean\")\n this.setAutoFreeze(config.autoFreeze);\n if (typeof config?.useStrictShallowCopy === \"boolean\")\n this.setUseStrictShallowCopy(config.useStrictShallowCopy);\n }\n createDraft(base) {\n if (!isDraftable(base))\n die(8);\n if (isDraft(base))\n base = current(base);\n const scope = enterScope(this);\n const proxy = createProxy(base, void 0);\n proxy[DRAFT_STATE].isManual_ = true;\n leaveScope(scope);\n return proxy;\n }\n finishDraft(draft, patchListener) {\n const state = draft && draft[DRAFT_STATE];\n if (!state || !state.isManual_)\n die(9);\n const { scope_: scope } = state;\n usePatchesInScope(scope, patchListener);\n return processResult(void 0, scope);\n }\n /**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * By default, auto-freezing is enabled.\n */\n setAutoFreeze(value) {\n this.autoFreeze_ = value;\n }\n /**\n * Pass true to enable strict shallow copy.\n *\n * By default, immer does not copy the object descriptors such as getter, setter and non-enumrable properties.\n */\n setUseStrictShallowCopy(value) {\n this.useStrictShallowCopy_ = value;\n }\n applyPatches(base, patches) {\n let i;\n for (i = patches.length - 1; i >= 0; i--) {\n const patch = patches[i];\n if (patch.path.length === 0 && patch.op === \"replace\") {\n base = patch.value;\n break;\n }\n }\n if (i > -1) {\n patches = patches.slice(i + 1);\n }\n const applyPatchesImpl = getPlugin(\"Patches\").applyPatches_;\n if (isDraft(base)) {\n return applyPatchesImpl(base, patches);\n }\n return this.produce(\n base,\n (draft) => applyPatchesImpl(draft, patches)\n );\n }\n};\nfunction createProxy(value, parent) {\n const draft = isMap(value) ? getPlugin(\"MapSet\").proxyMap_(value, parent) : isSet(value) ? getPlugin(\"MapSet\").proxySet_(value, parent) : createProxyProxy(value, parent);\n const scope = parent ? parent.scope_ : getCurrentScope();\n scope.drafts_.push(draft);\n return draft;\n}\n\n// src/core/current.ts\nfunction current(value) {\n if (!isDraft(value))\n die(10, value);\n return currentImpl(value);\n}\nfunction currentImpl(value) {\n if (!isDraftable(value) || isFrozen(value))\n return value;\n const state = value[DRAFT_STATE];\n let copy;\n if (state) {\n if (!state.modified_)\n return state.base_;\n state.finalized_ = true;\n copy = shallowCopy(value, state.scope_.immer_.useStrictShallowCopy_);\n } else {\n copy = shallowCopy(value, true);\n }\n each(copy, (key, childValue) => {\n set(copy, key, currentImpl(childValue));\n });\n if (state) {\n state.finalized_ = false;\n }\n return copy;\n}\n\n// src/plugins/patches.ts\nfunction enablePatches() {\n const errorOffset = 16;\n if (process.env.NODE_ENV !== \"production\") {\n errors.push(\n 'Sets cannot have \"replace\" patches.',\n function(op) {\n return \"Unsupported patch operation: \" + op;\n },\n function(path) {\n return \"Cannot apply patch, path doesn't resolve: \" + path;\n },\n \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n );\n }\n const REPLACE = \"replace\";\n const ADD = \"add\";\n const REMOVE = \"remove\";\n function generatePatches_(state, basePath, patches, inversePatches) {\n switch (state.type_) {\n case 0 /* Object */:\n case 2 /* Map */:\n return generatePatchesFromAssigned(\n state,\n basePath,\n patches,\n inversePatches\n );\n case 1 /* Array */:\n return generateArrayPatches(state, basePath, patches, inversePatches);\n case 3 /* Set */:\n return generateSetPatches(\n state,\n basePath,\n patches,\n inversePatches\n );\n }\n }\n function generateArrayPatches(state, basePath, patches, inversePatches) {\n let { base_, assigned_ } = state;\n let copy_ = state.copy_;\n if (copy_.length < base_.length) {\n ;\n [base_, copy_] = [copy_, base_];\n [patches, inversePatches] = [inversePatches, patches];\n }\n for (let i = 0; i < base_.length; i++) {\n if (assigned_[i] && copy_[i] !== base_[i]) {\n const path = basePath.concat([i]);\n patches.push({\n op: REPLACE,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n inversePatches.push({\n op: REPLACE,\n path,\n value: clonePatchValueIfNeeded(base_[i])\n });\n }\n }\n for (let i = base_.length; i < copy_.length; i++) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n // Need to maybe clone it, as it can in fact be the original value\n // due to the base/copy inversion at the start of this function\n value: clonePatchValueIfNeeded(copy_[i])\n });\n }\n for (let i = copy_.length - 1; base_.length <= i; --i) {\n const path = basePath.concat([i]);\n inversePatches.push({\n op: REMOVE,\n path\n });\n }\n }\n function generatePatchesFromAssigned(state, basePath, patches, inversePatches) {\n const { base_, copy_ } = state;\n each(state.assigned_, (key, assignedValue) => {\n const origValue = get(base_, key);\n const value = get(copy_, key);\n const op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD;\n if (origValue === value && op === REPLACE)\n return;\n const path = basePath.concat(key);\n patches.push(op === REMOVE ? { op, path } : { op, path, value });\n inversePatches.push(\n op === ADD ? { op: REMOVE, path } : op === REMOVE ? { op: ADD, path, value: clonePatchValueIfNeeded(origValue) } : { op: REPLACE, path, value: clonePatchValueIfNeeded(origValue) }\n );\n });\n }\n function generateSetPatches(state, basePath, patches, inversePatches) {\n let { base_, copy_ } = state;\n let i = 0;\n base_.forEach((value) => {\n if (!copy_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: REMOVE,\n path,\n value\n });\n inversePatches.unshift({\n op: ADD,\n path,\n value\n });\n }\n i++;\n });\n i = 0;\n copy_.forEach((value) => {\n if (!base_.has(value)) {\n const path = basePath.concat([i]);\n patches.push({\n op: ADD,\n path,\n value\n });\n inversePatches.unshift({\n op: REMOVE,\n path,\n value\n });\n }\n i++;\n });\n }\n function generateReplacementPatches_(baseValue, replacement, patches, inversePatches) {\n patches.push({\n op: REPLACE,\n path: [],\n value: replacement === NOTHING ? void 0 : replacement\n });\n inversePatches.push({\n op: REPLACE,\n path: [],\n value: baseValue\n });\n }\n function applyPatches_(draft, patches) {\n patches.forEach((patch) => {\n const { path, op } = patch;\n let base = draft;\n for (let i = 0; i < path.length - 1; i++) {\n const parentType = getArchtype(base);\n let p = path[i];\n if (typeof p !== \"string\" && typeof p !== \"number\") {\n p = \"\" + p;\n }\n if ((parentType === 0 /* Object */ || parentType === 1 /* Array */) && (p === \"__proto__\" || p === \"constructor\"))\n die(errorOffset + 3);\n if (typeof base === \"function\" && p === \"prototype\")\n die(errorOffset + 3);\n base = get(base, p);\n if (typeof base !== \"object\")\n die(errorOffset + 2, path.join(\"/\"));\n }\n const type = getArchtype(base);\n const value = deepClonePatchValue(patch.value);\n const key = path[path.length - 1];\n switch (op) {\n case REPLACE:\n switch (type) {\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n die(errorOffset);\n default:\n return base[key] = value;\n }\n case ADD:\n switch (type) {\n case 1 /* Array */:\n return key === \"-\" ? base.push(value) : base.splice(key, 0, value);\n case 2 /* Map */:\n return base.set(key, value);\n case 3 /* Set */:\n return base.add(value);\n default:\n return base[key] = value;\n }\n case REMOVE:\n switch (type) {\n case 1 /* Array */:\n return base.splice(key, 1);\n case 2 /* Map */:\n return base.delete(key);\n case 3 /* Set */:\n return base.delete(patch.value);\n default:\n return delete base[key];\n }\n default:\n die(errorOffset + 1, op);\n }\n });\n return draft;\n }\n function deepClonePatchValue(obj) {\n if (!isDraftable(obj))\n return obj;\n if (Array.isArray(obj))\n return obj.map(deepClonePatchValue);\n if (isMap(obj))\n return new Map(\n Array.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n );\n if (isSet(obj))\n return new Set(Array.from(obj).map(deepClonePatchValue));\n const cloned = Object.create(getPrototypeOf(obj));\n for (const key in obj)\n cloned[key] = deepClonePatchValue(obj[key]);\n if (has(obj, DRAFTABLE))\n cloned[DRAFTABLE] = obj[DRAFTABLE];\n return cloned;\n }\n function clonePatchValueIfNeeded(obj) {\n if (isDraft(obj)) {\n return deepClonePatchValue(obj);\n } else\n return obj;\n }\n loadPlugin(\"Patches\", {\n applyPatches_,\n generatePatches_,\n generateReplacementPatches_\n });\n}\n\n// src/plugins/mapset.ts\nfunction enableMapSet() {\n class DraftMap extends Map {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 2 /* Map */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n assigned_: void 0,\n base_: target,\n draft_: this,\n isManual_: false,\n revoked_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(key) {\n return latest(this[DRAFT_STATE]).has(key);\n }\n set(key, value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!latest(state).has(key) || latest(state).get(key) !== value) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_.set(key, true);\n state.copy_.set(key, value);\n state.assigned_.set(key, true);\n }\n return this;\n }\n delete(key) {\n if (!this.has(key)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareMapCopy(state);\n markChanged(state);\n if (state.base_.has(key)) {\n state.assigned_.set(key, false);\n } else {\n state.assigned_.delete(key);\n }\n state.copy_.delete(key);\n return true;\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareMapCopy(state);\n markChanged(state);\n state.assigned_ = /* @__PURE__ */ new Map();\n each(state.base_, (key) => {\n state.assigned_.set(key, false);\n });\n state.copy_.clear();\n }\n }\n forEach(cb, thisArg) {\n const state = this[DRAFT_STATE];\n latest(state).forEach((_value, key, _map) => {\n cb.call(thisArg, this.get(key), key, this);\n });\n }\n get(key) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n const value = latest(state).get(key);\n if (state.finalized_ || !isDraftable(value)) {\n return value;\n }\n if (value !== state.base_.get(key)) {\n return value;\n }\n const draft = createProxy(value, state);\n prepareMapCopy(state);\n state.copy_.set(key, draft);\n return draft;\n }\n keys() {\n return latest(this[DRAFT_STATE]).keys();\n }\n values() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.values(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value\n };\n }\n };\n }\n entries() {\n const iterator = this.keys();\n return {\n [Symbol.iterator]: () => this.entries(),\n next: () => {\n const r = iterator.next();\n if (r.done)\n return r;\n const value = this.get(r.value);\n return {\n done: false,\n value: [r.value, value]\n };\n }\n };\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.entries();\n }\n }\n function proxyMap_(target, parent) {\n return new DraftMap(target, parent);\n }\n function prepareMapCopy(state) {\n if (!state.copy_) {\n state.assigned_ = /* @__PURE__ */ new Map();\n state.copy_ = new Map(state.base_);\n }\n }\n class DraftSet extends Set {\n constructor(target, parent) {\n super();\n this[DRAFT_STATE] = {\n type_: 3 /* Set */,\n parent_: parent,\n scope_: parent ? parent.scope_ : getCurrentScope(),\n modified_: false,\n finalized_: false,\n copy_: void 0,\n base_: target,\n draft_: this,\n drafts_: /* @__PURE__ */ new Map(),\n revoked_: false,\n isManual_: false\n };\n }\n get size() {\n return latest(this[DRAFT_STATE]).size;\n }\n has(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!state.copy_) {\n return state.base_.has(value);\n }\n if (state.copy_.has(value))\n return true;\n if (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n return true;\n return false;\n }\n add(value) {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (!this.has(value)) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.add(value);\n }\n return this;\n }\n delete(value) {\n if (!this.has(value)) {\n return false;\n }\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n markChanged(state);\n return state.copy_.delete(value) || (state.drafts_.has(value) ? state.copy_.delete(state.drafts_.get(value)) : (\n /* istanbul ignore next */\n false\n ));\n }\n clear() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n if (latest(state).size) {\n prepareSetCopy(state);\n markChanged(state);\n state.copy_.clear();\n }\n }\n values() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.values();\n }\n entries() {\n const state = this[DRAFT_STATE];\n assertUnrevoked(state);\n prepareSetCopy(state);\n return state.copy_.entries();\n }\n keys() {\n return this.values();\n }\n [(DRAFT_STATE, Symbol.iterator)]() {\n return this.values();\n }\n forEach(cb, thisArg) {\n const iterator = this.values();\n let result = iterator.next();\n while (!result.done) {\n cb.call(thisArg, result.value, result.value, this);\n result = iterator.next();\n }\n }\n }\n function proxySet_(target, parent) {\n return new DraftSet(target, parent);\n }\n function prepareSetCopy(state) {\n if (!state.copy_) {\n state.copy_ = /* @__PURE__ */ new Set();\n state.base_.forEach((value) => {\n if (isDraftable(value)) {\n const draft = createProxy(value, state);\n state.drafts_.set(value, draft);\n state.copy_.add(draft);\n } else {\n state.copy_.add(value);\n }\n });\n }\n }\n function assertUnrevoked(state) {\n if (state.revoked_)\n die(3, JSON.stringify(latest(state)));\n }\n loadPlugin(\"MapSet\", { proxyMap_, proxySet_ });\n}\n\n// src/immer.ts\nvar immer = new Immer2();\nvar produce = immer.produce;\nvar produceWithPatches = immer.produceWithPatches.bind(\n immer\n);\nvar setAutoFreeze = immer.setAutoFreeze.bind(immer);\nvar setUseStrictShallowCopy = immer.setUseStrictShallowCopy.bind(immer);\nvar applyPatches = immer.applyPatches.bind(immer);\nvar createDraft = immer.createDraft.bind(immer);\nvar finishDraft = immer.finishDraft.bind(immer);\nfunction castDraft(value) {\n return value;\n}\nfunction castImmutable(value) {\n return value;\n}\nexport {\n Immer2 as Immer,\n applyPatches,\n castDraft,\n castImmutable,\n createDraft,\n current,\n enableMapSet,\n enablePatches,\n finishDraft,\n freeze,\n DRAFTABLE as immerable,\n isDraft,\n isDraftable,\n NOTHING as nothing,\n original,\n produce,\n produceWithPatches,\n setAutoFreeze,\n setUseStrictShallowCopy\n};\n//# sourceMappingURL=immer.mjs.map","\nvar navigator = {};\nnavigator.userAgent = false;\n\nvar window = {};\n/*\n * jsrsasign(all) 11.1.0 (2024-02-01) (c) 2010-2023 Kenji Urushima | kjur.github.io/jsrsasign/license\n */\nvar VERSION = \"11.1.0\";\nvar VERSION_FULL = \"jsrsasign(all) 11.1.0 (2024-02-01) (c) 2010-2023 Kenji Urushima | kjur.github.io/jsrsasign/license\";\n\n/*! CryptoJS v3.1.2 core-fix.js\n * code.google.com/p/crypto-js\n * (c) 2009-2013 by Jeff Mott. All rights reserved.\n * code.google.com/p/crypto-js/wiki/License\n * THIS IS FIX of 'core.js' to fix Hmac issue.\n * https://code.google.com/p/crypto-js/issues/detail?id=84\n * https://crypto-js.googlecode.com/svn-history/r667/branches/3.x/src/core.js\n */\nvar CryptoJS=CryptoJS||(function(e,g){var a={};var b=a.lib={};var j=b.Base=(function(){function n(){}return{extend:function(p){n.prototype=this;var o=new n();if(p){o.mixIn(p)}if(!o.hasOwnProperty(\"init\")){o.init=function(){o.$super.init.apply(this,arguments)}}o.init.prototype=o;o.$super=this;return o},create:function(){var o=this.extend();o.init.apply(o,arguments);return o},init:function(){},mixIn:function(p){for(var o in p){if(p.hasOwnProperty(o)){this[o]=p[o]}}if(p.hasOwnProperty(\"toString\")){this.toString=p.toString}},clone:function(){return this.init.prototype.extend(this)}}}());var l=b.WordArray=j.extend({init:function(o,n){o=this.words=o||[];if(n!=g){this.sigBytes=n}else{this.sigBytes=o.length*4}},toString:function(n){return(n||h).stringify(this)},concat:function(t){var q=this.words;var p=t.words;var n=this.sigBytes;var s=t.sigBytes;this.clamp();if(n%4){for(var r=0;r>>2]>>>(24-(r%4)*8))&255;q[(n+r)>>>2]|=o<<(24-((n+r)%4)*8)}}else{for(var r=0;r>>2]=p[r>>>2]}}this.sigBytes+=s;return this},clamp:function(){var o=this.words;var n=this.sigBytes;o[n>>>2]&=4294967295<<(32-(n%4)*8);o.length=e.ceil(n/4)},clone:function(){var n=j.clone.call(this);n.words=this.words.slice(0);return n},random:function(p){var o=[];for(var n=0;n>>2]>>>(24-(n%4)*8))&255;q.push((s>>>4).toString(16));q.push((s&15).toString(16))}return q.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o>>3]|=parseInt(p.substr(o,2),16)<<(24-(o%8)*4)}return new l.init(q,n/2)}};var d=m.Latin1={stringify:function(q){var r=q.words;var p=q.sigBytes;var n=[];for(var o=0;o>>2]>>>(24-(o%4)*8))&255;n.push(String.fromCharCode(s))}return n.join(\"\")},parse:function(p){var n=p.length;var q=[];for(var o=0;o>>2]|=(p.charCodeAt(o)&255)<<(24-(o%4)*8)}return new l.init(q,n)}};var c=m.Utf8={stringify:function(n){try{return decodeURIComponent(escape(d.stringify(n)))}catch(o){throw new Error(\"Malformed UTF-8 data\")}},parse:function(n){return d.parse(unescape(encodeURIComponent(n)))}};var i=b.BufferedBlockAlgorithm=j.extend({reset:function(){this._data=new l.init();this._nDataBytes=0},_append:function(n){if(typeof n==\"string\"){n=c.parse(n)}this._data.concat(n);this._nDataBytes+=n.sigBytes},_process:function(w){var q=this._data;var x=q.words;var n=q.sigBytes;var t=this.blockSize;var v=t*4;var u=n/v;if(w){u=e.ceil(u)}else{u=e.max((u|0)-this._minBufferSize,0)}var s=u*t;var r=e.min(s*4,n);if(s){for(var p=0;p>>2]&255}};f.BlockCipher=n.extend({cfg:n.cfg.extend({mode:m,padding:h}),reset:function(){n.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor;else c=a.createDecryptor,this._minBufferSize=1;\nthis._mode=c.call(a,this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var p=f.CipherParams=k.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),m=(g.format={}).OpenSSL={stringify:function(a){var b=a.ciphertext;a=a.salt;\nreturn(a?l.create([1398893684,1701076831]).concat(a).concat(b):b).toString(r)},parse:function(a){a=r.parse(a);var b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=l.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return p.create({ciphertext:a,salt:c})}},j=f.SerializableCipher=k.extend({cfg:k.extend({format:m}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);var e=a.createEncryptor(c,d);b=e.finalize(b);e=e.cfg;return p.create({ciphertext:b,key:c,iv:e.iv,algorithm:a,mode:e.mode,padding:e.padding,\nblockSize:a.blockSize,formatter:d.format})},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return\"string\"==typeof a?b.parse(a,this):a}}),g=(g.kdf={}).OpenSSL={execute:function(a,b,c,d){d||(d=l.random(8));a=v.create({keySize:b+c}).compute(a,d);c=l.create(a.words.slice(b),4*c);a.sigBytes=4*b;return p.create({key:a,iv:c,salt:d})}},s=f.PasswordBasedCipher=j.extend({cfg:j.cfg.extend({kdf:g}),encrypt:function(a,\nb,c,d){d=this.cfg.extend(d);c=d.kdf.execute(c,a.keySize,a.ivSize);d.iv=c.iv;a=j.encrypt.call(this,a,b,c.key,d);a.mixIn(c);return a},decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);c=d.kdf.execute(c,a.keySize,a.ivSize,b.salt);d.iv=c.iv;return j.decrypt.call(this,a,b,c.key,d)}})}();\n\n/*\nCryptoJS v3.1.2 aes.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){for(var q=CryptoJS,x=q.lib.BlockCipher,r=q.algo,j=[],y=[],z=[],A=[],B=[],C=[],s=[],u=[],v=[],w=[],g=[],k=0;256>k;k++)g[k]=128>k?k<<1:k<<1^283;for(var n=0,l=0,k=0;256>k;k++){var f=l^l<<1^l<<2^l<<3^l<<4,f=f>>>8^f&255^99;j[n]=f;y[f]=n;var t=g[n],D=g[t],E=g[D],b=257*g[f]^16843008*f;z[n]=b<<24|b>>>8;A[n]=b<<16|b>>>16;B[n]=b<<8|b>>>24;C[n]=b;b=16843009*E^65537*D^257*t^16843008*n;s[f]=b<<24|b>>>8;u[f]=b<<16|b>>>16;v[f]=b<<8|b>>>24;w[f]=b;n?(n=t^g[g[g[E^t]]],l^=g[g[l]]):n=l=1}var F=[0,1,2,4,8,\n16,32,64,128,27,54],r=r.AES=x.extend({_doReset:function(){for(var c=this._key,e=c.words,a=c.sigBytes/4,c=4*((this._nRounds=a+6)+1),b=this._keySchedule=[],h=0;h>>24]<<24|j[d>>>16&255]<<16|j[d>>>8&255]<<8|j[d&255]):(d=d<<8|d>>>24,d=j[d>>>24]<<24|j[d>>>16&255]<<16|j[d>>>8&255]<<8|j[d&255],d^=F[h/a|0]<<24);b[h]=b[h-a]^d}e=this._invKeySchedule=[];for(a=0;aa||4>=h?d:s[j[d>>>24]]^u[j[d>>>16&255]]^v[j[d>>>\n8&255]]^w[j[d&255]]},encryptBlock:function(c,e){this._doCryptBlock(c,e,this._keySchedule,z,A,B,C,j)},decryptBlock:function(c,e){var a=c[e+1];c[e+1]=c[e+3];c[e+3]=a;this._doCryptBlock(c,e,this._invKeySchedule,s,u,v,w,y);a=c[e+1];c[e+1]=c[e+3];c[e+3]=a},_doCryptBlock:function(c,e,a,b,h,d,j,m){for(var n=this._nRounds,f=c[e]^a[0],g=c[e+1]^a[1],k=c[e+2]^a[2],p=c[e+3]^a[3],l=4,t=1;t>>24]^h[g>>>16&255]^d[k>>>8&255]^j[p&255]^a[l++],r=b[g>>>24]^h[k>>>16&255]^d[p>>>8&255]^j[f&255]^a[l++],s=\nb[k>>>24]^h[p>>>16&255]^d[f>>>8&255]^j[g&255]^a[l++],p=b[p>>>24]^h[f>>>16&255]^d[g>>>8&255]^j[k&255]^a[l++],f=q,g=r,k=s;q=(m[f>>>24]<<24|m[g>>>16&255]<<16|m[k>>>8&255]<<8|m[p&255])^a[l++];r=(m[g>>>24]<<24|m[k>>>16&255]<<16|m[p>>>8&255]<<8|m[f&255])^a[l++];s=(m[k>>>24]<<24|m[p>>>16&255]<<16|m[f>>>8&255]<<8|m[g&255])^a[l++];p=(m[p>>>24]<<24|m[f>>>16&255]<<16|m[g>>>8&255]<<8|m[k&255])^a[l++];c[e]=q;c[e+1]=r;c[e+2]=s;c[e+3]=p},keySize:8});q.AES=x._createHelper(r)})();\n\n/*\nCryptoJS v3.1.2 tripledes-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){function j(b,c){var a=(this._lBlock>>>b^this._rBlock)&c;this._rBlock^=a;this._lBlock^=a<>>b^this._lBlock)&c;this._lBlock^=a;this._rBlock^=a<a;a++){var f=q[a]-1;c[a]=b[f>>>5]>>>31-f%32&1}b=this._subKeys=[];for(f=0;16>f;f++){for(var d=b[f]=[],e=r[f],a=0;24>a;a++)d[a/6|0]|=c[(p[a]-1+e)%28]<<31-a%6,d[4+(a/6|0)]|=c[28+(p[a+24]-1+e)%28]<<31-a%6;d[0]=d[0]<<1|d[0]>>>31;for(a=1;7>a;a++)d[a]>>>=\n4*(a-1)+3;d[7]=d[7]<<5|d[7]>>>27}c=this._invSubKeys=[];for(a=0;16>a;a++)c[a]=b[15-a]},encryptBlock:function(b,c){this._doCryptBlock(b,c,this._subKeys)},decryptBlock:function(b,c){this._doCryptBlock(b,c,this._invSubKeys)},_doCryptBlock:function(b,c,a){this._lBlock=b[c];this._rBlock=b[c+1];j.call(this,4,252645135);j.call(this,16,65535);l.call(this,2,858993459);l.call(this,8,16711935);j.call(this,1,1431655765);for(var f=0;16>f;f++){for(var d=a[f],e=this._lBlock,h=this._rBlock,g=0,k=0;8>k;k++)g|=s[k][((h^\nd[k])&t[k])>>>0];this._lBlock=h;this._rBlock=e^g}a=this._lBlock;this._lBlock=this._rBlock;this._rBlock=a;j.call(this,1,1431655765);l.call(this,8,16711935);l.call(this,2,858993459);j.call(this,16,65535);j.call(this,4,252645135);b[c]=this._lBlock;b[c+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});h.DES=e._createHelper(m);g=g.TripleDES=e.extend({_doReset:function(){var b=this._key.words;this._des1=m.createEncryptor(n.create(b.slice(0,2)));this._des2=m.createEncryptor(n.create(b.slice(2,4)));this._des3=\nm.createEncryptor(n.create(b.slice(4,6)))},encryptBlock:function(b,c){this._des1.encryptBlock(b,c);this._des2.decryptBlock(b,c);this._des3.encryptBlock(b,c)},decryptBlock:function(b,c){this._des3.decryptBlock(b,c);this._des2.encryptBlock(b,c);this._des1.decryptBlock(b,c)},keySize:6,ivSize:2,blockSize:2});h.TripleDES=e._createHelper(g)})();\n\n/*\nCryptoJS v3.1.2 enc-base64.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var h=CryptoJS,j=h.lib.WordArray;h.enc.Base64={stringify:function(b){var e=b.words,f=b.sigBytes,c=this._map;b.clamp();b=[];for(var a=0;a>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join(\"\")},parse:function(b){var e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));for(var c=[],a=0,d=0;d<\ne;d++)if(d%4){var g=f.indexOf(b.charAt(d-1))<<2*(d%4),h=f.indexOf(b.charAt(d))>>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return j.create(c,a)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"}})();\n\n/*\nCryptoJS v3.1.2 md5.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(E){function h(a,f,g,j,p,h,k){a=a+(f&g|~f&j)+p+k;return(a<>>32-h)+f}function k(a,f,g,j,p,h,k){a=a+(f&j|g&~j)+p+k;return(a<>>32-h)+f}function l(a,f,g,j,h,k,l){a=a+(f^g^j)+h+l;return(a<>>32-k)+f}function n(a,f,g,j,h,k,l){a=a+(g^(f|~j))+h+l;return(a<>>32-k)+f}for(var r=CryptoJS,q=r.lib,F=q.WordArray,s=q.Hasher,q=r.algo,a=[],t=0;64>t;t++)a[t]=4294967296*E.abs(E.sin(t+1))|0;q=q.MD5=s.extend({_doReset:function(){this._hash=new F.init([1732584193,4023233417,2562383102,271733878])},\n_doProcessBlock:function(m,f){for(var g=0;16>g;g++){var j=f+g,p=m[j];m[j]=(p<<8|p>>>24)&16711935|(p<<24|p>>>8)&4278255360}var g=this._hash.words,j=m[f+0],p=m[f+1],q=m[f+2],r=m[f+3],s=m[f+4],t=m[f+5],u=m[f+6],v=m[f+7],w=m[f+8],x=m[f+9],y=m[f+10],z=m[f+11],A=m[f+12],B=m[f+13],C=m[f+14],D=m[f+15],b=g[0],c=g[1],d=g[2],e=g[3],b=h(b,c,d,e,j,7,a[0]),e=h(e,b,c,d,p,12,a[1]),d=h(d,e,b,c,q,17,a[2]),c=h(c,d,e,b,r,22,a[3]),b=h(b,c,d,e,s,7,a[4]),e=h(e,b,c,d,t,12,a[5]),d=h(d,e,b,c,u,17,a[6]),c=h(c,d,e,b,v,22,a[7]),\nb=h(b,c,d,e,w,7,a[8]),e=h(e,b,c,d,x,12,a[9]),d=h(d,e,b,c,y,17,a[10]),c=h(c,d,e,b,z,22,a[11]),b=h(b,c,d,e,A,7,a[12]),e=h(e,b,c,d,B,12,a[13]),d=h(d,e,b,c,C,17,a[14]),c=h(c,d,e,b,D,22,a[15]),b=k(b,c,d,e,p,5,a[16]),e=k(e,b,c,d,u,9,a[17]),d=k(d,e,b,c,z,14,a[18]),c=k(c,d,e,b,j,20,a[19]),b=k(b,c,d,e,t,5,a[20]),e=k(e,b,c,d,y,9,a[21]),d=k(d,e,b,c,D,14,a[22]),c=k(c,d,e,b,s,20,a[23]),b=k(b,c,d,e,x,5,a[24]),e=k(e,b,c,d,C,9,a[25]),d=k(d,e,b,c,r,14,a[26]),c=k(c,d,e,b,w,20,a[27]),b=k(b,c,d,e,B,5,a[28]),e=k(e,b,\nc,d,q,9,a[29]),d=k(d,e,b,c,v,14,a[30]),c=k(c,d,e,b,A,20,a[31]),b=l(b,c,d,e,t,4,a[32]),e=l(e,b,c,d,w,11,a[33]),d=l(d,e,b,c,z,16,a[34]),c=l(c,d,e,b,C,23,a[35]),b=l(b,c,d,e,p,4,a[36]),e=l(e,b,c,d,s,11,a[37]),d=l(d,e,b,c,v,16,a[38]),c=l(c,d,e,b,y,23,a[39]),b=l(b,c,d,e,B,4,a[40]),e=l(e,b,c,d,j,11,a[41]),d=l(d,e,b,c,r,16,a[42]),c=l(c,d,e,b,u,23,a[43]),b=l(b,c,d,e,x,4,a[44]),e=l(e,b,c,d,A,11,a[45]),d=l(d,e,b,c,D,16,a[46]),c=l(c,d,e,b,q,23,a[47]),b=n(b,c,d,e,j,6,a[48]),e=n(e,b,c,d,v,10,a[49]),d=n(d,e,b,c,\nC,15,a[50]),c=n(c,d,e,b,t,21,a[51]),b=n(b,c,d,e,A,6,a[52]),e=n(e,b,c,d,r,10,a[53]),d=n(d,e,b,c,y,15,a[54]),c=n(c,d,e,b,p,21,a[55]),b=n(b,c,d,e,w,6,a[56]),e=n(e,b,c,d,D,10,a[57]),d=n(d,e,b,c,u,15,a[58]),c=n(c,d,e,b,B,21,a[59]),b=n(b,c,d,e,s,6,a[60]),e=n(e,b,c,d,z,10,a[61]),d=n(d,e,b,c,q,15,a[62]),c=n(c,d,e,b,x,21,a[63]);g[0]=g[0]+b|0;g[1]=g[1]+c|0;g[2]=g[2]+d|0;g[3]=g[3]+e|0},_doFinalize:function(){var a=this._data,f=a.words,g=8*this._nDataBytes,j=8*a.sigBytes;f[j>>>5]|=128<<24-j%32;var h=E.floor(g/\n4294967296);f[(j+64>>>9<<4)+15]=(h<<8|h>>>24)&16711935|(h<<24|h>>>8)&4278255360;f[(j+64>>>9<<4)+14]=(g<<8|g>>>24)&16711935|(g<<24|g>>>8)&4278255360;a.sigBytes=4*(f.length+1);this._process();a=this._hash;f=a.words;for(g=0;4>g;g++)j=f[g],f[g]=(j<<8|j>>>24)&16711935|(j<<24|j>>>8)&4278255360;return a},clone:function(){var a=s.clone.call(this);a._hash=this._hash.clone();return a}});r.MD5=s._createHelper(q);r.HmacMD5=s._createHmacHelper(q)})(Math);\n\n/*\nCryptoJS v3.1.2 sha1-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var k=CryptoJS,b=k.lib,m=b.WordArray,l=b.Hasher,d=[],b=k.algo.SHA1=l.extend({_doReset:function(){this._hash=new m.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(n,p){for(var a=this._hash.words,e=a[0],f=a[1],h=a[2],j=a[3],b=a[4],c=0;80>c;c++){if(16>c)d[c]=n[p+c]|0;else{var g=d[c-3]^d[c-8]^d[c-14]^d[c-16];d[c]=g<<1|g>>>31}g=(e<<5|e>>>27)+b+d[c];g=20>c?g+((f&h|~f&j)+1518500249):40>c?g+((f^h^j)+1859775393):60>c?g+((f&h|f&j|h&j)-1894007588):g+((f^h^\nj)-899497514);b=j;j=h;h=f<<30|f>>>2;f=e;e=g}a[0]=a[0]+e|0;a[1]=a[1]+f|0;a[2]=a[2]+h|0;a[3]=a[3]+j|0;a[4]=a[4]+b|0},_doFinalize:function(){var b=this._data,d=b.words,a=8*this._nDataBytes,e=8*b.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+64>>>9<<4)+14]=Math.floor(a/4294967296);d[(e+64>>>9<<4)+15]=a;b.sigBytes=4*d.length;this._process();return this._hash},clone:function(){var b=l.clone.call(this);b._hash=this._hash.clone();return b}});k.SHA1=l._createHelper(b);k.HmacSHA1=l._createHmacHelper(b)})();\n\n/*\nCryptoJS v3.1.2 sha256-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(k){for(var g=CryptoJS,h=g.lib,v=h.WordArray,j=h.Hasher,h=g.algo,s=[],t=[],u=function(q){return 4294967296*(q-(q|0))|0},l=2,b=0;64>b;){var d;a:{d=l;for(var w=k.sqrt(d),r=2;r<=w;r++)if(!(d%r)){d=!1;break a}d=!0}d&&(8>b&&(s[b]=u(k.pow(l,0.5))),t[b]=u(k.pow(l,1/3)),b++);l++}var n=[],h=h.SHA256=j.extend({_doReset:function(){this._hash=new v.init(s.slice(0))},_doProcessBlock:function(q,h){for(var a=this._hash.words,c=a[0],d=a[1],b=a[2],k=a[3],f=a[4],g=a[5],j=a[6],l=a[7],e=0;64>e;e++){if(16>e)n[e]=\nq[h+e]|0;else{var m=n[e-15],p=n[e-2];n[e]=((m<<25|m>>>7)^(m<<14|m>>>18)^m>>>3)+n[e-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+n[e-16]}m=l+((f<<26|f>>>6)^(f<<21|f>>>11)^(f<<7|f>>>25))+(f&g^~f&j)+t[e]+n[e];p=((c<<30|c>>>2)^(c<<19|c>>>13)^(c<<10|c>>>22))+(c&d^c&b^d&b);l=j;j=g;g=f;f=k+m|0;k=b;b=d;d=c;c=m+p|0}a[0]=a[0]+c|0;a[1]=a[1]+d|0;a[2]=a[2]+b|0;a[3]=a[3]+k|0;a[4]=a[4]+f|0;a[5]=a[5]+g|0;a[6]=a[6]+j|0;a[7]=a[7]+l|0},_doFinalize:function(){var d=this._data,b=d.words,a=8*this._nDataBytes,c=8*d.sigBytes;\nb[c>>>5]|=128<<24-c%32;b[(c+64>>>9<<4)+14]=k.floor(a/4294967296);b[(c+64>>>9<<4)+15]=a;d.sigBytes=4*b.length;this._process();return this._hash},clone:function(){var b=j.clone.call(this);b._hash=this._hash.clone();return b}});g.SHA256=j._createHelper(h);g.HmacSHA256=j._createHmacHelper(h)})(Math);\n\n/*\nCryptoJS v3.1.2 sha224-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var b=CryptoJS,d=b.lib.WordArray,a=b.algo,c=a.SHA256,a=a.SHA224=c.extend({_doReset:function(){this._hash=new d.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var a=c._doFinalize.call(this);a.sigBytes-=4;return a}});b.SHA224=c._createHelper(a);b.HmacSHA224=c._createHmacHelper(a)})();\n\n/*\nCryptoJS v3.1.2 sha512-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){function a(){return d.create.apply(d,arguments)}for(var n=CryptoJS,r=n.lib.Hasher,e=n.x64,d=e.Word,T=e.WordArray,e=n.algo,ea=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),\na(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,\n2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),\na(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,\n3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],v=[],w=0;80>w;w++)v[w]=a();e=e.SHA512=r.extend({_doReset:function(){this._hash=new T.init([new d.init(1779033703,4089235720),new d.init(3144134277,2227873595),new d.init(1013904242,4271175723),new d.init(2773480762,1595750129),new d.init(1359893119,2917565137),new d.init(2600822924,725511199),new d.init(528734635,4215389547),new d.init(1541459225,327033209)])},_doProcessBlock:function(a,d){for(var f=this._hash.words,\nF=f[0],e=f[1],n=f[2],r=f[3],G=f[4],H=f[5],I=f[6],f=f[7],w=F.high,J=F.low,X=e.high,K=e.low,Y=n.high,L=n.low,Z=r.high,M=r.low,$=G.high,N=G.low,aa=H.high,O=H.low,ba=I.high,P=I.low,ca=f.high,Q=f.low,k=w,g=J,z=X,x=K,A=Y,y=L,U=Z,B=M,l=$,h=N,R=aa,C=O,S=ba,D=P,V=ca,E=Q,m=0;80>m;m++){var s=v[m];if(16>m)var j=s.high=a[d+2*m]|0,b=s.low=a[d+2*m+1]|0;else{var j=v[m-15],b=j.high,p=j.low,j=(b>>>1|p<<31)^(b>>>8|p<<24)^b>>>7,p=(p>>>1|b<<31)^(p>>>8|b<<24)^(p>>>7|b<<25),u=v[m-2],b=u.high,c=u.low,u=(b>>>19|c<<13)^(b<<\n3|c>>>29)^b>>>6,c=(c>>>19|b<<13)^(c<<3|b>>>29)^(c>>>6|b<<26),b=v[m-7],W=b.high,t=v[m-16],q=t.high,t=t.low,b=p+b.low,j=j+W+(b>>>0

>>0?1:0),b=b+c,j=j+u+(b>>>0>>0?1:0),b=b+t,j=j+q+(b>>>0>>0?1:0);s.high=j;s.low=b}var W=l&R^~l&S,t=h&C^~h&D,s=k&z^k&A^z&A,T=g&x^g&y^x&y,p=(k>>>28|g<<4)^(k<<30|g>>>2)^(k<<25|g>>>7),u=(g>>>28|k<<4)^(g<<30|k>>>2)^(g<<25|k>>>7),c=ea[m],fa=c.high,da=c.low,c=E+((h>>>14|l<<18)^(h>>>18|l<<14)^(h<<23|l>>>9)),q=V+((l>>>14|h<<18)^(l>>>18|h<<14)^(l<<23|h>>>9))+(c>>>0>>0?1:\n0),c=c+t,q=q+W+(c>>>0>>0?1:0),c=c+da,q=q+fa+(c>>>0>>0?1:0),c=c+b,q=q+j+(c>>>0>>0?1:0),b=u+T,s=p+s+(b>>>0>>0?1:0),V=S,E=D,S=R,D=C,R=l,C=h,h=B+c|0,l=U+q+(h>>>0>>0?1:0)|0,U=A,B=y,A=z,y=x,z=k,x=g,g=c+b|0,k=q+s+(g>>>0>>0?1:0)|0}J=F.low=J+g;F.high=w+k+(J>>>0>>0?1:0);K=e.low=K+x;e.high=X+z+(K>>>0>>0?1:0);L=n.low=L+y;n.high=Y+A+(L>>>0>>0?1:0);M=r.low=M+B;r.high=Z+U+(M>>>0>>0?1:0);N=G.low=N+h;G.high=$+l+(N>>>0>>0?1:0);O=H.low=O+C;H.high=aa+R+(O>>>0>>0?1:0);P=I.low=P+D;\nI.high=ba+S+(P>>>0>>0?1:0);Q=f.low=Q+E;f.high=ca+V+(Q>>>0>>0?1:0)},_doFinalize:function(){var a=this._data,d=a.words,f=8*this._nDataBytes,e=8*a.sigBytes;d[e>>>5]|=128<<24-e%32;d[(e+128>>>10<<5)+30]=Math.floor(f/4294967296);d[(e+128>>>10<<5)+31]=f;a.sigBytes=4*d.length;this._process();return this._hash.toX32()},clone:function(){var a=r.clone.call(this);a._hash=this._hash.clone();return a},blockSize:32});n.SHA512=r._createHelper(e);n.HmacSHA512=r._createHmacHelper(e)})();\n\n/*\nCryptoJS v3.1.2 sha384-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var c=CryptoJS,a=c.x64,b=a.Word,e=a.WordArray,a=c.algo,d=a.SHA512,a=a.SHA384=d.extend({_doReset:function(){this._hash=new e.init([new b.init(3418070365,3238371032),new b.init(1654270250,914150663),new b.init(2438529370,812702999),new b.init(355462360,4144912697),new b.init(1731405415,4290775857),new b.init(2394180231,1750603025),new b.init(3675008525,1694076839),new b.init(1203062813,3204075428)])},_doFinalize:function(){var a=d._doFinalize.call(this);a.sigBytes-=16;return a}});c.SHA384=\nd._createHelper(a);c.HmacSHA384=d._createHmacHelper(a)})();\n\n/*\nCryptoJS v3.1.2 ripemd160-min.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n/*\n\n(c) 2012 by Cedric Mesnil. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n(function(){var q=CryptoJS,d=q.lib,n=d.WordArray,p=d.Hasher,d=q.algo,x=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),y=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),z=n.create([11,14,15,12,\n5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),A=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),B=n.create([0,1518500249,1859775393,2400959708,2840853838]),C=n.create([1352829926,1548603684,1836072691,\n2053994217,0]),d=d.RIPEMD160=p.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,v){for(var b=0;16>b;b++){var c=v+b,f=e[c];e[c]=(f<<8|f>>>24)&16711935|(f<<24|f>>>8)&4278255360}var c=this._hash.words,f=B.words,d=C.words,n=x.words,q=y.words,p=z.words,w=A.words,t,g,h,j,r,u,k,l,m,s;u=t=c[0];k=g=c[1];l=h=c[2];m=j=c[3];s=r=c[4];for(var a,b=0;80>b;b+=1)a=t+e[v+n[b]]|0,a=16>b?a+((g^h^j)+f[0]):32>b?a+((g&h|~g&j)+f[1]):48>b?\na+(((g|~h)^j)+f[2]):64>b?a+((g&j|h&~j)+f[3]):a+((g^(h|~j))+f[4]),a|=0,a=a<>>32-p[b],a=a+r|0,t=r,r=j,j=h<<10|h>>>22,h=g,g=a,a=u+e[v+q[b]]|0,a=16>b?a+((k^(l|~m))+d[0]):32>b?a+((k&m|l&~m)+d[1]):48>b?a+(((k|~l)^m)+d[2]):64>b?a+((k&l|~k&m)+d[3]):a+((k^l^m)+d[4]),a|=0,a=a<>>32-w[b],a=a+s|0,u=s,s=m,m=l<<10|l>>>22,l=k,k=a;a=c[1]+h+m|0;c[1]=c[2]+j+s|0;c[2]=c[3]+r+u|0;c[3]=c[4]+t+k|0;c[4]=c[0]+g+l|0;c[0]=a},_doFinalize:function(){var e=this._data,d=e.words,b=8*this._nDataBytes,c=8*e.sigBytes;\nd[c>>>5]|=128<<24-c%32;d[(c+64>>>9<<4)+14]=(b<<8|b>>>24)&16711935|(b<<24|b>>>8)&4278255360;e.sigBytes=4*(d.length+1);this._process();e=this._hash;d=e.words;for(b=0;5>b;b++)c=d[b],d[b]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360;return e},clone:function(){var d=p.clone.call(this);d._hash=this._hash.clone();return d}});q.RIPEMD160=p._createHelper(d);q.HmacRIPEMD160=p._createHmacHelper(d)})(Math);\n\n/*\nCryptoJS v3.1.2 hmac.js\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n(function(){var c=CryptoJS,k=c.enc.Utf8;c.algo.HMAC=c.lib.Base.extend({init:function(a,b){a=this._hasher=new a.init;\"string\"==typeof b&&(b=k.parse(b));var c=a.blockSize,e=4*c;b.sigBytes>e&&(b=a.finalize(b));b.clamp();for(var f=this._oKey=b.clone(),g=this._iKey=b.clone(),h=f.words,j=g.words,d=0;d>6)+b64map.charAt(e&63)}if(b+1==d.length){e=parseInt(d.substring(b,b+1),16);a+=b64map.charAt(e<<2)}else{if(b+2==d.length){e=parseInt(d.substring(b,b+2),16);a+=b64map.charAt(e>>2)+b64map.charAt((e&3)<<4)}}if(b64pad){while((a.length&3)>0){a+=b64pad}}return a}function b64tohex(f){var d=\"\";var e;var b=0;var c;var a;for(e=0;e>2);c=a&3;b=1}else{if(b==1){d+=int2char((c<<2)|(a>>4));c=a&15;b=2}else{if(b==2){d+=int2char(c);d+=int2char(a>>2);c=a&3;b=3}else{d+=int2char((c<<2)|(a>>4));d+=int2char(a&15);b=0}}}}if(b==1){d+=int2char(c<<2)}return d}function b64toBA(e){var d=b64tohex(e);var c;var b=new Array();for(c=0;2*c=0){var d=a*this[f++]+b[e]+h;h=Math.floor(d/67108864);b[e++]=d&67108863}return h}function am2(f,q,r,e,o,a){var k=q&32767,p=q>>15;while(--a>=0){var d=this[f]&32767;var g=this[f++]>>15;var b=p*d+g*k;d=k*d+((b&32767)<<15)+r[e]+(o&1073741823);o=(d>>>30)+(b>>>15)+p*g+(o>>>30);r[e++]=d&1073741823}return o}function am3(f,q,r,e,o,a){var k=q&16383,p=q>>14;while(--a>=0){var d=this[f]&16383;var g=this[f++]>>14;var b=p*d+g*k;d=k*d+((b&16383)<<14)+r[e]+o;o=(d>>28)+(b>>14)+p*g;r[e++]=d&268435455}return o}if(j_lm&&(navigator.appName==\"Microsoft Internet Explorer\")){BigInteger.prototype.am=am2;dbits=30}else{if(j_lm&&(navigator.appName!=\"Netscape\")){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=((1<=0;--a){b[a]=this[a]}b.t=this.t;b.s=this.s}function bnpFromInt(a){this.t=1;this.s=(a<0)?-1:0;if(a>0){this[0]=a}else{if(a<-1){this[0]=a+this.DV}else{this.t=0}}}function nbv(a){var b=nbi();b.fromInt(a);return b}function bnpFromString(h,c){var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==256){e=8}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{this.fromRadix(h,c);return}}}}}}this.t=0;this.s=0;var g=h.length,d=false,f=0;while(--g>=0){var a=(e==8)?h[g]&255:intAt(h,g);if(a<0){if(h.charAt(g)==\"-\"){d=true}continue}d=false;if(f==0){this[this.t++]=a}else{if(f+e>this.DB){this[this.t-1]|=(a&((1<<(this.DB-f))-1))<>(this.DB-f))}else{this[this.t-1]|=a<=this.DB){f-=this.DB}}if(e==8&&(h[0]&128)!=0){this.s=-1;if(f>0){this[this.t-1]|=((1<<(this.DB-f))-1)<0&&this[this.t-1]==a){--this.t}}function bnToString(c){if(this.s<0){return\"-\"+this.negate().toString(c)}var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{return this.toRadix(c)}}}}}var g=(1<0){if(j>j)>0){a=true;h=int2char(l)}while(f>=0){if(j>(j+=this.DB-e)}else{l=(this[f]>>(j-=e))&g;if(j<=0){j+=this.DB;--f}}if(l>0){a=true}if(a){h+=int2char(l)}}}return a?h:\"0\"}function bnNegate(){var a=nbi();BigInteger.ZERO.subTo(this,a);return a}function bnAbs(){return(this.s<0)?this.negate():this}function bnCompareTo(b){var d=this.s-b.s;if(d!=0){return d}var c=this.t;d=c-b.t;if(d!=0){return(this.s<0)?-d:d}while(--c>=0){if((d=this[c]-b[c])!=0){return d}}return 0}function nbits(a){var c=1,b;if((b=a>>>16)!=0){a=b;c+=16}if((b=a>>8)!=0){a=b;c+=8}if((b=a>>4)!=0){a=b;c+=4}if((b=a>>2)!=0){a=b;c+=2}if((b=a>>1)!=0){a=b;c+=1}return c}function bnBitLength(){if(this.t<=0){return 0}return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM))}function bnpDLShiftTo(c,b){var a;for(a=this.t-1;a>=0;--a){b[a+c]=this[a]}for(a=c-1;a>=0;--a){b[a]=0}b.t=this.t+c;b.s=this.s}function bnpDRShiftTo(c,b){for(var a=c;a=0;--d){e[d+f+1]=(this[d]>>a)|h;h=(this[d]&g)<=0;--d){e[d]=0}e[f]=h;e.t=this.t+f+1;e.s=this.s;e.clamp()}function bnpRShiftTo(g,d){d.s=this.s;var e=Math.floor(g/this.DB);if(e>=this.t){d.t=0;return}var b=g%this.DB;var a=this.DB-b;var f=(1<>b;for(var c=e+1;c>b}if(b>0){d[this.t-e-1]|=(this.s&f)<>=this.DB}if(d.t>=this.DB}g+=this.s}else{g+=this.s;while(e>=this.DB}g-=d.s}f.s=(g<0)?-1:0;if(g<-1){f[e++]=this.DV+g}else{if(g>0){f[e++]=g}}f.t=e;f.clamp()}function bnpMultiplyTo(c,e){var b=this.abs(),f=c.abs();var d=b.t;e.t=d+f.t;while(--d>=0){e[d]=0}for(d=0;d=0){d[b]=0}for(b=0;b=a.DV){d[b+a.t]-=a.DV;d[b+a.t+1]=1}}if(d.t>0){d[d.t-1]+=a.am(b,a[b],d,2*b,0,1)}d.s=0;d.clamp()}function bnpDivRemTo(n,h,g){var w=n.abs();if(w.t<=0){return}var k=this.abs();if(k.t0){w.lShiftTo(v,d);k.lShiftTo(v,g)}else{w.copyTo(d);k.copyTo(g)}var p=d.t;var b=d[p-1];if(b==0){return}var o=b*(1<1)?d[p-2]>>this.F2:0);var A=this.FV/o,z=(1<=0){g[g.t++]=1;g.subTo(f,g)}BigInteger.ONE.dlShiftTo(p,f);f.subTo(d,d);while(d.t=0){var c=(g[--u]==b)?this.DM:Math.floor(g[u]*A+(g[u-1]+x)*z);if((g[u]+=d.am(0,c,g,s,0,p))0){g.rShiftTo(v,g)}if(a<0){BigInteger.ZERO.subTo(g,g)}}function bnMod(b){var c=nbi();this.abs().divRemTo(b,null,c);if(this.s<0&&c.compareTo(BigInteger.ZERO)>0){b.subTo(c,c)}return c}function Classic(a){this.m=a}function cConvert(a){if(a.s<0||a.compareTo(this.m)>=0){return a.mod(this.m)}else{return a}}function cRevert(a){return a}function cReduce(a){a.divRemTo(this.m,null,a)}function cMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}function cSqrTo(a,b){a.squareTo(b);this.reduce(b)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1){return 0}var a=this[0];if((a&1)==0){return 0}var b=a&3;b=(b*(2-(a&15)*b))&15;b=(b*(2-(a&255)*b))&255;b=(b*(2-(((a&65535)*b)&65535)))&65535;b=(b*(2-a*b%this.DV))%this.DV;return(b>0)?this.DV-b:-b}function Montgomery(a){this.m=a;this.mp=a.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<(a.DB-15))-1;this.mt2=2*a.t}function montConvert(a){var b=nbi();a.abs().dlShiftTo(this.m.t,b);b.divRemTo(this.m,null,b);if(a.s<0&&b.compareTo(BigInteger.ZERO)>0){this.m.subTo(b,b)}return b}function montRevert(a){var b=nbi();a.copyTo(b);this.reduce(b);return b}function montReduce(a){while(a.t<=this.mt2){a[a.t++]=0}for(var c=0;c>15)*this.mpl)&this.um)<<15))&a.DM;b=c+this.m.t;a[b]+=this.m.am(0,d,a,c,0,this.m.t);while(a[b]>=a.DV){a[b]-=a.DV;a[++b]++}}a.clamp();a.drShiftTo(this.m.t,a);if(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function montSqrTo(a,b){a.squareTo(b);this.reduce(b)}function montMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return((this.t>0)?(this[0]&1):this.s)==0}function bnpExp(h,j){if(h>4294967295||h<1){return BigInteger.ONE}var f=nbi(),a=nbi(),d=j.convert(this),c=nbits(h)-1;d.copyTo(f);while(--c>=0){j.sqrTo(f,a);if((h&(1<0){j.mulTo(a,d,f)}else{var b=f;f=a;a=b}}return j.revert(f)}function bnModPowInt(b,a){var c;if(b<256||a.isEven()){c=new Classic(a)}else{c=new Montgomery(a)}return this.exp(b,c)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);\n/*! (c) Tom Wu | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction bnClone(){var a=nbi();this.copyTo(a);return a}function bnIntValue(){if(this.s<0){if(this.t==1){return this[0]-this.DV}else{if(this.t==0){return -1}}}else{if(this.t==1){return this[0]}else{if(this.t==0){return 0}}}return((this[1]&((1<<(32-this.DB))-1))<>24}function bnShortValue(){return(this.t==0)?this.s:(this[0]<<16)>>16}function bnpChunkSize(a){return Math.floor(Math.LN2*this.DB/Math.log(a))}function bnSigNum(){if(this.s<0){return -1}else{if(this.t<=0||(this.t==1&&this[0]<=0)){return 0}else{return 1}}}function bnpToRadix(c){if(c==null){c=10}if(this.signum()==0||c<2||c>36){return\"0\"}var f=this.chunkSize(c);var e=Math.pow(c,f);var i=nbv(e),j=nbi(),h=nbi(),g=\"\";this.divRemTo(i,j,h);while(j.signum()>0){g=(e+h.intValue()).toString(c).substr(1)+g;j.divRemTo(i,j,h)}return h.intValue().toString(c)+g}function bnpFromRadix(m,h){this.fromInt(0);if(h==null){h=10}var f=this.chunkSize(h);var g=Math.pow(h,f),e=false,a=0,l=0;for(var c=0;c=f){this.dMultiply(g);this.dAddOffset(l,0);a=0;l=0}}if(a>0){this.dMultiply(Math.pow(h,a));this.dAddOffset(l,0)}if(e){BigInteger.ZERO.subTo(this,this)}}function bnpFromNumber(f,e,h){if(\"number\"==typeof e){if(f<2){this.fromInt(1)}else{this.fromNumber(f,h);if(!this.testBit(f-1)){this.bitwiseTo(BigInteger.ONE.shiftLeft(f-1),op_or,this)}if(this.isEven()){this.dAddOffset(1,0)}while(!this.isProbablePrime(e)){this.dAddOffset(2,0);if(this.bitLength()>f){this.subTo(BigInteger.ONE.shiftLeft(f-1),this)}}}}else{var d=new Array(),g=f&7;d.length=(f>>3)+1;e.nextBytes(d);if(g>0){d[0]&=((1<0){if(e>e)!=(this.s&this.DM)>>e){c[a++]=f|(this.s<<(this.DB-e))}while(b>=0){if(e<8){f=(this[b]&((1<>(e+=this.DB-8)}else{f=(this[b]>>(e-=8))&255;if(e<=0){e+=this.DB;--b}}if((f&128)!=0){f|=-256}if(a==0&&(this.s&128)!=(f&128)){++a}if(a>0||f!=this.s){c[a++]=f}}}return c}function bnEquals(b){return(this.compareTo(b)==0)}function bnMin(b){return(this.compareTo(b)<0)?this:b}function bnMax(b){return(this.compareTo(b)>0)?this:b}function bnpBitwiseTo(c,h,e){var d,g,b=Math.min(c.t,this.t);for(d=0;d>=16;b+=16}if((a&255)==0){a>>=8;b+=8}if((a&15)==0){a>>=4;b+=4}if((a&3)==0){a>>=2;b+=2}if((a&1)==0){++b}return b}function bnGetLowestSetBit(){for(var a=0;a=this.t){return(this.s!=0)}return((this[a]&(1<<(b%this.DB)))!=0)}function bnpChangeBit(c,b){var a=BigInteger.ONE.shiftLeft(c);this.bitwiseTo(a,b,a);return a}function bnSetBit(a){return this.changeBit(a,op_or)}function bnClearBit(a){return this.changeBit(a,op_andnot)}function bnFlipBit(a){return this.changeBit(a,op_xor)}function bnpAddTo(d,f){var e=0,g=0,b=Math.min(d.t,this.t);while(e>=this.DB}if(d.t>=this.DB}g+=this.s}else{g+=this.s;while(e>=this.DB}g+=d.s}f.s=(g<0)?-1:0;if(g>0){f[e++]=g}else{if(g<-1){f[e++]=this.DV+g}}f.t=e;f.clamp()}function bnAdd(b){var c=nbi();this.addTo(b,c);return c}function bnSubtract(b){var c=nbi();this.subTo(b,c);return c}function bnMultiply(b){var c=nbi();this.multiplyTo(b,c);return c}function bnSquare(){var a=nbi();this.squareTo(a);return a}function bnDivide(b){var c=nbi();this.divRemTo(b,c,null);return c}function bnRemainder(b){var c=nbi();this.divRemTo(b,null,c);return c}function bnDivideAndRemainder(b){var d=nbi(),c=nbi();this.divRemTo(b,d,c);return new Array(d,c)}function bnpDMultiply(a){this[this.t]=this.am(0,a-1,this,0,0,this.t);++this.t;this.clamp()}function bnpDAddOffset(b,a){if(b==0){return}while(this.t<=a){this[this.t++]=0}this[a]+=b;while(this[a]>=this.DV){this[a]-=this.DV;if(++a>=this.t){this[this.t++]=0}++this[a]}}function NullExp(){}function nNop(a){return a}function nMulTo(a,c,b){a.multiplyTo(c,b)}function nSqrTo(a,b){a.squareTo(b)}NullExp.prototype.convert=nNop;NullExp.prototype.revert=nNop;NullExp.prototype.mulTo=nMulTo;NullExp.prototype.sqrTo=nSqrTo;function bnPow(a){return this.exp(a,new NullExp())}function bnpMultiplyLowerTo(b,f,e){var d=Math.min(this.t+b.t,f);e.s=0;e.t=d;while(d>0){e[--d]=0}var c;for(c=e.t-this.t;d=0){d[c]=0}for(c=Math.max(e-this.t,0);c2*this.m.t){return a.mod(this.m)}else{if(a.compareTo(this.m)<0){return a}else{var b=nbi();a.copyTo(b);this.reduce(b);return b}}}function barrettRevert(a){return a}function barrettReduce(a){a.drShiftTo(this.m.t-1,this.r2);if(a.t>this.m.t+1){a.t=this.m.t+1;a.clamp()}this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);while(a.compareTo(this.r2)<0){a.dAddOffset(1,this.m.t+1)}a.subTo(this.r2,a);while(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function barrettSqrTo(a,b){a.squareTo(b);this.reduce(b)}function barrettMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Barrett.prototype.convert=barrettConvert;Barrett.prototype.revert=barrettRevert;Barrett.prototype.reduce=barrettReduce;Barrett.prototype.mulTo=barrettMulTo;Barrett.prototype.sqrTo=barrettSqrTo;function bnModPow(q,f){var o=q.bitLength(),h,b=nbv(1),v;if(o<=0){return b}else{if(o<18){h=1}else{if(o<48){h=3}else{if(o<144){h=4}else{if(o<768){h=5}else{h=6}}}}}if(o<8){v=new Classic(f)}else{if(f.isEven()){v=new Barrett(f)}else{v=new Montgomery(f)}}var p=new Array(),d=3,s=h-1,a=(1<1){var A=nbi();v.sqrTo(p[1],A);while(d<=a){p[d]=nbi();v.mulTo(A,p[d-2],p[d]);d+=2}}var l=q.t-1,x,u=true,c=nbi(),y;o=nbits(q[l])-1;while(l>=0){if(o>=s){x=(q[l]>>(o-s))&a}else{x=(q[l]&((1<<(o+1))-1))<<(s-o);if(l>0){x|=q[l-1]>>(this.DB+o-s)}}d=h;while((x&1)==0){x>>=1;--d}if((o-=d)<0){o+=this.DB;--l}if(u){p[x].copyTo(b);u=false}else{while(d>1){v.sqrTo(b,c);v.sqrTo(c,b);d-=2}if(d>0){v.sqrTo(b,c)}else{y=b;b=c;c=y}v.mulTo(c,p[x],b)}while(l>=0&&(q[l]&(1<0){b.rShiftTo(f,b);h.rShiftTo(f,h)}while(b.signum()>0){if((d=b.getLowestSetBit())>0){b.rShiftTo(d,b)}if((d=h.getLowestSetBit())>0){h.rShiftTo(d,h)}if(b.compareTo(h)>=0){b.subTo(h,b);b.rShiftTo(1,b)}else{h.subTo(b,h);h.rShiftTo(1,h)}}if(f>0){h.lShiftTo(f,h)}return h}function bnpModInt(e){if(e<=0){return 0}var c=this.DV%e,b=(this.s<0)?e-1:0;if(this.t>0){if(c==0){b=this[0]%e}else{for(var a=this.t-1;a>=0;--a){b=(c*b+this[a])%e}}}return b}function bnModInverse(f){var j=f.isEven();if((this.isEven()&&j)||f.signum()==0){return BigInteger.ZERO}var i=f.clone(),h=this.clone();var g=nbv(1),e=nbv(0),l=nbv(0),k=nbv(1);while(i.signum()!=0){while(i.isEven()){i.rShiftTo(1,i);if(j){if(!g.isEven()||!e.isEven()){g.addTo(this,g);e.subTo(f,e)}g.rShiftTo(1,g)}else{if(!e.isEven()){e.subTo(f,e)}}e.rShiftTo(1,e)}while(h.isEven()){h.rShiftTo(1,h);if(j){if(!l.isEven()||!k.isEven()){l.addTo(this,l);k.subTo(f,k)}l.rShiftTo(1,l)}else{if(!k.isEven()){k.subTo(f,k)}}k.rShiftTo(1,k)}if(i.compareTo(h)>=0){i.subTo(h,i);if(j){g.subTo(l,g)}e.subTo(k,e)}else{h.subTo(i,h);if(j){l.subTo(g,l)}k.subTo(e,k)}}if(h.compareTo(BigInteger.ONE)!=0){return BigInteger.ZERO}if(k.compareTo(f)>=0){return k.subtract(f)}if(k.signum()<0){k.addTo(f,k)}else{return k}if(k.signum()<0){return k.add(f)}else{return k}}var lowprimes=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];var lplim=(1<<26)/lowprimes[lowprimes.length-1];function bnIsProbablePrime(e){var d,b=this.abs();if(b.t==1&&b[0]<=lowprimes[lowprimes.length-1]){for(d=0;d>1;if(f>lowprimes.length){f=lowprimes.length}var b=nbi();for(var e=0;e>8)&255;rng_pool[rng_pptr++]^=(a>>16)&255;rng_pool[rng_pptr++]^=(a>>24)&255;if(rng_pptr>=rng_psize){rng_pptr-=rng_psize}}function rng_seed_time(){rng_seed_int(new Date().getTime())}if(rng_pool==null){rng_pool=new Array();rng_pptr=0;var t;if(window!==undefined&&(window.crypto!==undefined||window.msCrypto!==undefined)){var crypto=window.crypto||window.msCrypto;if(crypto.getRandomValues){var ua=new Uint8Array(32);crypto.getRandomValues(ua);for(t=0;t<32;++t){rng_pool[rng_pptr++]=ua[t]}}else{if(navigator.appName==\"Netscape\"&&navigator.appVersion<\"5\"){var z=window.crypto.random(32);for(t=0;t>>8;rng_pool[rng_pptr++]=t&255}rng_pptr=0;rng_seed_time()}function rng_get_byte(){if(rng_state==null){rng_seed_time();rng_state=prng_newstate();rng_state.init(rng_pool);for(rng_pptr=0;rng_pptr=0&&h>0){var f=e.charCodeAt(d--);if(f<128){g[--h]=f}else{if((f>127)&&(f<2048)){g[--h]=(f&63)|128;g[--h]=(f>>6)|192}else{g[--h]=(f&63)|128;g[--h]=((f>>6)&63)|128;g[--h]=(f>>12)|224}}}g[--h]=0;var b=new SecureRandom();var a=new Array();while(h>2){a[0]=0;while(a[0]==0){b.nextBytes(a)}g[--h]=a[0]}g[--h]=2;g[--h]=0;return new BigInteger(g)}function oaep_mgf1_arr(c,a,e){var b=\"\",d=0;while(b.length>24,(d&16711680)>>16,(d&65280)>>8,d&255])));d+=1}return b}function oaep_pad(q,a,f,l){var c=KJUR.crypto.MessageDigest;var o=KJUR.crypto.Util;var b=null;if(!f){f=\"sha1\"}if(typeof f===\"string\"){b=c.getCanonicalAlgName(f);l=c.getHashLength(b);f=function(i){return hextorstr(o.hashHex(rstrtohex(i),b))}}if(q.length+2*l+2>a){throw\"Message too long for RSA\"}var k=\"\",e;for(e=0;e0&&a.length>0){this.n=parseBigInt(b,16);this.e=parseInt(a,16)}else{throw\"Invalid RSA public key\"}}}function RSADoPublic(a){return a.modPowInt(this.e,this.n)}RSAKey.prototype.doPublic=RSADoPublic;RSAKey.prototype.setPublic=RSASetPublic;RSAKey.prototype.type=\"RSA\";\n/*! (c) Tom Wu, Kenji Urushima | http://www-cs-students.stanford.edu/~tjw/jsbn/\n */\nfunction pkcs1unpad2(g,j){var a=g.toByteArray();var f=0;while(f=a.length){return null}}var e=\"\";while(++f191)&&(h<224)){e+=String.fromCharCode(((h&31)<<6)|(a[f+1]&63));++f}else{e+=String.fromCharCode(((h&15)<<12)|((a[f+1]&63)<<6)|(a[f+2]&63));f+=2}}}return e}function oaep_mgf1_str(c,a,e){var b=\"\",d=0;while(b.length>24,(d&16711680)>>16,(d&65280)>>8,d&255]));d+=1}return b}function oaep_unpad(o,b,g,p){var e=KJUR.crypto.MessageDigest;var r=KJUR.crypto.Util;var c=null;if(!g){g=\"sha1\"}if(typeof g===\"string\"){c=e.getCanonicalAlgName(g);p=e.getHashLength(c);g=function(d){return hextorstr(r.hashHex(rstrtohex(d),c))}}o=o.toByteArray();var h;for(h=0;h0&&a.length>0){this.n=parseBigInt(c,16);this.e=parseInt(a,16);this.d=parseBigInt(b,16)}else{throw\"Invalid RSA private key\"}}}function RSASetPrivateEx(g,d,e,c,b,a,h,f){this.isPrivate=true;this.isPublic=false;if(g==null){throw\"RSASetPrivateEx N == null\"}if(d==null){throw\"RSASetPrivateEx E == null\"}if(g.length==0){throw\"RSASetPrivateEx N.length == 0\"}if(d.length==0){throw\"RSASetPrivateEx E.length == 0\"}if(g!=null&&d!=null&&g.length>0&&d.length>0){this.n=parseBigInt(g,16);this.e=parseInt(d,16);this.d=parseBigInt(e,16);this.p=parseBigInt(c,16);this.q=parseBigInt(b,16);this.dmp1=parseBigInt(a,16);this.dmq1=parseBigInt(h,16);this.coeff=parseBigInt(f,16)}else{throw\"Invalid RSA private key in RSASetPrivateEx\"}}function RSAGenerate(b,l){var a=new SecureRandom();var g=b>>1;this.e=parseInt(l,16);var c=new BigInteger(l,16);var d=(b/2)-100;var k=BigInteger.ONE.shiftLeft(d);for(;;){for(;;){this.p=new BigInteger(b-g,1,a);if(this.p.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE)==0&&this.p.isProbablePrime(10)){break}}for(;;){this.q=new BigInteger(g,1,a);if(this.q.subtract(BigInteger.ONE).gcd(c).compareTo(BigInteger.ONE)==0&&this.q.isProbablePrime(10)){break}}if(this.p.compareTo(this.q)<=0){var j=this.p;this.p=this.q;this.q=j}var h=this.q.subtract(this.p).abs();if(h.bitLength()0;--g){j=j.twice();var n=l.testBit(g);var f=m.testBit(g);if(n!=f){j=j.add(n?this:b)}}for(g=o.bitLength()-2;g>0;--g){c=c.twice();var p=o.testBit(g);var r=q.testBit(g);if(p!=r){c=c.add(p?c:a)}}return j}function pointFpMultiplyTwo(c,a,b){var d;if(c.bitLength()>b.bitLength()){d=c.bitLength()-1}else{d=b.bitLength()-1}var f=this.curve.getInfinity();var e=this.add(a);while(d>=0){f=f.twice();if(c.testBit(d)){if(b.testBit(d)){f=f.add(e)}else{f=f.add(this)}}else{if(b.testBit(d)){f=f.add(a)}}--d}return f}ECPointFp.prototype.getX=pointFpGetX;ECPointFp.prototype.getY=pointFpGetY;ECPointFp.prototype.equals=pointFpEquals;ECPointFp.prototype.isInfinity=pointFpIsInfinity;ECPointFp.prototype.negate=pointFpNegate;ECPointFp.prototype.add=pointFpAdd;ECPointFp.prototype.twice=pointFpTwice;ECPointFp.prototype.multiply=pointFpMultiply;ECPointFp.prototype.multiplyTwo=pointFpMultiplyTwo;function ECCurveFp(e,d,c){this.q=e;this.a=this.fromBigInteger(d);this.b=this.fromBigInteger(c);this.infinity=new ECPointFp(this,null,null)}function curveFpGetQ(){return this.q}function curveFpGetA(){return this.a}function curveFpGetB(){return this.b}function curveFpEquals(a){if(a==this){return true}return(this.q.equals(a.q)&&this.a.equals(a.a)&&this.b.equals(a.b))}function curveFpGetInfinity(){return this.infinity}function curveFpFromBigInteger(a){return new ECFieldElementFp(this.q,a)}function curveFpDecodePointHex(m){switch(parseInt(m.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:var c=m.substr(0,2);var l=m.substr(2);var j=this.fromBigInteger(new BigInteger(k,16));var i=this.getA();var h=this.getB();var e=j.square().add(i).multiply(j).add(h);var g=e.sqrt();if(c==\"03\"){g=g.negate()}return new ECPointFp(this,j,g);case 4:case 6:case 7:var d=(m.length-2)/2;var k=m.substr(2,d);var f=m.substr(d+2,d);return new ECPointFp(this,this.fromBigInteger(new BigInteger(k,16)),this.fromBigInteger(new BigInteger(f,16)));default:return null}}ECCurveFp.prototype.getQ=curveFpGetQ;ECCurveFp.prototype.getA=curveFpGetA;ECCurveFp.prototype.getB=curveFpGetB;ECCurveFp.prototype.equals=curveFpEquals;ECCurveFp.prototype.getInfinity=curveFpGetInfinity;ECCurveFp.prototype.fromBigInteger=curveFpFromBigInteger;ECCurveFp.prototype.decodePointHex=curveFpDecodePointHex;\n/*! (c) Stefan Thomas | https://github.com/bitcoinjs/bitcoinjs-lib\n */\nECFieldElementFp.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)};ECPointFp.prototype.getEncoded=function(c){var d=function(h,f){var g=h.toByteArrayUnsigned();if(fg.length){g.unshift(0)}}return g};var a=this.getX().toBigInteger();var e=this.getY().toBigInteger();var b=d(a,32);if(c){if(e.isEven()){b.unshift(2)}else{b.unshift(3)}}else{b.unshift(4);b=b.concat(d(e,32))}return b};ECPointFp.decodeFrom=function(g,c){var f=c[0];var e=c.length-1;var d=c.slice(1,1+e/2);var b=c.slice(1+e/2,1+e);d.unshift(0);b.unshift(0);var a=new BigInteger(d);var h=new BigInteger(b);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.decodeFromHex=function(g,c){var f=c.substr(0,2);var e=c.length-2;var d=c.substr(2,e/2);var b=c.substr(2+e/2,e/2);var a=new BigInteger(d,16);var h=new BigInteger(b,16);return new ECPointFp(g,g.fromBigInteger(a),g.fromBigInteger(h))};ECPointFp.prototype.add2D=function(c){if(this.isInfinity()){return c}if(c.isInfinity()){return this}if(this.x.equals(c.x)){if(this.y.equals(c.y)){return this.twice()}return this.curve.getInfinity()}var g=c.x.subtract(this.x);var e=c.y.subtract(this.y);var a=e.divide(g);var d=a.square().subtract(this.x).subtract(c.x);var f=a.multiply(this.x.subtract(d)).subtract(this.y);return new ECPointFp(this.curve,d,f)};ECPointFp.prototype.twice2D=function(){if(this.isInfinity()){return this}if(this.y.toBigInteger().signum()==0){return this.curve.getInfinity()}var b=this.curve.fromBigInteger(BigInteger.valueOf(2));var e=this.curve.fromBigInteger(BigInteger.valueOf(3));var a=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(b));var c=a.square().subtract(this.x.multiply(b));var d=a.multiply(this.x.subtract(c)).subtract(this.y);return new ECPointFp(this.curve,c,d)};ECPointFp.prototype.multiply2D=function(b){if(this.isInfinity()){return this}if(b.signum()==0){return this.curve.getInfinity()}var g=b;var f=g.multiply(new BigInteger(\"3\"));var l=this.negate();var d=this;var c;for(c=f.bitLength()-2;c>0;--c){d=d.twice();var a=f.testBit(c);var j=g.testBit(c);if(a!=j){d=d.add2D(a?this:l)}}return d};ECPointFp.prototype.isOnCurve=function(){var d=this.getX().toBigInteger();var i=this.getY().toBigInteger();var f=this.curve.getA().toBigInteger();var c=this.curve.getB().toBigInteger();var h=this.curve.getQ();var e=i.multiply(i).mod(h);var g=d.multiply(d).multiply(d).add(f.multiply(d)).add(c).mod(h);return e.equals(g)};ECPointFp.prototype.toString=function(){return\"(\"+this.getX().toBigInteger().toString()+\",\"+this.getY().toBigInteger().toString()+\")\"};ECPointFp.prototype.validate=function(){var c=this.curve.getQ();if(this.isInfinity()){throw new Error(\"Point is at infinity.\")}var a=this.getX().toBigInteger();var b=this.getY().toBigInteger();if(a.compareTo(BigInteger.ONE)<0||a.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error(\"x coordinate out of bounds\")}if(b.compareTo(BigInteger.ONE)<0||b.compareTo(c.subtract(BigInteger.ONE))>0){throw new Error(\"y coordinate out of bounds\")}if(!this.isOnCurve()){throw new Error(\"Point is not on the curve.\")}if(this.multiply(c).isInfinity()){throw new Error(\"Point is not a scalar multiple of G.\")}return true};\n/*! Mike Samuel (c) 2009 | code.google.com/p/json-sans-eval\n */\nvar jsonParse=(function(){var e=\"(?:-?\\\\b(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\\\b)\";var j='(?:[^\\\\0-\\\\x08\\\\x0a-\\\\x1f\"\\\\\\\\]|\\\\\\\\(?:[\"/\\\\\\\\bfnrt]|u[0-9A-Fa-f]{4}))';var i='(?:\"'+j+'*\")';var d=new RegExp(\"(?:false|true|null|[\\\\{\\\\}\\\\[\\\\]]|\"+e+\"|\"+i+\")\",\"g\");var k=new RegExp(\"\\\\\\\\(?:([^u])|u(.{4}))\",\"g\");var g={'\"':'\"',\"/\":\"/\",\"\\\\\":\"\\\\\",b:\"\\b\",f:\"\\f\",n:\"\\n\",r:\"\\r\",t:\"\\t\"};function h(l,m,n){return m?g[m]:String.fromCharCode(parseInt(n,16))}var c=new String(\"\");var a=\"\\\\\";var f={\"{\":Object,\"[\":Array};var b=Object.hasOwnProperty;return function(u,q){var p=u.match(d);var x;var v=p[0];var l=false;if(\"{\"===v){x={}}else{if(\"[\"===v){x=[]}else{x=[];l=true}}var t;var r=[x];for(var o=1-l,m=p.length;o=0;){delete D[n[A]]}}}return q.call(C,B,D)};x=s({\"\":x},\"\")}return x}})();\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.asn1==\"undefined\"||!KJUR.asn1){KJUR.asn1={}}KJUR.asn1.ASN1Util=new function(){this.integerToByteHex=function(a){var b=a.toString(16);if((b.length%2)==1){b=\"0\"+b}return b};this.bigIntToMinTwosComplementsHex=function(a){return twoscompl(a)};this.getPEMStringFromHex=function(a,b){return hextopem(a,b)};this.newObject=function(k){var F=KJUR,o=F.asn1,v=o.ASN1Object,B=o.DERBoolean,e=o.DERInteger,t=o.DERBitString,h=o.DEROctetString,x=o.DERNull,y=o.DERObjectIdentifier,m=o.DEREnumerated,g=o.DERUTF8String,f=o.DERNumericString,A=o.DERPrintableString,w=o.DERTeletexString,q=o.DERIA5String,E=o.DERUTCTime,j=o.DERGeneralizedTime,b=o.DERVisibleString,l=o.DERBMPString,n=o.DERSequence,c=o.DERSet,s=o.DERTaggedObject,p=o.ASN1Util.newObject;if(k instanceof o.ASN1Object){return k}var u=Object.keys(k);if(u.length!=1){throw new Error(\"key of param shall be only one.\")}var H=u[0];if(\":asn1:bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:visstr:bmpstr:seq:set:tag:\".indexOf(\":\"+H+\":\")==-1){throw new Error(\"undefined key: \"+H)}if(H==\"bool\"){return new B(k[H])}if(H==\"int\"){return new e(k[H])}if(H==\"bitstr\"){return new t(k[H])}if(H==\"octstr\"){return new h(k[H])}if(H==\"null\"){return new x(k[H])}if(H==\"oid\"){return new y(k[H])}if(H==\"enum\"){return new m(k[H])}if(H==\"utf8str\"){return new g(k[H])}if(H==\"numstr\"){return new f(k[H])}if(H==\"prnstr\"){return new A(k[H])}if(H==\"telstr\"){return new w(k[H])}if(H==\"ia5str\"){return new q(k[H])}if(H==\"utctime\"){return new E(k[H])}if(H==\"gentime\"){return new j(k[H])}if(H==\"visstr\"){return new b(k[H])}if(H==\"bmpstr\"){return new l(k[H])}if(H==\"asn1\"){return new v(k[H])}if(H==\"seq\"){var d=k[H];var G=[];for(var z=0;z15){throw new Error(\"ASN.1 length too long to represent by 8x: n = \"+j.toString(16))}var g=128+h;return g.toString(16)+i}};this.tohex=function(){if(this.hTLV==null||this.isModified){this.hV=this.getFreshValueHex();this.hL=this.getLengthHexFromValue();this.hTLV=this.hT+this.hL+this.hV;this.isModified=false}return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.getValueHex=function(){this.tohex();return this.hV};this.getFreshValueHex=function(){return\"\"};this.setByParam=function(g){this.params=g};if(e!=undefined){if(e.tlv!=undefined){this.hTLV=e.tlv;this.isModified=false}}};KJUR.asn1.DERAbstractString=function(c){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var b=null;var a=null;this.getString=function(){return this.s};this.setString=function(d){this.hTLV=null;this.isModified=true;this.s=d;this.hV=utf8tohex(this.s).toLowerCase()};this.setStringHex=function(d){this.hTLV=null;this.isModified=true;this.s=null;this.hV=d};this.getFreshValueHex=function(){return this.hV};if(typeof c!=\"undefined\"){if(typeof c==\"string\"){this.setString(c)}else{if(typeof c.str!=\"undefined\"){this.setString(c.str)}else{if(typeof c.hex!=\"undefined\"){this.setStringHex(c.hex)}}}}};extendClass(KJUR.asn1.DERAbstractString,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractTime=function(c){KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);var b=null;var a=null;this.localDateToUTC=function(g){var e=g.getTime()+(g.getTimezoneOffset()*60000);var f=new Date(e);return f};this.formatDate=function(m,o,e){var g=this.zeroPadding;var n=this.localDateToUTC(m);var p=String(n.getFullYear());if(o==\"utc\"){p=p.substr(2,2)}var l=g(String(n.getMonth()+1),2);var q=g(String(n.getDate()),2);var h=g(String(n.getHours()),2);var i=g(String(n.getMinutes()),2);var j=g(String(n.getSeconds()),2);var r=p+l+q+h+i+j;if(e===true){var f=n.getMilliseconds();if(f!=0){var k=g(String(f),3);k=k.replace(/[0]+$/,\"\");r=r+\".\"+k}}return r+\"Z\"};this.zeroPadding=function(e,d){if(e.length>=d){return e}return new Array(d-e.length+1).join(\"0\")+e};this.setByParam=function(d){this.hV=null;this.hTLV=null;this.params=d};this.getString=function(){return undefined};this.setString=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.str=d};this.setByDate=function(d){this.hTLV=null;this.isModified=true;if(this.params==undefined){this.params={}}this.params.date=d};this.setByDateValue=function(h,j,e,d,f,g){var i=new Date(Date.UTC(h,j-1,e,d,f,g,0));this.setByDate(i)};this.getFreshValueHex=function(){return this.hV}};extendClass(KJUR.asn1.DERAbstractTime,KJUR.asn1.ASN1Object);KJUR.asn1.DERAbstractStructured=function(b){KJUR.asn1.DERAbstractString.superclass.constructor.call(this);var a=null;this.setByASN1ObjectArray=function(c){this.hTLV=null;this.isModified=true;this.asn1Array=c};this.appendASN1Object=function(c){this.hTLV=null;this.isModified=true;this.asn1Array.push(c)};this.asn1Array=new Array();if(typeof b!=\"undefined\"){if(typeof b.array!=\"undefined\"){this.asn1Array=b.array}}};extendClass(KJUR.asn1.DERAbstractStructured,KJUR.asn1.ASN1Object);KJUR.asn1.DERBoolean=function(a){KJUR.asn1.DERBoolean.superclass.constructor.call(this);this.hT=\"01\";if(a==false){this.hTLV=\"010100\"}else{this.hTLV=\"0101ff\"}};extendClass(KJUR.asn1.DERBoolean,KJUR.asn1.ASN1Object);KJUR.asn1.DERInteger=function(b){KJUR.asn1.DERInteger.superclass.constructor.call(this);this.hT=\"02\";this.params=null;var a=twoscompl;this.setByBigInteger=function(c){this.isModified=true;this.params={bigint:c}};this.setByInteger=function(c){this.isModified=true;this.params=c};this.setValueHex=function(c){this.isModified=true;this.params={hex:c}};this.getFreshValueHex=function(){var d=this.params;var c=null;if(d==null){throw new Error(\"value not set\")}if(typeof d==\"object\"&&d.hex!=undefined){this.hV=d.hex;return this.hV}if(typeof d==\"number\"){c=new BigInteger(String(d),10)}else{if(d[\"int\"]!=undefined){c=new BigInteger(String(d[\"int\"]),10)}else{if(d.bigint!=undefined){c=d.bigint}else{throw new Error(\"wrong parameter\")}}}this.hV=a(c);return this.hV};if(b!=undefined){this.params=b}};extendClass(KJUR.asn1.DERInteger,KJUR.asn1.ASN1Object);KJUR.asn1.DERBitString=function(b){if(b!==undefined&&typeof b.obj!==\"undefined\"){var a=KJUR.asn1.ASN1Util.newObject(b.obj);b.hex=\"00\"+a.tohex()}KJUR.asn1.DERBitString.superclass.constructor.call(this);this.hT=\"03\";this.setHexValueIncludingUnusedBits=function(c){this.hTLV=null;this.isModified=true;this.hV=c};this.setUnusedBitsAndHexValue=function(c,e){if(c<0||7=f){break}}return j};ASN1HEX.getNthChildIdx=function(d,b,e){var c=ASN1HEX.getChildIdx(d,b);return c[e]};ASN1HEX.getIdxbyList=function(e,d,c,i){var g=ASN1HEX;var f,b;if(c.length==0){if(i!==undefined){if(e.substr(d,2)!==i){return -1}}return d}f=c.shift();b=g.getChildIdx(e,d);if(f>=b.length){return -1}return g.getIdxbyList(e,b[f],c,i)};ASN1HEX.getIdxbyListEx=function(f,k,b,g){var m=ASN1HEX;var d,l;if(b.length==0){if(g!==undefined){if(f.substr(k,2)!==g){return -1}}return k}d=b.shift();l=m.getChildIdx(f,k);var j=0;for(var e=0;e=d.length){return null}return e.getTLV(d,a)};ASN1HEX.getTLVbyListEx=function(d,c,b,f){var e=ASN1HEX;var a=e.getIdxbyListEx(d,c,b,f);if(a==-1){return null}return e.getTLV(d,a)};ASN1HEX.getVbyList=function(e,c,b,g,i){var f=ASN1HEX;var a,d;a=f.getIdxbyList(e,c,b,g);if(a==-1){return null}if(a>=e.length){return null}d=f.getV(e,a);if(i===true){d=d.substr(2)}return d};ASN1HEX.getVbyListEx=function(b,e,a,d,f){var j=ASN1HEX;var g,c,i;g=j.getIdxbyListEx(b,e,a,d);if(g==-1){return null}i=j.getV(b,g);if(b.substr(g,2)==\"03\"&&f!==false){i=i.substr(2)}return i};ASN1HEX.getInt=function(e,b,f){if(f==undefined){f=-1}try{var c=e.substr(b,2);if(c!=\"02\"&&c!=\"03\"){return f}var a=ASN1HEX.getV(e,b);if(c==\"02\"){return parseInt(a,16)}else{return bitstrtoint(a)}}catch(d){return f}};ASN1HEX.getOID=function(c,a,d){if(d==undefined){d=null}try{if(c.substr(a,2)!=\"06\"){return d}var e=ASN1HEX.getV(c,a);return hextooid(e)}catch(b){return d}};ASN1HEX.getOIDName=function(d,a,f){if(f==undefined){f=null}try{var e=ASN1HEX.getOID(d,a,f);if(e==f){return f}var b=KJUR.asn1.x509.OID.oid2name(e);if(b==\"\"){return e}return b}catch(c){return f}};ASN1HEX.getString=function(d,b,e){if(e==undefined){e=null}try{var a=ASN1HEX.getV(d,b);return hextorstr(a)}catch(c){return e}};ASN1HEX.hextooidstr=function(e){var h=function(b,a){if(b.length>=a){return b}return new Array(a-b.length+1).join(\"0\")+b};var l=[];var o=e.substr(0,2);var f=parseInt(o,16);l[0]=new String(Math.floor(f/40));l[1]=new String(f%40);var m=e.substr(2);var k=[];for(var g=0;g0){n=n+\".\"+j.join(\".\")}return n};ASN1HEX.dump=function(t,c,l,g){var p=ASN1HEX;var j=p.getV;var y=p.dump;var w=p.getChildIdx;var e=t;if(t instanceof KJUR.asn1.ASN1Object){e=t.tohex()}var q=function(A,i){if(A.length<=i*2){return A}else{var v=A.substr(0,i)+\"..(total \"+A.length/2+\"bytes)..\"+A.substr(A.length-i,i);return v}};if(c===undefined){c={ommit_long_octet:32}}if(l===undefined){l=0}if(g===undefined){g=\"\"}var x=c.ommit_long_octet;var z=e.substr(l,2);if(z==\"01\"){var h=j(e,l);if(h==\"00\"){return g+\"BOOLEAN FALSE\\n\"}else{return g+\"BOOLEAN TRUE\\n\"}}if(z==\"02\"){var h=j(e,l);return g+\"INTEGER \"+q(h,x)+\"\\n\"}if(z==\"03\"){var h=j(e,l);if(p.isASN1HEX(h.substr(2))){var k=g+\"BITSTRING, encapsulates\\n\";k=k+y(h.substr(2),c,0,g+\" \");return k}else{return g+\"BITSTRING \"+q(h,x)+\"\\n\"}}if(z==\"04\"){var h=j(e,l);if(p.isASN1HEX(h)){var k=g+\"OCTETSTRING, encapsulates\\n\";k=k+y(h,c,0,g+\" \");return k}else{return g+\"OCTETSTRING \"+q(h,x)+\"\\n\"}}if(z==\"05\"){return g+\"NULL\\n\"}if(z==\"06\"){var m=j(e,l);var b=KJUR.asn1.ASN1Util.oidHexToInt(m);var o=KJUR.asn1.x509.OID.oid2name(b);var a=b.replace(/\\./g,\" \");if(o!=\"\"){return g+\"ObjectIdentifier \"+o+\" (\"+a+\")\\n\"}else{return g+\"ObjectIdentifier (\"+a+\")\\n\"}}if(z==\"0a\"){return g+\"ENUMERATED \"+parseInt(j(e,l))+\"\\n\"}if(z==\"0c\"){return g+\"UTF8String '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"13\"){return g+\"PrintableString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"14\"){return g+\"TeletexString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"16\"){return g+\"IA5String '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"17\"){return g+\"UTCTime \"+hextoutf8(j(e,l))+\"\\n\"}if(z==\"18\"){return g+\"GeneralizedTime \"+hextoutf8(j(e,l))+\"\\n\"}if(z==\"1a\"){return g+\"VisualString '\"+hextoutf8(j(e,l))+\"'\\n\"}if(z==\"1e\"){return g+\"BMPString '\"+ucs2hextoutf8(j(e,l))+\"'\\n\"}if(z==\"30\"){if(e.substr(l,4)==\"3000\"){return g+\"SEQUENCE {}\\n\"}var k=g+\"SEQUENCE\\n\";var d=w(e,l);var f=c;if((d.length==2||d.length==3)&&e.substr(d[0],2)==\"06\"&&e.substr(d[d.length-1],2)==\"04\"){var o=p.oidname(j(e,d[0]));var r=JSON.parse(JSON.stringify(c));r.x509ExtName=o;f=r}for(var u=0;u4){return{\"enum\":{hex:p}}}else{return{\"enum\":parseInt(p,16)}}}else{if(C==\"30\"||C==\"31\"){j[c[C]]=u(x);return j}else{if(C==\"14\"){var o=q(p);j[c[C]]={str:o};return j}else{if(C==\"1e\"){var o=n(p);j[c[C]]={str:o};return j}else{if(\":0c:12:13:16:17:18:1a:\".indexOf(C)!=-1){var o=k(p);j[c[C]]={str:o};return j}else{if(C.match(/^8[0-9]$/)){var o=k(p);if(o==null|o==\"\"){return{tag:{tag:C,explicit:false,hex:p}}}else{if(o.match(/[\\x00-\\x1F\\x7F-\\x9F]/)!=null||o.match(/[\\u0000-\\u001F\\u0080–\\u009F]/)!=null){return{tag:{tag:C,explicit:false,hex:p}}}else{return{tag:{tag:C,explicit:false,str:o}}}}}else{if(C.match(/^a[0-9]$/)){try{if(!a(p)){throw new Error(\"not encap\")}return{tag:{tag:C,explicit:true,obj:f(p)}}}catch(z){return{tag:{tag:C,explicit:true,hex:p}}}}else{var A=new KJUR.asn1.ASN1Object();A.hV=p;var w=A.getLengthHexFromValue();return{asn1:{tlv:C+w+p}}}}}}}}}}}}}}}};ASN1HEX.isContextTag=function(c,b){c=c.toLowerCase();var f,e;try{f=parseInt(c,16)}catch(d){return -1}if(b===undefined){if((f&192)==128){return true}else{return false}}try{var a=b.match(/^\\[[0-9]+\\]$/);if(a==null){return false}e=parseInt(b.substr(1,b.length-1),10);if(e>31){return false}if(((f&192)==128)&&((f&31)==e)){return true}return false}catch(d){return false}};ASN1HEX.isASN1HEX=function(e){var d=ASN1HEX;if(e.length%2==1){return false}var c=d.getVblen(e,0);var b=e.substr(0,2);var f=d.getL(e,0);var a=e.length-b.length-f.length;if(a==c*2){return true}return false};ASN1HEX.checkStrictDER=function(g,o,d,c,r){var s=ASN1HEX;if(d===undefined){if(typeof g!=\"string\"){throw new Error(\"not hex string\")}g=g.toLowerCase();if(!KJUR.lang.String.isHex(g)){throw new Error(\"not hex string\")}d=g.length;c=g.length/2;if(c<128){r=1}else{r=Math.ceil(c.toString(16))+1}}var k=s.getL(g,o);if(k.length>r*2){throw new Error(\"L of TLV too long: idx=\"+o)}var n=s.getVblen(g,o);if(n>c){throw new Error(\"value of L too long than hex: idx=\"+o)}var q=s.getTLV(g,o);var f=q.length-2-s.getL(g,o).length;if(f!==(n*2)){throw new Error(\"V string length and L's value not the same:\"+f+\"/\"+(n*2))}if(o===0){if(g.length!=q.length){throw new Error(\"total length and TLV length unmatch:\"+g.length+\"!=\"+q.length)}}var b=g.substr(o,2);if(b===\"02\"){var a=s.getVidx(g,o);if(g.substr(a,2)==\"00\"&&g.charCodeAt(a+2)<56){throw new Error(\"not least zeros for DER INTEGER\")}}if(parseInt(b,16)&32){var p=s.getVblen(g,o);var m=0;var l=s.getChildIdx(g,o);for(var e=0;e0){n.push(new c({tag:\"a3\",obj:new j(q.ext)}))}var o=new KJUR.asn1.DERSequence({array:n});return o.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.TBSCertificate,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Extensions=function(d){KJUR.asn1.x509.Extensions.superclass.constructor.call(this);var c=KJUR,b=c.asn1,a=b.DERSequence,e=b.x509;this.aParam=[];this.setByParam=function(f){this.aParam=f};this.tohex=function(){var f=[];for(var h=0;h-1){i.push(new f({\"int\":this.pathLen}))}var h=new b({array:i});this.asn1ExtnValue=h;return this.asn1ExtnValue.tohex()};this.oid=\"2.5.29.19\";this.cA=false;this.pathLen=-1;if(g!==undefined){if(g.cA!==undefined){this.cA=g.cA}if(g.pathLen!==undefined){this.pathLen=g.pathLen}}};extendClass(KJUR.asn1.x509.BasicConstraints,KJUR.asn1.x509.Extension);KJUR.asn1.x509.CRLDistributionPoints=function(d){KJUR.asn1.x509.CRLDistributionPoints.superclass.constructor.call(this,d);var b=KJUR,a=b.asn1,c=a.x509;this.getExtnValueHex=function(){return this.asn1ExtnValue.tohex()};this.setByDPArray=function(e){var f=[];for(var g=0;g0){f.push(new b({array:j}))}}var g=new b({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(d!==undefined){this.params=d}};extendClass(KJUR.asn1.x509.PolicyInformation,KJUR.asn1.ASN1Object);KJUR.asn1.x509.PolicyQualifierInfo=function(e){KJUR.asn1.x509.PolicyQualifierInfo.superclass.constructor.call(this,e);var c=KJUR.asn1,b=c.DERSequence,d=c.DERIA5String,f=c.DERObjectIdentifier,a=c.x509.UserNotice;this.params=null;this.tohex=function(){if(this.params.cps!==undefined){var g=new b({array:[new f({oid:\"1.3.6.1.5.5.7.2.1\"}),new d({str:this.params.cps})]});return g.tohex()}if(this.params.unotice!=undefined){var g=new b({array:[new f({oid:\"1.3.6.1.5.5.7.2.2\"}),new a(this.params.unotice)]});return g.tohex()}};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.PolicyQualifierInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.UserNotice=function(e){KJUR.asn1.x509.UserNotice.superclass.constructor.call(this,e);var a=KJUR.asn1.DERSequence,d=KJUR.asn1.DERInteger,c=KJUR.asn1.x509.DisplayText,b=KJUR.asn1.x509.NoticeReference;this.params=null;this.tohex=function(){var f=[];if(this.params.noticeref!==undefined){f.push(new b(this.params.noticeref))}if(this.params.exptext!==undefined){f.push(new c(this.params.exptext))}var g=new a({array:f});return g.tohex()};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.x509.UserNotice,KJUR.asn1.ASN1Object);KJUR.asn1.x509.NoticeReference=function(d){KJUR.asn1.x509.NoticeReference.superclass.constructor.call(this,d);var a=KJUR.asn1.DERSequence,c=KJUR.asn1.DERInteger,b=KJUR.asn1.x509.DisplayText;this.params=null;this.tohex=function(){var f=[];if(this.params.org!==undefined){f.push(new b(this.params.org))}if(this.params.noticenum!==undefined){var h=[];var e=this.params.noticenum;for(var j=0;j0){for(var g=0;g0;f++){var h=c.shift();if(e===true){var d=b.pop();var j=(d+\",\"+h).replace(/\\\\,/g,\",\");b.push(j);e=false}else{b.push(h)}if(h.substr(-1,1)===\"\\\\\"){e=true}}b=b.map(function(a){return a.replace(\"/\",\"\\\\/\")});b.reverse();return\"/\"+b.join(\"/\")};KJUR.asn1.x509.X500Name.ldapToOneline=function(a){return KJUR.asn1.x509.X500Name.ldapToCompat(a)};KJUR.asn1.x509.RDN=function(b){KJUR.asn1.x509.RDN.superclass.constructor.call(this);this.asn1Array=[];this.paramArray=[];this.sRule=\"utf8\";var a=KJUR.asn1.x509.AttributeTypeAndValue;this.setByParam=function(c){if(c.rule!==undefined){this.sRule=c.rule}if(c.str!==undefined){this.addByMultiValuedString(c.str)}if(c.array!==undefined){this.paramArray=c.array}};this.addByString=function(c){this.asn1Array.push(new KJUR.asn1.x509.AttributeTypeAndValue({str:c,rule:this.sRule}))};this.addByMultiValuedString=function(e){var c=KJUR.asn1.x509.RDN.parseString(e);for(var d=0;d0){for(var d=0;d0;g++){var k=j.shift();if(h===true){var f=c.pop();var d=(f+\"+\"+k).replace(/\\\\\\+/g,\"+\");c.push(d);h=false}else{c.push(k)}if(k.substr(-1,1)===\"\\\\\"){h=true}}var l=false;var b=[];for(var g=0;c.length>0;g++){var k=c.shift();if(l===true){var e=b.pop();if(k.match(/\"$/)){var d=(e+\"+\"+k).replace(/^([^=]+)=\"(.*)\"$/,\"$1=$2\");b.push(d);l=false}else{b.push(e+\"+\"+k)}}else{b.push(k)}if(k.match(/^[^=]+=\"/)){l=true}}return b};KJUR.asn1.x509.AttributeTypeAndValue=function(c){KJUR.asn1.x509.AttributeTypeAndValue.superclass.constructor.call(this);this.sRule=\"utf8\";this.sType=null;this.sValue=null;this.dsType=null;var a=KJUR,g=a.asn1,d=g.DERSequence,l=g.DERUTF8String,i=g.DERPrintableString,h=g.DERTeletexString,b=g.DERIA5String,e=g.DERVisibleString,k=g.DERBMPString,f=a.lang.String.isMail,j=a.lang.String.isPrintable;this.setByParam=function(o){if(o.rule!==undefined){this.sRule=o.rule}if(o.ds!==undefined){this.dsType=o.ds}if(o.value===undefined&&o.str!==undefined){var n=o.str;var m=n.match(/^([^=]+)=(.+)$/);if(m){this.sType=m[1];this.sValue=m[2]}else{throw new Error(\"malformed attrTypeAndValueStr: \"+attrTypeAndValueStr)}}else{this.sType=o.type;this.sValue=o.value}};this.setByString=function(n,o){if(o!==undefined){this.sRule=o}var m=n.match(/^([^=]+)=(.+)$/);if(m){this.setByAttrTypeAndValueStr(m[1],m[2])}else{throw new Error(\"malformed attrTypeAndValueStr: \"+attrTypeAndValueStr)}};this._getDsType=function(){var o=this.sType;var n=this.sValue;var m=this.sRule;if(m===\"prn\"){if(o==\"CN\"&&f(n)){return\"ia5\"}if(j(n)){return\"prn\"}return\"utf8\"}else{if(m===\"utf8\"){if(o==\"CN\"&&f(n)){return\"ia5\"}if(o==\"C\"){return\"prn\"}return\"utf8\"}}return\"utf8\"};this.setByAttrTypeAndValueStr=function(o,n,m){if(m!==undefined){this.sRule=m}this.sType=o;this.sValue=n};this.getValueObj=function(n,m){if(n==\"utf8\"){return new l({str:m})}if(n==\"prn\"){return new i({str:m})}if(n==\"tel\"){return new h({str:m})}if(n==\"ia5\"){return new b({str:m})}if(n==\"vis\"){return new e({str:m})}if(n==\"bmp\"){return new k({str:m})}throw new Error(\"unsupported directory string type: type=\"+n+\" value=\"+m)};this.tohex=function(){if(this.dsType==null){this.dsType=this._getDsType()}var n=KJUR.asn1.x509.OID.atype2obj(this.sType);var m=this.getValueObj(this.dsType,this.sValue);var p=new d({array:[n,m]});this.TLV=p.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(c!==undefined){this.setByParam(c)}};extendClass(KJUR.asn1.x509.AttributeTypeAndValue,KJUR.asn1.ASN1Object);KJUR.asn1.x509.SubjectPublicKeyInfo=function(f){KJUR.asn1.x509.SubjectPublicKeyInfo.superclass.constructor.call(this);var l=null,k=null,a=KJUR,j=a.asn1,i=j.DERInteger,b=j.DERBitString,m=j.DERObjectIdentifier,e=j.DERSequence,h=j.ASN1Util.newObject,d=j.x509,o=d.AlgorithmIdentifier,g=a.crypto,n=g.ECDSA,c=g.DSA;this.getASN1Object=function(){if(this.asn1AlgId==null||this.asn1SubjPKey==null){throw\"algId and/or subjPubKey not set\"}var p=new e({array:[this.asn1AlgId,this.asn1SubjPKey]});return p};this.tohex=function(){var p=this.getASN1Object();this.hTLV=p.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};this.setPubKey=function(q){try{if(q instanceof RSAKey){var u=h({seq:[{\"int\":{bigint:q.n}},{\"int\":{\"int\":q.e}}]});var s=u.tohex();this.asn1AlgId=new o({name:\"rsaEncryption\"});this.asn1SubjPKey=new b({hex:\"00\"+s})}}catch(p){}try{if(q instanceof KJUR.crypto.ECDSA){var r=new m({name:q.curveName});this.asn1AlgId=new o({name:\"ecPublicKey\",asn1params:r});this.asn1SubjPKey=new b({hex:\"00\"+q.pubKeyHex})}}catch(p){}try{if(q instanceof KJUR.crypto.DSA){var r=new h({seq:[{\"int\":{bigint:q.p}},{\"int\":{bigint:q.q}},{\"int\":{bigint:q.g}}]});this.asn1AlgId=new o({name:\"dsa\",asn1params:r});var t=new i({bigint:q.y});this.asn1SubjPKey=new b({hex:\"00\"+t.tohex()})}}catch(p){}};if(f!==undefined){this.setPubKey(f)}};extendClass(KJUR.asn1.x509.SubjectPublicKeyInfo,KJUR.asn1.ASN1Object);KJUR.asn1.x509.Time=function(f){KJUR.asn1.x509.Time.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.params=null;this.type=null;this.setTimeParams=function(h){this.timeParams=h};this.setByParam=function(h){this.params=h};this.getType=function(h){if(h.match(/^[0-9]{12}Z$/)){return\"utc\"}if(h.match(/^[0-9]{14}Z$/)){return\"gen\"}if(h.match(/^[0-9]{12}\\.[0-9]+Z$/)){return\"utc\"}if(h.match(/^[0-9]{14}\\.[0-9]+Z$/)){return\"gen\"}return null};this.tohex=function(){var i=this.params;var h=null;if(typeof i==\"string\"){i={str:i}}if(i!=null&&i.str&&(i.type==null||i.type==undefined)){i.type=this.getType(i.str)}if(i!=null&&i.str){if(i.type==\"utc\"){h=new b(i.str)}if(i.type==\"gen\"){h=new g(i.str)}}else{if(this.type==\"gen\"){h=new g()}else{h=new b()}}if(h==null){throw new Error(\"wrong setting for Time\")}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};if(f!=undefined){this.setByParam(f)}};KJUR.asn1.x509.Time_bak=function(f){KJUR.asn1.x509.Time_bak.superclass.constructor.call(this);var e=null,a=null,d=KJUR,c=d.asn1,b=c.DERUTCTime,g=c.DERGeneralizedTime;this.setTimeParams=function(h){this.timeParams=h};this.tohex=function(){var h=null;if(this.timeParams!=null){if(this.type==\"utc\"){h=new b(this.timeParams)}else{h=new g(this.timeParams)}}else{if(this.type==\"utc\"){h=new b()}else{h=new g()}}this.TLV=h.tohex();return this.TLV};this.getEncodedHex=function(){return this.tohex()};this.type=\"utc\";if(f!==undefined){if(f.type!==undefined){this.type=f.type}else{if(f.str!==undefined){if(f.str.match(/^[0-9]{12}Z$/)){this.type=\"utc\"}if(f.str.match(/^[0-9]{14}Z$/)){this.type=\"gen\"}}}this.timeParams=f}};extendClass(KJUR.asn1.x509.Time,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier=function(e){KJUR.asn1.x509.AlgorithmIdentifier.superclass.constructor.call(this);this.nameAlg=null;this.asn1Alg=null;this.asn1Params=null;this.paramEmpty=false;var b=KJUR,a=b.asn1,c=a.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV;this.tohex=function(){if(this.nameAlg===null&&this.asn1Alg===null){throw new Error(\"algorithm not specified\")}if(this.nameAlg!==null){var f=null;for(var h in c){if(h===this.nameAlg){f=c[h]}}if(f!==null){this.hTLV=f;return this.hTLV}}if(this.nameAlg!==null&&this.asn1Alg===null){this.asn1Alg=a.x509.OID.name2obj(this.nameAlg)}var g=[this.asn1Alg];if(this.asn1Params!==null){g.push(this.asn1Params)}var i=new a.DERSequence({array:g});this.hTLV=i.tohex();return this.hTLV};this.getEncodedHex=function(){return this.tohex()};if(e!==undefined){if(e.name!==undefined){this.nameAlg=e.name}if(e.asn1params!==undefined){this.asn1Params=e.asn1params}if(e.paramempty!==undefined){this.paramEmpty=e.paramempty}}if(this.asn1Params===null&&this.paramEmpty===false&&this.nameAlg!==null){if(this.nameAlg.name!==undefined){this.nameAlg=this.nameAlg.name}var d=this.nameAlg.toLowerCase();if(d.substr(-7,7)!==\"withdsa\"&&d.substr(-9,9)!==\"withecdsa\"){this.asn1Params=new a.DERNull()}}};extendClass(KJUR.asn1.x509.AlgorithmIdentifier,KJUR.asn1.ASN1Object);KJUR.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV={SHAwithRSAandMGF1:\"300d06092a864886f70d01010a3000\",SHA256withRSAandMGF1:\"303d06092a864886f70d01010a3030a00d300b0609608648016503040201a11a301806092a864886f70d010108300b0609608648016503040201a203020120\",SHA384withRSAandMGF1:\"303d06092a864886f70d01010a3030a00d300b0609608648016503040202a11a301806092a864886f70d010108300b0609608648016503040202a203020130\",SHA512withRSAandMGF1:\"303d06092a864886f70d01010a3030a00d300b0609608648016503040203a11a301806092a864886f70d010108300b0609608648016503040203a203020140\"};KJUR.asn1.x509.GeneralName=function(f){KJUR.asn1.x509.GeneralName.superclass.constructor.call(this);var l={rfc822:\"81\",dns:\"82\",dn:\"a4\",uri:\"86\",ip:\"87\",otherName:\"a0\"},b=KJUR,h=b.asn1,d=h.x509,a=d.X500Name,g=d.OtherName,e=h.DERIA5String,i=h.DERPrintableString,k=h.DEROctetString,c=h.DERTaggedObject,m=h.ASN1Object,j=Error;this.params=null;this.setByParam=function(n){this.params=n};this.tohex=function(){var p=this.params;var A,y,q;var y=false;if(p.other!==undefined){A=\"a0\",q=new g(p.other)}else{if(p.rfc822!==undefined){A=\"81\";q=new e({str:p.rfc822})}else{if(p.dns!==undefined){A=\"82\";q=new e({str:p.dns})}else{if(p.dn!==undefined){A=\"a4\";y=true;if(typeof p.dn===\"string\"){q=new a({str:p.dn})}else{if(p.dn instanceof KJUR.asn1.x509.X500Name){q=p.dn}else{q=new a(p.dn)}}}else{if(p.ldapdn!==undefined){A=\"a4\";y=true;q=new a({ldapstr:p.ldapdn})}else{if(p.certissuer!==undefined||p.certsubj!==undefined){A=\"a4\";y=true;var n,o;var z=null;if(p.certsubj!==undefined){n=false;o=p.certsubj}else{n=true;o=p.certissuer}if(o.match(/^[0-9A-Fa-f]+$/)){z==o}if(o.indexOf(\"-----BEGIN \")!=-1){z=pemtohex(o)}if(z==null){throw new Error(\"certsubj/certissuer not cert\")}var w=new X509();w.hex=z;var s;if(n){s=w.getIssuerHex()}else{s=w.getSubjectHex()}q=new m();q.hTLV=s}else{if(p.uri!==undefined){A=\"86\";q=new e({str:p.uri})}else{if(p.ip!==undefined){A=\"87\";var v;var t=p.ip;try{if(t.match(/^[0-9a-f]+$/)){var r=t.length;if(r==8||r==16||r==32||r==64){v=t}else{throw\"err\"}}else{v=iptohex(t)}}catch(u){throw new j(\"malformed IP address: \"+p.ip+\":\"+u.message)}q=new k({hex:v})}else{throw new j(\"improper params\")}}}}}}}}var B=new c({tag:A,explicit:y,obj:q});return B.tohex()};this.getEncodedHex=function(){return this.tohex()};if(f!==undefined){this.setByParam(f)}};extendClass(KJUR.asn1.x509.GeneralName,KJUR.asn1.ASN1Object);KJUR.asn1.x509.GeneralNames=function(d){KJUR.asn1.x509.GeneralNames.superclass.constructor.call(this);var a=null,c=KJUR,b=c.asn1;this.setByParamArray=function(g){for(var e=0;e0){var m=b(n.valhex,q[0]);var p=j(m,0);var t=[];for(var o=0;o1){var r=b(n.valhex,q[1]);n.polhex=r}delete n.valhex};this.setSignaturePolicyIdentifier=function(s){var q=j(s.valhex,0);if(q.length>0){var r=l.getOID(s.valhex,q[0]);s.oid=r}if(q.length>1){var m=new a();var t=j(s.valhex,q[1]);var p=b(s.valhex,t[0]);var o=m.getAlgorithmIdentifierName(p);s.alg=o;var n=i(s.valhex,t[1]);s.hash=n}delete s.valhex};this.setSigningCertificateV2=function(o){var s=j(o.valhex,0);if(s.length>0){var n=b(o.valhex,s[0]);var r=j(n,0);var u=[];for(var q=0;q1){var t=b(o.valhex,s[1]);o.polhex=t}delete o.valhex};this.getESSCertID=function(o){var p={};var n=j(o,0);if(n.length>0){var q=i(o,n[0]);p.hash=q}if(n.length>1){var m=b(o,n[1]);var r=this.getIssuerSerial(m);if(r.serial!=undefined){p.serial=r.serial}if(r.issuer!=undefined){p.issuer=r.issuer}}return p};this.getESSCertIDv2=function(q){var s={};var p=j(q,0);if(p.length<1||3r+1){var m=b(q,p[r+1]);var t=this.getIssuerSerial(m);s.issuer=t.issuer;s.serial=t.serial}return s};this.getIssuerSerial=function(q){var r={};var n=j(q,0);var m=b(q,n[0]);var p=h.getGeneralNames(m);var o=p[0].dn;r.issuer=o;var s=i(q,n[1]);r.serial={hex:s};return r};this.getCertificateSet=function(p){var n=j(p,0);var m=[];for(var o=0;o=0;j--){l+=k[j]}return l}else{if(typeof n==\"string\"&&a[n]!=undefined){return namearraytobinstr([n],a)}else{if(typeof n==\"object\"&&n.length!=undefined){return namearraytobinstr(n,a)}else{throw new f(\"wrong params\")}}}return};this.tohex=function(){var j=this.params;var i=this.getBinValue();return(new g({bin:i})).tohex()};this.getEncodedHex=function(){return this.tohex()};if(h!=undefined){this.setByParam(h)}};extendClass(KJUR.asn1.tsp.PKIFailureInfo,KJUR.asn1.ASN1Object);KJUR.asn1.tsp.AbstractTSAAdapter=function(a){this.getTSTHex=function(c,b){throw\"not implemented yet\"}};KJUR.asn1.tsp.SimpleTSAAdapter=function(e){var d=KJUR,c=d.asn1,a=c.tsp,b=d.crypto.Util.hashHex;a.SimpleTSAAdapter.superclass.constructor.call(this);this.params=null;this.serial=0;this.getTSTHex=function(g,f){var i=b(g,f);this.params.econtent.content.messageImprint={alg:f,hash:i};this.params.econtent.content.serial={\"int\":this.serial++};var h=Math.floor(Math.random()*1000000000);this.params.econtent.content.nonce={\"int\":h};var j=new a.TimeStampToken(this.params);return j.getContentInfoEncodedHex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.tsp.SimpleTSAAdapter,KJUR.asn1.tsp.AbstractTSAAdapter);KJUR.asn1.tsp.FixedTSAAdapter=function(e){var d=KJUR,c=d.asn1,a=c.tsp,b=d.crypto.Util.hashHex;a.FixedTSAAdapter.superclass.constructor.call(this);this.params=null;this.getTSTHex=function(g,f){var h=b(g,f);this.params.econtent.content.messageImprint={alg:f,hash:h};var i=new a.TimeStampToken(this.params);return i.getContentInfoEncodedHex()};if(e!==undefined){this.params=e}};extendClass(KJUR.asn1.tsp.FixedTSAAdapter,KJUR.asn1.tsp.AbstractTSAAdapter);KJUR.asn1.tsp.TSPUtil=new function(){};KJUR.asn1.tsp.TSPUtil.newTimeStampToken=function(a){return new KJUR.asn1.tsp.TimeStampToken(a)};KJUR.asn1.tsp.TSPUtil.parseTimeStampReq=function(a){var b=new KJUR.asn1.tsp.TSPParser();return b.getTimeStampReq(a)};KJUR.asn1.tsp.TSPUtil.parseMessageImprint=function(a){var b=new KJUR.asn1.tsp.TSPParser();return b.getMessageImprint(a)};KJUR.asn1.tsp.TSPParser=function(){var e=Error,a=X509,f=new a(),k=ASN1HEX,g=k.getV,b=k.getTLV,d=k.getIdxbyList,c=k.getTLVbyListEx,i=k.getChildIdx;var j=[\"granted\",\"grantedWithMods\",\"rejection\",\"waiting\",\"revocationWarning\",\"revocationNotification\"];var h={0:\"badAlg\",2:\"badRequest\",5:\"badDataFormat\",14:\"timeNotAvailable\",15:\"unacceptedPolicy\",16:\"unacceptedExtension\",17:\"addInfoNotAvailable\",25:\"systemFailure\"};this.getResponse=function(n){var l=i(n,0);if(l.length==1){return this.getPKIStatusInfo(b(n,l[0]))}else{if(l.length>1){var o=this.getPKIStatusInfo(b(n,l[0]));var m=b(n,l[1]);var p=this.getToken(m);p.statusinfo=o;return p}}};this.getToken=function(m){var l=new KJUR.asn1.cms.CMSParser;var n=l.getCMSSignedData(m);this.setTSTInfo(n);return n};this.setTSTInfo=function(l){var o=l.econtent;if(o.type==\"tstinfo\"){var n=o.content.hex;var m=this.getTSTInfo(n);o.content=m}};this.getTSTInfo=function(r){var x={};var s=i(r,0);var p=g(r,s[1]);x.policy=hextooid(p);var o=b(r,s[2]);x.messageImprint=this.getMessageImprint(o);var u=g(r,s[3]);x.serial={hex:u};var y=g(r,s[4]);x.genTime={str:hextoutf8(y)};var q=0;if(s.length>5&&r.substr(s[5],2)==\"30\"){var v=b(r,s[5]);x.accuracy=this.getAccuracy(v);q++}if(s.length>5+q&&r.substr(s[5+q],2)==\"01\"){var z=g(r,s[5+q]);if(z==\"ff\"){x.ordering=true}q++}if(s.length>5+q&&r.substr(s[5+q],2)==\"02\"){var n=g(r,s[5+q]);x.nonce={hex:n};q++}if(s.length>5+q&&r.substr(s[5+q],2)==\"a0\"){var m=b(r,s[5+q]);m=\"30\"+m.substr(2);pGeneralNames=f.getGeneralNames(m);var t=pGeneralNames[0].dn;x.tsa=t;q++}if(s.length>5+q&&r.substr(s[5+q],2)==\"a1\"){var l=b(r,s[5+q]);l=\"30\"+l.substr(2);var w=f.getExtParamArray(l);x.ext=w;q++}return x};this.getAccuracy=function(q){var r={};var o=i(q,0);for(var p=0;p1&&o.substr(r[1],2)==\"30\"){var m=b(o,r[1]);t.statusstr=this.getPKIFreeText(m);n++}if(r.length>n&&o.substr(r[1+n],2)==\"03\"){var q=b(o,r[1+n]);t.failinfo=this.getPKIFailureInfo(q)}return t};this.getPKIFreeText=function(n){var o=[];var l=i(n,0);for(var m=0;m>6);var i=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16))}var j=224|((h&240)>>4);var i=128|((h&15)<<2)|((a&192)>>6);var g=128|(a&63);return hextoutf8(j.toString(16)+i.toString(16)+g.toString(16))}var c=d.match(/.{4}/g);var b=c.map(e);return b.join(\"\")}function encodeURIComponentAll(a){var d=encodeURIComponent(a);var b=\"\";for(var c=0;c\"7\"){return\"00\"+a}return a}function intarystrtohex(b){b=b.replace(/^\\s*\\[\\s*/,\"\");b=b.replace(/\\s*\\]\\s*$/,\"\");b=b.replace(/\\s*/g,\"\");try{var c=b.split(/,/).map(function(g,e,h){var f=parseInt(g);if(f<0||255a.length){d=a.length}for(var b=0;b0){o=o+\".\"+k.join(\".\")}return o}catch(j){return null}}function inttohex(b){var a=new BigInteger(String(b),10);return twoscompl(a)}function twoscompl(b){var g=b.toString(16);if(g.substr(0,1)!=\"-\"){if(g.length%2==1){g=\"0\"+g}else{if(!g.match(/^[0-7]/)){g=\"00\"+g}}return g}var a=g.substr(1);var f=a.length;if(f%2==1){f+=1}else{if(!g.match(/^[0-7]/)){f+=2}}var j=\"\";for(var e=0;e=b){return c}return new Array(b-c.length+1).join(a)+c};function bitstrtoint(e){if(e.length%2!=0){return -1}e=e.toLowerCase();if(e.match(/^[0-9a-f]+$/)==null){return -1}try{var a=e.substr(0,2);if(a==\"00\"){return parseInt(e.substr(2),16)}var b=parseInt(a,16);if(b>7){return -1}var g=e.substr(2);var d=parseInt(g,16).toString(2);if(d==\"0\"){d=\"00000000\"}d=d.slice(0,0-b);var f=parseInt(d,2);if(f==NaN){return -1}return f}catch(c){return -1}}function inttobitstr(e){if(typeof e!=\"number\"){return null}if(e<0){return null}var c=Number(e).toString(2);var b=8-c.length%8;if(b==8){b=0}c=c+strpad(\"\",b,\"0\");var d=parseInt(c,2).toString(16);if(d.length%2==1){d=\"0\"+d}var a=\"0\"+b;return a+d}function bitstrtobinstr(g){if(typeof g!=\"string\"){return null}if(g.length%2!=0){return null}if(!g.match(/^[0-9a-f]+$/)){return null}try{var c=parseInt(g.substr(0,2),16);if(c<0||7=0;a--){c+=b[a]}return c}function aryval(e,c,d){if(typeof e!=\"object\"){return undefined}var c=String(c).split(\".\");for(var b=0;bd){throw\"key is too short for SigAlg: keylen=\"+j+\",\"+a}var b=\"0001\";var k=\"00\"+c;var g=\"\";var l=d-b.length-k.length;for(var f=0;f=0;--u){v=v.twice2D();v.z=f.ONE;if(t.testBit(u)){if(s.testBit(u)){v=v.add2D(y)}else{v=v.add2D(x)}}else{if(s.testBit(u)){v=v.add2D(w)}}}return v}this.getBigRandom=function(r){return new f(r.bitLength(),a).mod(r.subtract(f.ONE)).add(f.ONE)};this.setNamedCurve=function(r){this.ecparams=c.getByName(r);this.prvKeyHex=null;this.pubKeyHex=null;this.curveName=r};this.setPrivateKeyHex=function(r){this.isPrivate=true;this.prvKeyHex=r};this.setPublicKeyHex=function(r){this.isPublic=true;this.pubKeyHex=r};this.getPublicKeyXYHex=function(){var t=this.pubKeyHex;if(t.substr(0,2)!==\"04\"){throw\"this method supports uncompressed format(04) only\"}var s=this.ecparams.keycharlen;if(t.length!==2+s*2){throw\"malformed public key hex length\"}var r={};r.x=t.substr(2,s);r.y=t.substr(2+s);return r};this.getShortNISTPCurveName=function(){var r=this.curveName;if(r===\"secp256r1\"||r===\"NIST P-256\"||r===\"P-256\"||r===\"prime256v1\"){return\"P-256\"}if(r===\"secp384r1\"||r===\"NIST P-384\"||r===\"P-384\"){return\"P-384\"}if(r===\"secp521r1\"||r===\"NIST P-521\"||r===\"P-521\"){return\"P-521\"}return null};this.generateKeyPairHex=function(){var s=this.ecparams.n;var u=this.getBigRandom(s);var r=this.ecparams.keycharlen;var t=(\"0000000000\"+u.toString(16)).slice(-r);this.setPrivateKeyHex(t);var v=this.generatePublicKeyHex();return{ecprvhex:t,ecpubhex:v}};this.generatePublicKeyHex=function(){var u=new f(this.prvKeyHex,16);var w=this.ecparams.G.multiply(u);var t=w.getX().toBigInteger();var s=w.getY().toBigInteger();var r=this.ecparams.keycharlen;var y=(\"0000000000\"+t.toString(16)).slice(-r);var v=(\"0000000000\"+s.toString(16)).slice(-r);var x=\"04\"+y+v;this.setPublicKeyHex(x);return x};this.signWithMessageHash=function(r){return this.signHex(r,this.prvKeyHex)};this.signHex=function(x,u){var A=new f(u,16);var v=this.ecparams.n;var z=new f(x.substring(0,this.ecparams.keycharlen),16);do{var w=this.getBigRandom(v);var B=this.ecparams.G;var y=B.multiply(w);var t=y.getX().toBigInteger().mod(v)}while(t.compareTo(f.ZERO)<=0);var C=w.modInverse(v).multiply(z.add(A.multiply(t))).mod(v);return m.biRSSigToASN1Sig(t,C)};this.sign=function(w,B){var z=B;var u=this.ecparams.n;var y=f.fromByteArrayUnsigned(w);do{var v=this.getBigRandom(u);var A=this.ecparams.G;var x=A.multiply(v);var t=x.getX().toBigInteger().mod(u)}while(t.compareTo(BigInteger.ZERO)<=0);var C=v.modInverse(u).multiply(y.add(z.multiply(t))).mod(u);return this.serializeSig(t,C)};this.verifyWithMessageHash=function(s,r){return this.verifyHex(s,r,this.pubKeyHex)};this.verifyHex=function(v,y,u){try{var t,B;var w=m.parseSigHex(y);t=w.r;B=w.s;var x=h.decodeFromHex(this.ecparams.curve,u);var z=new f(v.substring(0,this.ecparams.keycharlen),16);return this.verifyRaw(z,t,B,x)}catch(A){return false}};this.verify=function(z,A,u){var w,t;if(Bitcoin.Util.isArray(A)){var y=this.parseSig(A);w=y.r;t=y.s}else{if(\"object\"===typeof A&&A.r&&A.s){w=A.r;t=A.s}else{throw\"Invalid value for signature\"}}var v;if(u instanceof ECPointFp){v=u}else{if(Bitcoin.Util.isArray(u)){v=h.decodeFrom(this.ecparams.curve,u)}else{throw\"Invalid format for pubkey value, must be byte array or ECPointFp\"}}var x=f.fromByteArrayUnsigned(z);return this.verifyRaw(x,w,t,v)};this.verifyRaw=function(z,t,E,y){var x=this.ecparams.n;var D=this.ecparams.G;if(t.compareTo(f.ONE)<0||t.compareTo(x)>=0){return false}if(E.compareTo(f.ONE)<0||E.compareTo(x)>=0){return false}var A=E.modInverse(x);var w=z.multiply(A).mod(x);var u=t.multiply(A).mod(x);var B=D.multiply(w).add(y.multiply(u));var C=B.getX().toBigInteger().mod(x);return C.equals(t)};this.serializeSig=function(v,u){var w=v.toByteArraySigned();var t=u.toByteArraySigned();var x=[];x.push(2);x.push(w.length);x=x.concat(w);x.push(2);x.push(t.length);x=x.concat(t);x.unshift(x.length);x.unshift(48);return x};this.parseSig=function(y){var x;if(y[0]!=48){throw new Error(\"Signature not a valid DERSequence\")}x=2;if(y[x]!=2){throw new Error(\"First element in signature must be a DERInteger\")}var w=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];if(y[x]!=2){throw new Error(\"Second element in signature must be a DERInteger\")}var t=y.slice(x+2,x+2+y[x+1]);x+=2+y[x+1];var v=f.fromByteArrayUnsigned(w);var u=f.fromByteArrayUnsigned(t);return{r:v,s:u}};this.parseSigCompact=function(w){if(w.length!==65){throw\"Signature has the wrong length\"}var t=w[0]-27;if(t<0||t>7){throw\"Invalid signature type\"}var x=this.ecparams.n;var v=f.fromByteArrayUnsigned(w.slice(1,33)).mod(x);var u=f.fromByteArrayUnsigned(w.slice(33,65)).mod(x);return{r:v,s:u,i:t}};this.readPKCS5PrvKeyHex=function(u){if(k(u)===false){throw new Error(\"not ASN.1 hex string\")}var r,t,v;try{r=n(u,0,[\"[0]\",0],\"06\");t=n(u,0,[1],\"04\");try{v=n(u,0,[\"[1]\",0],\"03\")}catch(s){}}catch(s){throw new Error(\"malformed PKCS#1/5 plain ECC private key\")}this.curveName=d(r);if(this.curveName===undefined){throw\"unsupported curve name\"}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v);this.setPrivateKeyHex(t);this.isPublic=false};this.readPKCS8PrvKeyHex=function(v){if(k(v)===false){throw new j(\"not ASN.1 hex string\")}var t,r,u,w;try{t=n(v,0,[1,0],\"06\");r=n(v,0,[1,1],\"06\");u=n(v,0,[2,0,1],\"04\");try{w=n(v,0,[2,0,\"[1]\",0],\"03\")}catch(s){}}catch(s){throw new j(\"malformed PKCS#8 plain ECC private key\")}this.curveName=d(r);if(this.curveName===undefined){throw new j(\"unsupported curve name\")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(w);this.setPrivateKeyHex(u);this.isPublic=false};this.readPKCS8PubKeyHex=function(u){if(k(u)===false){throw new j(\"not ASN.1 hex string\")}var t,r,v;try{t=n(u,0,[0,0],\"06\");r=n(u,0,[0,1],\"06\");v=n(u,0,[1],\"03\")}catch(s){throw new j(\"malformed PKCS#8 ECC public key\")}this.curveName=d(r);if(this.curveName===null){throw new j(\"unsupported curve name\")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(v)};this.readCertPubKeyHex=function(t,v){if(k(t)===false){throw new j(\"not ASN.1 hex string\")}var r,u;try{r=n(t,0,[0,5,0,1],\"06\");u=n(t,0,[0,5,1],\"03\")}catch(s){throw new j(\"malformed X.509 certificate ECC public key\")}this.curveName=d(r);if(this.curveName===null){throw new j(\"unsupported curve name\")}this.setNamedCurve(this.curveName);this.setPublicKeyHex(u)};if(e!==undefined){if(e.curve!==undefined){this.curveName=e.curve}}if(this.curveName===undefined){this.curveName=g}this.setNamedCurve(this.curveName);if(e!==undefined){if(e.prv!==undefined){this.setPrivateKeyHex(e.prv)}if(e.pub!==undefined){this.setPublicKeyHex(e.pub)}}};KJUR.crypto.ECDSA.parseSigHex=function(a){var b=KJUR.crypto.ECDSA.parseSigHexInHexRS(a);var d=new BigInteger(b.r,16);var c=new BigInteger(b.s,16);return{r:d,s:c}};KJUR.crypto.ECDSA.parseSigHexInHexRS=function(f){var j=ASN1HEX,i=j.getChildIdx,g=j.getV;j.checkStrictDER(f,0);if(f.substr(0,2)!=\"30\"){throw new Error(\"signature is not a ASN.1 sequence\")}var h=i(f,0);if(h.length!=2){throw new Error(\"signature shall have two elements\")}var e=h[0];var d=h[1];if(f.substr(e,2)!=\"02\"){throw new Error(\"1st item not ASN.1 integer\")}if(f.substr(d,2)!=\"02\"){throw new Error(\"2nd item not ASN.1 integer\")}var c=g(f,e);var b=g(f,d);return{r:c,s:b}};KJUR.crypto.ECDSA.asn1SigToConcatSig=function(d){var e=KJUR.crypto.ECDSA.parseSigHexInHexRS(d);var b=e.r;var a=e.s;if(b.length>=130&&b.length<=134){if(b.length%2!=0){throw Error(\"unknown ECDSA sig r length error\")}if(a.length%2!=0){throw Error(\"unknown ECDSA sig s length error\")}if(b.substr(0,2)==\"00\"){b=b.substr(2)}if(a.substr(0,2)==\"00\"){a=a.substr(2)}var c=Math.max(b.length,a.length);b=(\"000000\"+b).slice(-c);a=(\"000000\"+a).slice(-c);return b+a}if(b.substr(0,2)==\"00\"&&(b.length%32)==2){b=b.substr(2)}if(a.substr(0,2)==\"00\"&&(a.length%32)==2){a=a.substr(2)}if((b.length%32)==30){b=\"00\"+b}if((a.length%32)==30){a=\"00\"+a}if(b.length%32!=0){throw Error(\"unknown ECDSA sig r length error\")}if(a.length%32!=0){throw Error(\"unknown ECDSA sig s length error\")}return b+a};KJUR.crypto.ECDSA.concatSigToASN1Sig=function(a){if(a.length%4!=0){throw Error(\"unknown ECDSA concatinated r-s sig length error\")}var c=a.substr(0,a.length/2);var b=a.substr(a.length/2);return KJUR.crypto.ECDSA.hexRSSigToASN1Sig(c,b)};KJUR.crypto.ECDSA.hexRSSigToASN1Sig=function(b,a){var d=new BigInteger(b,16);var c=new BigInteger(a,16);return KJUR.crypto.ECDSA.biRSSigToASN1Sig(d,c)};KJUR.crypto.ECDSA.biRSSigToASN1Sig=function(f,d){var c=KJUR.asn1;var b=new c.DERInteger({bigint:f});var a=new c.DERInteger({bigint:d});var e=new c.DERSequence({array:[b,a]});return e.tohex()};KJUR.crypto.ECDSA.getName=function(a){if(a===\"2b8104001f\"){return\"secp192k1\"}if(a===\"2a8648ce3d030107\"){return\"secp256r1\"}if(a===\"2b8104000a\"){return\"secp256k1\"}if(a===\"2b81040021\"){return\"secp224r1\"}if(a===\"2b81040022\"){return\"secp384r1\"}if(a===\"2b81040023\"){return\"secp521r1\"}if(\"|secp256r1|NIST P-256|P-256|prime256v1|\".indexOf(a)!==-1){return\"secp256r1\"}if(\"|secp256k1|\".indexOf(a)!==-1){return\"secp256k1\"}if(\"|secp224r1|NIST P-224|P-224|\".indexOf(a)!==-1){return\"secp224r1\"}if(\"|secp384r1|NIST P-384|P-384|\".indexOf(a)!==-1){return\"secp384r1\"}if(\"|secp521r1|NIST P-521|P-521|\".indexOf(a)!==-1){return\"secp521r1\"}return null};\nif(typeof KJUR==\"undefined\"||!KJUR){KJUR={}}if(typeof KJUR.crypto==\"undefined\"||!KJUR.crypto){KJUR.crypto={}}KJUR.crypto.ECParameterDB=new function(){var b={};var c={};function a(d){return new BigInteger(d,16)}this.getByName=function(e){var d=e;if(typeof c[d]!=\"undefined\"){d=c[e]}if(typeof b[d]!=\"undefined\"){return b[d]}throw\"unregistered EC curve name: \"+d};this.regist=function(A,l,o,g,m,e,j,f,k,u,d,x){b[A]={};var s=a(o);var z=a(g);var y=a(m);var t=a(e);var w=a(j);var r=new ECCurveFp(s,z,y);var q=r.decodePointHex(\"04\"+f+k);b[A][\"name\"]=A;b[A][\"keylen\"]=l;b[A][\"keycharlen\"]=Math.ceil(l/8)*2;b[A][\"curve\"]=r;b[A][\"G\"]=q;b[A][\"n\"]=t;b[A][\"h\"]=w;b[A][\"oid\"]=d;b[A][\"info\"]=x;for(var v=0;v1){l=new BigInteger(n,16)}else{l=null}m=new BigInteger(o,16);this.setPrivate(h,f,j,l,m)};this.setPublic=function(i,h,f,j){this.isPublic=true;this.p=i;this.q=h;this.g=f;this.y=j;this.x=null};this.setPublicHex=function(k,j,i,l){var g,f,m,h;g=new BigInteger(k,16);f=new BigInteger(j,16);m=new BigInteger(i,16);h=new BigInteger(l,16);this.setPublic(g,f,m,h)};this.signWithMessageHash=function(j){var i=this.p;var h=this.q;var m=this.g;var o=this.y;var t=this.x;var l=KJUR.crypto.Util.getRandomBigIntegerMinToMax(BigInteger.ONE.add(BigInteger.ONE),h.subtract(BigInteger.ONE));var u=j.substr(0,h.bitLength()/4);var n=new BigInteger(u,16);var f=(m.modPow(l,i)).mod(h);var w=(l.modInverse(h).multiply(n.add(t.multiply(f)))).mod(h);var v=KJUR.asn1.ASN1Util.jsonToASN1HEX({seq:[{\"int\":{bigint:f}},{\"int\":{bigint:w}}]});return v};this.verifyWithMessageHash=function(m,l){var j=this.p;var h=this.q;var o=this.g;var u=this.y;var n=this.parseASN1Signature(l);var f=n[0];var C=n[1];var B=m.substr(0,h.bitLength()/4);var t=new BigInteger(B,16);if(BigInteger.ZERO.compareTo(f)>0||f.compareTo(h)>0){throw\"invalid DSA signature\"}if(BigInteger.ZERO.compareTo(C)>=0||C.compareTo(h)>0){throw\"invalid DSA signature\"}var x=C.modInverse(h);var k=t.multiply(x).mod(h);var i=f.multiply(x).mod(h);var A=o.modPow(k,j).multiply(u.modPow(i,j)).mod(j).mod(h);return A.compareTo(f)==0};this.parseASN1Signature=function(f){try{var i=new c(d(f,0,[0],\"02\"),16);var h=new c(d(f,0,[1],\"02\"),16);return[i,h]}catch(g){throw new Error(\"malformed ASN.1 DSA signature\")}};this.readPKCS5PrvKeyHex=function(j){var k,i,g,l,m;if(a(j)===false){throw new Error(\"not ASN.1 hex string\")}try{k=d(j,0,[1],\"02\");i=d(j,0,[2],\"02\");g=d(j,0,[3],\"02\");l=d(j,0,[4],\"02\");m=d(j,0,[5],\"02\")}catch(f){throw new Error(\"malformed PKCS#1/5 plain DSA private key\")}this.setPrivateHex(k,i,g,l,m)};this.readPKCS8PrvKeyHex=function(j){var k,i,g,l;if(a(j)===false){throw new Error(\"not ASN.1 hex string\")}try{k=d(j,0,[1,1,0],\"02\");i=d(j,0,[1,1,1],\"02\");g=d(j,0,[1,1,2],\"02\");l=d(j,0,[2,0],\"02\")}catch(f){throw new Error(\"malformed PKCS#8 plain DSA private key\")}this.setPrivateHex(k,i,g,null,l)};this.readPKCS8PubKeyHex=function(j){var k,i,g,l;if(a(j)===false){throw new Error(\"not ASN.1 hex string\")}try{k=d(j,0,[0,1,0],\"02\");i=d(j,0,[0,1,1],\"02\");g=d(j,0,[0,1,2],\"02\");l=d(j,0,[1,0],\"02\")}catch(f){throw new Error(\"malformed PKCS#8 DSA public key\")}this.setPublicHex(k,i,g,l)};this.readCertPubKeyHex=function(j,m){var k,i,g,l;if(a(j)===false){throw new Error(\"not ASN.1 hex string\")}try{k=d(j,0,[0,5,0,1,0],\"02\");i=d(j,0,[0,5,0,1,1],\"02\");g=d(j,0,[0,5,0,1,2],\"02\");l=d(j,0,[0,5,1,0],\"02\")}catch(f){throw new Error(\"malformed X.509 certificate DSA public key\")}this.setPublicHex(k,i,g,l)}};\nvar KEYUTIL=function(){var d=function(p,r,q){return k(CryptoJS.AES,p,r,q)};var e=function(p,r,q){return k(CryptoJS.TripleDES,p,r,q)};var a=function(p,r,q){return k(CryptoJS.DES,p,r,q)};var k=function(s,x,u,q){var r=CryptoJS.enc.Hex.parse(x);var w=CryptoJS.enc.Hex.parse(u);var p=CryptoJS.enc.Hex.parse(q);var t={};t.key=w;t.iv=p;t.ciphertext=r;var v=s.decrypt(t,w,{iv:p});return CryptoJS.enc.Hex.stringify(v)};var l=function(p,r,q){return g(CryptoJS.AES,p,r,q)};var o=function(p,r,q){return g(CryptoJS.TripleDES,p,r,q)};var f=function(p,r,q){return g(CryptoJS.DES,p,r,q)};var g=function(t,y,v,q){var s=CryptoJS.enc.Hex.parse(y);var x=CryptoJS.enc.Hex.parse(v);var p=CryptoJS.enc.Hex.parse(q);var w=t.encrypt(s,x,{iv:p});var r=CryptoJS.enc.Hex.parse(w.toString());var u=CryptoJS.enc.Base64.stringify(r);return u};var i={\"AES-256-CBC\":{proc:d,eproc:l,keylen:32,ivlen:16},\"AES-192-CBC\":{proc:d,eproc:l,keylen:24,ivlen:16},\"AES-128-CBC\":{proc:d,eproc:l,keylen:16,ivlen:16},\"DES-EDE3-CBC\":{proc:e,eproc:o,keylen:24,ivlen:8},\"DES-CBC\":{proc:a,eproc:f,keylen:8,ivlen:8}};var c=function(p){return i[p][\"proc\"]};var m=function(p){var r=CryptoJS.lib.WordArray.random(p);var q=CryptoJS.enc.Hex.stringify(r);return q};var n=function(v){var w={};var q=v.match(new RegExp(\"DEK-Info: ([^,]+),([0-9A-Fa-f]+)\",\"m\"));if(q){w.cipher=q[1];w.ivsalt=q[2]}var p=v.match(new RegExp(\"-----BEGIN ([A-Z]+) PRIVATE KEY-----\"));if(p){w.type=p[1]}var u=-1;var x=0;if(v.indexOf(\"\\r\\n\\r\\n\")!=-1){u=v.indexOf(\"\\r\\n\\r\\n\");x=2}if(v.indexOf(\"\\n\\n\")!=-1){u=v.indexOf(\"\\n\\n\");x=1}var t=v.indexOf(\"-----END\");if(u!=-1&&t!=-1){var r=v.substring(u+x*2,t-x);r=r.replace(/\\s+/g,\"\");w.data=r}return w};var j=function(q,y,p){var v=p.substring(0,16);var t=CryptoJS.enc.Hex.parse(v);var r=CryptoJS.enc.Utf8.parse(y);var u=i[q][\"keylen\"]+i[q][\"ivlen\"];var x=\"\";var w=null;for(;;){var s=CryptoJS.algo.MD5.create();if(w!=null){s.update(w)}s.update(r);s.update(t);w=s.finalize();x=x+CryptoJS.enc.Hex.stringify(w);if(x.length>=u*2){break}}var z={};z.keyhex=x.substr(0,i[q][\"keylen\"]*2);z.ivhex=x.substr(i[q][\"keylen\"]*2,i[q][\"ivlen\"]*2);return z};var b=function(p,v,r,w){var s=CryptoJS.enc.Base64.parse(p);var q=CryptoJS.enc.Hex.stringify(s);var u=i[v][\"proc\"];var t=u(q,r,w);return t};var h=function(p,s,q,u){var r=i[s][\"eproc\"];var t=r(p,q,u);return t};return{version:\"1.0.0\",parsePKCS5PEM:function(p){return n(p)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(q,p,r){return j(q,p,r)},decryptKeyB64:function(p,r,q,s){return b(p,r,q,s)},getDecryptedKeyHex:function(y,x){var q=n(y);var t=q.type;var r=q.cipher;var p=q.ivsalt;var s=q.data;var w=j(r,x,p);var v=w.keyhex;var u=b(s,r,v,p);return u},getEncryptedPKCS5PEMFromPrvKeyHex:function(x,s,A,t,r){var p=\"\";if(typeof t==\"undefined\"||t==null){t=\"AES-256-CBC\"}if(typeof i[t]==\"undefined\"){throw new Error(\"KEYUTIL unsupported algorithm: \"+t)}if(typeof r==\"undefined\"||r==null){var v=i[t][\"ivlen\"];var u=m(v);r=u.toUpperCase()}var z=j(t,A,r);var y=z.keyhex;var w=h(s,t,y,r);var q=w.replace(/(.{64})/g,\"$1\\r\\n\");var p=\"-----BEGIN \"+x+\" PRIVATE KEY-----\\r\\n\";p+=\"Proc-Type: 4,ENCRYPTED\\r\\n\";p+=\"DEK-Info: \"+t+\",\"+r+\"\\r\\n\";p+=\"\\r\\n\";p+=q;p+=\"\\r\\n-----END \"+x+\" PRIVATE KEY-----\\r\\n\";return p},getEncryptedPKCS8PEM:function(r,p,s){var q=this.getEncryptedPKCS8Hex(r,p,s);return hextopem(q,\"ENCRYPTED PRIVATE KEY\")},getEncryptedPKCS8Hex:function(r,p,t){var q;if(t==undefined||t==null){q={}}else{q=JSON.parse(JSON.stringify(t))}q.plain=r;this.initPBES2Param(q);this.encryptPBES2Param(q,p);var s=this.generatePBES2ASN1Param(q);return KJUR.asn1.ASN1Util.newObject(s).tohex()},initPBES2Param:function(p){if(aryval(p,\"encalg\")==undefined){p.encalg=\"aes256-CBC\"}if(aryval(p,\"iter\")==undefined){p.iter=2048}if(aryval(p,\"prf\")==undefined){p.prf=\"hmacWithSHA256\"}if(aryval(p,\"salt\")==undefined){p.salt=CryptoJS.enc.Hex.stringify(CryptoJS.lib.WordArray.random(8))}if(aryval(p,\"enciv\")==undefined){var q;if(p.encalg==\"des-EDE3-CBC\"){q=8}if(p.encalg==\"aes128-CBC\"){q=16}if(p.encalg==\"aes256-CBC\"){q=16}p.enciv=CryptoJS.enc.Hex.stringify(CryptoJS.lib.WordArray.random(q))}},encryptPBES2Param:function(p,q){var t=KEYUTIL.getDKFromPBES2Param(p,q);try{var s=KJUR.crypto.Cipher.encrypt(p.plain,t,p.encalg,{iv:p.enciv})}catch(r){throw new Error(\"encrypt error: \"+p.plain+\" \"+t+\" \"+p.encalg+\" \"+p.enciv)}p.enc=s},generatePBES2ASN1Param:function(p){var q={seq:[{seq:[{oid:\"pkcs5PBES2\"},{seq:[{seq:[{oid:\"pkcs5PBKDF2\"},{seq:[{octstr:{hex:p.salt}},{\"int\":{hex:inttohex(p.iter)}}]}]},{seq:[{oid:p.encalg},{octstr:{hex:p.enciv}}]}]}]},{octstr:{hex:p.enc}}]};if(p.prf!=\"hmacWithSHA1\"){q.seq[0].seq[1].seq[0].seq[1].seq.push({seq:[{oid:p.prf},{\"null\":\"\"}]})}return q},parseHexOfEncryptedPKCS8:function(y){var B=ASN1HEX;var z=B.getChildIdx;var w=B.getV;var t={};var r=z(y,0);if(r.length!=2){throw new Error(\"malformed format: SEQUENCE(0).items != 2: \"+r.length)}t.ciphertext=w(y,r[1]);var A=z(y,r[0]);if(A.length!=2){throw new Error(\"malformed format: SEQUENCE(0.0).items != 2: \"+A.length)}if(w(y,A[0])!=\"2a864886f70d01050d\"){throw new Error(\"this only supports pkcs5PBES2\")}var p=z(y,A[1]);if(A.length!=2){throw new Error(\"malformed format: SEQUENCE(0.0.1).items != 2: \"+p.length)}var q=z(y,p[1]);if(q.length!=2){throw new Error(\"malformed format: SEQUENCE(0.0.1.1).items != 2: \"+q.length)}if(w(y,q[0])!=\"2a864886f70d0307\"){throw\"this only supports TripleDES\"}t.encryptionSchemeAlg=\"TripleDES\";t.encryptionSchemeIV=w(y,q[1]);var s=z(y,p[0]);if(s.length!=2){throw new Error(\"malformed format: SEQUENCE(0.0.1.0).items != 2: \"+s.length)}if(w(y,s[0])!=\"2a864886f70d01050c\"){throw new Error(\"this only supports pkcs5PBKDF2\")}var x=z(y,s[1]);if(x.length<2){throw new Error(\"malformed format: SEQUENCE(0.0.1.0.1).items < 2: \"+x.length)}t.pbkdf2Salt=w(y,x[0]);var u=w(y,x[1]);try{t.pbkdf2Iter=parseInt(u,16)}catch(v){throw new Error(\"malformed format pbkdf2Iter: \"+u)}return t},getPBKDF2KeyHexFromParam:function(u,p){var t=CryptoJS.enc.Hex.parse(u.pbkdf2Salt);var q=u.pbkdf2Iter;var s=CryptoJS.PBKDF2(p,t,{keySize:192/32,iterations:q});var r=CryptoJS.enc.Hex.stringify(s);return r},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function(x,y){var r=pemtohex(x,\"ENCRYPTED PRIVATE KEY\");var p=this.parseHexOfEncryptedPKCS8(r);var u=KEYUTIL.getPBKDF2KeyHexFromParam(p,y);var v={};v.ciphertext=CryptoJS.enc.Hex.parse(p.ciphertext);var t=CryptoJS.enc.Hex.parse(u);var s=CryptoJS.enc.Hex.parse(p.encryptionSchemeIV);var w=CryptoJS.TripleDES.decrypt(v,t,{iv:s});var q=CryptoJS.enc.Hex.stringify(w);return q},parsePBES2:function(z){var v=ASN1HEX.parse(z);if(aryval(v,\"seq.0.seq.0.oid\")!=\"pkcs5PBES2\"||aryval(v,\"seq.0.seq.1.seq.0.seq.0.oid\")!=\"pkcs5PBKDF2\"){throw new Error(\"not pkcs5PBES2 and pkcs5PBKDF2 used\")}var y=aryval(v,\"seq.0.seq.1.seq.0.seq.1.seq\");if(y==undefined){throw new Error(\"PBKDF2 parameter not found\")}var t=aryval(y,\"0.octstr.hex\");var p=aryval(y,\"1.int.hex\");var q=aryval(y,\"2.seq.0.oid\",\"hmacWithSHA1\");var x=-1;try{x=parseInt(p,16)}catch(w){throw new Error(\"iter not proper value\")}var u=aryval(v,\"seq.0.seq.1.seq.1.seq.0.oid\");var s=aryval(v,\"seq.0.seq.1.seq.1.seq.1.octstr.hex\");var r=aryval(v,\"seq.1.octstr.hex\");if(u==undefined||s==undefined||r==undefined){throw new Error(\"encalg, enciv or enc is undefined\")}var A={salt:t,iter:x,prf:q,encalg:u,enciv:s,enc:r};return A},getDKFromPBES2Param:function(p,w){var x={hmacWithSHA1:CryptoJS.algo.SHA1,hmacWithSHA224:CryptoJS.algo.SHA224,hmacWithSHA256:CryptoJS.algo.SHA256,hmacWithSHA384:CryptoJS.algo.SHA384,hmacWithSHA512:CryptoJS.algo.SHA512};var q={\"des-EDE3-CBC\":192/32,\"aes128-CBC\":128/32,\"aes256-CBC\":256/32,};var y=x[p.prf];if(y==undefined){throw new Error(\"unsupported prf\")}var r=q[p.encalg];if(r==undefined){throw new Error(\"unsupported encalg\")}var s=CryptoJS.enc.Hex.parse(p.salt);var u=p.iter;try{var v=CryptoJS.PBKDF2(w,s,{keySize:r,iterations:u,hasher:y});return CryptoJS.enc.Hex.stringify(v)}catch(t){throw new Error(\"PBKDF2 error: \"+t+\" \"+JSON.stringify(p)+\" \"+w)}},getPlainHexFromEncryptedPKCS8PEM:function(t,q){if(t.indexOf(\"BEGIN ENCRYPTED PRIVATE KEY\")==-1){throw new Error(\"not Encrypted PKCS#8 PEM string\")}var u=pemtohex(t);var p;try{p=KEYUTIL.parsePBES2(u)}catch(r){throw new Error(\"malformed PBES2 format: \"+r.message)}var s=KEYUTIL.getDKFromPBES2Param(p,q);return KJUR.crypto.Cipher.decrypt(p.enc,s,p.encalg,{iv:p.enciv})},getKeyFromEncryptedPKCS8PEM:function(s,q){var p=this.getPlainHexFromEncryptedPKCS8PEM(s,q);var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},parsePlainPrivatePKCS8Hex:function(s){var v=ASN1HEX;var u=v.getChildIdx;var t=v.getV;var q={};q.algparam=null;if(s.substr(0,2)!=\"30\"){throw new Error(\"malformed plain PKCS8 private key(code:001)\")}var r=u(s,0);if(r.length<3){throw new Error(\"malformed plain PKCS8 private key(code:002)\")}if(s.substr(r[1],2)!=\"30\"){throw new Error(\"malformed PKCS8 private key(code:003)\")}var p=u(s,r[1]);if(p.length!=2){throw new Error(\"malformed PKCS8 private key(code:004)\")}if(s.substr(p[0],2)!=\"06\"){throw new Error(\"malformed PKCS8 private key(code:005)\")}q.algoid=t(s,p[0]);if(s.substr(p[1],2)==\"06\"){q.algparam=t(s,p[1])}if(s.substr(r[2],2)!=\"04\"){throw new Error(\"malformed PKCS8 private key(code:006)\")}q.keyidx=v.getVidx(s,r[2]);return q},getKeyFromPlainPrivatePKCS8PEM:function(q){var p=pemtohex(q,\"PRIVATE KEY\");var r=this.getKeyFromPlainPrivatePKCS8Hex(p);return r},getKeyFromPlainPrivatePKCS8Hex:function(p){var q=this.parsePlainPrivatePKCS8Hex(p);var r;if(q.algoid==\"2a864886f70d010101\"){r=new RSAKey()}else{if(q.algoid==\"2a8648ce380401\"){r=new KJUR.crypto.DSA()}else{if(q.algoid==\"2a8648ce3d0201\"){r=new KJUR.crypto.ECDSA()}else{throw new Error(\"unsupported private key algorithm\")}}}r.readPKCS8PrvKeyHex(p);return r},_getKeyFromPublicPKCS8Hex:function(q){var p;var r=ASN1HEX.getVbyList(q,0,[0,0],\"06\");if(r===\"2a864886f70d010101\"){p=new RSAKey()}else{if(r===\"2a8648ce380401\"){p=new KJUR.crypto.DSA()}else{if(r===\"2a8648ce3d0201\"){p=new KJUR.crypto.ECDSA()}else{throw new Error(\"unsupported PKCS#8 public key hex\")}}}p.readPKCS8PubKeyHex(q);return p},parsePublicRawRSAKeyHex:function(r){var u=ASN1HEX;var t=u.getChildIdx;var s=u.getV;var p={};if(r.substr(0,2)!=\"30\"){throw new Error(\"malformed RSA key(code:001)\")}var q=t(r,0);if(q.length!=2){throw new Error(\"malformed RSA key(code:002)\")}if(r.substr(q[0],2)!=\"02\"){throw new Error(\"malformed RSA key(code:003)\")}p.n=s(r,q[0]);if(r.substr(q[1],2)!=\"02\"){throw new Error(\"malformed RSA key(code:004)\")}p.e=s(r,q[1]);return p},parsePublicPKCS8Hex:function(t){var v=ASN1HEX;var u=v.getChildIdx;var s=v.getV;var q={};q.algparam=null;var r=u(t,0);if(r.length!=2){throw new Error(\"outer DERSequence shall have 2 elements: \"+r.length)}var w=r[0];if(t.substr(w,2)!=\"30\"){throw new Error(\"malformed PKCS8 public key(code:001)\")}var p=u(t,w);if(p.length!=2){throw new Error(\"malformed PKCS8 public key(code:002)\")}if(t.substr(p[0],2)!=\"06\"){throw new Error(\"malformed PKCS8 public key(code:003)\")}q.algoid=s(t,p[0]);if(t.substr(p[1],2)==\"06\"){q.algparam=s(t,p[1])}else{if(t.substr(p[1],2)==\"30\"){q.algparam={};q.algparam.p=v.getVbyList(t,p[1],[0],\"02\");q.algparam.q=v.getVbyList(t,p[1],[1],\"02\");q.algparam.g=v.getVbyList(t,p[1],[2],\"02\")}}if(t.substr(r[1],2)!=\"03\"){throw new Error(\"malformed PKCS8 public key(code:004)\")}q.key=s(t,r[1]).substr(2);return q},}}();KEYUTIL.getKey=function(l,k,n){var G=ASN1HEX,L=G.getChildIdx,v=G.getV,d=G.getVbyList,c=KJUR.crypto,i=c.ECDSA,C=c.DSA,w=RSAKey,M=pemtohex,F=KEYUTIL;if(typeof w!=\"undefined\"&&l instanceof w){return l}if(typeof i!=\"undefined\"&&l instanceof i){return l}if(typeof C!=\"undefined\"&&l instanceof C){return l}if(l.curve!==undefined&&l.xy!==undefined&&l.d===undefined){return new i({pub:l.xy,curve:l.curve})}if(l.curve!==undefined&&l.d!==undefined){return new i({prv:l.d,curve:l.curve})}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d===undefined){var P=new w();P.setPublic(l.n,l.e);return P}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p!==undefined&&l.q!==undefined&&l.dp!==undefined&&l.dq!==undefined&&l.co!==undefined&&l.qi===undefined){var P=new w();P.setPrivateEx(l.n,l.e,l.d,l.p,l.q,l.dp,l.dq,l.co);return P}if(l.kty===undefined&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p===undefined){var P=new w();P.setPrivate(l.n,l.e,l.d);return P}if(l.p!==undefined&&l.q!==undefined&&l.g!==undefined&&l.y!==undefined&&l.x===undefined){var P=new C();P.setPublic(l.p,l.q,l.g,l.y);return P}if(l.p!==undefined&&l.q!==undefined&&l.g!==undefined&&l.y!==undefined&&l.x!==undefined){var P=new C();P.setPrivate(l.p,l.q,l.g,l.y,l.x);return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d===undefined){var P=new w();P.setPublic(b64utohex(l.n),b64utohex(l.e));return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined&&l.p!==undefined&&l.q!==undefined&&l.dp!==undefined&&l.dq!==undefined&&l.qi!==undefined){var P=new w();P.setPrivateEx(b64utohex(l.n),b64utohex(l.e),b64utohex(l.d),b64utohex(l.p),b64utohex(l.q),b64utohex(l.dp),b64utohex(l.dq),b64utohex(l.qi));return P}if(l.kty===\"RSA\"&&l.n!==undefined&&l.e!==undefined&&l.d!==undefined){var P=new w();P.setPrivate(b64utohex(l.n),b64utohex(l.e),b64utohex(l.d));return P}if(l.kty===\"EC\"&&l.crv!==undefined&&l.x!==undefined&&l.y!==undefined&&l.d===undefined){var j=new i({curve:l.crv});var t=j.ecparams.keycharlen;var B=(\"0000000000\"+b64utohex(l.x)).slice(-t);var z=(\"0000000000\"+b64utohex(l.y)).slice(-t);var u=\"04\"+B+z;j.setPublicKeyHex(u);return j}if(l.kty===\"EC\"&&l.crv!==undefined&&l.x!==undefined&&l.y!==undefined&&l.d!==undefined){var j=new i({curve:l.crv});var t=j.ecparams.keycharlen;var B=(\"0000000000\"+b64utohex(l.x)).slice(-t);var z=(\"0000000000\"+b64utohex(l.y)).slice(-t);var u=\"04\"+B+z;var b=(\"0000000000\"+b64utohex(l.d)).slice(-t);j.setPublicKeyHex(u);j.setPrivateKeyHex(b);return j}if(n===\"pkcs5prv\"){var J=l,G=ASN1HEX,N,P;N=L(J,0);if(N.length===9){P=new w();P.readPKCS5PrvKeyHex(J)}else{if(N.length===6){P=new C();P.readPKCS5PrvKeyHex(J)}else{if(N.length>2&&J.substr(N[1],2)===\"04\"){P=new i();P.readPKCS5PrvKeyHex(J)}else{throw new Error(\"unsupported PKCS#1/5 hexadecimal key\")}}}return P}if(n===\"pkcs8prv\"){var P=F.getKeyFromPlainPrivatePKCS8Hex(l);return P}if(n===\"pkcs8pub\"){return F._getKeyFromPublicPKCS8Hex(l)}if(n===\"x509pub\"){return X509.getPublicKeyFromCertHex(l)}if(l.indexOf(\"-END CERTIFICATE-\",0)!=-1||l.indexOf(\"-END X509 CERTIFICATE-\",0)!=-1||l.indexOf(\"-END TRUSTED CERTIFICATE-\",0)!=-1){return X509.getPublicKeyFromCertPEM(l)}if(l.indexOf(\"-END PUBLIC KEY-\")!=-1){var O=pemtohex(l,\"PUBLIC KEY\");return F._getKeyFromPublicPKCS8Hex(O)}if(l.indexOf(\"-END RSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var m=M(l,\"RSA PRIVATE KEY\");return F.getKey(m,null,\"pkcs5prv\")}if(l.indexOf(\"-END DSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var I=M(l,\"DSA PRIVATE KEY\");var E=d(I,0,[1],\"02\");var D=d(I,0,[2],\"02\");var K=d(I,0,[3],\"02\");var r=d(I,0,[4],\"02\");var s=d(I,0,[5],\"02\");var P=new C();P.setPrivate(new BigInteger(E,16),new BigInteger(D,16),new BigInteger(K,16),new BigInteger(r,16),new BigInteger(s,16));return P}if(l.indexOf(\"-END EC PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")==-1){var m=M(l,\"EC PRIVATE KEY\");return F.getKey(m,null,\"pkcs5prv\")}if(l.indexOf(\"-END PRIVATE KEY-\")!=-1){return F.getKeyFromPlainPrivatePKCS8PEM(l)}if(l.indexOf(\"-END RSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var o=F.getDecryptedKeyHex(l,k);var H=new RSAKey();H.readPKCS5PrvKeyHex(o);return H}if(l.indexOf(\"-END EC PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var I=F.getDecryptedKeyHex(l,k);var P=d(I,0,[1],\"04\");var f=d(I,0,[2,0],\"06\");var A=d(I,0,[3,0],\"03\").substr(2);var e=\"\";if(KJUR.crypto.OID.oidhex2name[f]!==undefined){e=KJUR.crypto.OID.oidhex2name[f]}else{throw new Error(\"undefined OID(hex) in KJUR.crypto.OID: \"+f)}var j=new i({curve:e});j.setPublicKeyHex(A);j.setPrivateKeyHex(P);j.isPublic=false;return j}if(l.indexOf(\"-END DSA PRIVATE KEY-\")!=-1&&l.indexOf(\"4,ENCRYPTED\")!=-1){var I=F.getDecryptedKeyHex(l,k);var E=d(I,0,[1],\"02\");var D=d(I,0,[2],\"02\");var K=d(I,0,[3],\"02\");var r=d(I,0,[4],\"02\");var s=d(I,0,[5],\"02\");var P=new C();P.setPrivate(new BigInteger(E,16),new BigInteger(D,16),new BigInteger(K,16),new BigInteger(r,16),new BigInteger(s,16));return P}if(l.indexOf(\"-END ENCRYPTED PRIVATE KEY-\")!=-1){return F.getKeyFromEncryptedPKCS8PEM(l,k)}throw new Error(\"not supported argument\")};KEYUTIL.generateKeypair=function(a,c){if(a==\"RSA\"){var b=c;var h=new RSAKey();h.generate(b,\"10001\");h.isPrivate=true;h.isPublic=true;var f=new RSAKey();var e=h.n.toString(16);var i=h.e.toString(16);f.setPublic(e,i);f.isPrivate=false;f.isPublic=true;var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{if(a==\"EC\"){var d=c;var g=new KJUR.crypto.ECDSA({curve:d});var j=g.generateKeyPairHex();var h=new KJUR.crypto.ECDSA({curve:d});h.setPublicKeyHex(j.ecpubhex);h.setPrivateKeyHex(j.ecprvhex);h.isPrivate=true;h.isPublic=false;var f=new KJUR.crypto.ECDSA({curve:d});f.setPublicKeyHex(j.ecpubhex);f.isPrivate=false;f.isPublic=true;var k={};k.prvKeyObj=h;k.pubKeyObj=f;return k}else{throw new Error(\"unknown algorithm: \"+a)}}};KEYUTIL.getPEM=function(b,C,x,m,p,j){var E=KJUR,k=E.asn1,y=k.DERObjectIdentifier,e=k.DERInteger,l=k.ASN1Util.newObject,a=k.x509,B=a.SubjectPublicKeyInfo,d=E.crypto,t=d.DSA,q=d.ECDSA,n=RSAKey;function z(s){var G=l({seq:[{\"int\":0},{\"int\":{bigint:s.n}},{\"int\":s.e},{\"int\":{bigint:s.d}},{\"int\":{bigint:s.p}},{\"int\":{bigint:s.q}},{\"int\":{bigint:s.dmp1}},{\"int\":{bigint:s.dmq1}},{\"int\":{bigint:s.coeff}}]});return G}function A(G){var s=l({seq:[{\"int\":1},{octstr:{hex:G.prvKeyHex}},{tag:[\"a0\",true,{oid:{name:G.curveName}}]},{tag:[\"a1\",true,{bitstr:{hex:\"00\"+G.pubKeyHex}}]}]});return s}function w(s){var G=l({seq:[{\"int\":0},{\"int\":{bigint:s.p}},{\"int\":{bigint:s.q}},{\"int\":{bigint:s.g}},{\"int\":{bigint:s.y}},{\"int\":{bigint:s.x}}]});return G}if(((n!==undefined&&b instanceof n)||(t!==undefined&&b instanceof t)||(q!==undefined&&b instanceof q))&&b.isPublic==true&&(C===undefined||C==\"PKCS8PUB\")){var D=new B(b);var v=D.tohex();return hextopem(v,\"PUBLIC KEY\")}if(C==\"PKCS1PRV\"&&n!==undefined&&b instanceof n&&(x===undefined||x==null)&&b.isPrivate==true){var D=z(b);var v=D.tohex();return hextopem(v,\"RSA PRIVATE KEY\")}if(C==\"PKCS1PRV\"&&q!==undefined&&b instanceof q&&(x===undefined||x==null)&&b.isPrivate==true){var i=new y({name:b.curveName});var u=i.tohex();var h=A(b);var r=h.tohex();var o=\"\";o+=hextopem(u,\"EC PARAMETERS\");o+=hextopem(r,\"EC PRIVATE KEY\");return o}if(C==\"PKCS1PRV\"&&t!==undefined&&b instanceof t&&(x===undefined||x==null)&&b.isPrivate==true){var D=w(b);var v=D.tohex();return hextopem(v,\"DSA PRIVATE KEY\")}if(C==\"PKCS5PRV\"&&n!==undefined&&b instanceof n&&(x!==undefined&&x!=null)&&b.isPrivate==true){var D=z(b);var v=D.tohex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"RSA\",v,x,m,j)}if(C==\"PKCS5PRV\"&&q!==undefined&&b instanceof q&&(x!==undefined&&x!=null)&&b.isPrivate==true){var D=A(b);var v=D.tohex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"EC\",v,x,m,j)}if(C==\"PKCS5PRV\"&&t!==undefined&&b instanceof t&&(x!==undefined&&x!=null)&&b.isPrivate==true){var D=w(b);var v=D.tohex();if(m===undefined){m=\"DES-EDE3-CBC\"}return this.getEncryptedPKCS5PEMFromPrvKeyHex(\"DSA\",v,x,m,j)}var f=function(G,H){if(typeof H==\"string\"){return KEYUTIL.getEncryptedPKCS8PEM(G,H)}else{if(typeof H==\"object\"&&aryval(H,\"passcode\")!=undefined){var I=JSON.parse(JSON.stringify(H));var s=I.passcode;delete I.passcode;return KEYUTIL.getEncryptedPKCS8PEM(G,s,I)}}};if(C==\"PKCS8PRV\"&&n!=undefined&&b instanceof n&&b.isPrivate==true){var g=z(b);var c=g.tohex();var D=l({seq:[{\"int\":0},{seq:[{oid:{name:\"rsaEncryption\"}},{\"null\":true}]},{octstr:{hex:c}}]});var v=D.tohex();if(x===undefined||x==null){return hextopem(v,\"PRIVATE KEY\")}else{return f(v,x)}}if(C==\"PKCS8PRV\"&&q!==undefined&&b instanceof q&&b.isPrivate==true){var F={seq:[{\"int\":1},{octstr:{hex:b.prvKeyHex}}]};if(typeof b.pubKeyHex==\"string\"){F.seq.push({tag:[\"a1\",true,{bitstr:{hex:\"00\"+b.pubKeyHex}}]})}var g=new l(F);var c=g.tohex();var D=l({seq:[{\"int\":0},{seq:[{oid:{name:\"ecPublicKey\"}},{oid:{name:b.curveName}}]},{octstr:{hex:c}}]});var v=D.tohex();if(x===undefined||x==null){return hextopem(v,\"PRIVATE KEY\")}else{return f(v,x)}}if(C==\"PKCS8PRV\"&&t!==undefined&&b instanceof t&&b.isPrivate==true){var g=new e({bigint:b.x});var c=g.tohex();var D=l({seq:[{\"int\":0},{seq:[{oid:{name:\"dsa\"}},{seq:[{\"int\":{bigint:b.p}},{\"int\":{bigint:b.q}},{\"int\":{bigint:b.g}}]}]},{octstr:{hex:c}}]});var v=D.tohex();if(x===undefined||x==null){return hextopem(v,\"PRIVATE KEY\")}else{return f(v,x)}}throw new Error(\"unsupported object nor format\")};KEYUTIL.getKeyFromCSRPEM=function(b){var a=pemtohex(b,\"CERTIFICATE REQUEST\");var c=KEYUTIL.getKeyFromCSRHex(a);return c};KEYUTIL.getKeyFromCSRHex=function(a){var c=KEYUTIL.parseCSRHex(a);var b=KEYUTIL.getKey(c.p8pubkeyhex,null,\"pkcs8pub\");return b};KEYUTIL.parseCSRHex=function(d){var i=ASN1HEX;var f=i.getChildIdx;var c=i.getTLV;var b={};var g=d;if(g.substr(0,2)!=\"30\"){throw new Error(\"malformed CSR(code:001)\")}var e=f(g,0);if(e.length<1){throw new Error(\"malformed CSR(code:002)\")}if(g.substr(e[0],2)!=\"30\"){throw new Error(\"malformed CSR(code:003)\")}var a=f(g,e[0]);if(a.length<3){throw new Error(\"malformed CSR(code:004)\")}b.p8pubkeyhex=c(g,a[2]);return b};KEYUTIL.getKeyID=function(f){var c=KEYUTIL;var e=ASN1HEX;if(typeof f===\"string\"&&f.indexOf(\"BEGIN \")!=-1){f=c.getKey(f)}var d=pemtohex(c.getPEM(f));var b=e.getIdxbyList(d,0,[1]);var a=e.getV(d,b).substring(2);return KJUR.crypto.Util.hashHex(a,\"sha1\")};KEYUTIL.getJWK=function(d,h,g,b,f){var i;var k={};var e;var c=KJUR.crypto.Util.hashHex;if(typeof d==\"string\"){i=KEYUTIL.getKey(d);if(d.indexOf(\"CERTIFICATE\")!=-1){e=pemtohex(d)}}else{if(typeof d==\"object\"){if(d instanceof X509){i=d.getPublicKey();e=d.hex}else{i=d}}else{throw new Error(\"unsupported keyinfo type\")}}if(i instanceof RSAKey&&i.isPrivate){k.kty=\"RSA\";k.n=hextob64u(i.n.toString(16));k.e=hextob64u(i.e.toString(16));k.d=hextob64u(i.d.toString(16));k.p=hextob64u(i.p.toString(16));k.q=hextob64u(i.q.toString(16));k.dp=hextob64u(i.dmp1.toString(16));k.dq=hextob64u(i.dmq1.toString(16));k.qi=hextob64u(i.coeff.toString(16))}else{if(i instanceof RSAKey&&i.isPublic){k.kty=\"RSA\";k.n=hextob64u(i.n.toString(16));k.e=hextob64u(i.e.toString(16))}else{if(i instanceof KJUR.crypto.ECDSA&&i.isPrivate){var a=i.getShortNISTPCurveName();if(a!==\"P-256\"&&a!==\"P-384\"&&a!==\"P-521\"){throw new Error(\"unsupported curve name for JWT: \"+a)}var j=i.getPublicKeyXYHex();k.kty=\"EC\";k.crv=a;k.x=hextob64u(j.x);k.y=hextob64u(j.y);k.d=hextob64u(i.prvKeyHex)}else{if(i instanceof KJUR.crypto.ECDSA&&i.isPublic){var a=i.getShortNISTPCurveName();if(a!==\"P-256\"&&a!==\"P-384\"&&a!==\"P-521\"){throw new Error(\"unsupported curve name for JWT: \"+a)}var j=i.getPublicKeyXYHex();k.kty=\"EC\";k.crv=a;k.x=hextob64u(j.x);k.y=hextob64u(j.y)}}}}if(k.kty==undefined){throw new Error(\"unsupported keyinfo\")}if((!i.isPrivate)&&h!=true){k.kid=KJUR.jws.JWS.getJWKthumbprint(k)}if(e!=undefined&&g!=true){k.x5c=[hex2b64(e)]}if(e!=undefined&&b!=true){k.x5t=b64tob64u(hex2b64(c(e,\"sha1\")))}if(e!=undefined&&f!=true){k[\"x5t#S256\"]=b64tob64u(hex2b64(c(e,\"sha256\")))}return k};KEYUTIL.getJWKFromKey=function(a){return KEYUTIL.getJWK(a,true,true,true,true)};\nRSAKey.getPosArrayOfChildrenFromHex=function(a){return ASN1HEX.getChildIdx(a,0)};RSAKey.getHexValueArrayOfChildrenFromHex=function(f){var n=ASN1HEX;var i=n.getV;var k=RSAKey.getPosArrayOfChildrenFromHex(f);var e=i(f,k[0]);var j=i(f,k[1]);var b=i(f,k[2]);var c=i(f,k[3]);var h=i(f,k[4]);var g=i(f,k[5]);var m=i(f,k[6]);var l=i(f,k[7]);var d=i(f,k[8]);var k=new Array();k.push(e,j,b,c,h,g,m,l,d);return k};RSAKey.prototype.readPrivateKeyFromPEMString=function(d){var c=pemtohex(d);var b=RSAKey.getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])};RSAKey.prototype.readPKCS5PrvKeyHex=function(c){var b=RSAKey.getHexValueArrayOfChildrenFromHex(c);this.setPrivateEx(b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8])};RSAKey.prototype.readPKCS8PrvKeyHex=function(e){var c,i,k,b,a,f,d,j;var m=ASN1HEX;var l=m.getVbyListEx;if(m.isASN1HEX(e)===false){throw new Error(\"not ASN.1 hex string\")}try{c=l(e,0,[2,0,1],\"02\");i=l(e,0,[2,0,2],\"02\");k=l(e,0,[2,0,3],\"02\");b=l(e,0,[2,0,4],\"02\");a=l(e,0,[2,0,5],\"02\");f=l(e,0,[2,0,6],\"02\");d=l(e,0,[2,0,7],\"02\");j=l(e,0,[2,0,8],\"02\")}catch(g){throw new Error(\"malformed PKCS#8 plain RSA private key\")}this.setPrivateEx(c,i,k,b,a,f,d,j)};RSAKey.prototype.readPKCS5PubKeyHex=function(c){var e=ASN1HEX;var b=e.getV;if(e.isASN1HEX(c)===false){throw new Error(\"keyHex is not ASN.1 hex string\")}var a=e.getChildIdx(c,0);if(a.length!==2||c.substr(a[0],2)!==\"02\"||c.substr(a[1],2)!==\"02\"){throw new Error(\"wrong hex for PKCS#5 public key\")}var f=b(c,a[0]);var d=b(c,a[1]);this.setPublic(f,d)};RSAKey.prototype.readPKCS8PubKeyHex=function(b){var c=ASN1HEX;if(c.isASN1HEX(b)===false){throw new Error(\"not ASN.1 hex string\")}if(c.getTLVbyListEx(b,0,[0,0])!==\"06092a864886f70d010101\"){throw new Error(\"not PKCS8 RSA public key\")}var a=c.getTLVbyListEx(b,0,[1,0]);this.readPKCS5PubKeyHex(a)};RSAKey.prototype.readCertPubKeyHex=function(b,d){var a,c;a=new X509();a.readCertHex(b);c=a.getPublicKeyHex();this.readPKCS8PubKeyHex(c)};\nvar _RE_HEXDECONLY=new RegExp(\"[^0-9a-f]\",\"gi\");function _rsasign_getHexPaddedDigestInfoForString(d,e,a){var b=function(f){return KJUR.crypto.Util.hashString(f,a)};var c=b(d);return KJUR.crypto.Util.getPaddedDigestInfoHex(c,a,e)}function _zeroPaddingOfSignature(e,d){var c=\"\";var a=d/4-e.length;for(var b=0;b>24,(d&16711680)>>16,(d&65280)>>8,d&255]))));d+=1}return b}RSAKey.prototype.signPSS=function(e,a,d){var c=function(f){return KJUR.crypto.Util.hashHex(f,a)};var b=c(rstrtohex(e));if(d===undefined){d=-1}return this.signWithMessageHashPSS(b,a,d)};RSAKey.prototype.signWithMessageHashPSS=function(l,a,k){var b=hextorstr(l);var g=b.length;var m=this.n.bitLength()-1;var c=Math.ceil(m/8);var d;var o=function(i){return KJUR.crypto.Util.hashHex(i,a)};if(k===-1||k===undefined){k=g}else{if(k===-2){k=c-g-2}else{if(k<-2){throw new Error(\"invalid salt length\")}}}if(c<(g+k+2)){throw new Error(\"data too long\")}var f=\"\";if(k>0){f=new Array(k);new SecureRandom().nextBytes(f);f=String.fromCharCode.apply(String,f)}var n=hextorstr(o(rstrtohex(\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\"+b+f)));var j=[];for(d=0;d>(8*c-m))&255;q[0]&=~p;for(d=0;dk){return false}var j=this.doPublic(b);var i=j.toString(16);if(i.length+3!=k/4){return false}var e=i.replace(/^1f+00/,\"\");var g=_rsasign_getAlgNameAndHashFromHexDisgestInfo(e);if(g.length==0){return false}var d=g[0];var h=g[1];var a=function(m){return KJUR.crypto.Util.hashString(m,d)};var c=a(f);return(h==c)};RSAKey.prototype.verifyWithMessageHash=function(e,a){if(a.length!=Math.ceil(this.n.bitLength()/4)){return false}var b=parseBigInt(a,16);if(b.bitLength()>this.n.bitLength()){return 0}var h=this.doPublic(b);var g=h.toString(16).replace(/^1f+00/,\"\");var c=_rsasign_getAlgNameAndHashFromHexDisgestInfo(g);if(c.length==0){return false}var d=c[0];var f=c[1];return(f==e)};RSAKey.prototype.verifyPSS=function(c,b,a,f){var e=function(g){return KJUR.crypto.Util.hashHex(g,a)};var d=e(rstrtohex(c));if(f===undefined){f=-1}return this.verifyWithMessageHashPSS(d,b,a,f)};RSAKey.prototype.verifyWithMessageHashPSS=function(f,s,l,c){if(s.length!=Math.ceil(this.n.bitLength()/4)){return false}var k=new BigInteger(s,16);var r=function(i){return KJUR.crypto.Util.hashHex(i,l)};var j=hextorstr(f);var h=j.length;var g=this.n.bitLength()-1;var m=Math.ceil(g/8);var q;if(c===-1||c===undefined){c=h}else{if(c===-2){c=m-h-2}else{if(c<-2){throw new Error(\"invalid salt length\")}}}if(m<(h+c+2)){throw new Error(\"data too long\")}var a=this.doPublic(k).toByteArray();for(q=0;q>(8*m-g))&255;if((d.charCodeAt(0)&p)!==0){throw new Error(\"bits beyond keysize not zero\")}var n=pss_mgf1_str(e,d.length,r);var o=[];for(q=0;q0){return z}return undefined}catch(B){return undefined}};this._asn1ToNoticeRef=function(F){try{var A={};var B=aryval(F,\"seq\");for(var D=0;D0){return A}return undefined}catch(C){return undefined}};this._asn1ToNoticeNum=function(E){try{var A=aryval(E,\"seq\");var z=[];for(var C=0;C1){var G=b(C,B[1]);var A=this.getGeneralName(G);if(A.uri!=undefined){z.uri=A.uri}}if(B.length>2){var D=b(C,B[2]);if(D==\"0101ff\"){z.reqauth=true}if(D==\"010100\"){z.reqauth=false}}return z};this.getExtSubjectDirectoryAttributes=function(I,H){if(I===undefined&&H===undefined){var B=this.getExtInfo(\"subjectDirectoryAttributes\");if(B===undefined){return undefined}I=b(this.hex,B.vidx);H=B.critical}var J={extname:\"subjectDirectoryAttributes\"};if(H){J.critical=true}try{var z=j(I);var D=[];for(var E=0;E0){z.ext=this.getExtParamArray()}z.sighex=this.getSignatureValueHex();if(A.tbshex==true){z.tbshex=a(this.hex,0,[0])}if(A.nodnarray==true){delete z.issuer.array;delete z.subject.array}return z};this.getExtParamArray=function(A){if(A==undefined){var C=f(this.hex,0,[0,\"[3]\"]);if(C!=-1){A=q(this.hex,0,[0,\"[3]\",0],\"30\")}}var z=[];var B=s(A,0);for(var D=0;D0){var b=\":\"+n.join(\":\")+\":\";if(b.indexOf(\":\"+k+\":\")==-1){throw\"algorithm '\"+k+\"' not accepted in the list\"}}if(k!=\"none\"&&B===null){throw\"key shall be specified to verify.\"}if(typeof B==\"string\"&&B.indexOf(\"-----BEGIN \")!=-1){B=KEYUTIL.getKey(B)}if(z==\"RS\"||z==\"PS\"){if(!(B instanceof m)){throw\"key shall be a RSAKey obj for RS* and PS* algs\"}}if(z==\"ES\"){if(!(B instanceof p)){throw\"key shall be a ECDSA obj for ES* algs\"}}if(k==\"none\"){}var u=null;if(t.jwsalg2sigalg[l.alg]===undefined){throw\"unsupported alg name: \"+k}else{u=t.jwsalg2sigalg[k]}if(u==\"none\"){throw\"not supported\"}else{if(u.substr(0,4)==\"Hmac\"){var o=null;if(B===undefined){throw\"hexadecimal key shall be specified for HMAC\"}var j=new s({alg:u,pass:B});j.updateString(c);o=j.doFinal();return A==o}else{if(u.indexOf(\"withECDSA\")!=-1){var h=null;try{h=p.concatSigToASN1Sig(A)}catch(v){return false}var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(h)}else{var g=new d({alg:u});g.init(B);g.updateString(c);return g.verify(A)}}}};KJUR.jws.JWS.parse=function(g){var c=g.split(\".\");var b={};var f,e,d;if(c.length!=2&&c.length!=3){throw\"malformed sJWS: wrong number of '.' splitted elements\"}f=c[0];e=c[1];if(c.length==3){d=c[2]}b.headerObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(f));b.payloadObj=KJUR.jws.JWS.readSafeJSONString(b64utoutf8(e));b.headerPP=JSON.stringify(b.headerObj,null,\" \");if(b.payloadObj==null){b.payloadPP=b64utoutf8(e)}else{b.payloadPP=JSON.stringify(b.payloadObj,null,\" \")}if(d!==undefined){b.sigHex=b64utohex(d)}return b};KJUR.jws.JWS.verifyJWT=function(e,l,r){var d=KJUR,j=d.jws,o=j.JWS,n=o.readSafeJSONString,p=o.inArray,f=o.includedArray;if(!isBase64URLDot(e)){return false}var k=e.split(\".\");if(k.length!=3){return false}var c=k[0];var i=k[1];var q=c+\".\"+i;var m=b64utohex(k[2]);var h=n(b64utoutf8(c));var g=n(b64utoutf8(i));if(h.alg===undefined){return false}if(r.alg===undefined){throw\"acceptField.alg shall be specified\"}if(!p(h.alg,r.alg)){return false}if(g.iss!==undefined&&typeof r.iss===\"object\"){if(!p(g.iss,r.iss)){return false}}if(g.sub!==undefined&&typeof r.sub===\"object\"){if(!p(g.sub,r.sub)){return false}}if(g.aud!==undefined&&typeof r.aud===\"object\"){if(typeof g.aud==\"string\"){if(!p(g.aud,r.aud)){return false}}else{if(typeof g.aud==\"object\"){if(!f(g.aud,r.aud)){return false}}}}var b=j.IntDate.getNow();if(r.verifyAt!==undefined&&typeof r.verifyAt===\"number\"){b=r.verifyAt}if(r.gracePeriod===undefined||typeof r.gracePeriod!==\"number\"){r.gracePeriod=0}if(g.exp!==undefined&&typeof g.exp==\"number\"){if(g.exp+r.gracePeriodl){this.aHeader.pop()}if(this.aSignature.length>l){this.aSignature.pop()}throw\"addSignature failed: \"+i}};this.verifyAll=function(h){if(this.aHeader.length!==h.length||this.aSignature.length!==h.length){return false}for(var g=0;g0){this.aHeader=g.headers}else{throw\"malformed header\"}if(typeof g.payload===\"string\"){this.sPayload=g.payload}else{throw\"malformed signatures\"}if(g.signatures.length>0){this.aSignature=g.signatures}else{throw\"malformed signatures\"}}catch(e){throw\"malformed JWS-JS JSON object: \"+e}}};this.getJSON=function(){return{headers:this.aHeader,payload:this.sPayload,signatures:this.aSignature}};this.isEmpty=function(){if(this.aHeader.length==0){return 1}return 0}};\nexports.SecureRandom = SecureRandom;\nexports.rng_seed_time = rng_seed_time;\n\nexports.BigInteger = BigInteger;\nexports.RSAKey = RSAKey;\nexports.ECDSA = KJUR.crypto.ECDSA;\nexports.DSA = KJUR.crypto.DSA;\nexports.Signature = KJUR.crypto.Signature;\nexports.MessageDigest = KJUR.crypto.MessageDigest;\nexports.Mac = KJUR.crypto.Mac;\n//exports.Cipher = KJUR.crypto.Cipher;\nexports.KEYUTIL = KEYUTIL;\nexports.ASN1HEX = ASN1HEX;\nexports.X509 = X509;\nexports.X509CRL = X509CRL;\nexports.CryptoJS = CryptoJS;\n\n// ext/base64.js\nexports.b64tohex = b64tohex;\nexports.b64toBA = b64toBA;\n\n// ext/ec*.js\nexports.ECFieldElementFp = ECFieldElementFp;\nexports.ECPointFp = ECPointFp;\nexports.ECCurveFp = ECCurveFp;\n\n// base64x.js\nexports.stoBA = stoBA;\nexports.BAtos = BAtos;\nexports.BAtohex = BAtohex;\nexports.stohex = stohex;\nexports.stob64 = stob64;\nexports.stob64u = stob64u;\nexports.b64utos = b64utos;\nexports.b64tob64u = b64tob64u;\nexports.b64utob64 = b64utob64;\nexports.hex2b64 = hex2b64;\nexports.hextob64u = hextob64u;\nexports.b64utohex = b64utohex;\nexports.utf8tob64u = utf8tob64u;\nexports.b64utoutf8 = b64utoutf8;\nexports.utf8tob64 = utf8tob64;\nexports.b64toutf8 = b64toutf8;\nexports.utf8tohex = utf8tohex;\nexports.hextoutf8 = hextoutf8;\nexports.hextorstr = hextorstr;\nexports.rstrtohex = rstrtohex;\nexports.hextob64 = hextob64;\nexports.hextob64nl = hextob64nl;\nexports.b64nltohex = b64nltohex;\nexports.hextopem = hextopem;\nexports.pemtohex = pemtohex;\nexports.hextoArrayBuffer = hextoArrayBuffer;\nexports.ArrayBuffertohex = ArrayBuffertohex;\nexports.zulutomsec = zulutomsec;\nexports.msectozulu = msectozulu;\nexports.zulutosec = zulutosec;\nexports.zulutodate = zulutodate;\nexports.datetozulu = datetozulu;\nexports.uricmptohex = uricmptohex;\nexports.hextouricmp = hextouricmp;\nexports.ipv6tohex = ipv6tohex;\nexports.hextoipv6 = hextoipv6;\nexports.hextoip = hextoip;\nexports.iptohex = iptohex;\nexports.ucs2hextoutf8 = ucs2hextoutf8;\nexports.encodeURIComponentAll = encodeURIComponentAll;\nexports.newline_toUnix = newline_toUnix;\nexports.newline_toDos = newline_toDos;\nexports.hextoposhex = hextoposhex;\nexports.intarystrtohex = intarystrtohex;\nexports.strdiffidx = strdiffidx;\nexports.oidtohex = oidtohex;\nexports.hextooid = hextooid;\nexports.strpad = strpad;\nexports.bitstrtoint = bitstrtoint;\nexports.inttobitstr = inttobitstr;\nexports.bitstrtobinstr = bitstrtobinstr;\nexports.binstrtobitstr = binstrtobitstr;\nexports.isBase64URLDot = isBase64URLDot;\nexports.namearraytobinstr = namearraytobinstr;\nexports.extendClass = extendClass;\nexports.foldnl = foldnl;\nexports.b64topem = b64topem;\nexports.pemtob64 = pemtob64;\nexports.timeogen = timetogen;\nexports.aryval = aryval;\nexports.inttohex = inttohex;\nexports.twoscompl = twoscompl;\n\n// name spaces\nexports.KJUR = KJUR;\nexports.crypto = KJUR.crypto;\nexports.asn1 = KJUR.asn1;\nexports.jws = KJUR.jws;\nexports.lang = KJUR.lang;\n\nexports.VERSION = VERSION;\nexports.VERSION_FULL = VERSION_FULL;\n\n\n\n","var Le=(i=>(i[i.trace=0]=\"trace\",i[i.debug=1]=\"debug\",i[i.info=2]=\"info\",i[i.warn=3]=\"warn\",i[i.error=4]=\"error\",i))(Le||{}),Wr=Object.create(null),me={},Je=\"gateway\";me[Je]=2;var Ht=e=>{console.log(`${e.time.toISOString()} [${e.level}] ${e.name}: ${e.message}`)};function zr(e,t,r,...n){this.enabledFor(t)&&Ht({time:new Date,level:t,name:e,message:r,data:n})}function Yi(e){let t=function(n,o,...i){zr.call(t,e,n,o,...i)};function r(n){return isNaN(Number(n))}for(let n of Object.keys(Le).filter(r))t[n]=function(o,...i){zr.call(t,e,n,o,...i)};if(!me[e]){let n=Object.entries(me).sort(([i],[s])=>s.localeCompare(i)),[,o]=n.find(([i])=>e.startsWith(i));me[e]=o}return t.enabledFor=function(n){let o=Le[n];return me[e]<=o},t}function D(e){if(!e.startsWith(Je))throw new Error(`Logger name must start with ${Je}`);return Wr[e]||(Wr[e]=Yi(e))}function Ut(e){function t(n,o){for(let i of Object.keys(me).filter(s=>s.startsWith(n)))me[i]=Le[o]}let r=e.level;if(typeof r==\"string\")me[Je]=Le[r],t(Je,r);else if(typeof r==\"object\"){let n=Object.entries(r).sort(([o],[i])=>o.localeCompare(i));for(let[o,i]of n)t(o,i)}Ht=e.appender??Ht}var re=\"global\",Te=\"context\",De=`${re}.errors.failure`;function S(e,t){return{receiver:e,body:t}}function k(e,t){return{...S({type:\"cluster\"},t),source:e}}function Y(e,t,r){return{...S(t,r),source:e}}function Qi(e,t,r,n,o){let i={type:\"error\",request_id:t,reason_uri:n.uri,reason:n.message};return e&&(i.domain=e),r&&(i.peer_id=r),o&&(i.context=o),i}function g(e,t,r,n,o,i){return S(t,Qi(e,r,n,o,i))}function Zi(e,t,r){return{type:\"success\",request_id:t,domain:e,peer_id:r}}function h(e,t,r,n){return S(t,Zi(e,r,n))}function P(e){let t=e.type;return t&&t===\"local\"}function H(e){return!P(e)}function Xi(e,t,r,n){return{domain:e,type:\"token\",request_id:t,peer_id:r,token:n}}function Yr(e,t,r,n,o){return S(t,Xi(e,r,n,o))}function es(e,t,r,n,o){return{domain:e,type:\"peer-added\",peer_id:t,new_peer_id:r,identity:n,meta:o}}function ge(e,t,r,n,o,i){return S(t,es(e,r,n,o,i))}function ts(e,t,r,n){return{domain:e,type:\"peer-removed\",peer_id:t,removed_id:r,reason_uri:n.uri,reason:n.message}}function be(e,t,r,n,o){return S(t,ts(e,r,n,o))}var oe=class extends Error{constructor(r,n,o){super(r);this.data=n;this.cause=o;this.name=\"ExceptionInfo\",this.data=n,this.cause=o}};function j(e,t,r){return new oe(e,t,r)}function Pe(e){if(e instanceof oe)return e.data}function Fe(e){if(e instanceof Error)return e.message}function v(e,t){return{uri:e,message:t}}function O(e,t){let r=Pe(e);return{uri:r?.uri??t,message:r?.message??Fe(e)??\"\"}}function q(e,t){let r={uri:e,message:t};throw new oe(t,r)}function G(e){return{uri:e.reason_uri,message:e.reason}}function ie(e,t,r){return Array.isArray(e),!0}function Ee(){let e=function(o){return Math.floor(Math.random()*o)},t=function(){return e(16).toString(16)},r=(8|3&e(16)).toString(16);return(t()+t()+t()+t()+t()+t()+t()+t()+\"-\"+t()+t()+t()+t()+\"-4\"+t()+t()+t()+\"-\"+r+t()+t()+t()+\"-\"+t()+t()+t()+t()+t()+t()+t()+t()+t()+t()+t()+t()).replace(\"-\",\"\")}function w(e){return e?e.nodeId:Ee()}function se(e){let t=e.currentId??1,r=`r-${e.nodeId}-${t}`;return[{...e,currentId:t+1},r]}function Zr(e){let t=e.currentId??1,r=`i-${e.nodeId}-${t}`;return[{...e,currentId:t+1},r]}function nt(e){let t=e.currentId??1,r=`c-${e.nodeId}-${t}`;return[{...e,currentId:t+1},r]}function Xr(e){let t=e.currentId??1,r=`a-${e.nodeId}-${t}`;return[{...e,currentId:t+1},r]}function en(e){let t=e.currentId??1,r=`p-${e.nodeId}-${t}`;return[{...e,currentId:t+1},r]}import{enableMapSet as rs,produce as ot}from\"immer\";rs();function tn(e,t){let r=t??Ee();return{ids:{nodeId:e,currentId:1},signatureKey:r}}function Z(e,t,r,n){return ot(e,o=>{o.peers[t][r]=n??{},o.domains=o.domains||{},o.domains[r]=o.domains[r]||new Set,o.domains[r].add(t)})}function F(e,t,r){return ot(e,n=>{n.peers&&delete n.peers[t][r],n.domains&&n.domains[r]&&n.domains[r].delete(t)})}function W(e,t,r){return!!e.domains?.[r]?.has(t)}function rn(e,t){return!!e[t]}function $t(e,t,r){return t?ot(e,n=>{n.gatewayRequests=n.gatewayRequests||{},n.gatewayRequests[t]=r}):e}function _e(e,t){return ot({state:e},r=>{r.state.gatewayRequests&&(r.removed=r.state.gatewayRequests[t],delete r.state.gatewayRequests[t],Object.keys(r.state.gatewayRequests).length===0&&delete r.state.gatewayRequests)})}function Be(e,t){return e.registeredDomains?.[t]?.domain}function z(e,...t){return t.reduce(([r,n],o)=>{let[i,s]=o(r);return[i,n.concat(s)]},[e,[]])}import{castDraft as jt,produce as Se}from\"immer\";function os(e,t){switch(t.type){case\"node\":return t.node===e.node;case\"peer\":return t.node===e.node&&t.peerId===e.peerId;case\"local\":return t.receive===e.receive;default:return!1}}function Q(e,t,r){let n=o=>os(o.source,t);return r?ae(e,r).filter(n):Object.values(e.peers??{}).filter(n)}function ne(e,t,r){let n=f(e,t);if(n?.[r])return n}function f(e,t){return t?e.peers?.[t]:void 0}function x(e,t){if(t){let r=f(e,t);if(r)return r;throw j(`Unable to find peer ${t}`,{})}else throw j(\"Peer id is missing\",{})}function _(e,t,r){if(t){let n=ne(e,t,r);if(n)return n;throw j(`Unable to find peer ${t} in domain ${r}`,{})}else throw j(\"Peer id is missing\",{})}function U(e){return e?.source.type===\"local\"}function on(e,t){let r=JSON.stringify(t,Object.keys(t).sort());return e.identities?.get(r)}function ae(e,t){return t?Array.from(e.domains?.[t]??[],r=>f(e,r)).filter(r=>!!r):Object.values(e.peers||{})}function Gt(e,t,r,n,o,i){let s=f(e,r);if(s)return[e,s];let a=Se({id:r,identity:n,source:t},c=>{i&&(c.options=i),o&&(c.creationRequest=o)});return[Se(e,c=>{c.users=c.users||{},n.user?(c.users.byName=c.users.byName||{},c.users.byName[n.user]?c.users.byName[n.user].add(r):c.users.byName[n.user]=new Set([r])):(c.users.noUser=c.users.noUser||new Set,c.users.noUser.add(r)),c.identities=c.identities||new Map,c.identities.set(JSON.stringify(n,Object.keys(n).sort()),r),c.peers=c.peers||{},c.peers[r]=jt(a),i?.service&&(c.services=c.services||new Set,c.services.add(r))}),a]}function sn(e,t){let r=t.identity,n=t.id,o=r.user;return Se(e,i=>{i.identities&&i.identities.delete(JSON.stringify(r,Object.keys(r).sort())),i.users&&(o?(i.users.byName[o]&&(i.users.byName[o].delete(n),i.users.byName[o].size==0&&delete i.users.byName[o]),i.users.byName&&Object.keys(i.users.byName).length===0&&delete i.users.byName):(i.users.noUser.delete(n),i.users.noUser?.size===0&&delete i.users.noUser)),i.peers&&delete i.peers[n],i.services=i.services||new Set,i.services&&i.services.delete(n)})}function T(e,t,r){return Se(e,n=>{n.peers=n.peers||jt({}),n.peers[t]=jt(r)})}function pe(e,t,r){return Se(e,n=>{n.peers[t]=Se(n.peers[t],r)})}function it(e,t,r,n,o,i){if(!t&&!o){let s=n.user,a=e.user;return i||r||s===a}else return ie(t,e,n)&&ie(o,n,e)}function Ce(e,t,r){let n=t.identity,o=t[e]?.restrictions,i=t.options?.service,s=r.identity,a=r[e]?.restrictions,c=r.options?.service;return r.id!==t.id&&it(n,o,i,s,a,c)}function nn(e,t,r,n=!1){return ae(e,t).concat(Array.from(e.services??[],o=>f(e,o)).filter(o=>!!o)).filter(o=>n&&r.id===o.id||Ce(t,r,o))}function E(e,t,r,n){if(r.options?.service)return nn(e,t,r,n);{let o=r.identity.user;return o?Array.from(e.users?.byName?.[o]??[]).concat(Array.from(e.services??[])).map(i=>f(e,i)).filter(i=>!!i).filter(i=>rn(i,t)&&Ce(t,r,i)||n&&i.id===r.id):nn(e,t,r,n)}}function is(e,t,r,n,o){let i=o.identity,s=o.id,a=n.id,c=U(n);return Se(t,d=>{c&&d.push(ge(e,r,a,s,i,{local:c})),U(o)&&d.push(ge(e,o.source,s,a,n.identity,{local:c}))})}function st(e,t,r,n,o){return E(r,t,o).reduce((i,s)=>is(e,i,n,o,s),[])}function at(e,t,r,n,o,i){let s=n.id;return[F(r,s,t),E(r,t,n).reduce((a,c)=>(a=a.concat(be(e,c.source,c.id,s,o)),i||(a=a.concat(be(e,n.source,s,c.id,o))),a),[])]}function ss(e,t){if(e===t)return!0;let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let n of r)if(e[n]!==t[n])return!1;return!0}function as(e,t,r){let{peer_id:n}=r,o=f(e,n);if(o&&!ss(t,o.source))throw j(`The original source ${JSON.stringify(o.source)} of peer ${n} doesnt match the current source ${JSON.stringify(t)}`,{message:\"Bad Source\"})}var Nt=D(\"gateway.node\");function cs(e,t){let r=Object.values(t.registeredDomains).filter(n=>n.info.uri!==re).map(n=>n.domain);return t.registeredDomains[re]&&r.push(t.registeredDomains[re].domain),r.reduce(([n,o],i)=>{Nt.debug(`About to remove source from domain ${JSON.stringify(i.info())}`);let s=i.handleMessage(n,e);if(s){Nt.debug(`removed source from domain ${JSON.stringify(i.info())}`);let[a,c]=s;return[a,o.concat(c)]}else return[n,o]},[t,[]])}function an(e,t){if(t.body.type===\"commands/source-removed\")return cs(t,e);{let{source:r,body:n}=t,{registeredDomains:o}=e,i=n.domain??re,s=o[i]?.domain;if(s)return Nt.debug(`Handling message with domain ${JSON.stringify(s.info())} message: \n ${JSON.stringify(t,null,\"\t\")}`),as(e,r,n),s.handleMessage(e,t);{let a=n;return[e,[g(a.domain,r,a.request_id,a.peer_id,v(De,`Unable to find domain for message ${JSON.stringify(t)}`))]]}}}var ve=class{constructor(t=-1){this.bufferSize=t;this.queue=[];this.closed=!1;this.draining=!1}put(t){return new Promise((r,n)=>{this.closed&&n(new Error(\"cannot enqueue promise serializer is closed\"));let o={action:t,resolve:r,reject:n};if(this.bufferSize<0||this.queue.lengthn===e?r:r.concat(n),[])}function dn(e,t){return e[t]?e:ds(e,r=>{r[t]={}})}function Me(e){return e instanceof Set?Array.from(e).map(Me):e instanceof Array?e.map(Me):e instanceof Map?Me(Object.fromEntries(e)):e instanceof Object?Object.keys(e).reduce((t,r)=>{let n=Me(e[r]),o=r;return t[o]=n,t},{}):e}function us(e){let t=new Map;return function(r,n){let o=t.get(this)+(Array.isArray(this)?`[${r}]`:`.${r}`);return n===Object(n)&&t.set(n,o),e.call(this,r,n,o.replace(/undefined\\.\\.?/,\"\"))}}function ct(...e){return us((t,r,n)=>e.indexOf(n)!==-1?\"******\":r)}var Lt=class{constructor(t){this.handler=t}close(){}message(t){this.handler(t)}addSource(t){}removeSource(t){let r={origin:\"local\",source:t,body:{type:\"commands/source-removed\"}};return this.handler(r)}};function ms(e){return e.reduce((t,r)=>{let n=r.info(),o={};return o[n.uri]={domain:r,info:n},Object.assign(t,o)},{})}var xe=D(\"gateway.node.local\");function ps(e,t){let{source:r,body:n,origin:o}=t;try{return n.dump?(xe.info(`state dump:\n${JSON.stringify(Me(e),null,\"\t\")}`),[e,[]]):o===\"cluster\"?[e,[]]:an(e,t)}catch(i){xe.error(`Error handling message ${JSON.stringify(t)}`,i);let s=n;return[e,[g(void 0,r,s.request_id,s.peer_id,O(i,De))]]}}function fs(e){return\"receive\"in e&&e.receive}async function ys(e){switch(e.receiver.type){case\"cluster\":return;case\"node\":return;case\"peer\":return;case\"local\":{let{receiver:t,body:r}=e;xe.debug(`Sending message ${JSON.stringify(r,null,\"\t\")} to ${JSON.stringify(t)}`),fs(t)&&await t.receive(r);break}default:xe.error(`Unable to process ${JSON.stringify(e)}`)}}async function ls(e,t){try{xe.trace(`domain handler processing message ${JSON.stringify(t)}`);let[r,n]=ps(e,t);if(n)for(let o of n)await ys(o);return r??e}catch(r){return xe.error(`error handling message ${JSON.stringify(t)}`,r),e}}function un(e,t){let r,n=new ve,o=async i=>{try{r=await n.put(()=>ls(r,i))}catch(s){throw xe.error(`Error processing internal message ${JSON.stringify(i)}`,s),s}};return r=e.reduce((i,s)=>s.init(i),{...tn(w(),t?.signingKey),registeredDomains:ms(e),handler:o}),new Lt(o)}var M=re,Jt=De,mn=`${M}.errors.unhandled_message`,pn=`${M}.errors.already_seen`,Ft=`${M}.errors.invalid_domain`,Hu=`${M}.errors.invalid_context`,Et=`${M}.errors.authentication.failure`,Bt=`${M}.errors.invalid_peer`;function fn(e,t,r,n,o,i){let s={domain:M,type:\"welcome\",request_id:t,peer_id:r,available_domains:n,resolved_identity:o};return i&&(s.options=i),S(e,s)}function yn(e,t,r,n,o){let i={domain:e,type:\"authentication-request\",request_id:r,authentication:o};return n&&(i.peer_id=n),S(t,i)}var Kt={application:{required:!0},instance:{required:!1},region:{required:!1},environment:{required:!1},machine:{required:!1},user:{required:!1}};function bs(e){return Object.keys(Kt).find(t=>Kt[t]&&Kt[t].required&&e[t]===void 0)}function ln(e){let t=bs(e);if(t)throw new oe(`Identity ${JSON.stringify(e)} is missing required key: ${t}`,{})}function gn(e,t){let r=e;return r&&r.indexOf(\":\")!==-1&&(r=r.substring(0,r.indexOf(\":\"))),r&&r.indexOf(\"127.0.0.1\")>=0?t??r:r??t}import{KJUR as Wt}from\"jsrsasign\";function Ke(e,t){return Wt.jws.JWS.sign(null,{alg:\"HS256\",typ:\"JWT\"},e,t)}function dt(e,t,r){let n;if(Wt.jws.JWS.verifyJWT(e,t,{alg:[\"HS256\"],verifyAt:r?.now}))n=Wt.jws.JWS.parse(e);else throw new Error(\"invalid jwt token\");return n.payloadObj}function zt(e,t,r,n){let o={type:\"gw-request\",\"impersonate-peer\":t,\"gw-request\":r};return n&&(o.exp=Math.floor(n/1e3)),Ke(o,e.signatureKey)}function bn(e,t,r){let n={type:\"authentication\",user:t.user};return r&&(n.exp=Math.floor(r/1e3)),Ke(n,e.signatureKey)}function Sn(e,t,r){r===void 0&&(r=r??Date.now());let n={};return r&&(n.now=Math.floor(r/1e3)),dt(t,e,n)}var ce=\"context-domain\";import{castDraft as Vt,produce as qe}from\"immer\";function ut(e,t){return qe(e,r=>{r.contexts=r.contexts||{},r.contexts[t.id]=Vt(t)})}function mt(e,t){return qe(e,r=>{r.contexts&&(delete r.contexts[t],Object.values(r.contexts).length===0&&delete r.contexts)})}function Ie(e,t,r){let n=r.identity.user,o=r.options?.service,i=Object.values(e.contexts||{}),s;return s=i.find(a=>t===a.name&&a.identity.user===n),s||(s=i.find(a=>t===a.name&&(o||a.options?.service))),s}function fe(e,t){if(t)return e.contexts?.[t]}function We(e,t){let r=e.contexts?.[t];if(r)return r;throw j(`Unable to find context with id ${t}`,{})}function ke(e,t,r){return t&&r?t.members.has(r)?e:qe(e,o=>{o.contexts=o.contexts||{},o.contexts[t.id]=Vt(qe(t,i=>{i.members=i.members||new Set,i.members.add(r)}))}):e}function pt(e,t,r){return qe([e,t],([n,o])=>{o.members.delete(r),r===o.owner&&delete o.owner,n.contexts=n.contexts||{},n.contexts[t.id]=o})}function xn(e,t,r){if(!t)return r;if(t.length===1)e[t[0]]=r;else{let n=e[t[0]]||{};(Array.isArray(n)||typeof n==\"number\"||typeof n==\"boolean\")&&(n={}),e[t[0]]=xn(n,t.slice(1),r)}return e}function vs(e,t){return{...e,...t}}function xs(e,t){let[r,n]=t;switch(r){case\"removed\":{n.forEach(o=>{delete e[o]});break}case\"added\":{Object.entries(n).reduce((o,[i,s])=>(o[i]=s,o),e);break}case\"updated\":{Object.entries(n).reduce((o,[i,s])=>(Array.isArray(s)&&Array.isArray(o[i])?o[i]=s:s instanceof Object&&o[i]instanceof Object?o[i]=vs(o[i],s):o[i]=s,o),e);break}case\"reset\":{n&&(e=n);break}case\"commands\":{e=n.reduce((o,i)=>{switch(i.type){case\"set\":return xn(o,vn(i.path),i.value);case\"remove\":{let s=vn(i.path);if(s){let a=o;for(let c=0;c{o.contexts[t].data=Object.entries(r).reduce((i,[s,a])=>xs(i,[s,a]),o.contexts[t].data),o.contexts[t].version=n})}function vn(e){if(e)return e.split(\".\")}function ft(e,t,r,n,o,i,s,a){let c=e.identity,d=e.options,u={id:s,data:r,identity:c,lifetime:n,read_permissions:o,write_permissions:i,members:new Set,version:a,name:t,creator:e.id};return d&&(Vt(u).options=d),u}function hn(e){let t=e.version?.updates||0;t++;let r=Date.now();return{updates:t,timestamp:r}}function yt(){return{updates:0,timestamp:Date.now()}}function Rn(e,t,r,n,o,i){return S(t,{domain:e,type:\"subscribed-context\",request_id:r,peer_id:n,context_id:o,data:i})}function Yt(e,t,r,n,o,i){return S(t,{domain:e,type:\"context-added\",peer_id:r,creator_id:n,context_id:o,name:i})}function Qt(e,t,r,n,o){let i={domain:e,type:\"context-destroyed\",peer_id:r,context_id:n,reason_uri:o.uri,reason:o.message};return S(t,i)}function wn(e,t,r,n,o){return S(t,{domain:e,type:\"context-created\",request_id:r,peer_id:n,context_id:o})}function An(e,t,r,n,o,i){return S(t,{domain:e,type:\"context-updated\",peer_id:r,updater_id:n,context_id:o,delta:i})}function ze(e){return`${e}.errors.not_authorized`}function Tn(e){return`${e}.errors.bad_lifetime`}function Zt(e){return v(`${e}.destroyed`,\"Context destroyed explicitly\")}function Dn(e){return v(`${e}.peer-left`,\"Context destroyed because its owner/last peer left\")}function ye(e){return`${e}.errors.failure`}import{produce as Rs}from\"immer\";function C(e,t){return{type:\"peer\",peerId:t,node:e}}function de(e){return{type:\"node\",node:e}}import{castDraft as rm,produce as om}from\"immer\";function Xt(e){return Object.values(e.contexts||{})}function Pn(e,t){let r=e.version,n=t.version;return r.updates>n.updates||r.updates===n.updates&&r.timestamp>=n.timestamp}function lt(e,t,r=!1){let n=e.lifetime;return t.id===e.creator?!0:n===\"activity\"?e.members.has(t.id):t.id===e.creator||t.id===e.owner?!0:r?e.write_permissions?ie(e.write_permissions,e.identity,t.identity):!1:ie(e.write_permissions,e.identity,t.identity)}function _n(e,t,r){t.lifetime===\"activity\"&&q(ze(e),\"Activity contexts cannot be explicitly destroyed\");let n=t.lifetime===\"ownership\";n&&t.owner===r.id||!n&<(t,r)||q(ze(e),\"Not authorized to destroy context\")}function gt(e,t){return t.id===e.creator||t.id===e.owner||ie(e.read_permissions,e.identity,t.identity)||lt(e,t,!0)}function ws(e,t){return U(e)&&t.lifetime!==\"activity\"&>(t,e)}function bt(e,t,r){gt(t,r)||q(ze(e),\"Not authorized to read context\")}function As(e,t,r,n){let{peer_id:o,name:i}=n;try{let s=x(t,o),a=Ie(t,i,s);return a?rr(e,t,o,a):(he.warn(`unable to find remote context ${i}`),[t,[]])}catch(s){return he.warn(`unable to process remote unsubscribe ${n}`,s),[t,[]]}}function Ts(e,t,r,n){let{request_id:o,peer_id:i,context_id:s}=n;try{x(t,i);let a=We(t,s),[c,d]=rr(e,t,i,a),u={...n,type:\"unsubscribe-context\",name:a.name};return[c,d.concat([h(e,r,o,i),k(C(w(c.ids),i),u)])]}catch(a){return[t,[g(e,r,o,i,O(a,ye(e)))]]}}function St(e,t,r,n){return H(r)?As(e,t,r,n):Ts(e,t,r,n)}function Cn(e,t,r){let{source:n,id:o}=r;return Xt(t).filter(i=>ws(r,i)).map(i=>{let{creator:s,id:a,name:c}=i;return Yt(e,n,o,s,a,c)})}function Ye(e){return e.options?.context_compatibility_mode?re:Te}function er(e,t,r,n,o,i){let s=t.id,a=In(e,t.id,n,o);return[a,Array.from(t.members).filter(c=>c!==r).map(c=>f(a,c)).filter(c=>!!c).filter(c=>U(c)).map(c=>An(Ye(c),c.source,c.id,r,s,n))]}function Ds(e,t,r){let{request_id:n,peer_id:o,name:i,delta:s,version:a}=r;try{let c=x(t,o),d=Ie(t,i,c);return d?lt(d,c)&&Pn(r,d)?er(t,d,o,s,a,n):[t,[]]:(he.warn(`unable to find remote context ${i}`),[t,[]])}catch{return he.error(`error performing remote context update ${i}`),[t,[]]}}function Ps(e,t,r,n){let{request_id:o,peer_id:i,context_id:s,delta:a}=n;try{let c=x(t,i),d=We(t,s),u=hn(d);lt(d,c)||q(ze(e),\"Not authorized to update context\");let m={...n,type:\"update-context\",version:u,name:d.name,delta:a};return z(t,p=>er(p,d,i,a,u,o),p=>[p,[h(e,r,o,i),k(C(w(p.ids),i),m)]])}catch(c){return[t,[g(e,r,o,i,O(c,ye(e)))]]}}function He(e,t,r,n){return H(r)?Ds(e,t,n):Ps(e,t,r,n)}function Mn(e,t,r,n){let{name:o,data:i,read_permissions:s,write_permissions:a,peer_id:c}=n,d=n.lifetime??r.defaultLifetime,m=r.isLocal&&!(t.options?.respect_context_lifetime??!1)&&(d===\"retained\"||d===void 0)?r.defaultLifetime??\"retained\":d,[p,l]=nt(e.ids),R=Rs(ft(t,o,i,m,s,a,l,yt()),N=>{N.members=new Set([c]),N.local=r.isLocal,N.lifetime=m,m===\"ownership\"&&(N.owner=c)});return[ut({...e,ids:p},R),R]}function qn(e,t,r,n,o,i){return[ke(t,o,i),[Rn(e,r,n,i,o.id,o.data)]]}function _s(e,t,r,n){let{request_id:o,peer_id:i,name:s}=n;try{let a=x(t,i),c=Ie(t,s,a);return c?(bt(e,c,a),[ke(t,c,i),[]]):(he.warn(`unable to find remote context ${s}`),[t,[]])}catch{return[t,[]]}}function Cs(e,t,r,n){let{request_id:o,peer_id:i,context_id:s}=n;try{let a=x(t,i),c=We(t,s);bt(e,c,a);let[d,u]=qn(e,t,r,o,c,i),m={...n,type:\"subscribe-context\",name:c.name};return[d,u.concat([k(C(w(d.ids),i),m)])]}catch(a){return[t,[g(e,r,o,i,O(a,ye(e)))]]}}function vt(e,t,r,n){return H(r)?_s(e,t,r,n):Cs(e,t,r,n)}function kn(e,t,r){let n=t.name,o=t.id,i=r.id;return E(e,\"context-domain\",r,!0).filter(s=>U(s)).filter(s=>gt(t,s)).map(s=>Yt(Ye(s),s.source,s.id,i,o,n))}function Ms(e,t,r){let n=e.id;return t.filter(o=>U(o)).filter(o=>gt(e,o)).map(o=>Qt(Ye(o),o.source,o.id,n,r))}function Hn(e,t){let r=(t.read_permissions,void 0),n=(t.write_permissions,void 0),o=t.lifetime;return o||q(Tn(e),`Bad lifetime value ${o}`),{...t,read_permissions:r,write_permissions:n,lifetime:o}}function qs(e,t,r){let{request_id:n,peer_id:o,name:i}=r;try{let s=x(t,o),a=Ie(t,i,s);if(a)return bt(e,a,s),Pn(r,a)?er(t,a,o,{reset:r.data},r.version,n):[t,[]];{let[c,d]=Mn(t,s,{isLocal:!1},Hn(e,r));return[c,kn(c,d,s)]}}catch{return[t,[]]}}var he=D(\"gateway.contexts\");function ks(e,t,r,n,o){let{request_id:i,peer_id:s,name:a}=n;try{let c=x(t,s),d=Ie(t,a,c);if(d)return bt(e,d,c),qn(e,t,r,i,d,s);{let[u,m]=Mn(t,c,{isLocal:!0,defaultLifetime:o},Hn(e,n)),p=kn(u,m,c),l={...n,type:\"create-context\",version:m.version,lifetime:m.lifetime};return[u,p.concat([wn(e,r,i,s,m.id),k(C(w(t.ids),s),l)])]}}catch(c){return he.error(`error creating context from request ${JSON.stringify(n)}`,c),[t,[g(e,r,i,s,O(c,ye(e)))]]}}function xt(e,t,r,n,o){return H(r)?qs(e,t,n):ks(e,t,r,n,o)}function Hs(e){switch(e.lifetime){case\"ownership\":return!e.owner;case\"ref-counted\":return e.members.size===0;default:return!1}}function tr(e,t,r,n){let o=r.id,i=r.members;return[mt(t,o),Ms(r,ae(t,ce).filter(s=>!i.has(s.id)),n).reduce((s,a)=>s.concat(a),Array.from(i).map(s=>f(t,s)).filter(s=>!!s).filter(s=>U(s)).map(s=>Qt(e,s.source,s.id,o,n)))]}function Us(e,t,r,n){let{peer_id:o,name:i}=n;try{let s=x(t,o),a=Ie(t,i,s);return a?(_n(e,a,s),tr(e,t,a,Zt(e))):(he.warn(`unable to find remote context ${i}`),[t,[]])}catch{return[t,[]]}}function Os(e,t,r,n){let{request_id:o,peer_id:i,context_id:s}=n;try{let a=x(t,i),c=We(t,s);_n(e,c,a);let d={...n,type:\"destroy-context\",name:c.name};return z(t,u=>tr(e,u,c,Zt(e)),u=>[u,[h(e,r,o,i),k(C(w(t.ids),i),d)]])}catch(a){return[t,[g(e,r,o,i,O(a,ye(e)))]]}}function It(e,t,r,n){return H(r)?Us(e,t,r,n):Os(e,t,r,n)}function $s(e,t,r){let n=r.id;return Xt(t).reduce(([o,i],s)=>{let[a,c]=rr(e,o,n,s);return[a,i.concat(c)]},[t,[]])}function rr(e,t,r,n){if(n.members.has(r)){let[o,i]=pt(t,n,r);return Hs(i)?tr(e,o,i,Dn(e)):[o,[]]}else return[t,[]]}function ht(e,t,r,n,o){let[i,s]=at(e,ce,t,r,n,o),[a,c]=$s(e,i,r);return[a,c.concat(s.filter(d=>nr(a,d)))]}function nr(e,t){let r=f(e,t.body.peer_id);return r?!r.options?.context_compatibility_mode:!1}function Gs(e,t,r,n,o){let{request_id:i,identity:s,authentication:a,options:c}=r,d=a?.provider??n.default,u=n.available[d];if(u){let m={requestId:i,remoteIdentity:s,authentication:a,signatureKey:e.signatureKey};return u.authenticate(m).then(p=>({...p,type:p.type===\"success\"?\"internal/authenticated\":p.type===\"continue\"?\"internal/authentication-request\":p.type})).catch(p=>(Re.debug(\"authentication request rejected\",p),{...Pe(p),type:\"internal/authentication-failed\"})).then(p=>{let l={...p,request_id:i,identity:s};l.type===\"internal/authenticated\"&&(l.options=c),o({origin:\"local\",source:t,body:l})}),[e,[]]}else return[e,[g(M,t,i,void 0,v(Et,`Requested authentication provider ${d} is not available`))]]}function Ns(e,t,r){let{peer_id:n,identity:o,options:i}=r,s=Be(e,r.destination);return s?([e]=Gt(e,t,n,o,null,i),s.handleMessage(e,{origin:\"cluster\",source:t,body:{...r,type:\"domain/join\"}})):[e,[]]}function Un(e,t,r){let{peer_id:n,request_id:o,destination:i}=r,s=f(e,n);if(s?.identity){let a=Be(e,i);if(a){let c={...r,type:\"domain/join\",identity:s.identity};return r.restrictions&&(c.restrictions=r.restrictions),a.handleMessage(e,{origin:\"local\",source:t,body:c})}else return[e,[g(M,t,o,n,v(Ft,`Unable to join missing domain ${i}`))]]}else return[e,[g(M,t,o,n,v(Bt,`Unable to find peer with id ${n}`))]]}function Ls(e,t,r){return H(t)?Ns(e,t,r):Un(e,t,r)}function Js(e,t,r){return Un(e,t,r)}function Fs(e,t,r){let{peer_id:n,destination:o}=r;if(f(e,n)){let i=Be(e,o);if(i)return i.handleMessage(e,{origin:\"local\",source:t,body:{...r,type:\"domain/leave\"}})}return[e,[]]}function Es(e,t,r){let{peer_id:n,request_id:o,destination:i}=r;if(f(e,n)){let s=Be(e,i);return s?s.handleMessage(e,{origin:\"local\",source:t,body:{...r,type:\"domain/leave\"}}):[e,[g(M,t,o,n,v(Ft,`Unable to join missing domain ${i}`))]]}else return[e,[g(M,t,o,n,v(Bt,`Unable to find peer with id ${n}`))]]}function Bs(e,t,r){return H(t)?Fs(e,t,r):Es(e,t,r)}var Re=D(\"gateway.domains.global\");function Ks(e,t,r){Re.debug(\"removing source from global domain\");let n=e.ids.nodeId,[o,i]=Q(e,t).reduce(([s,a],c)=>(s=sn(s,c),P(t)&&(Re.info(`removed peer ${c.id} was on endpoint ${t.endpoint}`),a=a.concat(k({type:\"peer\",peerId:c.id,node:n},r))),[s,a]),[e,[]]);return Re.debug(\"removed source from global domain\"),[o,i]}function Ws(e,t){return Object.keys(e).filter(r=>e[r]===\"?\").reduce((r,n)=>{let o={};return o[n]=t,Object.assign(r,o)},e)}function zs(e,t){let r=t.user;return r?{...e,user:r}:e}function Vs(e,t,r){let{request_id:n,message:o}=r;return[e,[g(M,t,n,void 0,v(Et,o))]]}function Ys(e,t,r){let{requestId:n,authentication:o}=r;return[e,[yn(M,t,n,void 0,o)]]}function Qs(e,t,r,n=!0){let{request_id:o,identity:i,user:s,login:a,impersonatePeer:c,gwRequest:d,accessToken:u}=r;d?.id&&(e=_e(e,d.id).state);let m={machine:gn(t.host,\"127.0.0.1\"),...i};if(s&&(m={...m,user:s}),a&&(m={...m,login:a}),c&&(m=zs(m,c)),!m.instance){let[l,R]=Zr(e.ids);m={...m,instance:R},e={...e,ids:l}}let p={...r.options};\"context_compatibility_mode\"in p||(p.context_compatibility_mode=n);try{let l=on(e,m);l&&(Re.warn(`peer ${l} already accepted on source ${JSON.stringify(f(e,l)?.source)}`),q(pn,\"Hello already received once\")),ln(m);let[R,N]=en(e.ids);m=Ws(m,N);let $;[e,$]=Gt({...e,ids:R},t,N,m,d,p),Re.info(`added peer ${$.id} on endpoint ${t.endpoint} with ${JSON.stringify(m)}`);let ee={};u&&(ee.access_token=u);let Ne=Object.values(e.registeredDomains??{}).map(te=>te.info),rt=fn(t,o,$.id,Ne,m,Object.keys(ee).length===0?void 0:ee);return z(e,te=>[te,[rt]],te=>p.context_compatibility_mode?Js(te,t,{request_id:o,peer_id:$.id,identity:m,options:p,destination:Te,domain:M}):[te,[]])}catch(l){return P(t)?[e,[g(M,t,o,void 0,O(l,Jt))]]:[e,[]]}}function Zs(e,t,r){return He(M,e,t,r)}function Xs(e,t,r,n){return xt(M,e,t,r,n)}function ea(e,t,r){return It(M,e,t,r)}function ta(e,t,r){return vt(M,e,t,r)}function ra(e,t,r){return St(M,e,t,r)}function na(e,t,r,n,o=!0,i){switch(r.type){case\"hello\":return Gs(e,t,r,n,e.handler);case\"join\":return Ls(e,t,r);case\"leave\":return Bs(e,t,r);case\"internal/authenticated\":return Qs(e,t,r,o);case\"internal/authentication-failed\":return Vs(e,t,r);case\"internal/authentication-request\":return Ys(e,t,r);case\"create-context\":return Xs(e,t,r,i);case\"update-context\":return Zs(e,t,r);case\"subscribe-context\":return ta(e,t,r);case\"unsubscribe-context\":return ra(e,t,r);case\"destroy-context\":return ea(e,t,r);case\"ping\":return[e,[]];case\"commands/source-removed\":return Ks(e,t,r);case\"create-token\":{let{request_id:s,peer_id:a}=r,c=x(e,a);if(c.identity.user)return[e,[Yr(M,t,s,a,bn(e,{user:c.identity.user}))]];throw j(\"Cannot create token for peer without user\",{})}default:{let s=`Unhandled message ${JSON.stringify(r)}`;return Re.error(s),[e,[g(M,t,r.request_id??-1,r.peer_id,v(mn,s))]]}}}function oa(e,t,r,n,o){let{source:i,body:s}=t;try{return na(e,i,s,r,n,o)}catch(a){return[e,[g(M,i,s.request_id??-1,s.peer_id,O(a,Jt))]]}}var or=class{constructor(t,r,n){this.authenticators=t;this.contextCompatibility=r;this.retainedOverride=n}info(){return{uri:M,description:\"\",version:2}}init(t){return t}destroy(t){return t}handleMessage(t,r){return oa(t,r,this.authenticators,this.contextCompatibility,this.retainedOverride)}};function On(e,t){return new or(e,t?.contextCompatibility??!0,t?.retainedOverride)}function $n(e){let{login:t,secret:r}=e;return t&&(r||r===\"\")?Promise.resolve({type:\"success\",user:t,login:t}):Promise.reject(j(\"Missing login/secret\",{type:\"failure\",message:\"Missing login/secret\"}))}function jn(e){if(e?.method===\"gateway-token\")return e.token}async function ia(e,t){let r=Sn(e,t);switch(r.type){case\"gw-request\":{let n=r[\"gw-request\"];if(n){let o=r[\"impersonate-peer\"];return{type:\"success\",gwRequest:n,impersonatePeer:o}}throw new Error(\"Token is missing the gateway request information\")}case\"authentication\":{let n=r.user;if(n)return{type:\"success\",user:n};throw new Error(\"Token is missing the impersonation information\")}default:throw new Error(`Invalid gateway token type: ${r.type}`)}}var sa=D(\"gateway.auth.impl\"),ir=class{constructor(t,r,n){this.timeout=t;this.processor=n;this.ch=new ve(r)}stop(){this.ch.close()}async authenticate(t){let r=jn(t.authentication);if(r)return await ia(t.signatureKey,r);{let n;return await Promise.race([this.ch.put(()=>new Promise((o,i)=>{let s=t.authentication;sa.debug(`processing authentication ${JSON.stringify(s,ct(\"secret\",\"token\"))}`),this.processor(o,i,s)})),new Promise((o,i)=>{n=setTimeout(()=>{i(\"timeout\")},this.timeout)})]).finally(()=>clearTimeout(n))}}},Gn={timeout:5e3,max_pending_requests:2e4};function Nn(e,t){return new ir(e.timeout??Gn.timeout,e.max_pending_requests??Gn.max_pending_requests,(r,n,o)=>{t.auth(o).then(i=>r(i)).catch(i=>n(i))})}var Ln=D(\"gateway.auth.basic\");async function ca(e,t,r,n){switch(e?.method){case\"secret\":{if(n&&!await n(e.login,e.secret))throw j(\"Invalid login/secret\",{type:\"failure\",message:\"Invalid login/secret\"});let o=await $n(e),i=Ke({user:o.user,exp:Math.floor((Date.now()+r)/1e3)},t);return{...o,accessToken:i}}case\"access-token\":try{let o=e.token,i=dt(o,t).user;return{type:\"success\",login:i,user:i,accessToken:o}}catch(o){throw j(`Invalid or expired token:${Fe(o)}`,{type:\"failure\",message:\"Invalid or expired token: \"+Fe(o)},o)}default:{let o=`Unknown authentication method '${e?.method}'`;throw Ln.debug(o),j(o,{type:\"failure\",message:o})}}}var sr=class{constructor(t,r,n){this.secret=t;this.ttl=r;this.secretVerifier=n}auth(t){return ca(t,this.secret,this.ttl,this.secretVerifier)}};function Jn(e){let t=1e3*(e.ttl??6e4),r=e.secretVerifier;return r&&Ln.debug(\"will use secret verifier\"),Nn(e,new sr(Ee(),t,r))}var I=\"agm\",Fn=`${I}.errors.failure`,En=`${I}.errors.unhandled_message`,Bn=`${I}.errors.unregistration.failure`,Ue=`${I}.errors.invocation.failure`,Kn=`${I}.errors.subscription.failure`,Qe=`${I}.errors.subscription.invalid_subscription`,ar=v(`${I}.peer-removed`,\"Peer has been removed\"),Wn=v(`${I}.method-removed`,\"Method has been removed\"),zn=v(Qe,\"Trying to drop a subscription that wasnt established. Did you mean to return an error instead?\");var y=\"agm-domain\";function ua(e,t,r,n){return{domain:I,type:\"methods-added\",peer_id:e,source_type:n,server_id:t,methods:r}}function dr(e,t,r,n,o){return S(e,ua(t,r,n,o))}function ma(e,t,r){return{domain:I,type:\"methods-removed\",peer_id:e,server_id:t,methods:r}}function ur(e,t,r,n){return S(e,ma(t,r,n))}function pa(e,t,r,n,o,i,s){return{domain:I,type:\"invoke\",invocation_id:e,peer_id:t,method_id:r,caller_id:n,arguments:o,arguments_kv:i,context:s}}function Vn(e,t,r,n,o,i,s,a){return S(e,pa(t,r,n,o,i,s,a))}function fa(e,t,r){return{domain:I,type:\"result\",request_id:e,peer_id:t,result:r}}function Yn(e,t,r,n){return S(e,fa(t,r,n))}function ya(e,t,r,n,o,i,s,a){return{domain:I,type:\"add-interest\",subscription_id:e,peer_id:t,method_id:r,caller_id:n,arguments:o,arguments_kv:i,flags:s,context:a}}function Qn(e,t,r,n,o,i,s,a,c){return S(e,ya(t,r,n,o,i,s,a,c))}function la(e,t,r,n,o){return{domain:I,type:\"remove-interest\",subscription_id:e,peer_id:t,method_id:r,caller_id:n,reason_uri:o.uri,reason:o.message}}function mr(e,t,r,n,o,i){return S(e,la(t,r,n,o,i))}function ga(e,t,r){return{domain:I,type:\"subscribed\",request_id:e,peer_id:t,subscription_id:r}}function Zn(e,t,r,n){return S(e,ga(t,r,n))}function ba(e,t,r,n,o,i){return{domain:I,type:\"event\",peer_id:e,subscription_id:t,oob:r,sequence:n,snapshot:o,data:i}}function pr(e,t,r,n,o,i,s){return S(e,ba(t,r,n,o,i,s))}function Sa(e,t,r){return{domain:I,type:\"subscription-cancelled\",subscription_id:e,peer_id:t,reason_uri:r.uri,reason:r.message}}function fr(e,t,r,n){return S(e,Sa(t,r,n))}function Rt(e,t,r){let{server_id:n,method_id:o,arguments:i,arguments_kv:s}=r;e.id!==t.id&&!Ce(y,e,t)&&q(Ue,\"Unable to invoke methods across different users\"),e[y]?.methods?.[n]?.[o]||q(Ue,`Unable to find method with id ${o} on server id ${n} registered with this peer`),i&&s&&q(Ue,\"Cant use positional and by-name arguments at the same time\")}import{produce as ue}from\"immer\";function eo(e,t,r,n,o){let{server:i,stream:s,method_id:a}=r,c=ue(x(e,i),yr(t,n,s));return e=T(e,i,c),U(c)?[e,[mr(c.source,t,i,a,n,o)]]:[e,[]]}function to(e,t,r){let n=t[y]?.subscriptions,o=t.id,[i,s]=Object.entries(n||{}).reduce(([a,c],[d,u])=>{let[m,p]=eo(a,d,u,o,r);return[m,c.concat(p)]},[e,[]]);return[i,s]}function va(e,t,r){return Object.entries(e).reduce((n,[o,i])=>(t===i.server&&(!r||r.size===0||r.has(i.method_id))?n.removed[o]=i:n.remaining[o]=i,n),{removed:{},remaining:{}})}function wt(e,t,r,n,o){let i=r.id,{removed:s,remaining:a}=va(t[\"agm-domain\"]?.subscriptions||{},i,n),c=Object.entries(s).reduce((d,[u,m])=>{let p;return[e,p]=eo(e,u,m,t.id,o),e},e);return Object.keys(s).length>0?[pe(c,t.id,d=>{Object.keys(a).length>0?d[y].subscriptions=a:d[\"agm-domain\"]&&delete d[\"agm-domain\"].subscriptions}),P(t.source)?Object.keys(s).map(d=>fr(t.source,d,t.id,o)):[]]:[e,[]]}function xa(e,t,r){let{peer_id:n,server_id:o,subscriptionId:i,method_id:s,arguments:a,arguments_kv:c,context:d,flags:u}=r,m=f(t,o);if(m){m=ue(m,R=>{R[y].interests=R[y].interests||{},R[y].interests[i]={subscriber:n,method_id:s}});let p=m.source,l=m[y].methods[o][s];return[T(t,o,m),P(p)?[Qn(p,i,o,s,n,a,c,u,d)]:[Y(C(w(t.ids),n),de(p.node),r)]]}throw j(`unable to find server with id ${o}`,{})}function ro(e,t,r){let{request_id:n,peer_id:o,server_id:i,method_id:s}=t,a=ue(_(e,o,\"agm-domain\"),u=>{u[\"agm-domain\"].subscriptions=u[\"agm-domain\"].subscriptions||{},u[\"agm-domain\"].subscriptions[r]={server:i,method_id:s,request_id:n}}),c=_(e,i,\"agm-domain\");Rt(a,c,t);let d={...t,subscriptionId:r};return xa(a,T(e,o,a),d)}function Ia(e,t,r){let[n,o]=se(e.ids);return ro({...e,ids:n},r,o)}function ha(e,t){let{subscriptionId:r,server_id:n}=t;return f(e,n)?ro(e,t,r):[e,[]]}function no(e,t,r){return P(t)?Ia(e,t,r):ha(e,r)}function oo(e,t,r,n,o,i,s){if(t){let c=t[y]?.subscriptions?.[n]?.request_id,d=t.source;return[T(e,r,ue(t,u=>{let m=u[y];m.subscriptions&&(delete m.subscriptions[n],Object.keys(m.subscriptions).length===0&&delete m.subscriptions)})),P(d)?s?[g(I,d,c,r,o,i)]:[fr(d,n,r,o)]:[]]}else return[e,[]]}var io=D(\"gateway.domains.agm.subscriptions\");function Ra(e,t,r,n,o){let i=f(e,t);if(i){let s=i[y]?.subscriptions?.[r]?.request_id;e=T(e,t,ue(i,c=>{c[y].subscriptions[r].stream=n}));let a=i.source;return U(i)?[e,[Zn(a,s,t,r)]]:[e,[Y(C(w(e.ids),o.peer_id),de(a.node),o)]]}else return[e,[]]}function so(e,t,r){let{subscription_id:n,peer_id:o,stream_id:i}=r;i||q(Qe,\"Invalid or missing stream id\");let s=t[\"agm-domain\"].interests?.[n];if(s){let a=s.subscriber;return e=T(e,o,ue(t,c=>{let d=c[y];d.interests=d.interests||{},d.interests[n]=d.interests[n]||{},d.interests[n].stream=i,d.streams=d.streams||{},d.streams[i]=d.streams[i]||{},d.streams[i][a]=d.streams[i][a]||new Set,d.streams[i][a].add(n)})),Ra(e,a,n,i,r)}else return io.debug(`Subscription accept response ${JSON.stringify(r)} for missing interest`),[e,[]]}function wa(e,t){let{subscription_id:r,peer_id:n,subscriber_id:o}=t,i=ne(e,n,\"agm-domain\");return i?so(e,i,t):(io.warn(`Subscription accept response ${JSON.stringify(t)} from missing peer`),oo(e,f(e,o),o,r,v(Kn,\"Received a response from a missing server\"),null,!0))}function Aa(e,t,r){let{subscription_id:n,peer_id:o}=r,i=_(e,o,\"agm-domain\");return so(e,i,r)}function ao(e,t,r){return P(t)?Aa(e,t,r):wa(e,r)}function yr(e,t,r){return n=>{let o=n[\"agm-domain\"];o&&(o.interests&&(delete o.interests[e],Object.keys(o.interests).length===0&&delete o.interests),r&&o.streams&&(o.streams[r][t].delete(e),o.streams[r][t].size===0&&(delete o.streams[r][t],Object.keys(o.streams[r]).length===0&&(delete o.streams[r],Object.keys(o.streams).length===0&&delete o.streams))))}}function lr(e,t,r,n){let o=r.peer_id,i=n?r.request_id:r.subscription_id,s=_(e,o,\"agm-domain\"),a=s[\"agm-domain\"].interests?.[i];if(a){let c=a.subscriber,d=a.stream,u=f(e,c),m=u.source;if(d||n){e=T(e,o,ue(s,yr(i,c,d)));let p;return[e,p]=oo(e,u,c,i,G(r),r.context,n),u&&!P(m)&&(p=p.concat(Y(C(w(e.ids),o),de(m.node),r))),[e,p]}else return[e,[g(I,t,i,o,zn)]]}else return[e,[g(I,t,i,o,v(Qe,\"Trying to drop a non-existing subscription\"))]]}function Ta(e,t,r,n,o){let i=f(e,r);if(i){let s=i[y]?.interests?.[n];if(s){let a=t.id,c=i.source;return e=T(e,r,ue(i,yr(n,a,s.stream))),[e,[P(c)?mr(c,n,r,s.method_id,a,G(o)):Y(C(w(e.ids),a),de(c.node),o)]]}}}function co(e,t,r,n,o){let i=_(e,r,\"agm-domain\"),s=i[\"agm-domain\"].subscriptions?.[n]?.server;return s||q(Qe,`Unable to find subscription with id ${n} on subscriber id ${r}`),e=T(e,r,ue(i,c=>{let d=c[\"agm-domain\"];d.subscriptions&&(delete d.subscriptions[n],Object.keys(d.subscriptions).length===0&&delete d.subscriptions)})),Ta(e,i,s,n,t)||[e,[]]}function Da(e,t){let{request_id:r,peer_id:n,subscription_id:o}=t;return co(e,t,n,o,r)}function Pa(e,t,r){let{request_id:n,peer_id:o,subscription_id:i}=r,s;return[e,s]=co(e,r,o,i,n),[e,s.concat(h(I,t,n,o))]}function uo(e,t,r){return P(t)?Pa(e,t,r):Da(e,r)}function mo(e,t,r){let{peer_id:n,stream_id:o,sequence:i,snapshot:s,data:a}=r,d=ne(e,n,\"agm-domain\")?.[\"agm-domain\"].streams?.[o]||{},u=new Set;return[e,Object.entries(d).flatMap(([m,p])=>{let R=f(e,m).source,N=[];if(P(R))N=Array.from(p,$=>pr(R,m,$,!1,i,s,a));else{let $=R.node;u.has($)||(u.add($),N=[Y(C(w(e.ids),n),de($),r)])}return N})]}function po(e,t,r){let{peer_id:n,subscription_id:o,sequence:i,snapshot:s,data:a}=r,d=ne(e,n,\"agm-domain\")?.[\"agm-domain\"].interests?.[o].subscriber,u=ne(e,d,\"agm-domain\"),m=u?.source;if(m){let p;if(U(u))p=[pr(m,d,o,!0,i,s,a)];else{let l={type:\"node\",node:m.node};p=[Y(C(w(e.ids),n),l,r)]}return[e,p]}return[e,[]]}import{castDraft as gr,produce as Ze}from\"immer\";function _a(e){let t=(e.restrictions,void 0);return t?{...e,parsedRestrictions:t}:e}function Ca(e){let t={...e};return delete t.parsedRestrictions,t}function Ma(e,t,r){let n=e.parsedRestrictions;return n?ie(n,t,r):!0}function br(e,t,r,n){let{id:o,identity:i}=t,{id:s,identity:a}=n,c=n[y]?.methods?.[o]||{},[d,u]=r.filter(m=>Ma(m,i,a)).reduce(([m,p],l)=>(m=Ze(m,R=>{R[l.id]=gr(l)}),[m,p.concat(Ca(l))]),[c,new Array]);return u.length>0?(n=Ze(n,m=>{m[y].methods=m[y].methods||{},m[y].methods[o]=gr(d)}),[T(e,s,n),U(n)?dr(n.source,s,o,u,t.source.type):[]]):[e,[]]}function fo(e,t){let{peer_id:r,methods:n}=t,o=n.map(a=>_a(a)),i=o.reduce((a,c)=>Ze(a,u=>{u[y].methods=u[y].methods||{},u[y].methods[r]=u[y].methods[r]||{},u[y].methods[r][c.id]=gr(c)}),x(e,r)),s=T(e,r,i);return E(e,y,i).reduce(([a,c],d)=>{let[u,m]=br(a,i,o,d);return[u,c.concat(m)]},[s,[]])}function qa(e,t,r){return fo(e,r)}function ka(e,t,r){let{request_id:n,peer_id:o,methods:i}=r,[s,a]=fo(e,r);return[s,a.concat(dr(t,o,o,i,\"local\"),h(I,t,n,o),k(C(w(e.ids),o),r))]}function yo(e,t,r){return H(t)?qa(e,t,r):ka(e,t,r)}function Sr(e,t,r,n){if(!n&&(n=Object.keys(r[y]?.methods?.[t]??{}),!n||n.length==0))return[pe(e,r.id,i=>{let s=i[y];s.methods&&delete s.methods[t]}),[]];let o;if([r,o]=n.reduce(([i,s],a)=>(i[\"agm-domain\"]?.methods?.[t]?.[a]&&(i=Ze(i,c=>{let d=c[\"agm-domain\"]?.methods;d?.[t]?.[a]&&(delete d[t][a],Object.keys(d[t]).length===0&&delete d[t],Object.keys(d).length===0&&delete c[\"agm-domain\"]?.methods)}),s.add(a)),[i,s]),[r,new Set]),o.size==0)return[e,[]];{let i=x(e,t),s;return[e,s]=wt(e,r,i,o,Wn),U(r)&&(s=s.concat(ur(r.source,r.id,t,Array.from(o)))),[e,s]}}function lo(e,t){let{peer_id:r,methods:n}=t,o=dn(n.reduce((a,c)=>(a[y]?.methods?.[r][c]?a=Ze(a,d=>{delete d[y].methods?.[r][c]}):q(Bn,`Unable to unregister missing method ${c}`),a),x(e,r)),y),[i,s]=[T(e,r,o),new Array];return[i,s]=E(e,y,o).filter(a=>a.id!==r).reduce(([,a],c)=>{let[d,u]=Sr(e,r,c,n);return[d,a.concat(u)]},[i,new Array]),[i,s]}function Ha(e,t){return lo(e,t)}function Ua(e,t,r){let{request_id:n,peer_id:o,methods:i}=r,[s,a]=lo(e,r);return[s,a.concat(ur(t,o,o,i),h(I,t,n,o),k(C(w(e.ids),o),r))]}function go(e,t,r){return H(t)?Ha(e,r):Ua(e,t,r)}import{produce as Xe}from\"immer\";function Oa(e,t,r){let{request_id:n,peer_id:o,server_id:i,invocationId:s,method_id:a,arguments:c,arguments_kv:d,context:u}=t;r=Xe(r,p=>{let l=p[y];l.invocations=l.invocations||{},l.invocations[s]={caller:o,method_id:a,request_id:n}});let m=!U(r);return[T(e,i,r),m?[Y(C(w(e.ids),o),de(r.source.node),t)]:[Vn(r.source,s,i,a,o,c,d,u)]]}function bo(e,t,r,n,o){let{request_id:i,peer_id:s,server_id:a,method_id:c}=t;return o=Xe(o,d=>{let u=d[y];u.calls=u.calls||{},u.calls[i]={callee:a,method_id:c,invocation_id:r}}),Oa(T(e,s,o),{...t,invocationId:r},s===a?o:n)}function $a(e,t,r){let{request_id:n,peer_id:o,server_id:i,invocationId:s}=r,a=ne(e,i,\"agm-domain\");return U(a)?bo(e,r,s,a,_(e,o,\"agm-domain\")):[e,[]]}function ja(e,t,r){let{peer_id:n,server_id:o}=r,i=_(e,o,\"agm-domain\"),s=_(e,n,\"agm-domain\"),[a,c]=se(e.ids);return Rt(s,i,r),bo({...e,ids:a},r,c,i,s)}function So(e,t,r){return H(t)?$a(e,t,r):ja(e,t,r)}function vo(e,t,r,n){let o=n.id,[i,s]=Object.entries(r[y]?.calls??{}).reduce(([c,d],[u,m])=>((m.callee===o?c:d).push([u,m]),[c,d]),[new Array,new Array]);function a([c]){return g(I,t,c,r.id,v(Ue,\"Peer has left while waiting for result\"))}return i.length>0?[pe(e,r.id,c=>{let d=c[y];s.length>0?d.calls=s.reduce((u,[m,p])=>(u=Xe(u,l=>{l[m]=p}),u),{}):delete d.calls}),U(r)?i.map(a):[]]:[e,[]]}function Ga(e,t,r,n,o){let{request_id:i,caller:s,method_id:a}=r,c=f(e,s);if(c&&(c=Xe(c,d=>{d[y]&&d[y].calls&&(delete d[y].calls[i],Object.keys(d[y].calls).length===0&&delete d[y].calls)})),c){e=T(e,s,c);let u=f(e,t)?.[y]?.methods?.[t][a],m=o.success,p=o.failure;return U(c)?m?[e,[Yn(c.source,i,s,m.result)]]:[e,[g(I,c.source,i,s,G(p),p.context)]]:[e,[Y(C(w(e.ids),t),de(c.source.node),n)]]}return[e,[]]}function vr(e,t,r,n,o){let i=f(e,r),s=i?.[y]?.invocations?.[t];if(s)return e=T(e,r,Xe(i,a=>{a[y]?.invocations&&(delete a[y].invocations[t],Object.keys(a[y].invocations).length===0&&delete a[y].invocations)})),Ga(e,r,s,n,o)}function xo(e,t,r){let{invocation_id:n,peer_id:o}=r;return _(e,o,\"agm-domain\"),vr(e,n,o,r,{success:r})??[e,[]]}function Na(e,t,r){return xo(e,t,r)}function La(e,t,r){return xo(e,t,r)}function Io(e,t,r){return P(t)?La(e,t,r):Na(e,t,r)}var xr=D(\"gateway.domains.agm\");function Ja(e,t,r,n){let{identity:o,id:i}=n,s=Object.values(n[y]?.methods?.[i]||{}),a=r.id,c=U(r),d=U(n),u=new Array;c&&u.push(ge(I,t,a,i,o,{local:d})),d&&u.push(ge(I,n.source,i,a,r.identity,{local:c}));let m;return[e,m]=br(e,n,s,r),[e,u.concat(m)]}function Fa(e,t,r){let n=_(e,r,\"agm-domain\");return E(e,\"agm-domain\",n).reduce(([o,i],s)=>{let[a,c]=Ja(o,t,f(o,r),s);return[a,i.concat(c)]},[e,[]])}function ho(e,t,r,n,o){let i=void 0;return e=Z(e,r,y,i),Fa(e,t,r)}function Ea(e,t,r){let{peer_id:n,identity:o,restrictions:i}=r;return W(e,n,y)?[e,[]]:ho(e,t,n,o,i)}function Ba(e,t,r){let{peer_id:n,request_id:o,identity:i,restrictions:s}=r;if(W(e,n,y))return[e,[h(I,t,o,n)]];{let a;[e,a]=ho(e,t,n,i,s);let c=f(e,n),d={...r,type:\"join\"};return c?.options&&(d.options=c.options),[e,a.concat(h(I,t,o,n),k(C(w(e.ids),n),d))]}}function Ka(e,t,r){return H(t)?Ea(e,t,r):Ba(e,t,r)}function Wa(e,t,r,n){let o=x(e,r),i=o.source,s;return[e,s]=z(e,a=>vo(a,i,o,t),a=>wt(a,o,t,void 0,ar),a=>Sr(a,t.id,x(a,o.id))),[e,P(i)?s.concat(be(I,i,r,t.id,n)):s]}function hr(e,t,r){let n=t.id,[o,i]=E(e,y,t).map(s=>s.id).reduce(([s,a],c)=>{let[d,u]=Wa(s,t,c,r);return[d,a.concat(u)]},to(e,t,r));return[F(o,n,y),i]}function za(e,t,r){let{peer_id:n}=r,o=f(e,n);return o?hr(e,o,G(r)):[e,[]]}function Va(e,t,r){let{request_id:n,peer_id:o}=r,[i,s]=hr(e,x(e,o),G(r));return[i,s.concat(h(I,t,n,o),k(C(w(e.ids),o),{...r,type:\"leave\"}))]}function Ya(e,t,r){return H(t)?za(e,t,r):Va(e,t,r)}function Qa(e,t,r){xr.debug(\"removing source from agm domain\");let n=Q(e,t,y),o=n.map(s=>s.id).reduce((s,a)=>F(s,a,y),e),i=n.reduce(([s,a],c)=>{let[d,u]=hr(s,c,ar);return[d,a.concat(u)]},[o,[]]);return xr.debug(\"removed source from agm domain\"),i}function Za(e,t,r){let{request_id:n,peer_id:o}=r;x(e,o);let i=vr(e,n,o,r,{failure:r});return i||lr(e,t,r,!0)}function Xa(e,t,r){switch(r.type){case\"domain/join\":return Ka(e,t,r);case\"domain/leave\":return Ya(e,t,r);case\"register\":return yo(e,t,r);case\"unregister\":return go(e,t,r);case\"call\":return So(e,t,r);case\"yield\":return Io(e,t,r);case\"subscribe\":return no(e,t,r);case\"unsubscribe\":return uo(e,t,r);case\"drop-subscription\":return lr(e,t,r,!1);case\"accepted\":return ao(e,t,r);case\"publish\":return mo(e,t,r);case\"post\":return po(e,t,r);case\"error\":return Za(e,t,r);case\"commands/source-removed\":return Qa(e,t,r);default:return xr.error(`Unhandled message ${JSON.stringify(r)}`),[e,[g(I,t,r.request_id??-1,r.peer_id,v(En,`Unhandled message ${JSON.stringify(r)}`))]]}}var Ir=class{info(){return{uri:I,description:\"\",version:1}}init(t){return t}destroy(t){return t}handleMessage(t,r){let{source:n,body:o}=r;try{return Xa(t,n,o)}catch(i){return P(n)?[t,[g(I,n,o.request_id,o.peer_id,O(i,Fn))]]:[t,[]]}}};function Ro(){return new Ir}var b=\"activity\",wo=`${b}.errors.failure`,Rr=`${b}.errors.registration.failure`,Ao=`${b}.errors.missing_factory`,To=`${b}.errors.factory_already_registered`,Do=`${b}.errors.owner_creation`,Po=`${b}.errors.missing_type`,_o=`${b}.errors.invalid_activity`,wr=`${b}.errors.activity_is_child`,Co=`${b}.errors.invalid_peer`,Mo=`${b}.errors.not_authorized`,qo=`${b}.errors.unhandled_message`,ko=v(`${b}.peer-removed`,\"Peer has been removed\"),Ho=v(`${b}.destroyed`,\"Activity destroyed\");var A=\"activity-domain\";import{produce as Fc}from\"immer\";import{castDraft as tc,produce as le}from\"immer\";function Uo(e,t,r){return t.reduce((n,o)=>le(n,i=>{i.factories||(i.factories={}),i.factories[o]||(i.factories[o]=[]),i.factories[o].push(r)}),e)}function Ar(e,t,r){return t.length>0&&r?t.reduce((n,o)=>le(n,i=>{i.factories&&(i.factories[o]=cn(r,i.factories[o]),i.factories[o].length==0&&delete i.factories[o],Object.keys(i.factories).length===0&&delete i.factories)}),e):e}function Oo(e){return e.factories}function $o(e,t){return e.factories?.[t]}function Oe(e,t){if(t)return e.activities?.[t]}function $e(e,t,r){return t?le(e,n=>{n.activities=n.activities||{},n.activities[t]=r}):e}function jo(e,t){return le(e,r=>{r.activities&&(delete r.activities[t],Object.keys(r.activities).length===0&&delete r.activities)})}function Go(e){return Object.values(e.activities??{})}function At(e,t){if(t)return e.activityTypes?.[t]}function No(e,t,r){return r.reduce((n,o)=>le(n,i=>{i.activityTypes=i.activityTypes||{},i.activityTypes[t]=i.activityTypes[t]||{},i.activityTypes[t][o.name]=tc(o)}),e)}function Lo(e,t,r){return Array.from(r).reduce((n,o)=>le(n,i=>{i.activityTypes&&(i.activityTypes[t]&&(delete i.activityTypes[t][o],Object.keys(i.activityTypes[t]).length===0&&delete i.activityTypes[t]),Object.keys(i.activityTypes).length===0&&delete i.activityTypes)}),e)}function Tr(e,t){let r=new Set;return e.activitySubscribers?.byType?.[t].forEach(r.add),e.activitySubscribers?.all?.forEach(r.add),r}function Jo(e,t,r){return le(e,n=>{n.activitySubscribers=n.activitySubscribers||{},r===!0?(n.activitySubscribers.all=n.activitySubscribers.all||new Set,n.activitySubscribers.all.add(t)):(n.activitySubscribers.byType=n.activitySubscribers.byType||{},n.activitySubscribers.byType[r]=n.activitySubscribers.byType[r]||new Set,n.activitySubscribers.byType[r].add(t))})}function Fo(e,t,r){return le(e,n=>{n.activitySubscribers&&(r===!0?n.activitySubscribers.all&&(n.activitySubscribers.all.delete(t),n.activitySubscribers.all.size===0&&delete n.activitySubscribers.all):n.activitySubscribers.byType&&(n.activitySubscribers.byType[r]&&(n.activitySubscribers.byType[r].delete(t),n.activitySubscribers.byType[r].size===0&&delete n.activitySubscribers.byType[r]),Object.keys(n.activitySubscribers.byType).length===0&&delete n.activitySubscribers.byType),Object.keys(n.activitySubscribers).length===0&&delete n.activitySubscribers)})}function je(e,t){let r=Oe(e,t);if(r)return r;q(_o,`Unable to find activity with id ${t}`)}function Eo(e,t){if(t)return je(e,t)}import{castDraft as fi,produce as X}from\"immer\";import{produce as rc}from\"immer\";function nc(e,t,r){return{domain:b,type:\"peer-factories-added\",peer_id:e,owner_id:t,factories:r}}function Dr(e,t,r,n){return S(e,nc(t,r,n))}function oc(e,t,r){return{domain:b,type:\"peer-factories-removed\",peer_id:e,owner_id:t,factory_ids:r}}function Ko(e,t,r,n){return S(e,oc(t,r,n))}function ic(e,t,r,n,o,i){return{domain:b,type:\"peer-requested\",request_id:e,peer_id:t,peer_factory:r,gateway_token:n,configuration:o,...i}}function Wo(e,t,r,n,o,i,s){return S(e,ic(t,r,n,o,i,s))}function Pr(e,t,r,n){let o={domain:b,type:\"dispose-peer\",peer_id:t,requestor_id:r,reason_uri:n.uri,reason:n.message};return S(e,o)}function sc(e,t,r){return{domain:b,type:\"peer-created\",request_id:e,peer_id:t,created_id:r}}function zo(e,t,r,n){return S(e,sc(t,r,n))}function _r(e,t,r){return S(e,{domain:b,type:\"types-added\",peer_id:t,types:r})}function Vo(e,t,r){return S(e,{domain:b,type:\"types-removed\",peer_id:t,types:r})}function Yo(e,t,r,n){return S(e,{domain:b,type:\"initiated\",request_id:t,peer_id:r,activity_id:n})}function Cr(e){return Object.entries(e).reduce((t,[r,n])=>(t[r]=rc(n,o=>{o.context=o.context.data,o.children&&(o.children=Cr(o.children))}),t),{})}function Tt(e,t){let r=f(e,t);return{peer_id:t,name:r?.peerName,type:r?.peerType}}function ac(e,t,r,n){let o=r.children,i=t.peerName,s=t.peerType,a={domain:b,type:\"joined\",peer_id:t.id,activity_id:r.id,activity_type:r.type,initiator:r.initiator,context_id:r.contextId,owner:Tt(e,r.owner),participants:Array.from(r.readyMembers||[]).map(c=>Tt(e,c)),context_snapshot:n};return i&&(a.peer_name=i),s&&(a.peer_type=s),o&&(a.children=Cr(o)),a}function Dt(e,t,r,n,o){return S(t,ac(e,r,n,o))}function cc(e,t,r){let n=t.peerName,o={domain:b,type:\"activity-joined\",peer_id:e,activity_id:r,joined_id:t.id,joined_type:t.peerType};return n&&(o.peer_name=n),o}function Qo(e,t,r,n){return S(e,cc(t,r,n))}function dc(e,t,r){let n=r.children,o={domain:b,type:\"created\",peer_id:t,activity_id:r.id,context_id:r.contextId,owner:Tt(e,r.owner),participants:Array.from(r.readyMembers||[]).concat(Array.from(r.participants||[])).map(i=>Tt(e,i)),activity_type:r.type,initiator:r.initiator};return n&&(o.children=Cr(n)),o}function Mr(e,t,r,n){return S(t,dc(e,r,n))}function Zo(e,t,r,n,o){let i={domain:b,type:\"left\",peer_id:t,activity_id:n,left_id:r,reason_uri:o.uri,reason:o.message};return S(e,i)}function uc(e,t,r){let n=r.peerName,o=r.peerType,i={domain:b,type:\"owner-changed\",peer_id:e,activity_id:t,owner_id:r.id};return n&&(i.peer_name=n),o&&(i.peer_type=o),i}function Xo(e,t,r,n){return S(e,uc(t,r,n))}function we(e,t,r){return h(b,e,t,r)}function et(e,t,r,n,o){return g(b,e,t,r,n,o)}function ei(e,t,r,n){let o={type:\"activity\",id:e,peer_type:t.type,activity:{id:r.id,\"owner?\":n}};return t.name&&(o.peer_name=t.name),o}function ti(e,t,r,n){let o={type:\"create-peer\",id:e,peer_type:t,clientRequest:n};return r&&(o.peer_name=r),o}import{produce as ri}from\"immer\";function pc(e,t,r){let n=r.reduce((o,i)=>(o[i.peer_type]?o[i.peer_type].push(i):o[i.peer_type]=[i],o),{});return e=T(e,t.id,ri(t,o=>{o[A].factories=o[A].factories||{};for(let[i,s]of Object.entries(n))o[A].factories[i]=s[0]})),e=Uo(e,Object.keys(n),t.id),e}function fc(e,t,r){return E(e,A,t).map(n=>Dr(n.source,n.id,t.id,r))}function ni(e,t){return Array.from(new Set(Object.values(Oo(e)||{}).flat(1))).map(r=>f(e,r)).filter(r=>!!r).filter(r=>Ce(A,t,r)).map(r=>{let n=r[A]?.factories;if(n)return Dr(t.source,t.id,r.id,Object.values(n))}).filter(r=>!!r)}function yc(e,t){let r=t.peer_type;e[A]?.factories?.[r]&&q(To,`Factory for type ${r} is already registered by this peer`)}function oi(e,t,r){let{request_id:n,peer_id:o,factories:i}=r,s=_(e,o,\"activity-domain\");i.forEach(d=>yc(s,d));let a=pc(e,s,i),c=fc(a,s,i);return[a,c.concat(h(b,t,n,o))]}function ii(e,t,r,n){return E(e,A,t).filter(o=>n||o.id!==t.id).map(o=>Ko(o.source,o.id,t.id,r))}function lc(e,t){return Object.values(e||{}).find(r=>r.id===t)}function gc(e,t){let r=e[A]?.factories,[n,o]=t.reduce(([i,s],a)=>{let c=lc(r,a);return c?[ri(i,d=>{d[A]?.factories&&(delete d[A]?.factories?.[c.peer_type],Object.keys(d[A]?.factories).length===0&&delete d[A]?.factories)}),s.concat(c)]:[i,s]},[e,[]]);return[n,o]}function si(e,t,r){let{request_id:n,peer_id:o,factory_ids:i}=r,s=_(e,o,\"activity-domain\"),[a,c]=gc(s,i),d=Ar(T(e,o,a),c.map(m=>m.peer_type),o),u=ii(d,s,c.map(m=>m.id),o);return u=u.concat([h(b,t,n,o)]),[d,u]}function ai(e,t,r,n,o,i,s,a,c){let d={};return s&&(d.activity={id:s.id,type:s.type,context_id:a?.id,\"initial-context\":a?.data}),c&&(d.peer_name=c),Wo(t.source,i,t.id,r.id,o,{...r.configuration,...n},d)}function ci(e,t){let r=t.creationRequest?.clientRequest;r||q(Co,`Unable to find originating request for a ready message from peer ${t.id}`);let n=r.peer_id,o=f(e,n);return[e,[zo(o.source,r.request_id,n,t.id)]]}function di(e,t){let r=Object.values(t[A]?.factories||{});return r?[Ar(e,r.map(n=>n.peer_type),t.id),ii(e,t,r.map(n=>n.id),!1)]:[e,[]]}function bc(e,t,r){let n=f(e,t?.peer_id);return n?[e,[g(b,n.source,t.request_id,n.id,r)]]:[e,[]]}function ui(e,t,r,n){return bc(e,r,t)}function mi(e,t,r){let n=f(e,t??$o(e,r)?.[0]),o=n?.[A]?.factories?.[r];return o||q(Ao,`Unable to find factory owner for type ${r}`),[n,o]}function qr(e,t,r,n,o,i,s){let[a,c]=mi(e,void 0,r.type),d=x(e,t),[u,m]=se(e.ids),p=ei(m,r,n,i),l=zt(e,d.identity,p);return e=$t({...e,ids:u},m,p),{state:e,messages:[ai(e,a,c,s,l,m,n,o,null)],requestId:m}}function Sc(e,t,r,n,o,i,s,a){let[c,d]=mi(e,r,n),u=x(e,t),[m,p]=se(e.ids),l=ti(p,n,o,{request_id:a.request_id,peer_id:a.peer_id}),R=zt(e,u.identity,l);return e=$t({...e,ids:m},p,l),{state:e,messages:[ai(e,c,d,s,R,p,i,fe(e,i?.contextId),o)],requestId:p}}function pi(e,t,r){let{request_id:n,peer_id:o,owner_id:i,peer_type:s,peer_name:a,activity_id:c}=r;_(e,o,\"activity-domain\");let d=Eo(e,c),u=Sc(e,o,i,s,a??s,d,r.configuration,r);return[u.state,u.messages.concat(h(b,t,n,o))]}var yi=D(\"gateway.domains.activity.activities\");function xc(e,t,r){let[n,o]=nt(e.ids),i=ft(r,o,t.initial_context,\"activity\",t.read_permissions,t.write_permissions,o,yt()),[s,a]=Xr(n),c={id:a,type:t.activity_type,contextId:o,initiator:t.peer_id};return c.client_request=t,[{...e,ids:s},c,i]}function li(e,t,r,n){let o=Oe(e,t);if(o){let i=r.id,s=n.activity?.[\"owner?\"],a=fe(e,o.contextId);e=$e(e,o.id,X(o,c=>{c.participants||(c.participants=new Set),c.participants.add(i),s&&(c.owner=r.id),c.gatewayRequests&&(c.gatewayRequests.delete(n.id),c.gatewayRequests.size===0&&delete c.gatewayRequests)})),e=T(e,i,X(r,c=>{c[\"activity-domain\"].member=o.id,c[\"activity-domain\"].reload=n.reload})),e=ke(e,a,i)}return e}function Ic(e,t,r){return ae(e,A).filter(n=>n.identity.user===t).map(n=>_r(n.source,n.id,r))}function hc(e,t,r){return ae(e,A).filter(n=>n.identity.user===t).map(n=>Vo(n.source,n.id,r))}function gi(e,t,r,n,o){let i=_(e,n,\"activity-domain\"),s=i.identity.user;if(s){let a=Ic(e,s,o);return a=a.concat(we(t,r,n)),[No(e,s,o),a]}return[e,[et(b,t,r,n,v(Rr,`Registering peer is missing an user in its identity ${JSON.stringify(i.identity)}`))]]}function bi(e,t,r){let{request_id:n,peer_id:o,types:i}=r,s=_(e,o,\"activity-domain\"),a=s.identity.user;if(a){let c=new Set(i),d=Array.from(new Set(Object.keys(At(e,a)).filter(m=>c.has(m)))),u=hc(e,a,d);return u=u.concat(we(t,n,o)),[Lo(e,a,d),u]}else return[e,[et(t,n,o,v(Rr,`Removing peer is missing an user in its identity ${JSON.stringify(s.identity)}`))]]}function Si(e,t){let r=At(e,t.identity.user);if(r){let n=Object.values(r);return[_r(t.source,t.id,n)]}return[]}function Rc(e,t,r){let n=At(e,t.identity.user)?.[r];return n||q(Po,`Unable to find activity type ${r}`),n}function vi(e,t){let r=e.configuration}function wc(e,t,r,n,o){let{state:i,messages:s,requestId:a}=qr(e.state,r,t,e.activity,n,!0,vi(t,o));return X(e,d=>{d.state=fi(i),d.messages=d.messages.concat(s),d.activity.gatewayRequests=d.activity.gatewayRequests||new Set,d.activity.gatewayRequests.add(a)})}function Ac(e,t,r,n,o){return t?t.reduce((i,s)=>{let{state:a,messages:c,requestId:d}=qr(i.state,r,s,i.activity,n,!1,vi(s,o));return X(e,m=>{m.state=fi(a),m.messages=m.messages.concat(c),m.activity.gatewayRequests=m.activity.gatewayRequests||new Set,m.activity.gatewayRequests.add(d)})},e):e}function xi(e,t,r,n){let{request_id:o,peer_id:i}=r,s=_(e,i,\"activity-domain\"),a=r.activity_type,c=Rc(e,s,a),d=(n||[]).reduce(($,ee)=>{let Ne=`[${ee.type},${ee.name??\"\"}]`;return $[Ne]=ee.configuration||null,$},{}),u=r.types_override;u&&Object.keys(d).length!==0&&q(wr,\"Cannot specify types override and custom configuration at the same time\");let m,p;[e,p,m]=xc(e,r,s);let l=[Yo(t,o,i,p.id)],R={state:e,messages:l,activity:p};R=wc(R,u?.owner_type??c.owner_type,i,m,d);let N=u?.helper_types??c.helper_types;return R=Ac(R,N,i,m,d),{state:e,activity:p,messages:l}=R,e=ut(e,m),e=$e(e,p.id,p),[e,l]}function Tc(e,t,r){if(t[\"ready?\"]){let n=r.id;return kr(e,n,t,r,!0).map(o=>Xo(o.source,o.id,t.id,r))}return[]}function Dc(e,t,r){let n=t.contextId,o=fe(e,n)?.data||{},i=r.id,s=r[A]?.reload;t=X(t,c=>{c.owner=i,c[\"ready?\"]=!0,delete c.clientRequest});let a=[];return s?(a=a.concat(Dt(e,r.source,r,t,o)),a=a.concat(Tc(e,t,r))):(a=a.concat(Mc(e,t,o)),a=a.concat(kc(e,t))),{state:e,activity:t,messages:a}}function Ii(e,t,r){let n=r.id;return e.readyMembers?.has(n)||e.participants?.has(n)||e.owner===n?!0:it(t.identity,e.read_permissions,t.options?.service,r.identity,void 0,r.options?.service)}function Pc(e,t,r,n){let o=t.id;return kr(e,o,r,n,!0).map(i=>Qo(i.source,i.id,t,r.id))}function _c(e,t,r,n,o){let i=x(e,r.owner);return kr(e,t,r,i,o).map(s=>Zo(s.source,s.id,t,r.id,n))}function Cc(e,t,r){let n=r.id;if(t.readyMembers?.has(n)||t.participants?.has(n)||t.owner===n)return!0;{let o=f(e,t.owner);return it(o?.identity,t.write_permissions,!1,r.identity,void 0,!1)}}function Mc(e,t,r){let n=t.owner,o=t.readyMembers;return(n?[n]:[]).concat(Array.from(o||[])).map(i=>f(e,i)).filter(i=>!!i).map(i=>Dt(e,i.source,i,t,r))}function qc(e,t,r){let n=new Set;return r&&n.add(r),t.participants&&t.participants.forEach(n.add),t.readyMembers&&t.readyMembers.forEach(n.add),n}function kr(e,t,r,n,o){let i=new Set;return Tr(e,r.type).forEach(i.add),o&&qc(e,r,n?.id),i.delete(t),Array.from(i).map(s=>f(e,s)).filter(s=>!!s).filter(s=>Ii(r,n,s))}function kc(e,t){let r=t.type,n=f(e,t.owner);return Array.from(Tr(e,r)).map(o=>f(e,o)).filter(o=>!!o).filter(o=>Ii(t,n,o)).map(o=>Mr(e,o.source,o.id,t))}function Hc(e,t,r){let n=r.id,o=t.contextId,i=fe(e,o);t=X(t,a=>{a.readyMembers=a.readyMembers||new Set,a.readyMembers.add(n)});let s=new Array;if(t[\"ready?\"]){let a=t.owner,c=x(e,a);s=s.concat(Pc(e,r,t,c)),s=s.concat(Dt(e,r.source,r,t,i?.data||{}))}return{state:ke(e,i,n),activity:t,messages:s}}function Pt(e){return X(e,t=>{delete t[A]?.member,delete t[A]?.owner})}function hi(e,t,r,n){let o=n.id,i=Oe(e,r);if(i){let s=i.owner===o;i=X(i,u=>{s||(u.readyMembers=u.readyMembers||new Set,u.readyMembers.add(o)),u.participants?.delete(o),u.participants?.size===0&&delete u.participants});let{state:a,activity:c,messages:d}=s?Dc(e,i,n):Hc(e,i,n);return[$e(a,r,c),d]}return[T(e,o,Pt(n)),[Pr(t,o,void 0,Ho)]]}function Uc(e,t,r){return t.reduce(([n,o],i)=>{let s=f(n,i);return s?[T(n,i,Pt(s)),o.concat(Pr(s.source,i,void 0,r))]:[n,o]},[e,[]])}function Oc(e,t){return(t.gatewayRequests?Array.from(t.gatewayRequests):[]).reduce((r,n)=>_e(r,n).state,e)}function $c(e,t){return e=Oc(e,t),e=jo(e,t.id),e=mt(e,t.contextId),e}function Hr(e,t,r){let n=t.clientRequest,o=t.owner,i=t.id,s;[e,s]=z(e,c=>[$c(c,t),[]],c=>{let d=new Set;return o&&d.add(o),t.participants&&t.participants.forEach(d.add),t.readyMembers&&t.readyMembers.forEach(d.add),Uc(c,Array.from(d),r)});let a=f(e,n?.peer_id);return a?[e,s.concat(et(a.source,n?.request_id,n?.peer_id,r))]:[e,s]}function Ri(e,t,r){let{request_id:n,peer_id:o,activity_id:i}=r,s=x(e,o),a=je(e,i);return Cc(e,a,s)?z(e,c=>Hr(c,a,G(r)),c=>[c,[we(t,n,o)]]):[e,[et(t,n,o,v(Mo,\"Not authorized to destroy activity\"))]]}function jc(e,t){let r=je(e,t.id);return Hr(e,r,v(Do,\"Activity owner cannot be created\"))}function wi(e,t){return t[\"owner?\"]?jc(e,t):[e,[]]}function Gc(e,t,r){return{state:e,activity:t,messages:[]}}function Ai(e,t,r){let{request_id:n,peer_id:o,target_id:i,activity_id:s,peer_type:a,peer_name:c}=r;_(e,o,\"activity-domain\");let d=je(e,s),u=X(_(e,i,A),$=>{a&&($.peerType=a),c&&($.peerName=c)}),m=u[A]?.member,p=u[A]?.owner,l=Oe(e,m??p);if(l?.id===s)return[e,[we(t,n,o)]];l&&q(wr,`Peer is already in activity ${l.id}`);let{state:R,messages:N}=Gc(e,d,u);return[R,N.concat(we(t,n,o))]}function Nc(e,t){return X(e,r=>{r.participants&&(r.participants.delete(t),r.participants.size===0&&delete r.participants),r.readyMembers&&(r.readyMembers.delete(t),r.readyMembers.size===0&&delete r.readyMembers)})}function Ti(e,t,r,n){yi.debug(`a participant ${r.id} of activity ${t.id} has left.`);let o=r.id;t=Nc(t,o);let i=t.id,s=_c(e,o,t,n,!0);e=T(e,o,Pt(r)),e=$e(e,i,t);let a;return[e,a]=pt(e,fe(e,t.contextId),o),{state:e,activity:t,messages:s}}function Lc(e,t,r,n,o){let i=r.id;if(yi.debug(`the owner ${i} of activity ${t.id} has left`),o)return Hr(T(e,i,Pt(r)),t,n);{let{state:s,messages:a}=Ti(e,t,r,n);return[s,a]}}function Di(e,t,r){let n=t[A]?.member,o=Oe(e,n);if(o){let i=o.owner,s=t.id,a=o.reloading&&o.reloading.has(s);if(o=X(o,c=>{a&&c.reloading&&(c.reloading.delete(s),c.reloading.size===0&&delete c.reloading)}),i===s)return Lc(e,o,t,r,!a);{let{state:c,messages:d}=Ti(e,o,t,r);return[c,d]}}return[e,[]]}function Pi(e,t,r,n,o,i){return o?e=o.filter(s=>!!s).reduce((s,a)=>i(s,n,a),e):e=i(e,n,!0),[e,[we(t,r,n)]]}function _i(e,t,r){let{request_id:n,peer_id:o,activity_types:i}=r,s=_(e,o,\"activity-domain\"),a;[e,a]=Pi(e,t,n,o,i,Jo);let c=Go(e).filter(d=>d[\"ready?\"]);return a=a.concat((i?c.filter(d=>i.indexOf(d.type)!==-1):c).map(d=>Mr(e,s.source,s.id,d))),[e,a]}function Ci(e,t,r){let{request_id:n,peer_id:o,activity_types:i}=r;return _(e,o,\"activity-domain\"),Pi(e,t,n,o,i,Fo)}var _t=D(\"gateway.domains.activity\");function Ec(e,t,r){let{state:n,removed:o}=_e(e,r.request_id);if(o){let i=o.type;switch(i){case\"activity\":{let s=o.activity;if(s)return wi(n,s);break}case\"create-peer\":return ui(n,G(r),o.clientRequest,o);default:{_t.error(\"Unable to handle error for an unknown incoming request type \"+i);break}}}return[e,[]]}function Bc(e,t){let r=t.creationRequest;if(r){let{peer_name:n,peer_type:o}=r;switch(t=Fc(t,i=>{n&&(i.peerName=n),o&&(i.peerType=o)}),r.type){case\"activity\":return li(e,r.activity?.id,t,r);case\"create-peer\":return T(e,t.id,t)}}return e}function Kc(e,t,r){let{request_id:n,peer_id:o,restrictions:i}=r;if(W(e,o,A))return[e,[h(b,t,n,o)]];let s=void 0;e=Z(e,o,A,s);let a=x(e,o);e=Bc(e,a);let c=new Array;return c=c.concat(st(b,A,e,t,a)),c=c.concat(Si(e,a)),c=c.concat(ni(e,a)),c=c.concat([h(b,t,n,o)]),[e,c]}function Mi(e,t,r,n){return z(e,o=>Di(o,t,r),o=>di(o,t),o=>at(b,A,o,t,r,n))}function Wc(e,t,r){let{request_id:n,peer_id:o}=r,i=_(e,o,\"activity-domain\");return z(e,s=>Mi(s,i,G(r),!1),s=>[s,[h(b,t,n,o)]])}function zc(e,t,r){let n=r.peer_id,o=x(e,n),i=o[A]?.member;return i?hi(e,t,i,o):ci(e,o)}function Vc(e,t){_t.debug(\"removing source from activity domain\");let r=Q(e,t,A),n=r.map(i=>i.id).reduce((i,s)=>F(i,s,A),e),o=r.reduce(([i,s],a)=>{let[c,d]=Mi(i,a,ko,!0);return[c,s.concat(d)]},[n,[]]);return _t.debug(\"removed source from activity domain\"),o}function Yc(e,t,r){switch(r.type){case\"domain/join\":return Kc(e,t,r);case\"domain/leave\":return Wc(e,t,r);case\"ready\":return zc(e,t,r);case\"add-types\":{let{request_id:n,peer_id:o,types:i}=r;return gi(e,t,n,o,i)}case\"remove-types\":return bi(e,t,r);case\"create\":{let{configuration:n,...o}=r;return xi(e,t,o,n)}case\"destroy\":return Ri(e,t,r);case\"subscribe\":return _i(e,t,r);case\"unsubscribe\":return Ci(e,t,r);case\"join-activity\":return Ai(e,t,r);case\"add-peer-factories\":return oi(e,t,r);case\"remove-peer-factories\":return si(e,t,r);case\"create-peer\":return pi(e,t,r);case\"error\":return Ec(e,t,r);case\"update-context\":return He(b,e,t,r);case\"commands/source-removed\":return Vc(e,t);default:return _t.error(`Unhandled message ${JSON.stringify(r)}`),[e,[g(b,t,r.request_id??-1,r.peer_id,v(qo,`Unhandled message ${JSON.stringify(r)}`))]]}}var Ur=class{info(){return{uri:b,description:\"\",version:2}}init(t){return t}destroy(t){return t}handleMessage(t,r){let{source:n,body:o}=r;try{return Yc(t,n,o)}catch(i){return P(n)?[t,[g(b,n,o.request_id,o.peer_id,O(i,wo))]]:[t,[]]}}};function qi(){return new Ur}var K=\"metrics\",Ct=`${K}.errors.failure`,Mt=`${K}.errors.unhandled_message`,Uy=`${K}.errors.bad_identity`,Or=v(`${K}.peer-removed`,\"Peer has been removed\");var Ae=\"metrics-domain\";import{produce as ki}from\"immer\";var Hi=D(\"gateway.domains.metrics\");function Zc(e,t){return[e,[]]}function Xc(e,t){return{system:t.system,service:t.application}}function ed(e,t,r){let{request_id:n,peer_id:o,identity:i,options:s}=r,a=Object.assign({},Xc(t,i),s,i);return W(e,o,Ae)?[e,[h(K,t,n,o)]]:(e=ki(Z(e,o,Ae,void 0),c=>{let d=c.peers[o];d[Ae]={repoId:a}}),[e,[h(K,t,n,o)]])}function jr(e,t,r){let n=t.id;return F(e,n,Ae)}function td(e,t){return Hi.debug(`removing source ${t}`),e=Q(e,t,Ae).reduce((r,n)=>jr(r,n,Or),e),[e,[]]}function rd(e,t,r){let{request_id:n,peer_id:o}=r,i=x(e,o);return[jr(e,i,G(r)),[h(K,t,n,o)]]}function nd(e,t,r){let{peer_id:n,metrics:o}=r;return[ki(e,i=>{}),[]]}function od(e,t,r){switch(r.type){case\"domain/join\":return ed(e,t,r);case\"domain/leave\":return rd(e,t,r);case\"commands/source-removed\":return td(e,t);case\"define\":return nd(e,t,r);case\"publish\":return Zc(e,r);default:return Hi.error(`Unhandled message ${JSON.stringify(r)}`),[e,[g(K,t,r.request_id??-1,r.peer_id,v(Mt,`Unhandled message ${JSON.stringify(r)}`))]]}}var $r=class{info(){return{uri:K,description:\"\",version:1}}init(t){return t}destroy(t){return t=ae(t,Ae).reduce((r,n)=>jr(r,n,Or),t),t}handleMessage(t,r){let{source:n,body:o}=r;try{return od(t,n,o)}catch(i){return P(n)?[t,[g(K,n,o.request_id,o.peer_id,O(i,Ct))]]:[t,[]]}}};function Ui(){return new $r}var L=Te,zy=ye(L),qt=v(`${L}.peer-removed`,\"Peer has been removed\");var Gr=D(\"gateway.domains.context\");function id(e,t,r,n){let o=_(e,r,\"context-domain\"),i=st(L,\"context-domain\",e,t,o).filter(a=>nr(e,a));n&&(i=i.filter(a=>r!==a.body.new_peer_id));let s=n?[]:Cn(Ye(o),e,o);return i.concat(s)}function Oi(e,t,r,n,o,i){let s=void 0,a=Z(e,r,ce,s);return i&&(a=pe(a,r,c=>{c.options&&(delete c.options.context_compatibility_mode,Object.keys(c.options).length===0&&delete c.options)})),[a,id(a,t,r,i)]}function sd(e,t,r){let{request_id:n,peer_id:o,identity:i,restrictions:s}=r,a=r.options?.context_compatibility_mode,c=f(e,o)?.options?.context_compatibility_mode,d=W(e,o,ce);if(d&&!c)return[e,[h(L,t,n,o)]];{let[u,m]=Oi(e,t,o,i,s,d&&c),p=f(u,o),l={...r,type:\"join\"};p?.options&&(l.options=p.options);let R=[];return a||R.push(h(L,t,n,o)),R.push(k(C(w(e.ids),o),l)),[u,m.concat(R)]}}function ad(e,t,r){let{peer_id:n,identity:o,restrictions:i}=r,s=f(e,n)?.options?.context_compatibility_mode;return s&&W(e,n,ce)?[e,[]]:Oi(e,t,n,o,i,s)}function cd(e,t,r){return H(t)?ad(e,t,r):sd(e,t,r)}function dd(e,t,r){let{peer_id:n}=r,o=f(e,n);return o?ht(L,e,o,G(r),!1):[e,[]]}function ud(e,t,r){let{request_id:n,peer_id:o}=r,[i,s]=ht(L,e,x(e,o),G(r),!1);return[i,s.concat([h(L,t,n,o),k(C(w(i.ids),o),{...r,type:\"leave\"})])]}function md(e,t,r){return H(t)?dd(e,t,r):ud(e,t,r)}function pd(e,t,r){Gr.debug(\"removing source from context domain\");let n=Q(e,t,ce),o=n.map(a=>a.id).reduce((a,c)=>F(a,c,ce),e),i={domain:M,type:\"leave\",destination:L,reason_uri:qt.uri,reason:qt.message},s=n.reduce(([a,c],d)=>{let[u,m]=ht(L,a,d,qt,!0),p={...i,peer_id:d.id},l=[k(C(w(e.ids),d.id),p)];return[u,c.concat(m.concat(l))]},[o,[]]);return Gr.debug(\"removed source from context domain\"),s}function fd(e,t,r,n){switch(r.type){case\"domain/join\":return cd(e,t,r);case\"domain/leave\":return md(e,t,r);case\"create-context\":return xt(L,e,t,r,n);case\"update-context\":return He(L,e,t,r);case\"subscribe-context\":return vt(L,e,t,r);case\"unsubscribe-context\":return St(L,e,t,r);case\"destroy-context\":return It(L,e,t,r);case\"commands/source-removed\":return pd(e,t,r);default:return Gr.error(`Unhandled message ${JSON.stringify(r)}`),[e,[g(K,t,r.request_id??-1,r.peer_id,v(Mt,`Unhandled message ${JSON.stringify(r)}`))]]}}var Nr=class{constructor(t){this.retainedOverride=t}destroy(t){return t}handleMessage(t,r){let{source:n,body:o}=r;try{return fd(t,n,o,this.retainedOverride)}catch(i){return P(n)?[t,[g(K,n,o.request_id,o.peer_id,O(i,Ct))]]:[t,[]]}}info(){return{uri:L,description:\"\",version:3}}init(t){return t}};function $i(e){return new Nr(e?.retainedOverride)}var V=\"bus\",ji=`${V}.errors.failure`,Gi=`${V}.errors.unhandled_message`;var J=\"bus-domain\";import{produce as Ji}from\"immer\";function Ni(e,t,r,n,o){return S(e,{domain:V,type:\"event\",peer_id:t,subscription_id:r,\"publisher-identity\":n,data:o})}function Li(e,t,r,n){return S(e,{domain:V,type:\"subscribed\",request_id:t,peer_id:r,subscription_id:n})}var Jr=D(\"gateway.domains.bus\");function ld(e,t,r){let{peer_id:n,restrictions:o}=r;return W(e,n,J)?[e,[]]:[Z(e,n,\"bus-domain\",void 0),[]]}function gd(e,t,r){let{request_id:n,peer_id:o,restrictions:i}=r;if(W(e,o,J))return[e,[h(V,t,n,o)]];e=Z(e,o,J,void 0);let s=f(e,o),a={...r,type:\"join\",options:s?.options};return[e,[h(V,t,n,o),k(C(w(e.ids),o),a)]]}function bd(e,t,r){return H(t)?ld(e,t,r):gd(e,t,r)}function Sd(e,t){return Jr.debug(`removing source ${t}`),e=Q(e,t,J).reduce((r,n)=>F(r,n.id,J),e),[e,[]]}function vd(e,t,r){let{peer_id:n}=r;return f(e,n)?[F(e,n,J),[]]:[e,[]]}function xd(e,t,r){let{request_id:n,peer_id:o}=r;return[F(e,o,J),[h(V,t,n,o),k(C(w(e.ids),o),{...r,type:\"leave\"})]]}function Id(e,t,r){return H(t)?vd(e,t,r):xd(e,t,r)}function hd(e){return e.map(t=>[t,Object.entries(t[J]?.subscriptions||{})]).flatMap(([t,r])=>r.map(([n,o])=>({peer:t,subscription:[n,o]})))}function Rd({topic:e,topicRepattern:t},r){if(t){let n=r.match(t);return n!==null&&r===n[0]}else return e===r}function wd(e,t){return!e||!t||e===t}function Ad(e,t,[,r]){return Rd(r,e)&&wd(r.routingKey,t)}function Td(e,t){if(e){let r=t.identity;for(let[n,o]of Object.entries(e))if(r[n]!==o)return!1}return!0}function Fi(e,t,r){let{data:n}=t;if(n){let{topic:o,routing_key:i,peer_id:s,target_identity:a}=t,c=l=>Ad(o,i,l),d=l=>Td(a,l),u=r.identity,m=new Set,p=hd(E(e,J,r,!0).filter(d)).filter(({subscription:l})=>c(l)).reduce((l,{peer:R,subscription:N})=>{let $=R.source,ee=R.id,[Ne]=N,rt=P($)?Ni($,ee,Ne,u,n):function(){if(s!==ee){let te=$.node;if(m.has(te)){m.add(te);let Vi={type:\"node\",node:te};return Y(C(w(e.ids),s),Vi,t)}}}();return rt?l.concat(rt):l},[]);return[e,p]}return[e,[]]}function Dd(e,t){let{peer_id:r}=t,n=x(e,r);return n?Fi(e,t,n):[e,[]]}function Pd(e,t){let{peer_id:r}=t,n=f(e,r);return n?Fi(e,t,n):[e,[]]}function _d(e,t,r){return P(t)?Dd(e,r):Pd(e,r)}function Cd(e){return e.indexOf(\">\")!==-1||e.indexOf(\"*\")!==-1}function Md(e){return new RegExp(e.replace(/\\./g,\"\\\\.\").replace(/\\*/g,\"[a-zA-Z_0-9]+\").replace(/>/g,\".*\"),\"g\")}function Ei(e,t,r,n){let{topic:o,routing_key:i,request_id:s,peer_id:a}=t,c=n.source;n=Ji(n,u=>{u[J].subscriptions=u[J]?.subscriptions||{};let m={topic:o,routingKey:i};u[J].subscriptions[r]=m,Cd(o)&&(u[J].subscriptions[r].topicRepattern=Md(o))});let d={...t,subscription_id:r};return[T(e,a,n),P(c)?[Li(c,s,a,r),k(C(w(e.ids),a),d)]:[]]}function qd(e,t,r){let[n,o]=se(e.ids),i=r.peer_id,s=_(e,i,\"bus-domain\");return Ei({...e,ids:n},r,o,s)}function kd(e,t,r){let{subscription_id:n,peer_id:o}=r,i=ne(e,o,\"bus-domain\");return i?Ei(e,r,n,i):[e,[]]}function Hd(e,t,r){return P(t)?qd(e,t,r):kd(e,t,r)}function Bi(e,t,r){let{request_id:n,peer_id:o,subscription_id:i}=t,s=r.source;return r=Ji(r,a=>{a[J]?.subscriptions&&delete a[J]?.subscriptions[i]}),[T(e,o,r),P(s)?[h(V,s,n,o),k(C(w(e.ids),o),t)]:[]]}function Ud(e,t,r){let n=_(e,r.peer_id,\"bus-domain\");return Bi(e,r,n)}function Od(e,t){let r=f(e,t.peer_id);return r?Bi(e,t,r):[e,[]]}function $d(e,t,r){return P(t)?Ud(e,t,r):Od(e,r)}function jd(e,t,r){switch(r.type){case\"domain/join\":return bd(e,t,r);case\"domain/leave\":return Id(e,t,r);case\"commands/source-removed\":return Sd(e,t);case\"publish\":return _d(e,t,r);case\"subscribe\":return Hd(e,t,r);case\"unsubscribe\":return $d(e,t,r);default:return Jr.error(`Unhandled message ${JSON.stringify(r)}`),[e,[g(V,t,r.request_id??-1,r.peer_id,v(Gi,`Unhandled message ${JSON.stringify(r)}`))]]}}var Lr=class{info(){return{uri:V,description:\"\",version:1}}init(t){return t}destroy(t){return t}handleMessage(t,r){let{source:n,body:o}=r;try{return jd(t,n,o)}catch(i){return Pe(i)||Jr.error(`Error processing message ${JSON.stringify(r)}`,i),[t,[g(V,n,o.request_id,o.peer_id,O(i,ji))]]}}};function Ki(){return new Lr}var Gd=D(\"gateway.local.client\");function Wi(e,t,r){return{type:\"local\",receive:async n=>{try{e(r,n)}catch(o){Gd.error(\"error while invoking the client callback\",o)}},endpoint:t.localIp??\"127.0.0.1\"}}var Fr=D(\"gateway.scavenger\");function Nd(e,t,r){Fr.trace(`running client scavenger. collecting everything older than ${r}`);for(let[n,o]of Object.entries(e))o.lastAccess0&&(Fr.info(`clients inactive for ${n} seconds will be scavenged`),this.cancel=setInterval(async()=>{await this.scavengeClients()},1e3))}async scavengeClients(){if(!this.scavenging)try{this.scavenging=!0;let t=Date.now()-this.inactiveSeconds*1e3;await Nd(this.clients,this.node,t)}finally{this.scavenging=!1}}stop(){clearTimeout(this.cancel)}};var zi=\"0.3.0-beta\";var Ge=D(\"gateway\");function Ld(e,t,r,n,o){e[r]={source:n,lastAccess:Date.now(),onScavenge:o},t.addSource(n)}function Er(e,t,r){Ge.info(`removing client for key ${r}`);let n=e[r].source;delete e[r];try{t.removeSource(n)}catch(o){Ge.error(`Unable to remove client for ${r}`,o)}}function Jd(e){let t=e?.basic??{};return{default:\"basic\",available:{basic:Jn(t)}}}function Br(e){return e instanceof Array||Array.isArray(e)?e.map(Br):e?.constructor===Object?Object.keys(e).reduce((t,r)=>(t[r]=Br(e[r]),t),{}):e===void 0?null:e}var Fd=100,kt=class{constructor(t){this.config=t;this.cnt=0}doStart(t){let r=Jd(t.authentication),n=t.default_context_lifetime,o=n===\"retained\"?void 0:n??\"ref-counted\",i=[Ro(),qi(),Ki(),$i({retainedOverride:o}),Ui(),On(r,{retainedOverride:o})],s=un(i,{signingKey:t.token?.key}),a={},c=new tt(a,s,t.clients?.inactive_seconds??60);return Promise.resolve({config:t,auth:r,node:s,clients:a,scavenger:c})}async startGateway(t){return await this.doStart(t)}async start(){let t=this.config;return Ge.info(`starting gateway with configuration ${JSON.stringify(t,ct(\"token.key\"))}`),this.gateway=await this.startGateway(t),this.gateway}async doStop(t){Ge.info(`stopping gateway ${t}`),t.scavenger.stop(),t.node.close(),Object.values(t.auth.available).map(r=>r.stop())}async stop(){this.gateway&&(await this.doStop(this.gateway),delete this.gateway)}info(){return{endpoint:\"local\",version:zi}}async connect(t){if(!this.gateway)throw new Error(\"cannot connect local client (no gateway) did you call start?\");let r=this.gateway.config.clients?.buffer_size??Fd;Ge.info(`local client connected, buffer-size: ${r}`);let n=`local:${++this.cnt}`,o=this.gateway,i=new class{disconnect(){return Er(o.clients,o.node,n),Promise.resolve(!0)}send(a){Ge.debug(\"processing incoming message from local client\");let c=o.clients[n];if(a.type===\"ping\")c.lastAccess=Date.now();else{let d=c.source,u=Br(a);o.node.message({origin:\"local\",source:d,body:u})}}},s=Wi(t,o,i);return Ld(o.clients,o.node,n,s),i}};var Kr=class extends kt{constructor(t){super(t)}};function Ed(e){return new Kr(e)}var ig={configure_logging:Ut,create:Ed};export{Ut as configure_logging,Ed as create,ig as default};\n//# sourceMappingURL=browser.js.map\n",null,null,"import { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = require('object-keys');\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bind/callBound');\nvar toObject = Object;\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = toObject(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = toObject(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind.apply(getPolyfill());\n// eslint-disable-next-line no-unused-vars\nvar bound = function assign(target, source1) {\n\treturn polyfill(Object, arguments);\n};\n\ndefineProperties(bound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = bound;\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar setFunctionName = require('set-function-name');\nvar $TypeError = require('es-errors/type');\n\nvar $Object = Object;\n\nmodule.exports = setFunctionName(function flags() {\n\tif (this == null || this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.unicodeSets) {\n\t\tresult += 'v';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n}, 'get flags', true);\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& typeof RegExp.prototype.dotAll === 'boolean'\n\t\t\t&& typeof RegExp.prototype.hasIndices === 'boolean'\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (obj === global) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('.').listGetNode} */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\tfor (; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('.').listGet} */\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('.').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('.').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('.').listHas} */\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @type {WeakMap} */ var $wm;\n\t/** @type {Map} */ var $m;\n\t/** @type {import('.').RootNode} */ var $o;\n\n\t/** @type {import('.').Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar hasOwn = require('hasown');\nvar channel = require('side-channel')();\n\nvar $TypeError = require('es-errors/type');\n\nvar SLOT = {\n\tassert: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tchannel.assert(O);\n\t\tif (!SLOT.has(O, slot)) {\n\t\t\tthrow new $TypeError('`' + slot + '` is not present on `O`');\n\t\t}\n\t},\n\tget: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn slots && slots['$' + slot];\n\t},\n\thas: function (O, slot) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\treturn !!slots && hasOwn(slots, '$' + slot);\n\t},\n\tset: function (O, slot, V) {\n\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\tthrow new $TypeError('`O` is not an object');\n\t\t}\n\t\tif (typeof slot !== 'string') {\n\t\t\tthrow new $TypeError('`slot` must be a string');\n\t\t}\n\t\tvar slots = channel.get(O);\n\t\tif (!slots) {\n\t\t\tslots = {};\n\t\t\tchannel.set(O, slots);\n\t\t}\n\t\tslots['$' + slot] = V;\n\t}\n};\n\nif (Object.freeze) {\n\tObject.freeze(SLOT);\n}\n\nmodule.exports = SLOT;\n","'use strict';\n\n/** @const */\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Map) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Map is always truthy here\n\t\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar SLOT = require('internal-slot');\n\nvar $SyntaxError = SyntaxError;\nvar $StopIteration = typeof StopIteration === 'object' ? StopIteration : null;\n\nmodule.exports = function getStopIterationIterator(origIterator) {\n\tif (!$StopIteration) {\n\t\tthrow new $SyntaxError('this environment lacks StopIteration');\n\t}\n\n\tSLOT.set(origIterator, '[[Done]]', false);\n\n\tvar siIterator = {\n\t\tnext: function next() {\n\t\t\tvar iterator = SLOT.get(this, '[[Iterator]]');\n\t\t\tvar done = SLOT.get(iterator, '[[Done]]');\n\t\t\ttry {\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: done ? void undefined : iterator.next()\n\t\t\t\t};\n\t\t\t} catch (e) {\n\t\t\t\tSLOT.set(iterator, '[[Done]]', true);\n\t\t\t\tif (e !== $StopIteration) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t\tvalue: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n\n\tSLOT.set(siIterator, '[[Iterator]]', origIterator);\n\n\treturn siIterator;\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar strValue = String.prototype.valueOf;\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\tstrValue.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar strClass = '[object String]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\n};\n","'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Set) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$setHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Set is always truthy here\n\t\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\n/* eslint global-require: 0 */\n// the code is structured this way so that bundlers can\n// alias out `has-symbols` to `() => true` or `() => false` if your target\n// environments' Symbol capabilities are known, and then use\n// dead code elimination on the rest of this module.\n//\n// Similarly, `isarray` can be aliased to `Array.isArray` if\n// available in all target environments.\n\nvar isArguments = require('is-arguments');\nvar getStopIterationIterator = require('stop-iteration-iterator');\n\nif (require('has-symbols')() || require('has-symbols/shams')()) {\n\tvar $iterator = Symbol.iterator;\n\t// Symbol is available natively or shammed\n\t// natively:\n\t// - Chrome >= 38\n\t// - Edge 12-14?, Edge >= 15 for sure\n\t// - FF >= 36\n\t// - Safari >= 9\n\t// - node >= 0.12\n\tmodule.exports = function getIterator(iterable) {\n\t\t// alternatively, `iterable[$iterator]?.()`\n\t\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\n\t\t\treturn iterable[$iterator]();\n\t\t}\n\t\tif (isArguments(iterable)) {\n\t\t\t// arguments objects lack Symbol.iterator\n\t\t\t// - node 0.12\n\t\t\treturn Array.prototype[$iterator].call(iterable);\n\t\t}\n\t};\n} else {\n\t// Symbol is not available, native or shammed\n\tvar isArray = require('isarray');\n\tvar isString = require('is-string');\n\tvar GetIntrinsic = require('get-intrinsic');\n\tvar $Map = GetIntrinsic('%Map%', true);\n\tvar $Set = GetIntrinsic('%Set%', true);\n\tvar callBound = require('call-bind/callBound');\n\tvar $arrayPush = callBound('Array.prototype.push');\n\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\n\tvar $stringSlice = callBound('String.prototype.slice');\n\n\tvar advanceStringIndex = function advanceStringIndex(S, index) {\n\t\tvar length = S.length;\n\t\tif ((index + 1) >= length) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar first = $charCodeAt(S, index);\n\t\tif (first < 0xD800 || first > 0xDBFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar second = $charCodeAt(S, index + 1);\n\t\tif (second < 0xDC00 || second > 0xDFFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\treturn index + 2;\n\t};\n\n\tvar getArrayIterator = function getArrayIterator(arraylike) {\n\t\tvar i = 0;\n\t\treturn {\n\t\t\tnext: function next() {\n\t\t\t\tvar done = i >= arraylike.length;\n\t\t\t\tvar value;\n\t\t\t\tif (!done) {\n\t\t\t\t\tvalue = arraylike[i];\n\t\t\t\t\ti += 1;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t};\n\n\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable, noPrimordialCollections) {\n\t\tif (isArray(iterable) || isArguments(iterable)) {\n\t\t\treturn getArrayIterator(iterable);\n\t\t}\n\t\tif (isString(iterable)) {\n\t\t\tvar i = 0;\n\t\t\treturn {\n\t\t\t\tnext: function next() {\n\t\t\t\t\tvar nextIndex = advanceStringIndex(iterable, i);\n\t\t\t\t\tvar value = $stringSlice(iterable, i, nextIndex);\n\t\t\t\t\ti = nextIndex;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: nextIndex > iterable.length,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// es6-shim and es-shims' es-map use a string \"_es6-shim iterator_\" property on different iterables, such as MapIterator.\n\t\tif (noPrimordialCollections && typeof iterable['_es6-shim iterator_'] !== 'undefined') {\n\t\t\treturn iterable['_es6-shim iterator_']();\n\t\t}\n\t};\n\n\tif (!$Map && !$Set) {\n\t\t// the only language iterables are Array, String, arguments\n\t\t// - Safari <= 6.0\n\t\t// - Chrome < 38\n\t\t// - node < 0.12\n\t\t// - FF < 13\n\t\t// - IE < 11\n\t\t// - Edge < 11\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\tif (iterable != null) {\n\t\t\t\treturn getNonCollectionIterator(iterable, true);\n\t\t\t}\n\t\t};\n\t} else {\n\t\t// either Map or Set are available, but Symbol is not\n\t\t// - es6-shim on an ES5 browser\n\t\t// - Safari 6.2 (maybe 6.1?)\n\t\t// - FF v[13, 36)\n\t\t// - IE 11\n\t\t// - Edge 11\n\t\t// - Safari v[6, 9)\n\n\t\tvar isMap = require('is-map');\n\t\tvar isSet = require('is-set');\n\n\t\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\n\t\tvar $mapForEach = callBound('Map.prototype.forEach', true);\n\t\tvar $setForEach = callBound('Set.prototype.forEach', true);\n\t\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \"if is not node\"\n\n\t\t\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\n\t\t\t// returns a value, or throws a StopIteration object. These browsers\n\t\t\t// do not have any other mechanism for iteration.\n\t\t\tvar $mapIterator = callBound('Map.prototype.iterator', true);\n\t\t\tvar $setIterator = callBound('Set.prototype.iterator', true);\n\t\t}\n\t\t// Firefox 27-35, and some older es6-shim versions, use a string \"@@iterator\" property\n\t\t// this returns a proper iterator object, so we should use it instead of forEach.\n\t\t// newer es6-shim versions use a string \"_es6-shim iterator_\" property.\n\t\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\n\t\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\n\n\t\tvar getCollectionIterator = function getCollectionIterator(iterable) {\n\t\t\tif (isMap(iterable)) {\n\t\t\t\tif ($mapIterator) {\n\t\t\t\t\treturn getStopIterationIterator($mapIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($mapAtAtIterator) {\n\t\t\t\t\treturn $mapAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($mapForEach) {\n\t\t\t\t\tvar entries = [];\n\t\t\t\t\t$mapForEach(iterable, function (v, k) {\n\t\t\t\t\t\t$arrayPush(entries, [k, v]);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(entries);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isSet(iterable)) {\n\t\t\t\tif ($setIterator) {\n\t\t\t\t\treturn getStopIterationIterator($setIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($setAtAtIterator) {\n\t\t\t\t\treturn $setAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($setForEach) {\n\t\t\t\t\tvar values = [];\n\t\t\t\t\t$setForEach(iterable, function (v) {\n\t\t\t\t\t\t$arrayPush(values, v);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(values);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\n\t\t};\n\t}\n}\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $ArrayBuffer = GetIntrinsic('%ArrayBuffer%', true);\n/** @type {undefined | ((receiver: ArrayBuffer) => number) | ((receiver: unknown) => never)} */\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\nvar $toString = callBound('Object.prototype.toString');\n\n// in node 0.10, ArrayBuffers have no prototype methods, but have an own slot-checking `slice` method\nvar abSlice = !!$ArrayBuffer && !$byteLength && new $ArrayBuffer(0).slice;\nvar $abSlice = !!abSlice && callBind(abSlice);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength || $abSlice\n\t? function isArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\tif ($byteLength) {\n\t\t\t\t// @ts-expect-error no idea why TS can't handle the overload\n\t\t\t\t$byteLength(obj);\n\t\t\t} else {\n\t\t\t\t// @ts-expect-error TS chooses not to type-narrow inside a closure\n\t\t\t\t$abSlice(obj, 0);\n\t\t\t}\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: $ArrayBuffer\n\t\t// in node 0.8, ArrayBuffers have no prototype or own methods, but also no Symbol.toStringTag\n\t\t? function isArrayBuffer(obj) {\n\t\t\treturn $toString(obj) === '[object ArrayBuffer]';\n\t\t}\n\t\t: function isArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\t\treturn false;\n\t\t};\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\n\nvar $byteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength\n\t? function isSharedArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t$byteLength(obj);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: function isSharedArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\treturn false;\n\t};\n","'use strict';\n\nvar numToStr = Number.prototype.toString;\nvar tryNumberObject = function tryNumberObject(value) {\n\ttry {\n\t\tnumToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar numClass = '[object Number]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isNumberObject(value) {\n\tif (typeof value === 'number') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryNumberObject(value) : toStr.call(value) === numClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $boolToStr = callBound('Boolean.prototype.toString');\nvar $toString = callBound('Object.prototype.toString');\n\nvar tryBooleanObject = function booleanBrandCheck(value) {\n\ttry {\n\t\t$boolToStr(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar boolClass = '[object Boolean]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isBoolean(value) {\n\tif (typeof value === 'boolean') {\n\t\treturn true;\n\t}\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : $toString(value) === boolClass;\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = require('has-symbols')();\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (toStr.call(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar $BigInt = typeof BigInt !== 'undefined' && BigInt;\n\nmodule.exports = function hasNativeBigInts() {\n\treturn typeof $BigInt === 'function'\n\t\t&& typeof BigInt === 'function'\n\t\t&& typeof $BigInt(42) === 'bigint' // eslint-disable-line no-magic-numbers\n\t\t&& typeof BigInt(42) === 'bigint'; // eslint-disable-line no-magic-numbers\n};\n","'use strict';\n\nvar hasBigInts = require('has-bigints')();\n\nif (hasBigInts) {\n\tvar bigIntValueOf = BigInt.prototype.valueOf;\n\tvar tryBigInt = function tryBigIntObject(value) {\n\t\ttry {\n\t\t\tbigIntValueOf.call(value);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t}\n\t\treturn false;\n\t};\n\n\tmodule.exports = function isBigInt(value) {\n\t\tif (\n\t\t\tvalue === null\n\t\t\t|| typeof value === 'undefined'\n\t\t\t|| typeof value === 'boolean'\n\t\t\t|| typeof value === 'string'\n\t\t\t|| typeof value === 'number'\n\t\t\t|| typeof value === 'symbol'\n\t\t\t|| typeof value === 'function'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof value === 'bigint') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn tryBigInt(value);\n\t};\n} else {\n\tmodule.exports = function isBigInt(value) {\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\n\nvar exported;\n\nif (!$WeakMap) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isWeakMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x, $mapHas);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x, $setHas);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $WeakMap is always truthy here\n\t\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar isString = require('is-string');\nvar isNumber = require('is-number-object');\nvar isBoolean = require('is-boolean-object');\nvar isSymbol = require('is-symbol');\nvar isBigInt = require('is-bigint');\n\n// eslint-disable-next-line consistent-return\nmodule.exports = function whichBoxedPrimitive(value) {\n\t// eslint-disable-next-line eqeqeq\n\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\treturn null;\n\t}\n\tif (isString(value)) {\n\t\treturn 'String';\n\t}\n\tif (isNumber(value)) {\n\t\treturn 'Number';\n\t}\n\tif (isBoolean(value)) {\n\t\treturn 'Boolean';\n\t}\n\tif (isSymbol(value)) {\n\t\treturn 'Symbol';\n\t}\n\tif (isBigInt(value)) {\n\t\treturn 'BigInt';\n\t}\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\n\nvar $WeakSet = GetIntrinsic('%WeakSet%', true);\n\nvar $setHas = callBound('WeakSet.prototype.has', true);\n\nif ($setHas) {\n\tvar $mapHas = callBound('WeakMap.prototype.has', true);\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isWeakSet(x) {\n\t\tif (!x || typeof x !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t$setHas(x, $setHas);\n\t\t\tif ($mapHas) {\n\t\t\t\ttry {\n\t\t\t\t\t$mapHas(x, $mapHas);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't figure out that $WeakSet is always truthy here\n\t\t\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\n\t\t} catch (e) {}\n\t\treturn false;\n\t};\n} else {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\tmodule.exports = function isWeakSet(x) {\n\t\t// `WeakSet` does not exist, or does not have a `has` method\n\t\treturn false;\n\t};\n}\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar isMap = require('is-map');\nvar isSet = require('is-set');\nvar isWeakMap = require('is-weakmap');\nvar isWeakSet = require('is-weakset');\n\n/** @type {import('.')} */\nmodule.exports = function whichCollection(/** @type {unknown} */ value) {\n\tif (value && typeof value === 'object') {\n\t\tif (isMap(value)) {\n\t\t\treturn 'Map';\n\t\t}\n\t\tif (isSet(value)) {\n\t\t\treturn 'Set';\n\t\t}\n\t\tif (isWeakMap(value)) {\n\t\t\treturn 'WeakMap';\n\t\t}\n\t\tif (isWeakSet(value)) {\n\t\t\treturn 'WeakSet';\n\t\t}\n\t}\n\treturn false;\n};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\n/** @type {(O: object) => string} */\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {(receiver: import('.').TypedArray) => string | typeof Uint8Array.prototype.slice.call | typeof Uint8Array.prototype.set.call} Getter */\n/** @type {{ [k in `\\$${import('.').TypedArrayName}`]?: Getter } & { __proto__: null }} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(fn);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = $slice(typedArray, 1);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t// eslint-disable-next-line no-extra-parens\n\t\t/** @type {Record<`\\$${TypedArrayName}`, Getter>} */ /** @type {any} */ (cache),\n\t\t/** @type {(getter: typeof cache, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error TODO: fix\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = $slice(name, 1);\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\n\nvar isArrayBuffer = require('is-array-buffer');\n\n/** @type {import('.')} */\nmodule.exports = function byteLength(ab) {\n\tif (!isArrayBuffer(ab)) {\n\t\treturn NaN;\n\t}\n\treturn $byteLength ? $byteLength(ab) : ab.byteLength;\n}; // in node < 0.11, byteLength is an own nonconfigurable property\n","'use strict';\n\nvar assign = require('object.assign');\nvar callBound = require('call-bind/callBound');\nvar flags = require('regexp.prototype.flags');\nvar GetIntrinsic = require('get-intrinsic');\nvar getIterator = require('es-get-iterator');\nvar getSideChannel = require('side-channel');\nvar is = require('object-is');\nvar isArguments = require('is-arguments');\nvar isArray = require('isarray');\nvar isArrayBuffer = require('is-array-buffer');\nvar isDate = require('is-date-object');\nvar isRegex = require('is-regex');\nvar isSharedArrayBuffer = require('is-shared-array-buffer');\nvar objectKeys = require('object-keys');\nvar whichBoxedPrimitive = require('which-boxed-primitive');\nvar whichCollection = require('which-collection');\nvar whichTypedArray = require('which-typed-array');\nvar byteLength = require('array-buffer-byte-length');\n\nvar sabByteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\nvar $getTime = callBound('Date.prototype.getTime');\nvar gPO = Object.getPrototypeOf;\nvar $objToString = callBound('Object.prototype.toString');\n\nvar $Set = GetIntrinsic('%Set%', true);\nvar $mapHas = callBound('Map.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSize = callBound('Map.prototype.size', true);\nvar $setAdd = callBound('Set.prototype.add', true);\nvar $setDelete = callBound('Set.prototype.delete', true);\nvar $setHas = callBound('Set.prototype.has', true);\nvar $setSize = callBound('Set.prototype.size', true);\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\nfunction setHasEqualElement(set, val1, opts, channel) {\n var i = getIterator(set);\n var result;\n while ((result = i.next()) && !result.done) {\n if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\n // Remove the matching element to make sure we do not check that again.\n $setDelete(set, result.value);\n return true;\n }\n }\n\n return false;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\nfunction findLooseMatchingPrimitives(prim) {\n if (typeof prim === 'undefined') {\n return null;\n }\n if (typeof prim === 'object') { // Only pass in null as object!\n return void 0;\n }\n if (typeof prim === 'symbol') {\n return false;\n }\n if (typeof prim === 'string' || typeof prim === 'number') {\n // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\n return +prim === +prim; // eslint-disable-line no-implicit-coercion\n }\n return true;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = $mapGet(b, altValue);\n var looseOpts = assign({}, opts, { strict: false });\n if (\n (typeof curB === 'undefined' && !$mapHas(b, altValue))\n // eslint-disable-next-line no-use-before-define\n || !internalDeepEqual(item, curB, looseOpts, channel)\n ) {\n return false;\n }\n // eslint-disable-next-line no-use-before-define\n return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n\n return $setHas(b, altValue) && !$setHas(a, altValue);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\n var i = getIterator(set);\n var result;\n var key2;\n while ((result = i.next()) && !result.done) {\n key2 = result.value;\n if (\n // eslint-disable-next-line no-use-before-define\n internalDeepEqual(key1, key2, opts, channel)\n // eslint-disable-next-line no-use-before-define\n && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\n ) {\n $setDelete(set, key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction internalDeepEqual(actual, expected, options, channel) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n var actualBoxed = whichBoxedPrimitive(actual);\n var expectedBoxed = whichBoxedPrimitive(expected);\n if (actualBoxed !== expectedBoxed) {\n return false;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\n\n var hasActual = channel.has(actual);\n var hasExpected = channel.has(expected);\n var sentinel;\n if (hasActual && hasExpected) {\n if (channel.get(actual) === channel.get(expected)) {\n return true;\n }\n } else {\n sentinel = {};\n }\n if (!hasActual) { channel.set(actual, sentinel); }\n if (!hasExpected) { channel.set(expected, sentinel); }\n\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts, channel);\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n\n return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\n}\n\nfunction setEquiv(a, b, opts, channel) {\n if ($setSize(a) !== $setSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n while ((resultA = iA.next()) && !resultA.done) {\n if (resultA.value && typeof resultA.value === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n } else if (!$setHas(b, resultA.value)) {\n if (opts.strict) { return false; }\n if (!setMightHaveLoosePrim(a, b, resultA.value)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n }\n }\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\n if (resultB.value && typeof resultB.value === 'object') {\n if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && !$setHas(a, resultB.value)\n && !setHasEqualElement(set, resultB.value, opts.strict, channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction mapEquiv(a, b, opts, channel) {\n if ($mapSize(a) !== $mapSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n var key;\n var item1;\n var item2;\n while ((resultA = iA.next()) && !resultA.done) {\n key = resultA.value[0];\n item1 = resultA.value[1];\n if (key && typeof key === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n } else {\n item2 = $mapGet(b, key);\n if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\n if (opts.strict) {\n return false;\n }\n if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n }\n }\n }\n\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n key = resultB.value[0];\n item2 = resultB.value[1];\n if (key && typeof key === 'object') {\n if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\n && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts, channel) {\n /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5], max-lines: [2, 400] */\n var i, key;\n\n if (typeof a !== typeof b) { return false; }\n if (a == null || b == null) { return false; }\n\n if ($objToString(a) !== $objToString(b)) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsArray = isArray(a);\n var bIsArray = isArray(b);\n if (aIsArray !== bIsArray) { return false; }\n\n // TODO: replace when a cross-realm brand check is available\n var aIsError = a instanceof Error;\n var bIsError = b instanceof Error;\n if (aIsError !== bIsError) { return false; }\n if (aIsError || bIsError) {\n if (a.name !== b.name || a.message !== b.message) { return false; }\n }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\n return false;\n }\n\n var aIsDate = isDate(a);\n var bIsDate = isDate(b);\n if (aIsDate !== bIsDate) { return false; }\n if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\n if ($getTime(a) !== $getTime(b)) { return false; }\n }\n if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\n\n var aWhich = whichTypedArray(a);\n var bWhich = whichTypedArray(b);\n if (aWhich !== bWhich) {\n return false;\n }\n if (aWhich || bWhich) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n var aIsArrayBuffer = isArrayBuffer(a);\n var bIsArrayBuffer = isArrayBuffer(b);\n if (aIsArrayBuffer !== bIsArrayBuffer) { return false; }\n if (aIsArrayBuffer || bIsArrayBuffer) { // && would work too, because both are true or both false here\n if (byteLength(a) !== byteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n var aIsSAB = isSharedArrayBuffer(a);\n var bIsSAB = isSharedArrayBuffer(b);\n if (aIsSAB !== bIsSAB) { return false; }\n if (aIsSAB || bIsSAB) { // && would work too, because both are true or both false here\n if (sabByteLength(a) !== sabByteLength(b)) { return false; }\n return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n }\n\n if (typeof a !== typeof b) { return false; }\n\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; } // eslint-disable-line eqeqeq\n }\n\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\n }\n\n var aCollection = whichCollection(a);\n var bCollection = whichCollection(b);\n if (aCollection !== bCollection) {\n return false;\n }\n if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\n return setEquiv(a, b, opts, channel);\n }\n if (aCollection === 'Map') { // aCollection === bCollection\n return mapEquiv(a, b, opts, channel);\n }\n\n return true;\n}\n\nmodule.exports = function deepEqual(a, b, opts) {\n return internalDeepEqual(a, b, opts, getSideChannel());\n};\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n",null,null,"const connectBrowserAppProps = [\"name\", \"title\", \"version\", \"customProperties\", \"icon\", \"caption\", \"type\"];\nconst fdc3v2AppProps = [\"appId\", \"name\", \"type\", \"details\", \"version\", \"title\", \"tooltip\", \"lang\", \"description\", \"categories\", \"icons\", \"screenshots\", \"contactEmail\", \"moreInfo\", \"publisher\", \"customConfig\", \"hostManifests\", \"interop\", \"localizedVersions\"];\n\n/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nDecoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nDecoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nDecoder.union;\r\n/** See `Decoder.intersection` */\r\nDecoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nDecoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nDecoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nDecoder.succeed;\r\n/** See `Decoder.fail` */\r\nDecoder.fail;\r\n/** See `Decoder.lazy` */\r\nDecoder.lazy;\n\nconst nonEmptyStringDecoder = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nconst nonNegativeNumberDecoder = number().where((num) => num >= 0, \"Expected a non-negative number\");\n\nconst intentDefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n displayName: optional(string()),\n contexts: optional(array(string())),\n customConfig: optional(object())\n});\nconst v2TypeDecoder = oneOf(constant(\"web\"), constant(\"native\"), constant(\"citrix\"), constant(\"onlineNative\"), constant(\"other\"));\nconst v2DetailsDecoder = object({\n url: nonEmptyStringDecoder\n});\nconst v2IconDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder)\n});\nconst v2ScreenshotDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder),\n label: optional(nonEmptyStringDecoder)\n});\nconst v2ListensForIntentDecoder = object({\n contexts: array(nonEmptyStringDecoder),\n displayName: optional(nonEmptyStringDecoder),\n resultType: optional(nonEmptyStringDecoder),\n customConfig: optional(anyJson())\n});\nconst v2IntentsDecoder = object({\n listensFor: optional(dict(v2ListensForIntentDecoder)),\n raises: optional(dict(array(nonEmptyStringDecoder)))\n});\nconst v2UserChannelDecoder = object({\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2AppChannelDecoder = object({\n name: nonEmptyStringDecoder,\n description: optional(nonEmptyStringDecoder),\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2InteropDecoder = object({\n intents: optional(v2IntentsDecoder),\n userChannels: optional(v2UserChannelDecoder),\n appChannels: optional(array(v2AppChannelDecoder))\n});\nconst glue42ApplicationDetailsDecoder = object({\n url: nonEmptyStringDecoder,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\nconst glue42HostManifestsBrowserDecoder = object({\n name: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\")),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n customProperties: optional(anyJson()),\n icon: optional(string()),\n caption: optional(string()),\n details: optional(glue42ApplicationDetailsDecoder),\n intents: optional(array(intentDefinitionDecoder)),\n hidden: optional(boolean())\n});\nconst hostManifestsBrowserDecoder = oneOf(object({\n \"ioConnect\": optional(oneOf(glue42HostManifestsBrowserDecoder, anyJson())),\n \"Glue42\": optional(oneOf(glue42HostManifestsBrowserDecoder, anyJson()))\n}), anyJson());\nconst v1DefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n appId: nonEmptyStringDecoder,\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n manifest: nonEmptyStringDecoder,\n manifestType: nonEmptyStringDecoder,\n tooltip: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n images: optional(array(object({ url: optional(nonEmptyStringDecoder) }))),\n icons: optional(array(object({ icon: optional(nonEmptyStringDecoder) }))),\n customConfig: anyJson(),\n intents: optional(array(intentDefinitionDecoder))\n});\nconst v2LocalizedDefinitionDecoder = object({\n appId: optional(nonEmptyStringDecoder),\n name: optional(nonEmptyStringDecoder),\n details: optional(v2DetailsDecoder),\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder)\n});\nconst v2DefinitionDecoder = object({\n appId: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder,\n type: v2TypeDecoder,\n details: v2DetailsDecoder,\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder),\n localizedVersions: optional(dict(v2LocalizedDefinitionDecoder))\n});\nconst allDefinitionsDecoder = oneOf(v1DefinitionDecoder, v2DefinitionDecoder);\n\nconst parseDecoderErrorToStringMessage = (error) => {\n return `${error.kind} at ${error.at}: ${JSON.stringify(error.input)}. Reason - ${error.message}`;\n};\n\nclass FDC3Service {\n fdc3ToDesktopDefinitionType = {\n web: \"window\",\n native: \"exe\",\n citrix: \"citrix\",\n onlineNative: \"clickonce\",\n other: \"window\"\n };\n toApi() {\n return {\n isFdc3Definition: this.isFdc3Definition.bind(this),\n parseToBrowserBaseAppData: this.parseToBrowserBaseAppData.bind(this),\n parseToDesktopAppConfig: this.parseToDesktopAppConfig.bind(this)\n };\n }\n isFdc3Definition(definition) {\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n return { isFdc3: false, reason: parseDecoderErrorToStringMessage(decodeRes.error) };\n }\n if (definition.appId && definition.details) {\n return { isFdc3: true, version: \"2.0\" };\n }\n if (definition.manifest) {\n return { isFdc3: true, version: \"1.2\" };\n }\n return { isFdc3: false, reason: \"The passed definition is not FDC3\" };\n }\n parseToBrowserBaseAppData(definition) {\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n const userProperties = this.getUserPropertiesFromDefinition(definition, version);\n const createOptions = { url: this.getUrl(definition, version) };\n const baseApplicationData = {\n name: definition.appId,\n type: \"window\",\n createOptions,\n userProperties: {\n ...userProperties,\n intents: version === \"1.2\"\n ? userProperties.intents\n : this.getIntentsFromV2AppDefinition(definition),\n details: createOptions\n },\n title: definition.title,\n version: definition.version,\n icon: this.getIconFromDefinition(definition, version),\n caption: definition.description,\n fdc3: version === \"2.0\" ? { ...definition, definitionVersion: \"2.0\" } : undefined,\n };\n const ioConnectDefinition = definition.hostManifests?.ioConnect || definition.hostManifests?.[\"Glue42\"];\n if (!ioConnectDefinition) {\n return baseApplicationData;\n }\n const ioDefinitionDecodeRes = glue42HostManifestsBrowserDecoder.run(ioConnectDefinition);\n if (!ioDefinitionDecodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(ioDefinitionDecodeRes.error)}`);\n }\n if (!Object.keys(ioDefinitionDecodeRes.result).length) {\n return baseApplicationData;\n }\n return this.mergeBaseAppDataWithGlueManifest(baseApplicationData, ioDefinitionDecodeRes.result);\n }\n parseToDesktopAppConfig(definition) {\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (version === \"1.2\") {\n const fdc3v1Definition = definition;\n return {\n name: fdc3v1Definition.appId,\n type: \"window\",\n details: {\n url: this.getUrl(definition, version)\n },\n version: fdc3v1Definition.version,\n title: fdc3v1Definition.title,\n tooltip: fdc3v1Definition.tooltip,\n caption: fdc3v1Definition.description,\n icon: fdc3v1Definition.icons?.[0].icon,\n intents: fdc3v1Definition.intents,\n customProperties: {\n manifestType: fdc3v1Definition.manifestType,\n images: fdc3v1Definition.images,\n contactEmail: fdc3v1Definition.contactEmail,\n supportEmail: fdc3v1Definition.supportEmail,\n publisher: fdc3v1Definition.publisher,\n icons: fdc3v1Definition.icons,\n customConfig: fdc3v1Definition.customConfig\n }\n };\n }\n const fdc3v2Definition = definition;\n const desktopDefinition = {\n name: fdc3v2Definition.appId,\n type: this.fdc3ToDesktopDefinitionType[fdc3v2Definition.type],\n details: fdc3v2Definition.details,\n version: fdc3v2Definition.version,\n title: fdc3v2Definition.title,\n tooltip: fdc3v2Definition.tooltip,\n caption: fdc3v2Definition.description,\n icon: this.getIconFromDefinition(fdc3v2Definition, \"2.0\"),\n intents: this.getIntentsFromV2AppDefinition(fdc3v2Definition),\n fdc3: { ...fdc3v2Definition, definitionVersion: \"2.0\" }\n };\n const ioConnectDefinition = definition.hostManifests?.ioConnect || definition.hostManifests?.[\"Glue42\"];\n if (!ioConnectDefinition) {\n return desktopDefinition;\n }\n if (typeof ioConnectDefinition !== \"object\" || Array.isArray(ioConnectDefinition)) {\n throw new Error(`Invalid '${definition.hostManifests.ioConnect ? \"hostManifests.ioConnect\" : \"hostManifests['Glue42']\"}' key`);\n }\n return this.mergeDesktopConfigWithGlueManifest(desktopDefinition, ioConnectDefinition);\n }\n getUserPropertiesFromDefinition(definition, version) {\n if (version === \"1.2\") {\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key)));\n }\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key) && !fdc3v2AppProps.includes(key)));\n }\n getUrl(definition, version) {\n let url;\n if (version === \"1.2\") {\n const parsedManifest = JSON.parse(definition.manifest);\n url = parsedManifest.details?.url || parsedManifest.url;\n }\n else {\n url = definition.details?.url;\n }\n if (!url || typeof url !== \"string\") {\n throw new Error(`Invalid FDC3 ${version} definition. Provide valid 'url' under '${version === \"1.2\" ? \"manifest\" : \"details\"}' key`);\n }\n return url;\n }\n getIntentsFromV2AppDefinition(definition) {\n const fdc3Intents = definition.interop?.intents?.listensFor;\n if (!fdc3Intents) {\n return;\n }\n const intents = Object.entries(fdc3Intents).map((fdc3Intent) => {\n const [intentName, intentData] = fdc3Intent;\n return {\n name: intentName,\n ...intentData\n };\n });\n return intents;\n }\n getIconFromDefinition(definition, version) {\n if (version === \"1.2\") {\n return definition.icons?.find((iconDef) => iconDef.icon)?.icon || undefined;\n }\n return definition.icons?.find((iconDef) => iconDef.src)?.src || undefined;\n }\n mergeBaseAppDataWithGlueManifest(baseAppData, hostManifestDefinition) {\n let baseApplicationDefinition = baseAppData;\n if (hostManifestDefinition.details) {\n const details = { ...baseAppData.createOptions, ...hostManifestDefinition.details };\n baseApplicationDefinition.createOptions = details;\n baseApplicationDefinition.userProperties.details = details;\n }\n if (Array.isArray(hostManifestDefinition.intents)) {\n baseApplicationDefinition.userProperties.intents = (baseApplicationDefinition.userProperties.intents || []).concat(hostManifestDefinition.intents);\n }\n baseApplicationDefinition = { ...baseApplicationDefinition, ...hostManifestDefinition };\n delete baseApplicationDefinition.details;\n delete baseApplicationDefinition.intents;\n return baseApplicationDefinition;\n }\n mergeDesktopConfigWithGlueManifest(config, desktopDefinition) {\n const appConfig = Object.assign({}, config, desktopDefinition, { details: { ...config.details, ...desktopDefinition.details } });\n if (Array.isArray(desktopDefinition.intents)) {\n appConfig.intents = (config.intents || []).concat(desktopDefinition.intents);\n }\n return appConfig;\n }\n}\n\nconst decoders$1 = {\n common: {\n nonEmptyStringDecoder,\n nonNegativeNumberDecoder\n },\n fdc3: {\n allDefinitionsDecoder,\n v1DefinitionDecoder,\n v2DefinitionDecoder\n }\n};\n\nvar INTENTS_ERRORS;\n(function (INTENTS_ERRORS) {\n INTENTS_ERRORS[\"USER_CANCELLED\"] = \"User Closed Intents Resolver UI without choosing a handler\";\n INTENTS_ERRORS[\"CALLER_NOT_DEFINED\"] = \"Caller Id is not defined\";\n INTENTS_ERRORS[\"TIMEOUT_HIT\"] = \"Timeout hit\";\n INTENTS_ERRORS[\"INTENT_NOT_FOUND\"] = \"Cannot find Intent\";\n INTENTS_ERRORS[\"HANDLER_NOT_FOUND\"] = \"Cannot find Intent Handler\";\n INTENTS_ERRORS[\"TARGET_INSTANCE_UNAVAILABLE\"] = \"Cannot start Target Instance\";\n INTENTS_ERRORS[\"INTENT_DELIVERY_FAILED\"] = \"Target Instance did not add a listener\";\n INTENTS_ERRORS[\"RESOLVER_UNAVAILABLE\"] = \"Intents Resolver UI unavailable\";\n INTENTS_ERRORS[\"RESOLVER_TIMEOUT\"] = \"User did not choose a handler\";\n INTENTS_ERRORS[\"INVALID_RESOLVER_RESPONSE\"] = \"Intents Resolver UI returned invalid response\";\n INTENTS_ERRORS[\"INTENT_HANDLER_REJECTION\"] = \"Intent Handler function processing the raised intent threw an error or rejected the promise it returned\";\n})(INTENTS_ERRORS || (INTENTS_ERRORS = {}));\n\nclass IoC {\n _fdc3;\n _decoders = decoders$1;\n _errors = {\n intents: INTENTS_ERRORS\n };\n get fdc3() {\n if (!this._fdc3) {\n this._fdc3 = new FDC3Service().toApi();\n }\n return this._fdc3;\n }\n get decoders() {\n return this._decoders;\n }\n get errors() {\n return this._errors;\n }\n}\n\nconst ioc = new IoC();\nconst fdc3 = ioc.fdc3;\nconst decoders = ioc.decoders;\nconst errors = ioc.errors;\n\nexport { decoders, errors, fdc3 };\n//# sourceMappingURL=utils.es.js.map\n","/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Typeguard for `Ok`.\r\n */\r\nvar isOk = function (r) { return r.ok === true; };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Typeguard for `Err`.\r\n */\r\nvar isErr = function (r) { return r.ok === false; };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Given an array of `Result`s, return the successful values.\r\n */\r\nvar successes = function (results) {\r\n return results.reduce(function (acc, r) { return (r.ok === true ? acc.concat(r.result) : acc); }, []);\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n\r\nvar result = Object.freeze({\r\n\tok: ok,\r\n\tisOk: isOk,\r\n\terr: err,\r\n\tisErr: isErr,\r\n\tasPromise: asPromise,\r\n\twithDefault: withDefault,\r\n\twithException: withException,\r\n\tsuccesses: successes,\r\n\tmap: map,\r\n\tmap2: map2,\r\n\tmapError: mapError,\r\n\tandThen: andThen\r\n});\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/**\r\n * Type guard for `DecoderError`. One use case of the type guard is in the\r\n * `catch` of a promise. Typescript types the error argument of `catch` as\r\n * `any`, so when dealing with a decoder as a promise you may need to\r\n * distinguish between a `DecoderError` and an error string.\r\n */\r\nvar isDecoderError = function (a) {\r\n return a.kind === 'DecoderError' && typeof a.at === 'string' && typeof a.message === 'string';\r\n};\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nvar unknownJson = Decoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nvar tuple = Decoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nvar union = Decoder.union;\r\n/** See `Decoder.intersection` */\r\nvar intersection = Decoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nvar withDefault$1 = Decoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nvar valueAt = Decoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nvar succeed = Decoder.succeed;\r\n/** See `Decoder.fail` */\r\nvar fail = Decoder.fail;\r\n/** See `Decoder.lazy` */\r\nvar lazy = Decoder.lazy;\r\n\r\nexport { result as Result, Decoder, isDecoderError, string, number, boolean, anyJson, unknownJson, constant, object, array, tuple, dict, optional, oneOf, union, intersection, withDefault$1 as withDefault, valueAt, succeed, fail, lazy };\r\n//# sourceMappingURL=index.es5.js.map\r\n",null,"'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict';\n\nlet nanoid = (size = 21) => {\n let id = '';\n let bytes = crypto.getRandomValues(new Uint8Array(size));\n while (size--) {\n id += urlAlphabet[bytes[size] & 63];\n }\n return id\n};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\ncreateRegistry.default = createRegistry;\nvar lib = createRegistry;\n\n\nvar CallbackRegistryFactory = /*@__PURE__*/getDefaultExportFromCjs(lib);\n\nconst SEARCH_QUERY_STATUSES = {\n done: \"done\",\n inProgress: \"in-progress\",\n error: \"error\"\n};\nconst CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS = {\n info: \"info\",\n search: \"search\",\n cancel: \"cancel\"\n};\n\n/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nDecoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nDecoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nDecoder.tuple;\r\n/** See `Decoder.dict` */\r\nDecoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nDecoder.union;\r\n/** See `Decoder.intersection` */\r\nDecoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nDecoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nDecoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nDecoder.succeed;\r\n/** See `Decoder.fail` */\r\nDecoder.fail;\r\n/** See `Decoder.lazy` */\r\nDecoder.lazy;\n\nconst nonEmptyStringDecoder = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nconst nonNegativeNumberDecoder = number().where((num) => num >= 0, \"Expected a non-negative number\");\nconst searchTypeDecoder = object({\n name: nonEmptyStringDecoder,\n displayName: optional(nonEmptyStringDecoder)\n});\nconst providerData = object({\n id: nonEmptyStringDecoder,\n interopId: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder,\n appName: optional(nonEmptyStringDecoder),\n types: optional(array(searchTypeDecoder))\n});\nconst providerLimitsDecoder = object({\n maxResults: optional(nonNegativeNumberDecoder),\n maxResultsPerType: optional(nonNegativeNumberDecoder)\n});\nconst queryConfigDecoder = object({\n search: nonEmptyStringDecoder,\n providers: optional(array(providerData)),\n types: optional(array(searchTypeDecoder)),\n providerLimits: optional(providerLimitsDecoder)\n});\nconst providerRegistrationConfig = object({\n name: nonEmptyStringDecoder,\n types: optional(array(searchTypeDecoder))\n});\nconst operationDecoder = oneOf(constant(\"cancel\"), constant(\"info\"), constant(\"search\"));\nconst queryStatusDecoder = oneOf(constant(\"done\"), constant(\"in-progress\"), constant(\"error\"));\nconst searchCancelRequestDecoder = object({\n id: nonEmptyStringDecoder\n});\nconst mainActionDecoder = object({\n method: nonEmptyStringDecoder,\n target: optional(oneOf(object({ instance: nonEmptyStringDecoder }), constant(\"all\"))),\n params: optional(anyJson())\n});\nconst secondaryActionDecoder = object({\n name: nonEmptyStringDecoder,\n method: nonEmptyStringDecoder,\n target: optional(oneOf(object({ instance: nonEmptyStringDecoder }), constant(\"all\"))),\n params: optional(anyJson())\n});\nconst queryResultDecoder = object({\n type: searchTypeDecoder,\n id: optional(nonEmptyStringDecoder),\n displayName: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n iconURL: optional(nonEmptyStringDecoder),\n metadata: optional(anyJson()),\n action: optional(mainActionDecoder),\n secondaryActions: optional(array(secondaryActionDecoder))\n});\nconst legacySearchResultItemDecoder = object({\n type: string(),\n category: optional(string()),\n id: optional(string()),\n displayName: optional(string()),\n description: optional(string()),\n iconURL: optional(string()),\n action: optional(mainActionDecoder)\n});\nconst protocolSearchResultsBatchDecoder = object({\n items: array(oneOf(queryResultDecoder, legacySearchResultItemDecoder)),\n provider: optional(providerData),\n queryId: nonEmptyStringDecoder,\n status: constant(\"in-progress\")\n});\nconst protocolSearchCompletedDecoder = object({\n items: array(oneOf(queryResultDecoder, legacySearchResultItemDecoder)),\n queryId: nonEmptyStringDecoder,\n status: constant(\"done\")\n});\nconst protocolProviderErrorDecoder = object({\n items: array(oneOf(queryResultDecoder, legacySearchResultItemDecoder)),\n provider: optional(providerData),\n queryId: nonEmptyStringDecoder,\n errorMessage: nonEmptyStringDecoder,\n status: constant(\"error\")\n});\n\nclass ClientController {\n logger;\n glueController;\n modelFactory;\n registry = CallbackRegistryFactory();\n activeQueryLookup = {};\n queryIdToMasterIdLookup = {};\n pendingDebounce = [];\n debounceTimer;\n debounceMS = 0;\n constructor(logger, glueController, modelFactory) {\n this.logger = logger;\n this.glueController = glueController;\n this.modelFactory = modelFactory;\n }\n setDebounceMS(data) {\n this.logger.info(`[${data.commandId}] Setting the debounceMS to: ${data.milliseconds}`);\n this.debounceMS = data.milliseconds;\n this.logger.info(`[${data.commandId}] debounceMS set to: ${data.milliseconds}`);\n }\n getDebounceMS(data) {\n this.logger.info(`[${data.commandId}] Getting the debounceMS`);\n return this.debounceMS;\n }\n async query(data, skipDebounce) {\n if (this.debounceMS && !skipDebounce) {\n return this.debounceQuery(data);\n }\n await this.glueController.registerMainClientMethod(this.handleProviderCall.bind(this));\n const { queryConfig, commandId } = data;\n this.logger.info(`[${commandId}] Initiating a query request`);\n let allProvidersInfo = await this.glueController.getAllProvidersInfo();\n this.logger.trace(`[${commandId}] Got all available providers: ${JSON.stringify(allProvidersInfo)}`);\n if (queryConfig.providers) {\n this.logger.info(`[${commandId}] Filtering providers by explicitly allowed providers.`);\n allProvidersInfo = this.filterProvidersByAllowList(allProvidersInfo, queryConfig.providers);\n }\n if (queryConfig.types) {\n this.logger.info(`[${commandId}] Filtering providers by explicitly allowed types.`);\n allProvidersInfo = this.filterProvidersByAllowedTypes(allProvidersInfo, queryConfig.types);\n }\n if (!allProvidersInfo.length) {\n this.logger.warn(`[${commandId}] There are no providers that can handle the query for ${data.queryConfig.search}`);\n }\n this.logger.info(`[${commandId}] Sending query request to providers: ${JSON.stringify(allProvidersInfo)}`);\n const allQueryResponses = await this.glueController.sendQueryRequest(queryConfig, allProvidersInfo);\n this.logger.info(`[${commandId}] Received responses from the providers: ${JSON.stringify(allQueryResponses)}`);\n const masterQueryId = this.generateMasterQueryId();\n const queryModel = this.modelFactory.buildClientQueryModel(masterQueryId, this);\n this.logger.info(`[${commandId}] The query is in progress with master id: ${masterQueryId}`);\n this.activeQueryLookup[masterQueryId] = {\n servers: allQueryResponses,\n model: queryModel\n };\n allQueryResponses.forEach((response) => {\n this.queryIdToMasterIdLookup[response.queryId] = masterQueryId;\n });\n if (!allQueryResponses.length) {\n setTimeout(() => {\n this.registry.execute(`on-query-completed-${masterQueryId}`);\n this.cleanUpQuery(masterQueryId);\n }, 0);\n }\n return queryModel.exposeFacade();\n }\n async cancelQuery(masterQueryId, commandId) {\n const activeQuery = this.activeQueryLookup[masterQueryId];\n if (!activeQuery) {\n throw new Error(`[${commandId}] Cannot cancel query: ${masterQueryId}, because this query does not exist`);\n }\n const interopIds = activeQuery.servers;\n this.logger.info(`[${commandId}] Sending cancel query requests`);\n await Promise.all(interopIds.map((serverId) => {\n this.logger.trace(`[${commandId}] Sending cancel query request to ${serverId.interopId} with queryId: ${serverId.queryId}`);\n return this.glueController.sendQueryCancelRequest({ id: serverId.queryId }, { instance: serverId.interopId });\n }));\n this.logger.info(`[${commandId}] The query was cancelled`);\n }\n processClientOnResults(data) {\n return this.registry.add(`on-query-results-${data.masterQueryId}`, data.callback);\n }\n processClientOnCompleted(data) {\n return this.registry.add(`on-query-completed-${data.masterQueryId}`, data.callback);\n }\n processClientOnError(data) {\n return this.registry.add(`on-query-error-${data.masterQueryId}`, data.callback);\n }\n async handleProviderCall(args) {\n const { status } = args;\n const validatedOperation = queryStatusDecoder.runWithException(status);\n const commandId = nanoid(10);\n switch (validatedOperation) {\n case SEARCH_QUERY_STATUSES.done:\n return this.handleQueryCompleted({ completedConfig: args, commandId });\n case SEARCH_QUERY_STATUSES.inProgress:\n return this.handleQueryResults({ resultsBatch: args, commandId });\n case SEARCH_QUERY_STATUSES.error:\n return this.handleQueryError({ error: args, commandId });\n default:\n throw new Error(`Unrecognized status: ${status}`);\n }\n }\n handleQueryResults(data) {\n const { resultsBatch, commandId } = data;\n this.logger.trace(`[${commandId}] Processing a results batch from provider: ${resultsBatch.provider?.name} with id: ${resultsBatch.provider?.id}`);\n const verifiedResultsBatch = protocolSearchResultsBatchDecoder.runWithException(resultsBatch);\n const masterQueryId = this.queryIdToMasterIdLookup[verifiedResultsBatch.queryId];\n if (!masterQueryId) {\n this.logger.warn(`[${commandId}] Received results for an unknown query. Provider ${JSON.stringify(verifiedResultsBatch.provider)}, items: ${JSON.stringify(verifiedResultsBatch.items)}`);\n return;\n }\n this.logger.trace(`[${commandId}] The results batch is validated, forwarding to the callbacks`);\n const translatedResults = this.checkTransformLegacyResults(verifiedResultsBatch.items);\n const results = {\n provider: verifiedResultsBatch.provider,\n results: translatedResults\n };\n this.registry.execute(`on-query-results-${masterQueryId}`, results);\n }\n handleQueryCompleted(data) {\n const { completedConfig, commandId } = data;\n this.logger.trace(`[${commandId}] Processing a query completed message from query id: ${completedConfig.queryId}`);\n const verifiedCompleteConfig = protocolSearchCompletedDecoder.runWithException(completedConfig);\n const masterQueryId = this.queryIdToMasterIdLookup[verifiedCompleteConfig.queryId];\n if (!masterQueryId) {\n this.logger.warn(`[${commandId}] Received completed message for an unknown query. Provider query id: ${JSON.stringify(verifiedCompleteConfig.queryId)}`);\n return;\n }\n if (verifiedCompleteConfig.items.length) {\n const translatedResults = this.checkTransformLegacyResults(verifiedCompleteConfig.items);\n const results = {\n results: translatedResults\n };\n this.registry.execute(`on-query-results-${masterQueryId}`, results);\n }\n delete this.queryIdToMasterIdLookup[verifiedCompleteConfig.queryId];\n const activeQuery = this.activeQueryLookup[masterQueryId];\n activeQuery.servers = activeQuery.servers.filter((server) => server.queryId !== verifiedCompleteConfig.queryId);\n if (activeQuery.servers.length) {\n this.logger.trace(`[${commandId}] Waiting for more providers to complete`);\n return;\n }\n this.logger.trace(`[${commandId}] All providers are done, marking this query as completed`);\n this.registry.execute(`on-query-completed-${masterQueryId}`);\n this.cleanUpQuery(masterQueryId);\n }\n handleQueryError(data) {\n const { error, commandId } = data;\n this.logger.trace(`[${commandId}] Processing an error message from query: ${error.queryId}`);\n const validatedError = protocolProviderErrorDecoder.runWithException(error);\n const masterQueryId = this.queryIdToMasterIdLookup[validatedError.queryId];\n if (!masterQueryId) {\n this.logger.warn(`[${commandId}] Received error message for an unknown query. Provider query id: ${JSON.stringify(validatedError.queryId)} and message: ${JSON.stringify(validatedError.errorMessage)}`);\n return;\n }\n const queryError = {\n error: validatedError.errorMessage,\n provider: validatedError.provider\n };\n this.registry.execute(`on-query-error-${masterQueryId}`, queryError);\n }\n filterProvidersByAllowList(servers, allowed) {\n const allowedLookup = allowed.reduce((lookup, allowedEntry) => {\n lookup[allowedEntry.id] = true;\n return lookup;\n }, {});\n return servers.filter((server) => {\n const serverProviders = server.info.providers;\n return serverProviders.some((provider) => allowedLookup[provider.id]);\n });\n }\n filterProvidersByAllowedTypes(servers, allowed) {\n const allowedLookup = allowed.reduce((lookup, allowedEntry) => {\n lookup[allowedEntry.name] = true;\n return lookup;\n }, {});\n return servers.filter((server) => {\n const allTypes = server.info.supportedTypes;\n if (allTypes.some((searchType) => searchType === \"*\")) {\n return true;\n }\n if (!allTypes || !allTypes.length) {\n return true;\n }\n return allTypes.some((supportedType) => allowedLookup[supportedType]);\n });\n }\n generateMasterQueryId() {\n const queryId = nanoid(10);\n if (this.activeQueryLookup[queryId]) {\n return this.generateMasterQueryId();\n }\n return queryId;\n }\n cleanUpQuery(masterQueryId) {\n this.registry.clearKey(`on-query-results-${masterQueryId}`);\n this.registry.clearKey(`on-query-completed-${masterQueryId}`);\n this.registry.clearKey(`on-query-error-${masterQueryId}`);\n delete this.activeQueryLookup[masterQueryId];\n }\n debounceQuery(data) {\n return new Promise((res, rej) => {\n clearTimeout(this.debounceTimer);\n this.debounceTimer = setTimeout(() => {\n const currentPending = [...this.pendingDebounce];\n this.pendingDebounce = [];\n this.query(data, true)\n .then((query) => currentPending.forEach(({ resolve }) => resolve(query)))\n .catch((error) => currentPending.forEach(({ reject }) => reject(error)));\n }, this.debounceMS);\n this.pendingDebounce.push({ resolve: res, reject: rej });\n });\n }\n checkTransformLegacyResults(items) {\n if (!items.length) {\n return [];\n }\n const sampleItem = items[0];\n if (!sampleItem || typeof sampleItem.type === \"object\") {\n return items;\n }\n return items.map((item) => {\n return {\n type: { name: item.type, displayName: item.category },\n id: item.id,\n displayName: item.displayName,\n description: item.description,\n iconURL: item.iconURL,\n action: item.action\n };\n });\n }\n}\n\nconst MAIN_PROVIDER_METHOD_NAME = \"T42.Search.Provider\";\nconst MAIN_CLIENT_METHOD_NAME = \"T42.Search.Client\";\nconst SEQUELIZER_INTERVAL_MS = 10;\nconst FLUSH_SEQUELIZER_INTERVAL_MS = 10;\nconst FLUSH_TIMEOUT_MS = 100;\nconst STALE_QUERY_TIMEOUT_MS = 900000;\n\nclass GlueController {\n glue;\n constructor(glue) {\n this.glue = glue;\n }\n get myAppName() {\n return this.glue.interop.instance.applicationName;\n }\n get myInteropId() {\n return this.glue.interop.instance.instance;\n }\n async registerMainProviderMethod(handler) {\n const mainMethodStatus = this.checkMyMethodExists(MAIN_PROVIDER_METHOD_NAME);\n if (mainMethodStatus.exists) {\n return;\n }\n await this.glue.interop.register(MAIN_PROVIDER_METHOD_NAME, handler);\n }\n async registerMainClientMethod(handler) {\n const mainMethodStatus = this.checkMyMethodExists(MAIN_CLIENT_METHOD_NAME);\n if (mainMethodStatus.exists) {\n return;\n }\n await this.glue.interop.register(MAIN_CLIENT_METHOD_NAME, handler);\n }\n async clearMainProviderMethod() {\n await this.glue.interop.unregister(MAIN_PROVIDER_METHOD_NAME);\n }\n async sendClientResultsBatch(batch, clientInstanceId, queryId) {\n const interopArguments = {\n items: batch.results,\n provider: batch.provider,\n queryId,\n status: SEARCH_QUERY_STATUSES.inProgress\n };\n await this.glue.interop.invoke(MAIN_CLIENT_METHOD_NAME, interopArguments, { instance: clientInstanceId });\n }\n async sendClientQueueCompleted(clientInstanceId, queryId) {\n const interopArguments = {\n items: [],\n queryId,\n status: SEARCH_QUERY_STATUSES.done\n };\n await this.glue.interop.invoke(MAIN_CLIENT_METHOD_NAME, interopArguments, { instance: clientInstanceId });\n }\n async sendClientErrorMessage(error, clientInstanceId, queryId, provider) {\n const interopArguments = {\n items: [],\n provider,\n errorMessage: error,\n queryId,\n status: SEARCH_QUERY_STATUSES.error\n };\n await this.glue.interop.invoke(MAIN_CLIENT_METHOD_NAME, interopArguments, { instance: clientInstanceId });\n }\n async sendQueryRequest(queryConfig, instances) {\n if (!instances.length) {\n return [];\n }\n const target = instances.map((inst) => ({ instance: inst.interopId }));\n const invokeArgs = {\n operation: CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.search,\n apiVersion: \"1\",\n ...queryConfig\n };\n const response = await this.glue.interop.invoke(MAIN_PROVIDER_METHOD_NAME, invokeArgs, target);\n const allReturned = response.all_return_values || [];\n return allReturned.map((returnValue) => {\n return {\n interopId: returnValue.executed_by?.instance,\n queryId: returnValue.returned.id\n };\n });\n }\n async sendQueryCancelRequest(request, instance) {\n const args = {\n operation: CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.cancel,\n id: request.id\n };\n await this.glue.interop.invoke(MAIN_PROVIDER_METHOD_NAME, args, instance);\n }\n async getAllProvidersInfo() {\n if (this.glue.interop.methods().every((method) => method.name !== MAIN_PROVIDER_METHOD_NAME)) {\n return [];\n }\n const args = {\n operation: CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.info\n };\n const response = await this.glue.interop.invoke(MAIN_PROVIDER_METHOD_NAME, args, \"all\");\n const allReturned = response.all_return_values || [];\n return allReturned.map((returnValue) => {\n const isLegacy = typeof returnValue.returned.apiVersion === \"undefined\";\n const info = isLegacy ? {\n supportedTypes: returnValue.returned.supportedTypes,\n apiVersion: returnValue.returned.apiVersion,\n providers: [{\n interopId: returnValue.executed_by?.instance,\n id: returnValue.executed_by?.instance,\n name: returnValue.executed_by?.instance,\n appName: response.executed_by?.application,\n types: returnValue.returned.supportedTypes.map((t) => ({ name: t }))\n }]\n } : returnValue.returned;\n return {\n interopId: returnValue.executed_by?.instance,\n info\n };\n });\n }\n checkMyMethodExists(methodName) {\n const myMethods = this.glue.interop.methodsForInstance({ instance: this.glue.interop.instance.instance });\n return { exists: myMethods.some((method) => method.name === methodName) };\n }\n}\n\nclass MainController {\n logger;\n glueController;\n clientController;\n providerController;\n constructor(logger, glueController, clientController, providerController) {\n this.logger = logger;\n this.glueController = glueController;\n this.clientController = clientController;\n this.providerController = providerController;\n }\n setDebounceMS(data) {\n this.logger.info(`[${data.commandId}] Starting setDebounceMS operation with duration ${data.milliseconds}`);\n this.clientController.setDebounceMS(data);\n this.logger.info(`[${data.commandId}] Operation setDebounceMS with duration ${data.milliseconds} completed`);\n }\n getDebounceMS(data) {\n this.logger.info(`[${data.commandId}] Starting getDebounceMS operation.`);\n return this.clientController.getDebounceMS(data);\n }\n async query(data) {\n this.logger.info(`[${data.commandId}] Starting query operation with config ${JSON.stringify(data.queryConfig)}`);\n if (Array.isArray(data.queryConfig.providers) && !data.queryConfig.providers.length) {\n throw new Error(\"Cannot sent a query with a defined empty array of providers, because this is an impossible query for complete.\");\n }\n if (Array.isArray(data.queryConfig.types) && !data.queryConfig.types.length) {\n throw new Error(\"Cannot sent a query with a defined empty array of types, because this is an impossible query for complete.\");\n }\n const query = await this.clientController.query(data);\n this.logger.info(`[${data.commandId}] Operation query with config ${JSON.stringify(data.queryConfig)} completed.`);\n return query;\n }\n async registerProvider(data) {\n this.logger.info(`[${data.commandId}] Starting registerProvider operation with config ${JSON.stringify(data.config)}`);\n const provider = await this.providerController.processRegisterProvider(data);\n this.logger.info(`[${data.commandId}] Operation registerProvider with config ${JSON.stringify(data.config)} completed.`);\n return provider;\n }\n async providers(data) {\n this.logger.info(`[${data.commandId}] Starting providers operation.`);\n const allProvidersInfo = await this.glueController.getAllProvidersInfo();\n const allProvidersData = allProvidersInfo.flatMap((provInfo) => provInfo.info.providers);\n this.logger.info(`[${data.commandId}] Operation providers completed.`);\n return allProvidersData;\n }\n async types(data) {\n this.logger.info(`[${data.commandId}] Starting types operation.`);\n const allProvidersInfo = await this.glueController.getAllProvidersInfo();\n const allProvidersData = allProvidersInfo.flatMap((provInfo) => provInfo.info.providers);\n const allSupportedTypes = allProvidersData.filter((provData) => !!provData.types).flatMap((provData) => provData.types);\n const uniqueSupportedTypes = [...new Set(allSupportedTypes)];\n this.logger.info(`[${data.commandId}] Operation types completed.`);\n return uniqueSupportedTypes;\n }\n}\n\nconst extractErrorMsg = (error) => {\n const stringError = typeof error === \"string\" ?\n error :\n error.message ? JSON.stringify(error.message) :\n JSON.stringify(error);\n return stringError;\n};\n\nclass ProviderController {\n logger;\n glueController;\n sequelizer;\n limitsTracker;\n modelsFactory;\n registry = CallbackRegistryFactory();\n providersModels = {};\n activeQueries = {};\n constructor(logger, glueController, sequelizer, limitsTracker, modelsFactory) {\n this.logger = logger;\n this.glueController = glueController;\n this.sequelizer = sequelizer;\n this.limitsTracker = limitsTracker;\n this.modelsFactory = modelsFactory;\n }\n async processRegisterProvider(data) {\n const { config, commandId } = data;\n this.logger.info(`[${commandId}] enqueueing the provider registration process with config: ${JSON.stringify(config)}`);\n const result = await this.sequelizer.enqueue(async () => {\n const allProvidersInfo = await this.glueController.getAllProvidersInfo();\n const allProvidersData = allProvidersInfo.flatMap((provInfo) => provInfo.info.providers);\n if (allProvidersData.some((providerData) => providerData && providerData.name === config.name)) {\n throw new Error(`Cannot register a new provider with name: ${config.name}, because there already is a provider with this name`);\n }\n await this.glueController.registerMainProviderMethod(this.handleSearchQueryRequest.bind(this));\n const modelData = {\n id: nanoid(10),\n name: config.name,\n interopId: this.glueController.myInteropId,\n appName: this.glueController.myAppName,\n types: config.types\n };\n const model = this.modelsFactory.buildProviderModel(modelData, this);\n this.providersModels[modelData.id] = model;\n return model.exposeFacade();\n });\n this.logger.info(`[${commandId}] the provider with name: ${config.name} has been registered.`);\n return result;\n }\n processProviderOnQuery(data) {\n return this.registry.add(`on-search-query-${data.id}`, data.callback);\n }\n processProviderOnQueryCancel(data) {\n return this.registry.add(`on-cancel-query-${data.id}`, data.callback);\n }\n async processProviderUnregister(data) {\n this.logger.info(`[${data.commandId}] enqueueing the provider un-registration with id: ${data.id}`);\n await this.sequelizer.enqueue(async () => {\n this.cleanUpProvider(data.id, data.commandId);\n if (Object.keys(this.providersModels).length) {\n return;\n }\n await this.glueController.clearMainProviderMethod();\n });\n this.logger.info(`[${data.commandId}] the provider un-registration with id: ${data.id} completed`);\n }\n async processProviderQueryDone(command) {\n const { commandId, identification } = command;\n this.activeQueries[identification.queryId]?.publisher.syncSuspendProvider(identification.providerId, commandId);\n await this.sequelizer.enqueue(async () => {\n this.logger.trace(`[${commandId}] Processing a query done command with identification: ${JSON.stringify(identification)}`);\n const activeQuery = this.activeQueries[identification.queryId];\n if (!activeQuery) {\n this.logger.warn(`[${commandId}] Cannot mark provider: ${identification.providerId} done with query ${identification.queryId}, because there is no active query with this id`);\n return;\n }\n await this.cleanUpProviderQuery(identification.queryId, identification.providerId, commandId);\n if (activeQuery.providersAtWork.length) {\n this.logger.trace(`[${commandId}] Query done command completed, but there are more providers still at work.`);\n return;\n }\n this.cleanUpQuery(identification.queryId, commandId);\n this.logger.trace(`[${commandId}] Query is completed, signalling.`);\n });\n }\n processProviderQueryError(command) {\n const { commandId, identification, error } = command;\n this.logger.warn(`[${commandId}] Processing an error sent by provider: ${identification.providerId} for query id: ${identification.queryId} -> ${error}`);\n this.activeQueries[identification.queryId]?.publisher.markProviderError(command);\n return this.processProviderQueryDone(command);\n }\n processProviderQueryResult(command) {\n const { commandId, identification } = command;\n const activeQuery = this.activeQueries[identification.queryId];\n if (!activeQuery) {\n const errorMessage = `Will not send this result to the client, because there is no active query with id ${identification.queryId}. Most likely this query was cancelled.`;\n this.logger.warn(`[${command}] ${errorMessage}`);\n throw new Error(errorMessage);\n }\n if (activeQuery.publisher.checkProviderSuspended(identification.providerId)) {\n const errorMessage = `Will not send this result to the client, because there is no info about this provider in the active query with id ${identification.queryId}. Most likely this query was marked as done by this provider already.`;\n this.logger.warn(`[${command}] ${errorMessage}`);\n throw new Error(errorMessage);\n }\n const requestedTypes = activeQuery.requestedTypes;\n if (requestedTypes && requestedTypes.every((searchType) => searchType.name !== command.result.type.name)) {\n const errorMessage = `Will not send this result to the client, because this result has a defined type: ${command.result.type.name} which is not in the explicitly requested list of types by the client.`;\n this.logger.warn(`[${command}] ${errorMessage}`);\n throw new Error(errorMessage);\n }\n const testResult = this.limitsTracker.testResultLimit(command);\n if (testResult?.maxLimitHit) {\n const errorMessage = `Will not process this result from provider ${command.identification.providerId}, because this provider has reached the max results limit set by the client. This provider cannot send more result, marking it as done.`;\n this.logger.info(errorMessage);\n setTimeout(() => this.processProviderQueryDone(command), 0);\n throw new Error(errorMessage);\n }\n if (testResult?.maxLimitPerTypeHit) {\n const errorMessage = `Will not process this result from provider ${command.identification.providerId}, because this provider has reached the max results limit per type as set by the client.`;\n this.logger.info(errorMessage);\n throw new Error(errorMessage);\n }\n this.logger.trace(`[${commandId}] An active query for query ${identification.queryId} was found and the provider is within limits, queueing the result`);\n this.limitsTracker.update(command);\n activeQuery.publisher.queueResult(command);\n this.logger.trace(`[${commandId}] The query result was queued successfully.`);\n }\n async handleSearchQueryRequest(args, caller) {\n const { operation } = args;\n const validatedOperation = operationDecoder.runWithException(operation);\n const commandId = nanoid(10);\n switch (validatedOperation) {\n case CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.info:\n return this.handleInfoOperation({ commandId });\n case CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.search:\n return this.handleSearchOperation({ args, commandId }, caller);\n case CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS.cancel:\n return this.handleCancelOperation({ args, commandId });\n default:\n throw new Error(`Unrecognized operation: ${operation}`);\n }\n }\n async handleInfoOperation(request) {\n this.logger.info(`[${request.commandId}] handling an info operation`);\n const allSupportedTypes = Object.values(this.providersModels).flatMap((providerModel) => providerModel.myProviderData.types || []);\n const uniqueSupportedTypes = [...new Set(allSupportedTypes)];\n const hasWildCardTypeProvider = Object.values(this.providersModels).some((providerModel) => !providerModel.myProviderData.types);\n if (hasWildCardTypeProvider) {\n uniqueSupportedTypes.push({ name: \"*\" });\n }\n const providers = Object.values(this.providersModels).map((providerModel) => providerModel.myProviderData);\n const response = {\n supportedTypes: uniqueSupportedTypes.map((supportedType) => supportedType.name),\n providers: providers,\n apiVersion: \"1\"\n };\n this.logger.info(`[${request.commandId}] responding to an info operation with: ${JSON.stringify(response)}`);\n return response;\n }\n async handleSearchOperation(request, caller) {\n const commandId = request.commandId;\n const queryId = this.generateQueryId();\n this.logger.info(`[${commandId}] Processing search operation with queryId: ${queryId} request details: ${JSON.stringify(request.args)}`);\n const isLegacyRequest = this.checkRequestLegacy(request.args);\n const validatedRequest = this.prepareRequest(request.args, isLegacyRequest, commandId);\n this.logger.info(`[${commandId}] Search operation with queryId: ${queryId} is validated. Creating an active query and enqueueing calling the providers.`);\n this.activeQueries[queryId] = {\n queryId,\n callerInstanceId: caller.instance,\n providersAtWork: [],\n requestedTypes: validatedRequest.types,\n publisher: this.modelsFactory.buildPublisher(caller.instance, queryId, isLegacyRequest),\n staleTimer: this.setClearStaleQueryTimer(queryId)\n };\n if (validatedRequest.providerLimits) {\n this.limitsTracker.enableTracking(validatedRequest.providerLimits, queryId);\n }\n setTimeout(() => {\n this.sequelizer.enqueue(async () => {\n try {\n this.logger.info(`[${commandId}] Calling the providers.`);\n this.callProviders(validatedRequest, queryId, commandId);\n }\n catch (error) {\n this.logger.error(`[${commandId}] Error calling the providers: ${extractErrorMsg(error)}`);\n }\n });\n }, 0);\n this.logger.info(`[${commandId}] Search operation with queryID: ${queryId} processed successfully.`);\n return { id: queryId };\n }\n async handleCancelOperation(request) {\n await this.sequelizer.enqueue(async () => {\n const validation = searchCancelRequestDecoder.run(request.args);\n if (!validation.ok) {\n const errorMsg = `Cannot process a cancel request, because of validation error: ${JSON.stringify(validation.error)}`;\n this.logger.warn(`[${request.commandId}] ${errorMsg}`);\n throw new Error(errorMsg);\n }\n const validatedRequest = validation.result;\n const activeQuery = this.activeQueries[validatedRequest.id];\n if (!activeQuery) {\n return;\n }\n clearTimeout(activeQuery.staleTimer);\n activeQuery.publisher.cancel(request.commandId);\n delete this.activeQueries[validatedRequest.id];\n activeQuery.providersAtWork.forEach((provider) => this.registry.execute(`on-cancel-query-${provider.myProviderData.id}`, { id: validatedRequest.id }));\n });\n }\n generateQueryId() {\n const queryId = nanoid(10);\n if (this.activeQueries[queryId]) {\n return this.generateQueryId();\n }\n return queryId;\n }\n translateLegacySearchRequest(legacyRequest) {\n return {\n search: legacyRequest.search,\n types: legacyRequest.types?.map((searchType) => ({ name: searchType })),\n providerLimits: {\n maxResults: legacyRequest.limit,\n maxResultsPerType: legacyRequest.categoryLimit\n }\n };\n }\n checkRequestLegacy(searchRequest) {\n return typeof searchRequest.apiVersion === \"undefined\";\n }\n callProviders(validatedRequest, queryId, commandId) {\n let providers = validatedRequest.providers ?\n this.getFilteredProviderModels(validatedRequest.providers)\n : Object.values(this.providersModels);\n this.logger.trace(`[${commandId}] initial providers filtration yielded: ${JSON.stringify(providers.map((p) => p.myProviderData.name).join(\", \"))}`);\n providers = validatedRequest.types ? this.getFilteredProvidersBySearchTypes(providers, validatedRequest.types) : providers;\n this.logger.trace(`[${commandId}] search type providers filtration yielded: ${JSON.stringify(providers.map((p) => p.myProviderData.name).join(\", \"))}`);\n this.activeQueries[queryId].publisher.configureProviders(providers);\n this.activeQueries[queryId].providersAtWork.push(...providers);\n providers.forEach((provider) => this.callProvider(provider, validatedRequest, queryId, commandId));\n }\n callProvider(provider, validatedRequest, queryId, commandId) {\n const queryModel = this.modelsFactory.buildProviderQueryModel(validatedRequest, { queryId, providerId: provider.myProviderData.id }, this);\n const queryFacade = queryModel.exposeFacade();\n this.logger.info(`[${commandId}] The query facade for provider: ${provider.myProviderData.id} with name ${provider.myProviderData.name} is ready, raising the event for query ID: ${queryId}.`);\n this.registry.execute(`on-search-query-${provider.myProviderData.id}`, queryFacade);\n }\n getFilteredProviderModels(providers) {\n const filtered = providers.reduce((providers, provider) => {\n if (this.providersModels[provider.id]) {\n providers.push(this.providersModels[provider.id]);\n }\n return providers;\n }, []);\n return filtered;\n }\n getFilteredProvidersBySearchTypes(providers, searchTypes) {\n const filtered = providers.filter((provider) => {\n if (!provider.myProviderData.types || !provider.myProviderData.types.length) {\n return true;\n }\n return provider.myProviderData.types?.some((providerSearchType) => searchTypes.some((searchType) => searchType.name === providerSearchType.name));\n });\n return filtered;\n }\n setClearStaleQueryTimer(queryId) {\n return setTimeout(() => {\n const commandId = nanoid(10);\n this.logger.info(`[${commandId}] Stale query timer is activated for queryId: ${queryId}`);\n const activeQuery = this.activeQueries[queryId];\n if (!activeQuery) {\n this.logger.info(`[${commandId}] No active query was found, this was a false activation.`);\n return;\n }\n this.logger.info(`[${commandId}] force-marking the query as done`);\n this.cleanUpQuery(queryId, commandId);\n this.logger.info(`[${commandId}] the stale query was cleared.`);\n }, STALE_QUERY_TIMEOUT_MS);\n }\n prepareRequest(searchRequest, isLegacyRequest, commandId) {\n const parsedRequest = isLegacyRequest ? this.translateLegacySearchRequest(searchRequest) : searchRequest;\n const validation = queryConfigDecoder.run(parsedRequest);\n if (!validation.ok) {\n const errorMsg = `Cannot process a search request, because of validation error: ${JSON.stringify(validation.error)}`;\n this.logger.warn(`[${commandId}] ${errorMsg}`);\n throw new Error(errorMsg);\n }\n const validatedRequest = validation.result;\n return validatedRequest;\n }\n cleanUpQuery(queryId, commandId) {\n const activeQuery = this.activeQueries[queryId];\n clearTimeout(activeQuery.staleTimer);\n activeQuery.publisher.cleanPublisher(commandId);\n delete this.activeQueries[queryId];\n this.limitsTracker.cleanTracking(queryId);\n }\n cleanUpProvider(providerId, commandId) {\n this.registry.clearKey(`on-search-query-${providerId}`);\n this.registry.clearKey(`on-cancel-query-${providerId}`);\n delete this.providersModels[providerId];\n const queriesWithProvider = Object.values(this.activeQueries).filter((query) => !query.publisher.checkProviderSuspended(providerId));\n queriesWithProvider.forEach((query) => {\n this.processProviderQueryDone({\n identification: {\n queryId: query.queryId,\n providerId\n },\n commandId\n });\n });\n }\n async cleanUpProviderQuery(queryId, providerId, commandId) {\n const activeQuery = this.activeQueries[queryId];\n if (!activeQuery) {\n this.logger.warn(`[${commandId}] Cannot clean up a provider query ${queryId} for provider ${providerId} because there is no such active query`);\n return;\n }\n activeQuery.providersAtWork = activeQuery.providersAtWork.filter((provider) => provider.myProviderData.id !== providerId);\n await activeQuery.publisher.markProviderDone(providerId, commandId);\n }\n}\n\nvar version = \"2.3.1\";\n\nclass SearchFacade {\n main;\n constructor(main) {\n this.main = main;\n }\n exposeApi() {\n const api = {\n version,\n setDebounceMS: this.setDebounceMS.bind(this),\n getDebounceMS: this.getDebounceMS.bind(this),\n listProviders: this.providers.bind(this),\n listTypes: this.types.bind(this),\n query: this.query.bind(this),\n registerProvider: this.registerProvider.bind(this)\n };\n return Object.freeze(api);\n }\n setDebounceMS(milliseconds) {\n nonNegativeNumberDecoder.runWithException(milliseconds);\n const commandId = nanoid(10);\n return this.main.setDebounceMS({ milliseconds, commandId });\n }\n getDebounceMS() {\n const commandId = nanoid(10);\n return this.main.getDebounceMS({ commandId });\n }\n async providers() {\n const commandId = nanoid(10);\n return this.main.providers({ commandId });\n }\n async types() {\n const commandId = nanoid(10);\n return this.main.types({ commandId });\n }\n async query(queryConfig) {\n const verifiedConfig = queryConfigDecoder.runWithException(queryConfig);\n const commandId = nanoid(10);\n return this.main.query({ queryConfig: verifiedConfig, commandId });\n }\n async registerProvider(config) {\n const verifiedConfig = providerRegistrationConfig.runWithException(config);\n const commandId = nanoid(10);\n return this.main.registerProvider({ config: verifiedConfig, commandId });\n }\n}\n\nclass AsyncSequelizer {\n minSequenceInterval;\n queue = [];\n isExecutingQueue = false;\n constructor(minSequenceInterval = 0) {\n this.minSequenceInterval = minSequenceInterval;\n }\n enqueue(action) {\n return new Promise((resolve, reject) => {\n this.queue.push({ action, resolve, reject });\n this.executeQueue();\n });\n }\n async executeQueue() {\n if (this.isExecutingQueue) {\n return;\n }\n this.isExecutingQueue = true;\n while (this.queue.length) {\n const operation = this.queue.shift();\n if (!operation) {\n this.isExecutingQueue = false;\n return;\n }\n try {\n const actionResult = await operation.action();\n operation.resolve(actionResult);\n }\n catch (error) {\n operation.reject(error);\n }\n await this.intervalBreak();\n }\n this.isExecutingQueue = false;\n }\n intervalBreak() {\n return new Promise((res) => setTimeout(res, this.minSequenceInterval));\n }\n}\n\nclass LimitsTracker {\n limitsLookup = {};\n limitsData = {};\n enableTracking(limits, queryId) {\n this.limitsLookup[queryId] = {};\n this.limitsData[queryId] = {\n maxResults: limits.maxResults ? limits.maxResults : Number.MAX_SAFE_INTEGER,\n maxResultsPerType: limits.maxResultsPerType ? limits.maxResultsPerType : Number.MAX_SAFE_INTEGER\n };\n }\n testResultLimit(command) {\n const foundLookup = this.limitsLookup[command.identification.queryId];\n const limitData = this.limitsData[command.identification.queryId];\n if (!foundLookup || !limitData) {\n return;\n }\n let providerStateLookup = foundLookup[command.identification.providerId];\n if (!providerStateLookup) {\n providerStateLookup = { total: 0 };\n foundLookup[command.identification.providerId] = providerStateLookup;\n }\n if ((providerStateLookup.total + 1) > limitData.maxResults) {\n return { maxLimitHit: true };\n }\n const resultTypeName = command.result.type.name;\n if (!resultTypeName) {\n return;\n }\n const currentResultTypeCount = providerStateLookup[resultTypeName] || 0;\n if ((currentResultTypeCount + 1) > limitData.maxResultsPerType) {\n return { maxLimitPerTypeHit: true };\n }\n }\n update(command) {\n const foundLookup = this.limitsLookup[command.identification.queryId];\n const limitData = this.limitsData[command.identification.queryId];\n if (!foundLookup || !limitData) {\n return;\n }\n const providerStateLookup = foundLookup[command.identification.providerId];\n providerStateLookup.total += 1;\n const resultTypeName = command.result.type.name;\n if (!resultTypeName) {\n return;\n }\n providerStateLookup[resultTypeName] = providerStateLookup[resultTypeName] ? providerStateLookup[resultTypeName] + 1 : 1;\n }\n cleanTracking(queryId) {\n delete this.limitsLookup[queryId];\n delete this.limitsData[queryId];\n }\n}\n\nclass ClientQuery {\n controller;\n logger;\n masterQueryId;\n constructor(controller, logger, masterQueryId) {\n this.controller = controller;\n this.logger = logger;\n this.masterQueryId = masterQueryId;\n }\n exposeFacade() {\n const providerQueryFacade = {\n cancel: this.cancel.bind(this),\n onResults: this.onResults.bind(this),\n onCompleted: this.onCompleted.bind(this),\n onError: this.onError.bind(this)\n };\n return Object.freeze(providerQueryFacade);\n }\n async cancel() {\n const commandId = nanoid(10);\n this.logger.info(`[${commandId}] received a valid query cancel request, forwarding to the controller.`);\n await this.controller.cancelQuery(this.masterQueryId, commandId);\n this.logger.info(`[${commandId}] the cancel request was completed.`);\n }\n onResults(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"onQuery requires a callback of type function\");\n }\n const commandId = nanoid(10);\n this.logger.info(`[${commandId}] received a valid query onResults request, forwarding to the controller.`);\n const unsubscribe = this.controller.processClientOnResults({ callback, masterQueryId: this.masterQueryId, commandId });\n this.logger.info(`[${commandId}] the onResults request was completed.`);\n return unsubscribe;\n }\n onCompleted(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"onQuery requires a callback of type function\");\n }\n const commandId = nanoid(10);\n this.logger.info(`[${commandId}] received a valid query onCompleted request, forwarding to the controller.`);\n const unsubscribe = this.controller.processClientOnCompleted({ callback, masterQueryId: this.masterQueryId, commandId });\n this.logger.info(`[${commandId}] the onCompleted request was completed.`);\n return unsubscribe;\n }\n onError(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"onQuery requires a callback of type function\");\n }\n const commandId = nanoid(10);\n this.logger.info(`[${commandId}] received a valid query onError request, forwarding to the controller.`);\n const unsubscribe = this.controller.processClientOnError({ callback, masterQueryId: this.masterQueryId, commandId });\n this.logger.info(`[${commandId}] the onError request was completed.`);\n return unsubscribe;\n }\n}\n\nclass ProviderModel {\n myData;\n controller;\n logger;\n constructor(myData, controller, logger) {\n this.myData = myData;\n this.controller = controller;\n this.logger = logger;\n }\n get id() {\n return this.myData.id;\n }\n get name() {\n return this.myData.name;\n }\n get appName() {\n return this.myData.appName;\n }\n get types() {\n return this.myData.types;\n }\n get myProviderData() {\n return Object.assign({}, this.myData);\n }\n exposeFacade() {\n const providerFacade = {\n interopId: this.myData.interopId,\n id: this.id,\n name: this.name,\n appName: this.appName,\n types: this.types,\n onQuery: this.onQuery.bind(this),\n onQueryCancel: this.onQueryCancel.bind(this),\n unregister: this.unregister.bind(this)\n };\n return Object.freeze(providerFacade);\n }\n onQuery(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"onQuery requires a callback of type function\");\n }\n const commandId = nanoid(10);\n this.logger.info(`[${commandId}] received a valid onQuery request, forwarding to the controller.`);\n const unsubscribe = this.controller.processProviderOnQuery({ callback, id: this.id, commandId });\n this.logger.info(`[${commandId}] the onQuery request was completed.`);\n return unsubscribe;\n }\n onQueryCancel(callback) {\n if (typeof callback !== \"function\") {\n throw new Error(\"onQuery requires a callback of type function\");\n }\n const commandId = nanoid(10);\n this.logger.info(`[${commandId}] received a valid onQueryCancel request, forwarding to the controller.`);\n const unsubscribe = this.controller.processProviderOnQueryCancel({ callback, id: this.id, commandId });\n this.logger.info(`[${commandId}] the onQueryCancel request was completed.`);\n return unsubscribe;\n }\n async unregister() {\n const commandId = nanoid(10);\n this.logger.info(`[${commandId}] received a valid unregister request, forwarding to the controller.`);\n await this.controller.processProviderUnregister({ id: this.id, commandId });\n this.logger.info(`[${commandId}] the unregister request was completed.`);\n }\n}\n\nclass ProviderQueryModel {\n myData;\n controller;\n logger;\n identification;\n constructor(myData, controller, logger, identification) {\n this.myData = myData;\n this.controller = controller;\n this.logger = logger;\n this.identification = identification;\n }\n get id() {\n return this.identification.queryId;\n }\n get search() {\n return this.myData.search;\n }\n get providers() {\n return this.myData.providers;\n }\n get types() {\n return this.myData.types;\n }\n get providerLimits() {\n return this.myData.providerLimits;\n }\n get myQueryData() {\n return Object.assign({}, this.myData);\n }\n exposeFacade() {\n const providerQueryFacade = {\n id: this.id,\n search: this.search,\n providers: this.providers,\n types: this.types,\n providerLimits: this.providerLimits,\n sendResult: this.sendResult.bind(this),\n error: this.error.bind(this),\n done: this.done.bind(this)\n };\n return Object.freeze(providerQueryFacade);\n }\n sendResult(result) {\n queryResultDecoder.runWithException(result);\n const commandId = nanoid(10);\n this.logger.trace(`[${commandId}] Received a valid result, forwarding to the controller`);\n return this.controller.processProviderQueryResult({ identification: this.identification, result, commandId });\n }\n error(error) {\n const commandId = nanoid(10);\n nonEmptyStringDecoder.runWithException(error);\n this.logger.trace(`[${commandId}] Received a valid error, forwarding to the controller`);\n this.controller.processProviderQueryError({ identification: this.identification, error, commandId }).catch((error) => this.logger.warn(`Error processing the error signal for this provider: ${this.id}, error: ${extractErrorMsg(error)}`));\n }\n done() {\n const commandId = nanoid(10);\n this.logger.trace(`[${commandId}] Received a valid done, forwarding to the controller`);\n this.controller.processProviderQueryDone({ identification: this.identification, commandId }).catch((error) => this.logger.warn(`Error processing the done signal for this provider: ${this.identification.providerId}, error: ${extractErrorMsg(error)}`));\n }\n}\n\nclass QueryResultsPublisher {\n sequelizer;\n glueController;\n logger;\n clientInstanceId;\n queryId;\n isLegacy;\n queues = {};\n constructor(sequelizer, glueController, logger, clientInstanceId, queryId, isLegacy) {\n this.sequelizer = sequelizer;\n this.glueController = glueController;\n this.logger = logger;\n this.clientInstanceId = clientInstanceId;\n this.queryId = queryId;\n this.isLegacy = isLegacy;\n }\n checkProviderSuspended(providerId) {\n return this.queues[providerId] ? !!this.queues[providerId].suspended : false;\n }\n syncSuspendProvider(providerId, commandId) {\n const providerQueue = this.queues[providerId];\n if (!providerQueue) {\n this.logger.warn(`[${commandId}] Cannot suspend provider: ${providerId}, because there is no provider queue. This happens when the provider queue was already cancelled or completed`);\n return;\n }\n providerQueue.suspended = true;\n }\n configureProviders(providers) {\n providers.forEach((provider) => {\n this.queues[provider.myProviderData.id] = {\n providerData: provider,\n pendingResults: []\n };\n });\n }\n queueResult(command) {\n const { commandId, identification } = command;\n this.logger.trace(`[${commandId}] Queuing a new result from provider: ${identification.providerId}`);\n const providerQueue = this.queues[identification.providerId];\n if (!providerQueue) {\n this.logger.warn(`[${commandId}] Cannot queue this result, because there is no provider queue. This happens when the provider queue was already cancelled or completed`);\n return;\n }\n const result = this.isLegacy ? this.translateLegacySearchItem(command.result) : command.result;\n providerQueue.pendingResults.push(result);\n clearTimeout(providerQueue.flushTimer);\n if (providerQueue.pendingResults.length === 10) {\n this.logger.trace(`[${commandId}] Reached the limit in the queue buffer, flushing to the client.`);\n this.flushProviderQueue(identification.providerId, commandId);\n return;\n }\n this.logger.trace(`[${commandId}] The limit in the queue buffer is not reached yet, setting a flush timer.`);\n providerQueue.flushTimer = setTimeout(() => {\n this.logger.trace(`[${commandId}] Reached the time limit in the queue buffer, flushing to the client.`);\n this.flushProviderQueue(identification.providerId, commandId);\n }, FLUSH_TIMEOUT_MS);\n }\n cancel(commandId) {\n this.logger.trace(`[${commandId}] Cancelling queue ${this.queryId}.`);\n Object.values(this.queues).forEach((queue) => clearTimeout(queue.flushTimer));\n this.queues = {};\n this.logger.trace(`[${commandId}] Queue ${this.queryId} publisher cancelled.`);\n }\n async markProviderDone(providerId, commandId) {\n this.logger.trace(`[${commandId}] Marking provider ${providerId} as done.`);\n const providerQueue = this.queues[providerId];\n if (!providerQueue) {\n this.logger.info(`[${commandId}] Cannot mark this queue as done, because there is no provider queue. This happens when the provider queue was already cancelled, completed or the provider sent an error`);\n return;\n }\n clearTimeout(providerQueue.flushTimer);\n await this.flushProviderQueue(providerId, commandId);\n delete this.queues[providerId];\n this.logger.trace(`[${commandId}] Provider ${providerId} marked as done.`);\n }\n markProviderError(command) {\n const providerQueue = this.queues[command.identification.providerId];\n if (!providerQueue) {\n this.logger.warn(`[${command.commandId}] Cannot mark this provider as errored, because there is no provider queue. This happens when the provider queue was already cancelled, completed or the provider sent and error`);\n return;\n }\n this.glueController.sendClientErrorMessage(command.error, this.clientInstanceId, this.queryId, providerQueue.providerData.myProviderData)\n .catch((error) => this.logger.warn(`[${command.commandId}] The client errored when handling error message for query: ${this.queryId} -> ${extractErrorMsg(error)}`));\n }\n cleanPublisher(commandId) {\n Object.values(this.queues).forEach((queue) => clearTimeout(queue.flushTimer));\n this.queues = {};\n this.glueController.sendClientQueueCompleted(this.clientInstanceId, this.queryId)\n .catch((error) => this.logger.warn(`[${commandId}] The client errored when handling search end message for query: ${this.queryId} -> ${extractErrorMsg(error)}`));\n }\n async flushProviderQueue(providerId, commandId) {\n await this.sequelizer.enqueue(async () => {\n const providerQueue = this.queues[providerId];\n if (!providerQueue) {\n this.logger.warn(`[${commandId}] Cannot flush this queue, because there is no provider queue. This happens when the provider queue was already cancelled, completed or the provider sent and error`);\n return;\n }\n if (!providerQueue.pendingResults.length) {\n this.logger.info(`[${commandId}] This provider does not have any pending results to flush.`);\n return;\n }\n const resultBatch = {\n results: providerQueue.pendingResults,\n provider: providerQueue.providerData.myProviderData\n };\n providerQueue.pendingResults = [];\n try {\n await this.glueController.sendClientResultsBatch(resultBatch, this.clientInstanceId, this.queryId);\n }\n catch (error) {\n this.logger.warn(`[${commandId}] The client errored when handling search results for query: ${this.queryId} -> ${extractErrorMsg(error)}`);\n }\n });\n }\n translateLegacySearchItem(searchResult) {\n return {\n type: searchResult.type.name,\n category: searchResult.type.displayName,\n id: searchResult.id,\n displayName: searchResult.displayName,\n description: searchResult.description,\n iconURL: searchResult.iconURL,\n action: searchResult.action\n };\n }\n}\n\nclass ModelFactory {\n glueController;\n glue;\n flushSequelizer;\n constructor(glueController, glue, flushSequelizer) {\n this.glueController = glueController;\n this.glue = glue;\n this.flushSequelizer = flushSequelizer;\n }\n buildProviderModel(providerData, controller) {\n return new ProviderModel(providerData, controller, this.glue.logger.subLogger(`search.provider.model.${providerData.name}`));\n }\n buildProviderQueryModel(queryConfig, identification, controller) {\n return new ProviderQueryModel(queryConfig, controller, this.glue.logger.subLogger(`search.provider.${identification.providerId}.query.${identification.queryId}`), identification);\n }\n buildPublisher(clientInstanceId, queryId, isLegacy) {\n return new QueryResultsPublisher(this.flushSequelizer, this.glueController, this.glue.logger.subLogger(`search.results.publisher.${queryId}`), clientInstanceId, queryId, isLegacy);\n }\n buildClientQueryModel(masterQueryId, controller) {\n return new ClientQuery(controller, this.glue.logger.subLogger(`search.provider.model.${masterQueryId}`), masterQueryId);\n }\n}\n\nclass IoC {\n glue;\n config;\n _glueController;\n _facade;\n _mainController;\n _providerController;\n _clientController;\n _asyncSequelizer;\n _flushSequelizer;\n _limitsTracker;\n _modelFactory;\n constructor(glue, config) {\n this.glue = glue;\n this.config = config;\n }\n get glueController() {\n if (!this._glueController) {\n this._glueController = new GlueController(this.glue);\n }\n return this._glueController;\n }\n get main() {\n if (!this._mainController) {\n this._mainController = new MainController(this.glue.logger.subLogger(\"search.main.controller\"), this.glueController, this.clientController, this.providerController);\n }\n return this._mainController;\n }\n get clientController() {\n if (!this._clientController) {\n this._clientController = new ClientController(this.glue.logger.subLogger(\"search.client.controller\"), this.glueController, this.modelFactory);\n }\n return this._clientController;\n }\n get providerController() {\n if (!this._providerController) {\n this._providerController = new ProviderController(this.glue.logger.subLogger(\"search.provider.controller\"), this.glueController, this.sequelizer, this.limitsTracker, this.modelFactory);\n }\n return this._providerController;\n }\n get facade() {\n if (!this._facade) {\n this._facade = new SearchFacade(this.main);\n }\n return this._facade;\n }\n get sequelizer() {\n if (!this._asyncSequelizer) {\n this._asyncSequelizer = new AsyncSequelizer(SEQUELIZER_INTERVAL_MS);\n }\n return this._asyncSequelizer;\n }\n get flushSequelizer() {\n if (!this._flushSequelizer) {\n this._flushSequelizer = new AsyncSequelizer(FLUSH_SEQUELIZER_INTERVAL_MS);\n }\n return this._flushSequelizer;\n }\n get limitsTracker() {\n if (!this._limitsTracker) {\n this._limitsTracker = new LimitsTracker();\n }\n return this._limitsTracker;\n }\n get modelFactory() {\n if (!this._modelFactory) {\n this._modelFactory = new ModelFactory(this.glueController, this.glue, this.flushSequelizer);\n }\n return this._modelFactory;\n }\n}\n\nconst factoryFunction = async (io, config) => {\n const ioc = new IoC(io, config);\n io.search = ioc.facade.exposeApi();\n};\nif (typeof window !== \"undefined\") {\n window.IOSearch = factoryFunction;\n}\n\nexport { factoryFunction as default };\n//# sourceMappingURL=search-api.es.js.map\n",null,"var MetricTypes = {\n STRING: 1,\n NUMBER: 2,\n TIMESTAMP: 3,\n OBJECT: 4\n};\n\nfunction getMetricTypeByValue(metric) {\n if (metric.type === MetricTypes.TIMESTAMP) {\n return \"timestamp\";\n }\n else if (metric.type === MetricTypes.NUMBER) {\n return \"number\";\n }\n else if (metric.type === MetricTypes.STRING) {\n return \"string\";\n }\n else if (metric.type === MetricTypes.OBJECT) {\n return \"object\";\n }\n return \"unknown\";\n}\nfunction getTypeByValue(value) {\n if (value.constructor === Date) {\n return \"timestamp\";\n }\n else if (typeof value === \"number\") {\n return \"number\";\n }\n else if (typeof value === \"string\") {\n return \"string\";\n }\n else if (typeof value === \"object\") {\n return \"object\";\n }\n else {\n return \"string\";\n }\n}\nfunction serializeMetric(metric) {\n const serializedMetrics = {};\n const type = getMetricTypeByValue(metric);\n if (type === \"object\") {\n const values = Object.keys(metric.value).reduce((memo, key) => {\n const innerType = getTypeByValue(metric.value[key]);\n if (innerType === \"object\") {\n const composite = defineNestedComposite(metric.value[key]);\n memo[key] = {\n type: \"object\",\n description: \"\",\n context: {},\n composite,\n };\n }\n else {\n memo[key] = {\n type: innerType,\n description: \"\",\n context: {},\n };\n }\n return memo;\n }, {});\n serializedMetrics.composite = values;\n }\n serializedMetrics.name = normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name);\n serializedMetrics.type = type;\n serializedMetrics.description = metric.description;\n serializedMetrics.context = {};\n return serializedMetrics;\n}\nfunction defineNestedComposite(values) {\n return Object.keys(values).reduce((memo, key) => {\n const type = getTypeByValue(values[key]);\n if (type === \"object\") {\n memo[key] = {\n type: \"object\",\n description: \"\",\n context: {},\n composite: defineNestedComposite(values[key]),\n };\n }\n else {\n memo[key] = {\n type,\n description: \"\",\n context: {},\n };\n }\n return memo;\n }, {});\n}\nfunction normalizeMetricName(name) {\n if (typeof name !== \"undefined\" && name.length > 0 && name[0] !== \"/\") {\n return \"/\" + name;\n }\n else {\n return name;\n }\n}\nfunction getMetricValueByType(metric) {\n const type = getMetricTypeByValue(metric);\n if (type === \"timestamp\") {\n return Date.now();\n }\n else {\n return publishNestedComposite(metric.value);\n }\n}\nfunction publishNestedComposite(values) {\n if (typeof values !== \"object\") {\n return values;\n }\n return Object.keys(values).reduce((memo, key) => {\n const value = values[key];\n if (typeof value === \"object\" && value.constructor !== Date) {\n memo[key] = publishNestedComposite(value);\n }\n else if (value.constructor === Date) {\n memo[key] = new Date(value).getTime();\n }\n else if (value.constructor === Boolean) {\n memo[key] = value.toString();\n }\n else {\n memo[key] = value;\n }\n return memo;\n }, {});\n}\nfunction flatten(arr) {\n return arr.reduce((flat, toFlatten) => {\n return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);\n }, []);\n}\nfunction getHighestState(arr) {\n return arr.sort((a, b) => {\n if (!a.state) {\n return 1;\n }\n if (!b.state) {\n return -1;\n }\n return b.state - a.state;\n })[0];\n}\nfunction aggregateDescription(arr) {\n let msg = \"\";\n arr.forEach((m, idx, a) => {\n const path = m.path.join(\".\");\n if (idx === a.length - 1) {\n msg += path + \".\" + m.name + \": \" + m.description;\n }\n else {\n msg += path + \".\" + m.name + \": \" + m.description + \",\";\n }\n });\n if (msg.length > 100) {\n return msg.slice(0, 100) + \"...\";\n }\n else {\n return msg;\n }\n}\nfunction composeMsgForRootStateMetric(system) {\n const aggregatedState = system.root.getAggregateState();\n const merged = flatten(aggregatedState);\n const highestState = getHighestState(merged);\n const aggregateDesc = aggregateDescription(merged);\n return {\n description: aggregateDesc,\n value: highestState.state,\n };\n}\n\nfunction gw3 (connection, config) {\n if (!connection || typeof connection !== \"object\") {\n throw new Error(\"Connection is required parameter\");\n }\n let joinPromise;\n let session;\n const init = (repo) => {\n let resolveReadyPromise;\n joinPromise = new Promise((resolve) => {\n resolveReadyPromise = resolve;\n });\n session = connection.domain(\"metrics\");\n session.onJoined((reconnect) => {\n if (!reconnect && resolveReadyPromise) {\n resolveReadyPromise();\n resolveReadyPromise = undefined;\n }\n const rootStateMetric = {\n name: \"/State\",\n type: \"object\",\n composite: {\n Description: {\n type: \"string\",\n description: \"\",\n },\n Value: {\n type: \"number\",\n description: \"\",\n },\n },\n description: \"System state\",\n context: {},\n };\n const defineRootMetricsMsg = {\n type: \"define\",\n metrics: [rootStateMetric],\n };\n session.send(defineRootMetricsMsg);\n if (reconnect) {\n replayRepo(repo);\n }\n });\n session.join({\n system: config.system,\n service: config.service,\n instance: config.instance\n });\n };\n const replayRepo = (repo) => {\n replaySystem(repo.root);\n };\n const replaySystem = (system) => {\n createSystem(system);\n system.metrics.forEach((m) => {\n createMetric(m);\n });\n system.subSystems.forEach((ss) => {\n replaySystem(ss);\n });\n };\n const createSystem = async (system) => {\n if (system.parent === undefined) {\n return;\n }\n await joinPromise;\n const metric = {\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\n type: \"object\",\n composite: {\n Description: {\n type: \"string\",\n description: \"\",\n },\n Value: {\n type: \"number\",\n description: \"\",\n },\n },\n description: \"System state\",\n context: {},\n };\n const createMetricsMsg = {\n type: \"define\",\n metrics: [metric],\n };\n session.send(createMetricsMsg);\n };\n const updateSystem = async (system, state) => {\n await joinPromise;\n const shadowedUpdateMetric = {\n type: \"publish\",\n values: [{\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\n value: {\n Description: state.description,\n Value: state.state,\n },\n timestamp: Date.now(),\n }],\n };\n session.send(shadowedUpdateMetric);\n const stateObj = composeMsgForRootStateMetric(system);\n const rootMetric = {\n type: \"publish\",\n peer_id: connection.peerId,\n values: [{\n name: \"/State\",\n value: {\n Description: stateObj.description,\n Value: stateObj.value,\n },\n timestamp: Date.now(),\n }],\n };\n session.send(rootMetric);\n };\n const createMetric = async (metric) => {\n const metricClone = cloneMetric(metric);\n await joinPromise;\n const m = serializeMetric(metricClone);\n const createMetricsMsg = {\n type: \"define\",\n metrics: [m],\n };\n session.send(createMetricsMsg);\n if (typeof metricClone.value !== \"undefined\") {\n updateMetricCore(metricClone);\n }\n };\n const updateMetric = async (metric) => {\n const metricClone = cloneMetric(metric);\n await joinPromise;\n updateMetricCore(metricClone);\n };\n const updateMetricCore = (metric) => {\n if (canUpdate()) {\n const value = getMetricValueByType(metric);\n const publishMetricsMsg = {\n type: \"publish\",\n values: [{\n name: normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name),\n value,\n timestamp: Date.now(),\n }],\n };\n return session.sendFireAndForget(publishMetricsMsg);\n }\n return Promise.resolve();\n };\n const cloneMetric = (metric) => {\n const metricClone = { ...metric };\n if (typeof metric.value === \"object\" && metric.value !== null) {\n metricClone.value = { ...metric.value };\n }\n return metricClone;\n };\n const canUpdate = () => {\n try {\n const func = config.canUpdateMetric ?? (() => true);\n return func();\n }\n catch {\n return true;\n }\n };\n return {\n init,\n createSystem,\n updateSystem,\n createMetric,\n updateMetric,\n };\n}\n\nvar Helpers = {\n validate: (definition, parent, transport) => {\n if (definition === null || typeof definition !== \"object\") {\n throw new Error(\"Missing definition\");\n }\n if (parent === null || typeof parent !== \"object\") {\n throw new Error(\"Missing parent\");\n }\n if (transport === null || typeof transport !== \"object\") {\n throw new Error(\"Missing transport\");\n }\n },\n};\n\nclass BaseMetric {\n definition;\n system;\n transport;\n value;\n type;\n path = [];\n name;\n description;\n get repo() {\n return this.system?.repo;\n }\n get id() { return `${this.system.path}/${name}`; }\n constructor(definition, system, transport, value, type) {\n this.definition = definition;\n this.system = system;\n this.transport = transport;\n this.value = value;\n this.type = type;\n Helpers.validate(definition, system, transport);\n this.path = system.path.slice(0);\n this.path.push(system.name);\n this.name = definition.name;\n this.description = definition.description;\n transport.createMetric(this);\n }\n update(newValue) {\n this.value = newValue;\n return this.transport.updateMetric(this);\n }\n}\n\nclass NumberMetric extends BaseMetric {\n constructor(definition, system, transport, value) {\n super(definition, system, transport, value, MetricTypes.NUMBER);\n }\n incrementBy(num) {\n this.update(this.value + num);\n }\n increment() {\n this.incrementBy(1);\n }\n decrement() {\n this.incrementBy(-1);\n }\n decrementBy(num) {\n this.incrementBy(num * -1);\n }\n}\n\nclass ObjectMetric extends BaseMetric {\n constructor(definition, system, transport, value) {\n super(definition, system, transport, value, MetricTypes.OBJECT);\n }\n update(newValue) {\n this.mergeValues(newValue);\n return this.transport.updateMetric(this);\n }\n mergeValues(values) {\n return Object.keys(this.value).forEach((k) => {\n if (typeof values[k] !== \"undefined\") {\n this.value[k] = values[k];\n }\n });\n }\n}\n\nclass StringMetric extends BaseMetric {\n constructor(definition, system, transport, value) {\n super(definition, system, transport, value, MetricTypes.STRING);\n }\n}\n\nclass TimestampMetric extends BaseMetric {\n constructor(definition, system, transport, value) {\n super(definition, system, transport, value, MetricTypes.TIMESTAMP);\n }\n now() {\n this.update(new Date());\n }\n}\n\nfunction system(name, repo, protocol, parent, description) {\n if (!repo) {\n throw new Error(\"Repository is required\");\n }\n if (!protocol) {\n throw new Error(\"Transport is required\");\n }\n const _transport = protocol;\n const _name = name;\n const _description = description || \"\";\n const _repo = repo;\n const _parent = parent;\n const _path = _buildPath(parent);\n let _state = {};\n const id = _arrayToString(_path, \"/\") + name;\n const root = repo.root;\n const _subSystems = [];\n const _metrics = [];\n function subSystem(nameSystem, descriptionSystem) {\n if (!nameSystem || nameSystem.length === 0) {\n throw new Error(\"name is required\");\n }\n const match = _subSystems.filter((s) => s.name === nameSystem);\n if (match.length > 0) {\n return match[0];\n }\n const _system = system(nameSystem, _repo, _transport, me, descriptionSystem);\n _subSystems.push(_system);\n return _system;\n }\n function setState(state, stateDescription) {\n _state = { state, description: stateDescription };\n _transport.updateSystem(me, _state);\n }\n function stringMetric(definition, value) {\n return _getOrCreateMetric(definition, MetricTypes.STRING, value, (metricDef) => new StringMetric(metricDef, me, _transport, value));\n }\n function numberMetric(definition, value) {\n return _getOrCreateMetric(definition, MetricTypes.NUMBER, value, (metricDef) => new NumberMetric(metricDef, me, _transport, value));\n }\n function objectMetric(definition, value) {\n return _getOrCreateMetric(definition, MetricTypes.OBJECT, value, (metricDef) => new ObjectMetric(metricDef, me, _transport, value));\n }\n function timestampMetric(definition, value) {\n return _getOrCreateMetric(definition, MetricTypes.TIMESTAMP, value, (metricDef) => new TimestampMetric(metricDef, me, _transport, value));\n }\n function _getOrCreateMetric(metricObject, expectedType, value, createMetric) {\n let metricDef = { name: \"\" };\n if (typeof metricObject === \"string\") {\n metricDef = { name: metricObject };\n }\n else {\n metricDef = metricObject;\n }\n const matching = _metrics.filter((shadowedMetric) => shadowedMetric.name === metricDef.name);\n if (matching.length > 0) {\n const existing = matching[0];\n if (existing.type !== expectedType) {\n throw new Error(`A metric named ${metricDef.name} is already defined with different type.`);\n }\n if (typeof value !== \"undefined\") {\n existing\n .update(value)\n .catch(() => { });\n }\n return existing;\n }\n const metric = createMetric(metricDef);\n _metrics.push(metric);\n return metric;\n }\n function _buildPath(shadowedSystem) {\n if (!shadowedSystem || !shadowedSystem.parent) {\n return [];\n }\n const path = _buildPath(shadowedSystem.parent);\n path.push(shadowedSystem.name);\n return path;\n }\n function _arrayToString(path, separator) {\n return ((path && path.length > 0) ? path.join(separator) : \"\");\n }\n function getAggregateState() {\n const aggState = [];\n if (Object.keys(_state).length > 0) {\n aggState.push({\n name: _name,\n path: _path,\n state: _state.state,\n description: _state.description,\n });\n }\n _subSystems.forEach((shadowedSubSystem) => {\n const result = shadowedSubSystem.getAggregateState();\n if (result.length > 0) {\n aggState.push(...result);\n }\n });\n return aggState;\n }\n const me = {\n get name() {\n return _name;\n },\n get description() {\n return _description;\n },\n get repo() {\n return _repo;\n },\n get parent() {\n return _parent;\n },\n path: _path,\n id,\n root,\n get subSystems() {\n return _subSystems;\n },\n get metrics() {\n return _metrics;\n },\n subSystem,\n getState: () => {\n return _state;\n },\n setState,\n stringMetric,\n timestampMetric,\n objectMetric,\n numberMetric,\n getAggregateState,\n };\n _transport.createSystem(me);\n return me;\n}\n\nclass Repository {\n root;\n constructor(options, protocol) {\n protocol.init(this);\n this.root = system(\"\", this, protocol);\n this.addSystemMetrics(this.root, options.clickStream || options.clickStream === undefined);\n }\n addSystemMetrics(rootSystem, useClickStream) {\n if (typeof navigator !== \"undefined\") {\n rootSystem.stringMetric(\"UserAgent\", navigator.userAgent);\n }\n if (useClickStream && typeof document !== \"undefined\") {\n const clickStream = rootSystem.subSystem(\"ClickStream\");\n const documentClickHandler = (e) => {\n if (!e.target) {\n return;\n }\n const target = e.target;\n const className = target ? target.getAttribute(\"class\") ?? \"\" : \"\";\n clickStream.objectMetric(\"LastBrowserEvent\", {\n type: \"click\",\n timestamp: new Date(),\n target: {\n className,\n id: target.id,\n type: \"<\" + target.tagName.toLowerCase() + \">\",\n href: target.href || \"\",\n },\n });\n };\n clickStream.objectMetric(\"Page\", {\n title: document.title,\n page: window.location.href,\n });\n if (document.addEventListener) {\n document.addEventListener(\"click\", documentClickHandler);\n }\n else {\n document.attachEvent(\"onclick\", documentClickHandler);\n }\n }\n rootSystem.stringMetric(\"StartTime\", (new Date()).toString());\n const urlMetric = rootSystem.stringMetric(\"StartURL\", \"\");\n const appNameMetric = rootSystem.stringMetric(\"AppName\", \"\");\n if (typeof window !== \"undefined\") {\n if (typeof window.location !== \"undefined\") {\n const startUrl = window.location.href;\n urlMetric.update(startUrl);\n }\n if (typeof window.glue42gd !== \"undefined\") {\n appNameMetric.update(window.glue42gd.appName);\n }\n }\n }\n}\n\nclass NullProtocol {\n init(repo) {\n }\n createSystem(system) {\n return Promise.resolve();\n }\n updateSystem(metric, state) {\n return Promise.resolve();\n }\n createMetric(metric) {\n return Promise.resolve();\n }\n updateMetric(metric) {\n return Promise.resolve();\n }\n}\n\nclass PerfTracker {\n api;\n lastCount = 0;\n initialPublishTimeout = 10 * 1000;\n publishInterval = 60 * 1000;\n system;\n constructor(api, initialPublishTimeout, publishInterval) {\n this.api = api;\n this.initialPublishTimeout = initialPublishTimeout ?? this.initialPublishTimeout;\n this.publishInterval = publishInterval ?? this.publishInterval;\n this.scheduleCollection();\n this.system = this.api.subSystem(\"performance\", \"Performance data published by the web application\");\n }\n scheduleCollection() {\n setTimeout(() => {\n this.collect();\n setInterval(() => {\n this.collect();\n }, this.publishInterval);\n }, this.initialPublishTimeout);\n }\n collect() {\n try {\n this.collectMemory();\n this.collectEntries();\n }\n catch {\n }\n }\n collectMemory() {\n const memory = window.performance.memory;\n this.system.stringMetric(\"memory\", JSON.stringify({\n totalJSHeapSize: memory.totalJSHeapSize,\n usedJSHeapSize: memory.usedJSHeapSize\n }));\n }\n collectEntries() {\n const allEntries = window.performance.getEntries();\n if (allEntries.length <= this.lastCount) {\n return;\n }\n this.lastCount = allEntries.length;\n const jsonfiedEntries = allEntries.map((i) => i.toJSON());\n this.system.stringMetric(\"entries\", JSON.stringify(jsonfiedEntries));\n }\n}\n\nvar metrics = (options) => {\n let protocol;\n if (!options.connection || typeof options.connection !== \"object\") {\n protocol = new NullProtocol();\n }\n else {\n protocol = gw3(options.connection, options);\n }\n const repo = new Repository(options, protocol);\n let rootSystem = repo.root;\n if (!options.disableAutoAppSystem) {\n rootSystem = rootSystem.subSystem(\"App\");\n }\n const api = addFAVSupport(rootSystem);\n initPerf(api, options.pagePerformanceMetrics);\n return api;\n};\nfunction initPerf(api, config) {\n if (typeof window === \"undefined\") {\n return;\n }\n const perfConfig = window?.glue42gd?.metrics?.pagePerformanceMetrics;\n if (perfConfig) {\n config = perfConfig;\n }\n if (config?.enabled) {\n new PerfTracker(api, config.initialPublishTimeout, config.publishInterval);\n }\n}\nfunction addFAVSupport(system) {\n const reportingSystem = system.subSystem(\"reporting\");\n const def = {\n name: \"features\"\n };\n let featureMetric;\n const featureMetricFunc = (name, action, payload) => {\n if (typeof name === \"undefined\" || name === \"\") {\n throw new Error(\"name is mandatory\");\n }\n else if (typeof action === \"undefined\" || action === \"\") {\n throw new Error(\"action is mandatory\");\n }\n else if (typeof payload === \"undefined\" || payload === \"\") {\n throw new Error(\"payload is mandatory\");\n }\n if (!featureMetric) {\n featureMetric = reportingSystem.objectMetric(def, { name, action, payload });\n }\n else {\n featureMetric.update({\n name,\n action,\n payload\n });\n }\n };\n system.featureMetric = featureMetricFunc;\n return system;\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\ncreateRegistry.default = createRegistry;\nvar lib = createRegistry;\n\n\nvar CallbackRegistryFactory = /*@__PURE__*/getDefaultExportFromCjs(lib);\n\nclass InProcTransport {\n gw;\n registry = CallbackRegistryFactory();\n client;\n constructor(settings, logger) {\n this.gw = settings.facade;\n this.gw.connect((_client, message) => {\n this.messageHandler(message);\n }).then((client) => {\n this.client = client;\n });\n }\n get isObjectBasedTransport() {\n return true;\n }\n sendObject(msg) {\n if (this.client) {\n this.client.send(msg);\n return Promise.resolve(undefined);\n }\n else {\n return Promise.reject(`not connected`);\n }\n }\n send(_msg) {\n return Promise.reject(\"not supported\");\n }\n onMessage(callback) {\n return this.registry.add(\"onMessage\", callback);\n }\n onConnectedChanged(callback) {\n callback(true);\n return () => { };\n }\n close() {\n return Promise.resolve();\n }\n open() {\n return Promise.resolve();\n }\n name() {\n return \"in-memory\";\n }\n reconnect() {\n return Promise.resolve();\n }\n messageHandler(msg) {\n this.registry.execute(\"onMessage\", msg);\n }\n}\n\nclass SharedWorkerTransport {\n logger;\n worker;\n registry = CallbackRegistryFactory();\n constructor(workerFile, logger) {\n this.logger = logger;\n this.worker = new SharedWorker(workerFile);\n this.worker.port.onmessage = (e) => {\n this.messageHandler(e.data);\n };\n }\n get isObjectBasedTransport() {\n return true;\n }\n sendObject(msg) {\n this.worker.port.postMessage(msg);\n return Promise.resolve();\n }\n send(_msg) {\n return Promise.reject(\"not supported\");\n }\n onMessage(callback) {\n return this.registry.add(\"onMessage\", callback);\n }\n onConnectedChanged(callback) {\n callback(true);\n return () => { };\n }\n close() {\n return Promise.resolve();\n }\n open() {\n return Promise.resolve();\n }\n name() {\n return \"shared-worker\";\n }\n reconnect() {\n return Promise.resolve();\n }\n messageHandler(msg) {\n this.registry.execute(\"onMessage\", msg);\n }\n}\n\nclass Utils {\n static isNode() {\n if (typeof Utils._isNode !== \"undefined\") {\n return Utils._isNode;\n }\n if (typeof window !== \"undefined\") {\n Utils._isNode = false;\n return false;\n }\n try {\n Utils._isNode = Object.prototype.toString.call(global.process) === \"[object process]\";\n }\n catch (e) {\n Utils._isNode = false;\n }\n return Utils._isNode;\n }\n static _isNode;\n}\n\nclass PromiseWrapper {\n static delay(time) {\n return new Promise((resolve) => setTimeout(resolve, time));\n }\n resolve;\n reject;\n promise;\n rejected = false;\n resolved = false;\n get ended() {\n return this.rejected || this.resolved;\n }\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = (t) => {\n this.resolved = true;\n resolve(t);\n };\n this.reject = (err) => {\n this.rejected = true;\n reject(err);\n };\n });\n }\n}\n\nconst timers = {};\nfunction getAllTimers() {\n return timers;\n}\nfunction timer (timerName) {\n const existing = timers[timerName];\n if (existing) {\n return existing;\n }\n const marks = [];\n function now() {\n return new Date().getTime();\n }\n const startTime = now();\n mark(\"start\", startTime);\n let endTime;\n let period;\n function stop() {\n endTime = now();\n mark(\"end\", endTime);\n period = endTime - startTime;\n return period;\n }\n function mark(name, time) {\n const currentTime = time ?? now();\n let diff = 0;\n if (marks.length > 0) {\n diff = currentTime - marks[marks.length - 1].time;\n }\n marks.push({ name, time: currentTime, diff });\n }\n const timerObj = {\n get startTime() {\n return startTime;\n },\n get endTime() {\n return endTime;\n },\n get period() {\n return period;\n },\n stop,\n mark,\n marks\n };\n timers[timerName] = timerObj;\n return timerObj;\n}\n\nconst WebSocketConstructor = Utils.isNode() ? require(\"ws\") : window.WebSocket;\nclass WS {\n ws;\n logger;\n settings;\n startupTimer = timer(\"connection\");\n _running = true;\n _registry = CallbackRegistryFactory();\n wsRequests = [];\n constructor(settings, logger) {\n this.settings = settings;\n this.logger = logger;\n if (!this.settings.ws) {\n throw new Error(\"ws is missing\");\n }\n }\n onMessage(callback) {\n return this._registry.add(\"onMessage\", callback);\n }\n send(msg, options) {\n return new Promise((resolve, reject) => {\n this.waitForSocketConnection(() => {\n try {\n this.ws?.send(msg);\n resolve();\n }\n catch (e) {\n reject(e);\n }\n }, reject);\n });\n }\n open() {\n this.logger.info(\"opening ws...\");\n this._running = true;\n return new Promise((resolve, reject) => {\n this.waitForSocketConnection(resolve, reject);\n });\n }\n close() {\n this._running = false;\n if (this.ws) {\n this.ws.close();\n }\n return Promise.resolve();\n }\n onConnectedChanged(callback) {\n return this._registry.add(\"onConnectedChanged\", callback);\n }\n name() {\n return this.settings.ws;\n }\n reconnect() {\n this.ws?.close();\n const pw = new PromiseWrapper();\n this.waitForSocketConnection(() => {\n pw.resolve();\n });\n return pw.promise;\n }\n waitForSocketConnection(callback, failed) {\n failed = failed ?? (() => { });\n if (!this._running) {\n failed(`wait for socket on ${this.settings.ws} failed - socket closed by user`);\n return;\n }\n if (this.ws?.readyState === 1) {\n callback();\n return;\n }\n this.wsRequests.push({ callback, failed });\n if (this.wsRequests.length > 1) {\n return;\n }\n this.openSocket();\n }\n async openSocket(retryInterval, retriesLeft) {\n this.logger.info(`opening ws to ${this.settings.ws}, retryInterval: ${retryInterval}, retriesLeft: ${retriesLeft}...`);\n this.startupTimer.mark(\"opening-socket\");\n if (retryInterval === undefined) {\n retryInterval = this.settings.reconnectInterval;\n }\n if (typeof retriesLeft === \"undefined\") {\n retriesLeft = this.settings.reconnectAttempts;\n }\n if (retriesLeft !== undefined) {\n if (retriesLeft === 0) {\n this.notifyForSocketState(`wait for socket on ${this.settings.ws} failed - no more retries left`);\n return;\n }\n this.logger.debug(`will retry ${retriesLeft} more times (every ${retryInterval} ms)`);\n }\n try {\n await this.initiateSocket();\n this.startupTimer.mark(\"socket-initiated\");\n this.notifyForSocketState();\n }\n catch {\n setTimeout(() => {\n const retries = retriesLeft === undefined ? undefined : retriesLeft - 1;\n this.openSocket(retryInterval, retries);\n }, retryInterval);\n }\n }\n initiateSocket() {\n const pw = new PromiseWrapper();\n this.logger.debug(`initiating ws to ${this.settings.ws}...`);\n this.ws = new WebSocketConstructor(this.settings.ws ?? \"\");\n this.ws.onerror = (err) => {\n let reason = \"\";\n try {\n reason = JSON.stringify(err);\n }\n catch (error) {\n const seen = new WeakSet();\n const replacer = (key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) {\n return;\n }\n seen.add(value);\n }\n return value;\n };\n reason = JSON.stringify(err, replacer);\n }\n this.logger.info(`ws error - reason: ${reason}`);\n pw.reject(\"error\");\n this.notifyStatusChanged(false, reason);\n };\n this.ws.onclose = (err) => {\n this.logger.info(`ws closed - code: ${err?.code} reason: ${err?.reason}`);\n pw.reject(\"closed\");\n this.notifyStatusChanged(false);\n };\n this.ws.onopen = () => {\n this.startupTimer.mark(\"ws-opened\");\n this.logger.info(`ws opened ${this.settings.identity?.application}`);\n pw.resolve();\n this.notifyStatusChanged(true);\n };\n this.ws.onmessage = (message) => {\n this._registry.execute(\"onMessage\", message.data);\n };\n return pw.promise;\n }\n notifyForSocketState(error) {\n this.wsRequests.forEach((wsRequest) => {\n if (error) {\n if (wsRequest.failed) {\n wsRequest.failed(error);\n }\n }\n else {\n wsRequest.callback();\n }\n });\n this.wsRequests = [];\n }\n notifyStatusChanged(status, reason) {\n this._registry.execute(\"onConnectedChanged\", status, reason);\n }\n}\n\nclass MessageReplayerImpl {\n specs;\n specsNames = [];\n messages = {};\n isDone;\n subs = {};\n subsRefCount = {};\n connection;\n constructor(specs) {\n this.specs = {};\n for (const spec of specs) {\n this.specs[spec.name] = spec;\n this.specsNames.push(spec.name);\n }\n }\n init(connection) {\n this.connection = connection;\n for (const name of this.specsNames) {\n for (const type of this.specs[name].types) {\n let refCount = this.subsRefCount[type];\n if (!refCount) {\n refCount = 0;\n }\n refCount += 1;\n this.subsRefCount[type] = refCount;\n if (refCount > 1) {\n continue;\n }\n const sub = connection.on(type, (msg) => this.processMessage(type, msg));\n this.subs[type] = sub;\n }\n }\n }\n processMessage(type, msg) {\n if (this.isDone || !msg) {\n return;\n }\n for (const name of this.specsNames) {\n if (this.specs[name].types.indexOf(type) !== -1) {\n const messages = this.messages[name] || [];\n this.messages[name] = messages;\n messages.push(msg);\n }\n }\n }\n drain(name, callback) {\n if (callback) {\n (this.messages[name] || []).forEach(callback);\n }\n delete this.messages[name];\n for (const type of this.specs[name].types) {\n this.subsRefCount[type] -= 1;\n if (this.subsRefCount[type] <= 0) {\n this.connection?.off(this.subs[type]);\n delete this.subs[type];\n delete this.subsRefCount[type];\n }\n }\n delete this.specs[name];\n if (!this.specs.length) {\n this.isDone = true;\n }\n }\n}\n\nconst urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict';\n\nlet nanoid = (size = 21) => {\n let id = '';\n let bytes = crypto.getRandomValues(new Uint8Array(size));\n while (size--) {\n id += urlAlphabet[bytes[size] & 63];\n }\n return id\n};\n\nconst PromisePlus = (executor, timeoutMilliseconds, timeoutMessage) => {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\n reject(message);\n }, timeoutMilliseconds);\n const providedPromise = new Promise(executor);\n providedPromise\n .then((result) => {\n clearTimeout(timeout);\n resolve(result);\n })\n .catch((error) => {\n clearTimeout(timeout);\n reject(error);\n });\n });\n};\n\nclass WebPlatformTransport {\n settings;\n logger;\n identity;\n isPreferredActivated;\n _communicationId;\n publicWindowId;\n selfAssignedWindowId;\n iAmConnected = false;\n parentReady = false;\n rejected = false;\n parentPingResolve;\n parentPingInterval;\n connectionResolve;\n extConnectionResolve;\n extConnectionReject;\n connectionReject;\n port;\n myClientId;\n children = [];\n extContentAvailable = false;\n extContentConnecting = false;\n extContentConnected = false;\n parentWindowId;\n parentInExtMode = false;\n webNamespace = \"g42_core_web\";\n parent;\n parentType;\n parentPingTimeout = 5000;\n connectionRequestTimeout = 7000;\n defaultTargetString = \"*\";\n registry = CallbackRegistryFactory();\n messages = {\n connectionAccepted: { name: \"connectionAccepted\", handle: this.handleConnectionAccepted.bind(this) },\n connectionRejected: { name: \"connectionRejected\", handle: this.handleConnectionRejected.bind(this) },\n connectionRequest: { name: \"connectionRequest\", handle: this.handleConnectionRequest.bind(this) },\n parentReady: {\n name: \"parentReady\", handle: () => {\n }\n },\n parentPing: { name: \"parentPing\", handle: this.handleParentPing.bind(this) },\n platformPing: { name: \"platformPing\", handle: this.handlePlatformPing.bind(this) },\n platformReady: { name: \"platformReady\", handle: this.handlePlatformReady.bind(this) },\n clientUnload: { name: \"clientUnload\", handle: this.handleClientUnload.bind(this) },\n manualUnload: { name: \"manualUnload\", handle: this.handleManualUnload.bind(this) },\n extConnectionResponse: { name: \"extConnectionResponse\", handle: this.handleExtConnectionResponse.bind(this) },\n extSetupRequest: { name: \"extSetupRequest\", handle: this.handleExtSetupRequest.bind(this) },\n gatewayDisconnect: { name: \"gatewayDisconnect\", handle: this.handleGatewayDisconnect.bind(this) },\n gatewayInternalConnect: { name: \"gatewayInternalConnect\", handle: this.handleGatewayInternalConnect.bind(this) }\n };\n constructor(settings, logger, identity) {\n this.settings = settings;\n this.logger = logger;\n this.identity = identity;\n this.extContentAvailable = !!window.glue42ext;\n this.setUpMessageListener();\n this.setUpUnload();\n this.setupPlatformUnloadListener();\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : undefined;\n }\n manualSetReadyState() {\n this.iAmConnected = true;\n this.parentReady = true;\n }\n get transportWindowId() {\n return this.publicWindowId;\n }\n get communicationId() {\n return this._communicationId;\n }\n async sendObject(msg) {\n if (this.extContentConnected) {\n return window.postMessage({ glue42ExtOut: msg }, this.defaultTargetString);\n }\n if (!this.port) {\n throw new Error(\"Cannot send message, because the port was not opened yet\");\n }\n this.port.postMessage(msg);\n }\n get isObjectBasedTransport() {\n return true;\n }\n onMessage(callback) {\n return this.registry.add(\"onMessage\", callback);\n }\n send() {\n return Promise.reject(\"not supported\");\n }\n onConnectedChanged(callback) {\n return this.registry.add(\"onConnectedChanged\", callback);\n }\n async open() {\n this.logger.debug(\"opening a connection to the web platform gateway.\");\n await this.connect();\n this.notifyStatusChanged(true);\n }\n close() {\n const message = {\n glue42core: {\n type: this.messages.gatewayDisconnect.name,\n data: {\n clientId: this.myClientId,\n ownWindowId: this.identity?.windowId\n }\n }\n };\n this.port?.postMessage(message);\n this.parentReady = false;\n this.notifyStatusChanged(false, \"manual reconnection\");\n return Promise.resolve();\n }\n name() {\n return \"web-platform\";\n }\n async reconnect() {\n await this.close();\n return Promise.resolve();\n }\n initiateInternalConnection() {\n return new Promise((resolve, reject) => {\n this.logger.debug(\"opening an internal web platform connection\");\n this.port = this.settings.port;\n if (this.iAmConnected) {\n this.logger.warn(\"cannot open a new connection, because this client is currently connected\");\n return;\n }\n this.port.onmessage = (event) => {\n if (this.iAmConnected && !event.data?.glue42core) {\n this.registry.execute(\"onMessage\", event.data);\n return;\n }\n const data = event.data?.glue42core;\n if (!data) {\n return;\n }\n if (data.type === this.messages.gatewayInternalConnect.name && data.success) {\n this.publicWindowId = this.settings.windowId;\n if (this.identity && this.publicWindowId) {\n this.identity.windowId = this.publicWindowId;\n this.identity.instance = this.publicWindowId;\n }\n resolve();\n }\n if (data.type === this.messages.gatewayInternalConnect.name && data.error) {\n reject(data.error);\n }\n };\n this.port.postMessage({\n glue42core: {\n type: this.messages.gatewayInternalConnect.name\n }\n });\n });\n }\n initiateRemoteConnection(target) {\n return PromisePlus((resolve, reject) => {\n this.connectionResolve = resolve;\n this.connectionReject = reject;\n this.myClientId = this.myClientId ?? nanoid(10);\n const bridgeInstanceId = this.getMyWindowId() || nanoid(10);\n const request = {\n glue42core: {\n type: this.messages.connectionRequest.name,\n clientId: this.myClientId,\n clientType: \"child\",\n bridgeInstanceId,\n selfAssignedWindowId: this.selfAssignedWindowId\n }\n };\n this.logger.debug(\"sending connection request\");\n if (this.extContentConnecting) {\n request.glue42core.clientType = \"child\";\n request.glue42core.bridgeInstanceId = this.myClientId;\n request.glue42core.parentWindowId = this.parentWindowId;\n return window.postMessage(request, this.defaultTargetString);\n }\n if (!target) {\n throw new Error(\"Cannot send a connection request, because no glue target was specified!\");\n }\n target.postMessage(request, this.defaultTargetString);\n }, this.connectionRequestTimeout, \"The connection to the target glue window timed out\");\n }\n async isParentCheckSuccess(parentCheck) {\n try {\n await parentCheck;\n return { success: true };\n }\n catch (error) {\n return { success: false };\n }\n }\n setUpMessageListener() {\n if (this.settings.port) {\n this.logger.debug(\"skipping generic message listener, because this is an internal client\");\n return;\n }\n window.addEventListener(\"message\", (event) => {\n const data = event.data?.glue42core;\n if (!data || this.rejected) {\n return;\n }\n const allowedOrigins = this.settings.allowedOrigins || [];\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\n this.logger.warn(`received a message from an origin which is not in the allowed list: ${event.origin}`);\n return;\n }\n if (!this.checkMessageTypeValid(data.type)) {\n this.logger.error(`cannot handle the incoming glue42 core message, because the type is invalid: ${data.type}`);\n return;\n }\n const messageType = data.type;\n this.logger.debug(`received valid glue42core message of type: ${messageType}`);\n this.messages[messageType].handle(event);\n });\n }\n setUpUnload() {\n if (this.settings.port) {\n this.logger.debug(\"skipping unload event listener, because this is an internal client\");\n return;\n }\n window.addEventListener(\"beforeunload\", () => {\n if (this.extContentConnected) {\n return;\n }\n const message = {\n glue42core: {\n type: this.messages.clientUnload.name,\n data: {\n clientId: this.myClientId,\n ownWindowId: this.identity?.windowId\n }\n }\n };\n if (this.parent) {\n this.parent.postMessage(message, this.defaultTargetString);\n }\n this.port?.postMessage(message);\n });\n }\n handlePlatformReady(event) {\n this.logger.debug(\"the web platform gave the ready signal\");\n this.parentReady = true;\n if (this.parentPingResolve) {\n this.parentPingResolve();\n delete this.parentPingResolve;\n }\n if (this.parentPingInterval) {\n clearInterval(this.parentPingInterval);\n delete this.parentPingInterval;\n }\n this.parent = event.source;\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : \"window\";\n }\n handleConnectionAccepted(event) {\n const data = event.data?.glue42core;\n if (this.myClientId === data.clientId) {\n return this.handleAcceptanceOfMyRequest(data);\n }\n return this.handleAcceptanceOfGrandChildRequest(data, event);\n }\n handleAcceptanceOfMyRequest(data) {\n this.logger.debug(\"handling a connection accepted signal targeted at me.\");\n this.isPreferredActivated = data.isPreferredActivated;\n if (this.extContentConnecting) {\n return this.processExtContentConnection(data);\n }\n if (!data.port) {\n this.logger.error(\"cannot set up my connection, because I was not provided with a port\");\n return;\n }\n this.publicWindowId = this.getMyWindowId();\n if (this.identity) {\n this.identity.windowId = this.publicWindowId;\n this.identity.instance = this.identity.instance ? this.identity.instance : this.publicWindowId || nanoid(10);\n }\n if (this.identity && data.appName) {\n this.identity.application = data.appName;\n this.identity.applicationName = data.appName;\n }\n this._communicationId = data.communicationId;\n this.port = data.port;\n this.port.onmessage = (e) => this.registry.execute(\"onMessage\", e.data);\n if (this.connectionResolve) {\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\n this.connectionResolve();\n delete this.connectionResolve;\n return;\n }\n this.logger.error(\"unable to call the connection resolve, because no connection promise was found\");\n }\n processExtContentConnection(data) {\n this.logger.debug(\"handling a connection accepted signal targeted at me for extension content connection.\");\n this.extContentConnecting = false;\n this.extContentConnected = true;\n this.publicWindowId = this.parentWindowId || this.myClientId;\n if (this.extContentConnecting && this.identity) {\n this.identity.windowId = this.publicWindowId;\n }\n if (this.identity && data.appName) {\n this.identity.application = data.appName;\n this.identity.applicationName = data.appName;\n }\n window.addEventListener(\"message\", (event) => {\n const extData = event.data?.glue42ExtInc;\n if (!extData) {\n return;\n }\n const allowedOrigins = this.settings.allowedOrigins || [];\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\n this.logger.warn(`received a message from an origin which is not in the allowed list: ${event.origin}`);\n return;\n }\n this.registry.execute(\"onMessage\", extData);\n });\n if (this.connectionResolve) {\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\n this.connectionResolve();\n delete this.connectionResolve;\n return;\n }\n }\n handleAcceptanceOfGrandChildRequest(data, event) {\n if (this.extContentConnecting || this.extContentConnected) {\n this.logger.debug(\"cannot process acceptance of a grandchild, because I am connected to a content script\");\n return;\n }\n this.logger.debug(`handling a connection accepted signal targeted at a grandchild: ${data.clientId}`);\n const child = this.children.find((c) => c.grandChildId === data.clientId);\n if (!child) {\n this.logger.error(`cannot handle connection accepted for grandchild: ${data.clientId}, because there is no grandchild with this id`);\n return;\n }\n child.connected = true;\n this.logger.debug(`the grandchild connection for ${data.clientId} is set up, forwarding the success message and the gateway port`);\n data.parentWindowId = this.publicWindowId;\n child.source.postMessage(event.data, child.origin, [data.port]);\n return;\n }\n handleConnectionRejected() {\n this.logger.debug(\"handling a connection rejection. Most likely the reason is that this window was not created by a glue API call\");\n if (this.connectionReject) {\n this.connectionReject(\"The platform connection was rejected. Most likely because this window was not created by a glue API call\");\n delete this.connectionReject;\n }\n }\n handleConnectionRequest(event) {\n if (this.extContentConnecting) {\n this.logger.debug(\"This connection request event is targeted at the extension content\");\n return;\n }\n const source = event.source;\n const data = event.data.glue42core;\n if (!data.clientType || data.clientType !== \"grandChild\") {\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source was not opened by a glue API call\");\n }\n if (!data.clientId) {\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source did not provide a valid id\");\n }\n if (!this.parent) {\n return this.rejectConnectionRequest(source, event.origin, \"Cannot forward the connection request, because no direct connection to the platform was found\");\n }\n this.logger.debug(`handling a connection request for a grandchild: ${data.clientId}`);\n this.children.push({ grandChildId: data.clientId, source, connected: false, origin: event.origin });\n this.logger.debug(`grandchild: ${data.clientId} is prepared, forwarding connection request to the platform`);\n this.parent.postMessage(event.data, this.defaultTargetString);\n }\n handleParentPing(event) {\n if (!this.parentReady) {\n this.logger.debug(\"my parent is not ready, I am ignoring the parent ping\");\n return;\n }\n if (!this.iAmConnected) {\n this.logger.debug(\"i am not fully connected yet, I am ignoring the parent ping\");\n return;\n }\n const message = {\n glue42core: {\n type: this.messages.parentReady.name\n }\n };\n if (this.extContentConnected) {\n message.glue42core.extMode = { windowId: this.myClientId };\n }\n const source = event.source;\n this.logger.debug(\"responding to a parent ping with a ready message\");\n source.postMessage(message, event.origin);\n }\n setupPlatformUnloadListener() {\n this.onMessage((msg) => {\n if (msg.type === \"platformUnload\") {\n this.logger.debug(\"detected a web platform unload\");\n this.parentReady = false;\n this.notifyStatusChanged(false, \"Gateway unloaded\");\n }\n });\n }\n handleManualUnload() {\n const message = {\n glue42core: {\n type: this.messages.clientUnload.name,\n data: {\n clientId: this.myClientId,\n ownWindowId: this.identity?.windowId\n }\n }\n };\n if (this.extContentConnected) {\n return window.postMessage({ glue42ExtOut: message }, this.defaultTargetString);\n }\n this.port?.postMessage(message);\n }\n handleClientUnload(event) {\n const data = event.data.glue42core;\n const clientId = data?.data.clientId;\n if (!clientId) {\n this.logger.warn(\"cannot process grand child unload, because the provided id was not valid\");\n return;\n }\n const foundChild = this.children.find((child) => child.grandChildId === clientId);\n if (!foundChild) {\n this.logger.warn(\"cannot process grand child unload, because this client is unaware of this grandchild\");\n return;\n }\n this.logger.debug(`handling grandchild unload for id: ${clientId}`);\n this.children = this.children.filter((child) => child.grandChildId !== clientId);\n }\n handlePlatformPing() {\n return;\n }\n notifyStatusChanged(status, reason) {\n this.iAmConnected = status;\n this.registry.execute(\"onConnectedChanged\", status, reason);\n }\n checkMessageTypeValid(typeToValidate) {\n return typeof typeToValidate === \"string\" && !!this.messages[typeToValidate];\n }\n rejectConnectionRequest(source, origin, reason) {\n this.rejected = true;\n this.logger.error(reason);\n const rejection = {\n glue42core: {\n type: this.messages.connectionRejected.name\n }\n };\n source.postMessage(rejection, origin);\n }\n requestConnectionPermissionFromExt() {\n return this.waitForContentScript()\n .then(() => PromisePlus((resolve, reject) => {\n this.extConnectionResolve = resolve;\n this.extConnectionReject = reject;\n const message = {\n glue42core: {\n type: \"extSetupRequest\"\n }\n };\n this.logger.debug(\"permission request to the extension content script was sent\");\n window.postMessage(message, this.defaultTargetString);\n }, this.parentPingTimeout, \"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out\"));\n }\n handleExtConnectionResponse(event) {\n const data = event.data?.glue42core;\n if (!data.approved) {\n return this.extConnectionReject ? this.extConnectionReject(\"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection was rejected\") : undefined;\n }\n if (this.extConnectionResolve) {\n this.extConnectionResolve();\n delete this.extConnectionResolve;\n }\n this.extContentConnecting = true;\n this.parentType = \"extension\";\n this.logger.debug(\"The extension connection was approved, proceeding.\");\n }\n handleExtSetupRequest() {\n return;\n }\n handleGatewayDisconnect() {\n return;\n }\n handleGatewayInternalConnect() {\n return;\n }\n waitForContentScript() {\n const contentReady = !!window.glue42ext?.content;\n if (contentReady) {\n return Promise.resolve();\n }\n return PromisePlus((resolve) => {\n window.addEventListener(\"Glue42EXTReady\", () => {\n resolve();\n });\n }, this.connectionRequestTimeout, \"The content script was available, but was never heard to be ready\");\n }\n async connect() {\n if (this.settings.port) {\n await this.initiateInternalConnection();\n this.logger.debug(\"internal web platform connection completed\");\n return;\n }\n this.logger.debug(\"opening a client web platform connection\");\n await this.findParent();\n await this.initiateRemoteConnection(this.parent);\n this.logger.debug(\"the client is connected\");\n }\n async findParent() {\n const connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\n const myInsideParents = this.getPossibleParentsInWindow(window);\n const myOutsideParents = this.getPossibleParentsOutsideWindow(window.top?.opener, window.top);\n const uniqueParents = new Set([...myInsideParents, ...myOutsideParents]);\n if (!uniqueParents.size && !this.extContentAvailable) {\n throw new Error(connectionNotPossibleMsg);\n }\n if (!uniqueParents.size && this.extContentAvailable) {\n await this.requestConnectionPermissionFromExt();\n return;\n }\n const defaultParentCheck = await this.isParentCheckSuccess(this.confirmParent(Array.from(uniqueParents)));\n if (defaultParentCheck.success) {\n this.logger.debug(\"The default parent was found!\");\n return;\n }\n if (!this.extContentAvailable) {\n throw new Error(connectionNotPossibleMsg);\n }\n await this.requestConnectionPermissionFromExt();\n }\n getPossibleParentsInWindow(currentWindow) {\n return (!currentWindow || currentWindow === currentWindow.top) ? [] : [currentWindow.parent, ...this.getPossibleParentsInWindow(currentWindow.parent)];\n }\n getPossibleParentsOutsideWindow(opener, current) {\n return (!opener || !current || opener === current) ? [] : [opener, ...this.getPossibleParentsInWindow(opener), ...this.getPossibleParentsOutsideWindow(opener.opener, opener)];\n }\n confirmParent(targets) {\n const connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\n const parentCheck = PromisePlus((resolve) => {\n this.parentPingResolve = resolve;\n const message = {\n glue42core: {\n type: this.messages.platformPing.name\n }\n };\n this.parentPingInterval = setInterval(() => {\n targets.forEach((target) => {\n target.postMessage(message, this.defaultTargetString);\n });\n }, 1000);\n }, this.parentPingTimeout, connectionNotPossibleMsg);\n parentCheck.catch(() => {\n if (this.parentPingInterval) {\n clearInterval(this.parentPingInterval);\n delete this.parentPingInterval;\n }\n });\n return parentCheck;\n }\n getMyWindowId() {\n if (this.parentType === \"workspace\") {\n return window.name.substring(0, window.name.indexOf(\"#wsp\"));\n }\n if (window !== window.top) {\n return;\n }\n if (window.name?.includes(\"g42\")) {\n return window.name;\n }\n this.selfAssignedWindowId = this.selfAssignedWindowId || `g42-${nanoid(10)}`;\n return this.selfAssignedWindowId;\n }\n}\n\nconst waitForInvocations = (invocations, callback) => {\n let left = invocations;\n return () => {\n left--;\n if (left === 0) {\n callback();\n }\n };\n};\n\nclass AsyncSequelizer {\n minSequenceInterval;\n queue = [];\n isExecutingQueue = false;\n constructor(minSequenceInterval = 0) {\n this.minSequenceInterval = minSequenceInterval;\n }\n enqueue(action) {\n return new Promise((resolve, reject) => {\n this.queue.push({ action, resolve, reject });\n this.executeQueue();\n });\n }\n async executeQueue() {\n if (this.isExecutingQueue) {\n return;\n }\n this.isExecutingQueue = true;\n while (this.queue.length) {\n const operation = this.queue.shift();\n if (!operation) {\n this.isExecutingQueue = false;\n return;\n }\n try {\n const actionResult = await operation.action();\n operation.resolve(actionResult);\n }\n catch (error) {\n operation.reject(error);\n }\n await this.intervalBreak();\n }\n this.isExecutingQueue = false;\n }\n intervalBreak() {\n return new Promise((res) => setTimeout(res, this.minSequenceInterval));\n }\n}\n\nfunction domainSession (domain, connection, logger, successMessages, errorMessages) {\n if (domain == null) {\n domain = \"global\";\n }\n successMessages = successMessages ?? [\"success\"];\n errorMessages = errorMessages ?? [\"error\"];\n let isJoined = domain === \"global\";\n let tryReconnecting = false;\n let _latestOptions;\n let _connectionOn = false;\n const callbacks = CallbackRegistryFactory();\n connection.disconnected(handleConnectionDisconnected);\n connection.loggedIn(handleConnectionLoggedIn);\n connection.on(\"success\", (msg) => handleSuccessMessage(msg));\n connection.on(\"error\", (msg) => handleErrorMessage(msg));\n connection.on(\"result\", (msg) => handleSuccessMessage(msg));\n if (successMessages) {\n successMessages.forEach((sm) => {\n connection.on(sm, (msg) => handleSuccessMessage(msg));\n });\n }\n if (errorMessages) {\n errorMessages.forEach((sm) => {\n connection.on(sm, (msg) => handleErrorMessage(msg));\n });\n }\n const requestsMap = {};\n function join(options) {\n _latestOptions = options;\n return new Promise((resolve, reject) => {\n if (isJoined) {\n resolve({});\n return;\n }\n let joinPromise;\n if (domain === \"global\") {\n joinPromise = _connectionOn ? Promise.resolve({}) : Promise.reject(\"not connected to gateway\");\n }\n else {\n logger.debug(`joining domain ${domain}`);\n const joinMsg = {\n type: \"join\",\n destination: domain,\n domain: \"global\",\n options,\n };\n joinPromise = send(joinMsg);\n }\n joinPromise\n .then(() => {\n handleJoined();\n resolve({});\n })\n .catch((err) => {\n logger.debug(\"error joining \" + domain + \" domain: \" + JSON.stringify(err));\n reject(err);\n });\n });\n }\n function leave() {\n if (domain === \"global\") {\n return Promise.resolve();\n }\n logger.debug(\"stopping session \" + domain + \"...\");\n const leaveMsg = {\n type: \"leave\",\n destination: domain,\n domain: \"global\",\n };\n tryReconnecting = false;\n return send(leaveMsg)\n .then(() => {\n isJoined = false;\n callbacks.execute(\"onLeft\");\n })\n .catch(() => {\n isJoined = false;\n callbacks.execute(\"onLeft\");\n });\n }\n function handleJoined() {\n logger.debug(\"did join \" + domain);\n isJoined = true;\n const wasReconnect = tryReconnecting;\n tryReconnecting = false;\n callbacks.execute(\"onJoined\", wasReconnect);\n }\n function handleConnectionDisconnected() {\n _connectionOn = false;\n logger.debug(\"connection is down\");\n isJoined = false;\n tryReconnecting = true;\n callbacks.execute(\"onLeft\", { disconnected: true });\n }\n function handleConnectionLoggedIn() {\n _connectionOn = true;\n if (tryReconnecting) {\n logger.debug(\"connection is now up - trying to reconnect...\");\n join(_latestOptions);\n }\n }\n function onJoined(callback) {\n if (isJoined) {\n callback(false);\n }\n return callbacks.add(\"onJoined\", callback);\n }\n function onLeft(callback) {\n if (!isJoined) {\n callback();\n }\n return callbacks.add(\"onLeft\", callback);\n }\n function handleErrorMessage(msg) {\n if (domain !== msg.domain) {\n return;\n }\n const requestId = msg.request_id;\n if (!requestId) {\n return;\n }\n const entry = requestsMap[requestId];\n if (!entry) {\n return;\n }\n entry.error(msg);\n }\n function handleSuccessMessage(msg) {\n if (msg.domain !== domain) {\n return;\n }\n const requestId = msg.request_id;\n if (!requestId) {\n return;\n }\n const entry = requestsMap[requestId];\n if (!entry) {\n return;\n }\n entry.success(msg);\n }\n function getNextRequestId() {\n return nanoid(10);\n }\n let queuedCalls = [];\n function send(msg, tag, options) {\n const ignore = [\"hello\", \"join\"];\n if (msg.type && ignore.indexOf(msg.type) === -1) {\n if (!isJoined) {\n console.warn(`trying to send a message (${msg.domain} ${msg.type}) but not connected, will queue`);\n const pw = new PromiseWrapper();\n queuedCalls.push({ msg, tag, options, pw });\n if (queuedCalls.length === 1) {\n const unsubscribe = onJoined(() => {\n logger.info(`joined - will now send queued messages (${queuedCalls.length} -> [${queuedCalls.map((m) => m.msg.type)}])`);\n queuedCalls.forEach((qm) => {\n send(qm.msg, qm.tag, qm.options)\n .then((t) => qm.pw.resolve(t))\n .catch((e) => qm.pw.reject(e));\n });\n queuedCalls = [];\n unsubscribe();\n });\n }\n return pw.promise;\n }\n }\n options = options ?? {};\n msg.request_id = msg.request_id ?? getNextRequestId();\n msg.domain = msg.domain ?? domain;\n if (!options.skipPeerId) {\n msg.peer_id = connection.peerId;\n }\n const requestId = msg.request_id;\n return new Promise((resolve, reject) => {\n requestsMap[requestId] = {\n success: (successMsg) => {\n delete requestsMap[requestId];\n successMsg._tag = tag;\n resolve(successMsg);\n },\n error: (errorMsg) => {\n logger.warn(`Gateway error - ${JSON.stringify(errorMsg)}`);\n delete requestsMap[requestId];\n errorMsg._tag = tag;\n reject(errorMsg);\n },\n };\n connection\n .send(msg, options)\n .catch((err) => {\n requestsMap[requestId].error({ err });\n });\n });\n }\n function sendFireAndForget(msg) {\n msg.request_id = msg.request_id ? msg.request_id : getNextRequestId();\n msg.domain = msg.domain ?? domain;\n msg.peer_id = connection.peerId;\n return connection.send(msg);\n }\n return {\n join,\n leave,\n onJoined,\n onLeft,\n send,\n sendFireAndForget,\n on: (type, callback) => {\n connection.on(type, (msg) => {\n if (msg.domain !== domain) {\n return;\n }\n try {\n callback(msg);\n }\n catch (e) {\n logger.error(`Callback failed: ${e} \\n ${e.stack} \\n msg was: ${JSON.stringify(msg)}`, e);\n }\n });\n },\n loggedIn: (callback) => connection.loggedIn(callback),\n connected: (callback) => connection.connected(callback),\n disconnected: (callback) => connection.disconnected(callback),\n get peerId() {\n return connection.peerId;\n },\n get domain() {\n return domain;\n },\n };\n}\n\nclass Connection {\n settings;\n logger;\n protocolVersion = 3;\n peerId;\n token;\n info;\n resolvedIdentity;\n availableDomains;\n gatewayToken;\n replayer;\n messageHandlers = {};\n ids = 1;\n registry = CallbackRegistryFactory();\n _connected = false;\n isTrace = false;\n transport;\n _defaultTransport;\n _defaultAuth;\n _targetTransport;\n _targetAuth;\n _swapTransport = false;\n _switchInProgress = false;\n _transportSubscriptions = [];\n datePrefix = \"#T42_DATE#\";\n datePrefixLen = this.datePrefix.length;\n dateMinLen = this.datePrefixLen + 1;\n datePrefixFirstChar = this.datePrefix[0];\n _sequelizer = new AsyncSequelizer();\n _isLoggedIn = false;\n shouldTryLogin = true;\n pingTimer;\n sessions = [];\n globalDomain;\n initialLogin = true;\n initialLoginAttempts = 3;\n loginConfig;\n constructor(settings, logger) {\n this.settings = settings;\n this.logger = logger;\n settings = settings || {};\n settings.reconnectAttempts = settings.reconnectAttempts ?? 10;\n settings.reconnectInterval = settings.reconnectInterval ?? 1000;\n if (settings.inproc) {\n this.transport = new InProcTransport(settings.inproc, logger.subLogger(\"inMemory\"));\n }\n else if (settings.sharedWorker) {\n this.transport = new SharedWorkerTransport(settings.sharedWorker, logger.subLogger(\"shared-worker\"));\n }\n else if (settings.webPlatform) {\n this.transport = new WebPlatformTransport(settings.webPlatform, logger.subLogger(\"web-platform\"), settings.identity);\n }\n else if (settings.ws !== undefined) {\n this.transport = new WS(settings, logger.subLogger(\"ws\"));\n }\n else {\n throw new Error(\"No connection information specified\");\n }\n this.isTrace = logger.canPublish(\"trace\");\n logger.debug(`starting with ${this.transport.name()} transport`);\n const unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\n const unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\n this._transportSubscriptions.push(unsubConnectionChanged);\n this._transportSubscriptions.push(unsubOnMessage);\n this._defaultTransport = this.transport;\n this.ping();\n }\n async switchTransport(settings) {\n return this._sequelizer.enqueue(async () => {\n if (!settings || typeof settings !== \"object\") {\n throw new Error(\"Cannot switch transports, because the settings are missing or invalid.\");\n }\n if (typeof settings.type === \"undefined\") {\n throw new Error(\"Cannot switch the transport, because the type is not defined\");\n }\n this.logger.trace(`Starting transport switch with settings: ${JSON.stringify(settings)}`);\n const switchTargetTransport = settings.type === \"secondary\" ? this.getNewSecondaryTransport(settings) : this._defaultTransport;\n this._targetTransport = switchTargetTransport;\n this._targetAuth = settings.type === \"secondary\" ? this.getNewSecondaryAuth(settings) : this._defaultAuth;\n const verifyPromise = this.verifyConnection();\n this._swapTransport = true;\n this._switchInProgress = true;\n this.logger.trace(\"The new transport has been set, closing the current transport\");\n await this.transport.close();\n try {\n await verifyPromise;\n const isSwitchSuccess = this.transport === switchTargetTransport;\n this.logger.info(`The reconnection after the switch was completed. Was the switch a success: ${isSwitchSuccess}`);\n this._switchInProgress = false;\n return { success: isSwitchSuccess };\n }\n catch (error) {\n this.logger.info(\"The reconnection after the switch timed out, reverting back to the default transport.\");\n this.switchTransport({ type: \"default\" });\n this._switchInProgress = false;\n return { success: false };\n }\n });\n }\n onLibReAnnounced(callback) {\n return this.registry.add(\"libReAnnounced\", callback);\n }\n setLibReAnnounced(lib) {\n this.registry.execute(\"libReAnnounced\", lib);\n }\n send(message, options) {\n if (this.transport.sendObject &&\n this.transport.isObjectBasedTransport) {\n const msg = this.createObjectMessage(message);\n if (this.isTrace) {\n this.logger.trace(`>> ${JSON.stringify(msg)}`);\n }\n return this.transport.sendObject(msg, options);\n }\n else {\n const strMessage = this.createStringMessage(message);\n if (this.isTrace) {\n this.logger.trace(`>> ${strMessage}`);\n }\n return this.transport.send(strMessage, options);\n }\n }\n on(type, messageHandler) {\n type = type.toLowerCase();\n if (this.messageHandlers[type] === undefined) {\n this.messageHandlers[type] = {};\n }\n const id = this.ids++;\n this.messageHandlers[type][id] = messageHandler;\n return {\n type,\n id,\n };\n }\n off(info) {\n delete this.messageHandlers[info.type.toLowerCase()][info.id];\n }\n get isConnected() {\n return this._isLoggedIn;\n }\n connected(callback) {\n return this.loggedIn(() => {\n const currentServer = this.transport.name();\n callback(currentServer);\n });\n }\n disconnected(callback) {\n return this.registry.add(\"disconnected\", callback);\n }\n async login(authRequest, reconnect) {\n if (!this._defaultAuth) {\n this._defaultAuth = authRequest;\n }\n if (this._swapTransport) {\n this.logger.trace(\"Detected a transport swap, swapping transports\");\n const newAuth = this.transportSwap();\n authRequest = newAuth ?? authRequest;\n }\n this.logger.trace(`Starting login for transport: ${this.transport.name()} and auth ${JSON.stringify(authRequest)}`);\n try {\n await this.transport.open();\n this.logger.trace(`Transport: ${this.transport.name()} opened, logging in`);\n timer(\"connection\").mark(\"transport-opened\");\n const identity = await this.loginCore(authRequest, reconnect);\n this.logger.trace(`Logged in with identity: ${JSON.stringify(identity)}`);\n timer(\"connection\").mark(\"protocol-logged-in\");\n return identity;\n }\n catch (error) {\n if (this._switchInProgress) {\n this.logger.trace(\"An error while logging in after a transport swap, preparing a default swap.\");\n this.prepareDefaultSwap();\n }\n throw new Error(error);\n }\n }\n async logout() {\n await this.logoutCore();\n await this.transport.close();\n }\n loggedIn(callback) {\n if (this._isLoggedIn) {\n callback();\n }\n return this.registry.add(\"onLoggedIn\", callback);\n }\n domain(domain, successMessages, errorMessages) {\n let session = this.sessions.find((s) => s.domain === domain);\n if (!session) {\n session = domainSession(domain, this, this.logger.subLogger(`domain=${domain}`), successMessages, errorMessages);\n this.sessions.push(session);\n }\n return session;\n }\n authToken() {\n const createTokenReq = {\n domain: \"global\",\n type: \"create-token\"\n };\n if (!this.globalDomain) {\n return Promise.reject(new Error(\"no global domain session\"));\n }\n return this.globalDomain.send(createTokenReq)\n .then((res) => {\n return res.token;\n });\n }\n reconnect() {\n return this.transport.reconnect();\n }\n setLoggedIn(value) {\n this._isLoggedIn = value;\n if (this._isLoggedIn) {\n this.registry.execute(\"onLoggedIn\");\n }\n }\n distributeMessage(message, type) {\n const handlers = this.messageHandlers[type.toLowerCase()];\n if (handlers !== undefined) {\n Object.keys(handlers).forEach((handlerId) => {\n const handler = handlers[handlerId];\n if (handler !== undefined) {\n try {\n handler(message);\n }\n catch (error) {\n try {\n this.logger.error(`Message handler failed with ${error.stack}`, error);\n }\n catch (loggerError) {\n console.log(\"Message handler failed\", error);\n }\n }\n }\n });\n }\n }\n handleConnectionChanged(connected) {\n if (this._connected === connected) {\n return;\n }\n this._connected = connected;\n if (connected) {\n if (this.settings?.replaySpecs?.length) {\n this.replayer = new MessageReplayerImpl(this.settings.replaySpecs);\n this.replayer.init(this);\n }\n this.registry.execute(\"connected\");\n }\n else {\n this.handleDisconnected();\n this.registry.execute(\"disconnected\");\n }\n }\n handleDisconnected() {\n this.setLoggedIn(false);\n const tryToLogin = this.shouldTryLogin;\n if (tryToLogin && this.initialLogin) {\n if (this.initialLoginAttempts <= 0) {\n return;\n }\n this.initialLoginAttempts--;\n }\n this.logger.debug(\"disconnected - will try new login?\" + this.shouldTryLogin);\n if (this.shouldTryLogin) {\n if (!this.loginConfig) {\n throw new Error(\"no login info\");\n }\n this.login(this.loginConfig, true)\n .catch(() => {\n setTimeout(this.handleDisconnected.bind(this), this.settings.reconnectInterval || 1000);\n });\n }\n }\n handleTransportMessage(msg) {\n let msgObj;\n if (typeof msg === \"string\") {\n msgObj = this.processStringMessage(msg);\n }\n else {\n msgObj = this.processObjectMessage(msg);\n }\n if (this.isTrace) {\n this.logger.trace(`<< ${JSON.stringify(msgObj)}`);\n }\n this.distributeMessage(msgObj.msg, msgObj.msgType);\n }\n verifyConnection() {\n return PromisePlus((resolve) => {\n let unsub;\n const ready = waitForInvocations(2, () => {\n if (unsub) {\n unsub();\n }\n resolve();\n });\n unsub = this.onLibReAnnounced((lib) => {\n if (lib.name === \"interop\") {\n return ready();\n }\n if (lib.name === \"contexts\") {\n return ready();\n }\n });\n }, 10000, \"Transport switch timed out waiting for all libraries to be re-announced\");\n }\n getNewSecondaryTransport(settings) {\n if (!settings.transportConfig?.url) {\n throw new Error(\"Missing secondary transport URL.\");\n }\n return new WS(Object.assign({}, this.settings, { ws: settings.transportConfig.url, reconnectAttempts: 1 }), this.logger.subLogger(\"ws-secondary\"));\n }\n getNewSecondaryAuth(settings) {\n if (!settings.transportConfig?.auth) {\n throw new Error(\"Missing secondary transport auth information.\");\n }\n return settings.transportConfig.auth;\n }\n transportSwap() {\n this._swapTransport = false;\n if (!this._targetTransport || !this._targetAuth) {\n this.logger.warn(`Error while switching transports - either the target transport or auth is not defined: transport defined -> ${!!this._defaultTransport}, auth defined -> ${!!this._targetAuth}. Staying on the current one.`);\n return;\n }\n this._transportSubscriptions.forEach((unsub) => unsub());\n this._transportSubscriptions = [];\n this.transport = this._targetTransport;\n const unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\n const unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\n this._transportSubscriptions.push(unsubConnectionChanged);\n this._transportSubscriptions.push(unsubOnMessage);\n return this._targetAuth;\n }\n prepareDefaultSwap() {\n this._transportSubscriptions.forEach((unsub) => unsub());\n this._transportSubscriptions = [];\n this.transport.close().catch((error) => this.logger.warn(`Error closing the ${this.transport.name()} transport after a failed connection attempt: ${JSON.stringify(error)}`));\n this._targetTransport = this._defaultTransport;\n this._targetAuth = this._defaultAuth;\n this._swapTransport = true;\n }\n processStringMessage(message) {\n const msg = JSON.parse(message, (key, value) => {\n if (typeof value !== \"string\") {\n return value;\n }\n if (value.length < this.dateMinLen) {\n return value;\n }\n if (!value.startsWith(this.datePrefixFirstChar)) {\n return value;\n }\n if (value.substring(0, this.datePrefixLen) !== this.datePrefix) {\n return value;\n }\n try {\n const milliseconds = parseInt(value.substring(this.datePrefixLen, value.length), 10);\n if (isNaN(milliseconds)) {\n return value;\n }\n return new Date(milliseconds);\n }\n catch (ex) {\n return value;\n }\n });\n return {\n msg,\n msgType: msg.type,\n };\n }\n createStringMessage(message) {\n const oldToJson = Date.prototype.toJSON;\n try {\n const datePrefix = this.datePrefix;\n Date.prototype.toJSON = function () {\n return datePrefix + this.getTime();\n };\n const result = JSON.stringify(message);\n return result;\n }\n finally {\n Date.prototype.toJSON = oldToJson;\n }\n }\n processObjectMessage(message) {\n if (!message.type) {\n throw new Error(\"Object should have type property\");\n }\n return {\n msg: message,\n msgType: message.type,\n };\n }\n createObjectMessage(message) {\n return message;\n }\n async loginCore(config, reconnect) {\n this.logger.info(\"logging in...\");\n this.loginConfig = config;\n if (!this.loginConfig) {\n this.loginConfig = { username: \"\", password: \"\" };\n }\n this.shouldTryLogin = true;\n const authentication = await this.setupAuthConfig(config, reconnect);\n const helloMsg = {\n type: \"hello\",\n identity: this.settings.identity,\n authentication\n };\n if (config.sessionId) {\n helloMsg.request_id = config.sessionId;\n }\n this.globalDomain = domainSession(\"global\", this, this.logger.subLogger(\"global-domain\"), [\n \"welcome\",\n \"token\",\n \"authentication-request\"\n ]);\n const sendOptions = { skipPeerId: true };\n if (this.initialLogin) {\n sendOptions.retryInterval = this.settings.reconnectInterval;\n sendOptions.maxRetries = this.settings.reconnectAttempts;\n }\n try {\n const welcomeMsg = await this.tryAuthenticate(this.globalDomain, helloMsg, sendOptions, config);\n this.initialLogin = false;\n this.logger.info(\"login successful with peerId \" + welcomeMsg.peer_id);\n this.peerId = welcomeMsg.peer_id;\n this.resolvedIdentity = welcomeMsg.resolved_identity;\n this.availableDomains = welcomeMsg.available_domains;\n if (welcomeMsg.options) {\n this.token = welcomeMsg.options.access_token;\n this.info = welcomeMsg.options.info;\n }\n this.setLoggedIn(true);\n return welcomeMsg.resolved_identity;\n }\n catch (err) {\n this.logger.error(\"error sending hello message - \" + (err.message || err.msg || err.reason || err), err);\n throw err;\n }\n finally {\n if (config?.flowCallback && config.sessionId) {\n config.flowCallback(config.sessionId, null);\n }\n }\n }\n async tryAuthenticate(globalDomain, helloMsg, sendOptions, config) {\n let welcomeMsg;\n while (true) {\n const msg = await globalDomain.send(helloMsg, undefined, sendOptions);\n if (msg.type === \"authentication-request\") {\n const token = Buffer.from(msg.authentication.token, \"base64\");\n if (config.flowCallback && config.sessionId) {\n helloMsg.authentication.token =\n (await config.flowCallback(config.sessionId, token))\n .data\n .toString(\"base64\");\n }\n helloMsg.request_id = config.sessionId;\n }\n else if (msg.type === \"welcome\") {\n welcomeMsg = msg;\n break;\n }\n else if (msg.type === \"error\") {\n throw new Error(\"Authentication failed: \" + msg.reason);\n }\n else {\n throw new Error(\"Unexpected message type during authentication: \" + msg.type);\n }\n }\n return welcomeMsg;\n }\n async setupAuthConfig(config, reconnect) {\n const authentication = {};\n this.gatewayToken = config.gatewayToken;\n if (config.gatewayToken) {\n if (reconnect) {\n try {\n config.gatewayToken = await this.getNewGWToken();\n }\n catch (e) {\n this.logger.warn(`failed to get GW token when reconnecting ${e?.message || e}`);\n }\n }\n authentication.method = \"gateway-token\";\n authentication.token = config.gatewayToken;\n this.gatewayToken = config.gatewayToken;\n }\n else if (config.flowName === \"sspi\") {\n authentication.provider = \"win\";\n authentication.method = \"access-token\";\n if (config.flowCallback && config.sessionId) {\n authentication.token =\n (await config.flowCallback(config.sessionId, null))\n .data\n .toString(\"base64\");\n }\n else {\n throw new Error(\"Invalid SSPI config\");\n }\n }\n else if (config.token) {\n authentication.method = \"access-token\";\n authentication.token = config.token;\n }\n else if (config.username) {\n authentication.method = \"secret\";\n authentication.login = config.username;\n authentication.secret = config.password;\n }\n else if (config.provider) {\n authentication.provider = config.provider;\n authentication.providerContext = config.providerContext;\n }\n else {\n throw new Error(\"invalid auth message\" + JSON.stringify(config));\n }\n return authentication;\n }\n async logoutCore() {\n this.logger.debug(\"logging out...\");\n this.shouldTryLogin = false;\n if (this.pingTimer) {\n clearTimeout(this.pingTimer);\n }\n const promises = this.sessions.map((session) => {\n session.leave();\n });\n await Promise.all(promises);\n }\n getNewGWToken() {\n if (typeof window !== \"undefined\") {\n const glue42gd = window.glue42gd;\n if (glue42gd) {\n return glue42gd.getGWToken();\n }\n }\n return Promise.reject(new Error(\"not running in GD\"));\n }\n ping() {\n if (!this.shouldTryLogin) {\n return;\n }\n if (this._isLoggedIn) {\n this.send({ type: \"ping\" });\n }\n this.pingTimer = setTimeout(() => {\n this.ping();\n }, 30 * 1000);\n }\n}\n\nconst order = [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"off\"];\nclass Logger {\n name;\n parent;\n static Interop;\n static InteropMethodName = \"T42.AppLogger.Log\";\n static Instance;\n path;\n subLoggers = [];\n _consoleLevel;\n _publishLevel;\n loggerFullName;\n includeTimeAndLevel;\n logFn = console;\n customLogFn = false;\n constructor(name, parent, logFn) {\n this.name = name;\n this.parent = parent;\n this.name = name;\n if (parent) {\n this.path = `${parent.path}.${name}`;\n }\n else {\n this.path = name;\n }\n this.loggerFullName = `[${this.path}]`;\n this.includeTimeAndLevel = !logFn;\n if (logFn) {\n this.logFn = logFn;\n this.customLogFn = true;\n }\n }\n subLogger(name) {\n const existingSub = this.subLoggers.filter((subLogger) => {\n return subLogger.name === name;\n })[0];\n if (existingSub !== undefined) {\n return existingSub;\n }\n Object.keys(this).forEach((key) => {\n if (key === name) {\n throw new Error(\"This sub logger name is not allowed.\");\n }\n });\n const sub = new Logger(name, this, this.customLogFn ? this.logFn : undefined);\n this.subLoggers.push(sub);\n return sub;\n }\n publishLevel(level) {\n if (level) {\n this._publishLevel = level;\n }\n return this._publishLevel || this.parent?.publishLevel();\n }\n consoleLevel(level) {\n if (level) {\n this._consoleLevel = level;\n }\n return this._consoleLevel || this.parent?.consoleLevel();\n }\n log(message, level, error) {\n this.publishMessage(level || \"info\", message, error);\n }\n trace(message) {\n this.log(message, \"trace\");\n }\n debug(message) {\n this.log(message, \"debug\");\n }\n info(message) {\n this.log(message, \"info\");\n }\n warn(message) {\n this.log(message, \"warn\");\n }\n error(message, err) {\n this.log(message, \"error\");\n }\n canPublish(level, compareWith) {\n const levelIdx = order.indexOf(level);\n const restrictionIdx = order.indexOf(compareWith || this.consoleLevel() || \"trace\");\n return levelIdx >= restrictionIdx;\n }\n publishMessage(level, message, error) {\n const loggerName = this.loggerFullName;\n if (level === \"error\" && !error) {\n const e = new Error();\n if (e.stack) {\n message =\n message +\n \"\\n\" +\n e.stack\n .split(\"\\n\")\n .slice(3)\n .join(\"\\n\");\n }\n }\n if (this.canPublish(level, this.publishLevel())) {\n const interop = Logger.Interop;\n if (interop) {\n try {\n if (interop.methods({ name: Logger.InteropMethodName }).length > 0) {\n interop.invoke(Logger.InteropMethodName, {\n msg: `${message}`,\n logger: loggerName,\n level\n });\n }\n }\n catch {\n }\n }\n }\n if (this.canPublish(level)) {\n let prefix = \"\";\n if (this.includeTimeAndLevel) {\n const date = new Date();\n const time = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}:${date.getMilliseconds()}`;\n prefix = `[${time}] [${level}] `;\n }\n const toPrint = `${prefix}${loggerName}: ${message}`;\n switch (level) {\n case \"trace\":\n this.logFn.debug(toPrint);\n break;\n case \"debug\":\n if (this.logFn.debug) {\n this.logFn.debug(toPrint);\n }\n else {\n this.logFn.log(toPrint);\n }\n break;\n case \"info\":\n this.logFn.info(toPrint);\n break;\n case \"warn\":\n this.logFn.warn(toPrint);\n break;\n case \"error\":\n this.logFn.error(toPrint, error);\n break;\n }\n }\n }\n}\n\nconst GW_MESSAGE_CREATE_CONTEXT = \"create-context\";\nconst GW_MESSAGE_ACTIVITY_CREATED = \"created\";\nconst GW_MESSAGE_ACTIVITY_DESTROYED = \"destroyed\";\nconst GW_MESSAGE_CONTEXT_CREATED = \"context-created\";\nconst GW_MESSAGE_CONTEXT_ADDED = \"context-added\";\nconst GW_MESSAGE_SUBSCRIBE_CONTEXT = \"subscribe-context\";\nconst GW_MESSAGE_SUBSCRIBED_CONTEXT = \"subscribed-context\";\nconst GW_MESSAGE_UNSUBSCRIBE_CONTEXT = \"unsubscribe-context\";\nconst GW_MESSAGE_DESTROY_CONTEXT = \"destroy-context\";\nconst GW_MESSAGE_CONTEXT_DESTROYED = \"context-destroyed\";\nconst GW_MESSAGE_UPDATE_CONTEXT = \"update-context\";\nconst GW_MESSAGE_CONTEXT_UPDATED = \"context-updated\";\nconst GW_MESSAGE_JOINED_ACTIVITY = \"joined\";\n\nconst ContextMessageReplaySpec = {\n get name() {\n return \"context\";\n },\n get types() {\n return [\n GW_MESSAGE_CREATE_CONTEXT,\n GW_MESSAGE_ACTIVITY_CREATED,\n GW_MESSAGE_ACTIVITY_DESTROYED,\n GW_MESSAGE_CONTEXT_CREATED,\n GW_MESSAGE_CONTEXT_ADDED,\n GW_MESSAGE_SUBSCRIBE_CONTEXT,\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\n GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\n GW_MESSAGE_DESTROY_CONTEXT,\n GW_MESSAGE_CONTEXT_DESTROYED,\n GW_MESSAGE_UPDATE_CONTEXT,\n GW_MESSAGE_CONTEXT_UPDATED,\n GW_MESSAGE_JOINED_ACTIVITY\n ];\n }\n};\n\nvar version = \"6.3.1\";\n\nfunction prepareConfig (configuration, ext, glue42gd) {\n let nodeStartingContext;\n if (Utils.isNode()) {\n const startingContextString = process.env._GD_STARTING_CONTEXT_;\n if (startingContextString) {\n try {\n nodeStartingContext = JSON.parse(startingContextString);\n }\n catch {\n }\n }\n }\n function getConnection() {\n const gwConfig = configuration.gateway;\n const protocolVersion = gwConfig?.protocolVersion ?? 3;\n const reconnectInterval = gwConfig?.reconnectInterval;\n const reconnectAttempts = gwConfig?.reconnectAttempts;\n const defaultWs = \"ws://localhost:8385\";\n let ws = gwConfig?.ws;\n const sharedWorker = gwConfig?.sharedWorker;\n const inproc = gwConfig?.inproc;\n const webPlatform = gwConfig?.webPlatform ?? undefined;\n if (glue42gd) {\n ws = glue42gd.gwURL;\n }\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwURL) {\n ws = nodeStartingContext.gwURL;\n }\n if (!ws && !sharedWorker && !inproc) {\n ws = defaultWs;\n }\n let instanceId;\n let windowId;\n let pid;\n let environment;\n let region;\n const appName = getApplication();\n let uniqueAppName = appName;\n if (typeof glue42gd !== \"undefined\") {\n windowId = glue42gd.windowId;\n pid = glue42gd.pid;\n if (glue42gd.env) {\n environment = glue42gd.env.env;\n region = glue42gd.env.region;\n }\n uniqueAppName = glue42gd.application ?? \"glue-app\";\n instanceId = glue42gd.appInstanceId;\n }\n else if (Utils.isNode()) {\n pid = process.pid;\n if (nodeStartingContext) {\n environment = nodeStartingContext.env;\n region = nodeStartingContext.region;\n instanceId = nodeStartingContext.instanceId;\n }\n }\n else if (typeof window?.glue42electron !== \"undefined\") {\n windowId = window?.glue42electron.instanceId;\n pid = window?.glue42electron.pid;\n environment = window?.glue42electron.env;\n region = window?.glue42electron.region;\n uniqueAppName = window?.glue42electron.application ?? \"glue-app\";\n instanceId = window?.glue42electron.instanceId;\n }\n else ;\n const replaySpecs = configuration.gateway?.replaySpecs ?? [];\n replaySpecs.push(ContextMessageReplaySpec);\n let identity = {\n application: uniqueAppName,\n applicationName: appName,\n windowId,\n instance: instanceId,\n process: pid,\n region,\n environment,\n api: ext.version || version\n };\n if (configuration.identity) {\n identity = Object.assign(identity, configuration.identity);\n }\n return {\n identity,\n reconnectInterval,\n ws,\n sharedWorker,\n webPlatform,\n inproc,\n protocolVersion,\n reconnectAttempts,\n replaySpecs,\n };\n }\n function getContexts() {\n if (typeof configuration.contexts === \"undefined\") {\n return { reAnnounceKnownContexts: true };\n }\n if (typeof configuration.contexts === \"boolean\" && configuration.contexts) {\n return { reAnnounceKnownContexts: true };\n }\n if (typeof configuration.contexts === \"object\") {\n return Object.assign({}, { reAnnounceKnownContexts: true }, configuration.contexts);\n }\n return false;\n }\n function getApplication() {\n if (configuration.application) {\n return configuration.application;\n }\n if (glue42gd) {\n return glue42gd.applicationName;\n }\n if (typeof window !== \"undefined\" && typeof window.glue42electron !== \"undefined\") {\n return window.glue42electron.application;\n }\n const uid = nanoid(10);\n if (Utils.isNode()) {\n if (nodeStartingContext) {\n return nodeStartingContext.applicationConfig.name;\n }\n return \"NodeJS\" + uid;\n }\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n return document.title + ` (${uid})`;\n }\n return uid;\n }\n function getAuth() {\n if (typeof configuration.auth === \"string\") {\n return {\n token: configuration.auth\n };\n }\n if (configuration.auth) {\n return configuration.auth;\n }\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwToken) {\n return {\n gatewayToken: nodeStartingContext.gwToken\n };\n }\n if (configuration.gateway?.webPlatform || configuration.gateway?.inproc || configuration.gateway?.sharedWorker) {\n return {\n username: \"glue42\", password: \"glue42\"\n };\n }\n }\n function getLogger() {\n let config = configuration.logger;\n const defaultLevel = \"warn\";\n if (!config) {\n config = defaultLevel;\n }\n let gdConsoleLevel;\n if (glue42gd) {\n gdConsoleLevel = glue42gd.consoleLogLevel;\n }\n if (typeof config === \"string\") {\n return { console: gdConsoleLevel ?? config, publish: defaultLevel };\n }\n return {\n console: gdConsoleLevel ?? config.console ?? defaultLevel,\n publish: config.publish ?? defaultLevel\n };\n }\n const connection = getConnection();\n let application = getApplication();\n if (typeof window !== \"undefined\") {\n const windowAsAny = window;\n const containerApplication = windowAsAny.htmlContainer ?\n `${windowAsAny.htmlContainer.containerName}.${windowAsAny.htmlContainer.application}` :\n windowAsAny?.glue42gd?.application;\n if (containerApplication) {\n application = containerApplication;\n }\n }\n return {\n bus: configuration.bus ?? false,\n application,\n auth: getAuth(),\n logger: getLogger(),\n connection,\n metrics: configuration.metrics ?? true,\n contexts: getContexts(),\n version: ext.version || version,\n libs: ext.libs ?? [],\n customLogger: configuration.customLogger\n };\n}\n\nclass GW3ContextData {\n name;\n contextId;\n context;\n isAnnounced;\n joinedActivity;\n updateCallbacks = {};\n activityId;\n sentExplicitSubscription;\n hasReceivedSnapshot;\n constructor(contextId, name, isAnnounced, activityId) {\n this.contextId = contextId;\n this.name = name;\n this.isAnnounced = isAnnounced;\n this.activityId = activityId;\n this.context = {};\n }\n hasCallbacks() {\n return Object.keys(this.updateCallbacks).length > 0;\n }\n getState() {\n if (this.isAnnounced && this.hasCallbacks()) {\n return 3;\n }\n if (this.isAnnounced) {\n return 2;\n }\n if (this.hasCallbacks()) {\n return 1;\n }\n return 0;\n }\n}\n\nvar lodash_clonedeep = {exports: {}};\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\nlodash_clonedeep.exports;\n\n(function (module, exports) {\n\t/** Used as the size to enable large array optimizations. */\n\tvar LARGE_ARRAY_SIZE = 200;\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t promiseTag = '[object Promise]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t symbolTag = '[object Symbol]',\n\t weakMapTag = '[object WeakMap]';\n\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t dataViewTag = '[object DataView]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n\t/** Used to match `RegExp` flags from their coerced string values. */\n\tvar reFlags = /\\w*$/;\n\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n\t/** Used to identify `toStringTag` values supported by `_.clone`. */\n\tvar cloneableTags = {};\n\tcloneableTags[argsTag] = cloneableTags[arrayTag] =\n\tcloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n\tcloneableTags[boolTag] = cloneableTags[dateTag] =\n\tcloneableTags[float32Tag] = cloneableTags[float64Tag] =\n\tcloneableTags[int8Tag] = cloneableTags[int16Tag] =\n\tcloneableTags[int32Tag] = cloneableTags[mapTag] =\n\tcloneableTags[numberTag] = cloneableTags[objectTag] =\n\tcloneableTags[regexpTag] = cloneableTags[setTag] =\n\tcloneableTags[stringTag] = cloneableTags[symbolTag] =\n\tcloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n\tcloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n\tcloneableTags[errorTag] = cloneableTags[funcTag] =\n\tcloneableTags[weakMapTag] = false;\n\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n\t/** Detect free variable `self`. */\n\tvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n\t/** Used as a reference to the global object. */\n\tvar root = freeGlobal || freeSelf || Function('return this')();\n\n\t/** Detect free variable `exports`. */\n\tvar freeExports = exports && !exports.nodeType && exports;\n\n\t/** Detect free variable `module`. */\n\tvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n\t/** Detect the popular CommonJS extension `module.exports`. */\n\tvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n\t/**\n\t * Adds the key-value `pair` to `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to modify.\n\t * @param {Array} pair The key-value pair to add.\n\t * @returns {Object} Returns `map`.\n\t */\n\tfunction addMapEntry(map, pair) {\n\t // Don't return `map.set` because it's not chainable in IE 11.\n\t map.set(pair[0], pair[1]);\n\t return map;\n\t}\n\n\t/**\n\t * Adds `value` to `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to modify.\n\t * @param {*} value The value to add.\n\t * @returns {Object} Returns `set`.\n\t */\n\tfunction addSetEntry(set, value) {\n\t // Don't return `set.add` because it's not chainable in IE 11.\n\t set.add(value);\n\t return set;\n\t}\n\n\t/**\n\t * A specialized version of `_.forEach` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayEach(array, iteratee) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t while (++index < length) {\n\t if (iteratee(array[index], index, array) === false) {\n\t break;\n\t }\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Appends the elements of `values` to `array`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {Array} values The values to append.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayPush(array, values) {\n\t var index = -1,\n\t length = values.length,\n\t offset = array.length;\n\n\t while (++index < length) {\n\t array[offset + index] = values[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * A specialized version of `_.reduce` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {boolean} [initAccum] Specify using the first element of `array` as\n\t * the initial value.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\tfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t if (initAccum && length) {\n\t accumulator = array[++index];\n\t }\n\t while (++index < length) {\n\t accumulator = iteratee(accumulator, array[index], index, array);\n\t }\n\t return accumulator;\n\t}\n\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Gets the value at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} [object] The object to query.\n\t * @param {string} key The key of the property to get.\n\t * @returns {*} Returns the property value.\n\t */\n\tfunction getValue(object, key) {\n\t return object == null ? undefined : object[key];\n\t}\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Converts `map` to its key-value pairs.\n\t *\n\t * @private\n\t * @param {Object} map The map to convert.\n\t * @returns {Array} Returns the key-value pairs.\n\t */\n\tfunction mapToArray(map) {\n\t var index = -1,\n\t result = Array(map.size);\n\n\t map.forEach(function(value, key) {\n\t result[++index] = [key, value];\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\n\t/**\n\t * Converts `set` to an array of its values.\n\t *\n\t * @private\n\t * @param {Object} set The set to convert.\n\t * @returns {Array} Returns the values.\n\t */\n\tfunction setToArray(set) {\n\t var index = -1,\n\t result = Array(set.size);\n\n\t set.forEach(function(value) {\n\t result[++index] = value;\n\t });\n\t return result;\n\t}\n\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype,\n\t funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\n\t/** Used to detect overreaching core-js shims. */\n\tvar coreJsData = root['__core-js_shared__'];\n\n\t/** Used to detect methods masquerading as native. */\n\tvar maskSrcKey = (function() {\n\t var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n\t return uid ? ('Symbol(src)_1.' + uid) : '';\n\t}());\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\n\t/** Built-in value references. */\n\tvar Buffer = moduleExports ? root.Buffer : undefined,\n\t Symbol = root.Symbol,\n\t Uint8Array = root.Uint8Array,\n\t getPrototype = overArg(Object.getPrototypeOf, Object),\n\t objectCreate = Object.create,\n\t propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t splice = arrayProto.splice;\n\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetSymbols = Object.getOwnPropertySymbols,\n\t nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n\t nativeKeys = overArg(Object.keys, Object);\n\n\t/* Built-in method references that are verified to be native. */\n\tvar DataView = getNative(root, 'DataView'),\n\t Map = getNative(root, 'Map'),\n\t Promise = getNative(root, 'Promise'),\n\t Set = getNative(root, 'Set'),\n\t WeakMap = getNative(root, 'WeakMap'),\n\t nativeCreate = getNative(Object, 'create');\n\n\t/** Used to detect maps, sets, and weakmaps. */\n\tvar dataViewCtorString = toSource(DataView),\n\t mapCtorString = toSource(Map),\n\t promiseCtorString = toSource(Promise),\n\t setCtorString = toSource(Set),\n\t weakMapCtorString = toSource(WeakMap);\n\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Hash(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the hash.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Hash\n\t */\n\tfunction hashClear() {\n\t this.__data__ = nativeCreate ? nativeCreate(null) : {};\n\t}\n\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Hash\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(key) {\n\t return this.has(key) && delete this.__data__[key];\n\t}\n\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(key) {\n\t var data = this.__data__;\n\t if (nativeCreate) {\n\t var result = data[key];\n\t return result === HASH_UNDEFINED ? undefined : result;\n\t }\n\t return hasOwnProperty.call(data, key) ? data[key] : undefined;\n\t}\n\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Hash\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(key) {\n\t var data = this.__data__;\n\t return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n\t}\n\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the hash instance.\n\t */\n\tfunction hashSet(key, value) {\n\t var data = this.__data__;\n\t data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t return this;\n\t}\n\n\t// Add methods to `Hash`.\n\tHash.prototype.clear = hashClear;\n\tHash.prototype['delete'] = hashDelete;\n\tHash.prototype.get = hashGet;\n\tHash.prototype.has = hashHas;\n\tHash.prototype.set = hashSet;\n\n\t/**\n\t * Creates an list cache object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction ListCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the list cache.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf ListCache\n\t */\n\tfunction listCacheClear() {\n\t this.__data__ = [];\n\t}\n\n\t/**\n\t * Removes `key` and its value from the list cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction listCacheDelete(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t return false;\n\t }\n\t var lastIndex = data.length - 1;\n\t if (index == lastIndex) {\n\t data.pop();\n\t } else {\n\t splice.call(data, index, 1);\n\t }\n\t return true;\n\t}\n\n\t/**\n\t * Gets the list cache value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction listCacheGet(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t return index < 0 ? undefined : data[index][1];\n\t}\n\n\t/**\n\t * Checks if a list cache value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf ListCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction listCacheHas(key) {\n\t return assocIndexOf(this.__data__, key) > -1;\n\t}\n\n\t/**\n\t * Sets the list cache `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the list cache instance.\n\t */\n\tfunction listCacheSet(key, value) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t data.push([key, value]);\n\t } else {\n\t data[index][1] = value;\n\t }\n\t return this;\n\t}\n\n\t// Add methods to `ListCache`.\n\tListCache.prototype.clear = listCacheClear;\n\tListCache.prototype['delete'] = listCacheDelete;\n\tListCache.prototype.get = listCacheGet;\n\tListCache.prototype.has = listCacheHas;\n\tListCache.prototype.set = listCacheSet;\n\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction MapCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapCacheClear() {\n\t this.__data__ = {\n\t 'hash': new Hash,\n\t 'map': new (Map || ListCache),\n\t 'string': new Hash\n\t };\n\t}\n\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapCacheDelete(key) {\n\t return getMapData(this, key)['delete'](key);\n\t}\n\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapCacheGet(key) {\n\t return getMapData(this, key).get(key);\n\t}\n\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapCacheHas(key) {\n\t return getMapData(this, key).has(key);\n\t}\n\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapCacheSet(key, value) {\n\t getMapData(this, key).set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapCacheClear;\n\tMapCache.prototype['delete'] = mapCacheDelete;\n\tMapCache.prototype.get = mapCacheGet;\n\tMapCache.prototype.has = mapCacheHas;\n\tMapCache.prototype.set = mapCacheSet;\n\n\t/**\n\t * Creates a stack cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Stack(entries) {\n\t this.__data__ = new ListCache(entries);\n\t}\n\n\t/**\n\t * Removes all key-value entries from the stack.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Stack\n\t */\n\tfunction stackClear() {\n\t this.__data__ = new ListCache;\n\t}\n\n\t/**\n\t * Removes `key` and its value from the stack.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction stackDelete(key) {\n\t return this.__data__['delete'](key);\n\t}\n\n\t/**\n\t * Gets the stack value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction stackGet(key) {\n\t return this.__data__.get(key);\n\t}\n\n\t/**\n\t * Checks if a stack value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Stack\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction stackHas(key) {\n\t return this.__data__.has(key);\n\t}\n\n\t/**\n\t * Sets the stack `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the stack cache instance.\n\t */\n\tfunction stackSet(key, value) {\n\t var cache = this.__data__;\n\t if (cache instanceof ListCache) {\n\t var pairs = cache.__data__;\n\t if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n\t pairs.push([key, value]);\n\t return this;\n\t }\n\t cache = this.__data__ = new MapCache(pairs);\n\t }\n\t cache.set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `Stack`.\n\tStack.prototype.clear = stackClear;\n\tStack.prototype['delete'] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\n\t/**\n\t * Creates an array of the enumerable property names of the array-like `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @param {boolean} inherited Specify returning inherited property names.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction arrayLikeKeys(value, inherited) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t // Safari 9 makes `arguments.length` enumerable in strict mode.\n\t var result = (isArray(value) || isArguments(value))\n\t ? baseTimes(value.length, String)\n\t : [];\n\n\t var length = result.length,\n\t skipIndexes = !!length;\n\n\t for (var key in value) {\n\t if ((inherited || hasOwnProperty.call(value, key)) &&\n\t !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Assigns `value` to `key` of `object` if the existing value is not equivalent\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {string} key The key of the property to assign.\n\t * @param {*} value The value to assign.\n\t */\n\tfunction assignValue(object, key, value) {\n\t var objValue = object[key];\n\t if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n\t (value === undefined && !(key in object))) {\n\t object[key] = value;\n\t }\n\t}\n\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t var length = array.length;\n\t while (length--) {\n\t if (eq(array[length][0], key)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t}\n\n\t/**\n\t * The base implementation of `_.assign` without support for multiple sources\n\t * or `customizer` functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction baseAssign(object, source) {\n\t return object && copyObject(source, keys(source), object);\n\t}\n\n\t/**\n\t * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n\t * traversed objects.\n\t *\n\t * @private\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @param {boolean} [isFull] Specify a clone including symbols.\n\t * @param {Function} [customizer] The function to customize cloning.\n\t * @param {string} [key] The key of `value`.\n\t * @param {Object} [object] The parent object of `value`.\n\t * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n\t * @returns {*} Returns the cloned value.\n\t */\n\tfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n\t var result;\n\t if (customizer) {\n\t result = object ? customizer(value, key, object, stack) : customizer(value);\n\t }\n\t if (result !== undefined) {\n\t return result;\n\t }\n\t if (!isObject(value)) {\n\t return value;\n\t }\n\t var isArr = isArray(value);\n\t if (isArr) {\n\t result = initCloneArray(value);\n\t if (!isDeep) {\n\t return copyArray(value, result);\n\t }\n\t } else {\n\t var tag = getTag(value),\n\t isFunc = tag == funcTag || tag == genTag;\n\n\t if (isBuffer(value)) {\n\t return cloneBuffer(value, isDeep);\n\t }\n\t if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n\t if (isHostObject(value)) {\n\t return object ? value : {};\n\t }\n\t result = initCloneObject(isFunc ? {} : value);\n\t if (!isDeep) {\n\t return copySymbols(value, baseAssign(result, value));\n\t }\n\t } else {\n\t if (!cloneableTags[tag]) {\n\t return object ? value : {};\n\t }\n\t result = initCloneByTag(value, tag, baseClone, isDeep);\n\t }\n\t }\n\t // Check for circular references and return its corresponding clone.\n\t stack || (stack = new Stack);\n\t var stacked = stack.get(value);\n\t if (stacked) {\n\t return stacked;\n\t }\n\t stack.set(value, result);\n\n\t if (!isArr) {\n\t var props = isFull ? getAllKeys(value) : keys(value);\n\t }\n\t arrayEach(props || value, function(subValue, key) {\n\t if (props) {\n\t key = subValue;\n\t subValue = value[key];\n\t }\n\t // Recursively populate clone (susceptible to call stack limits).\n\t assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * The base implementation of `_.create` without support for assigning\n\t * properties to the created object.\n\t *\n\t * @private\n\t * @param {Object} prototype The object to inherit from.\n\t * @returns {Object} Returns the new object.\n\t */\n\tfunction baseCreate(proto) {\n\t return isObject(proto) ? objectCreate(proto) : {};\n\t}\n\n\t/**\n\t * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n\t * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n\t * symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @param {Function} symbolsFunc The function to get the symbols of `object`.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n\t var result = keysFunc(object);\n\t return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n\t}\n\n\t/**\n\t * The base implementation of `getTag`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction baseGetTag(value) {\n\t return objectToString.call(value);\n\t}\n\n\t/**\n\t * The base implementation of `_.isNative` without bad shim checks.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t * else `false`.\n\t */\n\tfunction baseIsNative(value) {\n\t if (!isObject(value) || isMasked(value)) {\n\t return false;\n\t }\n\t var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t return pattern.test(toSource(value));\n\t}\n\n\t/**\n\t * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t if (!isPrototype(object)) {\n\t return nativeKeys(object);\n\t }\n\t var result = [];\n\t for (var key in Object(object)) {\n\t if (hasOwnProperty.call(object, key) && key != 'constructor') {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `buffer`.\n\t *\n\t * @private\n\t * @param {Buffer} buffer The buffer to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Buffer} Returns the cloned buffer.\n\t */\n\tfunction cloneBuffer(buffer, isDeep) {\n\t if (isDeep) {\n\t return buffer.slice();\n\t }\n\t var result = new buffer.constructor(buffer.length);\n\t buffer.copy(result);\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `arrayBuffer`.\n\t *\n\t * @private\n\t * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n\t * @returns {ArrayBuffer} Returns the cloned array buffer.\n\t */\n\tfunction cloneArrayBuffer(arrayBuffer) {\n\t var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n\t new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `dataView`.\n\t *\n\t * @private\n\t * @param {Object} dataView The data view to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned data view.\n\t */\n\tfunction cloneDataView(dataView, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n\t return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n\t}\n\n\t/**\n\t * Creates a clone of `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned map.\n\t */\n\tfunction cloneMap(map, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n\t return arrayReduce(array, addMapEntry, new map.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of `regexp`.\n\t *\n\t * @private\n\t * @param {Object} regexp The regexp to clone.\n\t * @returns {Object} Returns the cloned regexp.\n\t */\n\tfunction cloneRegExp(regexp) {\n\t var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n\t result.lastIndex = regexp.lastIndex;\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned set.\n\t */\n\tfunction cloneSet(set, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n\t return arrayReduce(array, addSetEntry, new set.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of the `symbol` object.\n\t *\n\t * @private\n\t * @param {Object} symbol The symbol object to clone.\n\t * @returns {Object} Returns the cloned symbol object.\n\t */\n\tfunction cloneSymbol(symbol) {\n\t return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n\t}\n\n\t/**\n\t * Creates a clone of `typedArray`.\n\t *\n\t * @private\n\t * @param {Object} typedArray The typed array to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned typed array.\n\t */\n\tfunction cloneTypedArray(typedArray, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n\t return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n\t}\n\n\t/**\n\t * Copies the values of `source` to `array`.\n\t *\n\t * @private\n\t * @param {Array} source The array to copy values from.\n\t * @param {Array} [array=[]] The array to copy values to.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction copyArray(source, array) {\n\t var index = -1,\n\t length = source.length;\n\n\t array || (array = Array(length));\n\t while (++index < length) {\n\t array[index] = source[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Copies properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy properties from.\n\t * @param {Array} props The property identifiers to copy.\n\t * @param {Object} [object={}] The object to copy properties to.\n\t * @param {Function} [customizer] The function to customize copied values.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copyObject(source, props, object, customizer) {\n\t object || (object = {});\n\n\t var index = -1,\n\t length = props.length;\n\n\t while (++index < length) {\n\t var key = props[index];\n\n\t var newValue = customizer\n\t ? customizer(object[key], source[key], key, object, source)\n\t : undefined;\n\n\t assignValue(object, key, newValue === undefined ? source[key] : newValue);\n\t }\n\t return object;\n\t}\n\n\t/**\n\t * Copies own symbol properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy symbols from.\n\t * @param {Object} [object={}] The object to copy symbols to.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copySymbols(source, object) {\n\t return copyObject(source, getSymbols(source), object);\n\t}\n\n\t/**\n\t * Creates an array of own enumerable property names and symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction getAllKeys(object) {\n\t return baseGetAllKeys(object, keys, getSymbols);\n\t}\n\n\t/**\n\t * Gets the data for `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to query.\n\t * @param {string} key The reference key.\n\t * @returns {*} Returns the map data.\n\t */\n\tfunction getMapData(map, key) {\n\t var data = map.__data__;\n\t return isKeyable(key)\n\t ? data[typeof key == 'string' ? 'string' : 'hash']\n\t : data.map;\n\t}\n\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = getValue(object, key);\n\t return baseIsNative(value) ? value : undefined;\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable symbol properties of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of symbols.\n\t */\n\tvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n\t/**\n\t * Gets the `toStringTag` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tvar getTag = baseGetTag;\n\n\t// Fallback for data views, maps, sets, and weak maps in IE 11,\n\t// for data views in Edge < 14, and promises in Node.js.\n\tif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n\t (Map && getTag(new Map) != mapTag) ||\n\t (Promise && getTag(Promise.resolve()) != promiseTag) ||\n\t (Set && getTag(new Set) != setTag) ||\n\t (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n\t getTag = function(value) {\n\t var result = objectToString.call(value),\n\t Ctor = result == objectTag ? value.constructor : undefined,\n\t ctorString = Ctor ? toSource(Ctor) : undefined;\n\n\t if (ctorString) {\n\t switch (ctorString) {\n\t case dataViewCtorString: return dataViewTag;\n\t case mapCtorString: return mapTag;\n\t case promiseCtorString: return promiseTag;\n\t case setCtorString: return setTag;\n\t case weakMapCtorString: return weakMapTag;\n\t }\n\t }\n\t return result;\n\t };\n\t}\n\n\t/**\n\t * Initializes an array clone.\n\t *\n\t * @private\n\t * @param {Array} array The array to clone.\n\t * @returns {Array} Returns the initialized clone.\n\t */\n\tfunction initCloneArray(array) {\n\t var length = array.length,\n\t result = array.constructor(length);\n\n\t // Add properties assigned by `RegExp#exec`.\n\t if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n\t result.index = array.index;\n\t result.input = array.input;\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Initializes an object clone.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneObject(object) {\n\t return (typeof object.constructor == 'function' && !isPrototype(object))\n\t ? baseCreate(getPrototype(object))\n\t : {};\n\t}\n\n\t/**\n\t * Initializes an object clone based on its `toStringTag`.\n\t *\n\t * **Note:** This function only supports cloning values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @param {string} tag The `toStringTag` of the object to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n\t var Ctor = object.constructor;\n\t switch (tag) {\n\t case arrayBufferTag:\n\t return cloneArrayBuffer(object);\n\n\t case boolTag:\n\t case dateTag:\n\t return new Ctor(+object);\n\n\t case dataViewTag:\n\t return cloneDataView(object, isDeep);\n\n\t case float32Tag: case float64Tag:\n\t case int8Tag: case int16Tag: case int32Tag:\n\t case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n\t return cloneTypedArray(object, isDeep);\n\n\t case mapTag:\n\t return cloneMap(object, isDeep, cloneFunc);\n\n\t case numberTag:\n\t case stringTag:\n\t return new Ctor(object);\n\n\t case regexpTag:\n\t return cloneRegExp(object);\n\n\t case setTag:\n\t return cloneSet(object, isDeep, cloneFunc);\n\n\t case symbolTag:\n\t return cloneSymbol(object);\n\t }\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return !!length &&\n\t (typeof value == 'number' || reIsUint.test(value)) &&\n\t (value > -1 && value % 1 == 0 && value < length);\n\t}\n\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t var type = typeof value;\n\t return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n\t ? (value !== '__proto__')\n\t : (value === null);\n\t}\n\n\t/**\n\t * Checks if `func` has its source masked.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n\t */\n\tfunction isMasked(func) {\n\t return !!maskSrcKey && (maskSrcKey in func);\n\t}\n\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n\t return value === proto;\n\t}\n\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t if (func != null) {\n\t try {\n\t return funcToString.call(func);\n\t } catch (e) {}\n\t try {\n\t return (func + '');\n\t } catch (e) {}\n\t }\n\t return '';\n\t}\n\n\t/**\n\t * This method is like `_.clone` except that it recursively clones `value`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 1.0.0\n\t * @category Lang\n\t * @param {*} value The value to recursively clone.\n\t * @returns {*} Returns the deep cloned value.\n\t * @see _.clone\n\t * @example\n\t *\n\t * var objects = [{ 'a': 1 }, { 'b': 2 }];\n\t *\n\t * var deep = _.cloneDeep(objects);\n\t * console.log(deep[0] === objects[0]);\n\t * // => false\n\t */\n\tfunction cloneDeep(value) {\n\t return baseClone(value, true, true);\n\t}\n\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(value.length) && !isFunction(value);\n\t}\n\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t return isObjectLike(value) && isArrayLike(value);\n\t}\n\n\t/**\n\t * Checks if `value` is a buffer.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.3.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n\t * @example\n\t *\n\t * _.isBuffer(new Buffer(2));\n\t * // => true\n\t *\n\t * _.isBuffer(new Uint8Array(2));\n\t * // => false\n\t */\n\tvar isBuffer = nativeIsBuffer || stubFalse;\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8-9 which returns 'object' for typed array and other constructors.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n\t}\n\n\t/**\n\t * This method returns a new empty array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {Array} Returns the new empty array.\n\t * @example\n\t *\n\t * var arrays = _.times(2, _.stubArray);\n\t *\n\t * console.log(arrays);\n\t * // => [[], []]\n\t *\n\t * console.log(arrays[0] === arrays[1]);\n\t * // => false\n\t */\n\tfunction stubArray() {\n\t return [];\n\t}\n\n\t/**\n\t * This method returns `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {boolean} Returns `false`.\n\t * @example\n\t *\n\t * _.times(2, _.stubFalse);\n\t * // => [false, false]\n\t */\n\tfunction stubFalse() {\n\t return false;\n\t}\n\n\tmodule.exports = cloneDeep; \n} (lodash_clonedeep, lodash_clonedeep.exports));\n\nvar lodash_clonedeepExports = lodash_clonedeep.exports;\nvar cloneDeep = /*@__PURE__*/getDefaultExportFromCjs(lodash_clonedeepExports);\n\nfunction applyContextDelta(context, delta, logger) {\n try {\n if (logger?.canPublish(\"trace\")) {\n logger?.trace(`applying context delta ${JSON.stringify(delta)} on context ${JSON.stringify(context)}`);\n }\n if (!delta) {\n return context;\n }\n if (delta.reset) {\n context = { ...delta.reset };\n return context;\n }\n context = deepClone(context, undefined);\n if (delta.commands) {\n for (const command of delta.commands) {\n if (command.type === \"remove\") {\n deletePath(context, command.path);\n }\n else if (command.type === \"set\") {\n setValueToPath(context, command.value, command.path);\n }\n }\n return context;\n }\n const added = delta.added;\n const updated = delta.updated;\n const removed = delta.removed;\n if (added) {\n Object.keys(added).forEach((key) => {\n context[key] = added[key];\n });\n }\n if (updated) {\n Object.keys(updated).forEach((key) => {\n mergeObjectsProperties(key, context, updated);\n });\n }\n if (removed) {\n removed.forEach((key) => {\n delete context[key];\n });\n }\n return context;\n }\n catch (e) {\n logger?.error(`error applying context delta ${JSON.stringify(delta)} on context ${JSON.stringify(context)}`, e);\n return context;\n }\n}\nfunction deepClone(obj, hash) {\n return cloneDeep(obj);\n}\nconst mergeObjectsProperties = (key, what, withWhat) => {\n const right = withWhat[key];\n if (right === undefined) {\n return what;\n }\n const left = what[key];\n if (!left || !right) {\n what[key] = right;\n return what;\n }\n if (typeof left === \"string\" ||\n typeof left === \"number\" ||\n typeof left === \"boolean\" ||\n typeof right === \"string\" ||\n typeof right === \"number\" ||\n typeof right === \"boolean\" ||\n Array.isArray(left) ||\n Array.isArray(right)) {\n what[key] = right;\n return what;\n }\n what[key] = Object.assign({}, left, right);\n return what;\n};\nfunction deepEqual(x, y) {\n if (x === y) {\n return true;\n }\n if (!(x instanceof Object) || !(y instanceof Object)) {\n return false;\n }\n if (x.constructor !== y.constructor) {\n return false;\n }\n for (const p in x) {\n if (!x.hasOwnProperty(p)) {\n continue;\n }\n if (!y.hasOwnProperty(p)) {\n return false;\n }\n if (x[p] === y[p]) {\n continue;\n }\n if (typeof (x[p]) !== \"object\") {\n return false;\n }\n if (!deepEqual(x[p], y[p])) {\n return false;\n }\n }\n for (const p in y) {\n if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) {\n return false;\n }\n }\n return true;\n}\nfunction setValueToPath(obj, value, path) {\n const pathArr = path.split(\".\");\n let i;\n for (i = 0; i < pathArr.length - 1; i++) {\n if (!obj[pathArr[i]]) {\n obj[pathArr[i]] = {};\n }\n if (typeof obj[pathArr[i]] !== \"object\") {\n obj[pathArr[i]] = {};\n }\n obj = obj[pathArr[i]];\n }\n obj[pathArr[i]] = value;\n}\nfunction isSubset(superObj, subObj) {\n return Object.keys(subObj).every((ele) => {\n if (typeof subObj[ele] === \"object\") {\n return isSubset(superObj?.[ele] || {}, subObj[ele] || {});\n }\n return subObj[ele] === superObj?.[ele];\n });\n}\nfunction deletePath(obj, path) {\n const pathArr = path.split(\".\");\n let i;\n for (i = 0; i < pathArr.length - 1; i++) {\n if (!obj[pathArr[i]]) {\n return;\n }\n obj = obj[pathArr[i]];\n }\n delete obj[pathArr[i]];\n}\n\nclass GW3Bridge {\n _logger;\n _connection;\n _trackAllContexts;\n _reAnnounceKnownContexts;\n _gw3Session;\n _contextNameToData = {};\n _gw3Subscriptions = [];\n _nextCallbackSubscriptionNumber = 0;\n _creationPromises = {};\n _contextNameToId = {};\n _contextIdToName = {};\n _protocolVersion = undefined;\n _contextsTempCache = {};\n _contextsSubscriptionsCache = [];\n _systemContextsSubKey;\n get protocolVersion() {\n if (!this._protocolVersion) {\n const contextsDomainInfo = this._connection.availableDomains.find((d) => d.uri === \"context\");\n this._protocolVersion = contextsDomainInfo?.version ?? 1;\n }\n return this._protocolVersion;\n }\n get setPathSupported() {\n return this.protocolVersion >= 2;\n }\n constructor(config) {\n this._connection = config.connection;\n this._logger = config.logger;\n this._trackAllContexts = config.trackAllContexts;\n this._reAnnounceKnownContexts = config.reAnnounceKnownContexts;\n this._gw3Session = this._connection.domain(\"global\", [\n GW_MESSAGE_CONTEXT_CREATED,\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\n GW_MESSAGE_CONTEXT_DESTROYED,\n GW_MESSAGE_CONTEXT_UPDATED,\n ]);\n this._gw3Session.disconnected(this.resetState.bind(this));\n this._gw3Session.onJoined((wasReconnect) => {\n if (!wasReconnect) {\n return;\n }\n if (!this._reAnnounceKnownContexts) {\n return this._connection.setLibReAnnounced({ name: \"contexts\" });\n }\n this.reInitiateState().then(() => this._connection.setLibReAnnounced({ name: \"contexts\" }));\n });\n this.subscribeToContextCreatedMessages();\n this.subscribeToContextUpdatedMessages();\n this.subscribeToContextDestroyedMessages();\n this._connection.replayer?.drain(ContextMessageReplaySpec.name, (message) => {\n const type = message.type;\n if (!type) {\n return;\n }\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\n type === GW_MESSAGE_CONTEXT_ADDED ||\n type === GW_MESSAGE_ACTIVITY_CREATED) {\n this.handleContextCreatedMessage(message);\n }\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\n type === GW_MESSAGE_CONTEXT_UPDATED ||\n type === GW_MESSAGE_JOINED_ACTIVITY) {\n this.handleContextUpdatedMessage(message);\n }\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\n this.handleContextDestroyedMessage(message);\n }\n });\n }\n dispose() {\n for (const sub of this._gw3Subscriptions) {\n this._connection.off(sub);\n }\n this._gw3Subscriptions.length = 0;\n for (const contextName in this._contextNameToData) {\n if (this._contextNameToId.hasOwnProperty(contextName)) {\n delete this._contextNameToData[contextName];\n }\n }\n }\n createContext(name, data) {\n if (name in this._creationPromises) {\n return this._creationPromises[name];\n }\n this._creationPromises[name] =\n this._gw3Session\n .send({\n type: GW_MESSAGE_CREATE_CONTEXT,\n domain: \"global\",\n name,\n data,\n lifetime: \"retained\",\n })\n .then((createContextMsg) => {\n this._contextNameToId[name] = createContextMsg.context_id;\n this._contextIdToName[createContextMsg.context_id] = name;\n const contextData = this._contextNameToData[name] || new GW3ContextData(createContextMsg.context_id, name, true, undefined);\n contextData.isAnnounced = true;\n contextData.name = name;\n contextData.contextId = createContextMsg.context_id;\n contextData.context = createContextMsg.data || deepClone(data);\n contextData.hasReceivedSnapshot = true;\n this._contextNameToData[name] = contextData;\n delete this._creationPromises[name];\n return createContextMsg.context_id;\n });\n return this._creationPromises[name];\n }\n all() {\n return Object.keys(this._contextNameToData)\n .filter((name) => this._contextNameToData[name].isAnnounced);\n }\n async update(name, delta) {\n if (delta) {\n delta = deepClone(delta);\n }\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n return this.createContext(name, delta);\n }\n let currentContext = contextData.context;\n if (!contextData.hasCallbacks()) {\n currentContext = await this.get(contextData.name);\n }\n const calculatedDelta = this.setPathSupported ?\n this.calculateContextDeltaV2(currentContext, delta) :\n this.calculateContextDeltaV1(currentContext, delta);\n if (!Object.keys(calculatedDelta.added).length\n && !Object.keys(calculatedDelta.updated).length\n && !calculatedDelta.removed.length\n && !calculatedDelta.commands?.length) {\n return Promise.resolve();\n }\n return this._gw3Session\n .send({\n type: GW_MESSAGE_UPDATE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n delta: calculatedDelta,\n }, {}, { skipPeerId: false })\n .then((gwResponse) => {\n this.handleUpdated(contextData, calculatedDelta, {\n updaterId: gwResponse.peer_id\n });\n });\n }\n async set(name, data) {\n if (data) {\n data = deepClone(data);\n }\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n return this.createContext(name, data);\n }\n return this._gw3Session\n .send({\n type: GW_MESSAGE_UPDATE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n delta: { reset: data },\n }, {}, { skipPeerId: false })\n .then((gwResponse) => {\n this.handleUpdated(contextData, {\n reset: data,\n added: {},\n removed: [],\n updated: {}\n }, {\n updaterId: gwResponse.peer_id\n });\n });\n }\n setPath(name, path, value) {\n if (!this.setPathSupported) {\n return Promise.reject(\"glue.contexts.setPath operation is not supported, use Glue42 3.10 or later\");\n }\n return this.setPaths(name, [{ path, value }]);\n }\n async setPaths(name, pathValues) {\n if (!this.setPathSupported) {\n return Promise.reject(\"glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later\");\n }\n if (pathValues) {\n pathValues = deepClone(pathValues);\n }\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n const obj = {};\n for (const pathValue of pathValues) {\n setValueToPath(obj, pathValue.value, pathValue.path);\n }\n return this.createContext(name, obj);\n }\n const commands = [];\n for (const pathValue of pathValues) {\n if (pathValue.value === null) {\n commands.push({ type: \"remove\", path: pathValue.path });\n }\n else {\n commands.push({ type: \"set\", path: pathValue.path, value: pathValue.value });\n }\n }\n return this._gw3Session\n .send({\n type: GW_MESSAGE_UPDATE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n delta: { commands }\n }, {}, { skipPeerId: false })\n .then((gwResponse) => {\n this.handleUpdated(contextData, {\n added: {},\n removed: [],\n updated: {},\n commands\n }, {\n updaterId: gwResponse.peer_id\n });\n });\n }\n async get(name) {\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n return Promise.resolve({});\n }\n if (contextData && (!contextData.hasCallbacks() || !contextData.hasReceivedSnapshot)) {\n return new Promise((resolve) => {\n this.subscribe(name, (data, _d, _r, un) => {\n this.unsubscribe(un);\n resolve(data);\n });\n });\n }\n const context = contextData?.context ?? {};\n return Promise.resolve(deepClone(context));\n }\n async subscribe(name, callback, subscriptionKey) {\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const thisCallbackSubscriptionNumber = typeof subscriptionKey === \"undefined\" ? this._nextCallbackSubscriptionNumber : subscriptionKey;\n if (typeof subscriptionKey === \"undefined\") {\n this._nextCallbackSubscriptionNumber += 1;\n }\n if (this._contextsSubscriptionsCache.every((subscription) => subscription.subKey !== this._nextCallbackSubscriptionNumber)) {\n this._contextsSubscriptionsCache.push({ contextName: name, subKey: thisCallbackSubscriptionNumber, callback });\n }\n let contextData = this._contextNameToData[name];\n if (!contextData ||\n !contextData.isAnnounced) {\n contextData = contextData || new GW3ContextData(undefined, name, false, undefined);\n this._contextNameToData[name] = contextData;\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\n return Promise.resolve(thisCallbackSubscriptionNumber);\n }\n const hadCallbacks = contextData.hasCallbacks();\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\n if (!hadCallbacks) {\n if (!contextData.joinedActivity) {\n if (contextData.context && contextData.sentExplicitSubscription) {\n if (contextData.hasReceivedSnapshot) {\n const clone = deepClone(contextData.context);\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\n }\n return Promise.resolve(thisCallbackSubscriptionNumber);\n }\n return this.sendSubscribe(contextData)\n .then(() => thisCallbackSubscriptionNumber);\n }\n else {\n if (contextData.hasReceivedSnapshot) {\n const clone = deepClone(contextData.context);\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\n }\n return Promise.resolve(thisCallbackSubscriptionNumber);\n }\n }\n else {\n if (contextData.hasReceivedSnapshot) {\n const clone = deepClone(contextData.context);\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\n }\n return Promise.resolve(thisCallbackSubscriptionNumber);\n }\n }\n unsubscribe(subscriptionKey) {\n this._contextsSubscriptionsCache = this._contextsSubscriptionsCache.filter((subscription) => subscription.subKey !== subscriptionKey);\n for (const name of Object.keys(this._contextNameToData)) {\n const contextData = this._contextNameToData[name];\n if (!contextData) {\n return;\n }\n const hadCallbacks = contextData.hasCallbacks();\n delete contextData.updateCallbacks[subscriptionKey];\n if (contextData.isAnnounced &&\n hadCallbacks &&\n !contextData.hasCallbacks() &&\n contextData.sentExplicitSubscription) {\n this.sendUnsubscribe(contextData).catch(() => { });\n }\n if (!contextData.isAnnounced &&\n !contextData.hasCallbacks()) {\n delete this._contextNameToData[name];\n }\n }\n }\n async destroy(name) {\n if (name in this._creationPromises) {\n await this._creationPromises[name];\n }\n const contextData = this._contextNameToData[name];\n if (!contextData) {\n return Promise.reject(`context with ${name} does not exist`);\n }\n return this._gw3Session\n .send({\n type: GW_MESSAGE_DESTROY_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n }).then((_) => undefined);\n }\n handleUpdated(contextData, delta, extraData) {\n const oldContext = contextData.context;\n contextData.context = applyContextDelta(contextData.context, delta, this._logger);\n contextData.hasReceivedSnapshot = true;\n if (this._contextNameToData[contextData.name] === contextData &&\n !deepEqual(oldContext, contextData.context)) {\n this.invokeUpdateCallbacks(contextData, delta, extraData);\n }\n }\n subscribeToContextCreatedMessages() {\n const createdMessageTypes = [\n GW_MESSAGE_CONTEXT_ADDED,\n GW_MESSAGE_CONTEXT_CREATED,\n GW_MESSAGE_ACTIVITY_CREATED,\n ];\n for (const createdMessageType of createdMessageTypes) {\n const sub = this._connection.on(createdMessageType, this.handleContextCreatedMessage.bind(this));\n this._gw3Subscriptions.push(sub);\n }\n }\n handleContextCreatedMessage(contextCreatedMsg) {\n const createdMessageType = contextCreatedMsg.type;\n if (createdMessageType === GW_MESSAGE_ACTIVITY_CREATED) {\n this._contextNameToId[contextCreatedMsg.activity_id] = contextCreatedMsg.context_id;\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.activity_id;\n }\n else if (createdMessageType === GW_MESSAGE_CONTEXT_ADDED) {\n this._contextNameToId[contextCreatedMsg.name] = contextCreatedMsg.context_id;\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.name;\n }\n else ;\n const name = this._contextIdToName[contextCreatedMsg.context_id];\n if (!name) {\n throw new Error(\"Received created event for context with unknown name: \" + contextCreatedMsg.context_id);\n }\n if (!this._contextNameToId[name]) {\n throw new Error(\"Received created event for context with unknown id: \" + contextCreatedMsg.context_id);\n }\n let contextData = this._contextNameToData[name];\n if (contextData) {\n if (contextData.isAnnounced) {\n return;\n }\n else {\n if (!contextData.hasCallbacks()) {\n throw new Error(\"Assertion failure: contextData.hasCallbacks()\");\n }\n contextData.isAnnounced = true;\n contextData.contextId = contextCreatedMsg.context_id;\n contextData.activityId = contextCreatedMsg.activity_id;\n if (!contextData.sentExplicitSubscription) {\n this.sendSubscribe(contextData);\n }\n }\n }\n else {\n this._contextNameToData[name] = contextData =\n new GW3ContextData(contextCreatedMsg.context_id, name, true, contextCreatedMsg.activity_id);\n if (this._trackAllContexts) {\n this.subscribe(name, () => { }).then((subKey) => this._systemContextsSubKey = subKey);\n }\n }\n }\n subscribeToContextUpdatedMessages() {\n const updatedMessageTypes = [\n GW_MESSAGE_CONTEXT_UPDATED,\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\n GW_MESSAGE_JOINED_ACTIVITY,\n ];\n for (const updatedMessageType of updatedMessageTypes) {\n const sub = this._connection.on(updatedMessageType, this.handleContextUpdatedMessage.bind(this));\n this._gw3Subscriptions.push(sub);\n }\n }\n handleContextUpdatedMessage(contextUpdatedMsg) {\n const updatedMessageType = contextUpdatedMsg.type;\n const contextId = contextUpdatedMsg.context_id;\n let contextData = this._contextNameToData[this._contextIdToName[contextId]];\n const justSeen = !contextData || !contextData.isAnnounced;\n if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\n if (!contextData) {\n contextData =\n this._contextNameToData[contextUpdatedMsg.activity_id] ||\n new GW3ContextData(contextId, contextUpdatedMsg.activity_id, true, contextUpdatedMsg.activity_id);\n }\n this._contextNameToData[contextUpdatedMsg.activity_id] = contextData;\n this._contextIdToName[contextId] = contextUpdatedMsg.activity_id;\n this._contextNameToId[contextUpdatedMsg.activity_id] = contextId;\n contextData.contextId = contextId;\n contextData.isAnnounced = true;\n contextData.activityId = contextUpdatedMsg.activity_id;\n contextData.joinedActivity = true;\n }\n else {\n if (!contextData || !contextData.isAnnounced) {\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\n contextData = contextData || new GW3ContextData(contextId, contextUpdatedMsg.name, true, undefined);\n contextData.sentExplicitSubscription = true;\n this._contextNameToData[contextUpdatedMsg.name] = contextData;\n this._contextIdToName[contextId] = contextUpdatedMsg.name;\n this._contextNameToId[contextUpdatedMsg.name] = contextId;\n }\n else {\n this._logger.error(`Received 'update' for unknown context: ${contextId}`);\n }\n return;\n }\n }\n const oldContext = contextData.context;\n contextData.hasReceivedSnapshot = true;\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\n contextData.context = contextUpdatedMsg.data || {};\n }\n else if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\n contextData.context = contextUpdatedMsg.context_snapshot || {};\n }\n else if (updatedMessageType === GW_MESSAGE_CONTEXT_UPDATED) {\n contextData.context = applyContextDelta(contextData.context, contextUpdatedMsg.delta, this._logger);\n }\n else {\n throw new Error(\"Unrecognized context update message \" + updatedMessageType);\n }\n if (justSeen ||\n !deepEqual(contextData.context, oldContext) ||\n updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\n this.invokeUpdateCallbacks(contextData, contextUpdatedMsg.delta, { updaterId: contextUpdatedMsg.updater_id });\n }\n }\n invokeUpdateCallbacks(contextData, delta, extraData) {\n delta = delta || { added: {}, updated: {}, reset: {}, removed: [] };\n if (delta.commands) {\n delta.added = delta.updated = delta.reset = {};\n delta.removed = [];\n for (const command of delta.commands) {\n if (command.type === \"remove\") {\n if (command.path.indexOf(\".\") === -1) {\n delta.removed.push(command.path);\n }\n setValueToPath(delta.updated, null, command.path);\n }\n else if (command.type === \"set\") {\n setValueToPath(delta.updated, command.value, command.path);\n }\n }\n }\n for (const updateCallbackIndex in contextData.updateCallbacks) {\n if (contextData.updateCallbacks.hasOwnProperty(updateCallbackIndex)) {\n try {\n const updateCallback = contextData.updateCallbacks[updateCallbackIndex];\n updateCallback(deepClone(contextData.context), deepClone(Object.assign({}, delta.added || {}, delta.updated || {}, delta.reset || {})), delta.removed, parseInt(updateCallbackIndex, 10), extraData);\n }\n catch (err) {\n this._logger.debug(\"callback error: \" + JSON.stringify(err));\n }\n }\n }\n }\n subscribeToContextDestroyedMessages() {\n const destroyedMessageTypes = [\n GW_MESSAGE_CONTEXT_DESTROYED,\n GW_MESSAGE_ACTIVITY_DESTROYED,\n ];\n for (const destroyedMessageType of destroyedMessageTypes) {\n const sub = this._connection.on(destroyedMessageType, this.handleContextDestroyedMessage.bind(this));\n this._gw3Subscriptions.push(sub);\n }\n }\n handleContextDestroyedMessage(destroyedMsg) {\n const destroyedMessageType = destroyedMsg.type;\n let contextId;\n let name;\n if (destroyedMessageType === GW_MESSAGE_ACTIVITY_DESTROYED) {\n name = destroyedMsg.activity_id;\n contextId = this._contextNameToId[name];\n if (!contextId) {\n this._logger.error(`Received 'destroyed' for unknown activity: ${destroyedMsg.activity_id}`);\n return;\n }\n }\n else {\n contextId = destroyedMsg.context_id;\n name = this._contextIdToName[contextId];\n if (!name) {\n this._logger.error(`Received 'destroyed' for unknown context: ${destroyedMsg.context_id}`);\n return;\n }\n }\n delete this._contextIdToName[contextId];\n delete this._contextNameToId[name];\n const contextData = this._contextNameToData[name];\n delete this._contextNameToData[name];\n if (!contextData || !contextData.isAnnounced) {\n this._logger.error(`Received 'destroyed' for unknown context: ${contextId}`);\n return;\n }\n }\n sendSubscribe(contextData) {\n contextData.sentExplicitSubscription = true;\n return this._gw3Session\n .send({\n type: GW_MESSAGE_SUBSCRIBE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n }).then((_) => undefined);\n }\n sendUnsubscribe(contextData) {\n contextData.sentExplicitSubscription = false;\n return this._gw3Session\n .send({\n type: GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\n domain: \"global\",\n context_id: contextData.contextId,\n }).then((_) => undefined);\n }\n calculateContextDeltaV1(from, to) {\n const delta = { added: {}, updated: {}, removed: [], reset: undefined };\n if (from) {\n for (const x of Object.keys(from)) {\n if (Object.keys(to).indexOf(x) !== -1\n && to[x] !== null\n && !deepEqual(from[x], to[x])) {\n delta.updated[x] = to[x];\n }\n }\n }\n for (const x of Object.keys(to)) {\n if (!from || (Object.keys(from).indexOf(x) === -1)) {\n if (to[x] !== null) {\n delta.added[x] = to[x];\n }\n }\n else if (to[x] === null) {\n delta.removed.push(x);\n }\n }\n return delta;\n }\n calculateContextDeltaV2(from, to) {\n const delta = { added: {}, updated: {}, removed: [], reset: undefined, commands: [] };\n for (const x of Object.keys(to)) {\n if (to[x] !== null) {\n const fromX = from ? from[x] : null;\n if (!deepEqual(fromX, to[x])) {\n delta.commands?.push({ type: \"set\", path: x, value: to[x] });\n }\n }\n else {\n delta.commands?.push({ type: \"remove\", path: x });\n }\n }\n return delta;\n }\n resetState() {\n for (const sub of this._gw3Subscriptions) {\n this._connection.off(sub);\n }\n if (this._systemContextsSubKey) {\n this.unsubscribe(this._systemContextsSubKey);\n delete this._systemContextsSubKey;\n }\n this._gw3Subscriptions = [];\n this._contextNameToId = {};\n this._contextIdToName = {};\n delete this._protocolVersion;\n this._contextsTempCache = Object.keys(this._contextNameToData).reduce((cacheSoFar, ctxName) => {\n cacheSoFar[ctxName] = this._contextNameToData[ctxName].context;\n return cacheSoFar;\n }, {});\n this._contextNameToData = {};\n }\n async reInitiateState() {\n this.subscribeToContextCreatedMessages();\n this.subscribeToContextUpdatedMessages();\n this.subscribeToContextDestroyedMessages();\n this._connection.replayer?.drain(ContextMessageReplaySpec.name, (message) => {\n const type = message.type;\n if (!type) {\n return;\n }\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\n type === GW_MESSAGE_CONTEXT_ADDED ||\n type === GW_MESSAGE_ACTIVITY_CREATED) {\n this.handleContextCreatedMessage(message);\n }\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\n type === GW_MESSAGE_CONTEXT_UPDATED ||\n type === GW_MESSAGE_JOINED_ACTIVITY) {\n this.handleContextUpdatedMessage(message);\n }\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\n this.handleContextDestroyedMessage(message);\n }\n });\n await Promise.all(this._contextsSubscriptionsCache.map((subscription) => this.subscribe(subscription.contextName, subscription.callback, subscription.subKey)));\n await this.flushQueue();\n for (const ctxName in this._contextsTempCache) {\n if (typeof this._contextsTempCache[ctxName] !== \"object\" || Object.keys(this._contextsTempCache[ctxName]).length === 0) {\n continue;\n }\n const lastKnownData = this._contextsTempCache[ctxName];\n this._logger.info(`Re-announcing known context: ${ctxName}`);\n await this.flushQueue();\n await this.update(ctxName, lastKnownData);\n }\n this._contextsTempCache = {};\n this._logger.info(\"Contexts are re-announced\");\n }\n flushQueue() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0));\n }\n}\n\nclass ContextsModule {\n initTime;\n initStartTime;\n initEndTime;\n _bridge;\n constructor(config) {\n this._bridge = new GW3Bridge(config);\n }\n all() {\n return this._bridge.all();\n }\n update(name, data) {\n this.checkName(name);\n this.checkData(data);\n return this._bridge.update(name, data);\n }\n set(name, data) {\n this.checkName(name);\n this.checkData(data);\n return this._bridge.set(name, data);\n }\n setPath(name, path, data) {\n this.checkName(name);\n this.checkPath(path);\n const isTopLevelPath = path === \"\";\n if (isTopLevelPath) {\n this.checkData(data);\n return this.set(name, data);\n }\n return this._bridge.setPath(name, path, data);\n }\n setPaths(name, paths) {\n this.checkName(name);\n if (!Array.isArray(paths)) {\n throw new Error(\"Please provide the paths as an array of PathValues!\");\n }\n for (const { path, value } of paths) {\n this.checkPath(path);\n const isTopLevelPath = path === \"\";\n if (isTopLevelPath) {\n this.checkData(value);\n }\n }\n return this._bridge.setPaths(name, paths);\n }\n subscribe(name, callback) {\n this.checkName(name);\n if (typeof callback !== \"function\") {\n throw new Error(\"Please provide the callback as a function!\");\n }\n return this._bridge\n .subscribe(name, (data, delta, removed, key, extraData) => callback(data, delta, removed, () => this._bridge.unsubscribe(key), extraData))\n .then((key) => () => {\n this._bridge.unsubscribe(key);\n });\n }\n get(name) {\n this.checkName(name);\n return this._bridge.get(name);\n }\n ready() {\n return Promise.resolve(this);\n }\n destroy(name) {\n this.checkName(name);\n return this._bridge.destroy(name);\n }\n get setPathSupported() {\n return this._bridge.setPathSupported;\n }\n checkName(name) {\n if (typeof name !== \"string\" || name === \"\") {\n throw new Error(\"Please provide the name as a non-empty string!\");\n }\n }\n checkPath(path) {\n if (typeof path !== \"string\") {\n throw new Error(\"Please provide the path as a dot delimited string!\");\n }\n }\n checkData(data) {\n if (typeof data !== \"object\") {\n throw new Error(\"Please provide the data as an object!\");\n }\n }\n}\n\nfunction promisify (promise, successCallback, errorCallback) {\n if (typeof successCallback !== \"function\" && typeof errorCallback !== \"function\") {\n return promise;\n }\n if (typeof successCallback !== \"function\") {\n successCallback = () => { };\n }\n else if (typeof errorCallback !== \"function\") {\n errorCallback = () => { };\n }\n return promise.then(successCallback, errorCallback);\n}\n\nfunction rejectAfter(ms = 0, promise, error) {\n let timeout;\n const clearTimeoutIfThere = () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n };\n promise\n .then(() => {\n clearTimeoutIfThere();\n })\n .catch(() => {\n clearTimeoutIfThere();\n });\n return new Promise((resolve, reject) => {\n timeout = setTimeout(() => reject(error), ms);\n });\n}\n\nvar InvokeStatus;\n(function (InvokeStatus) {\n InvokeStatus[InvokeStatus[\"Success\"] = 0] = \"Success\";\n InvokeStatus[InvokeStatus[\"Error\"] = 1] = \"Error\";\n})(InvokeStatus || (InvokeStatus = {}));\nclass Client {\n protocol;\n repo;\n instance;\n configuration;\n constructor(protocol, repo, instance, configuration) {\n this.protocol = protocol;\n this.repo = repo;\n this.instance = instance;\n this.configuration = configuration;\n }\n subscribe(method, options, successCallback, errorCallback, existingSub) {\n const callProtocolSubscribe = (targetServers, stream, successProxy, errorProxy) => {\n options.methodResponseTimeout = options.methodResponseTimeout ?? options.waitTimeoutMs;\n this.protocol.client.subscribe(stream, options, targetServers, successProxy, errorProxy, existingSub);\n };\n const promise = new Promise((resolve, reject) => {\n const successProxy = (sub) => {\n resolve(sub);\n };\n const errorProxy = (err) => {\n reject(err);\n };\n if (!method) {\n reject(`Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.`);\n return;\n }\n let methodDef;\n if (typeof method === \"string\") {\n methodDef = { name: method };\n }\n else {\n methodDef = method;\n }\n if (!methodDef.name) {\n reject(`Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.`);\n return;\n }\n if (options === undefined) {\n options = {};\n }\n let target = options.target;\n if (target === undefined) {\n target = \"best\";\n }\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\") {\n reject(new Error(`\"${target}\" is not a valid target. Valid targets are \"all\", \"best\", or an instance.`));\n return;\n }\n if (options.methodResponseTimeout === undefined) {\n options.methodResponseTimeout = options.method_response_timeout;\n if (options.methodResponseTimeout === undefined) {\n options.methodResponseTimeout = this.configuration.methodResponseTimeout;\n }\n }\n if (options.waitTimeoutMs === undefined) {\n options.waitTimeoutMs = options.wait_for_method_timeout;\n if (options.waitTimeoutMs === undefined) {\n options.waitTimeoutMs = this.configuration.waitTimeoutMs;\n }\n }\n const delayStep = 500;\n let delayTillNow = 0;\n let currentServers = this.getServerMethodsByFilterAndTarget(methodDef, target);\n if (currentServers.length > 0) {\n callProtocolSubscribe(currentServers, currentServers[0].methods[0], successProxy, errorProxy);\n }\n else {\n const retry = () => {\n if (!target || !(options.waitTimeoutMs)) {\n return;\n }\n delayTillNow += delayStep;\n currentServers = this.getServerMethodsByFilterAndTarget(methodDef, target);\n if (currentServers.length > 0) {\n const streamInfo = currentServers[0].methods[0];\n callProtocolSubscribe(currentServers, streamInfo, successProxy, errorProxy);\n }\n else if (delayTillNow >= options.waitTimeoutMs) {\n const def = typeof method === \"string\" ? { name: method } : method;\n callProtocolSubscribe(currentServers, def, successProxy, errorProxy);\n }\n else {\n setTimeout(retry, delayStep);\n }\n };\n setTimeout(retry, delayStep);\n }\n });\n return promisify(promise, successCallback, errorCallback);\n }\n servers(methodFilter) {\n const filterCopy = methodFilter === undefined\n ? undefined\n : { ...methodFilter };\n return this.getServers(filterCopy).map((serverMethodMap) => {\n return serverMethodMap.server.instance;\n });\n }\n methods(methodFilter) {\n if (typeof methodFilter === \"string\") {\n methodFilter = { name: methodFilter };\n }\n else {\n methodFilter = { ...methodFilter };\n }\n return this.getMethods(methodFilter);\n }\n methodsForInstance(instance) {\n return this.getMethodsForInstance(instance);\n }\n methodAdded(callback) {\n return this.repo.onMethodAdded(callback);\n }\n methodRemoved(callback) {\n return this.repo.onMethodRemoved(callback);\n }\n serverAdded(callback) {\n return this.repo.onServerAdded(callback);\n }\n serverRemoved(callback) {\n return this.repo.onServerRemoved((server, reason) => {\n callback(server, reason);\n });\n }\n serverMethodAdded(callback) {\n return this.repo.onServerMethodAdded((server, method) => {\n callback({ server, method });\n });\n }\n serverMethodRemoved(callback) {\n return this.repo.onServerMethodRemoved((server, method) => {\n callback({ server, method });\n });\n }\n async invoke(methodFilter, argumentObj, target, additionalOptions, success, error) {\n const getInvokePromise = async () => {\n let methodDefinition;\n if (typeof methodFilter === \"string\") {\n methodDefinition = { name: methodFilter };\n }\n else {\n methodDefinition = { ...methodFilter };\n }\n if (!methodDefinition.name) {\n return Promise.reject(`Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.`);\n }\n if (!argumentObj) {\n argumentObj = {};\n }\n if (!target) {\n target = \"best\";\n }\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\" && target !== \"skipMine\") {\n return Promise.reject(new Error(`\"${target}\" is not a valid target. Valid targets are \"all\" and \"best\".`));\n }\n if (!additionalOptions) {\n additionalOptions = {};\n }\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\n additionalOptions.methodResponseTimeoutMs = additionalOptions.method_response_timeout;\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\n additionalOptions.methodResponseTimeoutMs = this.configuration.methodResponseTimeout;\n }\n }\n if (additionalOptions.waitTimeoutMs === undefined) {\n additionalOptions.waitTimeoutMs = additionalOptions.wait_for_method_timeout;\n if (additionalOptions.waitTimeoutMs === undefined) {\n additionalOptions.waitTimeoutMs = this.configuration.waitTimeoutMs;\n }\n }\n if (additionalOptions.waitTimeoutMs !== undefined && typeof additionalOptions.waitTimeoutMs !== \"number\") {\n return Promise.reject(new Error(`\"${additionalOptions.waitTimeoutMs}\" is not a valid number for \"waitTimeoutMs\" `));\n }\n if (typeof argumentObj !== \"object\") {\n return Promise.reject(new Error(`The method arguments must be an object. method: ${methodDefinition.name}`));\n }\n let serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target);\n if (serversMethodMap.length === 0) {\n try {\n serversMethodMap = await this.tryToAwaitForMethods(methodDefinition, target, additionalOptions);\n }\n catch (err) {\n const method = {\n ...methodDefinition,\n getServers: () => [],\n supportsStreaming: false,\n objectTypes: methodDefinition.objectTypes ?? [],\n flags: methodDefinition.flags?.metadata ?? {}\n };\n const errorObj = {\n method,\n called_with: argumentObj,\n message: `Can not find a method matching ${JSON.stringify(methodFilter)} with server filter ${JSON.stringify(target)}`,\n executed_by: undefined,\n returned: undefined,\n status: undefined,\n };\n return Promise.reject(errorObj);\n }\n }\n const timeout = additionalOptions.methodResponseTimeoutMs;\n const additionalOptionsCopy = additionalOptions;\n const invokePromises = serversMethodMap.map((serversMethodPair) => {\n const invId = nanoid(10);\n const method = serversMethodPair.methods[0];\n const server = serversMethodPair.server;\n const invokePromise = this.protocol.client.invoke(invId, method, argumentObj, server, additionalOptionsCopy);\n return Promise.race([\n invokePromise,\n rejectAfter(timeout, invokePromise, {\n invocationId: invId,\n message: `Invocation timeout (${timeout} ms) reached for method name: ${method?.name}, target instance: ${JSON.stringify(server.instance)}, options: ${JSON.stringify(additionalOptionsCopy)}`,\n status: InvokeStatus.Error,\n })\n ]);\n });\n const invocationMessages = await Promise.all(invokePromises);\n const results = this.getInvocationResultObj(invocationMessages, methodDefinition, argumentObj);\n const allRejected = invocationMessages.every((result) => result.status === InvokeStatus.Error);\n if (allRejected) {\n return Promise.reject(results);\n }\n return results;\n };\n return promisify(getInvokePromise(), success, error);\n }\n getInvocationResultObj(invocationResults, method, calledWith) {\n const all_return_values = invocationResults\n .filter((invokeMessage) => invokeMessage.status === InvokeStatus.Success)\n .reduce((allValues, currentValue) => {\n allValues = [\n ...allValues,\n {\n executed_by: currentValue.instance,\n returned: currentValue.result,\n called_with: calledWith,\n method,\n message: currentValue.message,\n status: currentValue.status,\n }\n ];\n return allValues;\n }, []);\n const all_errors = invocationResults\n .filter((invokeMessage) => invokeMessage.status === InvokeStatus.Error)\n .reduce((allErrors, currError) => {\n allErrors = [\n ...allErrors,\n {\n executed_by: currError.instance,\n called_with: calledWith,\n name: method.name,\n message: currError.message,\n }\n ];\n return allErrors;\n }, []);\n const invResult = invocationResults[0];\n const result = {\n method,\n called_with: calledWith,\n returned: invResult.result,\n executed_by: invResult.instance,\n all_return_values,\n all_errors,\n message: invResult.message,\n status: invResult.status\n };\n return result;\n }\n tryToAwaitForMethods(methodDefinition, target, additionalOptions) {\n return new Promise((resolve, reject) => {\n if (additionalOptions.waitTimeoutMs === 0) {\n reject();\n return;\n }\n const delayStep = 500;\n let delayTillNow = 0;\n const retry = () => {\n delayTillNow += delayStep;\n const serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target);\n if (serversMethodMap.length > 0) {\n clearInterval(interval);\n resolve(serversMethodMap);\n }\n else if (delayTillNow >= (additionalOptions.waitTimeoutMs || 10000)) {\n clearInterval(interval);\n reject();\n return;\n }\n };\n const interval = setInterval(retry, delayStep);\n });\n }\n filterByTarget(target, serverMethodMap) {\n if (typeof target === \"string\") {\n if (target === \"all\") {\n return [...serverMethodMap];\n }\n else if (target === \"best\") {\n const localMachine = serverMethodMap\n .find((s) => s.server.instance.isLocal);\n if (localMachine) {\n return [localMachine];\n }\n if (serverMethodMap[0] !== undefined) {\n return [serverMethodMap[0]];\n }\n }\n else if (target === \"skipMine\") {\n return serverMethodMap.filter(({ server }) => server.instance.peerId !== this.instance.peerId);\n }\n }\n else {\n let targetArray;\n if (!Array.isArray(target)) {\n targetArray = [target];\n }\n else {\n targetArray = target;\n }\n const allServersMatching = targetArray.reduce((matches, filter) => {\n const myMatches = serverMethodMap.filter((serverMethodPair) => {\n return this.instanceMatch(filter, serverMethodPair.server.instance);\n });\n return matches.concat(myMatches);\n }, []);\n return allServersMatching;\n }\n return [];\n }\n instanceMatch(instanceFilter, instanceDefinition) {\n return this.containsProps(instanceFilter, instanceDefinition);\n }\n methodMatch(methodFilter, methodDefinition) {\n return this.containsProps(methodFilter, methodDefinition);\n }\n containsProps(filter, repoMethod) {\n const filterProps = Object.keys(filter)\n .filter((prop) => {\n return filter[prop] !== undefined\n && filter[prop] !== null\n && typeof filter[prop] !== \"function\"\n && prop !== \"object_types\"\n && prop !== \"display_name\"\n && prop !== \"id\"\n && prop !== \"gatewayId\"\n && prop !== \"identifier\"\n && prop[0] !== \"_\";\n });\n return filterProps.every((prop) => {\n let isMatch;\n const filterValue = filter[prop];\n const repoMethodValue = repoMethod[prop];\n switch (prop) {\n case \"objectTypes\":\n isMatch = (filterValue || []).every((filterValueEl) => {\n return (repoMethodValue || []).includes(filterValueEl);\n });\n break;\n case \"flags\":\n isMatch = isSubset(repoMethodValue || {}, filterValue || {});\n break;\n default:\n isMatch = String(filterValue).toLowerCase() === String(repoMethodValue).toLowerCase();\n }\n return isMatch;\n });\n }\n getMethods(methodFilter) {\n if (methodFilter === undefined) {\n return this.repo.getMethods();\n }\n const methods = this.repo.getMethods().filter((method) => {\n return this.methodMatch(methodFilter, method);\n });\n return methods;\n }\n getMethodsForInstance(instanceFilter) {\n const allServers = this.repo.getServers();\n const matchingServers = allServers.filter((server) => {\n return this.instanceMatch(instanceFilter, server.instance);\n });\n if (matchingServers.length === 0) {\n return [];\n }\n let resultMethodsObject = {};\n if (matchingServers.length === 1) {\n resultMethodsObject = matchingServers[0].methods;\n }\n else {\n matchingServers.forEach((server) => {\n Object.keys(server.methods).forEach((methodKey) => {\n const method = server.methods[methodKey];\n resultMethodsObject[method.identifier] = method;\n });\n });\n }\n return Object.keys(resultMethodsObject)\n .map((key) => {\n return resultMethodsObject[key];\n });\n }\n getServers(methodFilter) {\n const servers = this.repo.getServers();\n if (methodFilter === undefined) {\n return servers.map((server) => {\n return { server, methods: [] };\n });\n }\n return servers.reduce((prev, current) => {\n const methodsForServer = Object.values(current.methods);\n const matchingMethods = methodsForServer.filter((method) => {\n return this.methodMatch(methodFilter, method);\n });\n if (matchingMethods.length > 0) {\n prev.push({ server: current, methods: matchingMethods });\n }\n return prev;\n }, []);\n }\n getServerMethodsByFilterAndTarget(methodFilter, target) {\n const serversMethodMap = this.getServers(methodFilter);\n return this.filterByTarget(target, serversMethodMap);\n }\n}\n\nclass ServerSubscription {\n protocol;\n repoMethod;\n subscription;\n constructor(protocol, repoMethod, subscription) {\n this.protocol = protocol;\n this.repoMethod = repoMethod;\n this.subscription = subscription;\n }\n get stream() {\n if (!this.repoMethod.stream) {\n throw new Error(\"no stream\");\n }\n return this.repoMethod.stream;\n }\n get arguments() { return this.subscription.arguments || {}; }\n get branchKey() { return this.subscription.branchKey; }\n get instance() {\n if (!this.subscription.instance) {\n throw new Error(\"no instance\");\n }\n return this.subscription.instance;\n }\n close() {\n this.protocol.server.closeSingleSubscription(this.repoMethod, this.subscription);\n }\n push(data) {\n this.protocol.server.pushDataToSingle(this.repoMethod, this.subscription, data);\n }\n}\n\nclass Request {\n protocol;\n repoMethod;\n requestContext;\n arguments;\n instance;\n constructor(protocol, repoMethod, requestContext) {\n this.protocol = protocol;\n this.repoMethod = repoMethod;\n this.requestContext = requestContext;\n this.arguments = requestContext.arguments;\n this.instance = requestContext.instance;\n }\n accept() {\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, \"\");\n }\n acceptOnBranch(branch) {\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, branch);\n }\n reject(reason) {\n this.protocol.server.rejectRequest(this.requestContext, this.repoMethod, reason);\n }\n}\n\nlet ServerStreaming$1 = class ServerStreaming {\n protocol;\n server;\n constructor(protocol, server) {\n this.protocol = protocol;\n this.server = server;\n protocol.server.onSubRequest((rc, rm) => this.handleSubRequest(rc, rm));\n protocol.server.onSubAdded((sub, rm) => this.handleSubAdded(sub, rm));\n protocol.server.onSubRemoved((sub, rm) => this.handleSubRemoved(sub, rm));\n }\n handleSubRequest(requestContext, repoMethod) {\n if (!(repoMethod &&\n repoMethod.streamCallbacks &&\n typeof repoMethod.streamCallbacks.subscriptionRequestHandler === \"function\")) {\n return;\n }\n const request = new Request(this.protocol, repoMethod, requestContext);\n repoMethod.streamCallbacks.subscriptionRequestHandler(request);\n }\n handleSubAdded(subscription, repoMethod) {\n if (!(repoMethod &&\n repoMethod.streamCallbacks &&\n typeof repoMethod.streamCallbacks.subscriptionAddedHandler === \"function\")) {\n return;\n }\n const sub = new ServerSubscription(this.protocol, repoMethod, subscription);\n repoMethod.streamCallbacks.subscriptionAddedHandler(sub);\n }\n handleSubRemoved(subscription, repoMethod) {\n if (!(repoMethod &&\n repoMethod.streamCallbacks &&\n typeof repoMethod.streamCallbacks.subscriptionRemovedHandler === \"function\")) {\n return;\n }\n const sub = new ServerSubscription(this.protocol, repoMethod, subscription);\n repoMethod.streamCallbacks.subscriptionRemovedHandler(sub);\n }\n};\n\nclass ServerBranch {\n key;\n protocol;\n repoMethod;\n constructor(key, protocol, repoMethod) {\n this.key = key;\n this.protocol = protocol;\n this.repoMethod = repoMethod;\n }\n subscriptions() {\n const subList = this.protocol.server.getSubscriptionList(this.repoMethod, this.key);\n return subList.map((sub) => {\n return new ServerSubscription(this.protocol, this.repoMethod, sub);\n });\n }\n close() {\n this.protocol.server.closeAllSubscriptions(this.repoMethod, this.key);\n }\n push(data) {\n this.protocol.server.pushData(this.repoMethod, data, [this.key]);\n }\n}\n\nclass ServerStream {\n _protocol;\n _repoMethod;\n _server;\n name;\n constructor(_protocol, _repoMethod, _server) {\n this._protocol = _protocol;\n this._repoMethod = _repoMethod;\n this._server = _server;\n this.name = this._repoMethod.definition.name;\n }\n branches(key) {\n const bList = this._protocol.server.getBranchList(this._repoMethod);\n if (key) {\n if (bList.indexOf(key) > -1) {\n return new ServerBranch(key, this._protocol, this._repoMethod);\n }\n return undefined;\n }\n else {\n return bList.map((branchKey) => {\n return new ServerBranch(branchKey, this._protocol, this._repoMethod);\n });\n }\n }\n branch(key) {\n return this.branches(key);\n }\n subscriptions() {\n const subList = this._protocol.server.getSubscriptionList(this._repoMethod);\n return subList.map((sub) => {\n return new ServerSubscription(this._protocol, this._repoMethod, sub);\n });\n }\n get definition() {\n const def2 = this._repoMethod.definition;\n return {\n accepts: def2.accepts,\n description: def2.description,\n displayName: def2.displayName,\n name: def2.name,\n objectTypes: def2.objectTypes,\n returns: def2.returns,\n supportsStreaming: def2.supportsStreaming,\n flags: def2.flags?.metadata,\n };\n }\n close() {\n this._protocol.server.closeAllSubscriptions(this._repoMethod);\n this._server.unregister(this._repoMethod.definition, true);\n }\n push(data, branches) {\n if (typeof branches !== \"string\" && !Array.isArray(branches) && branches !== undefined) {\n throw new Error(\"invalid branches should be string or string array\");\n }\n if (typeof data !== \"object\") {\n throw new Error(\"Invalid arguments. Data must be an object.\");\n }\n this._protocol.server.pushData(this._repoMethod, data, branches);\n }\n updateRepoMethod(repoMethod) {\n this._repoMethod = repoMethod;\n }\n}\n\nclass Server {\n protocol;\n serverRepository;\n streaming;\n invocations = 0;\n currentlyUnregistering = {};\n constructor(protocol, serverRepository) {\n this.protocol = protocol;\n this.serverRepository = serverRepository;\n this.streaming = new ServerStreaming$1(protocol, this);\n this.protocol.server.onInvoked(this.onMethodInvoked.bind(this));\n }\n createStream(streamDef, callbacks, successCallback, errorCallback, existingStream) {\n const promise = new Promise((resolve, reject) => {\n if (!streamDef) {\n reject(\"The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream.\");\n return;\n }\n let streamMethodDefinition;\n if (typeof streamDef === \"string\") {\n streamMethodDefinition = { name: \"\" + streamDef };\n }\n else {\n streamMethodDefinition = { ...streamDef };\n }\n if (!streamMethodDefinition.name) {\n return reject(`The “name” property is required for the “streamDefinition” object and must be unique. Stream definition: ${JSON.stringify(streamMethodDefinition)}`);\n }\n const nameAlreadyExists = this.serverRepository.getList()\n .some((serverMethod) => serverMethod.definition.name === streamMethodDefinition.name);\n if (nameAlreadyExists) {\n return reject(`A stream with the name \"${streamMethodDefinition.name}\" already exists! Please, provide a unique name for the stream.`);\n }\n streamMethodDefinition.supportsStreaming = true;\n if (!callbacks) {\n callbacks = {};\n }\n if (typeof callbacks.subscriptionRequestHandler !== \"function\") {\n callbacks.subscriptionRequestHandler = (request) => {\n request.accept();\n };\n }\n const repoMethod = this.serverRepository.add({\n definition: streamMethodDefinition,\n streamCallbacks: callbacks,\n protocolState: {},\n });\n this.protocol.server.createStream(repoMethod)\n .then(() => {\n let streamUserObject;\n if (existingStream) {\n streamUserObject = existingStream;\n existingStream.updateRepoMethod(repoMethod);\n }\n else {\n streamUserObject = new ServerStream(this.protocol, repoMethod, this);\n }\n repoMethod.stream = streamUserObject;\n resolve(streamUserObject);\n })\n .catch((err) => {\n if (repoMethod.repoId) {\n this.serverRepository.remove(repoMethod.repoId);\n }\n reject(err);\n });\n });\n return promisify(promise, successCallback, errorCallback);\n }\n register(methodDefinition, callback) {\n if (!methodDefinition) {\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\n }\n if (typeof callback !== \"function\") {\n return Promise.reject(`The second parameter must be a callback function. Method: ${typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name}`);\n }\n const wrappedCallbackFunction = async (context, resultCallback) => {\n try {\n const result = callback(context.args, context.instance);\n if (result && typeof result.then === \"function\") {\n const resultValue = await result;\n resultCallback(undefined, resultValue);\n }\n else {\n resultCallback(undefined, result);\n }\n }\n catch (e) {\n resultCallback(e ?? \"\", e ?? \"\");\n }\n };\n wrappedCallbackFunction.userCallback = callback;\n return this.registerCore(methodDefinition, wrappedCallbackFunction);\n }\n registerAsync(methodDefinition, callback) {\n if (!methodDefinition) {\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\n }\n if (typeof callback !== \"function\") {\n return Promise.reject(`The second parameter must be a callback function. Method: ${typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name}`);\n }\n const wrappedCallback = async (context, resultCallback) => {\n try {\n let resultCalled = false;\n const success = (result) => {\n if (!resultCalled) {\n resultCallback(undefined, result);\n }\n resultCalled = true;\n };\n const error = (e) => {\n if (!resultCalled) {\n if (!e) {\n e = \"\";\n }\n resultCallback(e, e);\n }\n resultCalled = true;\n };\n const methodResult = callback(context.args, context.instance, success, error);\n if (methodResult && typeof methodResult.then === \"function\") {\n methodResult\n .then(success)\n .catch(error);\n }\n }\n catch (e) {\n resultCallback(e, undefined);\n }\n };\n wrappedCallback.userCallbackAsync = callback;\n return this.registerCore(methodDefinition, wrappedCallback);\n }\n async unregister(methodFilter, forStream = false) {\n if (methodFilter === undefined) {\n return Promise.reject(\"Please, provide either a unique string for a name or an object containing a “name” property.\");\n }\n if (typeof methodFilter === \"function\") {\n await this.unregisterWithPredicate(methodFilter, forStream);\n return;\n }\n let methodDefinition;\n if (typeof methodFilter === \"string\") {\n methodDefinition = { name: methodFilter };\n }\n else {\n methodDefinition = methodFilter;\n }\n if (methodDefinition.name === undefined) {\n return Promise.reject(\"Method name is required. Cannot find a method if the method name is undefined!\");\n }\n const methodToBeRemoved = this.serverRepository.getList().find((serverMethod) => {\n return serverMethod.definition.name === methodDefinition.name\n && (serverMethod.definition.supportsStreaming || false) === forStream;\n });\n if (!methodToBeRemoved) {\n return Promise.reject(`Method with a name \"${methodDefinition.name}\" does not exist or is not registered by your application!`);\n }\n await this.removeMethodsOrStreams([methodToBeRemoved]);\n }\n async unregisterWithPredicate(filterPredicate, forStream) {\n const methodsOrStreamsToRemove = this.serverRepository.getList()\n .filter((sm) => filterPredicate(sm.definition))\n .filter((serverMethod) => (serverMethod.definition.supportsStreaming || false) === forStream);\n if (!methodsOrStreamsToRemove || methodsOrStreamsToRemove.length === 0) {\n return Promise.reject(`Could not find a ${forStream ? \"stream\" : \"method\"} matching the specified condition!`);\n }\n await this.removeMethodsOrStreams(methodsOrStreamsToRemove);\n }\n removeMethodsOrStreams(methodsToRemove) {\n const methodUnregPromises = [];\n methodsToRemove.forEach((method) => {\n const promise = this.protocol.server.unregister(method)\n .then(() => {\n if (method.repoId) {\n this.serverRepository.remove(method.repoId);\n }\n });\n methodUnregPromises.push(promise);\n this.addAsCurrentlyUnregistering(method.definition.name, promise);\n });\n return Promise.all(methodUnregPromises);\n }\n async addAsCurrentlyUnregistering(methodName, promise) {\n const timeout = new Promise((resolve) => setTimeout(resolve, 5000));\n this.currentlyUnregistering[methodName] = Promise.race([promise, timeout]).then(() => {\n delete this.currentlyUnregistering[methodName];\n });\n }\n async registerCore(method, theFunction) {\n let methodDefinition;\n if (typeof method === \"string\") {\n methodDefinition = { name: \"\" + method };\n }\n else {\n methodDefinition = { ...method };\n }\n if (!methodDefinition.name) {\n return Promise.reject(`Please, provide a (unique) string value for the “name” property in the “methodDefinition” object: ${JSON.stringify(method)}`);\n }\n const unregisterInProgress = this.currentlyUnregistering[methodDefinition.name];\n if (typeof unregisterInProgress !== \"undefined\") {\n await unregisterInProgress;\n }\n const nameAlreadyExists = this.serverRepository.getList()\n .some((serverMethod) => serverMethod.definition.name === methodDefinition.name);\n if (nameAlreadyExists) {\n return Promise.reject(`A method with the name \"${methodDefinition.name}\" already exists! Please, provide a unique name for the method.`);\n }\n if (methodDefinition.supportsStreaming) {\n return Promise.reject(`When you create methods with “glue.interop.register()” or “glue.interop.registerAsync()” the property “supportsStreaming” cannot be “true”. If you want “${methodDefinition.name}” to be a stream, please use the “glue.interop.createStream()” method.`);\n }\n const repoMethod = this.serverRepository.add({\n definition: methodDefinition,\n theFunction,\n protocolState: {},\n });\n return this.protocol.server.register(repoMethod)\n .catch((err) => {\n if (repoMethod?.repoId) {\n this.serverRepository.remove(repoMethod.repoId);\n }\n throw err;\n });\n }\n onMethodInvoked(methodToExecute, invocationId, invocationArgs) {\n if (!methodToExecute || !methodToExecute.theFunction) {\n return;\n }\n methodToExecute.theFunction(invocationArgs, (err, result) => {\n if (err !== undefined && err !== null) {\n if (err.message && typeof err.message === \"string\") {\n err = err.message;\n }\n else if (typeof err !== \"string\") {\n try {\n err = JSON.stringify(err);\n }\n catch (unStrException) {\n err = `un-stringifyable error in onMethodInvoked! Top level prop names: ${Object.keys(err)}`;\n }\n }\n }\n if (!result) {\n result = {};\n }\n else if (typeof result !== \"object\" || Array.isArray(result)) {\n result = { _value: result };\n }\n this.protocol.server.methodInvocationResult(methodToExecute, invocationId, err, result);\n });\n }\n}\n\nclass InstanceWrapper {\n wrapped = {};\n constructor(API, instance, connection) {\n this.wrapped.getMethods = function () {\n return API.methodsForInstance(this);\n };\n this.wrapped.getStreams = function () {\n return API.methodsForInstance(this).filter((m) => m.supportsStreaming);\n };\n if (instance) {\n this.refreshWrappedObject(instance);\n }\n if (connection) {\n connection.loggedIn(() => {\n this.refresh(connection);\n });\n this.refresh(connection);\n }\n }\n unwrap() {\n return this.wrapped;\n }\n refresh(connection) {\n if (!connection) {\n return;\n }\n const resolvedIdentity = connection?.resolvedIdentity;\n const instance = Object.assign({}, resolvedIdentity ?? {}, { peerId: connection?.peerId });\n this.refreshWrappedObject(instance);\n }\n refreshWrappedObject(resolvedIdentity) {\n Object.keys(resolvedIdentity).forEach((key) => {\n this.wrapped[key] = resolvedIdentity[key];\n });\n this.wrapped.user = resolvedIdentity.user;\n this.wrapped.instance = resolvedIdentity.instance;\n this.wrapped.application = resolvedIdentity.application ?? nanoid(10);\n this.wrapped.applicationName = resolvedIdentity.applicationName;\n this.wrapped.pid = resolvedIdentity.pid ?? resolvedIdentity.process ?? Math.floor(Math.random() * 10000000000);\n this.wrapped.machine = resolvedIdentity.machine;\n this.wrapped.environment = resolvedIdentity.environment;\n this.wrapped.region = resolvedIdentity.region;\n this.wrapped.windowId = resolvedIdentity.windowId;\n this.wrapped.isLocal = resolvedIdentity.isLocal ?? true;\n this.wrapped.api = resolvedIdentity.api;\n this.wrapped.service = resolvedIdentity.service;\n this.wrapped.peerId = resolvedIdentity.peerId;\n }\n}\n\nconst hideMethodSystemFlags = (method) => {\n return {\n ...method,\n flags: method.flags.metadata || {}\n };\n};\nclass ClientRepository {\n logger;\n API;\n servers = {};\n myServer;\n methodsCount = {};\n callbacks = CallbackRegistryFactory();\n constructor(logger, API) {\n this.logger = logger;\n this.API = API;\n const peerId = this.API.instance.peerId;\n this.myServer = {\n id: peerId,\n methods: {},\n instance: this.API.instance,\n wrapper: this.API.unwrappedInstance,\n };\n this.servers[peerId] = this.myServer;\n }\n addServer(info, serverId) {\n this.logger.debug(`adding server ${serverId}`);\n const current = this.servers[serverId];\n if (current) {\n return current.id;\n }\n const wrapper = new InstanceWrapper(this.API, info);\n const serverEntry = {\n id: serverId,\n methods: {},\n instance: wrapper.unwrap(),\n wrapper,\n };\n this.servers[serverId] = serverEntry;\n this.callbacks.execute(\"onServerAdded\", serverEntry.instance);\n return serverId;\n }\n removeServerById(id, reason) {\n const server = this.servers[id];\n if (!server) {\n this.logger.warn(`not aware of server ${id}, my state ${JSON.stringify(Object.keys(this.servers))}`);\n return;\n }\n else {\n this.logger.debug(`removing server ${id}`);\n }\n Object.keys(server.methods).forEach((methodId) => {\n this.removeServerMethod(id, methodId);\n });\n delete this.servers[id];\n this.callbacks.execute(\"onServerRemoved\", server.instance, reason);\n }\n addServerMethod(serverId, method) {\n const server = this.servers[serverId];\n if (!server) {\n throw new Error(\"server does not exists\");\n }\n if (server.methods[method.id]) {\n return;\n }\n const identifier = this.createMethodIdentifier(method);\n const that = this;\n const methodDefinition = {\n identifier,\n gatewayId: method.id,\n name: method.name,\n displayName: method.display_name,\n description: method.description,\n version: method.version,\n objectTypes: method.object_types || [],\n accepts: method.input_signature,\n returns: method.result_signature,\n supportsStreaming: typeof method.flags !== \"undefined\" ? method.flags.streaming : false,\n flags: method.flags ?? {},\n getServers: () => {\n return that.getServersByMethod(identifier);\n }\n };\n methodDefinition.object_types = methodDefinition.objectTypes;\n methodDefinition.display_name = methodDefinition.displayName;\n methodDefinition.version = methodDefinition.version;\n server.methods[method.id] = methodDefinition;\n const clientMethodDefinition = hideMethodSystemFlags(methodDefinition);\n if (!this.methodsCount[identifier]) {\n this.methodsCount[identifier] = 0;\n this.callbacks.execute(\"onMethodAdded\", clientMethodDefinition);\n }\n this.methodsCount[identifier] = this.methodsCount[identifier] + 1;\n this.callbacks.execute(\"onServerMethodAdded\", server.instance, clientMethodDefinition);\n return methodDefinition;\n }\n removeServerMethod(serverId, methodId) {\n const server = this.servers[serverId];\n if (!server) {\n throw new Error(\"server does not exists\");\n }\n const method = server.methods[methodId];\n delete server.methods[methodId];\n const clientMethodDefinition = hideMethodSystemFlags(method);\n this.methodsCount[method.identifier] = this.methodsCount[method.identifier] - 1;\n if (this.methodsCount[method.identifier] === 0) {\n this.callbacks.execute(\"onMethodRemoved\", clientMethodDefinition);\n }\n this.callbacks.execute(\"onServerMethodRemoved\", server.instance, clientMethodDefinition);\n }\n getMethods() {\n return this.extractMethodsFromServers(Object.values(this.servers)).map(hideMethodSystemFlags);\n }\n getServers() {\n return Object.values(this.servers).map(this.hideServerMethodSystemFlags);\n }\n onServerAdded(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onServerAdded\", callback);\n const serversWithMethodsToReplay = this.getServers().map((s) => s.instance);\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, serversWithMethodsToReplay, callback);\n }\n onMethodAdded(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onMethodAdded\", callback);\n const methodsToReplay = this.getMethods();\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, methodsToReplay, callback);\n }\n onServerMethodAdded(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onServerMethodAdded\", callback);\n let unsubCalled = false;\n const servers = this.getServers();\n setTimeout(() => {\n servers.forEach((server) => {\n const methods = server.methods;\n Object.keys(methods).forEach((methodId) => {\n if (!unsubCalled) {\n callback(server.instance, methods[methodId]);\n }\n });\n });\n }, 0);\n return () => {\n unsubCalled = true;\n unsubscribeFunc();\n };\n }\n onMethodRemoved(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onMethodRemoved\", callback);\n return unsubscribeFunc;\n }\n onServerRemoved(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onServerRemoved\", callback);\n return unsubscribeFunc;\n }\n onServerMethodRemoved(callback) {\n const unsubscribeFunc = this.callbacks.add(\"onServerMethodRemoved\", callback);\n return unsubscribeFunc;\n }\n getServerById(id) {\n return this.hideServerMethodSystemFlags(this.servers[id]);\n }\n reset() {\n Object.keys(this.servers).forEach((key) => {\n this.removeServerById(key, \"reset\");\n });\n this.servers = {\n [this.myServer.id]: this.myServer\n };\n this.methodsCount = {};\n }\n createMethodIdentifier(methodInfo) {\n const accepts = methodInfo.input_signature ?? \"\";\n const returns = methodInfo.result_signature ?? \"\";\n return (methodInfo.name + accepts + returns).toLowerCase();\n }\n getServersByMethod(identifier) {\n const allServers = [];\n Object.values(this.servers).forEach((server) => {\n Object.values(server.methods).forEach((method) => {\n if (method.identifier === identifier) {\n allServers.push(server.instance);\n }\n });\n });\n return allServers;\n }\n returnUnsubWithDelayedReplay(unsubscribeFunc, collectionToReplay, callback) {\n let unsubCalled = false;\n setTimeout(() => {\n collectionToReplay.forEach((item) => {\n if (!unsubCalled) {\n callback(item);\n }\n });\n }, 0);\n return () => {\n unsubCalled = true;\n unsubscribeFunc();\n };\n }\n hideServerMethodSystemFlags(server) {\n const clientMethods = {};\n Object.entries(server.methods).forEach(([name, method]) => {\n clientMethods[name] = hideMethodSystemFlags(method);\n });\n return {\n ...server,\n methods: clientMethods\n };\n }\n extractMethodsFromServers(servers) {\n const methods = Object.values(servers).reduce((clientMethods, server) => {\n return [...clientMethods, ...Object.values(server.methods)];\n }, []);\n return methods;\n }\n}\n\nclass ServerRepository {\n nextId = 0;\n methods = [];\n add(method) {\n method.repoId = String(this.nextId);\n this.nextId += 1;\n this.methods.push(method);\n return method;\n }\n remove(repoId) {\n if (typeof repoId !== \"string\") {\n return new TypeError(\"Expecting a string\");\n }\n this.methods = this.methods.filter((m) => {\n return m.repoId !== repoId;\n });\n }\n getById(id) {\n if (typeof id !== \"string\") {\n return undefined;\n }\n return this.methods.find((m) => {\n return m.repoId === id;\n });\n }\n getList() {\n return this.methods.map((m) => m);\n }\n length() {\n return this.methods.length;\n }\n reset() {\n this.methods = [];\n }\n}\n\nconst SUBSCRIPTION_REQUEST = \"onSubscriptionRequest\";\nconst SUBSCRIPTION_ADDED = \"onSubscriptionAdded\";\nconst SUBSCRIPTION_REMOVED = \"onSubscriptionRemoved\";\nclass ServerStreaming {\n session;\n repository;\n serverRepository;\n ERR_URI_SUBSCRIPTION_FAILED = \"com.tick42.agm.errors.subscription.failure\";\n callbacks = CallbackRegistryFactory();\n nextStreamId = 0;\n constructor(session, repository, serverRepository) {\n this.session = session;\n this.repository = repository;\n this.serverRepository = serverRepository;\n session.on(\"add-interest\", (msg) => {\n this.handleAddInterest(msg);\n });\n session.on(\"remove-interest\", (msg) => {\n this.handleRemoveInterest(msg);\n });\n }\n acceptRequestOnBranch(requestContext, streamingMethod, branch) {\n if (typeof branch !== \"string\") {\n branch = \"\";\n }\n if (typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\n throw new TypeError(\"The streaming method is missing its subscriptions.\");\n }\n if (!Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\n throw new TypeError(\"The streaming method is missing its branches.\");\n }\n const streamId = this.getStreamId(streamingMethod, branch);\n const key = requestContext.msg.subscription_id;\n const subscription = {\n id: key,\n arguments: requestContext.arguments,\n instance: requestContext.instance,\n branchKey: branch,\n streamId,\n subscribeMsg: requestContext.msg,\n };\n streamingMethod.protocolState.subscriptionsMap[key] = subscription;\n this.session.sendFireAndForget({\n type: \"accepted\",\n subscription_id: key,\n stream_id: streamId,\n });\n this.callbacks.execute(SUBSCRIPTION_ADDED, subscription, streamingMethod);\n }\n rejectRequest(requestContext, streamingMethod, reason) {\n if (typeof reason !== \"string\") {\n reason = \"\";\n }\n this.sendSubscriptionFailed(\"Subscription rejected by user. \" + reason, requestContext.msg.subscription_id);\n }\n pushData(streamingMethod, data, branches) {\n if (typeof streamingMethod !== \"object\" || !Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\n return;\n }\n if (typeof data !== \"object\") {\n throw new Error(\"Invalid arguments. Data must be an object.\");\n }\n if (typeof branches === \"string\") {\n branches = [branches];\n }\n else if (!Array.isArray(branches) || branches.length <= 0) {\n branches = [];\n }\n const streamIdList = streamingMethod.protocolState.branchKeyToStreamIdMap\n .filter((br) => {\n if (!branches || branches.length === 0) {\n return true;\n }\n return branches.indexOf(br.key) >= 0;\n }).map((br) => {\n return br.streamId;\n });\n streamIdList.forEach((streamId) => {\n const publishMessage = {\n type: \"publish\",\n stream_id: streamId,\n data,\n };\n this.session.sendFireAndForget(publishMessage);\n });\n }\n pushDataToSingle(method, subscription, data) {\n if (typeof data !== \"object\") {\n throw new Error(\"Invalid arguments. Data must be an object.\");\n }\n const postMessage = {\n type: \"post\",\n subscription_id: subscription.id,\n data,\n };\n this.session.sendFireAndForget(postMessage);\n }\n closeSingleSubscription(streamingMethod, subscription) {\n if (streamingMethod.protocolState.subscriptionsMap) {\n delete streamingMethod.protocolState.subscriptionsMap[subscription.id];\n }\n const dropSubscriptionMessage = {\n type: \"drop-subscription\",\n subscription_id: subscription.id,\n reason: \"Server dropping a single subscription\",\n };\n this.session.sendFireAndForget(dropSubscriptionMessage);\n subscription.instance;\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\n }\n closeMultipleSubscriptions(streamingMethod, branchKey) {\n if (typeof streamingMethod !== \"object\" || typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\n return;\n }\n if (!streamingMethod.protocolState.subscriptionsMap) {\n return;\n }\n const subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\n let subscriptionsToClose = Object.keys(subscriptionsMap)\n .map((key) => {\n return subscriptionsMap[key];\n });\n if (typeof branchKey === \"string\") {\n subscriptionsToClose = subscriptionsToClose.filter((sub) => {\n return sub.branchKey === branchKey;\n });\n }\n subscriptionsToClose.forEach((subscription) => {\n delete subscriptionsMap[subscription.id];\n const drop = {\n type: \"drop-subscription\",\n subscription_id: subscription.id,\n reason: \"Server dropping all subscriptions on stream_id: \" + subscription.streamId,\n };\n this.session.sendFireAndForget(drop);\n });\n }\n getSubscriptionList(streamingMethod, branchKey) {\n if (typeof streamingMethod !== \"object\") {\n return [];\n }\n let subscriptions = [];\n if (!streamingMethod.protocolState.subscriptionsMap) {\n return [];\n }\n const subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\n const allSubscriptions = Object.keys(subscriptionsMap)\n .map((key) => {\n return subscriptionsMap[key];\n });\n if (typeof branchKey !== \"string\") {\n subscriptions = allSubscriptions;\n }\n else {\n subscriptions = allSubscriptions.filter((sub) => {\n return sub.branchKey === branchKey;\n });\n }\n return subscriptions;\n }\n getBranchList(streamingMethod) {\n if (typeof streamingMethod !== \"object\") {\n return [];\n }\n if (!streamingMethod.protocolState.subscriptionsMap) {\n return [];\n }\n const subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\n const allSubscriptions = Object.keys(subscriptionsMap)\n .map((key) => {\n return subscriptionsMap[key];\n });\n const result = [];\n allSubscriptions.forEach((sub) => {\n let branch = \"\";\n if (typeof sub === \"object\" && typeof sub.branchKey === \"string\") {\n branch = sub.branchKey;\n }\n if (result.indexOf(branch) === -1) {\n result.push(branch);\n }\n });\n return result;\n }\n onSubAdded(callback) {\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_ADDED, callback);\n }\n onSubRequest(callback) {\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REQUEST, callback);\n }\n onSubRemoved(callback) {\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REMOVED, callback);\n }\n handleRemoveInterest(msg) {\n const streamingMethod = this.serverRepository.getById(msg.method_id);\n if (typeof msg.subscription_id !== \"string\" ||\n typeof streamingMethod !== \"object\") {\n return;\n }\n if (!streamingMethod.protocolState.subscriptionsMap) {\n return;\n }\n if (typeof streamingMethod.protocolState.subscriptionsMap[msg.subscription_id] !== \"object\") {\n return;\n }\n const subscription = streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\n delete streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\n }\n onSubscriptionLifetimeEvent(eventName, handlerFunc) {\n this.callbacks.add(eventName, handlerFunc);\n }\n getNextStreamId() {\n return this.nextStreamId++ + \"\";\n }\n handleAddInterest(msg) {\n const caller = this.repository.getServerById(msg.caller_id);\n const instance = caller.instance;\n const requestContext = {\n msg,\n arguments: msg.arguments_kv || {},\n instance,\n };\n const streamingMethod = this.serverRepository.getById(msg.method_id);\n if (streamingMethod === undefined) {\n const errorMsg = \"No method with id \" + msg.method_id + \" on this server.\";\n this.sendSubscriptionFailed(errorMsg, msg.subscription_id);\n return;\n }\n if (streamingMethod.protocolState.subscriptionsMap &&\n streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]) {\n this.sendSubscriptionFailed(\"A subscription with id \" + msg.subscription_id + \" already exists.\", msg.subscription_id);\n return;\n }\n this.callbacks.execute(SUBSCRIPTION_REQUEST, requestContext, streamingMethod);\n }\n sendSubscriptionFailed(reason, subscriptionId) {\n const errorMessage = {\n type: \"error\",\n reason_uri: this.ERR_URI_SUBSCRIPTION_FAILED,\n reason,\n request_id: subscriptionId,\n };\n this.session.sendFireAndForget(errorMessage);\n }\n getStreamId(streamingMethod, branchKey) {\n if (typeof branchKey !== \"string\") {\n branchKey = \"\";\n }\n if (!streamingMethod.protocolState.branchKeyToStreamIdMap) {\n throw new Error(`streaming ${streamingMethod.definition.name} method without protocol state`);\n }\n const needleBranch = streamingMethod.protocolState.branchKeyToStreamIdMap.filter((branch) => {\n return branch.key === branchKey;\n })[0];\n let streamId = (needleBranch ? needleBranch.streamId : undefined);\n if (typeof streamId !== \"string\" || streamId === \"\") {\n streamId = this.getNextStreamId();\n streamingMethod.protocolState.branchKeyToStreamIdMap.push({ key: branchKey, streamId });\n }\n return streamId;\n }\n}\n\nclass ServerProtocol {\n session;\n clientRepository;\n serverRepository;\n logger;\n callbacks = CallbackRegistryFactory();\n streaming;\n constructor(session, clientRepository, serverRepository, logger) {\n this.session = session;\n this.clientRepository = clientRepository;\n this.serverRepository = serverRepository;\n this.logger = logger;\n this.streaming = new ServerStreaming(session, clientRepository, serverRepository);\n this.session.on(\"invoke\", (msg) => this.handleInvokeMessage(msg));\n }\n createStream(repoMethod) {\n repoMethod.protocolState.subscriptionsMap = {};\n repoMethod.protocolState.branchKeyToStreamIdMap = [];\n return this.register(repoMethod, true);\n }\n register(repoMethod, isStreaming) {\n const methodDef = repoMethod.definition;\n const flags = Object.assign({}, { metadata: methodDef.flags ?? {} }, { streaming: isStreaming || false });\n const registerMsg = {\n type: \"register\",\n methods: [{\n id: repoMethod.repoId,\n name: methodDef.name,\n display_name: methodDef.displayName,\n description: methodDef.description,\n version: methodDef.version,\n flags,\n object_types: methodDef.objectTypes || methodDef.object_types,\n input_signature: methodDef.accepts,\n result_signature: methodDef.returns,\n restrictions: undefined,\n }],\n };\n return this.session.send(registerMsg, { methodId: repoMethod.repoId })\n .then(() => {\n this.logger.debug(\"registered method \" + repoMethod.definition.name + \" with id \" + repoMethod.repoId);\n })\n .catch((msg) => {\n this.logger.warn(`failed to register method ${repoMethod.definition.name} with id ${repoMethod.repoId} - ${JSON.stringify(msg)}`);\n throw msg;\n });\n }\n onInvoked(callback) {\n this.callbacks.add(\"onInvoked\", callback);\n }\n methodInvocationResult(method, invocationId, err, result) {\n let msg;\n if (err || err === \"\") {\n msg = {\n type: \"error\",\n request_id: invocationId,\n reason_uri: \"agm.errors.client_error\",\n reason: err,\n context: result,\n peer_id: undefined,\n };\n }\n else {\n msg = {\n type: \"yield\",\n invocation_id: invocationId,\n peer_id: this.session.peerId,\n result,\n request_id: undefined,\n };\n }\n this.session.sendFireAndForget(msg);\n }\n async unregister(method) {\n const msg = {\n type: \"unregister\",\n methods: [method.repoId],\n };\n await this.session.send(msg);\n }\n getBranchList(method) {\n return this.streaming.getBranchList(method);\n }\n getSubscriptionList(method, branchKey) {\n return this.streaming.getSubscriptionList(method, branchKey);\n }\n closeAllSubscriptions(method, branchKey) {\n this.streaming.closeMultipleSubscriptions(method, branchKey);\n }\n pushData(method, data, branches) {\n this.streaming.pushData(method, data, branches);\n }\n pushDataToSingle(method, subscription, data) {\n this.streaming.pushDataToSingle(method, subscription, data);\n }\n closeSingleSubscription(method, subscription) {\n this.streaming.closeSingleSubscription(method, subscription);\n }\n acceptRequestOnBranch(requestContext, method, branch) {\n this.streaming.acceptRequestOnBranch(requestContext, method, branch);\n }\n rejectRequest(requestContext, method, reason) {\n this.streaming.rejectRequest(requestContext, method, reason);\n }\n onSubRequest(callback) {\n this.streaming.onSubRequest(callback);\n }\n onSubAdded(callback) {\n this.streaming.onSubAdded(callback);\n }\n onSubRemoved(callback) {\n this.streaming.onSubRemoved(callback);\n }\n handleInvokeMessage(msg) {\n const invocationId = msg.invocation_id;\n const callerId = msg.caller_id;\n const methodId = msg.method_id;\n const args = msg.arguments_kv;\n const methodList = this.serverRepository.getList();\n const method = methodList.filter((m) => {\n return m.repoId === methodId;\n })[0];\n if (method === undefined) {\n return;\n }\n const client = this.clientRepository.getServerById(callerId).instance;\n const invocationArgs = { args, instance: client };\n this.callbacks.execute(\"onInvoked\", method, invocationId, invocationArgs);\n }\n}\n\nclass UserSubscription {\n repository;\n subscriptionData;\n get requestArguments() {\n return this.subscriptionData.params.arguments || {};\n }\n get servers() {\n return this.subscriptionData.trackedServers\n .filter((pair) => pair.subscriptionId)\n .map((pair) => this.repository.getServerById(pair.serverId).instance);\n }\n get serverInstance() {\n return this.servers[0];\n }\n get stream() {\n return this.subscriptionData.method;\n }\n constructor(repository, subscriptionData) {\n this.repository = repository;\n this.subscriptionData = subscriptionData;\n }\n onData(dataCallback) {\n if (typeof dataCallback !== \"function\") {\n throw new TypeError(\"The data callback must be a function.\");\n }\n this.subscriptionData.handlers.onData.push(dataCallback);\n if (this.subscriptionData.handlers.onData.length === 1 && this.subscriptionData.queued.data.length > 0) {\n this.subscriptionData.queued.data.forEach((dataItem) => {\n dataCallback(dataItem);\n });\n }\n }\n onClosed(closedCallback) {\n if (typeof closedCallback !== \"function\") {\n throw new TypeError(\"The callback must be a function.\");\n }\n this.subscriptionData.handlers.onClosed.push(closedCallback);\n }\n onFailed(callback) {\n }\n onConnected(callback) {\n if (typeof callback !== \"function\") {\n throw new TypeError(\"The callback must be a function.\");\n }\n this.subscriptionData.handlers.onConnected.push(callback);\n }\n close() {\n this.subscriptionData.close();\n }\n setNewSubscription(newSub) {\n this.subscriptionData = newSub;\n }\n}\n\nclass TimedCache {\n config;\n cache = [];\n timeoutIds = [];\n constructor(config) {\n this.config = config;\n }\n add(element) {\n const id = nanoid(10);\n this.cache.push({ id, element });\n const timeoutId = setTimeout(() => {\n const elementIdx = this.cache.findIndex((entry) => entry.id === id);\n if (elementIdx < 0) {\n return;\n }\n this.cache.splice(elementIdx, 1);\n }, this.config.ELEMENT_TTL_MS);\n this.timeoutIds.push(timeoutId);\n }\n flush() {\n const elements = this.cache.map((entry) => entry.element);\n this.timeoutIds.forEach((id) => clearInterval(id));\n this.cache = [];\n this.timeoutIds = [];\n return elements;\n }\n}\n\nconst STATUS_AWAITING_ACCEPT = \"awaitingAccept\";\nconst STATUS_SUBSCRIBED = \"subscribed\";\nconst ERR_MSG_SUB_FAILED = \"Subscription failed.\";\nconst ERR_MSG_SUB_REJECTED = \"Subscription rejected.\";\nconst ON_CLOSE_MSG_SERVER_INIT = \"ServerInitiated\";\nconst ON_CLOSE_MSG_CLIENT_INIT = \"ClientInitiated\";\nclass ClientStreaming {\n session;\n repository;\n logger;\n subscriptionsList = {};\n timedCache = new TimedCache({ ELEMENT_TTL_MS: 10000 });\n subscriptionIdToLocalKeyMap = {};\n nextSubLocalKey = 0;\n constructor(session, repository, logger) {\n this.session = session;\n this.repository = repository;\n this.logger = logger;\n session.on(\"subscribed\", this.handleSubscribed);\n session.on(\"event\", this.handleEventData);\n session.on(\"subscription-cancelled\", this.handleSubscriptionCancelled);\n }\n subscribe(streamingMethod, params, targetServers, success, error, existingSub) {\n if (targetServers.length === 0) {\n error({\n method: streamingMethod,\n called_with: params.arguments,\n message: ERR_MSG_SUB_FAILED + \" No available servers matched the target params.\",\n });\n return;\n }\n const subLocalKey = this.getNextSubscriptionLocalKey();\n const pendingSub = this.registerSubscription(subLocalKey, streamingMethod, params, success, error, params.methodResponseTimeout || 10000, existingSub);\n if (typeof pendingSub !== \"object\") {\n error({\n method: streamingMethod,\n called_with: params.arguments,\n message: ERR_MSG_SUB_FAILED + \" Unable to register the user callbacks.\",\n });\n return;\n }\n targetServers.forEach((target) => {\n const serverId = target.server.id;\n const method = target.methods.find((m) => m.name === streamingMethod.name);\n if (!method) {\n this.logger.error(`can not find method ${streamingMethod.name} for target ${target.server.id}`);\n return;\n }\n pendingSub.trackedServers.push({\n serverId,\n subscriptionId: undefined,\n });\n const msg = {\n type: \"subscribe\",\n server_id: serverId,\n method_id: method.gatewayId,\n arguments_kv: params.arguments,\n };\n this.session.send(msg, { serverId, subLocalKey })\n .then((m) => this.handleSubscribed(m))\n .catch((err) => this.handleErrorSubscribing(err));\n });\n }\n drainSubscriptions() {\n const existing = Object.values(this.subscriptionsList);\n this.subscriptionsList = {};\n this.subscriptionIdToLocalKeyMap = {};\n return existing;\n }\n drainSubscriptionsCache() {\n return this.timedCache.flush();\n }\n getNextSubscriptionLocalKey() {\n const current = this.nextSubLocalKey;\n this.nextSubLocalKey += 1;\n return current;\n }\n registerSubscription(subLocalKey, method, params, success, error, timeout, existingSub) {\n const subsInfo = {\n localKey: subLocalKey,\n status: STATUS_AWAITING_ACCEPT,\n method,\n params,\n success,\n error,\n trackedServers: [],\n handlers: {\n onData: existingSub?.handlers.onData || [],\n onClosed: existingSub?.handlers.onClosed || [],\n onConnected: existingSub?.handlers.onConnected || [],\n },\n queued: {\n data: [],\n closers: [],\n },\n timeoutId: undefined,\n close: () => this.closeSubscription(subLocalKey),\n subscription: existingSub?.subscription\n };\n if (!existingSub) {\n if (params.onData) {\n subsInfo.handlers.onData.push(params.onData);\n }\n if (params.onClosed) {\n subsInfo.handlers.onClosed.push(params.onClosed);\n }\n if (params.onConnected) {\n subsInfo.handlers.onConnected.push(params.onConnected);\n }\n }\n this.subscriptionsList[subLocalKey] = subsInfo;\n subsInfo.timeoutId = setTimeout(() => {\n if (this.subscriptionsList[subLocalKey] === undefined) {\n return;\n }\n const pendingSub = this.subscriptionsList[subLocalKey];\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\n error({\n method,\n called_with: params.arguments,\n message: ERR_MSG_SUB_FAILED + \" Subscription attempt timed out after \" + timeout + \" ms.\",\n });\n delete this.subscriptionsList[subLocalKey];\n }\n else if (pendingSub.status === STATUS_SUBSCRIBED && pendingSub.trackedServers.length > 0) {\n pendingSub.trackedServers = pendingSub.trackedServers.filter((server) => {\n return (typeof server.subscriptionId !== \"undefined\");\n });\n delete pendingSub.timeoutId;\n if (pendingSub.trackedServers.length <= 0) {\n this.callOnClosedHandlers(pendingSub);\n delete this.subscriptionsList[subLocalKey];\n }\n }\n }, timeout);\n return subsInfo;\n }\n handleErrorSubscribing = (errorResponse) => {\n const tag = errorResponse._tag;\n const subLocalKey = tag.subLocalKey;\n const pendingSub = this.subscriptionsList[subLocalKey];\n if (typeof pendingSub !== \"object\") {\n return;\n }\n pendingSub.trackedServers = pendingSub.trackedServers.filter((server) => {\n return server.serverId !== tag.serverId;\n });\n if (pendingSub.trackedServers.length <= 0) {\n clearTimeout(pendingSub.timeoutId);\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\n const reason = (typeof errorResponse.reason === \"string\" && errorResponse.reason !== \"\") ?\n ' Publisher said \"' + errorResponse.reason + '\".' :\n \" No reason given.\";\n const callArgs = typeof pendingSub.params.arguments === \"object\" ?\n JSON.stringify(pendingSub.params.arguments) :\n \"{}\";\n pendingSub.error({\n message: ERR_MSG_SUB_REJECTED + reason + \" Called with:\" + callArgs,\n called_with: pendingSub.params.arguments,\n method: pendingSub.method,\n });\n }\n else if (pendingSub.status === STATUS_SUBSCRIBED) {\n this.callOnClosedHandlers(pendingSub);\n }\n delete this.subscriptionsList[subLocalKey];\n }\n };\n handleSubscribed = (msg) => {\n const subLocalKey = msg._tag.subLocalKey;\n const pendingSub = this.subscriptionsList[subLocalKey];\n if (typeof pendingSub !== \"object\") {\n return;\n }\n const serverId = msg._tag.serverId;\n const acceptingServer = pendingSub.trackedServers\n .filter((server) => {\n return server.serverId === serverId;\n })[0];\n if (typeof acceptingServer !== \"object\") {\n return;\n }\n acceptingServer.subscriptionId = msg.subscription_id;\n this.subscriptionIdToLocalKeyMap[msg.subscription_id] = subLocalKey;\n const isFirstResponse = (pendingSub.status === STATUS_AWAITING_ACCEPT);\n pendingSub.status = STATUS_SUBSCRIBED;\n if (isFirstResponse) {\n let reconnect = false;\n let sub = pendingSub.subscription;\n if (sub) {\n sub.setNewSubscription(pendingSub);\n pendingSub.success(sub);\n reconnect = true;\n }\n else {\n sub = new UserSubscription(this.repository, pendingSub);\n pendingSub.subscription = sub;\n pendingSub.success(sub);\n }\n for (const handler of pendingSub.handlers.onConnected) {\n try {\n handler(sub.serverInstance, reconnect);\n }\n catch (e) {\n }\n }\n }\n };\n handleEventData = (msg) => {\n const subLocalKey = this.subscriptionIdToLocalKeyMap[msg.subscription_id];\n if (typeof subLocalKey === \"undefined\") {\n return;\n }\n const subscription = this.subscriptionsList[subLocalKey];\n if (typeof subscription !== \"object\") {\n return;\n }\n const trackedServersFound = subscription.trackedServers.filter((server) => {\n return server.subscriptionId === msg.subscription_id;\n });\n if (trackedServersFound.length !== 1) {\n return;\n }\n const isPrivateData = msg.oob;\n const sendingServerId = trackedServersFound[0].serverId;\n const receivedStreamData = () => {\n return {\n data: msg.data,\n server: this.repository.getServerById(sendingServerId).instance,\n requestArguments: subscription.params.arguments,\n message: undefined,\n private: isPrivateData,\n };\n };\n const onDataHandlers = subscription.handlers.onData;\n const queuedData = subscription.queued.data;\n if (onDataHandlers.length > 0) {\n onDataHandlers.forEach((callback) => {\n if (typeof callback === \"function\") {\n callback(receivedStreamData());\n }\n });\n }\n else {\n queuedData.push(receivedStreamData());\n }\n };\n handleSubscriptionCancelled = (msg) => {\n const subLocalKey = this.subscriptionIdToLocalKeyMap[msg.subscription_id];\n if (typeof subLocalKey === \"undefined\") {\n return;\n }\n const subscription = this.subscriptionsList[subLocalKey];\n if (typeof subscription !== \"object\") {\n return;\n }\n const expectedNewLength = subscription.trackedServers.length - 1;\n subscription.trackedServers = subscription.trackedServers.filter((server) => {\n if (server.subscriptionId === msg.subscription_id) {\n subscription.queued.closers.push(server.serverId);\n return false;\n }\n else {\n return true;\n }\n });\n if (subscription.trackedServers.length !== expectedNewLength) {\n return;\n }\n if (subscription.trackedServers.length <= 0) {\n this.timedCache.add(subscription);\n clearTimeout(subscription.timeoutId);\n this.callOnClosedHandlers(subscription);\n delete this.subscriptionsList[subLocalKey];\n }\n delete this.subscriptionIdToLocalKeyMap[msg.subscription_id];\n };\n callOnClosedHandlers(subscription, reason) {\n const closersCount = subscription.queued.closers.length;\n const closingServerId = (closersCount > 0) ? subscription.queued.closers[closersCount - 1] : null;\n let closingServer;\n if (closingServerId !== undefined && typeof closingServerId === \"string\") {\n closingServer = this.repository.getServerById(closingServerId).instance;\n }\n subscription.handlers.onClosed.forEach((callback) => {\n if (typeof callback !== \"function\") {\n return;\n }\n callback({\n message: reason || ON_CLOSE_MSG_SERVER_INIT,\n requestArguments: subscription.params.arguments || {},\n server: closingServer,\n stream: subscription.method,\n });\n });\n }\n closeSubscription(subLocalKey) {\n const subscription = this.subscriptionsList[subLocalKey];\n if (typeof subscription !== \"object\") {\n return;\n }\n subscription.trackedServers.forEach((server) => {\n if (typeof server.subscriptionId === \"undefined\") {\n return;\n }\n subscription.queued.closers.push(server.serverId);\n this.session.sendFireAndForget({\n type: \"unsubscribe\",\n subscription_id: server.subscriptionId,\n reason_uri: \"\",\n reason: ON_CLOSE_MSG_CLIENT_INIT,\n });\n delete this.subscriptionIdToLocalKeyMap[server.subscriptionId];\n });\n subscription.trackedServers = [];\n this.callOnClosedHandlers(subscription, ON_CLOSE_MSG_CLIENT_INIT);\n delete this.subscriptionsList[subLocalKey];\n }\n}\n\nclass ClientProtocol {\n session;\n repository;\n logger;\n streaming;\n constructor(session, repository, logger) {\n this.session = session;\n this.repository = repository;\n this.logger = logger;\n session.on(\"peer-added\", (msg) => this.handlePeerAdded(msg));\n session.on(\"peer-removed\", (msg) => this.handlePeerRemoved(msg));\n session.on(\"methods-added\", (msg) => this.handleMethodsAddedMessage(msg));\n session.on(\"methods-removed\", (msg) => this.handleMethodsRemovedMessage(msg));\n this.streaming = new ClientStreaming(session, repository, logger);\n }\n subscribe(stream, options, targetServers, success, error, existingSub) {\n this.streaming.subscribe(stream, options, targetServers, success, error, existingSub);\n }\n invoke(id, method, args, target) {\n const serverId = target.id;\n const methodId = method.gatewayId;\n const msg = {\n type: \"call\",\n server_id: serverId,\n method_id: methodId,\n arguments_kv: args,\n };\n return this.session.send(msg, { invocationId: id, serverId })\n .then((m) => this.handleResultMessage(m))\n .catch((err) => this.handleInvocationError(err));\n }\n drainSubscriptions() {\n return this.streaming.drainSubscriptions();\n }\n drainSubscriptionsCache() {\n return this.streaming.drainSubscriptionsCache();\n }\n handlePeerAdded(msg) {\n const newPeerId = msg.new_peer_id;\n const remoteId = msg.identity;\n const isLocal = msg.meta ? msg.meta.local : true;\n const pid = Number(remoteId.process);\n const serverInfo = {\n machine: remoteId.machine,\n pid: isNaN(pid) ? remoteId.process : pid,\n instance: remoteId.instance,\n application: remoteId.application,\n applicationName: remoteId.applicationName,\n environment: remoteId.environment,\n region: remoteId.region,\n user: remoteId.user,\n windowId: remoteId.windowId,\n peerId: newPeerId,\n api: remoteId.api,\n isLocal\n };\n this.repository.addServer(serverInfo, newPeerId);\n }\n handlePeerRemoved(msg) {\n const removedPeerId = msg.removed_id;\n const reason = msg.reason;\n this.repository.removeServerById(removedPeerId, reason);\n }\n handleMethodsAddedMessage(msg) {\n const serverId = msg.server_id;\n const methods = msg.methods;\n methods.forEach((method) => {\n this.repository.addServerMethod(serverId, method);\n });\n }\n handleMethodsRemovedMessage(msg) {\n const serverId = msg.server_id;\n const methodIdList = msg.methods;\n const server = this.repository.getServerById(serverId);\n const serverMethodKeys = Object.keys(server.methods);\n serverMethodKeys.forEach((methodKey) => {\n const method = server.methods[methodKey];\n if (methodIdList.indexOf(method.gatewayId) > -1) {\n this.repository.removeServerMethod(serverId, methodKey);\n }\n });\n }\n handleResultMessage(msg) {\n const invocationId = msg._tag.invocationId;\n const result = msg.result;\n const serverId = msg._tag.serverId;\n const server = this.repository.getServerById(serverId);\n return {\n invocationId,\n result,\n instance: server.instance,\n status: InvokeStatus.Success,\n message: \"\"\n };\n }\n handleInvocationError(msg) {\n this.logger.debug(`handle invocation error ${JSON.stringify(msg)}`);\n if (\"_tag\" in msg) {\n const invocationId = msg._tag.invocationId;\n const serverId = msg._tag.serverId;\n const server = this.repository.getServerById(serverId);\n const message = msg.reason;\n const context = msg.context;\n return {\n invocationId,\n result: context,\n instance: server.instance,\n status: InvokeStatus.Error,\n message\n };\n }\n else {\n return {\n invocationId: \"\",\n message: msg.message,\n status: InvokeStatus.Error,\n error: msg\n };\n }\n }\n}\n\nfunction gW3ProtocolFactory (instance, connection, clientRepository, serverRepository, libConfig, interop) {\n const logger = libConfig.logger.subLogger(\"gw3-protocol\");\n let resolveReadyPromise;\n const readyPromise = new Promise((resolve) => {\n resolveReadyPromise = resolve;\n });\n const session = connection.domain(\"agm\", [\"subscribed\"]);\n const server = new ServerProtocol(session, clientRepository, serverRepository, logger.subLogger(\"server\"));\n const client = new ClientProtocol(session, clientRepository, logger.subLogger(\"client\"));\n async function handleReconnect() {\n logger.info(\"reconnected - will replay registered methods and subscriptions\");\n client.drainSubscriptionsCache().forEach((sub) => {\n const methodInfo = sub.method;\n const params = Object.assign({}, sub.params);\n logger.info(`trying to soft-re-subscribe to method ${methodInfo.name}, with params: ${JSON.stringify(params)}`);\n interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(() => logger.info(`soft-subscribing to method ${methodInfo.name} DONE`)).catch((error) => logger.warn(`subscribing to method ${methodInfo.name} failed: ${JSON.stringify(error)}}`));\n });\n const reconnectionPromises = [];\n const existingSubscriptions = client.drainSubscriptions();\n for (const sub of existingSubscriptions) {\n const methodInfo = sub.method;\n const params = Object.assign({}, sub.params);\n logger.info(`trying to re-subscribe to method ${methodInfo.name}, with params: ${JSON.stringify(params)}`);\n reconnectionPromises.push(interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(() => logger.info(`subscribing to method ${methodInfo.name} DONE`)));\n }\n const registeredMethods = serverRepository.getList();\n serverRepository.reset();\n for (const method of registeredMethods) {\n const def = method.definition;\n if (method.stream) {\n reconnectionPromises.push(interop.server.createStream(def, method.streamCallbacks, undefined, undefined, method.stream)\n .then(() => logger.info(`subscribing to method ${def.name} DONE`))\n .catch(() => logger.warn(`subscribing to method ${def.name} FAILED`)));\n }\n else if (method?.theFunction?.userCallback) {\n reconnectionPromises.push(interop.register(def, method.theFunction.userCallback)\n .then(() => logger.info(`registering method ${def.name} DONE`))\n .catch(() => logger.warn(`registering method ${def.name} FAILED`)));\n }\n else if (method?.theFunction?.userCallbackAsync) {\n reconnectionPromises.push(interop.registerAsync(def, method.theFunction.userCallbackAsync)\n .then(() => logger.info(`registering method ${def.name} DONE`))\n .catch(() => logger.warn(`registering method ${def.name} FAILED`)));\n }\n }\n await Promise.all(reconnectionPromises);\n logger.info(\"Interop is re-announced\");\n }\n function handleInitialJoin() {\n if (resolveReadyPromise) {\n resolveReadyPromise({\n client,\n server,\n });\n resolveReadyPromise = undefined;\n }\n }\n session.onJoined((reconnect) => {\n clientRepository.addServer(instance, connection.peerId);\n if (reconnect) {\n handleReconnect().then(() => connection.setLibReAnnounced({ name: \"interop\" })).catch((error) => logger.warn(`Error while re-announcing interop: ${JSON.stringify(error)}`));\n }\n else {\n handleInitialJoin();\n }\n });\n session.onLeft(() => {\n clientRepository.reset();\n });\n session.join();\n return readyPromise;\n}\n\nclass Interop {\n instance;\n readyPromise;\n client;\n server;\n unwrappedInstance;\n protocol;\n clientRepository;\n serverRepository;\n constructor(configuration) {\n if (typeof configuration === \"undefined\") {\n throw new Error(\"configuration is required\");\n }\n if (typeof configuration.connection === \"undefined\") {\n throw new Error(\"configuration.connections is required\");\n }\n const connection = configuration.connection;\n if (typeof configuration.methodResponseTimeout !== \"number\") {\n configuration.methodResponseTimeout = 30 * 1000;\n }\n if (typeof configuration.waitTimeoutMs !== \"number\") {\n configuration.waitTimeoutMs = 30 * 1000;\n }\n this.unwrappedInstance = new InstanceWrapper(this, undefined, connection);\n this.instance = this.unwrappedInstance.unwrap();\n this.clientRepository = new ClientRepository(configuration.logger.subLogger(\"cRep\"), this);\n this.serverRepository = new ServerRepository();\n let protocolPromise;\n if (connection.protocolVersion === 3) {\n protocolPromise = gW3ProtocolFactory(this.instance, connection, this.clientRepository, this.serverRepository, configuration, this);\n }\n else {\n throw new Error(`protocol ${connection.protocolVersion} not supported`);\n }\n this.readyPromise = protocolPromise.then((protocol) => {\n this.protocol = protocol;\n this.client = new Client(this.protocol, this.clientRepository, this.instance, configuration);\n this.server = new Server(this.protocol, this.serverRepository);\n return this;\n });\n }\n ready() {\n return this.readyPromise;\n }\n serverRemoved(callback) {\n return this.client.serverRemoved(callback);\n }\n serverAdded(callback) {\n return this.client.serverAdded(callback);\n }\n serverMethodRemoved(callback) {\n return this.client.serverMethodRemoved(callback);\n }\n serverMethodAdded(callback) {\n return this.client.serverMethodAdded(callback);\n }\n methodRemoved(callback) {\n return this.client.methodRemoved(callback);\n }\n methodAdded(callback) {\n return this.client.methodAdded(callback);\n }\n methodsForInstance(instance) {\n return this.client.methodsForInstance(instance);\n }\n methods(methodFilter) {\n return this.client.methods(methodFilter);\n }\n servers(methodFilter) {\n return this.client.servers(methodFilter);\n }\n subscribe(method, options, successCallback, errorCallback) {\n return this.client.subscribe(method, options, successCallback, errorCallback);\n }\n createStream(streamDef, callbacks, successCallback, errorCallback) {\n return this.server.createStream(streamDef, callbacks, successCallback, errorCallback);\n }\n unregister(methodFilter) {\n return this.server.unregister(methodFilter);\n }\n registerAsync(methodDefinition, callback) {\n return this.server.registerAsync(methodDefinition, callback);\n }\n register(methodDefinition, callback) {\n return this.server.register(methodDefinition, callback);\n }\n invoke(methodFilter, argumentObj, target, additionalOptions, success, error) {\n return this.client.invoke(methodFilter, argumentObj, target, additionalOptions, success, error);\n }\n waitForMethod(name) {\n const pw = new PromiseWrapper();\n const unsubscribe = this.client.methodAdded((m) => {\n if (m.name === name) {\n unsubscribe();\n pw.resolve(m);\n }\n });\n return pw.promise;\n }\n}\n\nconst successMessages = [\"subscribed\", \"success\"];\nclass MessageBus {\n connection;\n logger;\n peerId;\n session;\n subscriptions;\n readyPromise;\n constructor(connection, logger) {\n this.connection = connection;\n this.logger = logger;\n this.peerId = connection.peerId;\n this.subscriptions = [];\n this.session = connection.domain(\"bus\", successMessages);\n this.readyPromise = this.session.join();\n this.readyPromise.then(() => {\n this.watchOnEvent();\n });\n }\n ready() {\n return this.readyPromise;\n }\n publish = (topic, data, options) => {\n const { routingKey, target } = options || {};\n const args = this.removeEmptyValues({\n type: \"publish\",\n topic,\n data,\n peer_id: this.peerId,\n routing_key: routingKey,\n target_identity: target\n });\n this.session.send(args);\n };\n subscribe = (topic, callback, options) => {\n return new Promise((resolve, reject) => {\n const { routingKey, target } = options || {};\n const args = this.removeEmptyValues({\n type: \"subscribe\",\n topic,\n peer_id: this.peerId,\n routing_key: routingKey,\n source: target\n });\n this.session.send(args)\n .then((response) => {\n const { subscription_id } = response;\n this.subscriptions.push({ subscription_id, topic, callback, source: target });\n resolve({\n unsubscribe: () => {\n this.session.send({ type: \"unsubscribe\", subscription_id, peer_id: this.peerId });\n this.subscriptions = this.subscriptions.filter((s) => s.subscription_id !== subscription_id);\n return Promise.resolve();\n }\n });\n })\n .catch((error) => reject(error));\n });\n };\n watchOnEvent = () => {\n this.session.on(\"event\", (args) => {\n const { data, subscription_id } = args;\n const source = args[\"publisher-identity\"];\n const subscription = this.subscriptions.find((s) => s.subscription_id === subscription_id);\n if (subscription) {\n if (!subscription.source) {\n subscription.callback(data, subscription.topic, source);\n }\n else {\n if (this.keysMatch(subscription.source, source)) {\n subscription.callback(data, subscription.topic, source);\n }\n }\n }\n });\n };\n removeEmptyValues(obj) {\n const cleaned = {};\n Object.keys(obj).forEach((key) => {\n if (obj[key] !== undefined && obj[key] !== null) {\n cleaned[key] = obj[key];\n }\n });\n return cleaned;\n }\n keysMatch(obj1, obj2) {\n const keysObj1 = Object.keys(obj1);\n let allMatch = true;\n keysObj1.forEach((key) => {\n if (obj1[key] !== obj2[key]) {\n allMatch = false;\n }\n });\n return allMatch;\n }\n}\n\nconst IOConnectCoreFactory = (userConfig, ext) => {\n const iodesktop = typeof window === \"object\" ? (window.iodesktop ?? window.glue42gd) : undefined;\n const preloadPromise = typeof window === \"object\" ? (window.gdPreloadPromise ?? Promise.resolve()) : Promise.resolve();\n const glueInitTimer = timer(\"glue\");\n userConfig = userConfig || {};\n ext = ext || {};\n const internalConfig = prepareConfig(userConfig, ext, iodesktop);\n let _connection;\n let _interop;\n let _logger;\n let _metrics;\n let _contexts;\n let _bus;\n let _allowTrace;\n const libs = {};\n function registerLib(name, inner, t) {\n _allowTrace = _logger.canPublish(\"trace\");\n if (_allowTrace) {\n _logger.trace(`registering ${name} module`);\n }\n const done = () => {\n inner.initTime = t.stop();\n inner.initEndTime = t.endTime;\n inner.marks = t.marks;\n if (_allowTrace) {\n _logger.trace(`${name} is ready - ${t.endTime - t.startTime}`);\n }\n };\n inner.initStartTime = t.startTime;\n if (inner.ready) {\n inner.ready().then(() => {\n done();\n });\n }\n else {\n done();\n }\n if (!Array.isArray(name)) {\n name = [name];\n }\n name.forEach((n) => {\n libs[n] = inner;\n IOConnectCoreFactory[n] = inner;\n });\n }\n function setupConnection() {\n const initTimer = timer(\"connection\");\n _connection = new Connection(internalConfig.connection, _logger.subLogger(\"connection\"));\n let authPromise = Promise.resolve(internalConfig.auth);\n if (internalConfig.connection && !internalConfig.auth) {\n if (iodesktop) {\n authPromise = iodesktop.getGWToken()\n .then((token) => {\n return {\n gatewayToken: token\n };\n });\n }\n else if (typeof window !== \"undefined\" && window?.glue42electron) {\n if (typeof window.glue42electron.gwToken === \"string\") {\n authPromise = Promise.resolve({\n gatewayToken: window.glue42electron.gwToken\n });\n }\n }\n else {\n authPromise = Promise.reject(\"You need to provide auth information\");\n }\n }\n return authPromise\n .then((authConfig) => {\n initTimer.mark(\"auth-promise-resolved\");\n let authRequest;\n if (Object.prototype.toString.call(authConfig) === \"[object Object]\") {\n authRequest = authConfig;\n }\n else {\n throw new Error(\"Invalid auth object - \" + JSON.stringify(authConfig));\n }\n return _connection.login(authRequest);\n })\n .then(() => {\n registerLib(\"connection\", _connection, initTimer);\n return internalConfig;\n })\n .catch((e) => {\n if (_connection) {\n _connection.logout();\n }\n throw e;\n });\n }\n function setupLogger() {\n const initTimer = timer(\"logger\");\n _logger = new Logger(`${internalConfig.connection.identity?.application}`, undefined, internalConfig.customLogger);\n _logger.consoleLevel(internalConfig.logger.console);\n _logger.publishLevel(internalConfig.logger.publish);\n if (_logger.canPublish(\"debug\")) {\n _logger.debug(\"initializing glue...\");\n }\n registerLib(\"logger\", _logger, initTimer);\n return Promise.resolve(undefined);\n }\n function setupMetrics() {\n const initTimer = timer(\"metrics\");\n const config = internalConfig.metrics;\n const metricsPublishingEnabledFunc = iodesktop?.getMetricsPublishingEnabled;\n const identity = internalConfig.connection.identity;\n const canUpdateMetric = metricsPublishingEnabledFunc ? metricsPublishingEnabledFunc : () => true;\n const disableAutoAppSystem = (typeof config !== \"boolean\" && config.disableAutoAppSystem) ?? false;\n _metrics = metrics({\n connection: config ? _connection : undefined,\n logger: _logger.subLogger(\"metrics\"),\n canUpdateMetric,\n system: \"Glue42\",\n service: identity?.service ?? iodesktop?.applicationName ?? internalConfig.application,\n instance: identity?.instance ?? identity?.windowId ?? nanoid(10),\n disableAutoAppSystem,\n pagePerformanceMetrics: typeof config !== \"boolean\" ? config?.pagePerformanceMetrics : undefined\n });\n registerLib(\"metrics\", _metrics, initTimer);\n return Promise.resolve();\n }\n function setupInterop() {\n const initTimer = timer(\"interop\");\n const agmConfig = {\n connection: _connection,\n logger: _logger.subLogger(\"interop\"),\n };\n _interop = new Interop(agmConfig);\n Logger.Interop = _interop;\n registerLib([\"interop\", \"agm\"], _interop, initTimer);\n return Promise.resolve();\n }\n function setupContexts() {\n const hasActivities = (internalConfig.activities && _connection.protocolVersion === 3);\n const needsContexts = internalConfig.contexts || hasActivities;\n if (needsContexts) {\n const initTimer = timer(\"contexts\");\n _contexts = new ContextsModule({\n connection: _connection,\n logger: _logger.subLogger(\"contexts\"),\n trackAllContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.trackAllContexts : false,\n reAnnounceKnownContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.reAnnounceKnownContexts : false\n });\n registerLib(\"contexts\", _contexts, initTimer);\n return _contexts;\n }\n else {\n const replayer = _connection.replayer;\n if (replayer) {\n replayer.drain(ContextMessageReplaySpec.name);\n }\n }\n }\n async function setupBus() {\n if (!internalConfig.bus) {\n return Promise.resolve();\n }\n const initTimer = timer(\"bus\");\n _bus = new MessageBus(_connection, _logger.subLogger(\"bus\"));\n registerLib(\"bus\", _bus, initTimer);\n return Promise.resolve();\n }\n function setupExternalLibs(externalLibs) {\n try {\n externalLibs.forEach((lib) => {\n setupExternalLib(lib.name, lib.create);\n });\n return Promise.resolve();\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n function setupExternalLib(name, createCallback) {\n const initTimer = timer(name);\n const lib = createCallback(libs);\n if (lib) {\n registerLib(name, lib, initTimer);\n }\n }\n function waitForLibs() {\n const libsReadyPromises = Object.keys(libs).map((key) => {\n const lib = libs[key];\n return lib.ready ?\n lib.ready() : Promise.resolve();\n });\n return Promise.all(libsReadyPromises);\n }\n function constructGlueObject() {\n const feedbackFunc = (feedbackInfo) => {\n if (!_interop) {\n return;\n }\n _interop.invoke(\"T42.ACS.Feedback\", feedbackInfo, \"best\");\n };\n const info = {\n coreVersion: version,\n version: internalConfig.version\n };\n glueInitTimer.stop();\n const glue = {\n feedback: feedbackFunc,\n info,\n logger: _logger,\n interop: _interop,\n agm: _interop,\n connection: _connection,\n metrics: _metrics,\n contexts: _contexts,\n bus: _bus,\n version: internalConfig.version,\n userConfig,\n done: () => {\n _logger?.info(\"done called by user...\");\n return _connection.logout();\n }\n };\n glue.performance = {\n get glueVer() {\n return internalConfig.version;\n },\n get glueConfig() {\n return JSON.stringify(userConfig);\n },\n get browser() {\n return window.performance.timing.toJSON();\n },\n get memory() {\n return window.performance.memory;\n },\n get initTimes() {\n const all = getAllTimers();\n return Object.keys(all).map((key) => {\n const t = all[key];\n return {\n name: key,\n duration: t.endTime - t.startTime,\n marks: t.marks,\n startTime: t.startTime,\n endTime: t.endTime\n };\n });\n }\n };\n Object.keys(libs).forEach((key) => {\n const lib = libs[key];\n glue[key] = lib;\n });\n glue.config = {};\n Object.keys(internalConfig).forEach((k) => {\n glue.config[k] = internalConfig[k];\n });\n if (ext && ext.extOptions) {\n Object.keys(ext.extOptions).forEach((k) => {\n glue.config[k] = ext?.extOptions[k];\n });\n }\n if (ext?.enrichGlue) {\n ext.enrichGlue(glue);\n }\n if (iodesktop && iodesktop.updatePerfData) {\n iodesktop.updatePerfData(glue.performance);\n }\n if (glue.agm) {\n const deprecatedDecorator = (fn, wrong, proper) => {\n return function () {\n glue.logger.warn(`glue.js - 'glue.agm.${wrong}' method is deprecated, use 'glue.interop.${proper}' instead.`);\n return fn.apply(glue.agm, arguments);\n };\n };\n const agmAny = glue.agm;\n agmAny.method_added = deprecatedDecorator(glue.agm.methodAdded, \"method_added\", \"methodAdded\");\n agmAny.method_removed = deprecatedDecorator(glue.agm.methodRemoved, \"method_removed\", \"methodRemoved\");\n agmAny.server_added = deprecatedDecorator(glue.agm.serverAdded, \"server_added\", \"serverAdded\");\n agmAny.server_method_aded = deprecatedDecorator(glue.agm.serverMethodAdded, \"server_method_aded\", \"serverMethodAdded\");\n agmAny.server_method_removed = deprecatedDecorator(glue.agm.serverMethodRemoved, \"server_method_removed\", \"serverMethodRemoved\");\n }\n return glue;\n }\n async function registerInstanceIfNeeded() {\n const RegisterInstanceMethodName = \"T42.ACS.RegisterInstance\";\n if (Utils.isNode() && typeof process.env._GD_STARTING_CONTEXT_ === \"undefined\" && typeof userConfig?.application !== \"undefined\") {\n const isMethodAvailable = _interop.methods({ name: RegisterInstanceMethodName }).length > 0;\n if (isMethodAvailable) {\n try {\n await _interop.invoke(RegisterInstanceMethodName, { appName: userConfig?.application, pid: process.pid });\n }\n catch (error) {\n const typedError = error;\n _logger.error(`Cannot register as an instance: ${JSON.stringify(typedError.message)}`);\n }\n }\n }\n }\n return preloadPromise\n .then(setupLogger)\n .then(setupConnection)\n .then(() => Promise.all([setupMetrics(), setupInterop(), setupContexts(), setupBus()]))\n .then(() => _interop.readyPromise)\n .then(() => registerInstanceIfNeeded())\n .then(() => {\n return setupExternalLibs(internalConfig.libs || []);\n })\n .then(waitForLibs)\n .then(constructGlueObject)\n .catch((err) => {\n return Promise.reject({\n err,\n libs\n });\n });\n};\nif (typeof window !== \"undefined\") {\n window.IOConnectCore = IOConnectCoreFactory;\n}\nIOConnectCoreFactory.version = version;\nIOConnectCoreFactory.default = IOConnectCoreFactory;\n\nexport { IOConnectCoreFactory as default };\n//# sourceMappingURL=core.es.js.map\n",null,null,"\"use strict\";\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\n;\ncreateRegistry.default = createRegistry;\nmodule.exports = createRegistry;\n//# sourceMappingURL=index.js.map",null,null,null,null,null,null,null,null,null,null,null,null,"const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["defaultConfig","logger","gateway","webPlatform","libraries","exposeAPI","ok$1","result","ok","err$1","error","map2$1","f","ar","br","mapError$1","r","__assign$1","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","isEqual$1","a","b","Array","isArray","keys","isJsonArray$1","json","isJsonObject$1","expectedGot$1","expected","got","JSON","stringify","typeString$1","printPath$1","paths","map","path","join","prependAt$1","newAt","_a","at","rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__rest$1","Decoder$1","Decoder","decode","_this","run","kind","input","message","runPromise","Promise","resolve","reject","asPromise$1","runWithException","withException$1","map$1","andThen","andThen$1","value","where","test","errorMessage","succeed","fail","string","number","boolean","constant","object","decoders","obj","key","undefined","array","decoder","reduce","acc","v","arr","concat","err$$1","decodeValue_1","tuple","nth","union","ad","bd","_i","oneOf","intersection","ds","anyJson","unknownJson","dict","optional","errors","errorsList","withDefault","defaultValue","withDefault$1","valueAt","jsonAtPath","slice","fixedValue","lazy","mkDecoder","string$1","number$1","boolean$1","anyJson$1","constant$1","object$1","array$1","optional$1","oneOf$1","connectBrowserAppProps","fdc3v2AppProps","err","map2","mapError","__assign","isEqual","isJsonArray","isJsonObject","expectedGot","typeString","printPath","prependAt","__rest","asPromise","withException","nonEmptyStringDecoder$1","nonNegativeNumberDecoder$1","num","intentDefinitionDecoder$1","name","displayName","contexts","customConfig","v2TypeDecoder","v2DetailsDecoder","url","v2IconDecoder","src","size","type","v2ScreenshotDecoder","label","v2ListensForIntentDecoder","resultType","v2IntentsDecoder","listensFor","raises","v2UserChannelDecoder","broadcasts","v2AppChannelDecoder","description","v2InteropDecoder","intents","userChannels","appChannels","glue42ApplicationDetailsDecoder","top","left","width","height","glue42HostManifestsBrowserDecoder","title","version","customProperties","icon","caption","details","hidden","hostManifestsBrowserDecoder","ioConnect","Glue42","v1DefinitionDecoder","appId","manifest","manifestType","tooltip","contactEmail","supportEmail","publisher","images","icons","v2LocalizedDefinitionDecoder","lang","categories","screenshots","moreInfo","hostManifests","interop","v2DefinitionDecoder","localizedVersions","allDefinitionsDecoder","parseDecoderErrorToStringMessage","decoders$1","common","nonEmptyStringDecoder","nonNegativeNumberDecoder","fdc3","INTENTS_ERRORS","ioc","_fdc3","_decoders","_errors","fdc3ToDesktopDefinitionType","web","native","citrix","onlineNative","other","toApi","isFdc3Definition","bind","parseToBrowserBaseAppData","parseToDesktopAppConfig","definition","decodeRes","isFdc3","reason","Error","userProperties","getUserPropertiesFromDefinition","createOptions","getUrl","baseApplicationData","getIntentsFromV2AppDefinition","getIconFromDefinition","definitionVersion","ioConnectDefinition","ioDefinitionDecodeRes","mergeBaseAppDataWithGlueManifest","fdc3v1Definition","fdc3v2Definition","desktopDefinition","mergeDesktopConfigWithGlueManifest","fromEntries","entries","filter","includes","parsedManifest","parse","fdc3Intents","fdc3Intent","intentName","intentData","find","iconDef","baseAppData","hostManifestDefinition","baseApplicationDefinition","config","appConfig","optionalNonEmptyStringDecoder","libDomainDecoder","windowOperationTypesDecoder","appManagerOperationTypesDecoder","layoutsOperationTypesDecoder","notificationsOperationTypesDecoder","systemOperationTypesDecoder","windowRelativeDirectionDecoder","windowBoundsDecoder","windowOpenSettingsDecoder","context","relativeTo","relativeDirection","windowId","layoutComponentId","openWindowConfigDecoder","options","windowHelloDecoder","coreWindowDataDecoder","simpleWindowDecoder","helloSuccessDecoder","windows","isWorkspaceFrame","windowTitleConfigDecoder","focusEventDataDecoder","hasFocus","windowMoveResizeConfigDecoder","relative","windowBoundsResultDecoder","bounds","frameWindowBoundsResultDecoder","windowUrlResultDecoder","anyDecoder","boundsDecoder","instanceDataDecoder","id","applicationName","applicationDetailsDecoder","intentDefinitionDecoder","applicationDefinitionDecoder","allApplicationDefinitionsDecoder","definitions","mode","appRemoveConfigDecoder","appsExportOperationDecoder","applicationDataDecoder","instances","baseApplicationDataDecoder","appDirectoryStateChangeDecoder","appsAdded","appsChanged","appsRemoved","appHelloSuccessDecoder","apps","initialChannelId","basicInstanceDataDecoder","applicationStartConfigDecoder","waitForAGMReady","forceChromeTab","channelId","layoutTypeDecoder","componentTypeDecoder","windowComponentStateDecoder","createArgs","windowState","restoreState","instanceId","isCollapsed","isSticky","restoreSettings","groupId","groupZOrder","windowLayoutComponentDecoder","componentType","application","state","windowLayoutItemDecoder","appName","allowExtract","allowReorder","showCloseButton","isMaximized","groupLayoutItemDecoder","children","columnLayoutItemDecoder","rowLayoutItemDecoder","workspaceLayoutComponentStateDecoder","workspaceLayoutComponentDecoder","workspaceFrameComponentStateDecoder","selectedWorkspace","workspaces","workspaceFrameComponentDecoder","glueLayoutDecoder","components","metadata","newLayoutOptionsDecoder","ignoreInstances","restoreOptionsDecoder","closeRunningInstance","closeMe","timeout","layoutSummaryDecoder","simpleLayoutConfigDecoder","saveLayoutConfigDecoder","layout","renameLayoutConfigDecoder","newName","layoutResultDecoder","status","updateLayoutMetadataConfigDecoder","restoreLayoutConfigDecoder","getAllLayoutsConfigDecoder","allLayoutsFullConfigDecoder","layouts","importModeDecoder","layoutsImportConfigDecoder","skipManagerRequest","allLayoutsSummariesResultDecoder","summaries","simpleLayoutResultDecoder","optionalSimpleLayoutResult","setDefaultGlobalConfigDecoder","intentsOperationTypesDecoder","intentHandlerDecoder","applicationTitle","applicationDescription","applicationIcon","contextTypes","instanceTitle","intentResolverResponseDecoder","intent","handler","intentDecoder","handlers","intentTargetDecoder","app","instance","intentContextDecoder","data","intentsDecoder","wrappedIntentsDecoder","intentFilterDecoder","contextType","findFilterDecoder","wrappedIntentFilterDecoder","intentRequestDecoder","target","waitUserResponseIndefinitely","raiseRequestDecoder","resolverConfigDecoder","enabled","waitResponseTimeout","raiseIntentRequestDecoder","intentRequest","resolverConfig","intentResultDecoder","request","handlersFilterDecoder","openResolver","applicationNames","filterHandlersResultDecoder","filterHandlersWithResolverConfigDecoder","filterHandlersRequest","AddIntentListenerRequestDecoder","AddIntentListenerDecoder","intentInfoDecoder","getIntentsResultDecoder","channelNameDecoder","channelNames","interopActionSettingsDecoder","method","glue42NotificationActionDecoder","action","notificationStateDecoder","activeNotificationsCountChangeDecoder","count","notificationDefinitionDecoder","badge","body","dir","image","renotify","requireInteraction","silent","tag","timestamp","vibrate","glue42NotificationOptionsDecoder","clickInterop","actions","focusPlatformOnDefaultClick","severity","showToast","showInPanel","notificationSetStateRequestDecoder","channelContextDecoder","meta","color","removeChannelDataDecoder","channelRestrictionsDecoder","read","write","channelRestrictionConfigWithWindowIdDecoder","restrictionConfigDataDecoder","restrictionsDecoder","channels","getRestrictionsDataDecoder","restrictionsConfigDecoder","restrictAllDataDecoder","restrictions","raiseNotificationDecoder","settings","raiseNotificationResultDecoder","permissionRequestResultDecoder","permissionGranted","permissionQueryResultDecoder","permission","notificationEventPayloadDecoder","notificationFilterDecoder","allowed","blocked","notificationsConfigurationDecoder","enable","enableToasts","sourceFilter","notificationsConfigurationProtocolDecoder","configuration","strictNotificationsConfigurationProtocolDecoder","platformSaveRequestConfigDecoder","layoutType","layoutName","saveRequestClientResponseDecoder","windowContext","permissionStateResultDecoder","simpleAvailabilityResultDecoder","isAvailable","simpleItemIdDecoder","itemId","operationCheckResultDecoder","isSupported","operationCheckConfigDecoder","operation","workspaceFrameBoundsResultDecoder","themeDecoder","simpleThemeResponseDecoder","theme","allThemesResponseDecoder","themes","selectThemeConfigDecoder","notificationsDataDecoder","simpleNotificationDataDecoder","notification","allNotificationsDataDecoder","notifications","simpleNotificationSelectDecoder","getWindowIdsOnChannelDataDecoder","channel","getWindowIdsOnChannelResultDecoder","windowIds","channelsOperationTypesDecoder","getMyChanelResultDecoder","windowWithChannelFilterDecoder","wrappedWindowWithChannelFilterDecoder","getWindowIdsWithChannelsResultDecoder","windowIdsWithChannels","startApplicationContextDecoder","startApplicationOptionsDecoder","reuseId","joinChannelDataDecoder","windowChannelResultDecoder","prefsOperationTypesDecoder","appPreferencesDecoder","lastUpdate","basePrefsConfigDecoder","getPrefsResultDecoder","prefs","getAllPrefsResultDecoder","all","changePrefsDataDecoder","prefsHelloSuccessDecoder","platform","operations$9","openWindow","dataDecoder","resultDecoder","windowHello","windowAdded","windowRemoved","getBounds","getFrameBounds","moveResize","focus","close","getTitle","setTitle","focusChange","getChannel","getDefaultExportFromCjs$1","x","__esModule","createRegistry$1","errorHandling","_userErrorHandler","callbacks","_handleError","exceptionArtifact","errParam","msg","stack","console","add","callback","replayArgumentsArr","callbacksForKey","push","setTimeout","forEach","replayArgument","allForKey","element","index","execute","argumentsArr","results","clear","clearKey","default","CallbackRegistryFactory$1","WebWindowModel","_id","_name","_bridge","registry","myCtxKey","ctxUnsubscribe","me","constructor","clean","processSelfFocusEvent","isFocused","contextLib","subscribe","getURL","resizeTo","moveTo","getContext","updateContext","setContext","onContextUpdated","onFocusChanged","send","dimension","targetBounds","commandArgs","window","open","ttl","ctx","get","___io___","update","current","newCtx","set","includeOperationCheck","systemOperations","operationCheck","getWorkspaceWindowFrameBounds","PromisePlus$1","executor","timeoutMilliseconds","timeoutMessage","then","clearTimeout","catch","GlueWebPlatformControlName","GlueWebPlatformStreamName","GlueClientControlName","GlueCorePlusThemesStream","GlueBridge","coreGlue","communicationId","platformMethodTimeoutMs","controllers","sub","running","interopInstance","stop","unregister","start","checkWaitMethod","systemId","registerAsync","args","_","success","passMessageController","onData","pkg","getInteropInstance","servers","peerId","domain","operationData","webOptions","checkOperationSupported","operationResult","transmitMessage","createNotificationsSteam","methods","some","nameMatch","serverMatch","getServers","server","unSub","serverMethodAdded","decodeResult","handleBridgeMessage","resolutionData","warn","messageData","invocationResult","baseErrorMessage","invoke","all_return_values","all_errors","invocationErrorMessage","returned","operations$8","appHello","appDirectoryStateChange","instanceStarted","instanceStopped","applicationStart","instanceStop","import","remove","export","AppManagerController","baseApplicationsTimeoutMS","appImportTimeoutMS","bridge","publicWindowId","applications","platformRegistration","channelsController","sessionController","handlePlatformShutdown","subLogger","trace","addOperationsExecutors","registerWithPlatform","api","appManager","operationName","onInstanceStarted","onInstanceStopped","startApplication","startOptions","forceTab","openResult","buildInstance","getApplication","verifiedName","getInstances","myInstance","inMemory","getApplications","onAppAdded","onAppChanged","onAppRemoved","handleAppDirectoryStateChange","handleInstanceStartedMessage","handleInstanceStoppedMessage","handleApplicationAddedMessage","handleApplicationChangedMessage","handleApplicationRemovedMessage","appData","buildApplication","appIndex","findIndex","splice","instanceData","instIdx","inst","instIdxApps","parseResult","soFar","valid","invalid","responseTimeout","methodResponseTimeoutMs","imported","joinInitialChannel","instancesSoFar","findMyInstance","channelsStorageData","getWindowData","currentName","foundInstance","InstanceModel","agm","freeze","ApplicationModel","controller","verifiedContext","verifiedOptions","operations$7","layoutAdded","layoutChanged","layoutRemoved","layoutRenamed","getAll","rename","save","restore","clientSaveRequest","getGlobalPermissionState","requestGlobalPermission","checkGlobalActivated","getDefaultGlobal","setDefaultGlobal","clearDefaultGlobal","updateMetadata","operations$6","raiseNotification","requestPermission","notificationShow","notificationClick","getPermission","list","notificationRaised","notificationClosed","click","clearAll","clearOld","configure","getConfiguration","configurationChanged","setState","activeCountChange","stateChange","nanoid$1","bytes","crypto","getRandomValues","Uint8Array","operations$5","getIntents","findIntent","raiseIntent","raise","filterHandlers","getIntentsByHandler","MAX_SET_TIMEOUT_DELAY","Glue42CoreMessageTypes","webPlatformTransportName","latestFDC3Type","operations$4","addChannel","removeChannel","getMyChannel","getWindowIdsOnChannel","getWindowIdsWithChannels","joinChannel","restrict","getRestrictions","restrictAll","operations$3","getEnvironment","getBase","platformShutdown","operations$2","clientHello","widget","inject","ExtController","eventsDispatcher","unsubFuncs","contentCommands","widgetVisualizationPermission","handle","handleWidgetVisualizationPermission","changeChannel","handleChangeChannel","unsub","unsubDispatcher","onContentMessage","handleContentMessage","unsubChannels","onChanged","sendContentMessage","command","newChannel","foundHandler","currentChannel","my","leave","EventsDispatcher","glue","glue42EventName","_handleMessage","events","notifyStarted","handleNotifyStarted","contentInc","handleContentInc","requestGlue","handleRequestGlue","removeEventListener","wireCustomEventListener","announceStarted","handleMessage","addEventListener","event","detail","namespace","glue42","glue42core","glue42Event","eventName","payload","CustomEvent","dispatchEvent","LegacyIntentsHelper","appManagerController","windowsController","intentsResolverResponsePromises","configureLogger","requestWithResolverInfo","findIntentFn","checkIfResolverShouldBeOpened","invokeRaiseIntent","raiseIntentWithResolverApp","loggerInst","responseMethodName","registerResponseMethod","resolverInstance","openIntentResolverApplication","handleInstanceResponse","promise","stopResolverInstance","requestObj","methodName","register","resolverResponseHandler","startContext","buildStartContext","buildStartOptions","subscribeOnInstanceStopped","createResponsePromise","cleanUpIntentResolverPromise","intentPromise","callerId","getTargetBounds","tryGetWindowBasedBounds","tryGetWorkspaceBasedBounds","defaultBounds","screen","availTop","availLeft","myWindowBounds","myWorkspaceBounds","res","rej","response","searchedInstance","checkIfIntentHasMoreThanOneHandler","operations$1","getCurrent","select","operations","prefsChanged","prefsHello","version$1","MetricTypes","STRING","NUMBER","TIMESTAMP","OBJECT","getMetricTypeByValue","metric","getTypeByValue","Date","serializeMetric","serializedMetrics","values","memo","innerType","composite","defineNestedComposite","normalizeMetricName","getMetricValueByType","now","publishNestedComposite","getTime","Boolean","toString","flatten","flat","toFlatten","composeMsgForRootStateMetric","system","merged","root","getAggregateState","highestState","sort","aggregateDesc","m","idx","aggregateDescription","Helpers","parent","transport","BaseMetric$1","repo","createMetric","newValue","updateMetric","BaseMetric","super","incrementBy","increment","decrement","decrementBy","mergeValues","k","protocol","_transport","_description","_repo","_parent","_path","_buildPath","shadowedSystem","_state","separator","_subSystems","_metrics","_getOrCreateMetric","metricObject","expectedType","metricDef","matching","shadowedMetric","existing","subSystems","metrics","subSystem","nameSystem","descriptionSystem","match","_system","getState","stateDescription","updateSystem","stringMetric","StringMetric","timestampMetric","TimestampMetric","objectMetric","ObjectMetric","numberMetric","NumberMetric","aggState","shadowedSubSystem","createSystem","connection","joinPromise","session","replayRepo","replaySystem","ss","async","createMetricsMsg","Description","Value","metricClone","cloneMetric","updateMetricCore","canUpdate","publishMetricsMsg","sendFireAndForget","canUpdateMetric","init","resolveReadyPromise","onJoined","reconnect","defineRootMetricsMsg","service","shadowedUpdateMetric","stateObj","rootMetric","peer_id","gw3","addSystemMetrics","clickStream","rootSystem","useClickStream","navigator","userAgent","document","documentClickHandler","className","getAttribute","tagName","toLowerCase","href","page","location","attachEvent","urlMetric","appNameMetric","startUrl","glue42gd","disableAutoAppSystem","reportingSystem","def","featureMetric","featureMetricFunc","addFAVSupport","perfConfig","pagePerformanceMetrics","lastCount","initialPublishTimeout","publishInterval","scheduleCollection","collect","setInterval","collectMemory","collectEntries","memory","performance","totalJSHeapSize","usedJSHeapSize","allEntries","getEntries","jsonfiedEntries","toJSON","initPerf","commonjsGlobal","globalThis","global","self","getDefaultExportFromCjs","createRegistry","CallbackRegistryFactory","Utils$1","Utils","isNode","_isNode","process","static","PromiseWrapper$2","delay","time","rejected","resolved","ended","timers","timer","timerName","marks","startTime","endTime","period","mark","currentTime","diff","timerObj","WebSocketConstructor","require","WebSocket","WS$1","ws","startupTimer","_running","_registry","wsRequests","onMessage","waitForSocketConnection","info","onConnectedChanged","pw","PromiseWrapper","failed","readyState","openSocket","retryInterval","retriesLeft","reconnectInterval","reconnectAttempts","notifyForSocketState","debug","initiateSocket","retries","onerror","seen","WeakSet","replacer","has","notifyStatusChanged","onclose","code","onopen","identity","onmessage","wsRequest","nanoid","PromisePlus","domainSession","successMessages","errorMessages","_latestOptions","isJoined","tryReconnecting","_connectionOn","disconnected","loggedIn","on","handleSuccessMessage","handleErrorMessage","sm","requestsMap","destination","wasReconnect","handleJoined","requestId","request_id","entry","getNextRequestId","queuedCalls","unsubscribe","qm","skipPeerId","successMsg","_tag","errorMsg","onLeft","connected","order","Logger$1","Logger","subLoggers","_consoleLevel","_publishLevel","loggerFullName","includeTimeAndLevel","logFn","customLogFn","existingSub","publishLevel","level","consoleLevel","log","publishMessage","canPublish","compareWith","loggerName","split","Interop","InteropMethodName","prefix","date","getHours","getMinutes","getSeconds","getMilliseconds","toPrint","GW_MESSAGE_CREATE_CONTEXT","GW_MESSAGE_ACTIVITY_CREATED","GW_MESSAGE_ACTIVITY_DESTROYED","GW_MESSAGE_CONTEXT_CREATED","GW_MESSAGE_CONTEXT_ADDED","GW_MESSAGE_SUBSCRIBE_CONTEXT","GW_MESSAGE_SUBSCRIBED_CONTEXT","GW_MESSAGE_UNSUBSCRIBE_CONTEXT","GW_MESSAGE_DESTROY_CONTEXT","GW_MESSAGE_CONTEXT_DESTROYED","GW_MESSAGE_UPDATE_CONTEXT","GW_MESSAGE_CONTEXT_UPDATED","GW_MESSAGE_JOINED_ACTIVITY","ContextMessageReplaySpec","types","GW3ContextData$1","contextId","isAnnounced","joinedActivity","updateCallbacks","activityId","sentExplicitSubscription","hasReceivedSnapshot","hasCallbacks","lodash_clonedeep","exports","module","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","boolTag","dateTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reFlags","reIsHostCtor","reIsUint","cloneableTags","freeGlobal","freeSelf","Function","freeExports","nodeType","freeModule","moduleExports","addMapEntry","pair","addSetEntry","arrayReduce","iteratee","accumulator","initAccum","isHostObject","mapToArray","overArg","func","transform","arg","setToArray","uid","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","exec","IE_PROTO","funcToString","objectToString","reIsNative","RegExp","replace","Buffer","Symbol","getPrototype","getPrototypeOf","objectCreate","create","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeKeys","DataView","getNative","Map","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","Hash","ListCache","MapCache","Stack","__data__","arrayLikeKeys","inherited","isObjectLike","isArrayLike","isArrayLikeObject","isArguments","baseTimes","String","skipIndexes","isIndex","assignValue","objValue","eq","assocIndexOf","baseClone","isDeep","isFull","customizer","isObject","isArr","initCloneArray","source","copyArray","getTag","isFunc","buffer","copy","cloneBuffer","isPrototype","proto","initCloneObject","copyObject","getSymbols","copySymbols","baseAssign","cloneFunc","Ctor","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","typedArray","cloneTypedArray","cloneMap","regexp","lastIndex","cloneRegExp","cloneSet","symbol","initCloneByTag","stacked","props","keysFunc","symbolsFunc","offset","arrayPush","baseGetAllKeys","getAllKeys","arrayEach","subValue","baseIsNative","isFunction","arrayBuffer","getMapData","isKeyable","getValue","pop","hash","cache","pairs","LARGE_ARRAY_SIZE","ArrayBuffer","ctorString","isLength","baseKeys","cloneDeep","applyContextDelta","delta","reset","deepClone","commands","deletePath","setValueToPath","added","updated","removed","mergeObjectsProperties","what","withWhat","right","deepEqual","y","pathArr","isSubset","superObj","subObj","every","ele","promisify","successCallback","errorCallback","rejectAfter","ms","clearTimeoutIfThere","InvokeStatus","ServerSubscription$1","repoMethod","subscription","stream","branchKey","closeSingleSubscription","pushDataToSingle","ServerBranch$1","subscriptions","getSubscriptionList","ServerSubscription","closeAllSubscriptions","pushData","InstanceWrapper$1","wrapped","API","getMethods","methodsForInstance","getStreams","supportsStreaming","refreshWrappedObject","refresh","unwrap","resolvedIdentity","user","pid","Math","floor","random","machine","environment","region","isLocal","hideMethodSystemFlags","flags","SUBSCRIPTION_REQUEST","SUBSCRIPTION_ADDED","SUBSCRIPTION_REMOVED","STATUS_AWAITING_ACCEPT","STATUS_SUBSCRIBED","ERR_MSG_SUB_FAILED","ON_CLOSE_MSG_CLIENT_INIT","gW3ProtocolFactory","clientRepository","serverRepository","libConfig","readyPromise","streaming","repository","ERR_URI_SUBSCRIPTION_FAILED","nextStreamId","handleAddInterest","handleRemoveInterest","acceptRequestOnBranch","requestContext","streamingMethod","branch","protocolState","subscriptionsMap","TypeError","branchKeyToStreamIdMap","streamId","getStreamId","subscription_id","subscribeMsg","stream_id","rejectRequest","sendSubscriptionFailed","branches","streamIdList","postMessage","dropSubscriptionMessage","closeMultipleSubscriptions","subscriptionsToClose","drop","allSubscriptions","getBranchList","onSubAdded","onSubscriptionLifetimeEvent","onSubRequest","onSubRemoved","getById","method_id","handlerFunc","getNextStreamId","getServerById","caller_id","arguments_kv","subscriptionId","reason_uri","needleBranch","handleInvokeMessage","createStream","isStreaming","methodDef","registerMsg","repoId","display_name","object_types","objectTypes","input_signature","accepts","result_signature","returns","methodId","onInvoked","methodInvocationResult","invocationId","invocation_id","getList","invocationArgs","client","handlePeerAdded","handlePeerRemoved","handleMethodsAddedMessage","handleMethodsRemovedMessage","subscriptionsList","timedCache","timeoutIds","timeoutId","elementIdx","ELEMENT_TTL_MS","flush","elements","clearInterval","subscriptionIdToLocalKeyMap","nextSubLocalKey","handleSubscribed","handleEventData","handleSubscriptionCancelled","params","targetServers","called_with","subLocalKey","getNextSubscriptionLocalKey","pendingSub","registerSubscription","methodResponseTimeout","serverId","trackedServers","server_id","gatewayId","handleErrorSubscribing","drainSubscriptions","drainSubscriptionsCache","subsInfo","localKey","onClosed","onConnected","queued","closers","closeSubscription","callOnClosedHandlers","errorResponse","callArgs","acceptingServer","isFirstResponse","setNewSubscription","subscriptionData","requestArguments","serverInstance","dataCallback","dataItem","closedCallback","onFailed","newSub","trackedServersFound","isPrivateData","oob","sendingServerId","receivedStreamData","private","onDataHandlers","queuedData","expectedNewLength","closersCount","closingServerId","closingServer","handleResultMessage","handleInvocationError","newPeerId","new_peer_id","remoteId","local","Number","serverInfo","isNaN","addServer","removedPeerId","removed_id","removeServerById","addServerMethod","methodIdList","methodKey","removeServerMethod","Success","methodInfo","reconnectionPromises","existingSubscriptions","registeredMethods","streamCallbacks","theFunction","userCallback","userCallbackAsync","handleReconnect","setLibReAnnounced","IOConnectCoreFactory","userConfig","ext","iodesktop","preloadPromise","gdPreloadPromise","glueInitTimer","internalConfig","nodeStartingContext","startingContextString","env","_GD_STARTING_CONTEXT_","glue42electron","applicationConfig","gwConfig","protocolVersion","sharedWorker","inproc","gwURL","uniqueAppName","appInstanceId","replaySpecs","getConnection","windowAsAny","containerApplication","htmlContainer","containerName","bus","auth","token","gwToken","gatewayToken","username","password","defaultLevel","gdConsoleLevel","consoleLogLevel","publish","getLogger","reAnnounceKnownContexts","libs","customLogger","prepareConfig","_connection","_interop","_logger","_contexts","_bus","_allowTrace","registerLib","inner","done","initTime","initEndTime","initStartTime","ready","setupMetrics","initTimer","metricsPublishingEnabledFunc","getMetricsPublishingEnabled","setupInterop","agmConfig","unwrappedInstance","protocolPromise","waitTimeoutMs","InstanceWrapper","myServer","methodsCount","wrapper","serverEntry","identifier","createMethodIdentifier","that","methodDefinition","getServersByMethod","clientMethodDefinition","extractMethodsFromServers","hideServerMethodSystemFlags","onServerAdded","unsubscribeFunc","serversWithMethodsToReplay","returnUnsubWithDelayedReplay","onMethodAdded","methodsToReplay","onServerMethodAdded","unsubCalled","onMethodRemoved","onServerRemoved","onServerMethodRemoved","allServers","collectionToReplay","item","clientMethods","nextId","callProtocolSubscribe","successProxy","errorProxy","method_response_timeout","wait_for_method_timeout","delayTillNow","currentServers","getServerMethodsByFilterAndTarget","retry","streamInfo","methodFilter","filterCopy","serverMethodMap","getMethodsForInstance","methodAdded","methodRemoved","serverAdded","serverRemoved","serverMethodRemoved","argumentObj","additionalOptions","serversMethodMap","tryToAwaitForMethods","errorObj","executed_by","additionalOptionsCopy","invokePromises","serversMethodPair","invId","invokePromise","race","invocationMessages","getInvocationResultObj","getInvokePromise","invocationResults","calledWith","invokeMessage","allValues","currentValue","allErrors","currError","invResult","interval","filterByTarget","targetArray","matches","myMatches","serverMethodPair","instanceMatch","localMachine","instanceFilter","instanceDefinition","containsProps","methodMatch","prop","isMatch","filterValue","repoMethodValue","filterValueEl","matchingServers","resultMethodsObject","prev","matchingMethods","invocations","currentlyUnregistering","rc","rm","handleSubRequest","handleSubAdded","handleSubRemoved","subscriptionRequestHandler","accept","acceptOnBranch","subscriptionAddedHandler","subscriptionRemovedHandler","onMethodInvoked","streamDef","existingStream","streamMethodDefinition","serverMethod","streamUserObject","updateRepoMethod","_protocol","_repoMethod","_server","bList","ServerBranch","def2","wrappedCallbackFunction","resultCallback","registerCore","wrappedCallback","resultCalled","methodResult","forStream","unregisterWithPredicate","methodToBeRemoved","removeMethodsOrStreams","filterPredicate","methodsOrStreamsToRemove","methodsToRemove","methodUnregPromises","addAsCurrentlyUnregistering","unregisterInProgress","methodToExecute","unStrException","_value","waitForMethod","setupContexts","hasActivities","activities","_trackAllContexts","_reAnnounceKnownContexts","_gw3Session","_contextNameToData","_gw3Subscriptions","_nextCallbackSubscriptionNumber","_creationPromises","_contextNameToId","_contextIdToName","_protocolVersion","_contextsTempCache","_contextsSubscriptionsCache","_systemContextsSubKey","contextsDomainInfo","availableDomains","d","uri","setPathSupported","trackAllContexts","resetState","reInitiateState","subscribeToContextCreatedMessages","subscribeToContextUpdatedMessages","subscribeToContextDestroyedMessages","replayer","drain","handleContextCreatedMessage","handleContextUpdatedMessage","handleContextDestroyedMessage","dispose","off","contextName","createContext","lifetime","createContextMsg","context_id","contextData","GW3ContextData","currentContext","calculatedDelta","calculateContextDeltaV2","calculateContextDeltaV1","gwResponse","handleUpdated","updaterId","setPath","setPaths","pathValues","pathValue","_d","_r","un","subscriptionKey","thisCallbackSubscriptionNumber","subKey","hadCallbacks","clone","sendSubscribe","sendUnsubscribe","destroy","extraData","oldContext","invokeUpdateCallbacks","createdMessageTypes","createdMessageType","contextCreatedMsg","activity_id","updatedMessageTypes","updatedMessageType","contextUpdatedMsg","justSeen","context_snapshot","updater_id","updateCallbackIndex","updateCallback","parseInt","destroyedMessageTypes","destroyedMessageType","destroyedMsg","from","to","cacheSoFar","ctxName","flushQueue","lastKnownData","checkName","checkData","checkPath","setupBus","watchOnEvent","topic","routingKey","removeEmptyValues","routing_key","target_identity","keysMatch","cleaned","obj1","obj2","keysObj1","allMatch","setupExternalLibs","externalLibs","lib","createCallback","setupExternalLib","messageHandlers","ids","_connected","isTrace","_defaultTransport","_defaultAuth","_targetTransport","_targetAuth","_swapTransport","_switchInProgress","_transportSubscriptions","datePrefix","datePrefixLen","dateMinLen","datePrefixFirstChar","_sequelizer","minSequenceInterval","queue","isExecutingQueue","enqueue","executeQueue","shift","actionResult","intervalBreak","_isLoggedIn","shouldTryLogin","pingTimer","sessions","globalDomain","initialLogin","initialLoginAttempts","loginConfig","gw","facade","connect","_client","messageHandler","isObjectBasedTransport","sendObject","_msg","worker","workerFile","SharedWorker","port","isPreferredActivated","_communicationId","selfAssignedWindowId","iAmConnected","parentReady","parentPingResolve","parentPingInterval","connectionResolve","extConnectionResolve","extConnectionReject","connectionReject","myClientId","extContentAvailable","extContentConnecting","extContentConnected","parentWindowId","parentInExtMode","webNamespace","parentType","parentPingTimeout","connectionRequestTimeout","defaultTargetString","messages","connectionAccepted","handleConnectionAccepted","connectionRejected","handleConnectionRejected","connectionRequest","handleConnectionRequest","parentPing","handleParentPing","platformPing","handlePlatformPing","platformReady","handlePlatformReady","clientUnload","handleClientUnload","manualUnload","handleManualUnload","extConnectionResponse","handleExtConnectionResponse","extSetupRequest","handleExtSetupRequest","gatewayDisconnect","handleGatewayDisconnect","gatewayInternalConnect","handleGatewayInternalConnect","glue42ext","setUpMessageListener","setUpUnload","setupPlatformUnloadListener","manualSetReadyState","transportWindowId","glue42ExtOut","clientId","ownWindowId","initiateInternalConnection","initiateRemoteConnection","bridgeInstanceId","getMyWindowId","clientType","isParentCheckSuccess","parentCheck","allowedOrigins","origin","checkMessageTypeValid","messageType","handleAcceptanceOfMyRequest","handleAcceptanceOfGrandChildRequest","processExtContentConnection","extData","glue42ExtInc","child","c","grandChildId","rejectConnectionRequest","extMode","typeToValidate","rejection","requestConnectionPermissionFromExt","waitForContentScript","approved","content","findParent","connectionNotPossibleMsg","myInsideParents","getPossibleParentsInWindow","myOutsideParents","getPossibleParentsOutsideWindow","opener","uniqueParents","confirmParent","currentWindow","targets","substring","WS","unsubConnectionChanged","handleConnectionChanged","unsubOnMessage","handleTransportMessage","ping","switchTransport","switchTargetTransport","getNewSecondaryTransport","getNewSecondaryAuth","verifyPromise","verifyConnection","isSwitchSuccess","onLibReAnnounced","createObjectMessage","strMessage","createStringMessage","isConnected","currentServer","login","authRequest","transportSwap","loginCore","prepareDefaultSwap","logout","logoutCore","authToken","setLoggedIn","distributeMessage","handlerId","loggerError","specs","specsNames","isDone","subs","subsRefCount","spec","refCount","processMessage","handleDisconnected","msgObj","processStringMessage","processObjectMessage","msgType","waitForInvocations","transportConfig","startsWith","milliseconds","ex","oldToJson","authentication","setupAuthConfig","helloMsg","sessionId","sendOptions","maxRetries","welcomeMsg","tryAuthenticate","resolved_identity","available_domains","access_token","flowCallback","getNewGWToken","flowName","provider","secret","providerContext","promises","getGWToken","authPromise","authConfig","RegisterInstanceMethodName","typedError","registerInstanceIfNeeded","libsReadyPromises","coreVersion","feedback","feedbackInfo","glueVer","glueConfig","browser","timing","initTimes","duration","extOptions","enrichGlue","updatePerfData","deprecatedDecorator","fn","wrong","proper","agmAny","method_added","method_removed","server_added","server_method_aded","server_method_removed","IOConnectCore","iOConnectBrowserFactory","coreFactoryFunction","enterpriseConfig","systemLogger","IODesktop","Glue","enterprise","_coreGlue","_publicWindowId","_webConfig","_windowsControllerInstance","_appManagerControllerInstance","_layoutsControllerInstance","_notificationsControllerInstance","_intentsControllerInstance","_legacyIntentsHelperInstance","_channelsControllerInstance","_themesControllerInstance","_extensionController","_systemControllerInstance","_bridgeInstance","_eventsDispatcher","_preferredConnectionController","_sessionController","_prefsControllerInstance","layoutsController","notificationsController","intentsController","systemController","extension","extensionController","themesController","prefsController","focusEventHandler","allWindowProjections","addWindowOperationExecutors","initializeFocusTracking","windowSuccess","waitForWindowAdded","projection","findById","onWindowAdded","onWindowRemoved","onWindowGotFocus","onWindowLostFocus","handleFocusChangeEvent","handleWindowAdded","handleWindowRemoved","handleGetBounds","handleGetTitle","handleGetUrl","handleMoveResize","handleSetTitle","handleGetChannel","sayHello","myWindow","w","myProjection","buildWebWindow","currentWindows","focusData","foundProjection","model","keyToExecute","webWindowProjection","screenTop","screenLeft","innerWidth","innerHeight","targetTop","targetLeft","targetHeight","targetWidth","moveMethod","moveBy","resizeMethod","resizeBy","transmitFocusChange","defineEventListeners","processFocusEvent","foundWindow","addedWindow","eventData","defaultLayoutRestoreTimeoutMS","saveRequestSubscription","onAdded","onRemoved","onSaveRequested","subscribeOnSaveRequested","getMultiScreenPermissionState","requestMultiScreenPermission","getGlobalTypeState","onRenamed","handleOnAdded","handleOnChanged","handleOnRemoved","handleOnRenamed","handleSaveRequest","layoutsToImport","validLayout","invocationTimeout","onSaveRequestResponse","currentState","amIWorkspaceFrame","iobrowser","isPlatformFrame","activated","themesSubscription","activeThemeSubs","subReady","configureThemeSubscription","unsubFunc","themeUnsub","validation","themeChanged","registryUnsub","notificationsSettings","buildNotificationFunc","buildNotification","addOperationExecutors","onRaised","getFilter","setFilter","onConfigurationChanged","onActiveCountChanged","onStateChanged","raiseResult","verifiedConfig","verifiedFilter","handleNotificationShow","handleNotificationClick","handleNotificationRaised","handleNotificationClosed","handleConfigurationChanged","handleActiveCountChanged","handleNotificationStateChanged","onshow","defaultClick","actionClicks","actionDef","onclick","legacyIntentsController","myIntents","useIntentsResolverUI","intentsResolverAppName","intentResolverResponseTimeout","unregisterIntentPromises","legacyIntentsHelper","checkIfIntentsResolverIsEnabled","addIntentListener","validatedIntentRequest","getResolverConfigByRequest","isRaiseOperationSupported","supported","handlerFilter","registerPromise","buildInteropMethodName","delete","intentFlag","_initialCallerId","caller","unsubscribeIntent","intentFilter","intentFilterObj","enableIntentsResolverUI","clearUnregistrationPromise","promiseToRemove","unregisterPromise","checkIfAtLeastOneFilterIsPresent","filterHandlersRequestWithResolverConfig","existingValidContextTypes","existingValidApplicationNames","setEnvironment","processPlatformShutdown","preferredConnectionController","base","globalNamespace","globalNamespaceName","globalObj","currentChannelName","GlueWebChannelsPrefix","SubsKey","ChangedKey","handleGetMyChannel","handleJoinChannel","getAllChannelNames","channelName","switchToChannel","changed","subscribeFor","getMy","getWindowsOnChannel","getWindowsWithChannels","createContextName","channelContextName","__","___","setWindowData","updateData","fdc3Type","getFDC3Type","fdc3PropsArr","getWrappedCallbackWithPermissionCheck","replaySubscribe","isAllowedByRestrictions","channelContext","latest_fdc3_type","windowsWithChannels","sessionStorageData","prevReadAllowed","checkPreviousReadAllowed","replaySubscribeCallback","getMyRestrictions","allChannelNames","allRestrictions","restriction","prevRestrictions","platformAppName","prefsHelloSuccess","clearFor","setFor","updateFor","getMyAppName","verifiedApp","verifiedData","getSubscriptionKey","myAppName","isPlatformInternal","transactionTimeout","transactionLocks","webPlatformTransport","webPlatformMessagesUnsubscribe","reconnectCounter","coreConfig","handleWebPlatformMessage","transportState","getCurrentPlatformTransportState","checkSwitchTransport","isConnectedToPlatform","transactionId","handleTransportSwitchRequest","handleGetCurrentTransportResponse","handleCheckPreferredLogic","handleCheckPreferredConnection","handlePlatformUnload","reEstablishPlatformPort","myCurrentTransportName","transportName","setConnected","transaction","setTransaction","sendPlatformMessage","lock","transactionLock","transactionLive","lift","switchSettings","checkPreferredConnection","live","sessionStorage","allNamespaces","windowNamespace","getItem","setItem","allData","defineGlue","defineConfig","applicationInstances","combined","parseConfig","ioConnectBrowserNamespace","webStarted","checkSingleton","promiseActive","PromiseWrap","windowAny","IOBrowser","GlueCore","legacyGlobal","ioGlobal","GlueWorkspaceFrameClientControlName","GlueWebIntentsPrefix","defaultPlatformConfig","windowResponseTimeoutMs","defaultWindowOpenBounds","plugins","licenseKey","logging","defaultTheme","workspacesFrameCache","defaultNotificationsConfig","clearNotificationOnClick","defaultClientPortRequestTimeoutMS","atob","o","charAt","fromCharCode","decodeURIComponent","charCodeAt","toUpperCase","header","FormData","thisArg","kindOf","thing","str","kindOfTest","typeOfTest","isUndefined","isArrayBuffer","isString","isNumber","isPlainObject","val","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","allOwnKeys","l","getOwnPropertyNames","len","findKey","_key","_global","isContextDefined","isTypedArray","TypedArray","isHTMLForm","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","ret","defineProperties","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","utils$1","isFormData","append","isArrayBufferView","isView","isBoolean","isStream","pipe","merge","caseless","targetKey","extend","trim","stripBOM","inherits","superConstructor","defineProperty","toFlatObject","sourceObj","destObj","propFilter","endsWith","searchString","position","toArray","forEachEntry","next","matchAll","regExp","hasOwnProp","freezeMethods","enumerable","writable","toObjectSet","arrayOrString","delimiter","define","toCamelCase","p1","p2","noop","toFiniteNumber","isFinite","generateString","alphabet","isSpecCompliantForm","toJSONObject","visit","reducedValue","isThenable","AxiosError","captureStackTrace","fileName","lineNumber","columnNumber","prototype$1","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","dots","predicates","toFormData","formData","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","isFlatArray","el","exposedHelpers","build","encode$1","charMap","encodeURIComponent","AxiosURLSearchParams","_pairs","encode","buildURL","_encode","serializeFn","serialize","serializedParams","hashmarkIndex","encoder","InterceptorManager$1","use","fulfilled","synchronous","runWhen","eject","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","platform$1","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","__proto__","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","defaults","transitional","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","helpers","toURLEncodedForm","formSerializer","_FormData","rawValue","parser","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","Accept","defaults$1","ignoreDuplicateOf","$internals","normalizeHeader","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","parseHeaders","tokens","tokensRE","parseTokens","matcher","deleted","deleteHeader","normalize","format","normalized","char","formatHeader","asStrings","first","computed","accessor","accessors","defineAccessor","accessorName","arg1","arg2","arg3","configurable","buildAccessors","mapped","headerValue","AxiosHeaders$1","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","ERR_BAD_REQUEST","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","samplesCount","min","timestamps","firstSampleTS","head","tail","chunkLength","startedAt","bytesCount","passed","round","speedometer","threshold","force","throttle","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","isURLSameOrigin","msie","urlParsingNode","createElement","originURL","resolveURL","setAttribute","host","search","hostname","pathname","requestURL","cookies","expires","secure","cookie","toGMTString","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","resolveConfig","newConfig","btoa","unescape","xsrfValue","xhrAdapter","XMLHttpRequest","_config","requestData","requestHeaders","onCanceled","signal","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","onreadystatechange","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","setRequestHeader","upload","cancel","abort","aborted","parseProtocol","composeSignals$1","signals","AbortController","streamChunk","chunk","chunkSize","end","pos","trackStream","onProgress","onFinish","iterable","readBytes","ReadableStream","pull","return","highWaterMark","fetchProgressDecorator","isFetchSupported","fetch","Request","Response","isReadableStreamSupported","encodeText","TextEncoder","supportsRequestStream","duplexAccessed","hasContentType","duplex","supportsResponseStream","resolvers","ERR_NOT_SUPPORT","resolveBodyLength","getContentLength","getBodyLength","fetchAdapter","fetchOptions","finished","composedSignal","stopTimeout","requestContentLength","contentTypeHeader","_request","isStreamResponse","responseContentLength","responseData","knownAdapters","http","xhr","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","VERSION","validators$1","deprecatedWarnings","validator","formatMessage","opt","desc","opts","ERR_DEPRECATED","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","validators","Axios","instanceConfig","interceptors","configOrUrl","dummy","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","responseInterceptorChain","chain","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","Axios$1","CancelToken","resolvePromise","_listeners","onfulfilled","_resolve","CancelToken$1","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","HttpStatusCode$1","axios","createInstance","Cancel","spread","isAxiosError","formToJSON","getAdapter","axios_1","__awaiter","_arguments","P","generator","step","__importDefault","mod","BaseAPI","require$$0","setOptions","_b","currentInterceptorsId","axiosInstance","getHeaders","baseUrl","basic","includeCredentials","intercept","whoAmI","onResponseSuccessCallback","responseSuccessCallback","onResponseErrorCallback","responseErrorCallback","unloadClient","tokenString","authorizationValue","bearer","Headers","Authorization","keepalive","headerName","_c","interceptId","systemConfig","SystemConfigAPI","getExactEntry","post","exact","getComputed","addOrReplace","removeConfigForIdentifier","delayForever","ClientAPI","jwt_decode_1","form_data_1","require$$1","base_1","require$$2","systemConfig_1","require$$3","promise_1","require$$4","customRequest","req","unload","sessionToken","sessionTokenString","refreshData","getApps","getLayouts","saveLayout","deleteUserLayout","deleteAllUserLayouts","renameLayout","getDefaultLayout","setDefaultLayout","openSession","updateToken","closeSession","refreshToken","getCommands","setCommandResult","commandId","setCommandFileResult","contentsBase64","contents","getPrefs","latestKnown","getAllPrefs","setPrefs","deletePrefs","deleteAllPrefs","addFeedback","rs","withRequest","extraHeaders","fullUrl","URL","resp","statusCode","client_1","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","enumerize","enums","str1","str2","lowerize","rgxMapper","ua","arrays","j","q","regex","strMapper","windowsVersionMap","ME","XP","Vista","RT","regexes","cpu","device","engine","EDGE","os","UAParser","extensions","getResult","_navigator","_ua","_uach","userAgentData","_rgxmap","mergedRegexes","_isSelfNav","getBrowser","_browser","majorize","brave","isBrave","getCPU","_cpu","getDevice","_device","mobile","standalone","maxTouchPoints","getEngine","_engine","getOS","_os","getUA","setUA","CPU","DEVICE","ENGINE","OS","$","jQuery","Zepto","NOTHING","for","DRAFTABLE","DRAFT_STATE","die","isDraft","isDraftable","isMap","isSet","objectCtorString","each","iter","getArchtype","Reflect","ownKeys","type_","propOrOldValue","latest","copy_","base_","shallowCopy","strict","isPlain","deep","isFrozen","dontMutateFrozenCollections","currentScope","getPlugin","pluginKey","plugin","getCurrentScope","usePatchesInScope","scope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","drafts_","revokeDraft","parent_","enterScope","immer2","immer_","canAutoFreeze_","unfinalizedDrafts_","draft","revoke_","revoked_","processResult","baseDraft","modified_","finalize","maybeFreeze","generateReplacementPatches_","rootScope","childValue","finalizeProperty","scope_","finalized_","resultEach","isSet2","generatePatches_","parentState","targetObject","rootPath","targetIsSet","assigned_","autoFreeze_","objectTraps","getDescriptorFromProto","draft_","readPropFromProto","peek","prepareCopy","createProxy","current2","is","markChanged","deleteProperty","getOwnPropertyDescriptor","owner","setPrototypeOf","arrayTraps","useStrictShallowCopy_","proxyMap_","proxySet_","isManual_","traps","revoke","proxy","Proxy","revocable","createProxyProxy","currentImpl","immer","produce","recipe","defaultBase","base2","hasError","ip","produceWithPatches","patches","inversePatches","autoFreeze","setAutoFreeze","useStrictShallowCopy","setUseStrictShallowCopy","createDraft","finishDraft","applyPatches","patch","op","applyPatchesImpl","applyPatches_","CryptoJS","g","Base","mixIn","$super","WordArray","words","sigBytes","clamp","ceil","enc","Hex","substr","Latin1","Utf8","escape","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","blockSize","u","max","_minBufferSize","_doProcessBlock","Hasher","cfg","_doReset","_doFinalize","_createHelper","_createHmacHelper","HMAC","algo","x64","Word","high","low","toX32","Cipher","Base64","EvpKDF","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","_xformMode","keySize","ivSize","encrypt","decrypt","StreamCipher","_iv","_prevBlock","BlockCipherMode","Encryptor","Decryptor","_cipher","processBlock","encryptBlock","decryptBlock","CBC","pad","Pkcs7","unpad","BlockCipher","padding","iv","_mode","CipherParams","formatter","OpenSSL","ciphertext","salt","SerializableCipher","algorithm","_parse","kdf","compute","PasswordBasedCipher","z","A","B","C","D","E","F","AES","_nRounds","_keySchedule","_invKeySchedule","_doCryptBlock","_lBlock","_rBlock","DES","_subKeys","_invSubKeys","TripleDES","_des1","_des2","_des3","_map","abs","sin","MD5","_hash","HmacMD5","SHA1","HmacSHA1","sqrt","pow","SHA256","HmacSHA256","SHA224","HmacSHA224","T","ea","SHA512","G","H","I","J","X","K","Y","L","Z","M","N","aa","O","ba","ca","Q","U","R","S","V","W","fa","da","HmacSHA512","SHA384","HmacSHA384","RIPEMD160","HmacRIPEMD160","_hasher","_oKey","_iKey","PBKDF2","hasher","iterations","dbits","b64map","b64pad","hex2b64","b64tohex","int2char","BigInteger","fromNumber","fromString","nbi","am","DB","DM","DV","FV","F1","F2","rr","vv","BI_RM","BI_RC","intAt","nbv","fromInt","nbits","Classic","Montgomery","mp","invDigit","mpl","mph","um","mt2","op_and","op_or","op_xor","op_andnot","lbit","cbit","NullExp","nNop","Barrett","r2","q3","ONE","dlShiftTo","mu","divide","convert","compareTo","revert","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","ZERO","subTo","copyTo","drShiftTo","fromRadix","lShiftTo","rShiftTo","isEven","exp","negate","toRadix","bitLength","modPowInt","multiplyUpperTo","multiplyLowerTo","dAddOffset","lowprimes","lplim","Arcfour","LN2","signum","intValue","dMultiply","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","changeBit","addTo","modInt","millerRabin","subtract","getLowestSetBit","shiftRight","modPow","byteValue","shortValue","toByteArray","equals","and","or","xor","andNot","not","bitCount","setBit","clearBit","flipBit","multiply","remainder","divideAndRemainder","modInverse","gcd","square","rng_state","rng_pool","rng_pptr","rng_psize","rng_seed_time","msCrypto","appVersion","rng_get_byte","SecureRandom","parseBigInt","RSAKey","dmp1","dmq1","coeff","ECFieldElementFp","ECPointFp","curve","zinv","ECCurveFp","fromBigInteger","infinity","doPublic","setPublic","isPublic","isPrivate","doPrivate","setPrivate","setPrivateEx","generate","toBigInteger","getX","getY","isInfinity","twice","getInfinity","multiplyTwo","getQ","getA","getB","decodePointHex","getByteLength","getEncoded","toByteArrayUnsigned","decodeFrom","decodeFromHex","add2D","twice2D","multiply2D","isOnCurve","validate","jsonParse","KJUR","asn1","ASN1Util","integerToByteHex","bigIntToMinTwosComplementsHex","twoscompl","getPEMStringFromHex","hextopem","newObject","ASN1Object","DERBoolean","DERInteger","DERBitString","DEROctetString","DERNull","DERObjectIdentifier","DEREnumerated","DERUTF8String","DERNumericString","DERPrintableString","DERTeletexString","DERIA5String","DERUTCTime","DERGeneralizedTime","DERVisibleString","DERBMPString","DERSequence","DERSet","DERTaggedObject","explicit","jsonToASN1HEX","tohex","oidHexToInt","oidIntToHex","getLengthHexFromValue","hV","hTLV","isModified","getFreshValueHex","hL","hT","getEncodedHex","getValueHex","setByParam","tlv","DERAbstractString","superclass","getString","setString","utf8tohex","setStringHex","hex","extendClass","DERAbstractTime","localDateToUTC","getTimezoneOffset","formatDate","zeroPadding","getFullYear","getMonth","getDate","setByDate","setByDateValue","UTC","DERAbstractStructured","setByASN1ObjectArray","asn1Array","appendASN1Object","setByBigInteger","bigint","setByInteger","setValueHex","setHexValueIncludingUnusedBits","setUnusedBitsAndHexValue","setByBinaryString","setByBooleanArray","newFalseArray","bin","setValueOidString","oidtohex","setValueName","x509","OID","name2oid","setValueNameOrOid","oid","stohex","millis","sortFlag","sortflag","ASN1HEX","getV","isASN1HEX","isExplicit","asn1Object","setASN1Object","tage","tagi","utf8tob64u","b64utoutf8","BAtohex","stoBA","b64tob64u","b64utob64","hextob64u","b64utohex","uricmptohex","encodeURIComponentAll","hextoutf8","hextouricmp","iso88591hextoutf8","iso88591hextoutf8hex","hextorstr","rstrtohex","foldnl","hextob64","pemtohex","b64nltohex","zulutosec","timetogen","zulutomsec","ipv6tohex","repeat","hextoipv6","hextoip","ipprefixlen","iptohex","ipnetmask","ucs2hextoutf8","ishex","isBase64URLDot","hextoposhex","hextooid","strpad","inttohex","getLblen","getL","getVblen","getVidx","getTLV","getTLVblen","getNextSiblingIdx","getChildIdx","getNthChildIdx","getIdxbyList","getIdxbyListEx","isContextTag","getTLVbyList","getTLVbyListEx","getVbyList","getVbyListEx","getInt","NaN","bitstrtoint","getOID","getOIDName","oid2name","hextooidstr","dump","ommit_long_octet","oidname","x509ExtName","bool","int","bitstr","bitstrtobinstr","octstr","null","enum","checkStrictDER","isHex","Certificate","TBSCertificate","AlgorithmIdentifier","sign","sigalg","tbsobj","Signature","alg","cakey","updateHex","sighex","getPEM","Time","X500Name","Extensions","SubjectPublicKeyInfo","serial","issuer","notbefore","notafter","subject","KEYUTIL","getKey","sbjpubkey","aParam","extname","extn","PrivateExtension","SubjectKeyIdentifier","KeyUsage","SubjectAltName","IssuerAltName","BasicConstraints","NameConstraints","CRLDistributionPoints","CertificatePolicies","PolicyMappings","PolicyConstraints","InhibitAnyPolicy","AuthorityKeyIdentifier","ExtKeyUsage","AuthorityInfoAccess","CRLNumber","CRLReason","OCSPNonce","OCSPNoCheck","AdobeTimeStamp","SubjectDirectoryAttributes","Extension","getExtnValueHex","critical","digitalSignature","nonRepudiation","keyEncipherment","dataEncipherment","keyAgreement","keyCertSign","cRLSign","encipherOnly","decipherOnly","getBinValue","asn1ExtnValue","names","namearraytobinstr","cA","pathLen","setByDPArray","DistributionPoint","setByOneURI","fulluri","DistributionPointName","asn1DP","dpobj","dpname","full","asn1Obj","asn1V","GeneralNames","isPrototypeOf","PolicyInformation","PolicyQualifierInfo","policyoid","UserNotice","cps","unotice","DisplayText","NoticeReference","noticeref","exptext","org","noticenum","seq","reqexp","inhibit","skip","GeneralSubtree","permit","exclude","GeneralName","setPurposeArray","Util","isKey","asn1KID","asn1CertIssuer","asn1CertSN","dn","setKIDByParam","getKeyID","setCertIssuerByParam","ldapstr","certsubject","certissuer","setCertSNByParam","X509","readCertPEM","getSerialNumberHex","kid","sn","issuersn","setAccessDescriptionArray","ocsp","caissuer","setNameArray","attr","utf8str","gentime","prnstr","CRL","TBSCertList","getRevCertSequence","revcert","thisupdate","nextupdate","CRLEntry","setCertSerial","setRevocationDate","TLV","reqauth","paramArray","sRule","RDN","setByString","rule","setByLdapString","ldapToCompat","setByObject","getIssuerHex","getSubjectHex","compatToLDAP","reverse","onelineToLDAP","ldapToOneline","AttributeTypeAndValue","addByMultiValuedString","addByString","parseString","sType","sValue","dsType","isMail","isPrintable","attrTypeAndValueStr","setByAttrTypeAndValueStr","_getDsType","getValueObj","atype2obj","ECDSA","DSA","getASN1Object","asn1AlgId","asn1SubjPKey","setPubKey","curveName","asn1params","pubKeyHex","setTimeParams","timeParams","getType","Time_bak","nameAlg","asn1Alg","asn1Params","paramEmpty","PSSNAME2ASN1TLV","name2obj","paramempty","SHAwithRSAandMGF1","SHA256withRSAandMGF1","SHA384withRSAandMGF1","SHA512withRSAandMGF1","OtherName","rfc822","dns","ldapdn","certsubj","setByParamArray","name2oidList","sha1","sha256","sha384","sha512","sha224","md5","md2","ripemd160","hmacWithSHA1","hmacWithSHA224","hmacWithSHA256","hmacWithSHA384","hmacWithSHA512","MD2withRSA","MD4withRSA","MD5withRSA","SHA1withRSA","rsaPSS","SHA224withRSA","SHA256withRSA","SHA384withRSA","SHA512withRSA","SHA1withECDSA","SHA224withECDSA","SHA256withECDSA","SHA384withECDSA","SHA512withECDSA","dsa","SHA1withDSA","SHA224withDSA","SHA256withDSA","rsaEncryption","commonName","countryName","localityName","stateOrProvinceName","streetAddress","organizationName","organizationalUnitName","domainComponent","userId","surname","givenName","distinguishedName","emailAddress","businessCategory","postalCode","uniqueIdentifier","organizationIdentifier","jurisdictionOfIncorporationL","jurisdictionOfIncorporationSP","jurisdictionOfIncorporationC","subjectDirectoryAttributes","subjectKeyIdentifier","keyUsage","subjectAltName","issuerAltName","basicConstraints","cRLNumber","cRLReason","nameConstraints","cRLDistributionPoints","certificatePolicies","anyPolicy","policyMappings","authorityKeyIdentifier","policyConstraints","extKeyUsage","inhibitAnyPolicy","authorityInfoAccess","ocspBasic","ocspNonce","ocspNoCheck","caIssuers","anyExtendedKeyUsage","serverAuth","clientAuth","codeSigning","emailProtection","timeStamping","ocspSigning","smtpUTF8Mailbox","dateOfBirth","placeOfBirth","gender","countryOfCitizenship","countryOfResidence","ecPublicKey","secp256r1","secp256k1","secp384r1","secp521r1","pkcs5PBES2","pkcs5PBKDF2","tstinfo","signingCertificate","timeStampToken","signaturePolicyIdentifier","etsArchiveTimeStamp","signingCertificateV2","etsArchiveTimeStampV2","extensionRequest","messageDigest","signingTime","counterSignature","archiveTimeStampV3","pdfRevocationInfoArchival","adobeTimeStamp","smimeMailboxLegacy","smimeMailboxMulti","smimeMailboxStrict","smimeOrganizationLegacy","smimeOrganizationMulti","smimeOrganizationStrict","smimeSponsorLegacy","smimeSponsorMulti","smimeSponsorStrict","smimeIndividualLegacy","smimeIndividualMulti","smimeIndividualStrict","atype2oidList","CN","ST","OU","STREET","DC","UID","SN","GN","DN","serialNumber","objCache","registerOIDs","checkOIDs","oid2atype","X509Util","newCertPEM","cms","Attribute","typeOid","getValueArray","ContentType","MessageDigest","SigningTime","SigningCertificate","ESSCertID","hasis","cert","IssuerSerial","getCertHash","hashHex","SigningCertificateV2","ESSCertIDv2","getIssuer","SignerIdentifier","IssuerAndSerialNumber","IssuerAndSerialName","skid","getExtSubjectKeyIdentifier","AttributeList","cades","SignaturePolicyIdentifier","SignatureTimeStamp","SignerInfo","EncapsulatedContentInfo","SignedData","sattrs","signkey","hashalg","sigalgfield","uattrs","isDetached","ContentInfo","CertificateSet","RevocationInfoChoices","checkAndFixParam","_setDigestAlgs","_setContentTypeByEContent","_setMessageDigestByEContent","_setSignerInfoVersion","_setSignedDataVersion","sinfos","hashalgs","econtent","_getAttrParamByName","_getSignedDataVersion","revinfos","getEncodedHexPrepare","fixed","certs","getContentInfo","getContentInfoEncodedHex","RevocationInfoChoice","crl","OtherRevocationFormat","CMSUtil","newSignedData","verifySignedData","signerid_issuer1","signerid_serial1","idxSignedAttrs","sigval","signedAttrIdxList","saSigningTime","saMessageDigest","verifyDetail","validMessageDigest","certsIdx","certkeys","readCertHex","getPublicKey","cccc","cccci","certkey_idx","validSignatureValue","signedattrshex","verify","validSignatureValue_isValid","isValid","cmsType","revinfosIdx","signerinfosIdx","signerInfos","signerInfoIdxList","CMSParser","getCMSSignedData","getSignedData","getHashAlgArray","getEContent","getCertificateSet","getSignerInfos","getAlgorithmIdentifierName","getSignerInfo","getIssuerAndSerialNumber","getAttributeList","getSignerIdentifier","getX500Name","valhex","setMessageDigest","setSigningTime","setSigningCertificate","setSigningCertificateV2","setSignaturePolicyIdentifier","getESSCertID","polhex","getESSCertIDv2","getIssuerSerial","getGeneralNames","tsp","TimeStampToken","TSTInfo","MessageImprint","Accuracy","dVersion","dPolicy","dMessageImprint","dSerial","dGenTime","dAccuracy","dOrdering","dNonce","dTsa","policy","messageImprint","genTime","accuracy","ordering","nonce","tsa","seconds","micros","TimeStampReq","certreq","TimeStampResp","PKIStatusInfo","tst","statusinfo","PKIStatus","PKIFreeText","PKIFailureInfo","statusstr","failinfo","granted","grantedWithMods","waiting","revocationWarning","revocationNotification","badAlg","badRequest","badDataFormat","timeNotAvailable","unacceptedPolicy","unacceptedExtension","addInfoNotAvailable","systemFailure","AbstractTSAAdapter","getTSTHex","SimpleTSAAdapter","FixedTSAAdapter","TSPUtil","newTimeStampToken","parseTimeStampReq","TSPParser","getTimeStampReq","parseMessageImprint","getMessageImprint","getResponse","getPKIStatusInfo","getToken","setTSTInfo","getTSTInfo","getAccuracy","pGeneralNames","getExtParamArray","getPKIFreeText","getPKIFailureInfo","SignaturePolicyId","OtherHashAlgAndValue","OtherHashValue","CompleteCertificateRefs","OtherCertID","_isHex","OtherHash","CAdESUtil","parseSignedDataForAddingUnsigned","parseSignerInfoForAddingUnsigned","si","digalg","sig","dCMSVersion","dSignerIdentifier","dDigestAlgorithm","dSignedAttrs","dSigAlg","dSig","dUnsignedAttrs","csr","CertificationRequest","CertificationRequestInfo","sbjprvkey","attrs","extreq","CSRUtil","newCSRPEM","getParam","tbs","verifySignature","alert","DEFAULT_HASH","OCSPResponse","ResponseBytes","_getStatusCode","resstatus","BasicOCSPResponse","restype","ResponderID","_SingleResponseList","SingleResponseList","_ResponseData","ResponseData","tbsresp","reskey","respid","prodat","getSubject","SingleResponse","CertID","CertStatus","certid","setByValue","issname","isskey","sbjsn","setByCert","issuerCert","subjectCert","getParamByCerts","getPublicKeyHex","dReqCert","dExt","TBSRequest","dRequestorName","dRequestList","dRequestExt","setRequestListByParam","reqList","OCSPRequest","dTbsRequest","dOptionalSignature","OCSPUtil","getRequestHex","getOCSPResponseInfo","responseStatus","certStatus","revocationTime","thisUpdate","nextUpdate","OCSPParser","getOCSPRequest","getTBSRequest","getRequestList","getRequest","getCertID","getOCSPResponse","getResponseBytes","getBasicOCSPResponse","getResponseData","getResponderID","getSingleResponseList","getSingleResponse","getCertStatus","isInteger","isBase64","isBase64URL","isIntegerArray","isIA5","aryval","DIGESTINFOHEAD","DEFAULTPROVIDER","hmacmd5","hmacsha1","hmacsha224","hmacsha256","hmacsha384","hmacsha512","hmacripemd160","RIPEMD160withRSA","MD5withECDSA","RIPEMD160withECDSA","MD5withRSAandMGF1","SHA1withRSAandMGF1","SHA224withRSAandMGF1","RIPEMD160withRSAandMGF1","CRYPTOJSMESSAGEDIGESTNAME","getDigestInfoHex","getPaddedDigestInfoHex","hashString","digestString","digestHex","sha256Hex","sha512Hex","prov","SECURERANDOMGEN","getRandomHexOfNbytes","getRandomBigIntegerOfNbytes","getRandomHexOfNbits","getRandomBigIntegerOfNbits","getRandomBigIntegerZeroToMax","getRandomBigIntegerMinToMax","setAlgAndProvider","getCanonicalAlgName","md","updateString","digest","sjcl","codec","toBits","fromBits","algName","provName","getHashLength","HASHLENGTH","Mac","algProv","mac","pass","doFinal","doFinalString","doFinalHex","setPassword","utf8","rstr","b64","b64u","_setAlgNames","mdAlgName","pubkeyAlgName","_zeroPaddingOfSignature","prvKey","pubKey","sHashHex","ecprvhex","eccurvename","prv","hSign","signWithMessageHashPSS","pssSaltLen","signWithMessageHash","signString","signHex","ecpubhex","pub","verifyWithMessageHashPSS","verifyWithMessageHash","algProvName","initParams","psssaltlen","prvkeypem","prvkeypas","encalg","hEnc","oidhex2name","ECParameterDB","getName","getBigRandom","setNamedCurve","ecparams","getByName","prvKeyHex","setPrivateKeyHex","setPublicKeyHex","getPublicKeyXYHex","keycharlen","getShortNISTPCurveName","generateKeyPairHex","generatePublicKeyHex","biRSSigToASN1Sig","fromByteArrayUnsigned","serializeSig","verifyHex","parseSigHex","verifyRaw","Bitcoin","parseSig","toByteArraySigned","parseSigCompact","readPKCS5PrvKeyHex","readPKCS8PrvKeyHex","readPKCS8PubKeyHex","readCertPubKeyHex","parseSigHexInHexRS","asn1SigToConcatSig","concatSigToASN1Sig","hexRSSigToASN1Sig","regist","setPrivateHex","setPublicHex","parseASN1Signature","proc","eproc","keylen","ivlen","cipher","ivsalt","keyhex","ivhex","parsePKCS5PEM","getKeyAndUnusedIvByPasscodeAndIvsalt","decryptKeyB64","getDecryptedKeyHex","getEncryptedPKCS5PEMFromPrvKeyHex","getEncryptedPKCS8PEM","getEncryptedPKCS8Hex","plain","initPBES2Param","encryptPBES2Param","generatePBES2ASN1Param","prf","enciv","getDKFromPBES2Param","parseHexOfEncryptedPKCS8","encryptionSchemeAlg","encryptionSchemeIV","pbkdf2Salt","pbkdf2Iter","getPBKDF2KeyHexFromParam","_getPlainPKCS8HexFromEncryptedPKCS8PEM","parsePBES2","getPlainHexFromEncryptedPKCS8PEM","getKeyFromEncryptedPKCS8PEM","getKeyFromPlainPrivatePKCS8Hex","parsePlainPrivatePKCS8Hex","algoid","algparam","keyidx","getKeyFromPlainPrivatePKCS8PEM","_getKeyFromPublicPKCS8Hex","parsePublicRawRSAKeyHex","parsePublicPKCS8Hex","pss_mgf1_str","_rsasign_getAlgNameAndHashFromHexDisgestInfo","HEX2STAG","foffset","aExtInfo","getVersion","getSignatureAlgorithmField","getIssuerString","getSubjectString","getNotBefore","getNotAfter","getSPKI","getSPKIValue","getPublicKeyIdx","getPublicKeyContentIdx","getSignatureAlgorithmName","getSignatureValueHex","parseExt","vidx","getExtInfo","getCriticalExtV","getExtBasicConstraints","getExtNameConstraints","getGeneralSubtree","getGeneralName","getExtKeyUsage","getExtKeyUsageString","getExtKeyUsageBin","KEYUSAGE_NAME","getExtAuthorityKeyIdentifier","getExtExtKeyUsage","getExtExtKeyUsageName","getExtSubjectAltName","getExtIssuerAltName","getOtherName","getExtSubjectAltName2","hex2dn","getExtCRLDistributionPoints","getDistributionPoint","getDistributionPointName","getExtCRLDistributionPointsURI","getExtAIAInfo","getExtAuthorityInfoAccess","getExtCertificatePolicies","getPolicyInformation","getPolicyQualifierInfo","getUserNotice","_asn1ToUnotice","_asn1ToNoticeRef","asn1ToDisplayText","_asn1ToNoticeNum","getDisplayText","ia5str","visstr","bmpstr","getExtPolicyMappings","getExtPolicyConstraints","getExtInhibitAnyPolicy","getExtCRLNumber","getExtCRLReason","getExtOcspNonce","getExtOcspNoCheck","getExtAdobeTimeStamp","getExtSubjectDirectoryAttributes","numstr","telstr","Erorr","getX500NameRule","getAttrTypeAndValue","getRDN","getX500NameArray","dnarraytostr","canon","c14nRDNArray","dncanon","dnhex","tbshex","nodnarray","getExtParam","EXT_PARSER","findExt","updateExtCDPFullURI","updateExtAIAOCSP","updateExtAIACAIssuer","setCanonicalizedDN","getInfo","ac","dname","xy","kty","dp","dq","co","qi","crv","getPublicKeyFromCertHex","getPublicKeyFromCertPEM","generateKeypair","prvKeyObj","pubKeyObj","passcode","getKeyFromCSRPEM","getKeyFromCSRHex","parseCSRHex","p8pubkeyhex","getJWK","jws","JWS","getJWKthumbprint","x5c","x5t","getJWKFromKey","getPosArrayOfChildrenFromHex","getHexValueArrayOfChildrenFromHex","readPrivateKeyFromPEMString","readPKCS5PubKeyHex","signPSS","verifyPSS","SALT_LEN_HLEN","SALT_LEN_MAX","SALT_LEN_RECOVER","registExtParser","hex2rdn","hex2attrTypeValue","getPublicKeyInfoPropOfCertPEM","isSafeJSONString","parseJWS","parsedJWS","sigvalH","headB64U","payloadB64U","sigvalB64U","sigvalBI","headS","payloadS","readSafeJSONString","jwsalg2sigalg","headerObj","payloadObj","headerPP","payloadPP","sigHex","verifyJWT","inArray","includedArray","iss","aud","IntDate","getNow","verifyAt","gracePeriod","nbf","iat","jti","HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","ES512","PS256","PS384","PS512","none","getEncodedSignatureValueFromJWS","getZulu","intDate2UTCString","toUTCString","intDate2Zulu","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","JWSJS","aHeader","sPayload","aSignature","initWithJWS","addSignature","verifyAll","verifyNth","readJWSJS","signatures","getJSON","isEmpty","b64utoutf8_1","KJUR_1","Le","Wr","Je","Ht","zr","enabledFor","localeCompare","Yi","Ut","appender","re","Te","De","receiver","Qi","Zi","Yr","Xi","ge","es","be","ts","oe","Pe","Fe","Ee","nodeId","se","currentId","nt","tn","signatureKey","ot","peers","domains","$t","gatewayRequests","_e","Be","registeredDomains","node","receive","ae","ne","Gt","Se","creationRequest","users","byName","noUser","identities","services","pe","it","Ce","nn","rn","st","as","DraftMap","assertUnrevoked","prepareMapCopy","cb","DraftSet","prepareSetCopy","implementation","loadPlugin","Nt","an","cs","ve","bufferSize","closed","draining","put","Me","ct","us","xe","ys","fs","ls","ps","Jt","mn","pn","Ft","Et","Bt","yn","Kt","required","ln","bs","gn","Ke","Wt","typ","dt","zt","bn","ce","ut","qe","mt","Ie","fe","We","ke","members","pt","xn","xs","vs","vn","ft","read_permissions","write_permissions","creator","yt","updates","Rn","Yt","creator_id","Qt","wn","ze","Zt","ye","de","Xt","Pn","lt","_n","gt","bt","St","he","As","Ts","Cn","Ye","context_compatibility_mode","er","In","An","Ps","hn","He","Ds","Mn","defaultLifetime","respect_context_lifetime","Rs","qn","vt","_s","Cs","kn","Ms","Hn","Tn","xt","qs","ks","tr","It","Us","Os","Hs","Dn","ht","$s","nr","Un","Ls","Ns","Bs","Fs","Es","Re","Ks","endpoint","Qs","impersonatePeer","gwRequest","accessToken","zs","Zr","en","Ws","ee","Ne","te","rt","Js","na","available","remoteIdentity","authenticate","Gs","Vs","Ys","Xs","Zs","ta","ra","On","authenticators","contextCompatibility","retainedOverride","oa","ia","Sn","sa","ir","processor","ch","jn","finally","Gn","max_pending_requests","Ln","$n","sr","secretVerifier","Jn","Nn","Fn","En","Bn","Ue","Kn","Qe","Wn","zn","dr","source_type","ur","ma","Vn","pa","Yn","Qn","ya","mr","la","Zn","ga","pr","sequence","snapshot","fr","Sa","Rt","eo","ue","yr","wt","remaining","va","ro","interests","subscriber","xa","no","Ia","ha","oo","io","so","Ra","streams","ao","Aa","subscriber_id","wa","lr","Ta","uo","Pa","Da","Ca","parsedRestrictions","Ma","Ze","fo","yo","qa","ka","Sr","lo","go","Ha","Ua","bo","Xe","Oa","calls","callee","So","$a","ja","vr","failure","Ga","xo","Io","La","xr","Fa","Ja","ho","Ka","Ea","Ba","Wa","vo","hr","Ya","za","Va","Xa","flatMap","mo","po","Za","Qa","Ro","wo","Rr","Ao","To","Do","Po","_o","wr","Co","Mo","qo","ko","Ho","Ar","le","factories","cn","Oe","$e","At","activityTypes","No","Lo","Tr","activitySubscribers","byType","Jo","Fo","je","Dr","owner_id","nc","Ko","factory_ids","oc","Wo","peer_factory","gateway_token","ic","Pr","requestor_id","zo","created_id","sc","Yo","Cr","Tt","peerName","peerType","Dt","activity_type","initiator","participants","readyMembers","peer_name","peer_type","Qo","joined_id","joined_type","cc","Mr","dc","Xo","uc","we","et","pc","ri","Uo","oi","yc","fc","ii","gc","lc","ai","activity","ui","bc","mi","$o","qr","ei","pi","Eo","clientRequest","ti","Sc","yi","hc","Vo","gi","Ic","vi","xi","Rc","types_override","initial_context","Xr","client_request","xc","wc","owner_type","Ac","helper_types","Dc","reload","kr","Tc","Mc","Ii","kc","left_id","Zo","qc","Hc","Pc","Pt","member","$c","Oc","jo","Hr","Uc","Ri","Cc","wi","jc","Ti","Nc","Di","reloading","Lc","Pi","activity_types","Go","_t","Bc","Fc","li","Kc","Si","Oo","ni","Mi","di","zc","hi","ci","Yc","Wc","bi","Ci","target_id","Gc","Ai","Ec","Vc","Ct","Mt","Ae","Hi","jr","od","Xc","ki","ed","rd","td","nd","Zc","Ui","qt","Gr","Oi","cd","sd","dd","ud","fd","pd","$i","ji","Gi","Li","Jr","ld","gd","Id","vd","xd","Fi","topicRepattern","Rd","wd","Ad","Td","peer","hd","Ni","Vi","Dd","Pd","Ei","Ji","Cd","Md","Hd","qd","kd","Bi","$d","Ud","Od","jd","Sd","Ki","Gd","Fr","Ge","Er","removeSource","Br","kt","cnt","doStart","Jd","default_context_lifetime","signingKey","addSource","clients","inactiveSeconds","scavenging","scavengeClients","lastAccess","onScavenge","Nd","inactive_seconds","scavenger","startGateway","doStop","buffer_size","disconnect","localIp","Wi","Ld","Kr","Ed","Gateway","_gatewayInstance","configureLogging","configure_logging","record","output","stacktrace","gatewayConfig","connectClient","clientPort","connectExtClient","removeFromPlatform","addListener","coreData","setupInternalClient","handleInternalGatewayConnectionRequest","stringError","setLogger","toStr","isArgs","origKeys","keysShim","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","originalKeys","shim","keysWorksWithArguments","objectKeys","esErrors","_eval","EvalError","range","RangeError","ref","ReferenceError","syntax","SyntaxError","URIError","shams","sym","symObj","syms","origSymbol","hasSymbolSham","hasSymbols","foo","$Object","concatty","bound","arrLike","slicy","boundLength","boundArgs","joiner","joiny","Empty","functionBind","$hasOwn","hasown","$Error","$EvalError","$RangeError","$ReferenceError","$SyntaxError","$TypeError","require$$5","$URIError","require$$6","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","require$$7","hasProto","getProto","needsEval","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","decodeURI","encodeURI","eval","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","parseFloat","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","WeakRef","errorProto","doEval","gen","LEGACY_ALIASES","require$$9","hasOwn","require$$10","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","allowMissing","alias","intrinsicName","getIntrinsic","parts","last","quote","subString","stringToPath","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","$defineProperty","esDefineProperty","gopd","defineDataProperty","property","nonEnumerable","nonWritable","nonConfigurable","loose","hasPropertyDescriptors","hasArrayLengthDefineBug","hasPropertyDescriptors_1","supportsDescriptors","predicate","defineProperties_1","GetIntrinsic","hasDescriptors","gOPD","$floor","setFunctionLength","functionLengthIsConfigurable","functionLengthIsWritable","$apply","$call","$reflectApply","$max","originalFunction","applyBind","callBind","$indexOf","callBound","toObject","$push","$propIsEnumerable","originalGetSymbols","source1","nextKey","propValue","polyfill","letters","actual","lacksProperEnumerationOrder","preventExtensions","thrower","assignHasPendingExceptions","getPolyfill","object_assign","functionsHaveNames","functionsHaveConfigurableNames","$bind","boundFunctionsHaveNames","functionsHaveNames_1","setFunctionName","hasIndices","ignoreCase","multiline","dotAll","unicode","unicodeSets","sticky","TypeErr","flagsBound","regexp_prototype_flags","hasToStringTag","$toString","isStandardArguments","isLegacyArguments","supportsStandardArguments","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","bigIntValueOf","gOPS","symToString","hasShammedSymbols","gPO","addNumericSeparator","Infinity","sepRegex","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","inspectString","maxStringLength","trailer","lowbyte","markBoxed","weakCollectionOf","collectionOf","indent","indentedJoin","lineJoiner","arrObjKeys","inspect","symMap","inspect_","depth","customInspect","numericSeparator","bigIntStr","maxDepth","baseIndent","getIndent","noIndent","newOpts","nameOf","symString","HTMLElement","nodeName","isElement","attributes","childNodes","singleLineValues","isError","mapParts","setParts","isWeakMap","isWeakSet","isWeakRef","isBigInt","protoTag","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","curr","sideChannel","$wm","$m","assert","objects","listGet","listHas","listSet","SLOT","slot","slots","exported","$StopIteration","StopIteration","isarray","strValue","tryStringObject","$Set","$setHas","getStopIterationIterator","origIterator","siIterator","$iterator","esGetIteratorModule","$arrayPush","$charCodeAt","$stringSlice","getArrayIterator","arraylike","getNonCollectionIterator","noPrimordialCollections","nextIndex","second","advanceStringIndex","require$$8","$mapForEach","$setForEach","versions","$mapIterator","$setIterator","$mapAtAtIterator","$setAtAtIterator","getCollectionIterator","numberIsNaN","isRegexMarker","badStringifier","objectIs","$ArrayBuffer","$byteLength","abSlice","$abSlice","getDay","throwRegexMarker","toPrimitive","isRegex","isSharedArrayBuffer","numToStr","$boolToStr","symToStr","symStringRegex","isSymbolModule","isSymbolObject","$BigInt","isBigintModule","tryBigInt","tryNumberObject","tryBooleanObject","$WeakSet","isWeakmap","isWeaksetModule","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","isIE68","isDDA","isCallable","strClass","forEach_1","forEachArray","forEachString","forEachObject","possibleNames","availableTypedArrays","out","typedArrays","superProto","getIterator","getSideChannel","tryDateObject","require$$11","require$$12","require$$13","whichBoxedPrimitive","whichCollection","whichTypedArray","found","getter","trySlices","tryTypedArrays","ab","sabByteLength","$getTime","$objToString","$mapSize","$setAdd","$setDelete","$setSize","setHasEqualElement","val1","internalDeepEqual","findLooseMatchingPrimitives","prim","mapMightHaveLoosePrim","altValue","curB","looseOpts","setMightHaveLoosePrim","mapHasEqualEntry","key1","item1","key2","sentinel","hasActual","hasExpected","aIsArray","bIsArray","aIsError","bIsError","aIsRegex","bIsRegex","aIsDate","bIsDate","aWhich","bWhich","aIsBuffer","bIsBuffer","aIsArrayBuffer","bIsArrayBuffer","aIsSAB","bIsSAB","kb","aCollection","bCollection","resultA","resultB","iA","iB","setEquiv","item2","mapEquiv","objEquiv","fastDeepEqual","equal","getRelativeBounds","rect","objEqual","objOne","objTwo","objEqualFast","wait","extractErrorMsg","checkMatch","allowedResultsTracker","PlatformController","domainsController","glueController","portsBridge","stateController","serviceWorkerController","interceptionController","pluginsController","licenseController","localStorageController","idbController","_platformApi","ctxTrackingGlue","contextsTrackingGlue","systemGlue","platformApi","verifyLicense","onClientUnloaded","handleClientUnloaded","createPlatformSystemMethod","handleClientMessage","createPlatformSystemStream","startAllDomains","buildPlatformApi","initClientGlue","browserFactory","isFrame","configurePostStartAllDomains","platformConfig","handlePluginMessage","notifyReady","getClientGlue","clientGlue","processControllerCommand","pluginName","callerType","validateDomain","errString","controlMessage","executeCommand","notifyDomainsClientUnloaded","getOperationInterceptor","skipInterception","executeControlMessage","platformVersion","contextTrackGlue","onSystemReconnect","shutdown","shutDown","switchGW","connectPreferred","switchToInternal","revertToDefault","handleExtConnectionRequest","onReconnect","sendShutDownSignals","logExpirationErrors","licensePayload","getLicensePayload","checkExpired","expiration","FDC3Service","logLevelDecoder","channelMetaDecoder","functionCheck","propDescription","providedType","workspacesSandboxDecoder","workspacesSandbox","glueCoreAppDefinitionDecoder","remoteStoreDecoder","pollingInterval","requestTimeout","customHeaders","channelDefinitionDecoder","pluginDefinitionDecoder","applicationsConfigDecoder","remote","layoutsConfigDecoder","channelsConfigDecoder","pluginsConfigDecoder","gatewayConfigDecoder","glueConfigDecoder","maximumActiveWorkspacesDecoder","idleWorkspacesDecoder","idleMSThreshold","hibernationConfigDecoder","maximumActiveWorkspaces","idleWorkspaces","loadingConfigDecoder","delayed","batch","initialOffsetInterval","defaultStrategy","showDelayedIndicator","iframeSandBoxConfigDecoder","workspacesConfigDecoder","hibernation","loadingStrategy","initAsEmpty","frameCache","iframeSandbox","preferredConnectionSettingsDecoder","forceIncompleteSwitch","discoveryIntervalMS","connectionConfigDecoder","preferred","enableManualSwitching","alwaysPlatform","allowedClientFallbackOrigin","windowsConfigDecoder","serviceWorkerConfigDecoder","registrationPromise","notificationsConfigDecoder","themesConfigDecoder","userConfigDecoder","managerAuthConfig","managerConfigDecoder","fetchIntervalMS","tokenRefreshIntervalMS","responseTimeoutMS","applicationPreferencesStoreDecoder","applicationPreferencesConfigDecoder","store","platformConfigDecoder","serviceWorker","manager","applicationPreferences","interceptorRegistrationRequestDecoder","callInterceptor","interceptions","bringBackToWorkspaceDataDecoder","workspacesInitCheckResultDecoder","initialized","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getKeys","getEnumerableOwnPropertySymbols","propertyIsOnObject","mergeObject","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","SEARCH_QUERY_STATUSES","CLIENT_TO_PROVIDER_PROTOCOL_OPERATIONS","searchTypeDecoder","providerData","interopId","providerLimitsDecoder","maxResults","maxResultsPerType","queryConfigDecoder","providers","providerLimits","providerRegistrationConfig","operationDecoder","queryStatusDecoder","searchCancelRequestDecoder","mainActionDecoder","secondaryActionDecoder","queryResultDecoder","iconURL","secondaryActions","legacySearchResultItemDecoder","category","protocolSearchResultsBatchDecoder","items","queryId","protocolSearchCompletedDecoder","protocolProviderErrorDecoder","ClientController","modelFactory","activeQueryLookup","queryIdToMasterIdLookup","pendingDebounce","debounceTimer","debounceMS","setDebounceMS","getDebounceMS","query","skipDebounce","debounceQuery","registerMainClientMethod","handleProviderCall","queryConfig","allProvidersInfo","getAllProvidersInfo","filterProvidersByAllowList","filterProvidersByAllowedTypes","allQueryResponses","sendQueryRequest","masterQueryId","generateMasterQueryId","queryModel","buildClientQueryModel","cleanUpQuery","exposeFacade","cancelQuery","activeQuery","interopIds","sendQueryCancelRequest","processClientOnResults","processClientOnCompleted","processClientOnError","validatedOperation","handleQueryCompleted","completedConfig","handleQueryResults","resultsBatch","handleQueryError","verifiedResultsBatch","translatedResults","checkTransformLegacyResults","verifiedCompleteConfig","validatedError","queryError","allowedLookup","lookup","allowedEntry","allTypes","supportedTypes","searchType","supportedType","currentPending","sampleItem","MAIN_PROVIDER_METHOD_NAME","MAIN_CLIENT_METHOD_NAME","MainController","clientController","providerController","registerProvider","processRegisterProvider","allProvidersData","provInfo","allSupportedTypes","provData","uniqueSupportedTypes","ProviderController","sequelizer","limitsTracker","modelsFactory","providersModels","activeQueries","registerMainProviderMethod","handleSearchQueryRequest","modelData","myInteropId","buildProviderModel","processProviderOnQuery","processProviderOnQueryCancel","processProviderUnregister","cleanUpProvider","clearMainProviderMethod","processProviderQueryDone","identification","syncSuspendProvider","providerId","cleanUpProviderQuery","providersAtWork","processProviderQueryError","markProviderError","processProviderQueryResult","checkProviderSuspended","requestedTypes","testResult","testResultLimit","maxLimitHit","maxLimitPerTypeHit","queueResult","handleInfoOperation","handleSearchOperation","handleCancelOperation","providerModel","myProviderData","apiVersion","generateQueryId","isLegacyRequest","checkRequestLegacy","validatedRequest","prepareRequest","callerInstanceId","buildPublisher","staleTimer","setClearStaleQueryTimer","enableTracking","callProviders","translateLegacySearchRequest","legacyRequest","limit","categoryLimit","searchRequest","getFilteredProviderModels","getFilteredProvidersBySearchTypes","configureProviders","callProvider","queryFacade","buildProviderQueryModel","filtered","searchTypes","providerSearchType","parsedRequest","cleanPublisher","cleanTracking","markProviderDone","SearchFacade","main","exposeApi","listProviders","listTypes","AsyncSequelizer$2","LimitsTracker","limitsLookup","limitsData","limits","foundLookup","limitData","providerStateLookup","resultTypeName","ClientQuery","providerQueryFacade","onResults","onCompleted","onError","ProviderModel","myData","providerFacade","onQuery","onQueryCancel","ProviderQueryModel","myQueryData","sendResult","QueryResultsPublisher","clientInstanceId","isLegacy","queues","suspended","providerQueue","pendingResults","translateLegacySearchItem","flushTimer","flushProviderQueue","sendClientErrorMessage","sendClientQueueCompleted","resultBatch","sendClientResultsBatch","searchResult","ModelFactory","flushSequelizer","factoryFunction","_glueController","_facade","_mainController","_providerController","_clientController","_asyncSequelizer","_flushSequelizer","_limitsTracker","_modelFactory","checkMyMethodExists","exists","interopArguments","invokeArgs","returnValue","AsyncSequelizer","IOSearch","Platform","localStorage","processConfig","getPlatformApi","platformStarted","addSearch","validatePlugins","deepMerge","newNotificationsConfig","systemSettings","getSystemSettings","systemInstanceId","ctxTrackInstanceId","setSystemSettings","notificationsConfig","getNotificationsConfig","setNotificationsConfig","transferPromiseObjects","initAsEmptyFrame","isPlatform","savedDef","badDefinitions","startType","stopType","errorStack","Repository","NullProtocol","PerfTracker","InProcTransport","SharedWorkerTransport","MessageReplayerImpl","WebPlatformTransport","Connection","GW3Bridge","ContextsModule","Client","ServerStream","Server","ClientRepository","ServerRepository","ServerStreaming","ServerProtocol","UserSubscription","TimedCache","ClientStreaming","ClientProtocol","MessageBus","GlueController","_systemGlue","_contextsTrackingGlue","_clientGlue","_systemStream","_workspacesStream","_platformClientWindowId","_systemSettings","isWorkspacesEnabled","platformWindowId","initSystemGlue","setUpCtxTracking","factory","createInternalClient","registerClientWindow","webConfig","createMethodAsync","createSystemStream","createWorkspacesStream","createWorkspacesEventsReceiver","pushSystemMessage","pushWorkspacesMessage","callFrame","operationDefinition","operationArguments","isValidWindowId","allNonMeWindows","webWindow","callWindow","setStartContext","waitFor","waitContextDestroy","contextChecks","contextExists","clearContext","preserveAllWorkspaceWindowsContext","workspaceId","allWorkspaceClients","pickWorkspaceClients","workspaceClient","clientCtx","pullHibernatedContext","subscribeForServerAdded","subscribeForMethodAdded","invokeMethod","destroyContext","onDisconnected","getSystemGlueTransportName","importLayout","getLayout","openConfig","startApp","getOrCreateWorkspaceFrame","frameId","getFrame","frame","createEmptyFrame","frameConfig","getAppNameByInstanceId","getAllWindowNames","getAllOpenedIds","getAllOtherNonPlatformWindows","excludeId","getAllOpenedFrameIds","getAllFrames","getAllApplicationNames","getAllApplications","getAllLayoutsSummaries","getAllWorkspacesSummaries","getWorkspaceWindowById","targetId","getWindow","workspaceWindow","getWindowById","getAllWorkspacesFrames","getWorkspacesByFrameId","getAllWorkspaces","workspace","processServerApplicationsData","importResult","logLevel","IOConnect","initContextsTrackingGlue","contextsSettings","windowName","platformFrame","getPlatformFrame","platformFrameData","active","saveFrameData","platformWindowData","getWindowDataByName","saveWindowData","PortsBridge","transactionsController","allPorts","allClients","unLoadStarted","activePreferredTransportConfig","startUpPromise","startupResolve","_genericMessageHandler","_unloaderHandler","setupListeners","createMessageChannel","port1","port2","clientData","windowData","processNewWindow","removeClient","myWindowId","setActivePreferredTransportConfig","setPreferredActivated","switchAllClientsTransport","transactions","sendClientPortRequest","checkClientsPreferredLogic","checkClientsPreferredConnection","removeGwClient","foundClient","unloader","genericMessageHandler","handleRemoteConnectionRequest","win","setupGwClientPort","foundData","getBridgeInstanceData","registerSelfAssignedWindow","announce","preservePort","completeTransaction","failTransaction","getCurrentTransportState","createTransaction","windowOperationDecoder","workspacesOperationDecoder","frameHelloDecoder","workspaceWindowDataDecoder","isWindowInSwimlaneResultDecoder","inWorkspace","allParentDecoder","subParentDecoder","frameStateDecoder","deleteLayoutConfigDecoder","swimlaneWindowDefinitionDecoder","strictSwimlaneWindowDefinitionDecoder","parentDefinitionDecoder","groupDefinitionConfigDecoder","minWidth","maxWidth","minHeight","maxHeight","allowDrop","allowDropHeader","allowDropLeft","allowDropTop","allowDropRight","allowDropBottom","showMaximizeButton","showEjectButton","showAddWindowButton","rowDefinitionConfigDecoder","allowSplitters","isPinned","maximizationBoundary","columnDefinitionConfigDecoder","strictColumnDefinitionDecoder","strictParentDefinitionDecoder","strictRowDefinitionDecoder","strictGroupDefinitionDecoder","newFrameConfigDecoder","loadStrategyDecoder","restoreWorkspaceConfigDecoder","loadStrategy","reuseWorkspaceId","lockdown","activateFrame","newFrame","noTabHeader","inMemoryLayout","isSelected","positionIndex","openWorkspaceConfigDecoder","restoreOptions","workspaceDefinitionDecoder","allowWindowReorder","allowSystemHibernation","showSaveButton","allowWorkspaceTabReorder","allowWorkspaceTabExtract","reuseFrameId","workspaceCreateConfigDecoder","saveConfig","getFrameSummaryConfigDecoder","frameSummaryDecoder","isInitialized","initializationContext","focused","workspaceConfigResultDecoder","isHibernated","lastActive","showAddWindowButtons","showEjectButtons","showWindowCloseButtons","widthInPx","heightInPx","baseChildSnapshotConfigDecoder","parentSnapshotConfigDecoder","swimlaneWindowSnapshotConfigDecoder","childSnapshotResultDecoder","workspaceSnapshotResultDecoder","frameSummary","customWorkspaceChildSnapshotDecoder","workspaceLayoutDecoder","workspacesLayoutImportConfigDecoder","exportedLayoutsResultDecoder","frameSummaryResultDecoder","frameSummariesResultDecoder","workspaceSummaryResultDecoder","workspaceSummariesResultDecoder","frameSnapshotResultDecoder","layoutSummariesDecoder","simpleWindowOperationSuccessResultDecoder","voidResultDecoder","frameStateResultDecoder","frameBoundsDecoder","frameBoundsResultDecoder","resizeConfigDecoder","moveConfigDecoder","simpleItemConfigDecoder","frameSnapshotConfigDecoder","excludeIds","frameStateConfigDecoder","requestedState","setItemTitleConfigDecoder","moveWindowConfigDecoder","containerId","resizeItemConfigDecoder","moveFrameConfigDecoder","addWindowConfigDecoder","parentId","addContainerConfigDecoder","addItemResultDecoder","bundleWorkspaceConfigDecoder","bundleItemConfigDecoder","workspaceSelectorDecoder","containerSummaryResultDecoder","frameBounds","workspaceSummary","containerSummary","windowSummary","workspaceLayoutSaveConfigDecoder","saveContext","lockWorkspaceDecoder","lockWindowDecoder","windowPlacementId","lockRowDecoder","lockColumnDecoder","lockGroupDecoder","lockContainerDecoder","pinWorkspaceDecoder","setWorkspaceIconDecoder","workspaceIconDecoder","restoreWorkspaceDefinitionDecoder","getWorkspaceWindowsOnLayoutSaveContextConfigDecoder","setMaximizationBoundaryConfigDecoder","workspaceWindowOnSaveDataDecoder","getWorkspaceWindowsOnLayoutSaveContextResult","windowsOnSaveData","getWorkspacesLayoutsConfigDecoder","getWorkspacesLayoutsResponseDecoder","WindowsController","started","clientResponseTimeoutMs","explicitClosingWindowIds","handleWindowHello","handleFocus","handleClose","registerWorkspaceWindow","unregisterWorkspaceWindow","handleWorkspaceClientRemoval","handleOperationCheck","handleFocusEvent","moveResizeOperation","getFrameBoundsOperation","setTitleOperation","getBoundsOperation","onWindowDisappeared","cleanUpWindow","handleControl","windowsData","operationValidation","incomingValidation","resultValidation","getWindowTitle","getWindowBounds","childWindow","emitStreamData","setExplicitClosingWindowId","fullWindowClean","waitEventFlush","selfAssigned","saveNonGlue","saveWorkspaceClient","initialTitle","hibernatedContext","openBounds","getStartingBounds","initialBounds","initialUrl","initialContext","removeNonGlue","getWorkspaceClientById","getFrameData","allWindows","getAllWindowsData","getWindowDataById","workspacesController","setItemTitle","pause","closeItem","getInstanceData","applicationsController","handleInstanceStop","relativeWindowId","relativeWindowBounds","relativeDir","SessionStorageController","windowsNamespace","instancesNamespace","bridgeInstancesNamespace","nonGlueNamespace","workspaceWindowsNamespace","workspaceFramesNamespace","workspaceHibernationNamespace","globalLayoutsNamespace","workspaceLayoutsNamespace","appDefsNamespace","appDefsInmemoryNamespace","notificationsNamespace","systemNamespace","workspaceFrameCache","removeItem","settingsAsString","getTimeout","removeTimeout","saveTimeout","exportClearTimeouts","getAllApps","overwriteApps","removeApp","getLayoutSnapshot","saveLayoutSnapshot","frameData","setFrameActive","removeFrameData","doRemove","removeWorkspaceClient","getAllNonGlue","saveBridgeInstanceData","removeBridgeInstanceData","saveInstanceData","removeInstance","getAllInstancesData","removeNotification","allNotifications","saveNewNotification","updateNotification","getAllNotifications","notificationIndex","getNotification","removeWindowData","nonGlueRemoved","workspaceClientRemoved","newData","WindowsStateController","checkIntervalMs","childrenToCheck","checkerCancelled","currentTimeout","nativeWindow","checkWindows","appHelloDecoder","appsImportOperationDecoder","appsRemoteRegistrationDecoder","ApplicationsController","appDirectory","applicationStartTimeoutMs","explicitClosingInstanceIds","locks","handleAppHello","handleApplicationStart","registerWorkspaceApp","unregisterWorkspaceApp","handleImport","handleRemove","handleExport","handleClear","registerRemoteApps","handleRegisterRemoteApps","appsStateChange","createSequelizer","processInstanceClosed","applicationData","appDefinition","processNewInstance","setLock","notifyWindows","keyOne","openKeyTwo","selfWindowId","openKeyOne","keyTwo","allInstances","allAppsFull","appInstances","foundApp","helloSuccessMessage","processAppDefinitions","removeInMemory","exportInMemory","allAppDefinitions","appDefOptions","openOptions","fullSaveRequestResponseDecoder","defaultNoAppWindowComponentAppName","getWindowManagementPermissionStatus","permissions","LayoutsController","sessionStore","localStore","globalBuilder","globalRestorer","getManager","handleGetLayout","handleGetAll","handleRename","handleSave","handleRestore","handleGetGlobalPermissionState","handleRequestGlobalPermission","handleCheckGlobalActivated","handleGetDefaultGlobal","handleSetDefaultGlobal","handleClearDefaultGlobal","handleUpdateMetadata","clearLayouts","localGlobalLayouts","localWorkspaceLayouts","mergeImport","layoutsData","checkRequestPermission","saveGlobalLayout","restoreGlobalLayout","importExecution","replaceImport","workspaceLayouts","globalLayouts","emitData","operationMessage","renamedLayout","oldName","updatedLayout","getScreenDetails","createGetDefaultGlobalLogMessage","layoutNameFromStorage","getDefaultGlobalLayoutName","allGlobalLayouts","isStarted","layoutNameFromManager","saveDefaultGlobalLayout","isCritical","requestCompletedMessage","getLayoutId","clearDefaultGlobalLayout","handleLayoutEvent","currentLayouts","pendingEvents","defCurrentIdx","cleanSave","announceEvents","batchCount","getAllLayouts","storeLayout","deleteLayout","idxToRemove","layoutIndex","indexToReplace","timeoutMS","gtf","instanceOfAny","constructors","idbProxyableTypes","cursorAdvanceMethods","cursorRequestMap","transactionDoneMap","transactionStoreNamesMap","transformCache","reverseTransformCache","idbProxyTraps","IDBTransaction","objectStoreNames","objectStore","wrap","wrapFunction","IDBDatabase","IDBCursor","advance","continue","continuePrimaryKey","storeNames","tx","transformCachableValue","unlisten","complete","DOMException","cacheDonePromiseForTransaction","IDBObjectStore","IDBIndex","IDBRequest","promisifyRequest","readMethods","writeMethods","cachedMethods","getMethod","targetFuncName","useIndex","isWrite","storeName","oldTraps","IDBController","_database","defaultDBName","dbName","dbVersion","globalLayoutsObjectStoreName","prefsObjectStoreName","serviceWorkerObjectStoreName","workspaceLayoutsObjectStoreName","database","db","upgrade","blocking","terminated","indexedDB","openPromise","oldVersion","newVersion","openDB","setUpDB","objectStoreName","getLayoutsObjectStoreName","clearServiceWorker","storeServiceWorker","clearAllPrefs","allUpdatedPrefs","replaceAllPrefs","replacements","updatePrefs","foundPrefs","updatedPrefs","contains","createObjectStore","defaultLoadingConfig","WorkspacesController","framesController","hibernationWatcher","_started","frameHello","handleFrameHello","isWindowInWorkspace","createWorkspace","createFrame","initFrame","getAllFramesSummaries","getFrameSummary","getWorkspaceSnapshot","openWorkspace","exportAllLayouts","restoreItem","maximizeItem","focusItem","resizeItem","changeFrameState","getFrameState","moveFrame","getFrameSnapshot","forceLoadWindow","ejectWindow","moveWindowTo","addWindow","addContainer","bundleWorkspace","bundleItem","hibernateWorkspace","resumeWorkspace","getWorkspacesConfig","getWorkspacesConfiguration","lockWorkspace","lockWindow","lockContainer","pinWorkspace","unpinWorkspace","getWorkspaceIcon","setWorkspaceIcon","checkStarted","handleCheckStarted","getPlatformFrameId","handleGetPlatformFrameId","getWorkspacesLayouts","handleGetWorkspacesLayouts","getWorkspaceWindowsOnLayoutSaveContext","handleGetWorkspaceWindowsOnLayoutSaveContext","setMaximizationBoundary","handleSetMaximizationBoundary","bringBackToWorkspace","handleBringBackToWorkspace","applyDefaults","bridgeWorkspaceEvent","handleFrameDisappeared","workspacesData","notifyEvent","frameToFocus","getFrameInstance","frameWindowBounds","allFrames","verifiedSummaries","sum","processNewHello","frameInstanceConfig","openFrame","summary","getPlatformFrameSessionData","getFrameSessionData","getFrameConfig","frameQueryConfig","targetedFrame","resizeConfig","getWorkspaceWindowOnLayoutSaveData","eventPayload","moveConfig","providedHibernationConfig","loadingConfig","requestConfig","nonGlueWindow","saveRequestResponse","fullWinContext","ejectedWindow","addContainerConfig","raiseIntentResolverResponseDecoder","filterHandlersResolverResponseDecoder","ERRORS","IntentsController","resolverHelper","getWrappedIntents","handleRaiseIntent","intentsData","extractAppIntents","appsWithIntents","intentDef","getInstanceIntents","serverIntentsMethods","appDef","appIntent","appDefIntent","mergeIntentStores","storeOne","storeTwo","wrapIntents","appIntentsStore","instanceIntentsStore","allIntentsStore","wrappedIntentFilter","ctToLower","resultTypeToLower","getIntent","registeredIntent","firstFoundAppHandler","findHandlerByFilter","firstFoundInstanceHandler","raiseIntentToTargetHandler","instanceIdPromise","reasonMsg","TARGET_INSTANCE_UNAVAILABLE","invokeOptions","resultPromise","INTENT_HANDLER_REJECTION","CALLER_NOT_DEFINED","coreRaiseIntentFn","coreRaiseIntent","TIMEOUT_HIT","handleRaiseOnError","INTENT_NOT_FOUND","checkIfResolverShouldBeOpenedForRaise","resolverHandler","startResolverApp","checkOpenByResolverConfig","checkIfResolverShouldBeOpenByResolverConfig","checkIfResolverShouldBeOpenedForFilterHandlers","requestWithResolverConfig","filteredHandlers","filterHandlersBy","filteredIntentsWithHandlers","allHandlers","passedHandler","intentsWithInfo","extractIntentsWithInfoByHandler","validIntentsWithInfo","currentHandler","intentWithInfo","channelOperationDecoder","ChannelsController","handleGetWindowIdsOnChannel","handleGetWindowIdsWithChannels","channelDefinitions","setupChannels","channelsData","getWindowChannel","allWindowIds","windowIdsOnChannel","serversWithWindowIds","FramesController","frameSummaryOperation","defaultFrameHelloTimeoutMs","myFrameId","_handleUnload","handleUnload","newFrameConfig","providedBounds","frameWindowId","frameUrl","getWorkspacesUrls","workspacesUrl","waitHello","closeFrame","clearAllWorkspaceWindows","foundFrame","getFrameByItemId","getLastOpenedFrame","workspaceWindows","frames","chrome","storage","WorkspaceHibernationWatcher","allTimeoutData","timeoutData","buildTimer","handleWorkspaceWindowEvent","handleWorkspaceEvent","checkMaximumAmountCore","addTimersForWorkspacesInFrame","isWorkspaceSelected","isLockConfigurationChanged","workspaceData","isSystemHibernationAllowed","compare","ws1","ws2","snapshotsPromises","activeWorkspaces","isWorkspaceHibernated","isWorkspaceEmpty","eligibleForHibernation","hibernationPromises","tryHibernateWorkspace","canBeHibernated","workspaceSnapshot","getWorkspacesInFrame","snapshotPromises","SystemController","platformOperations","handleGetEnvironment","handleGetBase","workspacesInitCheck","handleWorkspacesInitCheck","isSupportedByController","isSupportedByPlatform","AppDirectory","remoteWatcher","maxAllowedApplicationsInStore","baseEventFlushDurationMs","setup","parsedDefinitions","parseDefinition","currentApps","mergeResult","readyApps","announceApps","reverseParseDefinition","addedApps","changedApps","removedApps","currentAppsTable","isChecked","definitionDetails","removedDetails","glue42CoreAppProps","baseDefinition","defaultRemoteWatcherHeaders","RemoteWatcher","handleApps","setRequest","poll","timeoutHit","fetchTimeout","responseJson","validatedApps","waitInterval","ServiceWorkerController","_serviceWorkerRegistration","_broadcastMessageHandler","serviceWorkerRegistration","prepareSwDb","registerWorker","waitRegistration","setUpBroadcastChannelConnection","showNotification","glueData","onNotificationClick","onNotificationClose","BroadcastChannel","broadcastMessageHandler","pong","workerUrl","registration","platformUrl","notificationsOperationDecoder","glue42NotificationOptionsWithDefaultsDecoder","notificationClickConfigDecoder","NotificationsController","isInExtension","extNotificationConfig","systemUnsubFuncs","_chromeClickedHandler","_chromeButtonClickedHandler","_chromeClosedHandler","handleRaiseNotification","handleRequestPermission","handleGetPermission","handleList","handleClick","handleClearAll","handleConfigure","handleGetConfiguration","handleSetState","handleClearOld","currentActiveCount","removeExtensionNotificationsListeners","setupExtensionNotifications","listenForServiceWorkerNotificationEvents","notificationsData","validateServiceAccess","updateNotificationsConfig","syncActiveCount","setNotificationDefaults","processNewNotification","notificationEventPayload","raiseExtensionToast","raiseActionsToast","raiseSimpleToast","permissionValue","Notification","allowPlatform","callerApp","allIsAllowed","callerExistsInAllowed","notificationData","buttons","iconUrl","chromeOptions","defaultIcon","defaultMessage","imageUrl","getExtNotificationsConfig","listenForExtensionNotificationsEvents","chromeClickedHandler","onClicked","chromeButtonClickedHandler","onButtonClicked","chromeClosedHandler","removeListener","notificationId","buttonIndex","unsubNotificationClick","clickData","unsubNotificationClose","callDefinedInterop","foundNotificationInteropAction","interopConfig","previousCount","updatedActiveCount","extensionOperationTypesDecoder","clientHelloResponseDecoder","clientHelloDecoder","ExtensionController","handleClientHello","widgetConfig","getWidgetConfig","PreferredConnectionController","discoveryInterval","shouldForceTransfer","preferredUrl","preferredAuth","stopped","manual","check","checkPreFlight","transportSwitchConfig","changeClientsConnection","fullDefaultRevert","logicTestResult","connectionTest","TransactionsController","transactionData","foundTransaction","InterceptionController","registerInterceptor","registrantName","collisions","interception","registeredInterception","collisionsAsString","collision","inquiry","foundEntry","PluginsController","allPlugins","registeredPlugins","criticalPlugins","startPromise","startPlugin","platformControls","buildPlatformControls","registerPlugin","control","sendControl","DomainsController","searchController","managerController","defaultDomainNames","setDomains","libController","domainName","domainNameDecoder","configurePostStart","controllerName","registerDynamicDomain","registeredDomain","unregisterDynamicDomain","defaultDomainName","IntentsResolverHelper","instancePromise","RESOLVER_UNAVAILABLE","handlerTypeErrorMessage","RESOLVER_TIMEOUT","traceHandlerDetailsMessage","responseHandler","baseStartContext","getServerInstanceByWindowId","getWindowBoundsByServerInstance","operationErrorMessage","USER_CANCELLED","LicenseController","Builder","saveResponses","getRawWindowsLayoutData","existingLayout","updateLayout","buildNewLayout","existingLayoutComponentIds","layoutIdOccurrenceMap","getLayoutIdOccurrenceMap","windowComponents","generateWindowComponent","workspacesSaveRequest","preExistingFrameComponents","component","workspaceFrameComponents","compileWorkspacesFrameComponents","windowResponses","buildNewWindowComponent","getEligibleGlueWindows","glueWindow","buildRawGlueWindowData","getEligibleNonGlueWindows","buildRawNonGlueWindowData","requestedInstances","allEligibleWindows","getAllEligibleWindows","allNonGlueWindows","eligibleWindow","nonGlueWebWindow","allNonPlatformWindows","requestedServers","ignoredServers","updateExistingWindowComponent","allFramesData","getAllFramesSnapshotsWithBounds","generateFrameComponent","layoutComponentIds","duplications","softUpdateFrameComponent","preExistingComponent","selectedWspIndex","createNewFrameComponent","existingComponent","layoutComponentIdDuplications","wsp","allFramesSummaries","Restorer","resetter","doInitialValidation","closeInstances","closeRunningInstances","closeCaller","closeAll","closeAllExceptCaller","componentForPlatformFrame","canPlatformFrameAcceptComponent","pickComponentForPlatformFrame","restorePromise","restoreWindowComponent","placeInPlatform","restoreWorkspaceFrameComponent","layoutContext","restoreContext","boundsCheck","checkTargetBoundsPossible","isPossible","boundsToUse","readyFrame","createFrameWithWorkspaceComponents","frameWorkspaces","componentContext","myFrame","getAllWindows","screens","leftFit","topFit","platformFrameId","targetFrame","keepWorkspaces","LayoutValidator","validateRequiredApplicationsExistence","validateWorkspaceConfigurationInPlatform","validateNoAppNameAndUrl","doFinalValidation","validateWindowNamesCollision","validateInstanceIdCollision","validateWorkspaceFramesIdCollisions","requestedWindowNames","allOpenedWindowNames","nameCollisions","existingName","requestedInstanceIds","allOpenedInstanceIds","idCollisions","existingInstanceId","allOpenedFrameIds","corruptedWindowComponents","noAppComponent","printableCorruptedComponents","allAvailableAppNames","requiredAppsNames","windowComponent","getRequiredAppNamesFromWorkspaceFrameComponents","missingAppNames","availableApp","workspaceControllerStarted","requiredApps","workspaceAppNames","getAllAppNamesFromChildren","requiredAppNames","windowChild","Resetter","closeNecessaryWorkspacesFrames","cleanupWorkspaceCaller","foundCaller","cleanUpFrameExceptCaller","callerWorkspaceWindow","targetWorkspaces","workspacesWithoutCaller","callerWorkspace","allRemainingWindows","searchOperationDecoder","SearchController","appsRepo","layoutsRepo","workspacesRepo","repos","providerName","myTypes","displayType","myProviderRegistrationConfig","unsubOnQuery","processQuery","markQueryDone","markQueryError","unsubOnQueryCancel","processQueryCancel","allowedResultsCount","reposToCall","queryType","callRepo","repoResults","getRepoResults","sendResults","getResults","ApplicationsRepository","eligibleApps","allApps","transformApps","LayoutsRepository","eligibleLayouts","transformLayouts","WorkspacesRepository","eligibleWorkspaces","transformWorkspaces","LocalStoreController","defaultGlobalLayoutNamespace","themesNamespace","initialValue","saveThemeIfMissing","themeData","getData","saveData","getAllThemes","markThemeSelected","isUserSelected","foundTheme","selected","currentConfig","destinationArray","sourceArray","userData","parsedUserData","themesOperationDecoder","lightTheme","darkTheme","ThemesController","themesStream","handleGetCurrent","handleSelect","themeName","getOsTheme","selectedTheme","matchMedia","managerOperationDecoder","ManagerController","buildClient","unloadCallback","callManager","clientOptions","getMachineInfo","glueInfo","getGlueInfo","defaultGlobalLayout","defaultLayout","layoutId","saveRequest","transformPrefs","allPrefsResponse","handleLayoutAdded","handleLayoutRenamed","handleLayoutRemoved","Identity","uaParser","workspacesFrameUrl","arch","architecture","mobileDevice","vendor","displays","getDisplays","core","plus","workingArea","availWidth","availHeight","dpi","devicePixelRatio","isPrimary","Session","lastApps","lastLayouts","sessionInitiated","serverConfig","updateApplications","updateLayouts","include","latestDataInfo","waitMS","hasChanges","processServerLayoutsData","extractedLayouts","userLayoutDef","sanitizesLayouts","sanitizeLayouts","PrefsController","shouldUseManager","prefsData","validatedApp","validateApp","getLastUpdateTimestamp","callManagerIfApplicable","allPrefs","nonExistentPrefs","IoC","_platformInstance","_portsBridge","_windowsController","_applicationsController","_appDirectory","_remoteWatcher","_layoutsController","_workspacesController","_hibernationWatcher","_intentsController","_intentsResolverController","_channelsController","_notificationsController","_localStorageController","_stateChecker","_framesController","_systemController","_idbController","_serviceWorkerController","_transactionsController","_interceptionController","_pluginsController","_domainsController","_licenseController","_layoutsBuilder","_layoutsRestorer","_layoutsValidator","_layoutsResetter","_searchController","_appsSearchRepo","_layoutsSearchRepo","_workspacesSearchRepo","_themesController","_managerController","_managerIdentity","_managerSession","_prefsController","appsSearchRepo","layoutsSearchRepo","workspacesSearchRepo","layoutsBuilder","layoutsRestorer","intentsResolverHelper","layoutsValidator","layoutsResetter","managerIdentity","managerSession","MessageChannel","looseInterval","ioConnectBrowserPlatformFactory","fallbackToEnterprise","isOpenerGlue","connectionConfig","allowedOrigin","pingListener","checkIsOpenerIOConnect","isPlacedInWorkspace","clientOnly","IOBrowserPlatform"],"mappings":"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","x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,93,95,101,114,115]} \ No newline at end of file diff --git a/manifest.json b/manifest.json index 6b6e5c9..0bbc63e 100644 --- a/manifest.json +++ b/manifest.json @@ -3,8 +3,9 @@ "versions": [ "latest", "3.0", - "3.1" + "3.1", + "3.2" ], - "latestVersion": "3.2" + "latestVersion": "3.3" } } \ No newline at end of file